@bravobit/bb-foundation 0.42.5 → 0.42.8

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 (162) hide show
  1. package/dialog/lib/dialog.config.d.ts +1 -1
  2. package/elements/lib/directives/file-drop.directive.d.ts +13 -0
  3. package/elements/lib/elements.module.d.ts +20 -19
  4. package/elements/lib/file-picker/file-picker.component.d.ts +3 -8
  5. package/elements/lib/multi-file-control/multi-file-control.component.d.ts +5 -7
  6. package/elements/public_api.d.ts +1 -0
  7. package/esm2022/auth/lib/auth.interceptor.mjs +3 -3
  8. package/esm2022/auth/lib/auth.module.mjs +4 -4
  9. package/esm2022/auth/lib/auth.service.mjs +3 -3
  10. package/esm2022/auth/lib/directives/authenticated.directive.mjs +3 -3
  11. package/esm2022/collections/lib/collections.module.mjs +4 -4
  12. package/esm2022/collections/lib/components/collections-actions/collections-actions.component.mjs +3 -3
  13. package/esm2022/collections/lib/components/collections-grid/collections-grid.component.mjs +3 -3
  14. package/esm2022/collections/lib/components/collections-pager/collections-pager.component.mjs +5 -5
  15. package/esm2022/collections/lib/components/collections-table/collections-table.component.mjs +3 -3
  16. package/esm2022/collections/lib/components/collections-table-label/collections-table-label.component.mjs +3 -3
  17. package/esm2022/collections/lib/components/collections-table-sorting/collections-table-sorting.component.mjs +3 -3
  18. package/esm2022/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  19. package/esm2022/collections/lib/directives/collections-data-row.directive.mjs +3 -3
  20. package/esm2022/collections/lib/directives/collections-data.directive.mjs +3 -3
  21. package/esm2022/collections/lib/directives/collections-empty.directive.mjs +3 -3
  22. package/esm2022/collections/lib/directives/collections-error.directive.mjs +3 -3
  23. package/esm2022/collections/lib/directives/collections-initial.directive.mjs +3 -3
  24. package/esm2022/collections/lib/directives/collections-item.directive.mjs +3 -3
  25. package/esm2022/combobox/combobox/combobox-container.directive.mjs +3 -3
  26. package/esm2022/combobox/combobox/combobox.component.mjs +3 -3
  27. package/esm2022/combobox/combobox-label.directive.mjs +3 -3
  28. package/esm2022/combobox/combobox-option.directive.mjs +3 -3
  29. package/esm2022/combobox/combobox-panel/combobox-panel.component.mjs +3 -3
  30. package/esm2022/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  31. package/esm2022/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  32. package/esm2022/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  33. package/esm2022/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  34. package/esm2022/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +4 -4
  35. package/esm2022/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +5 -5
  36. package/esm2022/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  37. package/esm2022/dashboard/lib/dashboard.module.mjs +4 -4
  38. package/esm2022/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  39. package/esm2022/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
  40. package/esm2022/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
  41. package/esm2022/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  42. package/esm2022/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  43. package/esm2022/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
  44. package/esm2022/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  45. package/esm2022/dialog/lib/dialog.config.mjs +1 -1
  46. package/esm2022/dialog/lib/dialog.insertion.mjs +3 -3
  47. package/esm2022/dialog/lib/dialog.module.mjs +4 -4
  48. package/esm2022/dialog/lib/dialog.service.mjs +3 -3
  49. package/esm2022/dialog/lib/directives/confirm.directive.mjs +3 -3
  50. package/esm2022/elements/lib/avatar/avatar.component.mjs +3 -3
  51. package/esm2022/elements/lib/button/button.component.mjs +9 -9
  52. package/esm2022/elements/lib/checkbox/checkbox.component.mjs +3 -3
  53. package/esm2022/elements/lib/checkbox-group/checkbox-group.component.mjs +3 -3
  54. package/esm2022/elements/lib/date-picker/date-picker.component.mjs +3 -3
  55. package/esm2022/elements/lib/directives/addon.directive.mjs +6 -6
  56. package/esm2022/elements/lib/directives/extra-error-controls.directive.mjs +3 -3
  57. package/esm2022/elements/lib/directives/file-drop.directive.mjs +62 -0
  58. package/esm2022/elements/lib/directives/form-submit.directive.mjs +3 -3
  59. package/esm2022/elements/lib/directives/form-submitter.directive.mjs +3 -3
  60. package/esm2022/elements/lib/directives/image-upload.directive.mjs +3 -3
  61. package/esm2022/elements/lib/directives/input.directive.mjs +3 -3
  62. package/esm2022/elements/lib/elements.config.mjs +2 -1
  63. package/esm2022/elements/lib/elements.module.mjs +9 -5
  64. package/esm2022/elements/lib/file-picker/file-picker.component.mjs +19 -72
  65. package/esm2022/elements/lib/form-control/form-control.component.mjs +5 -5
  66. package/esm2022/elements/lib/form-error/form-error.component.mjs +3 -3
  67. package/esm2022/elements/lib/form-group/form-group.component.mjs +3 -3
  68. package/esm2022/elements/lib/icon/icon.component.mjs +3 -3
  69. package/esm2022/elements/lib/image-picker/image-picker.component.mjs +3 -3
  70. package/esm2022/elements/lib/multi-file-control/multi-file-control.component.mjs +29 -49
  71. package/esm2022/elements/lib/pipes/date.pipe.mjs +3 -3
  72. package/esm2022/elements/lib/pipes/file-image.pipe.mjs +3 -3
  73. package/esm2022/elements/lib/pipes/file-size.pipe.mjs +3 -3
  74. package/esm2022/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  75. package/esm2022/elements/lib/radio-button/radio-button.component.mjs +3 -3
  76. package/esm2022/elements/lib/radio-group/radio-group.component.mjs +3 -3
  77. package/esm2022/elements/lib/spinner/spinner.component.mjs +3 -3
  78. package/esm2022/elements/public_api.mjs +2 -1
  79. package/esm2022/http/lib/http.module.mjs +4 -4
  80. package/esm2022/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  81. package/esm2022/http/lib/interceptors/error.interceptor.mjs +3 -3
  82. package/esm2022/lib/core/services/exif.service.mjs +3 -3
  83. package/esm2022/lib/core/services/file-loader.service.mjs +3 -3
  84. package/esm2022/lib/core/services/files.service.mjs +3 -3
  85. package/esm2022/lib/core/services/image-converter.service.mjs +3 -3
  86. package/esm2022/lib/core/services/languages.service.mjs +3 -3
  87. package/esm2022/lib/core/services/network.service.mjs +3 -3
  88. package/esm2022/lib/core/services/patch.service.mjs +3 -3
  89. package/esm2022/localize/lib/localizations/dutch.localization.mjs +2 -1
  90. package/esm2022/localize/lib/localizations/english.localization.mjs +2 -1
  91. package/esm2022/localize/lib/localizations/papiamento.localization.mjs +2 -1
  92. package/esm2022/localize/lib/localize.module.mjs +4 -4
  93. package/esm2022/localize/lib/localize.pipe.mjs +3 -3
  94. package/esm2022/localize/lib/localize.service.mjs +3 -3
  95. package/esm2022/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  96. package/esm2022/localize/lib/views/localize-template.directive.mjs +3 -3
  97. package/esm2022/masking/lib/directives/currency-mask.directive.mjs +3 -3
  98. package/esm2022/masking/lib/directives/date-mask.directive.mjs +3 -3
  99. package/esm2022/masking/lib/directives/input-mask.directive.mjs +3 -3
  100. package/esm2022/masking/lib/masking.module.mjs +4 -4
  101. package/esm2022/masking/lib/masking.service.mjs +3 -3
  102. package/esm2022/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  103. package/esm2022/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
  104. package/esm2022/notifications/lib/notifications.module.mjs +4 -4
  105. package/esm2022/notifications/lib/notifications.service.mjs +3 -3
  106. package/esm2022/permissions/lib/directives/permission.directive.mjs +3 -3
  107. package/esm2022/permissions/lib/permissions.module.mjs +4 -4
  108. package/esm2022/permissions/lib/permissions.service.mjs +3 -3
  109. package/esm2022/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
  110. package/esm2022/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
  111. package/esm2022/recaptcha/lib/recaptcha.module.mjs +4 -4
  112. package/esm2022/select/lib/select/select.component.mjs +14 -11
  113. package/esm2022/select/lib/select-label.directive.mjs +3 -3
  114. package/esm2022/select/lib/select-multi-label.directive.mjs +3 -3
  115. package/esm2022/select/lib/select-option-group.directive.mjs +3 -3
  116. package/esm2022/select/lib/select-option.directive.mjs +3 -3
  117. package/esm2022/select/lib/select.module.mjs +4 -4
  118. package/esm2022/storage/lib/storage.service.mjs +3 -3
  119. package/esm2022/table/lib/components/table/table.component.mjs +9 -9
  120. package/esm2022/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  121. package/esm2022/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
  122. package/esm2022/table/lib/components/table-pager/table-pager.component.mjs +3 -3
  123. package/esm2022/table/lib/table.module.mjs +4 -4
  124. package/esm2022/tooltip/lib/tooltip-container/tooltip-container.component.mjs +3 -3
  125. package/esm2022/tooltip/lib/tooltip.directive.mjs +3 -3
  126. package/esm2022/tooltip/lib/tooltip.module.mjs +4 -4
  127. package/esm2022/utils/lib/directives/autosize.directive.mjs +3 -3
  128. package/esm2022/utils/lib/directives/focus-trap.directive.mjs +3 -3
  129. package/esm2022/utils/lib/directives/focus.directive.mjs +3 -3
  130. package/esm2022/utils/lib/directives/template.directive.mjs +3 -3
  131. package/esm2022/utils/lib/utils.module.mjs +4 -4
  132. package/fesm2022/bravobit-bb-foundation-auth.mjs +13 -13
  133. package/fesm2022/bravobit-bb-foundation-collections.mjs +44 -44
  134. package/fesm2022/bravobit-bb-foundation-collections.mjs.map +1 -1
  135. package/fesm2022/bravobit-bb-foundation-combobox.mjs +15 -15
  136. package/fesm2022/bravobit-bb-foundation-dashboard.mjs +27 -27
  137. package/fesm2022/bravobit-bb-foundation-dashboard.mjs.map +1 -1
  138. package/fesm2022/bravobit-bb-foundation-dialog.mjs +34 -34
  139. package/fesm2022/bravobit-bb-foundation-dialog.mjs.map +1 -1
  140. package/fesm2022/bravobit-bb-foundation-elements.mjs +189 -200
  141. package/fesm2022/bravobit-bb-foundation-elements.mjs.map +1 -1
  142. package/fesm2022/bravobit-bb-foundation-http.mjs +10 -10
  143. package/fesm2022/bravobit-bb-foundation-localize.mjs +19 -16
  144. package/fesm2022/bravobit-bb-foundation-localize.mjs.map +1 -1
  145. package/fesm2022/bravobit-bb-foundation-masking.mjs +16 -16
  146. package/fesm2022/bravobit-bb-foundation-notifications.mjs +13 -13
  147. package/fesm2022/bravobit-bb-foundation-permissions.mjs +10 -10
  148. package/fesm2022/bravobit-bb-foundation-recaptcha.mjs +10 -10
  149. package/fesm2022/bravobit-bb-foundation-select.mjs +29 -26
  150. package/fesm2022/bravobit-bb-foundation-select.mjs.map +1 -1
  151. package/fesm2022/bravobit-bb-foundation-storage.mjs +3 -3
  152. package/fesm2022/bravobit-bb-foundation-table.mjs +22 -22
  153. package/fesm2022/bravobit-bb-foundation-table.mjs.map +1 -1
  154. package/fesm2022/bravobit-bb-foundation-tooltip.mjs +10 -10
  155. package/fesm2022/bravobit-bb-foundation-utils.mjs +16 -16
  156. package/fesm2022/bravobit-bb-foundation.mjs +21 -21
  157. package/localize/lib/localizations/dutch.localization.d.ts +1 -0
  158. package/localize/lib/localizations/english.localization.d.ts +1 -0
  159. package/localize/lib/localizations/papiamento.localization.d.ts +1 -0
  160. package/package.json +17 -17
  161. package/select/lib/select/select.component.d.ts +1 -1
  162. package/styles/theme.scss +54 -2
@@ -1,7 +1,8 @@
1
- import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, HostListener, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
1
+ import { booleanAttribute, ChangeDetectionStrategy, Component, ContentChild, EventEmitter, forwardRef, Input, Output, ViewChild, ViewEncapsulation } from '@angular/core';
2
2
  import { NG_VALIDATORS, NG_VALUE_ACCESSOR } from '@angular/forms';
3
3
  import { animate, style, transition, trigger } from '@angular/animations';
4
4
  import { BbFormError } from '../form-error/form-error.component';
5
+ import { BbFileDrop } from '../directives/file-drop.directive';
5
6
  import { AsyncPipe, NgTemplateOutlet } from '@angular/common';
6
7
  import { BbLocalize } from '@bravobit/bb-foundation/localize';
7
8
  import { BbTemplate } from '@bravobit/bb-foundation/utils';
@@ -21,13 +22,11 @@ export class BbFilePicker {
21
22
  hint = null;
22
23
  accept = null;
23
24
  showImages = true;
24
- allowDragging = true;
25
25
  grouped = false;
26
26
  required = false;
27
27
  disabled = false;
28
28
  hideErrors = false;
29
29
  // State.
30
- hovered = false;
31
30
  error = false;
32
31
  value$ = new BehaviorSubject({});
33
32
  // Callbacks.
@@ -42,30 +41,6 @@ export class BbFilePicker {
42
41
  this.value$.next({ file: value });
43
42
  this.valueChange.emit(value);
44
43
  }
45
- onDrag(event, isHovered) {
46
- // Validate the input can support drag.
47
- if (!this.allowDragging || this.disabled) {
48
- return;
49
- }
50
- // Prevent the default event action
51
- // and start the hovering.
52
- this.preventDefault(event);
53
- this.hovered = isHovered;
54
- }
55
- onDrop(event) {
56
- // Validate the input can support drag.
57
- if (!this.allowDragging || this.disabled) {
58
- return;
59
- }
60
- // Prevent the default event action
61
- // and stop the hovering.
62
- this.preventDefault(event);
63
- this.hovered = false;
64
- // Save the file.
65
- this.saveFile(event['dataTransfer'].files);
66
- // Run the on change callback.
67
- this.onChangeCallback(this.value);
68
- }
69
44
  onButtonPressed(file) {
70
45
  if (file) {
71
46
  this.value = null;
@@ -81,16 +56,12 @@ export class BbFilePicker {
81
56
  && this.fileInput.nativeElement.click();
82
57
  }
83
58
  onFileChange(event) {
84
- // Validate the input is not disabled.
85
59
  if (this.disabled) {
86
60
  return;
87
61
  }
88
62
  // Extract the file from the event.
89
- const fileList = this.getFileListFromEvent(event);
90
- // Save the file.
91
- this.saveFile(fileList);
92
- // Run the on change callback.
93
- this.onChangeCallback(this.value);
63
+ const files = this.getFilesFromEvent(event);
64
+ this.saveFile(files);
94
65
  // Clear the file input.
95
66
  if (this.fileInput && this.fileInput.nativeElement) {
96
67
  this.fileInput.nativeElement.value = '';
@@ -120,37 +91,25 @@ export class BbFilePicker {
120
91
  .replace(/,/g, '|');
121
92
  const mimeTypeRegex = new RegExp(regexString);
122
93
  const isNotValid = (typeof File === 'undefined') || !(value instanceof File) || !mimeTypeRegex.test(value?.type);
123
- return isNotValid && {
124
- invalidFileType: true
125
- };
94
+ return isNotValid && { invalidFileType: true };
126
95
  }
127
- saveFile = (files) => {
128
- // Validate the files exist.
129
- if (!files) {
130
- return;
131
- }
132
- // Retrieve the first file.
133
- const file = files[0];
134
- // Validate the first file exists.
135
- if (!file) {
96
+ saveFile(files) {
97
+ const file = files?.[0] ?? null;
98
+ if (!file || this.disabled) {
136
99
  return;
137
100
  }
138
- // Save the file.
139
101
  this.value = file;
140
- };
141
- getFileListFromEvent = (event) => {
102
+ this.onChangeCallback(this.value);
103
+ }
104
+ getFilesFromEvent(event) {
142
105
  const element = event.target;
143
106
  if (!element) {
144
107
  return null;
145
108
  }
146
- return element.files;
147
- };
148
- preventDefault = (event) => {
149
- event.preventDefault();
150
- event.stopPropagation();
151
- };
152
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFilePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
153
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: BbFilePicker, isStandalone: true, selector: "bb-file-picker", inputs: { label: "label", hint: "hint", accept: "accept", showImages: "showImages", allowDragging: "allowDragging", grouped: ["grouped", "grouped", booleanAttribute], required: ["required", "required", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute], value: "value" }, outputs: { valueChange: "valueChange" }, host: { listeners: { "dragover": "onDrag($event,true)", "dragleave": "onDrag($event,false)", "drop": "onDrop($event)" }, properties: { "class.required": "required", "class.disabled": "disabled", "class.grouped": "grouped", "class.hovered": "hovered", "class.error": "error" }, classAttribute: "bb-file-picker" }, providers: [
109
+ return Array.from(element.files);
110
+ }
111
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFilePicker, deps: [], target: i0.ɵɵFactoryTarget.Component });
112
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BbFilePicker, isStandalone: true, selector: "bb-file-picker", inputs: { label: "label", hint: "hint", accept: "accept", showImages: "showImages", grouped: ["grouped", "grouped", booleanAttribute], required: ["required", "required", booleanAttribute], disabled: ["disabled", "disabled", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute], value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.required": "required", "class.disabled": "disabled", "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-file-picker" }, providers: [
154
113
  {
155
114
  provide: NG_VALUE_ACCESSOR,
156
115
  useExisting: forwardRef(() => BbFilePicker),
@@ -161,7 +120,7 @@ export class BbFilePicker {
161
120
  useExisting: BbFilePicker,
162
121
  multi: true
163
122
  }
164
- ], queries: [{ propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [class.standalone]=\"!allowDragging\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n @if (allowDragging) {\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n }\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:not(.disabled):focus>.bb-file-picker-wrapper,.bb-file-picker:not(.disabled).hovered>.bb-file-picker-wrapper{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-file-picker-box-shadow)}.bb-file-picker.grouped{margin-bottom:1.5rem}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;display:inline-flex;border-radius:.5rem;flex-direction:column;background-color:#fff;border:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-file-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:2.5rem;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;line-height:1;cursor:pointer;font-size:1rem;appearance:none;font-weight:400;padding:0 .75rem;align-items:center;white-space:nowrap;display:inline-flex;background-color:transparent;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;color:var(--bb-file-picker-color);border-right:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-button:focus{box-shadow:var(--bb-file-picker-box-shadow)}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-button.standalone{width:100%;border-right:none;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.bb-file-picker-icon{margin-right:.25rem}.bb-file-picker-zone{flex:1;color:#758795;line-height:1.125;font-size:.875rem;align-items:center;display:inline-flex;padding:.5rem .75rem;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;overflow:hidden;padding:0 .75rem;align-items:center;line-height:2.5rem;display:inline-flex;border-top:0 solid #b6bbc1;background-color:transparent;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:2.5rem;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;overflow:hidden;font-size:.875rem;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:.75rem}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid hsl(213,8%,74%)}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:1.5rem auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;will-change:opacity;border-radius:.5rem;background-size:cover;background-position:center;background-repeat:no-repeat}.bb-file-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbFileSize, name: "bbFileSize" }, { kind: "pipe", type: BbFileImage, name: "bbFileImage" }], animations: [
123
+ ], queries: [{ propertyName: "extraTemplate", first: true, predicate: ["extra"], descendants: true }], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"saveFile($event)\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:focus,.bb-file-picker-wrapper.is-hovered{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-file-picker-box-shadow)}.bb-file-picker.grouped{margin-bottom:1.5rem}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;display:inline-flex;flex-direction:column;border-radius:var(--bb-file-picker-border-radius);border:1px solid var(--bb-file-picker-border-color);transition:box-shadow .2s cubic-bezier(0,0,.2,1);background-color:var(--bb-file-picker-background-color);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-file-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:2.5rem;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;line-height:1;cursor:pointer;font-size:1rem;appearance:none;font-weight:400;padding:0 .75rem;align-items:center;white-space:nowrap;display:inline-flex;background-color:transparent;color:var(--bb-file-picker-color);border-right:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1);border-top-left-radius:var(--bb-file-picker-border-radius);border-bottom-left-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-button:focus{box-shadow:var(--bb-file-picker-box-shadow)}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-icon{margin-right:.25rem}.bb-file-picker-zone{flex:1;color:#758795;line-height:1.125;font-size:.875rem;align-items:center;display:inline-flex;padding:.5rem .75rem;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;overflow:hidden;padding:0 .75rem;align-items:center;line-height:2.5rem;display:inline-flex;border-top:0 solid #b6bbc1;background-color:transparent;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:2.5rem;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;overflow:hidden;font-size:.875rem;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:.75rem}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid hsl(213,8%,74%)}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:1.5rem auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;will-change:opacity;background-size:cover;background-position:center;background-repeat:no-repeat;border-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }, { kind: "pipe", type: BbFileSize, name: "bbFileSize" }, { kind: "pipe", type: BbFileImage, name: "bbFileImage" }, { kind: "directive", type: BbFileDrop, selector: "[bbFileDrop]", inputs: ["bbFileDropDisabled"], outputs: ["bbFileDrop"] }], animations: [
165
124
  trigger('bbFilePickerImageAnimation', [
166
125
  transition(':enter', [
167
126
  style({ opacity: 0 }),
@@ -173,7 +132,7 @@ export class BbFilePicker {
173
132
  ])
174
133
  ], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
175
134
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFilePicker, decorators: [{
135
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFilePicker, decorators: [{
177
136
  type: Component,
178
137
  args: [{ selector: 'bb-file-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, providers: [
179
138
  {
@@ -191,7 +150,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
191
150
  '[class.required]': 'required',
192
151
  '[class.disabled]': 'disabled',
193
152
  '[class.grouped]': 'grouped',
194
- '[class.hovered]': 'hovered',
195
153
  '[class.error]': 'error'
196
154
  }, animations: [
197
155
  trigger('bbFilePickerImageAnimation', [
@@ -203,7 +161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
203
161
  animate('200ms', style({ opacity: 0 }))
204
162
  ])
205
163
  ])
206
- ], preserveWhitespaces: false, imports: [BbTemplate, AsyncPipe, NgTemplateOutlet, BbLocalize, BbFormError, BbFileSize, BbFileImage], standalone: true, template: "<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [class.standalone]=\"!allowDragging\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n @if (allowDragging) {\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n }\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:not(.disabled):focus>.bb-file-picker-wrapper,.bb-file-picker:not(.disabled).hovered>.bb-file-picker-wrapper{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-file-picker-box-shadow)}.bb-file-picker.grouped{margin-bottom:1.5rem}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;display:inline-flex;border-radius:.5rem;flex-direction:column;background-color:#fff;border:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-file-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:2.5rem;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;line-height:1;cursor:pointer;font-size:1rem;appearance:none;font-weight:400;padding:0 .75rem;align-items:center;white-space:nowrap;display:inline-flex;background-color:transparent;border-top-left-radius:.5rem;border-bottom-left-radius:.5rem;color:var(--bb-file-picker-color);border-right:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-button:focus{box-shadow:var(--bb-file-picker-box-shadow)}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-button.standalone{width:100%;border-right:none;border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.bb-file-picker-icon{margin-right:.25rem}.bb-file-picker-zone{flex:1;color:#758795;line-height:1.125;font-size:.875rem;align-items:center;display:inline-flex;padding:.5rem .75rem;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;overflow:hidden;padding:0 .75rem;align-items:center;line-height:2.5rem;display:inline-flex;border-top:0 solid #b6bbc1;background-color:transparent;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:2.5rem;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;overflow:hidden;font-size:.875rem;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:.75rem}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid hsl(213,8%,74%)}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:1.5rem auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;will-change:opacity;border-radius:.5rem;background-size:cover;background-position:center;background-repeat:no-repeat}.bb-file-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
164
+ ], preserveWhitespaces: false, imports: [BbTemplate, AsyncPipe, NgTemplateOutlet, BbLocalize, BbFormError, BbFileSize, BbFileImage, BbFileDrop], standalone: true, template: "<!-- The label of the input. -->\n@if (label; as labelContent) {\n <label [for]=\"labelId\"\n class=\"bb-file-picker-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input that can open the file picker. -->\n<input #fileInput\n [accept]=\"accept\"\n [disabled]=\"disabled\"\n (change)=\"onFileChange($event)\"\n class=\"bb-file-picker-input\"\n type=\"file\"\n tabindex=\"-1\">\n\n@if (value$ | async; as data) {\n <div [bbFileDropDisabled]=\"disabled\"\n (bbFileDrop)=\"saveFile($event)\"\n class=\"bb-file-picker-wrapper\">\n <!-- The button that accepts files. -->\n <div class=\"bb-file-picker-container\">\n <button [class.destructive]=\"!!data?.file\"\n [disabled]=\"disabled\"\n [id]=\"labelId\"\n (click)=\"onButtonPressed(data?.file)\"\n type=\"button\"\n class=\"bb-file-picker-button\">\n <ng-container *ngTemplateOutlet=\"data?.file ? closeIcon : uploadIcon\"></ng-container>\n {{ (data?.file ? 'file-picker.remove' : 'file-picker.choose') | bbLocalize }}\n </button>\n <div class=\"bb-file-picker-zone\">\n {{ 'file-picker.drop' | bbLocalize }}\n </div>\n </div>\n\n @if (!!extraTemplate) {\n <ng-container *ngTemplateOutlet=\"extraTemplate; context: {$implicit: data?.file}\"></ng-container>\n }\n\n @if (showImages) {\n @if (data?.file | bbFileImage | async; as image) {\n <div class=\"bb-file-picker-image-container\">\n <div class=\"bb-file-picker-image-wrapper\">\n <div [@bbFilePickerImageAnimation]=\"true\"\n [style.padding-top.%]=\"image?.aspectRatio * 100\"\n [style.background-image]=\"image?.background\"\n class=\"bb-file-picker-image\">\n </div>\n </div>\n </div>\n }\n }\n\n <!-- Extra information of the file. -->\n <div [class.visible]=\"!!data?.file\"\n class=\"bb-file-picker-info\">\n @if (data?.file?.name; as name) {\n <span>{{ name }}</span>\n }\n @if (data?.file?.size; as size) {\n <span>{{ size | bbFileSize }}</span>\n }\n </div>\n </div>\n}\n\n@if (!hideErrors) {\n <bb-form-error (errorChange)=\"onErrorChange($event)\"></bb-form-error>\n}\n\n<!-- The file picker hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-file-picker-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n\n<!-- Upload icon. -->\n<ng-template #uploadIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M2 12.5C2 9.46 4.46 7 7.5 7H18c2.21 0 4 1.79 4 4s-1.79 4-4 4H9.5a2.5 2.5 0 010-5H17v2H9.41c-.55 0-.55 1 0 1H18c1.1 0 2-.9 2-2s-.9-2-2-2H7.5C5.57 9 4 10.57 4 12.5S5.57 16 7.5 16H17v2H7.5C4.46 18 2 15.54 2 12.5z\"></path>\n <path fill=\"none\" d=\"M0 0h24v24H0V0z\"></path>\n </svg>\n</ng-template>\n\n<!-- Close icon. -->\n<ng-template #closeIcon>\n <svg xmlns=\"http://www.w3.org/2000/svg\"\n class=\"bb-file-picker-icon\"\n width=\"1.5rem\"\n height=\"1.5rem\"\n viewBox=\"0 0 24 24\">\n <path fill=\"currentColor\"\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\"></path>\n <path d=\"M0 0h24v24H0z\" fill=\"none\"></path>\n </svg>\n</ng-template>\n", styles: [".bb-file-picker{display:block}.bb-file-picker.full>.bb-file-picker-wrapper{width:100%}.bb-file-picker:not(.disabled) .bb-file-picker-button{background-color:#fff}.bb-file-picker:focus,.bb-file-picker-wrapper.is-hovered{box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-file-picker-box-shadow)}.bb-file-picker.grouped{margin-bottom:1.5rem}.bb-file-picker.disabled>.bb-file-picker-wrapper{cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-file-picker.required>.bb-file-picker-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-file-picker.error>.bb-file-picker-label{color:#c23934}.bb-file-picker.error>.bb-file-picker-hint{display:none}.bb-file-picker.error>.bb-file-picker-wrapper{border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-file-picker.error .bb-file-picker-button{background-color:transparent}.bb-file-picker-wrapper{max-width:100%;-webkit-user-select:none;user-select:none;display:inline-flex;flex-direction:column;border-radius:var(--bb-file-picker-border-radius);border:1px solid var(--bb-file-picker-border-color);transition:box-shadow .2s cubic-bezier(0,0,.2,1);background-color:var(--bb-file-picker-background-color);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-file-picker-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-file-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-file-picker-container{min-height:2.5rem;display:inline-flex}.bb-file-picker-button{margin:0;z-index:1;border:none;line-height:1;cursor:pointer;font-size:1rem;appearance:none;font-weight:400;padding:0 .75rem;align-items:center;white-space:nowrap;display:inline-flex;background-color:transparent;color:var(--bb-file-picker-color);border-right:1px solid hsl(213,8%,74%);transition:box-shadow .2s cubic-bezier(0,0,.2,1);border-top-left-radius:var(--bb-file-picker-border-radius);border-bottom-left-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-button:focus{box-shadow:var(--bb-file-picker-box-shadow)}.bb-file-picker-button:disabled{cursor:default}.bb-file-picker-button.destructive{color:#f55656}.bb-file-picker-icon{margin-right:.25rem}.bb-file-picker-zone{flex:1;color:#758795;line-height:1.125;font-size:.875rem;align-items:center;display:inline-flex;padding:.5rem .75rem;justify-content:center}.bb-file-picker-info{height:0;color:#848f99;overflow:hidden;padding:0 .75rem;align-items:center;line-height:2.5rem;display:inline-flex;border-top:0 solid #b6bbc1;background-color:transparent;transition:height .2s cubic-bezier(0,0,.2,1)}.bb-file-picker-info.visible{height:2.5rem;border-top-width:1px}.bb-file-picker-info>span{opacity:.4;max-width:100%;overflow:hidden;font-size:.875rem;white-space:nowrap;text-overflow:ellipsis}.bb-file-picker-info>span:first-child{flex:1}.bb-file-picker-info>span:last-child{margin-left:.75rem}.bb-file-picker-image-container{overflow:hidden;border-top:1px solid hsl(213,8%,74%)}.bb-file-picker-image-wrapper{width:100%;max-width:40%;margin:1.5rem auto}.bb-file-picker-image{width:100%;display:flex;overflow:hidden;position:relative;will-change:opacity;background-size:cover;background-position:center;background-repeat:no-repeat;border-radius:var(--bb-file-picker-border-radius)}.bb-file-picker-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
207
165
  }], propDecorators: { fileInput: [{
208
166
  type: ViewChild,
209
167
  args: ['fileInput', { static: true }]
@@ -218,8 +176,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
218
176
  type: Input
219
177
  }], showImages: [{
220
178
  type: Input
221
- }], allowDragging: [{
222
- type: Input
223
179
  }], grouped: [{
224
180
  type: Input,
225
181
  args: [{ transform: booleanAttribute }]
@@ -236,14 +192,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
236
192
  type: Input
237
193
  }], valueChange: [{
238
194
  type: Output
239
- }], onDrag: [{
240
- type: HostListener,
241
- args: ['dragover', ['$event', 'true']]
242
- }, {
243
- type: HostListener,
244
- args: ['dragleave', ['$event', 'false']]
245
- }], onDrop: [{
246
- type: HostListener,
247
- args: ['drop', ['$event']]
248
195
  }] } });
249
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixVQUFVLEVBQ1YsWUFBWSxFQUNaLEtBQUssRUFDTCxNQUFNLEVBRU4sU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQW9DLGFBQWEsRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBQ25HLE9BQU8sRUFBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxPQUFPLEVBQUMsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFDLE1BQU0sTUFBTSxDQUFDOztBQUVyQyxJQUFJLFlBQVks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QW5DLFlBQVk7dUJBQUMsT0FBTztnQkFHWixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ2dDLE9BQU87c0JBQTVDLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBQ0UsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDO2dCQUNFLFVBQVU7c0JBQS9DLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBWWhDLEtBQUs7c0JBRFIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNO2dCQVNQLE1BQU07c0JBRkwsWUFBWTt1QkFBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxXQUFXLEVBQUUsQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDO2dCQWM5QyxNQUFNO3NCQURMLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgT3V0cHV0LFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Q29udHJvbFZhbHVlQWNjZXNzb3IsIEZvcm1Db250cm9sLCBOR19WQUxJREFUT1JTLCBOR19WQUxVRV9BQ0NFU1NPUn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHthbmltYXRlLCBzdHlsZSwgdHJhbnNpdGlvbiwgdHJpZ2dlcn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge0JiRm9ybUVycm9yfSBmcm9tICcuLi9mb3JtLWVycm9yL2Zvcm0tZXJyb3IuY29tcG9uZW50JztcbmltcG9ydCB7QXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0fSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCYkxvY2FsaXplfSBmcm9tICdAYnJhdm9iaXQvYmItZm91bmRhdGlvbi9sb2NhbGl6ZSc7XG5pbXBvcnQge0JiVGVtcGxhdGV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL3V0aWxzJztcbmltcG9ydCB7QmJGaWxlSW1hZ2V9IGZyb20gJy4uL3BpcGVzL2ZpbGUtaW1hZ2UucGlwZSc7XG5pbXBvcnQge0JiRmlsZVNpemV9IGZyb20gJy4uL3BpcGVzL2ZpbGUtc2l6ZS5waXBlJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmItZmlsZS1waWNrZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZmlsZS1waWNrZXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIHByb3ZpZGVyczogW1xuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgICAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEJiRmlsZVBpY2tlciksXG4gICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBwcm92aWRlOiBOR19WQUxJREFUT1JTLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IEJiRmlsZVBpY2tlcixcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH1cbiAgICBdLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgJ2NsYXNzJzogJ2JiLWZpbGUtcGlja2VyJyxcbiAgICAgICAgJ1tjbGFzcy5yZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICAgICAnW2NsYXNzLmRpc2FibGVkXSc6ICdkaXNhYmxlZCcsXG4gICAgICAgICdbY2xhc3MuZ3JvdXBlZF0nOiAnZ3JvdXBlZCcsXG4gICAgICAgICdbY2xhc3MuaG92ZXJlZF0nOiAnaG92ZXJlZCcsXG4gICAgICAgICdbY2xhc3MuZXJyb3JdJzogJ2Vycm9yJ1xuICAgIH0sXG4gICAgYW5pbWF0aW9uczogW1xuICAgICAgICB0cmlnZ2VyKCdiYkZpbGVQaWNrZXJJbWFnZUFuaW1hdGlvbicsIFtcbiAgICAgICAgICAgIHRyYW5zaXRpb24oJzplbnRlcicsIFtcbiAgICAgICAgICAgICAgICBzdHlsZSh7b3BhY2l0eTogMH0pLFxuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoe29wYWNpdHk6IDF9KSlcbiAgICAgICAgICAgIF0pLFxuICAgICAgICAgICAgdHJhbnNpdGlvbignOmxlYXZlJywgW1xuICAgICAgICAgICAgICAgIGFuaW1hdGUoJzIwMG1zJywgc3R5bGUoe29wYWNpdHk6IDB9KSlcbiAgICAgICAgICAgIF0pXG4gICAgICAgIF0pXG4gICAgXSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZSxcbiAgICBpbXBvcnRzOiBbQmJUZW1wbGF0ZSwgQXN5bmNQaXBlLCBOZ1RlbXBsYXRlT3V0bGV0LCBCYkxvY2FsaXplLCBCYkZvcm1FcnJvciwgQmJGaWxlU2l6ZSwgQmJGaWxlSW1hZ2VdLFxuICAgIHN0YW5kYWxvbmU6IHRydWVcbn0pXG5leHBvcnQgY2xhc3MgQmJGaWxlUGlja2VyIGltcGxlbWVudHMgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cbiAgICByZWFkb25seSBsYWJlbElkOiBzdHJpbmcgPSBgYmItZmlsZS1waWNrZXItJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICAgLy8gVmlld3MuXG4gICAgQFZpZXdDaGlsZCgnZmlsZUlucHV0Jywge3N0YXRpYzogdHJ1ZX0pIGZpbGVJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBAQ29udGVudENoaWxkKCdleHRyYScpIGV4dHJhVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgYWNjZXB0OiBzdHJpbmcgfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBzaG93SW1hZ2VzOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBhbGxvd0RyYWdnaW5nOiBib29sZWFuID0gdHJ1ZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGdyb3VwZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIHJlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBkaXNhYmxlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgaGlkZUVycm9yczogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgaG92ZXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIGVycm9yOiBib29sZWFuID0gZmFsc2U7XG4gICAgdmFsdWUkID0gbmV3IEJlaGF2aW9yU3ViamVjdDx7IGZpbGU/OiBGaWxlIH0+KHt9KTtcblxuICAgIC8vIENhbGxiYWNrcy5cbiAgICBvblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG4gICAgb25DaGFuZ2VDYWxsYmFjazogKF86IEZpbGUgfCBudWxsKSA9PiB2b2lkID0gKCkgPT4gKHt9KTtcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICBjb25zdCB7ZmlsZX0gPSB0aGlzLnZhbHVlJC5nZXRWYWx1ZSgpO1xuICAgICAgICByZXR1cm4gZmlsZTtcbiAgICB9XG5cbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpbGUgfCBudWxsPigpO1xuXG4gICAgc2V0IHZhbHVlKHZhbHVlOiBGaWxlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlJC5uZXh0KHtmaWxlOiB2YWx1ZX0pO1xuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlLmVtaXQodmFsdWUpO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdvdmVyJywgWyckZXZlbnQnLCAndHJ1ZSddKVxuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdsZWF2ZScsIFsnJGV2ZW50JywgJ2ZhbHNlJ10pXG4gICAgb25EcmFnKGV2ZW50OiBFdmVudCwgaXNIb3ZlcmVkOiBib29sZWFuKSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBjYW4gc3VwcG9ydCBkcmFnLlxuICAgICAgICBpZiAoIXRoaXMuYWxsb3dEcmFnZ2luZyB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcmV2ZW50IHRoZSBkZWZhdWx0IGV2ZW50IGFjdGlvblxuICAgICAgICAvLyBhbmQgc3RhcnQgdGhlIGhvdmVyaW5nLlxuICAgICAgICB0aGlzLnByZXZlbnREZWZhdWx0KGV2ZW50KTtcbiAgICAgICAgdGhpcy5ob3ZlcmVkID0gaXNIb3ZlcmVkO1xuICAgIH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIG9uRHJvcChldmVudDogRXZlbnQpIHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGlucHV0IGNhbiBzdXBwb3J0IGRyYWcuXG4gICAgICAgIGlmICghdGhpcy5hbGxvd0RyYWdnaW5nIHx8IHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByZXZlbnQgdGhlIGRlZmF1bHQgZXZlbnQgYWN0aW9uXG4gICAgICAgIC8vIGFuZCBzdG9wIHRoZSBob3ZlcmluZy5cbiAgICAgICAgdGhpcy5wcmV2ZW50RGVmYXVsdChldmVudCk7XG4gICAgICAgIHRoaXMuaG92ZXJlZCA9IGZhbHNlO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGZpbGUuXG4gICAgICAgIHRoaXMuc2F2ZUZpbGUoZXZlbnRbJ2RhdGFUcmFuc2ZlciddLmZpbGVzKTtcblxuICAgICAgICAvLyBSdW4gdGhlIG9uIGNoYW5nZSBjYWxsYmFjay5cbiAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgIH1cblxuICAgIG9uQnV0dG9uUHJlc3NlZChmaWxlPzogRmlsZSkge1xuICAgICAgICBpZiAoZmlsZSkge1xuICAgICAgICAgICAgdGhpcy52YWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5vcGVuRmlsZVBpY2tlcigpO1xuICAgIH1cblxuICAgIG9wZW5GaWxlUGlja2VyKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5maWxlSW5wdXRcbiAgICAgICAgICAgICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2tcbiAgICAgICAgICAgICYmIHRoaXMuZmlsZUlucHV0Lm5hdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICB9XG5cbiAgICBvbkZpbGVDaGFuZ2UoZXZlbnQ6IEV2ZW50KSB7XG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBpbnB1dCBpcyBub3QgZGlzYWJsZWQuXG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBFeHRyYWN0IHRoZSBmaWxlIGZyb20gdGhlIGV2ZW50LlxuICAgICAgICBjb25zdCBmaWxlTGlzdCA9IHRoaXMuZ2V0RmlsZUxpc3RGcm9tRXZlbnQoZXZlbnQpO1xuXG4gICAgICAgIC8vIFNhdmUgdGhlIGZpbGUuXG4gICAgICAgIHRoaXMuc2F2ZUZpbGUoZmlsZUxpc3QpO1xuXG4gICAgICAgIC8vIFJ1biB0aGUgb24gY2hhbmdlIGNhbGxiYWNrLlxuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sodGhpcy52YWx1ZSk7XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGZpbGUgaW5wdXQuXG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dCAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBGaWxlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShtZXRob2Q6IChfOiBGaWxlIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQobWV0aG9kOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9uRXJyb3JDaGFuZ2UoZXJyb3I6IHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbCkge1xuICAgICAgICB0aGlzLmVycm9yID0gISFlcnJvcjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh7dmFsdWV9OiBGb3JtQ29udHJvbDxGaWxlPikge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWdleFN0cmluZyA9ICh0aGlzLmFjY2VwdCB8fCAnKicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwqL2csICcuXFwqJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICd8Jyk7XG4gICAgICAgIGNvbnN0IG1pbWVUeXBlUmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nKTtcblxuICAgICAgICBjb25zdCBpc05vdFZhbGlkID0gKHR5cGVvZiBGaWxlID09PSAndW5kZWZpbmVkJykgfHwgISh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHx8ICFtaW1lVHlwZVJlZ2V4LnRlc3QodmFsdWU/LnR5cGUpO1xuICAgICAgICByZXR1cm4gaXNOb3RWYWxpZCAmJiB7XG4gICAgICAgICAgICBpbnZhbGlkRmlsZVR5cGU6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNhdmVGaWxlID0gKGZpbGVzPzogRmlsZUxpc3QpID0+IHtcbiAgICAgICAgLy8gVmFsaWRhdGUgdGhlIGZpbGVzIGV4aXN0LlxuICAgICAgICBpZiAoIWZpbGVzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZXRyaWV2ZSB0aGUgZmlyc3QgZmlsZS5cbiAgICAgICAgY29uc3QgZmlsZSA9IGZpbGVzWzBdO1xuXG4gICAgICAgIC8vIFZhbGlkYXRlIHRoZSBmaXJzdCBmaWxlIGV4aXN0cy5cbiAgICAgICAgaWYgKCFmaWxlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTYXZlIHRoZSBmaWxlLlxuICAgICAgICB0aGlzLnZhbHVlID0gZmlsZTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBnZXRGaWxlTGlzdEZyb21FdmVudCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuXG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZWxlbWVudC5maWxlcztcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBwcmV2ZW50RGVmYXVsdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfTtcblxufVxuIiwiPCEtLSBUaGUgbGFiZWwgb2YgdGhlIGlucHV0LiAtLT5cbkBpZiAobGFiZWw7IGFzIGxhYmVsQ29udGVudCkge1xuICAgIDxsYWJlbCBbZm9yXT1cImxhYmVsSWRcIlxuICAgICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWxhYmVsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG59XG5cbjwhLS0gVGhlIGlucHV0IHRoYXQgY2FuIG9wZW4gdGhlIGZpbGUgcGlja2VyLiAtLT5cbjxpbnB1dCAjZmlsZUlucHV0XG4gICAgICAgW2FjY2VwdF09XCJhY2NlcHRcIlxuICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgKGNoYW5nZSk9XCJvbkZpbGVDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pbnB1dFwiXG4gICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgIHRhYmluZGV4PVwiLTFcIj5cblxuQGlmICh2YWx1ZSQgfCBhc3luYzsgYXMgZGF0YSkge1xuICAgIDxkaXYgY2xhc3M9XCJiYi1maWxlLXBpY2tlci13cmFwcGVyXCI+XG4gICAgICAgIDwhLS0gVGhlIGJ1dHRvbiB0aGF0IGFjY2VwdHMgZmlsZXMuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kZXN0cnVjdGl2ZV09XCIhIWRhdGE/LmZpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3Muc3RhbmRhbG9uZV09XCIhYWxsb3dEcmFnZ2luZ1wiXG4gICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICAgICAgICAgIFtpZF09XCJsYWJlbElkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uQnV0dG9uUHJlc3NlZChkYXRhPy5maWxlKVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWJ1dHRvblwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJkYXRhPy5maWxlID8gY2xvc2VJY29uIDogdXBsb2FkSWNvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIHt7IChkYXRhPy5maWxlID8gJ2ZpbGUtcGlja2VyLnJlbW92ZScgOiAnZmlsZS1waWNrZXIuY2hvb3NlJykgfCBiYkxvY2FsaXplIH19XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIEBpZiAoYWxsb3dEcmFnZ2luZykge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYi1maWxlLXBpY2tlci16b25lXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdmaWxlLXBpY2tlci5kcm9wJyB8IGJiTG9jYWxpemUgfX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmICghIWV4dHJhVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJleHRyYVRlbXBsYXRlOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhPy5maWxlfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzaG93SW1hZ2VzKSB7XG4gICAgICAgICAgICBAaWYgKGRhdGE/LmZpbGUgfCBiYkZpbGVJbWFnZSB8IGFzeW5jOyBhcyBpbWFnZSkge1xuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pbWFnZS1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWltYWdlLXdyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW0BiYkZpbGVQaWNrZXJJbWFnZUFuaW1hdGlvbl09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLnBhZGRpbmctdG9wLiVdPVwiaW1hZ2U/LmFzcGVjdFJhdGlvICogMTAwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3N0eWxlLmJhY2tncm91bmQtaW1hZ2VdPVwiaW1hZ2U/LmJhY2tncm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWltYWdlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIEV4dHJhIGluZm9ybWF0aW9uIG9mIHRoZSBmaWxlLiAtLT5cbiAgICAgICAgPGRpdiBbY2xhc3MudmlzaWJsZV09XCIhIWRhdGE/LmZpbGVcIlxuICAgICAgICAgICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItaW5mb1wiPlxuICAgICAgICAgICAgQGlmIChkYXRhPy5maWxlPy5uYW1lOyBhcyBuYW1lKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgbmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIEBpZiAoZGF0YT8uZmlsZT8uc2l6ZTsgYXMgc2l6ZSkge1xuICAgICAgICAgICAgICAgIDxzcGFuPnt7IHNpemUgfCBiYkZpbGVTaXplIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbn1cblxuQGlmICghaGlkZUVycm9ycykge1xuICAgIDxiYi1mb3JtLWVycm9yIChlcnJvckNoYW5nZSk9XCJvbkVycm9yQ2hhbmdlKCRldmVudClcIj48L2JiLWZvcm0tZXJyb3I+XG59XG5cbjwhLS0gVGhlIGZpbGUgcGlja2VyIGhpbnQuIC0tPlxuQGlmIChoaW50OyBhcyBoaW50Q29udGVudCkge1xuICAgIDxwIGNsYXNzPVwiYmItZmlsZS1waWNrZXItaGludFwiPlxuICAgICAgICA8bmctdGVtcGxhdGUgW2JiVGVtcGxhdGVdPVwiaGludENvbnRlbnRcIj57eyBoaW50Q29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9wPlxufVxuXG48IS0tIFVwbG9hZCBpY29uLiAtLT5cbjxuZy10ZW1wbGF0ZSAjdXBsb2FkSWNvbj5cbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pY29uXCJcbiAgICAgICAgIHdpZHRoPVwiMS41cmVtXCJcbiAgICAgICAgIGhlaWdodD1cIjEuNXJlbVwiXG4gICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBkPVwiTTIgMTIuNUMyIDkuNDYgNC40NiA3IDcuNSA3SDE4YzIuMjEgMCA0IDEuNzkgNCA0cy0xLjc5IDQtNCA0SDkuNWEyLjUgMi41IDAgMDEwLTVIMTd2Mkg5LjQxYy0uNTUgMC0uNTUgMSAwIDFIMThjMS4xIDAgMi0uOSAyLTJzLS45LTItMi0ySDcuNUM1LjU3IDkgNCAxMC41NyA0IDEyLjVTNS41NyAxNiA3LjUgMTZIMTd2Mkg3LjVDNC40NiAxOCAyIDE1LjU0IDIgMTIuNXpcIj48L3BhdGg+XG4gICAgICAgIDxwYXRoIGZpbGw9XCJub25lXCIgZD1cIk0wIDBoMjR2MjRIMFYwelwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG5cbjwhLS0gQ2xvc2UgaWNvbi4gLS0+XG48bmctdGVtcGxhdGUgI2Nsb3NlSWNvbj5cbiAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pY29uXCJcbiAgICAgICAgIHdpZHRoPVwiMS41cmVtXCJcbiAgICAgICAgIGhlaWdodD1cIjEuNXJlbVwiXG4gICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gICAgICAgIDxwYXRoIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBkPVwiTTE5IDYuNDFMMTcuNTkgNSAxMiAxMC41OSA2LjQxIDUgNSA2LjQxIDEwLjU5IDEyIDUgMTcuNTkgNi40MSAxOSAxMiAxMy40MSAxNy41OSAxOSAxOSAxNy41OSAxMy40MSAxMnpcIj48L3BhdGg+XG4gICAgICAgIDxwYXRoIGQ9XCJNMCAwaDI0djI0SDB6XCIgZmlsbD1cIm5vbmVcIj48L3BhdGg+XG4gICAgPC9zdmc+XG48L25nLXRlbXBsYXRlPlxuIl19
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS1waWNrZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9lbGVtZW50cy9zcmMvbGliL2ZpbGUtcGlja2VyL2ZpbGUtcGlja2VyLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9maWxlLXBpY2tlci9maWxlLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsZ0JBQWdCLEVBQ2hCLHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUNMLE1BQU0sRUFFTixTQUFTLEVBQ1QsaUJBQWlCLEVBQ3BCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBb0MsYUFBYSxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDbkcsT0FBTyxFQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBQyxNQUFNLHFCQUFxQixDQUFDO0FBQ3hFLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUMvRCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sbUNBQW1DLENBQUM7QUFDN0QsT0FBTyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQyxNQUFNLGlCQUFpQixDQUFDO0FBQzVELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RCxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sK0JBQStCLENBQUM7QUFDekQsT0FBTyxFQUFDLFdBQVcsRUFBQyxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSx5QkFBeUIsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZUFBZSxFQUFD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QU0sRUFBRSxJQUFJLEVBQUM7Z0JBQ2YsYUFBYTtzQkFBbkMsWUFBWTt1QkFBQyxPQUFPO2dCQUdaLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ2dDLE9BQU87c0JBQTVDLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBQ0UsUUFBUTtzQkFBN0MsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxRQUFRO3NCQUE3QyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDO2dCQUNFLFVBQVU7c0JBQS9DLEtBQUs7dUJBQUMsRUFBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUM7Z0JBV2hDLEtBQUs7c0JBRFIsS0FBSztnQkFNSSxXQUFXO3NCQUFwQixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgZm9yd2FyZFJlZixcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDb250cm9sVmFsdWVBY2Nlc3NvciwgRm9ybUNvbnRyb2wsIE5HX1ZBTElEQVRPUlMsIE5HX1ZBTFVFX0FDQ0VTU09SfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge2FuaW1hdGUsIHN0eWxlLCB0cmFuc2l0aW9uLCB0cmlnZ2VyfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcbmltcG9ydCB7QmJGb3JtRXJyb3J9IGZyb20gJy4uL2Zvcm0tZXJyb3IvZm9ybS1lcnJvci5jb21wb25lbnQnO1xuaW1wb3J0IHtCYkZpbGVEcm9wfSBmcm9tICcuLi9kaXJlY3RpdmVzL2ZpbGUtZHJvcC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0JiTG9jYWxpemV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL2xvY2FsaXplJztcbmltcG9ydCB7QmJUZW1wbGF0ZX0gZnJvbSAnQGJyYXZvYml0L2JiLWZvdW5kYXRpb24vdXRpbHMnO1xuaW1wb3J0IHtCYkZpbGVJbWFnZX0gZnJvbSAnLi4vcGlwZXMvZmlsZS1pbWFnZS5waXBlJztcbmltcG9ydCB7QmJGaWxlU2l6ZX0gZnJvbSAnLi4vcGlwZXMvZmlsZS1zaXplLnBpcGUnO1xuaW1wb3J0IHtCZWhhdmlvclN1YmplY3R9IGZyb20gJ3J4anMnO1xuXG5sZXQgbmV4dFVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdiYi1maWxlLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2ZpbGUtcGlja2VyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9maWxlLXBpY2tlci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgcHJvdmlkZXJzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gQmJGaWxlUGlja2VyKSxcbiAgICAgICAgICAgIG11bHRpOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IE5HX1ZBTElEQVRPUlMsXG4gICAgICAgICAgICB1c2VFeGlzdGluZzogQmJGaWxlUGlja2VyLFxuICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgfVxuICAgIF0sXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmItZmlsZS1waWNrZXInLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5lcnJvcl0nOiAnZXJyb3InXG4gICAgfSxcbiAgICBhbmltYXRpb25zOiBbXG4gICAgICAgIHRyaWdnZXIoJ2JiRmlsZVBpY2tlckltYWdlQW5pbWF0aW9uJywgW1xuICAgICAgICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICAgICAgICAgIHN0eWxlKHtvcGFjaXR5OiAwfSksXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7b3BhY2l0eTogMX0pKVxuICAgICAgICAgICAgXSksXG4gICAgICAgICAgICB0cmFuc2l0aW9uKCc6bGVhdmUnLCBbXG4gICAgICAgICAgICAgICAgYW5pbWF0ZSgnMjAwbXMnLCBzdHlsZSh7b3BhY2l0eTogMH0pKVxuICAgICAgICAgICAgXSlcbiAgICAgICAgXSlcbiAgICBdLFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIGltcG9ydHM6IFtCYlRlbXBsYXRlLCBBc3luY1BpcGUsIE5nVGVtcGxhdGVPdXRsZXQsIEJiTG9jYWxpemUsIEJiRm9ybUVycm9yLCBCYkZpbGVTaXplLCBCYkZpbGVJbWFnZSwgQmJGaWxlRHJvcF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBCYkZpbGVQaWNrZXIgaW1wbGVtZW50cyBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgICAvLyBSZWFkb25seSBkYXRhLlxuICAgIHJlYWRvbmx5IGxhYmVsSWQ6IHN0cmluZyA9IGBiYi1maWxlLXBpY2tlci0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAVmlld0NoaWxkKCdmaWxlSW5wdXQnLCB7c3RhdGljOiB0cnVlfSkgZmlsZUlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIEBDb250ZW50Q2hpbGQoJ2V4dHJhJykgZXh0cmFUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGhpbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZyB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIHNob3dJbWFnZXM6IGJvb2xlYW4gPSB0cnVlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIEBJbnB1dCh7dHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlfSkgcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBASW5wdXQoe3RyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZX0pIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBoaWRlRXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHZhbHVlJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8eyBmaWxlPzogRmlsZSB9Pih7fSk7XG5cbiAgICAvLyBDYWxsYmFja3MuXG4gICAgb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSAoKSA9PiAoe30pO1xuICAgIG9uQ2hhbmdlQ2FsbGJhY2s6IChfOiBGaWxlIHwgbnVsbCkgPT4gdm9pZCA9ICgpID0+ICh7fSk7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCB2YWx1ZSgpIHtcbiAgICAgICAgY29uc3Qge2ZpbGV9ID0gdGhpcy52YWx1ZSQuZ2V0VmFsdWUoKTtcbiAgICAgICAgcmV0dXJuIGZpbGU7XG4gICAgfVxuXG4gICAgQE91dHB1dCgpIHZhbHVlQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGaWxlIHwgbnVsbD4oKTtcblxuICAgIHNldCB2YWx1ZSh2YWx1ZTogRmlsZSB8IG51bGwpIHtcbiAgICAgICAgdGhpcy52YWx1ZSQubmV4dCh7ZmlsZTogdmFsdWV9KTtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHZhbHVlKTtcbiAgICB9XG5cbiAgICBvbkJ1dHRvblByZXNzZWQoZmlsZT86IEZpbGUpIHtcbiAgICAgICAgaWYgKGZpbGUpIHtcbiAgICAgICAgICAgIHRoaXMudmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5vbkNoYW5nZUNhbGxiYWNrKHRoaXMudmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMub3BlbkZpbGVQaWNrZXIoKTtcbiAgICB9XG5cbiAgICBvcGVuRmlsZVBpY2tlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsZUlucHV0XG4gICAgICAgICAgICAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrXG4gICAgICAgICAgICAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgb25GaWxlQ2hhbmdlKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgZmlsZSBmcm9tIHRoZSBldmVudC5cbiAgICAgICAgY29uc3QgZmlsZXMgPSB0aGlzLmdldEZpbGVzRnJvbUV2ZW50KGV2ZW50KTtcbiAgICAgICAgdGhpcy5zYXZlRmlsZShmaWxlcyk7XG5cbiAgICAgICAgLy8gQ2xlYXIgdGhlIGZpbGUgaW5wdXQuXG4gICAgICAgIGlmICh0aGlzLmZpbGVJbnB1dCAmJiB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVJbnB1dC5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICB3cml0ZVZhbHVlKHZhbHVlOiBGaWxlIHwgbnVsbCkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPbkNoYW5nZShtZXRob2Q6IChfOiBGaWxlIHwgbnVsbCkgPT4gdm9pZCkge1xuICAgICAgICB0aGlzLm9uQ2hhbmdlQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgcmVnaXN0ZXJPblRvdWNoZWQobWV0aG9kOiAoKSA9PiB2b2lkKSB7XG4gICAgICAgIHRoaXMub25Ub3VjaGVkQ2FsbGJhY2sgPSBtZXRob2Q7XG4gICAgfVxuXG4gICAgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIG9uRXJyb3JDaGFuZ2UoZXJyb3I6IHsgdG9rZW46IHN0cmluZywgZGF0YT86IGFueSB9IHwgbnVsbCkge1xuICAgICAgICB0aGlzLmVycm9yID0gISFlcnJvcjtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZSh7dmFsdWV9OiBGb3JtQ29udHJvbDxGaWxlPikge1xuICAgICAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWdleFN0cmluZyA9ICh0aGlzLmFjY2VwdCB8fCAnKicpXG4gICAgICAgICAgICAucmVwbGFjZSgvXFwqL2csICcuXFwqJylcbiAgICAgICAgICAgIC5yZXBsYWNlKC8sL2csICd8Jyk7XG4gICAgICAgIGNvbnN0IG1pbWVUeXBlUmVnZXggPSBuZXcgUmVnRXhwKHJlZ2V4U3RyaW5nKTtcblxuICAgICAgICBjb25zdCBpc05vdFZhbGlkID0gKHR5cGVvZiBGaWxlID09PSAndW5kZWZpbmVkJykgfHwgISh2YWx1ZSBpbnN0YW5jZW9mIEZpbGUpIHx8ICFtaW1lVHlwZVJlZ2V4LnRlc3QodmFsdWU/LnR5cGUpO1xuICAgICAgICByZXR1cm4gaXNOb3RWYWxpZCAmJiB7aW52YWxpZEZpbGVUeXBlOiB0cnVlfTtcbiAgICB9XG5cbiAgICBzYXZlRmlsZShmaWxlczogRmlsZVtdKSB7XG4gICAgICAgIGNvbnN0IGZpbGUgPSBmaWxlcz8uWzBdID8/IG51bGw7XG4gICAgICAgIGlmICghZmlsZSB8fCB0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52YWx1ZSA9IGZpbGU7XG4gICAgICAgIHRoaXMub25DaGFuZ2VDYWxsYmFjayh0aGlzLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldEZpbGVzRnJvbUV2ZW50KGV2ZW50OiBFdmVudCkge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmICghZWxlbWVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20oZWxlbWVudC5maWxlcyk7XG4gICAgfVxuXG59XG4iLCI8IS0tIFRoZSBsYWJlbCBvZiB0aGUgaW5wdXQuIC0tPlxuQGlmIChsYWJlbDsgYXMgbGFiZWxDb250ZW50KSB7XG4gICAgPGxhYmVsIFtmb3JdPVwibGFiZWxJZFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItbGFiZWxcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImxhYmVsQ29udGVudFwiPnt7IGxhYmVsQ29udGVudCB9fTwvbmctdGVtcGxhdGU+XG4gICAgPC9sYWJlbD5cbn1cblxuPCEtLSBUaGUgaW5wdXQgdGhhdCBjYW4gb3BlbiB0aGUgZmlsZSBwaWNrZXIuIC0tPlxuPGlucHV0ICNmaWxlSW5wdXRcbiAgICAgICBbYWNjZXB0XT1cImFjY2VwdFwiXG4gICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAoY2hhbmdlKT1cIm9uRmlsZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWlucHV0XCJcbiAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgdGFiaW5kZXg9XCItMVwiPlxuXG5AaWYgKHZhbHVlJCB8IGFzeW5jOyBhcyBkYXRhKSB7XG4gICAgPGRpdiBbYmJGaWxlRHJvcERpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgIChiYkZpbGVEcm9wKT1cInNhdmVGaWxlKCRldmVudClcIlxuICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci13cmFwcGVyXCI+XG4gICAgICAgIDwhLS0gVGhlIGJ1dHRvbiB0aGF0IGFjY2VwdHMgZmlsZXMuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItY29udGFpbmVyXCI+XG4gICAgICAgICAgICA8YnV0dG9uIFtjbGFzcy5kZXN0cnVjdGl2ZV09XCIhIWRhdGE/LmZpbGVcIlxuICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICBbaWRdPVwibGFiZWxJZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkJ1dHRvblByZXNzZWQoZGF0YT8uZmlsZSlcIlxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1idXR0b25cIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZGF0YT8uZmlsZSA/IGNsb3NlSWNvbiA6IHVwbG9hZEljb25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICB7eyAoZGF0YT8uZmlsZSA/ICdmaWxlLXBpY2tlci5yZW1vdmUnIDogJ2ZpbGUtcGlja2VyLmNob29zZScpIHwgYmJMb2NhbGl6ZSB9fVxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItem9uZVwiPlxuICAgICAgICAgICAgICAgIHt7ICdmaWxlLXBpY2tlci5kcm9wJyB8IGJiTG9jYWxpemUgfX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICBAaWYgKCEhZXh0cmFUZW1wbGF0ZSkge1xuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImV4dHJhVGVtcGxhdGU7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGE/LmZpbGV9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIH1cblxuICAgICAgICBAaWYgKHNob3dJbWFnZXMpIHtcbiAgICAgICAgICAgIEBpZiAoZGF0YT8uZmlsZSB8IGJiRmlsZUltYWdlIHwgYXN5bmM7IGFzIGltYWdlKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWltYWdlLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYmItZmlsZS1waWNrZXItaW1hZ2Utd3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbQGJiRmlsZVBpY2tlckltYWdlQW5pbWF0aW9uXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUucGFkZGluZy10b3AuJV09XCJpbWFnZT8uYXNwZWN0UmF0aW8gKiAxMDBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1pbWFnZV09XCJpbWFnZT8uYmFja2dyb3VuZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYmItZmlsZS1waWNrZXItaW1hZ2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gRXh0cmEgaW5mb3JtYXRpb24gb2YgdGhlIGZpbGUuIC0tPlxuICAgICAgICA8ZGl2IFtjbGFzcy52aXNpYmxlXT1cIiEhZGF0YT8uZmlsZVwiXG4gICAgICAgICAgICAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1pbmZvXCI+XG4gICAgICAgICAgICBAaWYgKGRhdGE/LmZpbGU/Lm5hbWU7IGFzIG5hbWUpIHtcbiAgICAgICAgICAgICAgICA8c3Bhbj57eyBuYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgQGlmIChkYXRhPy5maWxlPy5zaXplOyBhcyBzaXplKSB7XG4gICAgICAgICAgICAgICAgPHNwYW4+e3sgc2l6ZSB8IGJiRmlsZVNpemUgfX08L3NwYW4+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxufVxuXG5AaWYgKCFoaWRlRXJyb3JzKSB7XG4gICAgPGJiLWZvcm0tZXJyb3IgKGVycm9yQ2hhbmdlKT1cIm9uRXJyb3JDaGFuZ2UoJGV2ZW50KVwiPjwvYmItZm9ybS1lcnJvcj5cbn1cblxuPCEtLSBUaGUgZmlsZSBwaWNrZXIgaGludC4gLS0+XG5AaWYgKGhpbnQ7IGFzIGhpbnRDb250ZW50KSB7XG4gICAgPHAgY2xhc3M9XCJiYi1maWxlLXBpY2tlci1oaW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG59XG5cbjwhLS0gVXBsb2FkIGljb24uIC0tPlxuPG5nLXRlbXBsYXRlICN1cGxvYWRJY29uPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWljb25cIlxuICAgICAgICAgd2lkdGg9XCIxLjVyZW1cIlxuICAgICAgICAgaGVpZ2h0PVwiMS41cmVtXCJcbiAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIGQ9XCJNMiAxMi41QzIgOS40NiA0LjQ2IDcgNy41IDdIMThjMi4yMSAwIDQgMS43OSA0IDRzLTEuNzkgNC00IDRIOS41YTIuNSAyLjUgMCAwMTAtNUgxN3YySDkuNDFjLS41NSAwLS41NSAxIDAgMUgxOGMxLjEgMCAyLS45IDItMnMtLjktMi0yLTJINy41QzUuNTcgOSA0IDEwLjU3IDQgMTIuNVM1LjU3IDE2IDcuNSAxNkgxN3YySDcuNUM0LjQ2IDE4IDIgMTUuNTQgMiAxMi41elwiPjwvcGF0aD5cbiAgICAgICAgPHBhdGggZmlsbD1cIm5vbmVcIiBkPVwiTTAgMGgyNHYyNEgwVjB6XCI+PC9wYXRoPlxuICAgIDwvc3ZnPlxuPC9uZy10ZW1wbGF0ZT5cblxuPCEtLSBDbG9zZSBpY29uLiAtLT5cbjxuZy10ZW1wbGF0ZSAjY2xvc2VJY29uPlxuICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICBjbGFzcz1cImJiLWZpbGUtcGlja2VyLWljb25cIlxuICAgICAgICAgd2lkdGg9XCIxLjVyZW1cIlxuICAgICAgICAgaGVpZ2h0PVwiMS41cmVtXCJcbiAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgICAgICAgPHBhdGggZmlsbD1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIGQ9XCJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyelwiPjwvcGF0aD5cbiAgICAgICAgPHBhdGggZD1cIk0wIDBoMjR2MjRIMHpcIiBmaWxsPVwibm9uZVwiPjwvcGF0aD5cbiAgICA8L3N2Zz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -19,16 +19,16 @@ export class BbFormControl {
19
19
  onErrorChange(error) {
20
20
  this.error = !!error;
21
21
  }
22
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFormControl, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: BbFormControl, isStandalone: true, selector: "bb-form-control", inputs: { label: "label", hint: "hint", grouped: ["grouped", "grouped", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute] }, host: { properties: { "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-form-control" }, queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:#757e8a;box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-form-control-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;border-radius:.5rem;background-color:#fff;transition-duration:.25s;border:1px solid hsl(213,8%,74%);transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
22
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFormControl, deps: [], target: i0.ɵɵFactoryTarget.Component });
23
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BbFormControl, isStandalone: true, selector: "bb-form-control", inputs: { label: "label", hint: "hint", grouped: ["grouped", "grouped", booleanAttribute], hideErrors: ["hideErrors", "hideErrors", booleanAttribute] }, host: { properties: { "class.grouped": "grouped", "class.error": "error" }, classAttribute: "bb-form-control" }, queries: [{ propertyName: "ngControl", first: true, predicate: NgControl, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:var(--bb-form-control-focus-border-color);box-shadow:var(--bb-form-control-focus-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;transition-duration:.25s;box-shadow:var(--bb-form-control-box-shadow);transition-property:background-color,box-shadow;border:1px solid var(--bb-form-control-border-color);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--bb-form-control-background-color);border-radius:var(--bb-form-control-border-radius, .5rem)}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"], dependencies: [{ kind: "directive", type: BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "component", type: BbFormError, selector: "bb-form-error", inputs: ["control"], outputs: ["errorChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
24
24
  }
25
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFormControl, decorators: [{
25
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFormControl, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'bb-form-control', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
28
28
  'class': 'bb-form-control',
29
29
  '[class.grouped]': 'grouped',
30
30
  '[class.error]': 'error'
31
- }, preserveWhitespaces: false, standalone: true, imports: [BbTemplate, BbFormError], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:#757e8a;box-shadow:0 .375rem .375rem -.375rem #0000001a,var(--bb-form-control-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;border-radius:.5rem;background-color:#fff;transition-duration:.25s;border:1px solid hsl(213,8%,74%);transition-property:background-color,box-shadow;transition-timing-function:cubic-bezier(0,0,.2,1);box-shadow:0 .375rem .375rem -.375rem #0000001a}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
31
+ }, preserveWhitespaces: false, standalone: true, imports: [BbTemplate, BbFormError], template: "<!-- Label of the form control. -->\n@if (label; as labelContent) {\n <label [attr.for]=\"labelId\"\n class=\"bb-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n </label>\n}\n\n<!-- The input with the addons. -->\n<div class=\"bb-form-control-container\">\n <ng-content select=\"[bbPrefix]\"></ng-content>\n <ng-content select=\"[bbInput]\"></ng-content>\n <ng-content select=\"[bbSuffix]\"></ng-content>\n</div>\n\n<!-- The error component. -->\n@if (!hideErrors) {\n <bb-form-error [control]=\"ngControl\"\n (errorChange)=\"onErrorChange($event)\">\n </bb-form-error>\n}\n\n<!-- The form control hint. -->\n@if (hint; as hintContent) {\n <p class=\"bb-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n </p>\n}\n", styles: [".bb-form-control{color:#111;display:block}.bb-form-control>.bb-form-control-container>*.bb-prefix,.bb-form-control>.bb-form-control-container>*.bb-suffix{color:#b4b4b4;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control>.bb-form-control-container>*.bb-prefix{margin-left:.5rem}.bb-form-control>.bb-form-control-container>*.bb-suffix{margin-right:.5rem}.bb-form-control.grouped{margin-bottom:1.5rem}.bb-form-control.small{max-width:15rem}.bb-form-control.medium{max-width:30rem}.bb-form-control.large{max-width:45rem}.bb-form-control:has(input:required,textarea:required,select:required)>.bb-form-control-label:after{content:\"*\";font-size:.75rem;vertical-align:top;color:var(--bb-form-label-required-color)}.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border-color:var(--bb-form-control-focus-border-color);box-shadow:var(--bb-form-control-focus-box-shadow)}.bb-form-control-container:has(input:not(:disabled):read-only,textarea:not(:disabled):read-only){cursor:default;border-style:dotted;border-color:#bdc4c9}.bb-form-control-container:has(input:disabled,textarea:disabled,select:disabled){cursor:default;pointer-events:none;color:gray;background-color:#e6e6e6}.bb-form-control.error>.bb-form-control-label{color:#c23934}.bb-form-control.error>.bb-form-control-hint{display:none}.bb-form-control.error>.bb-form-control-container>*.bb-prefix,.bb-form-control.error>.bb-form-control-container>.bb-suffix{color:#b51c1c}.bb-form-control.error>.bb-form-control-container>input::placeholder,.bb-form-control.error>.bb-form-control-container>textarea::placeholder{color:#ea7b7b}.bb-form-control.error>.bb-form-control-container,.bb-form-control.error>.bb-form-control-container:has(input:not(:disabled):not(:read-only):focus,textarea:not(:disabled):not(:read-only):focus,select:not(:disabled):focus){border:1px solid hsl(0,73%,30%);background-color:#f8d3d3;box-shadow:0 .375rem .375rem -.375rem #0000001a,0 0 0 .1875rem #f8d3d3}.bb-form-control-container:has(select):after{top:0;right:0;bottom:0;content:\"\";width:1.5rem;display:flex;height:2.5rem;min-width:1.5rem;position:absolute;pointer-events:none;background-repeat:no-repeat;background-size:.75rem .375rem;background-position:calc(100% - .5rem) center;background-image:url('data:image/svg+xml,%3Csvg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 12 6\"%3E%3Cpath fill=\"%23D8D8D8\" fill-rule=\"evenodd\" d=\"m6 6 6-6H0z\"/%3E%3C/svg%3E')}.bb-form-control-container{width:100%;display:flex;color:#111;overflow:hidden;position:relative;align-items:center;transition-duration:.25s;box-shadow:var(--bb-form-control-box-shadow);transition-property:background-color,box-shadow;border:1px solid var(--bb-form-control-border-color);transition-timing-function:cubic-bezier(0,0,.2,1);background-color:var(--bb-form-control-background-color);border-radius:var(--bb-form-control-border-radius, .5rem)}.bb-form-control-container>input::placeholder,.bb-form-control-container>textarea::placeholder{color:#d1d1d1;transition:color .3s cubic-bezier(0,0,.2,1)}.bb-form-control-container>input,.bb-form-control-container>textarea,.bb-form-control-container>select{margin:0;width:100%;border:none;color:inherit;font-size:1rem;appearance:none;background-color:transparent}.bb-form-control-container>input,.bb-form-control-container>select{height:2.5rem;padding:0 .5rem}.bb-form-control-container>select{padding-right:2rem}.bb-form-control-container>select>::-ms-expand{display:none}.bb-form-control-container>input::-ms-clear,.bb-form-control-container>input::-ms-reveal{width:0;height:0;display:none}.bb-form-control-container>input::-webkit-search-decoration,.bb-form-control-container>input::-webkit-search-cancel-button,.bb-form-control-container>input::-webkit-search-results-button,.bb-form-control-container>input::-webkit-search-results-decoration{display:none}.bb-form-control-container>textarea{resize:none;padding:.5rem}.bb-form-control-label{display:block;margin-bottom:.25rem;color:var(--bb-form-label-color);font-size:var(--bb-form-label-font-size);font-weight:var(--bb-form-label-font-weight)}.bb-form-control-hint{display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem;color:#758795}\n"] }]
32
32
  }], propDecorators: { ngControl: [{
33
33
  type: ContentChild,
34
34
  args: [NgControl]
@@ -43,4 +43,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImpor
43
43
  type: Input,
44
44
  args: [{ transform: booleanAttribute }]
45
45
  }] } });
46
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFekMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBaUJyQixNQUFNLE9BQU8sYUFBYTtJQUV0QixpQkFBaUI7SUFDUixPQUFPLEdBQVcsbUJBQW1CLFlBQVksRUFBRSxFQUFFLENBQUM7SUFFL0QsU0FBUztJQUNnQixTQUFTLENBQVk7SUFFOUMsVUFBVTtJQUNELEtBQUssR0FBcUMsSUFBSSxDQUFDO0lBQy9DLElBQUksR0FBcUMsSUFBSSxDQUFDO0lBQ2pCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDekIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVsRSxTQUFTO0lBQ1QsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUV2QixhQUFhLENBQUMsS0FBMkM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7dUdBbkJRLGFBQWE7MkZBQWIsYUFBYSwySEFXSCxnQkFBZ0IsNENBQ2hCLGdCQUFnQixxTEFOckIsU0FBUyxnREM1QjNCLHMzQkE0QkEsb29JRFJjLFVBQVUsaUZBQUUsV0FBVzs7MkZBRXhCLGFBQWE7a0JBZnpCLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsZUFBZSxFQUFFLE9BQU87cUJBQzNCLHVCQUNvQixLQUFLLGNBQ2QsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQzs4QkFRVCxTQUFTO3NCQUFqQyxZQUFZO3VCQUFDLFNBQVM7Z0JBR2QsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDZ0MsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxVQUFVO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkZvcm1FcnJvcn0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0JiVGVtcGxhdGV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL3V0aWxzJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZvcm0tY29udHJvbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1mb3JtLWNvbnRyb2wnLFxuICAgICAgICAnW2NsYXNzLmdyb3VwZWRdJzogJ2dyb3VwZWQnLFxuICAgICAgICAnW2NsYXNzLmVycm9yXSc6ICdlcnJvcidcbiAgICB9LFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0JiVGVtcGxhdGUsIEJiRm9ybUVycm9yXVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1Db250cm9sIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcmVhZG9ubHkgbGFiZWxJZDogc3RyaW5nID0gYGJiLWZvcm0tY29udHJvbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKE5nQ29udHJvbCkgbmdDb250cm9sOiBOZ0NvbnRyb2w7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBoaWRlRXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb25FcnJvckNoYW5nZShlcnJvcjogeyB0b2tlbjogc3RyaW5nLCBkYXRhPzogYW55IH0gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAhIWVycm9yO1xuICAgIH1cblxufVxuIiwiPCEtLSBMYWJlbCBvZiB0aGUgZm9ybSBjb250cm9sLiAtLT5cbkBpZiAobGFiZWw7IGFzIGxhYmVsQ29udGVudCkge1xuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwibGFiZWxJZFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWxhYmVsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG59XG5cbjwhLS0gVGhlIGlucHV0IHdpdGggdGhlIGFkZG9ucy4gLS0+XG48ZGl2IGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiSW5wdXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXJyb3IgY29tcG9uZW50LiAtLT5cbkBpZiAoIWhpZGVFcnJvcnMpIHtcbiAgICA8YmItZm9ybS1lcnJvciBbY29udHJvbF09XCJuZ0NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIChlcnJvckNoYW5nZSk9XCJvbkVycm9yQ2hhbmdlKCRldmVudClcIj5cbiAgICA8L2JiLWZvcm0tZXJyb3I+XG59XG5cbjwhLS0gVGhlIGZvcm0gY29udHJvbCBoaW50LiAtLT5cbkBpZiAoaGludDsgYXMgaGludENvbnRlbnQpIHtcbiAgICA8cCBjbGFzcz1cImJiLWZvcm0tY29udHJvbC1oaW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG59XG4iXX0=
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vZWxlbWVudHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxnQkFBZ0IsRUFBRSx1QkFBdUIsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBZSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN4SSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFDL0QsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLCtCQUErQixDQUFDO0FBQ3pELE9BQU8sRUFBQyxTQUFTLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQzs7QUFFekMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxDQUFDO0FBaUJyQixNQUFNLE9BQU8sYUFBYTtJQUV0QixpQkFBaUI7SUFDUixPQUFPLEdBQVcsbUJBQW1CLFlBQVksRUFBRSxFQUFFLENBQUM7SUFFL0QsU0FBUztJQUNnQixTQUFTLENBQVk7SUFFOUMsVUFBVTtJQUNELEtBQUssR0FBcUMsSUFBSSxDQUFDO0lBQy9DLElBQUksR0FBcUMsSUFBSSxDQUFDO0lBQ2pCLE9BQU8sR0FBWSxLQUFLLENBQUM7SUFDekIsVUFBVSxHQUFZLEtBQUssQ0FBQztJQUVsRSxTQUFTO0lBQ1QsS0FBSyxHQUFZLEtBQUssQ0FBQztJQUV2QixhQUFhLENBQUMsS0FBMkM7UUFDckQsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDO0lBQ3pCLENBQUM7dUdBbkJRLGFBQWE7MkZBQWIsYUFBYSwySEFXSCxnQkFBZ0IsNENBQ2hCLGdCQUFnQixxTEFOckIsU0FBUyxnREM1QjNCLHMzQkE0QkEsaXVJRFJjLFVBQVUsaUZBQUUsV0FBVzs7MkZBRXhCLGFBQWE7a0JBZnpCLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsZUFBZSxFQUFFLE9BQU87cUJBQzNCLHVCQUNvQixLQUFLLGNBQ2QsSUFBSSxXQUNQLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQzs4QkFRVCxTQUFTO3NCQUFqQyxZQUFZO3VCQUFDLFNBQVM7Z0JBR2QsS0FBSztzQkFBYixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDZ0MsT0FBTztzQkFBNUMsS0FBSzt1QkFBQyxFQUFDLFNBQVMsRUFBRSxnQkFBZ0IsRUFBQztnQkFDRSxVQUFVO3NCQUEvQyxLQUFLO3VCQUFDLEVBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtib29sZWFuQXR0cmlidXRlLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb250ZW50Q2hpbGQsIElucHV0LCBUZW1wbGF0ZVJlZiwgVmlld0VuY2Fwc3VsYXRpb259IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtCYkZvcm1FcnJvcn0gZnJvbSAnLi4vZm9ybS1lcnJvci9mb3JtLWVycm9yLmNvbXBvbmVudCc7XG5pbXBvcnQge0JiVGVtcGxhdGV9IGZyb20gJ0BicmF2b2JpdC9iYi1mb3VuZGF0aW9uL3V0aWxzJztcbmltcG9ydCB7TmdDb250cm9sfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiLWZvcm0tY29udHJvbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYi1mb3JtLWNvbnRyb2wnLFxuICAgICAgICAnW2NsYXNzLmdyb3VwZWRdJzogJ2dyb3VwZWQnLFxuICAgICAgICAnW2NsYXNzLmVycm9yXSc6ICdlcnJvcidcbiAgICB9LFxuICAgIHByZXNlcnZlV2hpdGVzcGFjZXM6IGZhbHNlLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0JiVGVtcGxhdGUsIEJiRm9ybUVycm9yXVxufSlcbmV4cG9ydCBjbGFzcyBCYkZvcm1Db250cm9sIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcmVhZG9ubHkgbGFiZWxJZDogc3RyaW5nID0gYGJiLWZvcm0tY29udHJvbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKE5nQ29udHJvbCkgbmdDb250cm9sOiBOZ0NvbnRyb2w7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KHt0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGV9KSBoaWRlRXJyb3JzOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICAvLyBTdGF0ZS5cbiAgICBlcnJvcjogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgb25FcnJvckNoYW5nZShlcnJvcjogeyB0b2tlbjogc3RyaW5nLCBkYXRhPzogYW55IH0gfCBudWxsKSB7XG4gICAgICAgIHRoaXMuZXJyb3IgPSAhIWVycm9yO1xuICAgIH1cblxufVxuIiwiPCEtLSBMYWJlbCBvZiB0aGUgZm9ybSBjb250cm9sLiAtLT5cbkBpZiAobGFiZWw7IGFzIGxhYmVsQ29udGVudCkge1xuICAgIDxsYWJlbCBbYXR0ci5mb3JdPVwibGFiZWxJZFwiXG4gICAgICAgICAgIGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWxhYmVsXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuICAgIDwvbGFiZWw+XG59XG5cbjwhLS0gVGhlIGlucHV0IHdpdGggdGhlIGFkZG9ucy4gLS0+XG48ZGl2IGNsYXNzPVwiYmItZm9ybS1jb250cm9sLWNvbnRhaW5lclwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiSW5wdXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYlN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPCEtLSBUaGUgZXJyb3IgY29tcG9uZW50LiAtLT5cbkBpZiAoIWhpZGVFcnJvcnMpIHtcbiAgICA8YmItZm9ybS1lcnJvciBbY29udHJvbF09XCJuZ0NvbnRyb2xcIlxuICAgICAgICAgICAgICAgICAgIChlcnJvckNoYW5nZSk9XCJvbkVycm9yQ2hhbmdlKCRldmVudClcIj5cbiAgICA8L2JiLWZvcm0tZXJyb3I+XG59XG5cbjwhLS0gVGhlIGZvcm0gY29udHJvbCBoaW50LiAtLT5cbkBpZiAoaGludDsgYXMgaGludENvbnRlbnQpIHtcbiAgICA8cCBjbGFzcz1cImJiLWZvcm0tY29udHJvbC1oaW50XCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbiAgICA8L3A+XG59XG4iXX0=
@@ -79,10 +79,10 @@ export class BbFormError {
79
79
  const extraError$ = this._extraErrorControls?.changes?.asObservable() ?? of(null);
80
80
  return combineLatest([error$, extraError$]).pipe(map(([error, extraError]) => error ?? extraError ?? null), distinctUntilChanged());
81
81
  }
82
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFormError, deps: [{ token: i1.BbFormSubmit, optional: true }, { token: i2.NgControl, optional: true }, { token: i3.BbFormSubmitter, optional: true }, { token: i4.BbExtraErrorControls, optional: true }, { token: ELEMENTS_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
83
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: BbFormError, isStandalone: true, selector: "bb-form-error", inputs: { control: "control" }, outputs: { errorChange: "errorChange" }, host: { classAttribute: "bb-form-error" }, ngImport: i0, template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
82
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFormError, deps: [{ token: i1.BbFormSubmit, optional: true }, { token: i2.NgControl, optional: true }, { token: i3.BbFormSubmitter, optional: true }, { token: i4.BbExtraErrorControls, optional: true }, { token: ELEMENTS_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
83
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BbFormError, isStandalone: true, selector: "bb-form-error", inputs: { control: "control" }, outputs: { errorChange: "errorChange" }, host: { classAttribute: "bb-form-error" }, ngImport: i0, template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }, { kind: "pipe", type: BbLocalize, name: "bbLocalize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
84
84
  }
85
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFormError, decorators: [{
85
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFormError, decorators: [{
86
86
  type: Component,
87
87
  args: [{ selector: 'bb-form-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bb-form-error' }, preserveWhitespaces: false, standalone: true, imports: [AsyncPipe, BbLocalize], template: "@if (error$ | async; as error) {\n @if (error?.token | bbLocalize:{optional: true, data: error?.data}; as message) {\n <p class=\"bb-form-error-message\">{{ message }}</p>\n }\n}\n", styles: [".bb-form-error{display:block}.bb-form-error-message{color:#c23934;display:block;line-height:1.5;margin-top:.25rem;font-size:.8125rem}\n"] }]
88
88
  }], ctorParameters: () => [{ type: i1.BbFormSubmit, decorators: [{
@@ -3,10 +3,10 @@ import * as i0 from "@angular/core";
3
3
  export class BbFormGroup {
4
4
  // Inputs.
5
5
  grouped = false;
6
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFormGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.1.1", type: BbFormGroup, isStandalone: true, selector: "bb-form-group", inputs: { grouped: ["grouped", "grouped", booleanAttribute] }, host: { properties: { "class.grouped": "grouped" }, classAttribute: "bb-form-group" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-.75rem}.bb-form-group>*{margin-top:.75rem}.bb-form-group>*:not(:first-child){margin-left:.75rem}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:1.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
6
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFormGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
7
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.0", type: BbFormGroup, isStandalone: true, selector: "bb-form-group", inputs: { grouped: ["grouped", "grouped", booleanAttribute] }, host: { properties: { "class.grouped": "grouped" }, classAttribute: "bb-form-group" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bb-form-group{width:100%;display:flex;flex-wrap:wrap;margin-top:-.75rem}.bb-form-group>*{margin-top:.75rem}.bb-form-group>*:not(:first-child){margin-left:.75rem}.bb-form-group.start{justify-content:flex-start}.bb-form-group.end{justify-content:flex-end}.bb-form-group.vertical{flex-direction:column;justify-content:normal}.bb-form-group.vertical>*{margin-left:0}.bb-form-group.vertical.start{align-items:flex-start}.bb-form-group.vertical.end{align-items:flex-end}.bb-form-group.grouped{margin-bottom:1.5rem}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
8
8
  }
9
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbFormGroup, decorators: [{
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbFormGroup, decorators: [{
10
10
  type: Component,
11
11
  args: [{ selector: 'bb-form-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
12
12
  'class': 'bb-form-group',
@@ -65,10 +65,10 @@ export class BbIcon {
65
65
  warn = (content) => {
66
66
  return console && console.warn && console.warn(content);
67
67
  };
68
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbIcon, deps: [{ token: ELEMENTS_ICONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
69
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: BbIcon, isStandalone: true, selector: "bb-icon", inputs: { alt: "alt", size: ["size", "size", numberAttribute], ariaHidden: ["ariaHidden", "ariaHidden", booleanAttribute], src: "src" }, host: { properties: { "attr.aria-hidden": "ariaHidden", "style.width.rem": "size", "style.height.rem": "size", "style.min-width.rem": "size", "style.min-height.rem": "size", "style.font-size.rem": "size" }, classAttribute: "bb-icon" }, ngImport: i0, template: "@if (state$ | async; as data) {\n @switch (data?.type) {\n @case ('font') {\n <i [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n }\n @case ('image') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @default {\n <svg viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n }\n }\n}\n", styles: [".bb-icon{display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center}.bb-icon>i{font-size:inherit}.bb-icon>img,.bb-icon>svg{width:100%;height:100%;display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
68
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbIcon, deps: [{ token: ELEMENTS_ICONS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
69
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BbIcon, isStandalone: true, selector: "bb-icon", inputs: { alt: "alt", size: ["size", "size", numberAttribute], ariaHidden: ["ariaHidden", "ariaHidden", booleanAttribute], src: "src" }, host: { properties: { "attr.aria-hidden": "ariaHidden", "style.width.rem": "size", "style.height.rem": "size", "style.min-width.rem": "size", "style.min-height.rem": "size", "style.font-size.rem": "size" }, classAttribute: "bb-icon" }, ngImport: i0, template: "@if (state$ | async; as data) {\n @switch (data?.type) {\n @case ('font') {\n <i [attr.data-icon]=\"data?.attribute\"\n [class]=\"data?.className\">\n {{ data?.content }}\n </i>\n }\n @case ('image') {\n <img [src]=\"data?.src\"\n [alt]=\"alt\">\n }\n @default {\n <svg viewBox=\"0 0 1 1\">\n <rect x=\"0\" y=\"0\" width=\"1\" height=\"1\" fill=\"#c5c5c5\"></rect>\n </svg>\n }\n }\n}\n", styles: [".bb-icon{display:flex;-webkit-user-select:none;user-select:none;align-items:center;justify-content:center}.bb-icon>i{font-size:inherit}.bb-icon>img,.bb-icon>svg{width:100%;height:100%;display:flex}\n"], dependencies: [{ kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
70
70
  }
71
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbIcon, decorators: [{
71
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbIcon, decorators: [{
72
72
  type: Component,
73
73
  args: [{ selector: 'bb-icon', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
74
74
  'class': 'bb-icon',
@@ -76,8 +76,8 @@ export class BbImagePicker {
76
76
  setDisabledState(isDisabled) {
77
77
  this.disabled = isDisabled;
78
78
  }
79
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbImagePicker, deps: [{ token: i1.ImageConverter }], target: i0.ɵɵFactoryTarget.Component });
80
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: BbImagePicker, isStandalone: true, selector: "bb-image-picker", inputs: { label: "label", placeholder: "placeholder", styleDimensions: "styleDimensions", cropDimensions: "cropDimensions", disabled: ["disabled", "disabled", booleanAttribute], grouped: ["grouped", "grouped", booleanAttribute], value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.disabled": "disabled", "class.grouped": "grouped" }, classAttribute: "bb-image-picker" }, providers: [
79
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbImagePicker, deps: [{ token: i1.ImageConverter }], target: i0.ɵɵFactoryTarget.Component });
80
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.0", type: BbImagePicker, isStandalone: true, selector: "bb-image-picker", inputs: { label: "label", placeholder: "placeholder", styleDimensions: "styleDimensions", cropDimensions: "cropDimensions", disabled: ["disabled", "disabled", booleanAttribute], grouped: ["grouped", "grouped", booleanAttribute], value: "value" }, outputs: { valueChange: "valueChange" }, host: { properties: { "class.disabled": "disabled", "class.grouped": "grouped" }, classAttribute: "bb-image-picker" }, providers: [
81
81
  {
82
82
  provide: NG_VALUE_ACCESSOR,
83
83
  useExisting: forwardRef(() => BbImagePicker),
@@ -85,7 +85,7 @@ export class BbImagePicker {
85
85
  }
86
86
  ], viewQueries: [{ propertyName: "fileInput", first: true, predicate: ["fileInput"], descendants: true, static: true }], ngImport: i0, template: "<!-- The input that can open the file picker. -->\n<input #fileInput\n (change)=\"onFileChange($event)\"\n class=\"bb-image-picker-input\"\n type=\"file\"\n tabindex=\"-1\"\n accept=\"image/*\">\n\n<span [style.width]=\"styleDimensions?.width || '100%'\"\n [style.height]=\"styleDimensions?.height || '215px'\"\n [style.background-image]=\"image | async\"\n class=\"bb-image-input-image\">\n </span>\n\n@if (label; as labelText) {\n <button (click)=\"openFilePicker()\"\n bb-button\n class=\"bb-image-input-button\"\n type=\"button\">\n {{ labelText }}\n </button>\n}\n", styles: [".bb-image-picker{display:flex;align-items:center;flex-direction:column}.bb-image-picker.circle>.bb-image-input-image{border-radius:50%}.bb-image-picker.grouped{margin-bottom:1.5rem}.bb-image-picker.disabled{opacity:.5;cursor:default;-webkit-user-select:none;user-select:none;pointer-events:none}.bb-image-picker-input{opacity:0;z-index:-1;width:.1px;height:.1px;overflow:hidden;position:absolute}.bb-image-input-image{display:flex;cursor:default;position:relative;align-items:center;border-radius:.25rem;justify-content:center;background:#0003 url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7) center center/cover no-repeat}.bb-image-input-button{margin-top:.75rem}\n"], dependencies: [{ kind: "component", type: BbButton, selector: "button[bb-button]", inputs: ["disabled", "loading"], exportAs: ["bbButton"] }, { kind: "pipe", type: AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
87
87
  }
88
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: BbImagePicker, decorators: [{
88
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.0", ngImport: i0, type: BbImagePicker, decorators: [{
89
89
  type: Component,
90
90
  args: [{ selector: 'bb-image-picker', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
91
91
  'class': 'bb-image-picker',