@bravobit/bb-foundation 0.23.4 → 0.23.6

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 (187) hide show
  1. package/auth/lib/auth.service.d.ts +4 -3
  2. package/auth/lib/guards/anonymous.guard.d.ts +5 -4
  3. package/auth/lib/guards/authenticated.guard.d.ts +5 -4
  4. package/auth/lib/guards/permission.guard.d.ts +5 -4
  5. package/auth/lib/interfaces/config.interface.d.ts +8 -0
  6. package/controls/lib/control-error/control-error.utils.d.ts +3 -0
  7. package/controls/lib/controls.module.d.ts +4 -2
  8. package/controls/lib/form-control/form-control/form-control.component.d.ts +0 -2
  9. package/controls/lib/radio/radio-button/radio-button.component.d.ts +24 -0
  10. package/controls/lib/radio/radio-group/radio-group.component.d.ts +53 -0
  11. package/controls/lib/radio/radio.module.d.ts +11 -0
  12. package/controls/lib/toggle/toggle/toggle.component.d.ts +45 -0
  13. package/controls/lib/toggle/toggle-group/toggle-group.component.d.ts +23 -0
  14. package/controls/lib/toggle/toggle.module.d.ts +10 -0
  15. package/controls/public_api.d.ts +7 -0
  16. package/elements/lib/avatar/avatar.component.d.ts +1 -1
  17. package/esm2020/auth/lib/auth.interceptor.mjs +3 -3
  18. package/esm2020/auth/lib/auth.module.mjs +4 -4
  19. package/esm2020/auth/lib/auth.service.mjs +21 -6
  20. package/esm2020/auth/lib/directives/authenticated.directive.mjs +3 -3
  21. package/esm2020/auth/lib/directives/permission.directive.mjs +3 -3
  22. package/esm2020/auth/lib/guards/anonymous.guard.mjs +17 -7
  23. package/esm2020/auth/lib/guards/authenticated.guard.mjs +17 -7
  24. package/esm2020/auth/lib/guards/permission.guard.mjs +17 -7
  25. package/esm2020/auth/lib/interfaces/config.interface.mjs +3 -1
  26. package/esm2020/auth/lib/permissions/permissions.service.mjs +3 -3
  27. package/esm2020/collections/lib/collections.module.mjs +4 -4
  28. package/esm2020/collections/lib/components/collections-pager/collections-pager.component.mjs +3 -3
  29. package/esm2020/collections/lib/components/collections-viewer/collections-viewer.component.mjs +3 -3
  30. package/esm2020/collections/lib/components/collections.directive.mjs +12 -12
  31. package/esm2020/controls/lib/checkbox/checkbox/checkbox.component.mjs +22 -10
  32. package/esm2020/controls/lib/checkbox/checkbox-group/checkbox-group.component.mjs +13 -7
  33. package/esm2020/controls/lib/checkbox/checkbox.module.mjs +4 -4
  34. package/esm2020/controls/lib/control-error/control-error/control-error.component.mjs +3 -3
  35. package/esm2020/controls/lib/control-error/control-error-submit.directive.mjs +3 -3
  36. package/esm2020/controls/lib/control-error/control-error.module.mjs +4 -4
  37. package/esm2020/controls/lib/control-error/control-error.utils.mjs +20 -0
  38. package/esm2020/controls/lib/controls.module.mjs +19 -10
  39. package/esm2020/controls/lib/form-control/form-control/form-control.component.mjs +14 -30
  40. package/esm2020/controls/lib/form-control/form-control-addon/form-control-addon.component.mjs +3 -3
  41. package/esm2020/controls/lib/form-control/form-control-input.directive.mjs +3 -3
  42. package/esm2020/controls/lib/form-control/form-control.module.mjs +4 -4
  43. package/esm2020/controls/lib/radio/radio-button/radio-button.component.mjs +75 -0
  44. package/esm2020/controls/lib/radio/radio-group/radio-group.component.mjs +168 -0
  45. package/esm2020/controls/lib/radio/radio.module.mjs +21 -0
  46. package/esm2020/controls/lib/toggle/toggle/toggle.component.mjs +153 -0
  47. package/esm2020/controls/lib/toggle/toggle-group/toggle-group.component.mjs +62 -0
  48. package/esm2020/controls/lib/toggle/toggle.module.mjs +20 -0
  49. package/esm2020/controls/public_api.mjs +8 -1
  50. package/esm2020/dashboard/lib/dashboard/dashboard.component.mjs +3 -3
  51. package/esm2020/dashboard/lib/dashboard-header/dashboard-header.component.mjs +3 -3
  52. package/esm2020/dashboard/lib/dashboard-menu/dashboard-menu.component.mjs +3 -3
  53. package/esm2020/dashboard/lib/dashboard-menu-item/dashboard-menu-item.component.mjs +3 -3
  54. package/esm2020/dashboard/lib/dashboard-sidebar/dashboard-sidebar.component.mjs +3 -3
  55. package/esm2020/dashboard/lib/dashboard-sidebar-group/dashboard-sidebar-group.component.mjs +3 -3
  56. package/esm2020/dashboard/lib/dashboard-sidebar-item/dashboard-sidebar-item.component.mjs +3 -3
  57. package/esm2020/dashboard/lib/dashboard.module.mjs +4 -4
  58. package/esm2020/dialog/lib/dialog-actions/dialog-actions.component.mjs +3 -3
  59. package/esm2020/dialog/lib/dialog-confirm/dialog-confirm.component.mjs +3 -3
  60. package/esm2020/dialog/lib/dialog-container/dialog-container.component.mjs +3 -3
  61. package/esm2020/dialog/lib/dialog-header/dialog-header.component.mjs +3 -3
  62. package/esm2020/dialog/lib/dialog-link/dialog-link.component.mjs +3 -3
  63. package/esm2020/dialog/lib/dialog-modal/dialog-modal.component.mjs +3 -3
  64. package/esm2020/dialog/lib/dialog-overlay/dialog-overlay.component.mjs +3 -3
  65. package/esm2020/dialog/lib/dialog.insertion.mjs +3 -3
  66. package/esm2020/dialog/lib/dialog.module.mjs +4 -4
  67. package/esm2020/dialog/lib/dialog.service.mjs +3 -3
  68. package/esm2020/elements/lib/avatar/avatar.component.mjs +15 -13
  69. package/esm2020/elements/lib/button/button.component.mjs +6 -6
  70. package/esm2020/elements/lib/checkbox/checkbox.component.mjs +3 -3
  71. package/esm2020/elements/lib/date-picker/date-picker.component.mjs +3 -3
  72. package/esm2020/elements/lib/directives/addon.directive.mjs +6 -6
  73. package/esm2020/elements/lib/directives/form-submit.directive.mjs +3 -3
  74. package/esm2020/elements/lib/directives/form-submitter.directive.mjs +3 -3
  75. package/esm2020/elements/lib/directives/input.directive.mjs +6 -6
  76. package/esm2020/elements/lib/dropdown/dropdown.component.mjs +6 -6
  77. package/esm2020/elements/lib/elements.module.mjs +4 -4
  78. package/esm2020/elements/lib/file-picker/file-picker.component.mjs +3 -3
  79. package/esm2020/elements/lib/form-control/form-control.component.mjs +3 -3
  80. package/esm2020/elements/lib/form-error/form-error.component.mjs +3 -3
  81. package/esm2020/elements/lib/form-group/form-group.component.mjs +3 -3
  82. package/esm2020/elements/lib/icon/icon.component.mjs +3 -3
  83. package/esm2020/elements/lib/image-picker/image-picker.component.mjs +3 -3
  84. package/esm2020/elements/lib/pipes/file-image.pipe.mjs +3 -3
  85. package/esm2020/elements/lib/pipes/file-size.pipe.mjs +3 -3
  86. package/esm2020/elements/lib/pipes/relative-time.pipe.mjs +3 -3
  87. package/esm2020/elements/lib/spinner/spinner.component.mjs +3 -3
  88. package/esm2020/elements/lib/tag/tag.component.mjs +3 -3
  89. package/esm2020/http/lib/http.module.mjs +4 -4
  90. package/esm2020/http/lib/interceptors/base-url.interceptor.mjs +3 -3
  91. package/esm2020/http/lib/interceptors/error.interceptor.mjs +3 -3
  92. package/esm2020/lib/core/services/clipboard.service.mjs +3 -3
  93. package/esm2020/lib/core/services/exif.service.mjs +3 -3
  94. package/esm2020/lib/core/services/file-loader.service.mjs +3 -3
  95. package/esm2020/lib/core/services/image-converter.service.mjs +3 -3
  96. package/esm2020/lib/core/services/languages.service.mjs +3 -3
  97. package/esm2020/lib/core/services/network.service.mjs +3 -3
  98. package/esm2020/lib/core/services/patch.service.mjs +3 -3
  99. package/esm2020/localize/lib/dictionary/dictionary.class.mjs +2 -4
  100. package/esm2020/localize/lib/interfaces/config.interfaces.mjs +1 -1
  101. package/esm2020/localize/lib/localize.module.mjs +8 -5
  102. package/esm2020/localize/lib/localize.pipe.mjs +3 -3
  103. package/esm2020/localize/lib/localize.service.mjs +18 -5
  104. package/esm2020/localize/lib/views/localize-string/localize-string.component.mjs +3 -3
  105. package/esm2020/localize/lib/views/localize-template.directive.mjs +3 -3
  106. package/esm2020/masking/lib/directives/currency-mask.directive.mjs +3 -3
  107. package/esm2020/masking/lib/directives/date-mask.directive.mjs +3 -3
  108. package/esm2020/masking/lib/directives/input-mask.directive.mjs +3 -3
  109. package/esm2020/masking/lib/masking.module.mjs +4 -4
  110. package/esm2020/masking/lib/masking.service.mjs +3 -3
  111. package/esm2020/notifications/lib/notifications-item/notifications-item.component.mjs +3 -3
  112. package/esm2020/notifications/lib/notifications-list/notifications-list.component.mjs +3 -3
  113. package/esm2020/notifications/lib/notifications.module.mjs +4 -4
  114. package/esm2020/notifications/lib/notifications.service.mjs +3 -3
  115. package/esm2020/recaptcha/lib/recaptcha/recaptcha.component.mjs +3 -3
  116. package/esm2020/recaptcha/lib/recaptcha-loader.service.mjs +3 -3
  117. package/esm2020/recaptcha/lib/recaptcha.module.mjs +4 -4
  118. package/esm2020/storage/lib/storage.service.mjs +3 -3
  119. package/esm2020/table/lib/components/table/table.component.mjs +9 -9
  120. package/esm2020/table/lib/components/table-cell/table-cell.component.mjs +3 -3
  121. package/esm2020/table/lib/components/table-header-cell/table-header-cell.component.mjs +3 -3
  122. package/esm2020/table/lib/components/table-pager/table-pager.component.mjs +3 -3
  123. package/esm2020/table/lib/table.module.mjs +4 -4
  124. package/esm2020/theming/lib/themes/radio-button.theme.mjs +29 -0
  125. package/esm2020/theming/lib/themes/radio-group.theme.mjs +20 -0
  126. package/esm2020/theming/lib/themes/toggle-group.theme.mjs +17 -0
  127. package/esm2020/theming/lib/themes/toggle.theme.mjs +28 -0
  128. package/esm2020/theming/lib/theming.data.mjs +9 -1
  129. package/esm2020/theming/lib/theming.directive.mjs +3 -3
  130. package/esm2020/theming/lib/theming.interface.mjs +1 -1
  131. package/esm2020/theming/lib/theming.module.mjs +4 -4
  132. package/esm2020/utils/lib/directives/autosize.directive.mjs +3 -3
  133. package/esm2020/utils/lib/directives/focus-trap.directive.mjs +3 -3
  134. package/esm2020/utils/lib/directives/focus.directive.mjs +3 -3
  135. package/esm2020/utils/lib/directives/template.directive.mjs +3 -3
  136. package/esm2020/utils/lib/utils.module.mjs +4 -4
  137. package/fesm2015/bravobit-bb-foundation-auth.mjs +80 -38
  138. package/fesm2015/bravobit-bb-foundation-auth.mjs.map +1 -1
  139. package/fesm2015/bravobit-bb-foundation-collections.mjs +22 -22
  140. package/fesm2015/bravobit-bb-foundation-controls.mjs +677 -179
  141. package/fesm2015/bravobit-bb-foundation-controls.mjs.map +1 -1
  142. package/fesm2015/bravobit-bb-foundation-dashboard.mjs +25 -25
  143. package/fesm2015/bravobit-bb-foundation-dialog.mjs +31 -31
  144. package/fesm2015/bravobit-bb-foundation-elements.mjs +87 -85
  145. package/fesm2015/bravobit-bb-foundation-elements.mjs.map +1 -1
  146. package/fesm2015/bravobit-bb-foundation-http.mjs +10 -10
  147. package/fesm2015/bravobit-bb-foundation-localize.mjs +38 -22
  148. package/fesm2015/bravobit-bb-foundation-localize.mjs.map +1 -1
  149. package/fesm2015/bravobit-bb-foundation-masking.mjs +16 -16
  150. package/fesm2015/bravobit-bb-foundation-notifications.mjs +13 -13
  151. package/fesm2015/bravobit-bb-foundation-recaptcha.mjs +10 -10
  152. package/fesm2015/bravobit-bb-foundation-storage.mjs +3 -3
  153. package/fesm2015/bravobit-bb-foundation-table.mjs +22 -22
  154. package/fesm2015/bravobit-bb-foundation-theming.mjs +102 -7
  155. package/fesm2015/bravobit-bb-foundation-theming.mjs.map +1 -1
  156. package/fesm2015/bravobit-bb-foundation-utils.mjs +16 -16
  157. package/fesm2015/bravobit-bb-foundation.mjs +21 -21
  158. package/fesm2020/bravobit-bb-foundation-auth.mjs +80 -38
  159. package/fesm2020/bravobit-bb-foundation-auth.mjs.map +1 -1
  160. package/fesm2020/bravobit-bb-foundation-collections.mjs +22 -22
  161. package/fesm2020/bravobit-bb-foundation-controls.mjs +663 -173
  162. package/fesm2020/bravobit-bb-foundation-controls.mjs.map +1 -1
  163. package/fesm2020/bravobit-bb-foundation-dashboard.mjs +25 -25
  164. package/fesm2020/bravobit-bb-foundation-dialog.mjs +31 -31
  165. package/fesm2020/bravobit-bb-foundation-elements.mjs +87 -85
  166. package/fesm2020/bravobit-bb-foundation-elements.mjs.map +1 -1
  167. package/fesm2020/bravobit-bb-foundation-http.mjs +10 -10
  168. package/fesm2020/bravobit-bb-foundation-localize.mjs +34 -20
  169. package/fesm2020/bravobit-bb-foundation-localize.mjs.map +1 -1
  170. package/fesm2020/bravobit-bb-foundation-masking.mjs +16 -16
  171. package/fesm2020/bravobit-bb-foundation-notifications.mjs +13 -13
  172. package/fesm2020/bravobit-bb-foundation-recaptcha.mjs +10 -10
  173. package/fesm2020/bravobit-bb-foundation-storage.mjs +3 -3
  174. package/fesm2020/bravobit-bb-foundation-table.mjs +22 -22
  175. package/fesm2020/bravobit-bb-foundation-theming.mjs +102 -7
  176. package/fesm2020/bravobit-bb-foundation-theming.mjs.map +1 -1
  177. package/fesm2020/bravobit-bb-foundation-utils.mjs +16 -16
  178. package/fesm2020/bravobit-bb-foundation.mjs +21 -21
  179. package/localize/lib/interfaces/config.interfaces.d.ts +1 -0
  180. package/localize/lib/localize.module.d.ts +1 -1
  181. package/localize/lib/localize.service.d.ts +2 -1
  182. package/package.json +1 -1
  183. package/theming/lib/themes/radio-button.theme.d.ts +26 -0
  184. package/theming/lib/themes/radio-group.theme.d.ts +17 -0
  185. package/theming/lib/themes/toggle-group.theme.d.ts +16 -0
  186. package/theming/lib/themes/toggle.theme.d.ts +25 -0
  187. package/theming/lib/theming.interface.d.ts +8 -0
@@ -13,7 +13,9 @@ export class BbiCheckboxGroup {
13
13
  this._inline = false;
14
14
  }
15
15
  // Grouped.
16
- get grouped() { return this._grouped; }
16
+ get grouped() {
17
+ return this._grouped;
18
+ }
17
19
  set grouped(value) {
18
20
  const newValue = coerceBooleanProperty(value);
19
21
  if (newValue !== this.grouped) {
@@ -22,7 +24,9 @@ export class BbiCheckboxGroup {
22
24
  }
23
25
  }
24
26
  // Required.
25
- get required() { return this._required; }
27
+ get required() {
28
+ return this._required;
29
+ }
26
30
  set required(value) {
27
31
  const newValue = coerceBooleanProperty(value);
28
32
  if (newValue !== this.required) {
@@ -31,7 +35,9 @@ export class BbiCheckboxGroup {
31
35
  }
32
36
  }
33
37
  // Inline.
34
- get inline() { return this._inline; }
38
+ get inline() {
39
+ return this._inline;
40
+ }
35
41
  set inline(value) {
36
42
  const newValue = coerceBooleanProperty(value);
37
43
  if (newValue !== this.inline) {
@@ -40,9 +46,9 @@ export class BbiCheckboxGroup {
40
46
  }
41
47
  }
42
48
  }
43
- BbiCheckboxGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiCheckboxGroup, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
44
- BbiCheckboxGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbiCheckboxGroup, selector: "bbi-checkbox-group", inputs: { label: "label", grouped: "grouped", required: "required", inline: "inline" }, host: { properties: { "class.grouped": "grouped", "class.required": "required", "class.inline": "inline" }, classAttribute: "bbi-checkbox-group" }, ngImport: i0, template: "<label *ngIf=\"label as labelContent\"\n class=\"bbi-checkbox-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-checkbox-group-items\">\n <ng-content select=\"bbi-checkbox\"></ng-content>\n</div>\n", styles: [".bbi-checkbox-group{display:block}.bbi-checkbox-group.grouped{margin-bottom:var(--checkbox-group-grouping, 20px)}.bbi-checkbox-group.required>.bbi-checkbox-group-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bbi-checkbox-group-label{border:0;padding:0;font-family:inherit;display:inline-block;box-sizing:border-box;vertical-align:initial;color:var(--checkbox-group-label-color, #525252);font-size:var(--checkbox-group-label-font-size, 14px);margin-bottom:var(--checkbox-group-label-offset, 4px);line-height:var(--checkbox-group-label-line-height, 1.33);font-weight:var(--checkbox-group-label-font-weight, 400)}.bbi-checkbox-group-items{display:flex;flex-direction:column}.bbi-checkbox-group-items:not(:empty){margin-bottom:-var(--checkbox-group-item-spacing-vertical,4px)}.bbi-checkbox-group-items>*{margin-bottom:var(--checkbox-group-item-spacing-vertical, 4px)}@media only screen and (min-width: 768px){.bbi-checkbox-group.inline>.bbi-checkbox-group-items{flex-wrap:wrap;flex-direction:row}.bbi-checkbox-group.inline>.bbi-checkbox-group-items>*:not(:last-child){margin-right:var(--checkbox-group-item-spacing-horizontal, 10px)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
45
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiCheckboxGroup, decorators: [{
49
+ BbiCheckboxGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiCheckboxGroup, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
50
+ BbiCheckboxGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BbiCheckboxGroup, selector: "bbi-checkbox-group", inputs: { label: "label", grouped: "grouped", required: "required", inline: "inline" }, host: { properties: { "class.grouped": "grouped", "class.required": "required", "class.inline": "inline" }, classAttribute: "bbi-checkbox-group" }, ngImport: i0, template: "<label *ngIf=\"label as labelContent\"\n class=\"bbi-checkbox-group-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-checkbox-group-items\">\n <ng-content select=\"bbi-checkbox\"></ng-content>\n</div>\n", styles: [".bbi-checkbox-group{display:block}.bbi-checkbox-group.grouped{margin-bottom:var(--checkbox-group-grouping, 20px)}.bbi-checkbox-group.required>.bbi-checkbox-group-label:after{content:\"*\";color:#c23934;font-size:12px;line-height:1.5}.bbi-checkbox-group-label{border:0;padding:0;font-family:inherit;display:inline-block;box-sizing:border-box;vertical-align:initial;color:var(--checkbox-group-label-color, #525252);font-size:var(--checkbox-group-label-font-size, 14px);margin-bottom:var(--checkbox-group-label-offset, 4px);line-height:var(--checkbox-group-label-line-height, 1.33);font-weight:var(--checkbox-group-label-font-weight, 400)}.bbi-checkbox-group-items{display:flex;flex-direction:column}.bbi-checkbox-group-items:not(:empty){margin-bottom:-var(--checkbox-group-item-spacing-vertical,4px)}.bbi-checkbox-group-items>*{margin-bottom:var(--checkbox-group-item-spacing-vertical, 4px)}@media only screen and (min-width: 768px){.bbi-checkbox-group.inline>.bbi-checkbox-group-items{flex-wrap:wrap;flex-direction:row}.bbi-checkbox-group.inline>.bbi-checkbox-group-items>*:not(:last-child){margin-right:var(--checkbox-group-item-spacing-horizontal, 10px)}}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
51
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiCheckboxGroup, decorators: [{
46
52
  type: Component,
47
53
  args: [{ selector: 'bbi-checkbox-group', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
48
54
  'class': 'bbi-checkbox-group',
@@ -59,4 +65,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
59
65
  }], inline: [{
60
66
  type: Input
61
67
  }] } });
62
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LWdyb3VwL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFnQjFFLE1BQU0sT0FBTyxnQkFBZ0I7SUErQ3pCLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBN0N6RCxVQUFVO1FBQ0QsVUFBSyxHQUFvQyxJQUFJLENBQUM7UUFjL0MsYUFBUSxHQUFZLEtBQUssQ0FBQztRQWMxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBYzNCLFlBQU8sR0FBWSxLQUFLLENBQUM7SUFHakMsQ0FBQztJQTNDRCxXQUFXO0lBQ1gsSUFDSSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVoRCxJQUFJLE9BQU8sQ0FBQyxLQUFtQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFJRCxZQUFZO0lBQ1osSUFDSSxRQUFRLEtBQWMsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUVsRCxJQUFJLFFBQVEsQ0FBQyxLQUFtQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFJRCxVQUFVO0lBQ1YsSUFDSSxNQUFNLEtBQWMsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUU5QyxJQUFJLE1BQU0sQ0FBQyxLQUFtQjtRQUMxQixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7OzZHQTNDUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixzU0NqQjdCLDRSQVFBOzJGRFNhLGdCQUFnQjtrQkFkNUIsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixPQUFPLEVBQUUsb0JBQW9CO3dCQUM3QixpQkFBaUIsRUFBRSxTQUFTO3dCQUM1QixrQkFBa0IsRUFBRSxVQUFVO3dCQUM5QixnQkFBZ0IsRUFBRSxRQUFRO3FCQUM3Qix1QkFDb0IsS0FBSzt3R0FLakIsS0FBSztzQkFBYixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkFlRixRQUFRO3NCQURYLEtBQUs7Z0JBZUYsTUFBTTtzQkFEVCxLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgSW5wdXQsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiaS1jaGVja2JveC1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9jaGVja2JveC1ncm91cC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmJpLWNoZWNrYm94LWdyb3VwJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5yZXF1aXJlZF0nOiAncmVxdWlyZWQnLFxuICAgICAgICAnW2NsYXNzLmlubGluZV0nOiAnaW5saW5lJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmJpQ2hlY2tib3hHcm91cCB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZ3wgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gR3JvdXBlZC5cbiAgICBASW5wdXQoKVxuICAgIGdldCBncm91cGVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fZ3JvdXBlZDsgfVxuXG4gICAgc2V0IGdyb3VwZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5ncm91cGVkKSB7XG4gICAgICAgICAgICB0aGlzLl9ncm91cGVkID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2dyb3VwZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIFJlcXVpcmVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5fcmVxdWlyZWQ7IH1cblxuICAgIHNldCByZXF1aXJlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICB0aGlzLl9yZXF1aXJlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9yZXF1aXJlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gSW5saW5lLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlubGluZSgpOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuX2lubGluZTsgfVxuXG4gICAgc2V0IGlubGluZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgdGhpcy5faW5saW5lID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2lubGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgfVxuXG4gICAgLy8gUmVxdWlyZWQgc28gdGhhdCB0aGUgdGVtcGxhdGUgdHlwZSBjaGVja2VyIGNhbiBpbmZlciB0aGUgdHlwZSBvZiB0aGUgY29lcmNlZCBpbnB1dHMuXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JvdXBlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbmxpbmU6IEJvb2xlYW5JbnB1dDtcblxufVxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgYXMgbGFiZWxDb250ZW50XCJcbiAgICAgICBjbGFzcz1cImJiaS1jaGVja2JveC1ncm91cC1sYWJlbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuPC9sYWJlbD5cblxuPGRpdiBjbGFzcz1cImJiaS1jaGVja2JveC1ncm91cC1pdGVtc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJiaS1jaGVja2JveFwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
68
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL2NoZWNrYm94L2NoZWNrYm94LWdyb3VwL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9jaGVja2JveC9jaGVja2JveC1ncm91cC9jaGVja2JveC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsdUJBQXVCLEVBQXFCLFNBQVMsRUFBRSxLQUFLLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFDM0gsT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7Ozs7QUFnQjFFLE1BQU0sT0FBTyxnQkFBZ0I7SUFxRHpCLFlBQW9CLGtCQUFxQztRQUFyQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBbkR6RCxVQUFVO1FBQ0QsVUFBSyxHQUFxQyxJQUFJLENBQUM7UUFnQmhELGFBQVEsR0FBWSxLQUFLLENBQUM7UUFnQjFCLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFnQjNCLFlBQU8sR0FBWSxLQUFLLENBQUM7SUFHakMsQ0FBQztJQWpERCxXQUFXO0lBQ1gsSUFDSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxLQUFtQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFJRCxZQUFZO0lBQ1osSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxLQUFtQjtRQUM1QixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQzVCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1lBQzFCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFJRCxVQUFVO0lBQ1YsSUFDSSxNQUFNO1FBQ04sT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxJQUFJLE1BQU0sQ0FBQyxLQUFtQjtRQUMxQixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQzFCLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1lBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7OzZHQWpEUSxnQkFBZ0I7aUdBQWhCLGdCQUFnQixzU0NqQjdCLDRSQVFBOzJGRFNhLGdCQUFnQjtrQkFkNUIsU0FBUzsrQkFDSSxvQkFBb0IsbUJBR2IsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixPQUFPLEVBQUUsb0JBQW9CO3dCQUM3QixpQkFBaUIsRUFBRSxTQUFTO3dCQUM1QixrQkFBa0IsRUFBRSxVQUFVO3dCQUM5QixnQkFBZ0IsRUFBRSxRQUFRO3FCQUM3Qix1QkFDb0IsS0FBSzt3R0FLakIsS0FBSztzQkFBYixLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkFpQkYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixNQUFNO3NCQURULEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBJbnB1dCwgVGVtcGxhdGVSZWYsIFZpZXdFbmNhcHN1bGF0aW9ufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmJpLWNoZWNrYm94LWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJy4vY2hlY2tib3gtZ3JvdXAuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2NoZWNrYm94LWdyb3VwLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYmktY2hlY2tib3gtZ3JvdXAnLFxuICAgICAgICAnW2NsYXNzLmdyb3VwZWRdJzogJ2dyb3VwZWQnLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdyZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MuaW5saW5lXSc6ICdpbmxpbmUnXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYmlDaGVja2JveEdyb3VwIHtcblxuICAgIC8vIElucHV0cy5cbiAgICBASW5wdXQoKSBsYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gR3JvdXBlZC5cbiAgICBASW5wdXQoKVxuICAgIGdldCBncm91cGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBlZDtcbiAgICB9XG5cbiAgICBzZXQgZ3JvdXBlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmdyb3VwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgLy8gUmVxdWlyZWQuXG4gICAgQElucHV0KClcbiAgICBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXF1aXJlZDtcbiAgICB9XG5cbiAgICBzZXQgcmVxdWlyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5yZXF1aXJlZCkge1xuICAgICAgICAgICAgdGhpcy5fcmVxdWlyZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfcmVxdWlyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIElubGluZS5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpbmxpbmUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pbmxpbmU7XG4gICAgfVxuXG4gICAgc2V0IGlubGluZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmlubGluZSkge1xuICAgICAgICAgICAgdGhpcy5faW5saW5lID0gbmV3VmFsdWU7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX2lubGluZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgfVxuXG4gICAgLy8gUmVxdWlyZWQgc28gdGhhdCB0aGUgdGVtcGxhdGUgdHlwZSBjaGVja2VyIGNhbiBpbmZlciB0aGUgdHlwZSBvZiB0aGUgY29lcmNlZCBpbnB1dHMuXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JvdXBlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9yZXF1aXJlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9pbmxpbmU6IEJvb2xlYW5JbnB1dDtcblxufVxuIiwiPGxhYmVsICpuZ0lmPVwibGFiZWwgYXMgbGFiZWxDb250ZW50XCJcbiAgICAgICBjbGFzcz1cImJiaS1jaGVja2JveC1ncm91cC1sYWJlbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuPC9sYWJlbD5cblxuPGRpdiBjbGFzcz1cImJiaS1jaGVja2JveC1ncm91cC1pdGVtc1wiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImJiaS1jaGVja2JveFwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuIl19
@@ -6,10 +6,10 @@ import { NgModule } from '@angular/core';
6
6
  import * as i0 from "@angular/core";
7
7
  export class CheckboxModule {
8
8
  }
9
- CheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
- CheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: CheckboxModule, declarations: [BbiCheckbox, BbiCheckboxGroup], imports: [CommonModule, UtilsModule], exports: [BbiCheckbox, BbiCheckboxGroup] });
11
- CheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: CheckboxModule, imports: [CommonModule, UtilsModule] });
12
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: CheckboxModule, decorators: [{
9
+ CheckboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: CheckboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
10
+ CheckboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: CheckboxModule, declarations: [BbiCheckbox, BbiCheckboxGroup], imports: [CommonModule, UtilsModule], exports: [BbiCheckbox, BbiCheckboxGroup] });
11
+ CheckboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: CheckboxModule, imports: [CommonModule, UtilsModule] });
12
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: CheckboxModule, decorators: [{
13
13
  type: NgModule,
14
14
  args: [{
15
15
  imports: [CommonModule, UtilsModule],
@@ -42,9 +42,9 @@ export class BbiControlError {
42
42
  : data?.token;
43
43
  }
44
44
  }
45
- BbiControlError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiControlError, deps: [{ token: i1.Localize, optional: true }, { token: BBI_CONTROL_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
46
- BbiControlError.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbiControlError, selector: "bbi-control-error", inputs: { errors: "errors" }, host: { properties: { "@errorAnimation": "this.animation" }, classAttribute: "bbi-control-error" }, ngImport: i0, template: "{{ error ?? '...' }}\n", styles: [".bbi-control-error{color:var(--control-error-color, var(--error-color, #bd322a));display:block;margin-top:var(--control-error-spacing, 4px);font-size:var(--control-error-font-size, 13px);font-weight:var(--control-error-font-weight, 400);line-height:var(--control-error-line-height, 1.5)}\n"], animations: [controlErrorAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
47
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiControlError, decorators: [{
45
+ BbiControlError.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiControlError, deps: [{ token: i1.Localize, optional: true }, { token: BBI_CONTROL_ERRORS, optional: true }], target: i0.ɵɵFactoryTarget.Component });
46
+ BbiControlError.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BbiControlError, selector: "bbi-control-error", inputs: { errors: "errors" }, host: { properties: { "@errorAnimation": "this.animation" }, classAttribute: "bbi-control-error" }, ngImport: i0, template: "{{ error ?? '...' }}\n", styles: [".bbi-control-error{color:var(--control-error-color, var(--error-color, #bd322a));display:block;margin-top:var(--control-error-spacing, 4px);font-size:var(--control-error-font-size, 13px);font-weight:var(--control-error-font-weight, 400);line-height:var(--control-error-line-height, 1.5)}\n"], animations: [controlErrorAnimation], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
47
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiControlError, decorators: [{
48
48
  type: Component,
49
49
  args: [{ selector: 'bbi-control-error', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: { 'class': 'bbi-control-error' }, preserveWhitespaces: false, animations: [controlErrorAnimation], template: "{{ error ?? '...' }}\n", styles: [".bbi-control-error{color:var(--control-error-color, var(--error-color, #bd322a));display:block;margin-top:var(--control-error-spacing, 4px);font-size:var(--control-error-font-size, 13px);font-weight:var(--control-error-font-weight, 400);line-height:var(--control-error-line-height, 1.5)}\n"] }]
50
50
  }], ctorParameters: function () { return [{ type: i1.Localize, decorators: [{
@@ -35,9 +35,9 @@ export class BbiControlErrorSubmit {
35
35
  this._subscription.add(subscription);
36
36
  }
37
37
  }
38
- BbiControlErrorSubmit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiControlErrorSubmit, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
39
- BbiControlErrorSubmit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BbiControlErrorSubmit, selector: "form", exportAs: ["bbiControlErrorSubmit"], ngImport: i0 });
40
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiControlErrorSubmit, decorators: [{
38
+ BbiControlErrorSubmit.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiControlErrorSubmit, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive });
39
+ BbiControlErrorSubmit.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BbiControlErrorSubmit, selector: "form", exportAs: ["bbiControlErrorSubmit"], ngImport: i0 });
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiControlErrorSubmit, decorators: [{
41
41
  type: Directive,
42
42
  args: [{
43
43
  selector: 'form',
@@ -5,10 +5,10 @@ import { NgModule } from '@angular/core';
5
5
  import * as i0 from "@angular/core";
6
6
  export class ControlErrorModule {
7
7
  }
8
- ControlErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
- ControlErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: ControlErrorModule, declarations: [BbiControlError, BbiControlErrorSubmit], imports: [CommonModule], exports: [BbiControlError, BbiControlErrorSubmit] });
10
- ControlErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlErrorModule, imports: [CommonModule] });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlErrorModule, decorators: [{
8
+ ControlErrorModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ControlErrorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
9
+ ControlErrorModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: ControlErrorModule, declarations: [BbiControlError, BbiControlErrorSubmit], imports: [CommonModule], exports: [BbiControlError, BbiControlErrorSubmit] });
10
+ ControlErrorModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ControlErrorModule, imports: [CommonModule] });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ControlErrorModule, decorators: [{
12
12
  type: NgModule,
13
13
  args: [{
14
14
  imports: [CommonModule],
@@ -0,0 +1,20 @@
1
+ export function shouldShowErrors(mode, control, submitted, focused, readonly) {
2
+ if (mode === 'hidden' || readonly || control?.disabled) {
3
+ return false;
4
+ }
5
+ // When submitted always show the errors.
6
+ if (submitted && !focused) {
7
+ return true;
8
+ }
9
+ // We want to show changes even when the user is focused.
10
+ if (mode === 'changes') {
11
+ return control?.dirty ?? false;
12
+ }
13
+ // On blur show the error.
14
+ if (mode === 'blur' && !focused) {
15
+ return control?.touched ?? false;
16
+ }
17
+ // Must not show the errors.
18
+ return false;
19
+ }
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbC1lcnJvci51dGlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsTUFBTSxVQUFVLGdCQUFnQixDQUFDLElBQXNCLEVBQUUsT0FBa0IsRUFBRSxTQUFrQixFQUFFLE9BQWdCLEVBQUUsUUFBaUI7SUFDaEksSUFBSSxJQUFJLEtBQUssUUFBUSxJQUFJLFFBQVEsSUFBSSxPQUFPLEVBQUUsUUFBUSxFQUFFO1FBQ3BELE9BQU8sS0FBSyxDQUFDO0tBQ2hCO0lBRUQseUNBQXlDO0lBQ3pDLElBQUksU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0tBQ2Y7SUFFRCx5REFBeUQ7SUFDekQsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO1FBQ3BCLE9BQU8sT0FBTyxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUM7S0FDbEM7SUFFRCwwQkFBMEI7SUFDMUIsSUFBSSxJQUFJLEtBQUssTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFO1FBQzdCLE9BQU8sT0FBTyxFQUFFLE9BQU8sSUFBSSxLQUFLLENBQUM7S0FDcEM7SUFFRCw0QkFBNEI7SUFDNUIsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29udHJvbEVycm9yTW9kZX0gZnJvbSAnLi9jb250cm9sLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQge05nQ29udHJvbH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2hvdWxkU2hvd0Vycm9ycyhtb2RlOiBDb250cm9sRXJyb3JNb2RlLCBjb250cm9sOiBOZ0NvbnRyb2wsIHN1Ym1pdHRlZDogYm9vbGVhbiwgZm9jdXNlZDogYm9vbGVhbiwgcmVhZG9ubHk6IGJvb2xlYW4pIHtcbiAgICBpZiAobW9kZSA9PT0gJ2hpZGRlbicgfHwgcmVhZG9ubHkgfHwgY29udHJvbD8uZGlzYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFdoZW4gc3VibWl0dGVkIGFsd2F5cyBzaG93IHRoZSBlcnJvcnMuXG4gICAgaWYgKHN1Ym1pdHRlZCAmJiAhZm9jdXNlZCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBXZSB3YW50IHRvIHNob3cgY2hhbmdlcyBldmVuIHdoZW4gdGhlIHVzZXIgaXMgZm9jdXNlZC5cbiAgICBpZiAobW9kZSA9PT0gJ2NoYW5nZXMnKSB7XG4gICAgICAgIHJldHVybiBjb250cm9sPy5kaXJ0eSA/PyBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBPbiBibHVyIHNob3cgdGhlIGVycm9yLlxuICAgIGlmIChtb2RlID09PSAnYmx1cicgJiYgIWZvY3VzZWQpIHtcbiAgICAgICAgcmV0dXJuIGNvbnRyb2w/LnRvdWNoZWQgPz8gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gTXVzdCBub3Qgc2hvdyB0aGUgZXJyb3JzLlxuICAgIHJldHVybiBmYWxzZTtcbn1cbiJdfQ==
@@ -4,6 +4,8 @@ import { ControlErrorModule } from './control-error/control-error.module';
4
4
  import { FormControlModule } from './form-control/form-control.module';
5
5
  import { NgModule } from '@angular/core';
6
6
  import { CheckboxModule } from './checkbox/checkbox.module';
7
+ import { ToggleModule } from './toggle/toggle.module';
8
+ import { RadioModule } from './radio/radio.module';
7
9
  import * as i0 from "@angular/core";
8
10
  export class ControlsModule {
9
11
  static forRoot(config) {
@@ -14,40 +16,47 @@ export class ControlsModule {
14
16
  provide: BBI_CONTROL_ERRORS,
15
17
  useValue: { ...controlErrorDefaults, ...(config?.errors ?? {}) },
16
18
  multi: true
17
- },
18
- {
19
- provide: null,
20
- useFactory: () => '',
21
- multi: true
22
19
  }
23
20
  ]
24
21
  };
25
22
  }
26
23
  }
27
- ControlsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
28
- ControlsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
24
+ ControlsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ControlsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
25
+ ControlsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
29
26
  CheckboxModule,
27
+ RadioModule,
28
+ ToggleModule,
30
29
  ControlErrorModule], exports: [FormControlModule,
31
30
  CheckboxModule,
31
+ RadioModule,
32
+ ToggleModule,
32
33
  ControlErrorModule] });
33
- ControlsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
34
+ ControlsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ControlsModule, imports: [FormControlModule,
34
35
  CheckboxModule,
36
+ RadioModule,
37
+ ToggleModule,
35
38
  ControlErrorModule, FormControlModule,
36
39
  CheckboxModule,
40
+ RadioModule,
41
+ ToggleModule,
37
42
  ControlErrorModule] });
38
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: ControlsModule, decorators: [{
43
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: ControlsModule, decorators: [{
39
44
  type: NgModule,
40
45
  args: [{
41
46
  imports: [
42
47
  FormControlModule,
43
48
  CheckboxModule,
49
+ RadioModule,
50
+ ToggleModule,
44
51
  ControlErrorModule
45
52
  ],
46
53
  exports: [
47
54
  FormControlModule,
48
55
  CheckboxModule,
56
+ RadioModule,
57
+ ToggleModule,
49
58
  ControlErrorModule
50
59
  ]
51
60
  }]
52
61
  }] });
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL2NvbnRyb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7O0FBZTFELE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBdUI7UUFDbEMsT0FBTztZQUNILFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixRQUFRLEVBQUUsRUFBQyxHQUFHLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFDO29CQUM5RCxLQUFLLEVBQUUsSUFBSTtpQkFDZDtnQkFDRDtvQkFDSSxPQUFPLEVBQUUsSUFBSTtvQkFDYixVQUFVLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRTtvQkFDcEIsS0FBSyxFQUFFLElBQUk7aUJBQ2Q7YUFDSjtTQUNKLENBQUM7SUFDTixDQUFDOzsyR0FsQlEsY0FBYzs0R0FBZCxjQUFjLFlBVm5CLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCLGFBR2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2Qsa0JBQWtCOzRHQUdiLGNBQWMsWUFWbkIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxrQkFBa0IsRUFHbEIsaUJBQWlCO1FBQ2pCLGNBQWM7UUFDZCxrQkFBa0I7MkZBR2IsY0FBYztrQkFaMUIsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLGtCQUFrQjtxQkFDckI7b0JBQ0QsT0FBTyxFQUFFO3dCQUNMLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxrQkFBa0I7cUJBQ3JCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb250cm9sRXJyb3JEZWZhdWx0c30gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuZGVmYXVsdHMnO1xuaW1wb3J0IHtCQklfQ09OVFJPTF9FUlJPUlN9IGZyb20gJy4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQge0NvbnRyb2xFcnJvck1vZHVsZX0gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IubW9kdWxlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2xNb2R1bGV9IGZyb20gJy4vZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5tb2R1bGUnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoZWNrYm94TW9kdWxlfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5pbXBvcnQge0NvbnRyb2xzQ29uZmlnfSBmcm9tICcuL2NvbnRyb2xzLmludGVyZmFjZXMnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRyb2xzTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IENvbnRyb2xzQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb250cm9sc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IENvbnRyb2xzTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBCQklfQ09OVFJPTF9FUlJPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB7Li4uY29udHJvbEVycm9yRGVmYXVsdHMsIC4uLihjb25maWc/LmVycm9ycyA/PyB7fSl9LFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICB1c2VGYWN0b3J5OiAoKSA9PiAnJyxcbiAgICAgICAgICAgICAgICAgICAgbXVsdGk6IHRydWVcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH07XG4gICAgfVxuXG59XG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJvbHMubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmItZm91bmRhdGlvbi9jb250cm9scy9zcmMvbGliL2NvbnRyb2xzLm1vZHVsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx3Q0FBd0MsQ0FBQztBQUM1RSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUMzRSxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUN4RSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQztBQUNyRSxPQUFPLEVBQXNCLFFBQVEsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFMUQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQzs7QUFrQmpELE1BQU0sT0FBTyxjQUFjO0lBRXZCLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBdUI7UUFDbEMsT0FBTztZQUNILFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRTtnQkFDUDtvQkFDSSxPQUFPLEVBQUUsa0JBQWtCO29CQUMzQixRQUFRLEVBQUUsRUFBQyxHQUFHLG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxNQUFNLEVBQUUsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFDO29CQUM5RCxLQUFLLEVBQUUsSUFBSTtpQkFDZDthQUNKO1NBQ0osQ0FBQztJQUNOLENBQUM7OzJHQWJRLGNBQWM7NEdBQWQsY0FBYyxZQWRuQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLFdBQVc7UUFDWCxZQUFZO1FBQ1osa0JBQWtCLGFBR2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsV0FBVztRQUNYLFlBQVk7UUFDWixrQkFBa0I7NEdBR2IsY0FBYyxZQWRuQixpQkFBaUI7UUFDakIsY0FBYztRQUNkLFdBQVc7UUFDWCxZQUFZO1FBQ1osa0JBQWtCLEVBR2xCLGlCQUFpQjtRQUNqQixjQUFjO1FBQ2QsV0FBVztRQUNYLFlBQVk7UUFDWixrQkFBa0I7MkZBR2IsY0FBYztrQkFoQjFCLFFBQVE7bUJBQUM7b0JBQ04sT0FBTyxFQUFFO3dCQUNMLGlCQUFpQjt3QkFDakIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLFlBQVk7d0JBQ1osa0JBQWtCO3FCQUNyQjtvQkFDRCxPQUFPLEVBQUU7d0JBQ0wsaUJBQWlCO3dCQUNqQixjQUFjO3dCQUNkLFdBQVc7d0JBQ1gsWUFBWTt3QkFDWixrQkFBa0I7cUJBQ3JCO2lCQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtjb250cm9sRXJyb3JEZWZhdWx0c30gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuZGVmYXVsdHMnO1xuaW1wb3J0IHtCQklfQ09OVFJPTF9FUlJPUlN9IGZyb20gJy4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLmludGVyZmFjZSc7XG5pbXBvcnQge0NvbnRyb2xFcnJvck1vZHVsZX0gZnJvbSAnLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IubW9kdWxlJztcbmltcG9ydCB7Rm9ybUNvbnRyb2xNb2R1bGV9IGZyb20gJy4vZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5tb2R1bGUnO1xuaW1wb3J0IHtNb2R1bGVXaXRoUHJvdmlkZXJzLCBOZ01vZHVsZX0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NoZWNrYm94TW9kdWxlfSBmcm9tICcuL2NoZWNrYm94L2NoZWNrYm94Lm1vZHVsZSc7XG5pbXBvcnQge0NvbnRyb2xzQ29uZmlnfSBmcm9tICcuL2NvbnRyb2xzLmludGVyZmFjZXMnO1xuaW1wb3J0IHtUb2dnbGVNb2R1bGV9IGZyb20gJy4vdG9nZ2xlL3RvZ2dsZS5tb2R1bGUnO1xuaW1wb3J0IHtSYWRpb01vZHVsZX0gZnJvbSAnLi9yYWRpby9yYWRpby5tb2R1bGUnO1xuXG5ATmdNb2R1bGUoe1xuICAgIGltcG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBSYWRpb01vZHVsZSxcbiAgICAgICAgVG9nZ2xlTW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtcbiAgICAgICAgRm9ybUNvbnRyb2xNb2R1bGUsXG4gICAgICAgIENoZWNrYm94TW9kdWxlLFxuICAgICAgICBSYWRpb01vZHVsZSxcbiAgICAgICAgVG9nZ2xlTW9kdWxlLFxuICAgICAgICBDb250cm9sRXJyb3JNb2R1bGVcbiAgICBdXG59KVxuZXhwb3J0IGNsYXNzIENvbnRyb2xzTW9kdWxlIHtcblxuICAgIHN0YXRpYyBmb3JSb290KGNvbmZpZz86IENvbnRyb2xzQ29uZmlnKTogTW9kdWxlV2l0aFByb3ZpZGVyczxDb250cm9sc01vZHVsZT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbmdNb2R1bGU6IENvbnRyb2xzTW9kdWxlLFxuICAgICAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwcm92aWRlOiBCQklfQ09OVFJPTF9FUlJPUlMsXG4gICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiB7Li4uY29udHJvbEVycm9yRGVmYXVsdHMsIC4uLihjb25maWc/LmVycm9ycyA/PyB7fSl9LFxuICAgICAgICAgICAgICAgICAgICBtdWx0aTogdHJ1ZVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIF1cbiAgICAgICAgfTtcbiAgICB9XG5cbn1cbiJdfQ==
@@ -1,7 +1,7 @@
1
1
  import { ChangeDetectionStrategy, Component, ContentChild, Input, Optional, ViewEncapsulation } from '@angular/core';
2
2
  import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import { shouldShowErrors } from '../../control-error/control-error.utils';
3
4
  import { BbiFormControlInput } from '../form-control-input.directive';
4
- import { debounceTime, distinctUntilChanged } from 'rxjs/operators';
5
5
  import { BehaviorSubject } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
7
7
  import * as i1 from "../../control-error/control-error-submit.directive";
@@ -21,11 +21,12 @@ export class BbiFormControl {
21
21
  this.errorMode = 'blur';
22
22
  // State.
23
23
  this.validationErrors$ = new BehaviorSubject(null);
24
- this.errors$ = this.validationErrors$.pipe(debounceTime(5), distinctUntilChanged());
25
24
  this._grouped = false;
26
25
  }
27
26
  // Grouped.
28
- get grouped() { return this._grouped; }
27
+ get grouped() {
28
+ return this._grouped;
29
+ }
29
30
  set grouped(value) {
30
31
  const newValue = coerceBooleanProperty(value);
31
32
  if (newValue !== this.grouped) {
@@ -34,7 +35,11 @@ export class BbiFormControl {
34
35
  }
35
36
  }
36
37
  ngDoCheck() {
37
- const hasErrors = this.showErrors();
38
+ const control = this.formControlInput?.control;
39
+ const submitted = this._errorSubmit?.submitted;
40
+ const focused = this.formControlInput?.focused;
41
+ const readonly = this.formControlInput?.readonly;
42
+ const hasErrors = shouldShowErrors(this.errorMode, control, submitted, focused, readonly);
38
43
  const errors = this.formControlInput?.errors ?? null;
39
44
  const newValue = hasErrors ? errors : null;
40
45
  const equal = JSON.stringify(newValue) === JSON.stringify(this.validationErrors$.getValue());
@@ -43,31 +48,10 @@ export class BbiFormControl {
43
48
  }
44
49
  this.validationErrors$.next(newValue);
45
50
  }
46
- showErrors() {
47
- // When the error mode is none we don't want to show
48
- if (this.errorMode === 'hidden' || this.formControlInput?.readonly) {
49
- return false;
50
- }
51
- // When submitted always show the errors.
52
- const focused = this.formControlInput?.focused;
53
- if (this._errorSubmit?.submitted && !focused) {
54
- return true;
55
- }
56
- // We want to show changes even when the user is focused.
57
- if (this.errorMode === 'changes') {
58
- return this.formControlInput?.control?.dirty ?? false;
59
- }
60
- // On blur show the error.
61
- if (this.errorMode === 'blur' && !focused) {
62
- return this.formControlInput?.control?.touched ?? false;
63
- }
64
- // Must not show the errors.
65
- return false;
66
- }
67
51
  }
68
- BbiFormControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControl, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.BbiControlErrorSubmit, optional: true }], target: i0.ɵɵFactoryTarget.Component });
69
- BbiFormControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbiFormControl, selector: "bbi-form-control", inputs: { label: "label", hint: "hint", errorMode: "errorMode", grouped: "grouped" }, host: { properties: { "class.grouped": "grouped", "class.disabled": "formControlInput?.disabled", "class.required": "formControlInput?.required", "class.readonly": "formControlInput?.readonly", "class.focused": "formControlInput?.focused", "class.error": "validationErrors$?.getValue()" }, classAttribute: "bbi-form-control" }, queries: [{ propertyName: "formControlInput", first: true, predicate: BbiFormControlInput, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"errors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BbiControlError, selector: "bbi-control-error", inputs: ["errors"] }, { kind: "directive", type: i4.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControl, decorators: [{
52
+ BbiFormControl.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiFormControl, deps: [{ token: i0.ChangeDetectorRef }, { token: i1.BbiControlErrorSubmit, optional: true }], target: i0.ɵɵFactoryTarget.Component });
53
+ BbiFormControl.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BbiFormControl, selector: "bbi-form-control", inputs: { label: "label", hint: "hint", errorMode: "errorMode", grouped: "grouped" }, host: { properties: { "class.grouped": "grouped", "class.disabled": "formControlInput?.disabled", "class.required": "formControlInput?.required", "class.readonly": "formControlInput?.readonly", "class.focused": "formControlInput?.focused", "class.error": "validationErrors$?.getValue()" }, classAttribute: "bbi-form-control" }, queries: [{ propertyName: "formControlInput", first: true, predicate: BbiFormControlInput, descendants: true }], ngImport: i0, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"validationErrors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.BbiControlError, selector: "bbi-control-error", inputs: ["errors"] }, { kind: "directive", type: i4.BbTemplate, selector: "[bbTemplate]", inputs: ["bbTemplate"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
54
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiFormControl, decorators: [{
71
55
  type: Component,
72
56
  args: [{ selector: 'bbi-form-control', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
73
57
  'class': 'bbi-form-control',
@@ -77,7 +61,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
77
61
  '[class.readonly]': 'formControlInput?.readonly',
78
62
  '[class.focused]': 'formControlInput?.focused',
79
63
  '[class.error]': 'validationErrors$?.getValue()'
80
- }, preserveWhitespaces: false, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"errors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"] }]
64
+ }, preserveWhitespaces: false, template: "<!-- Label of the form control. -->\n<label *ngIf=\"label as labelContent\"\n [attr.for]=\"labelId\"\n class=\"bbi-form-control-label\">\n <ng-template [bbTemplate]=\"labelContent\">{{ labelContent }}</ng-template>\n</label>\n\n<div class=\"bbi-form-control-container\">\n <ng-content select=\"[bbi-form-control-addon=prefix]\"></ng-content>\n <ng-content select=\"input[bbiFormControlInput]\"></ng-content>\n <ng-content select=\"[bbi-form-control-addon=suffix]\"></ng-content>\n</div>\n\n<bbi-control-error *ngIf=\"validationErrors$ | async as errors\"\n [errors]=\"errors\">\n</bbi-control-error>\n\n<div *ngIf=\"hint as hintContent\"\n class=\"bbi-form-control-hint\">\n <ng-template [bbTemplate]=\"hintContent\">{{ hintContent }}</ng-template>\n</div>\n", styles: [".bbi-form-control{display:block}.bbi-form-control.grouped{margin-bottom:var(--form-control-grouping, 20px)}.bbi-form-control.disabled{pointer-events:none;opacity:var(--form-control-disabled-opacity, .25)}.bbi-form-control.disabled>.bbi-form-control-container{color:var(--form-control-disabled-color, #111111);background:var(--form-control-disabled-background, white);border-radius:var(--form-control-disabled-border-radius, 6px);border:var(--form-control-disabled-border-width, 1px) var(--form-control-disabled-border-style, solid) var(--form-control-disabled-border-color, #212121)}.bbi-form-control.required:not([data-required-visually-hidden])>.bbi-form-control-label:after{content:\"*\";color:#bd322a;font-size:14px;vertical-align:text-top}.bbi-form-control:not(.readonly).focused>.bbi-form-control-container{color:var(--form-control-focused-color, #111111);box-shadow:var(--form-control-focused-shadow, 0 0 0 3px rgba(0, 123, 255, .2));background:var(--form-control-focused-background, white);border-radius:var(--form-control-focused-border-radius, 6px);border:var(--form-control-focused-border-width, 1px) var(--form-control-focused-border-style, solid) var(--form-control-focused-border-color, #212121)}.bbi-form-control:not(.readonly).error>.bbi-form-control-label{color:var(--form-control-error-color, var(--error-color, #bd322a))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container{color:var(--form-control-error-color, var(--error-color, #bd322a));border-color:var(--form-control-error-color, var(--error-color, #bd322a));background:var(--form-control-error-background, rgba(189, 50, 42, .1))}.bbi-form-control:not(.readonly).error>.bbi-form-control-container>input::placeholder{color:var(--form-control-error-placeholder-color, rgba(189, 50, 42, .4))}.bbi-form-control-label{color:#525252;display:block;font-size:14px;font-weight:400;margin-bottom:4px}.bbi-form-control-container{display:flex;align-items:center;color:var(--form-control-color, #111111);border-radius:var(--form-control-border-radius, 6px);background-color:var(--form-control-background, white);border:var(--form-control-border-width, 1px) var(--form-control-border-style, solid) var(--form-control-border-color, rgba(67, 90, 111, .3))}.bbi-form-control-container>input{width:100%;border:none;height:40px;color:inherit;padding:0 10px;background-color:transparent}.bbi-form-control-container>input::placeholder{color:#d2d2d2}.bbi-form-control-hint{display:block;color:#525252;font-size:13px;margin-top:4px}\n"] }]
81
65
  }], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i1.BbiControlErrorSubmit, decorators: [{
82
66
  type: Optional
83
67
  }] }]; }, propDecorators: { formControlInput: [{
@@ -92,4 +76,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImpor
92
76
  }], grouped: [{
93
77
  type: Input
94
78
  }] } });
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2NvbnRyb2xzL3NyYy9saWIvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFXLEtBQUssRUFBRSxRQUFRLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHNUosT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFDLFlBQVksRUFBRSxvQkFBb0IsRUFBQyxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSxNQUFNLENBQUM7Ozs7OztBQUVyQyxJQUFJLFlBQVksR0FBRyxDQUFDLENBQUM7QUFtQnJCLE1BQU0sT0FBTyxjQUFjO0lBK0J2QixZQUFvQixrQkFBcUMsRUFDekIsWUFBb0M7UUFEaEQsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFtQjtRQUN6QixpQkFBWSxHQUFaLFlBQVksQ0FBd0I7UUE5QnBFLGlCQUFpQjtRQUNSLFlBQU8sR0FBVyxvQkFBb0IsWUFBWSxFQUFFLEVBQUUsQ0FBQztRQUtoRSxVQUFVO1FBQ0QsVUFBSyxHQUFxQyxJQUFJLENBQUM7UUFDL0MsU0FBSSxHQUFxQyxJQUFJLENBQUM7UUFDOUMsY0FBUyxHQUFxQixNQUFNLENBQUM7UUFFOUMsU0FBUztRQUNULHNCQUFpQixHQUFHLElBQUksZUFBZSxDQUEwQixJQUFJLENBQUMsQ0FBQztRQUN2RSxZQUFPLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBY3ZFLGFBQVEsR0FBWSxLQUFLLENBQUM7SUFJbEMsQ0FBQztJQWhCRCxXQUFXO0lBQ1gsSUFDSSxPQUFPLEtBQWMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUVoRCxJQUFJLE9BQU8sQ0FBQyxLQUFtQjtRQUMzQixNQUFNLFFBQVEsR0FBRyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxJQUFJLFFBQVEsS0FBSyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNCLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxZQUFZLEVBQUUsQ0FBQztTQUMxQztJQUNMLENBQUM7SUFRRCxTQUFTO1FBQ0wsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQ3BDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxNQUFNLElBQUksSUFBSSxDQUFDO1FBQ3JELE1BQU0sUUFBUSxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFFM0MsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzdGLElBQUksS0FBSyxFQUFFO1lBQ1AsT0FBTztTQUNWO1FBRUQsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU8sVUFBVTtRQUNkLG9EQUFvRDtRQUNwRCxJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxRQUFRLEVBQUU7WUFDaEUsT0FBTyxLQUFLLENBQUM7U0FDaEI7UUFFRCx5Q0FBeUM7UUFDekMsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztRQUMvQyxJQUFJLElBQUksQ0FBQyxZQUFZLEVBQUUsU0FBUyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQzFDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCx5REFBeUQ7UUFDekQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUM5QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsS0FBSyxJQUFJLEtBQUssQ0FBQztTQUN6RDtRQUVELDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxTQUFTLEtBQUssTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sRUFBRSxPQUFPLElBQUksS0FBSyxDQUFDO1NBQzNEO1FBRUQsNEJBQTRCO1FBQzVCLE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7OzJHQXhFUSxjQUFjOytGQUFkLGNBQWMsb2dCQU1ULG1CQUFtQixnRENsQ3JDLCt4QkFxQkE7MkZET2EsY0FBYztrQkFqQjFCLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGtCQUFrQjt3QkFDM0IsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsa0JBQWtCLEVBQUUsNEJBQTRCO3dCQUNoRCxrQkFBa0IsRUFBRSw0QkFBNEI7d0JBQ2hELGtCQUFrQixFQUFFLDRCQUE0Qjt3QkFDaEQsaUJBQWlCLEVBQUUsMkJBQTJCO3dCQUM5QyxlQUFlLEVBQUUsK0JBQStCO3FCQUNuRCx1QkFDb0IsS0FBSzs7MEJBa0NiLFFBQVE7NENBMUIrQixnQkFBZ0I7c0JBQW5FLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUd6QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBUUYsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEb0NoZWNrLCBJbnB1dCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JiaUNvbnRyb2xFcnJvclN1Ym1pdH0gZnJvbSAnLi4vLi4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDb250cm9sRXJyb3JNb2RlfSBmcm9tICcuLi8uLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge0JiaUZvcm1Db250cm9sSW5wdXR9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtkZWJvdW5jZVRpbWUsIGRpc3RpbmN0VW50aWxDaGFuZ2VkfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1ZhbGlkYXRpb25FcnJvcnN9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7QmVoYXZpb3JTdWJqZWN0fSBmcm9tICdyeGpzJztcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYmJpLWZvcm0tY29udHJvbCcsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vZm9ybS1jb250cm9sLmNvbXBvbmVudC5zY3NzJ10sXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgICBob3N0OiB7XG4gICAgICAgICdjbGFzcyc6ICdiYmktZm9ybS1jb250cm9sJyxcbiAgICAgICAgJ1tjbGFzcy5ncm91cGVkXSc6ICdncm91cGVkJyxcbiAgICAgICAgJ1tjbGFzcy5kaXNhYmxlZF0nOiAnZm9ybUNvbnRyb2xJbnB1dD8uZGlzYWJsZWQnLFxuICAgICAgICAnW2NsYXNzLnJlcXVpcmVkXSc6ICdmb3JtQ29udHJvbElucHV0Py5yZXF1aXJlZCcsXG4gICAgICAgICdbY2xhc3MucmVhZG9ubHldJzogJ2Zvcm1Db250cm9sSW5wdXQ/LnJlYWRvbmx5JyxcbiAgICAgICAgJ1tjbGFzcy5mb2N1c2VkXSc6ICdmb3JtQ29udHJvbElucHV0Py5mb2N1c2VkJyxcbiAgICAgICAgJ1tjbGFzcy5lcnJvcl0nOiAndmFsaWRhdGlvbkVycm9ycyQ/LmdldFZhbHVlKCknXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYmlGb3JtQ29udHJvbCBpbXBsZW1lbnRzIERvQ2hlY2sge1xuXG4gICAgLy8gUmVhZG9ubHkgZGF0YS5cbiAgICByZWFkb25seSBsYWJlbElkOiBzdHJpbmcgPSBgYmJpLWZvcm0tY29udHJvbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgICAvLyBWaWV3cy5cbiAgICBAQ29udGVudENoaWxkKEJiaUZvcm1Db250cm9sSW5wdXQsIHtzdGF0aWM6IGZhbHNlfSkgZm9ybUNvbnRyb2xJbnB1dD86IEJiaUZvcm1Db250cm9sSW5wdXQ7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgbGFiZWw6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsID0gbnVsbDtcbiAgICBASW5wdXQoKSBoaW50OiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgZXJyb3JNb2RlOiBDb250cm9sRXJyb3JNb2RlID0gJ2JsdXInO1xuXG4gICAgLy8gU3RhdGUuXG4gICAgdmFsaWRhdGlvbkVycm9ycyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFZhbGlkYXRpb25FcnJvcnMgfCBudWxsPihudWxsKTtcbiAgICBlcnJvcnMkID0gdGhpcy52YWxpZGF0aW9uRXJyb3JzJC5waXBlKGRlYm91bmNlVGltZSg1KSwgZGlzdGluY3RVbnRpbENoYW5nZWQoKSk7XG5cbiAgICAvLyBHcm91cGVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGdyb3VwZWQoKTogYm9vbGVhbiB7IHJldHVybiB0aGlzLl9ncm91cGVkOyB9XG5cbiAgICBzZXQgZ3JvdXBlZCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmdyb3VwZWQpIHtcbiAgICAgICAgICAgIHRoaXMuX2dyb3VwZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZ3JvdXBlZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIEBPcHRpb25hbCgpIHByaXZhdGUgX2Vycm9yU3VibWl0PzogQmJpQ29udHJvbEVycm9yU3VibWl0KSB7XG4gICAgfVxuXG4gICAgbmdEb0NoZWNrKCkge1xuICAgICAgICBjb25zdCBoYXNFcnJvcnMgPSB0aGlzLnNob3dFcnJvcnMoKTtcbiAgICAgICAgY29uc3QgZXJyb3JzID0gdGhpcy5mb3JtQ29udHJvbElucHV0Py5lcnJvcnMgPz8gbnVsbDtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBoYXNFcnJvcnMgPyBlcnJvcnMgOiBudWxsO1xuXG4gICAgICAgIGNvbnN0IGVxdWFsID0gSlNPTi5zdHJpbmdpZnkobmV3VmFsdWUpID09PSBKU09OLnN0cmluZ2lmeSh0aGlzLnZhbGlkYXRpb25FcnJvcnMkLmdldFZhbHVlKCkpO1xuICAgICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudmFsaWRhdGlvbkVycm9ycyQubmV4dChuZXdWYWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93RXJyb3JzKCkge1xuICAgICAgICAvLyBXaGVuIHRoZSBlcnJvciBtb2RlIGlzIG5vbmUgd2UgZG9uJ3Qgd2FudCB0byBzaG93XG4gICAgICAgIGlmICh0aGlzLmVycm9yTW9kZSA9PT0gJ2hpZGRlbicgfHwgdGhpcy5mb3JtQ29udHJvbElucHV0Py5yZWFkb25seSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2hlbiBzdWJtaXR0ZWQgYWx3YXlzIHNob3cgdGhlIGVycm9ycy5cbiAgICAgICAgY29uc3QgZm9jdXNlZCA9IHRoaXMuZm9ybUNvbnRyb2xJbnB1dD8uZm9jdXNlZDtcbiAgICAgICAgaWYgKHRoaXMuX2Vycm9yU3VibWl0Py5zdWJtaXR0ZWQgJiYgIWZvY3VzZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gV2Ugd2FudCB0byBzaG93IGNoYW5nZXMgZXZlbiB3aGVuIHRoZSB1c2VyIGlzIGZvY3VzZWQuXG4gICAgICAgIGlmICh0aGlzLmVycm9yTW9kZSA9PT0gJ2NoYW5nZXMnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbElucHV0Py5jb250cm9sPy5kaXJ0eSA/PyBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIE9uIGJsdXIgc2hvdyB0aGUgZXJyb3IuXG4gICAgICAgIGlmICh0aGlzLmVycm9yTW9kZSA9PT0gJ2JsdXInICYmICFmb2N1c2VkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ29udHJvbElucHV0Py5jb250cm9sPy50b3VjaGVkID8/IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gTXVzdCBub3Qgc2hvdyB0aGUgZXJyb3JzLlxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gUmVxdWlyZWQgc28gdGhhdCB0aGUgdGVtcGxhdGUgdHlwZSBjaGVja2VyIGNhbiBpbmZlciB0aGUgdHlwZSBvZiB0aGUgY29lcmNlZCBpbnB1dHMuXG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2xhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZDtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfaGludDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2Vycm9yTW9kZTogQ29udHJvbEVycm9yTW9kZTtcbiAgICBzdGF0aWMgbmdBY2NlcHRJbnB1dFR5cGVfZ3JvdXBlZDogQm9vbGVhbklucHV0O1xuXG59XG4iLCI8IS0tIExhYmVsIG9mIHRoZSBmb3JtIGNvbnRyb2wuIC0tPlxuPGxhYmVsICpuZ0lmPVwibGFiZWwgYXMgbGFiZWxDb250ZW50XCJcbiAgICAgICBbYXR0ci5mb3JdPVwibGFiZWxJZFwiXG4gICAgICAgY2xhc3M9XCJiYmktZm9ybS1jb250cm9sLWxhYmVsXCI+XG4gICAgPG5nLXRlbXBsYXRlIFtiYlRlbXBsYXRlXT1cImxhYmVsQ29udGVudFwiPnt7IGxhYmVsQ29udGVudCB9fTwvbmctdGVtcGxhdGU+XG48L2xhYmVsPlxuXG48ZGl2IGNsYXNzPVwiYmJpLWZvcm0tY29udHJvbC1jb250YWluZXJcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmJpLWZvcm0tY29udHJvbC1hZGRvbj1wcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlucHV0W2JiaUZvcm1Db250cm9sSW5wdXRdXCI+PC9uZy1jb250ZW50PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltiYmktZm9ybS1jb250cm9sLWFkZG9uPXN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPGJiaS1jb250cm9sLWVycm9yICpuZ0lmPVwiZXJyb3JzJCB8IGFzeW5jIGFzIGVycm9yc1wiXG4gICAgICAgICAgICAgICAgICAgW2Vycm9yc109XCJlcnJvcnNcIj5cbjwvYmJpLWNvbnRyb2wtZXJyb3I+XG5cbjxkaXYgKm5nSWY9XCJoaW50IGFzIGhpbnRDb250ZW50XCJcbiAgICAgY2xhc3M9XCJiYmktZm9ybS1jb250cm9sLWhpbnRcIj5cbiAgICA8bmctdGVtcGxhdGUgW2JiVGVtcGxhdGVdPVwiaGludENvbnRlbnRcIj57eyBoaW50Q29udGVudCB9fTwvbmctdGVtcGxhdGU+XG48L2Rpdj5cbiJdfQ==
79
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jb250cm9sLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9mb3JtLWNvbnRyb2wvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9iYi1mb3VuZGF0aW9uL2NvbnRyb2xzL3NyYy9saWIvZm9ybS1jb250cm9sL2Zvcm0tY29udHJvbC9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLHVCQUF1QixFQUFxQixTQUFTLEVBQUUsWUFBWSxFQUFXLEtBQUssRUFBRSxRQUFRLEVBQWUsaUJBQWlCLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFHNUosT0FBTyxFQUFlLHFCQUFxQixFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsT0FBTyxFQUFDLGdCQUFnQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDekUsT0FBTyxFQUFDLG1CQUFtQixFQUFDLE1BQU0saUNBQWlDLENBQUM7QUFFcEUsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLE1BQU0sQ0FBQzs7Ozs7O0FBRXJDLElBQUksWUFBWSxHQUFHLENBQUMsQ0FBQztBQW1CckIsTUFBTSxPQUFPLGNBQWM7SUFnQ3ZCLFlBQW9CLGtCQUFxQyxFQUN6QixZQUFvQztRQURoRCx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW1CO1FBQ3pCLGlCQUFZLEdBQVosWUFBWSxDQUF3QjtRQS9CcEUsaUJBQWlCO1FBQ1IsWUFBTyxHQUFXLG9CQUFvQixZQUFZLEVBQUUsRUFBRSxDQUFDO1FBS2hFLFVBQVU7UUFDRCxVQUFLLEdBQXFDLElBQUksQ0FBQztRQUMvQyxTQUFJLEdBQXFDLElBQUksQ0FBQztRQUM5QyxjQUFTLEdBQXFCLE1BQU0sQ0FBQztRQUU5QyxTQUFTO1FBQ1Qsc0JBQWlCLEdBQUcsSUFBSSxlQUFlLENBQTBCLElBQUksQ0FBQyxDQUFDO1FBZ0IvRCxhQUFRLEdBQVksS0FBSyxDQUFDO0lBSWxDLENBQUM7SUFsQkQsV0FBVztJQUNYLElBQ0ksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBbUI7UUFDM0IsTUFBTSxRQUFRLEdBQUcscUJBQXFCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUMsSUFBSSxRQUFRLEtBQUssSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUMzQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztZQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDMUM7SUFDTCxDQUFDO0lBUUQsU0FBUztRQUNMLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxPQUFPLENBQUM7UUFDL0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRSxTQUFTLENBQUM7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQztRQUMvQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDO1FBQ2pELE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDMUYsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUM7UUFDckQsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUUzQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxLQUFLLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDN0YsSUFBSSxLQUFLLEVBQUU7WUFDUCxPQUFPO1NBQ1Y7UUFFRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7OzJHQW5EUSxjQUFjOytGQUFkLGNBQWMsb2dCQU1ULG1CQUFtQixnRENsQ3JDLHl5QkFxQkE7MkZET2EsY0FBYztrQkFqQjFCLFNBQVM7K0JBQ0ksa0JBQWtCLG1CQUdYLHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksUUFDL0I7d0JBQ0YsT0FBTyxFQUFFLGtCQUFrQjt3QkFDM0IsaUJBQWlCLEVBQUUsU0FBUzt3QkFDNUIsa0JBQWtCLEVBQUUsNEJBQTRCO3dCQUNoRCxrQkFBa0IsRUFBRSw0QkFBNEI7d0JBQ2hELGtCQUFrQixFQUFFLDRCQUE0Qjt3QkFDaEQsaUJBQWlCLEVBQUUsMkJBQTJCO3dCQUM5QyxlQUFlLEVBQUUsK0JBQStCO3FCQUNuRCx1QkFDb0IsS0FBSzs7MEJBbUNiLFFBQVE7NENBM0IrQixnQkFBZ0I7c0JBQW5FLFlBQVk7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDO2dCQUd6QyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBT0YsT0FBTztzQkFEVixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgQ29udGVudENoaWxkLCBEb0NoZWNrLCBJbnB1dCwgT3B0aW9uYWwsIFRlbXBsYXRlUmVmLCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0JiaUNvbnRyb2xFcnJvclN1Ym1pdH0gZnJvbSAnLi4vLi4vY29udHJvbC1lcnJvci9jb250cm9sLWVycm9yLXN1Ym1pdC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtDb250cm9sRXJyb3JNb2RlfSBmcm9tICcuLi8uLi9jb250cm9sLWVycm9yL2NvbnRyb2wtZXJyb3IuaW50ZXJmYWNlJztcbmltcG9ydCB7Qm9vbGVhbklucHV0LCBjb2VyY2VCb29sZWFuUHJvcGVydHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9jb2VyY2lvbic7XG5pbXBvcnQge3Nob3VsZFNob3dFcnJvcnN9IGZyb20gJy4uLy4uL2NvbnRyb2wtZXJyb3IvY29udHJvbC1lcnJvci51dGlscyc7XG5pbXBvcnQge0JiaUZvcm1Db250cm9sSW5wdXR9IGZyb20gJy4uL2Zvcm0tY29udHJvbC1pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHtWYWxpZGF0aW9uRXJyb3JzfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge0JlaGF2aW9yU3ViamVjdH0gZnJvbSAncnhqcyc7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiaS1mb3JtLWNvbnRyb2wnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNvbnRyb2wuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY29udHJvbC5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmJpLWZvcm0tY29udHJvbCcsXG4gICAgICAgICdbY2xhc3MuZ3JvdXBlZF0nOiAnZ3JvdXBlZCcsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Zvcm1Db250cm9sSW5wdXQ/LmRpc2FibGVkJyxcbiAgICAgICAgJ1tjbGFzcy5yZXF1aXJlZF0nOiAnZm9ybUNvbnRyb2xJbnB1dD8ucmVxdWlyZWQnLFxuICAgICAgICAnW2NsYXNzLnJlYWRvbmx5XSc6ICdmb3JtQ29udHJvbElucHV0Py5yZWFkb25seScsXG4gICAgICAgICdbY2xhc3MuZm9jdXNlZF0nOiAnZm9ybUNvbnRyb2xJbnB1dD8uZm9jdXNlZCcsXG4gICAgICAgICdbY2xhc3MuZXJyb3JdJzogJ3ZhbGlkYXRpb25FcnJvcnMkPy5nZXRWYWx1ZSgpJ1xuICAgIH0sXG4gICAgcHJlc2VydmVXaGl0ZXNwYWNlczogZmFsc2Vcbn0pXG5leHBvcnQgY2xhc3MgQmJpRm9ybUNvbnRyb2wgaW1wbGVtZW50cyBEb0NoZWNrIHtcblxuICAgIC8vIFJlYWRvbmx5IGRhdGEuXG4gICAgcmVhZG9ubHkgbGFiZWxJZDogc3RyaW5nID0gYGJiaS1mb3JtLWNvbnRyb2wtJHtuZXh0VW5pcXVlSWQrK31gO1xuXG4gICAgLy8gVmlld3MuXG4gICAgQENvbnRlbnRDaGlsZChCYmlGb3JtQ29udHJvbElucHV0LCB7c3RhdGljOiBmYWxzZX0pIGZvcm1Db250cm9sSW5wdXQ/OiBCYmlGb3JtQ29udHJvbElucHV0O1xuXG4gICAgLy8gSW5wdXRzLlxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgfCBUZW1wbGF0ZVJlZjxhbnk+IHwgbnVsbCA9IG51bGw7XG4gICAgQElucHV0KCkgaGludDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgPSBudWxsO1xuICAgIEBJbnB1dCgpIGVycm9yTW9kZTogQ29udHJvbEVycm9yTW9kZSA9ICdibHVyJztcblxuICAgIC8vIFN0YXRlLlxuICAgIHZhbGlkYXRpb25FcnJvcnMkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxWYWxpZGF0aW9uRXJyb3JzIHwgbnVsbD4obnVsbCk7XG5cbiAgICAvLyBHcm91cGVkLlxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGdyb3VwZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cGVkO1xuICAgIH1cblxuICAgIHNldCBncm91cGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgY29uc3QgbmV3VmFsdWUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgICAgICBpZiAobmV3VmFsdWUgIT09IHRoaXMuZ3JvdXBlZCkge1xuICAgICAgICAgICAgdGhpcy5fZ3JvdXBlZCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9ncm91cGVkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfZXJyb3JTdWJtaXQ/OiBCYmlDb250cm9sRXJyb3JTdWJtaXQpIHtcbiAgICB9XG5cbiAgICBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLmZvcm1Db250cm9sSW5wdXQ/LmNvbnRyb2w7XG4gICAgICAgIGNvbnN0IHN1Ym1pdHRlZCA9IHRoaXMuX2Vycm9yU3VibWl0Py5zdWJtaXR0ZWQ7XG4gICAgICAgIGNvbnN0IGZvY3VzZWQgPSB0aGlzLmZvcm1Db250cm9sSW5wdXQ/LmZvY3VzZWQ7XG4gICAgICAgIGNvbnN0IHJlYWRvbmx5ID0gdGhpcy5mb3JtQ29udHJvbElucHV0Py5yZWFkb25seTtcbiAgICAgICAgY29uc3QgaGFzRXJyb3JzID0gc2hvdWxkU2hvd0Vycm9ycyh0aGlzLmVycm9yTW9kZSwgY29udHJvbCwgc3VibWl0dGVkLCBmb2N1c2VkLCByZWFkb25seSk7XG4gICAgICAgIGNvbnN0IGVycm9ycyA9IHRoaXMuZm9ybUNvbnRyb2xJbnB1dD8uZXJyb3JzID8/IG51bGw7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gaGFzRXJyb3JzID8gZXJyb3JzIDogbnVsbDtcblxuICAgICAgICBjb25zdCBlcXVhbCA9IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKSA9PT0gSlNPTi5zdHJpbmdpZnkodGhpcy52YWxpZGF0aW9uRXJyb3JzJC5nZXRWYWx1ZSgpKTtcbiAgICAgICAgaWYgKGVxdWFsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnZhbGlkYXRpb25FcnJvcnMkLm5leHQobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIC8vIFJlcXVpcmVkIHNvIHRoYXQgdGhlIHRlbXBsYXRlIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGNvZXJjZWQgaW5wdXRzLlxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9sYWJlbDogc3RyaW5nIHwgVGVtcGxhdGVSZWY8YW55PiB8IG51bGwgfCB1bmRlZmluZWQ7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2hpbnQ6IHN0cmluZyB8IFRlbXBsYXRlUmVmPGFueT4gfCBudWxsIHwgdW5kZWZpbmVkO1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9lcnJvck1vZGU6IENvbnRyb2xFcnJvck1vZGU7XG4gICAgc3RhdGljIG5nQWNjZXB0SW5wdXRUeXBlX2dyb3VwZWQ6IEJvb2xlYW5JbnB1dDtcblxufVxuIiwiPCEtLSBMYWJlbCBvZiB0aGUgZm9ybSBjb250cm9sLiAtLT5cbjxsYWJlbCAqbmdJZj1cImxhYmVsIGFzIGxhYmVsQ29udGVudFwiXG4gICAgICAgW2F0dHIuZm9yXT1cImxhYmVsSWRcIlxuICAgICAgIGNsYXNzPVwiYmJpLWZvcm0tY29udHJvbC1sYWJlbFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJsYWJlbENvbnRlbnRcIj57eyBsYWJlbENvbnRlbnQgfX08L25nLXRlbXBsYXRlPlxuPC9sYWJlbD5cblxuPGRpdiBjbGFzcz1cImJiaS1mb3JtLWNvbnRyb2wtY29udGFpbmVyXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2JiaS1mb3JtLWNvbnRyb2wtYWRkb249cHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpbnB1dFtiYmlGb3JtQ29udHJvbElucHV0XVwiPjwvbmctY29udGVudD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmJpLWZvcm0tY29udHJvbC1hZGRvbj1zdWZmaXhdXCI+PC9uZy1jb250ZW50PlxuPC9kaXY+XG5cbjxiYmktY29udHJvbC1lcnJvciAqbmdJZj1cInZhbGlkYXRpb25FcnJvcnMkIHwgYXN5bmMgYXMgZXJyb3JzXCJcbiAgICAgICAgICAgICAgICAgICBbZXJyb3JzXT1cImVycm9yc1wiPlxuPC9iYmktY29udHJvbC1lcnJvcj5cblxuPGRpdiAqbmdJZj1cImhpbnQgYXMgaGludENvbnRlbnRcIlxuICAgICBjbGFzcz1cImJiaS1mb3JtLWNvbnRyb2wtaGludFwiPlxuICAgIDxuZy10ZW1wbGF0ZSBbYmJUZW1wbGF0ZV09XCJoaW50Q29udGVudFwiPnt7IGhpbnRDb250ZW50IH19PC9uZy10ZW1wbGF0ZT5cbjwvZGl2PlxuIl19
@@ -6,9 +6,9 @@ export class BbiFormControlAddon {
6
6
  this.type = null;
7
7
  }
8
8
  }
9
- BbiFormControlAddon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlAddon, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
- BbiFormControlAddon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.1", type: BbiFormControlAddon, selector: "[bbi-form-control-addon]", inputs: { type: ["bbi-form-control-addon", "type"] }, host: { properties: { "class.prefix": "type === 'prefix'", "class.suffix": "type === 'suffix'" }, classAttribute: "bbi-form-control-addon" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bbi-form-control-addon{margin:0 10px;color:inherit;display:block}.bbi-form-control-addon.suffix{margin-left:0}.bbi-form-control-addon.prefix{margin-right:0}a.bbi-form-control-addon,button.bbi-form-control-addon{width:32px;height:32px;border:none;display:flex;-webkit-appearance:none;appearance:none;margin-right:4px;border-radius:6px;align-items:center;text-decoration:none;justify-content:center;background-color:transparent}a.bbi-form-control-addon,a.bbi-form-control-addon:visited,button.bbi-form-control-addon,button.bbi-form-control-addon:visited{color:inherit}a.bbi-form-control-addon:hover,button.bbi-form-control-addon:hover{background-color:#1565c014}a.bbi-form-control-addon:focus,button.bbi-form-control-addon:focus{background-color:#1565c01f}a.bbi-form-control-addon:active,button.bbi-form-control-addon:active{background-color:#1565c029}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlAddon, decorators: [{
9
+ BbiFormControlAddon.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiFormControlAddon, deps: [], target: i0.ɵɵFactoryTarget.Component });
10
+ BbiFormControlAddon.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BbiFormControlAddon, selector: "[bbi-form-control-addon]", inputs: { type: ["bbi-form-control-addon", "type"] }, host: { properties: { "class.prefix": "type === 'prefix'", "class.suffix": "type === 'suffix'" }, classAttribute: "bbi-form-control-addon" }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [".bbi-form-control-addon{margin:0 10px;color:inherit;display:block}.bbi-form-control-addon.suffix{margin-left:0}.bbi-form-control-addon.prefix{margin-right:0}a.bbi-form-control-addon,button.bbi-form-control-addon{width:32px;height:32px;border:none;display:flex;-webkit-appearance:none;appearance:none;margin-right:4px;border-radius:6px;align-items:center;text-decoration:none;justify-content:center;background-color:transparent}a.bbi-form-control-addon,a.bbi-form-control-addon:visited,button.bbi-form-control-addon,button.bbi-form-control-addon:visited{color:inherit}a.bbi-form-control-addon:hover,button.bbi-form-control-addon:hover{background-color:#1565c014}a.bbi-form-control-addon:focus,button.bbi-form-control-addon:focus{background-color:#1565c01f}a.bbi-form-control-addon:active,button.bbi-form-control-addon:active{background-color:#1565c029}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
11
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiFormControlAddon, decorators: [{
12
12
  type: Component,
13
13
  args: [{ selector: '[bbi-form-control-addon]', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
14
14
  'class': 'bbi-form-control-addon',
@@ -97,9 +97,9 @@ export class BbiFormControlInput {
97
97
  this._subscription.add(subscription);
98
98
  }
99
99
  }
100
- BbiFormControlInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlInput, deps: [{ token: i0.ElementRef }, { token: i1.BbiFormControl }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
101
- BbiFormControlInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.1", type: BbiFormControlInput, selector: "input[bbiFormControlInput]", inputs: { disabled: "disabled", readonly: "readonly", required: "required" }, host: { properties: { "attr.id": "this.labelId", "required": "this.required" } }, ngImport: i0 });
102
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: BbiFormControlInput, decorators: [{
100
+ BbiFormControlInput.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiFormControlInput, deps: [{ token: i0.ElementRef }, { token: i1.BbiFormControl }, { token: i0.ChangeDetectorRef }, { token: i2.NgControl, optional: true, self: true }], target: i0.ɵɵFactoryTarget.Directive });
101
+ BbiFormControlInput.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.2.2", type: BbiFormControlInput, selector: "input[bbiFormControlInput]", inputs: { disabled: "disabled", readonly: "readonly", required: "required" }, host: { properties: { "attr.id": "this.labelId", "required": "this.required" } }, ngImport: i0 });
102
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiFormControlInput, decorators: [{
103
103
  type: Directive,
104
104
  args: [{
105
105
  selector: 'input[bbiFormControlInput]'
@@ -8,14 +8,14 @@ import { NgModule } from '@angular/core';
8
8
  import * as i0 from "@angular/core";
9
9
  export class FormControlModule {
10
10
  }
11
- FormControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
- FormControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, declarations: [BbiFormControl,
11
+ FormControlModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FormControlModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
12
+ FormControlModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.2.2", ngImport: i0, type: FormControlModule, declarations: [BbiFormControl,
13
13
  BbiFormControlInput,
14
14
  BbiFormControlAddon], imports: [CommonModule, ControlErrorModule, UtilsModule], exports: [BbiFormControl,
15
15
  BbiFormControlInput,
16
16
  BbiFormControlAddon] });
17
- FormControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, imports: [CommonModule, ControlErrorModule, UtilsModule] });
18
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.1", ngImport: i0, type: FormControlModule, decorators: [{
17
+ FormControlModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FormControlModule, imports: [CommonModule, ControlErrorModule, UtilsModule] });
18
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: FormControlModule, decorators: [{
19
19
  type: NgModule,
20
20
  args: [{
21
21
  imports: [CommonModule, ControlErrorModule, UtilsModule],
@@ -0,0 +1,75 @@
1
+ import { ChangeDetectionStrategy, Component, HostBinding, HostListener, Input, ViewEncapsulation } from '@angular/core';
2
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "../radio-group/radio-group.component";
5
+ import * as i2 from "@angular/common";
6
+ export class BbiRadioButton {
7
+ constructor(_radioGroup, _changeDetectorRef) {
8
+ this._radioGroup = _radioGroup;
9
+ this._changeDetectorRef = _changeDetectorRef;
10
+ // Inputs.
11
+ this.value = null;
12
+ this._disabled = false;
13
+ this._hideText = false;
14
+ }
15
+ // Disabled.
16
+ get disabled() {
17
+ return this._radioGroup?.disabled || this._disabled;
18
+ }
19
+ set disabled(value) {
20
+ const newValue = coerceBooleanProperty(value);
21
+ if (newValue !== this.disabled) {
22
+ this._disabled = newValue;
23
+ this._changeDetectorRef.markForCheck();
24
+ }
25
+ }
26
+ // Hide text.
27
+ get hideText() {
28
+ return this._hideText;
29
+ }
30
+ set hideText(value) {
31
+ const newValue = coerceBooleanProperty(value);
32
+ if (newValue !== this.hideText) {
33
+ this._hideText = newValue;
34
+ this._changeDetectorRef.markForCheck();
35
+ }
36
+ }
37
+ onClick() {
38
+ if (this.disabled) {
39
+ return;
40
+ }
41
+ this._radioGroup.select(this.value);
42
+ }
43
+ onSpacePressed() {
44
+ return this.onClick();
45
+ }
46
+ get selected() {
47
+ return this._radioGroup?.value === this.value;
48
+ }
49
+ }
50
+ BbiRadioButton.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiRadioButton, deps: [{ token: i1.BbiRadioGroup }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
51
+ BbiRadioButton.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.2", type: BbiRadioButton, selector: "bbi-radio-button", inputs: { value: "value", disabled: "disabled", hideText: "hideText" }, host: { listeners: { "click": "onClick()", "keydown.space": "onSpacePressed()" }, properties: { "class.disabled": "disabled", "tabindex": "disabled ? -1 : 0", "class.selected": "this.selected" }, classAttribute: "bbi-radio-button" }, ngImport: i0, template: "<div class=\"bbi-radio-button-indicator\"></div>\n<span *ngIf=\"!hideText\"\n class=\"bbi-radio-button-text\"><ng-content></ng-content></span>\n", styles: [".bbi-radio-button{display:flex;cursor:pointer;align-items:center}.bbi-radio-button:not(.disabled):focus>.bbi-radio-button-indicator{outline-color:var(--radio-button-outline-color, var(--accent-color, #1565c0))}.bbi-radio-button.disabled{-webkit-user-select:none;user-select:none;cursor:not-allowed}.bbi-radio-button.disabled>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.disabled>.bbi-radio-button-text{color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.selected>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0))}.bbi-radio-button.selected>.bbi-radio-button-indicator:after{opacity:1;transform:none}.bbi-radio-button-indicator{display:flex;align-items:center;justify-content:center;width:var(--radio-button-size, 20px);height:var(--radio-button-size, 20px);min-width:var(--radio-button-size, 20px);min-height:var(--radio-button-size, 20px);border-radius:var(--radio-button-border-radius, 50%);outline-offset:var(--radio-button-outline-offset, 1px);outline:var(--radio-button-outline-thickness, 2px) solid transparent;border:var(--radio-button-border-thickness, 1px) solid var(--radio-button-border-color, #111111);transition:outline-color .2s cubic-bezier(0,0,.2,1),border-color .18s cubic-bezier(0,0,.2,1)}.bbi-radio-button-indicator:after{opacity:0;content:\"\";display:block;transform:scale(0);width:calc(var(--radio-button-size, 20px) / 2);height:calc(var(--radio-button-size, 20px) / 2);border-radius:var(--radio-button-border-radius, 50%);background-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0));transition:transform .1s cubic-bezier(0,0,.2,1)}.bbi-radio-button-text{color:var(--radio-button-label-color, #111111);padding-left:var(--radio-button-label-offset, 6px);font-size:var(--radio-button-label-font-size, 16px);font-weight:var(--radio-button-label-font-weight, 400);line-height:var(--radio-button-label-line-height, 1.28)}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
52
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.2", ngImport: i0, type: BbiRadioButton, decorators: [{
53
+ type: Component,
54
+ args: [{ selector: 'bbi-radio-button', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
55
+ 'class': 'bbi-radio-button',
56
+ '[class.disabled]': 'disabled',
57
+ '[tabindex]': 'disabled ? -1 : 0'
58
+ }, preserveWhitespaces: false, template: "<div class=\"bbi-radio-button-indicator\"></div>\n<span *ngIf=\"!hideText\"\n class=\"bbi-radio-button-text\"><ng-content></ng-content></span>\n", styles: [".bbi-radio-button{display:flex;cursor:pointer;align-items:center}.bbi-radio-button:not(.disabled):focus>.bbi-radio-button-indicator{outline-color:var(--radio-button-outline-color, var(--accent-color, #1565c0))}.bbi-radio-button.disabled{-webkit-user-select:none;user-select:none;cursor:not-allowed}.bbi-radio-button.disabled>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.disabled>.bbi-radio-button-text{color:var(--radio-button-colors-disabled, #c6c6c6)}.bbi-radio-button.selected>.bbi-radio-button-indicator{border-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0))}.bbi-radio-button.selected>.bbi-radio-button-indicator:after{opacity:1;transform:none}.bbi-radio-button-indicator{display:flex;align-items:center;justify-content:center;width:var(--radio-button-size, 20px);height:var(--radio-button-size, 20px);min-width:var(--radio-button-size, 20px);min-height:var(--radio-button-size, 20px);border-radius:var(--radio-button-border-radius, 50%);outline-offset:var(--radio-button-outline-offset, 1px);outline:var(--radio-button-outline-thickness, 2px) solid transparent;border:var(--radio-button-border-thickness, 1px) solid var(--radio-button-border-color, #111111);transition:outline-color .2s cubic-bezier(0,0,.2,1),border-color .18s cubic-bezier(0,0,.2,1)}.bbi-radio-button-indicator:after{opacity:0;content:\"\";display:block;transform:scale(0);width:calc(var(--radio-button-size, 20px) / 2);height:calc(var(--radio-button-size, 20px) / 2);border-radius:var(--radio-button-border-radius, 50%);background-color:var(--radio-button-colors-accent, var(--accent-color, #1565c0));transition:transform .1s cubic-bezier(0,0,.2,1)}.bbi-radio-button-text{color:var(--radio-button-label-color, #111111);padding-left:var(--radio-button-label-offset, 6px);font-size:var(--radio-button-label-font-size, 16px);font-weight:var(--radio-button-label-font-weight, 400);line-height:var(--radio-button-label-line-height, 1.28)}\n"] }]
59
+ }], ctorParameters: function () { return [{ type: i1.BbiRadioGroup }, { type: i0.ChangeDetectorRef }]; }, propDecorators: { value: [{
60
+ type: Input
61
+ }], disabled: [{
62
+ type: Input
63
+ }], hideText: [{
64
+ type: Input
65
+ }], onClick: [{
66
+ type: HostListener,
67
+ args: ['click']
68
+ }], onSpacePressed: [{
69
+ type: HostListener,
70
+ args: ['keydown.space']
71
+ }], selected: [{
72
+ type: HostBinding,
73
+ args: ['class.selected']
74
+ }] } });
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmFkaW8tYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9yYWRpby9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2JiLWZvdW5kYXRpb24vY29udHJvbHMvc3JjL2xpYi9yYWRpby9yYWRpby1idXR0b24vcmFkaW8tYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyx1QkFBdUIsRUFBcUIsU0FBUyxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3pJLE9BQU8sRUFBZSxxQkFBcUIsRUFBQyxNQUFNLHVCQUF1QixDQUFDOzs7O0FBZ0IxRSxNQUFNLE9BQU8sY0FBYztJQXVEdkIsWUFBb0IsV0FBMEIsRUFDMUIsa0JBQXFDO1FBRHJDLGdCQUFXLEdBQVgsV0FBVyxDQUFlO1FBQzFCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBbUI7UUF0RHpELFVBQVU7UUFDRCxVQUFLLEdBQWUsSUFBSSxDQUFDO1FBZ0IxQixjQUFTLEdBQVksS0FBSyxDQUFDO1FBZ0IzQixjQUFTLEdBQVksS0FBSyxDQUFDO0lBc0JuQyxDQUFDO0lBcERELFlBQVk7SUFDWixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUlELGFBQWE7SUFDYixJQUNJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLEtBQW1CO1FBQzVCLE1BQU0sUUFBUSxHQUFHLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksUUFBUSxLQUFLLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7WUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQUtELE9BQU87UUFDSCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPO1NBQ1Y7UUFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUdELGNBQWM7UUFDVixPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFDSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsV0FBVyxFQUFFLEtBQUssS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2xELENBQUM7OzJHQXJEUSxjQUFjOytGQUFkLGNBQWMsMFdDakIzQix1SkFHQTsyRkRjYSxjQUFjO2tCQWIxQixTQUFTOytCQUNJLGtCQUFrQixtQkFHWCx1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJLFFBQy9CO3dCQUNGLE9BQU8sRUFBRSxrQkFBa0I7d0JBQzNCLGtCQUFrQixFQUFFLFVBQVU7d0JBQzlCLFlBQVksRUFBRSxtQkFBbUI7cUJBQ3BDLHVCQUNvQixLQUFLO29JQUtqQixLQUFLO3NCQUFiLEtBQUs7Z0JBSUYsUUFBUTtzQkFEWCxLQUFLO2dCQWlCRixRQUFRO3NCQURYLEtBQUs7Z0JBZ0JOLE9BQU87c0JBRE4sWUFBWTt1QkFBQyxPQUFPO2dCQVNyQixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZTtnQkFNekIsUUFBUTtzQkFEWCxXQUFXO3VCQUFDLGdCQUFnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksIENoYW5nZURldGVjdG9yUmVmLCBDb21wb25lbnQsIEhvc3RCaW5kaW5nLCBIb3N0TGlzdGVuZXIsIElucHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHtCYmlSYWRpb0dyb3VwfSBmcm9tICcuLi9yYWRpby1ncm91cC9yYWRpby1ncm91cC5jb21wb25lbnQnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JiaS1yYWRpby1idXR0b24nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9yYWRpby1idXR0b24uY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL3JhZGlvLWJ1dHRvbi5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG4gICAgaG9zdDoge1xuICAgICAgICAnY2xhc3MnOiAnYmJpLXJhZGlvLWJ1dHRvbicsXG4gICAgICAgICdbY2xhc3MuZGlzYWJsZWRdJzogJ2Rpc2FibGVkJyxcbiAgICAgICAgJ1t0YWJpbmRleF0nOiAnZGlzYWJsZWQgPyAtMSA6IDAnXG4gICAgfSxcbiAgICBwcmVzZXJ2ZVdoaXRlc3BhY2VzOiBmYWxzZVxufSlcbmV4cG9ydCBjbGFzcyBCYmlSYWRpb0J1dHRvbiB7XG5cbiAgICAvLyBJbnB1dHMuXG4gICAgQElucHV0KCkgdmFsdWU6IGFueSB8IG51bGwgPSBudWxsO1xuXG4gICAgLy8gRGlzYWJsZWQuXG4gICAgQElucHV0KClcbiAgICBnZXQgZGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb0dyb3VwPy5kaXNhYmxlZCB8fCB0aGlzLl9kaXNhYmxlZDtcbiAgICB9XG5cbiAgICBzZXQgZGlzYWJsZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICBjb25zdCBuZXdWYWx1ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgICAgIGlmIChuZXdWYWx1ZSAhPT0gdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIC8vIEhpZGUgdGV4dC5cbiAgICBASW5wdXQoKVxuICAgIGdldCBoaWRlVGV4dCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZGVUZXh0O1xuICAgIH1cblxuICAgIHNldCBoaWRlVGV4dCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIGNvbnN0IG5ld1ZhbHVlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICAgICAgaWYgKG5ld1ZhbHVlICE9PSB0aGlzLmhpZGVUZXh0KSB7XG4gICAgICAgICAgICB0aGlzLl9oaWRlVGV4dCA9IG5ld1ZhbHVlO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9oaWRlVGV4dDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snKVxuICAgIG9uQ2xpY2soKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcmFkaW9Hcm91cC5zZWxlY3QodGhpcy52YWx1ZSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5zcGFjZScpXG4gICAgb25TcGFjZVByZXNzZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9uQ2xpY2soKTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLnNlbGVjdGVkJylcbiAgICBnZXQgc2VsZWN0ZWQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yYWRpb0dyb3VwPy52YWx1ZSA9PT0gdGhpcy52YWx1ZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIF9yYWRpb0dyb3VwOiBCYmlSYWRpb0dyb3VwLFxuICAgICAgICAgICAgICAgIHByaXZhdGUgX2NoYW5nZURldGVjdG9yUmVmOiBDaGFuZ2VEZXRlY3RvclJlZikge1xuICAgIH1cblxuICAgIC8vIFJlcXVpcmVkIHNvIHRoYXQgdGhlIHRlbXBsYXRlIHR5cGUgY2hlY2tlciBjYW4gaW5mZXIgdGhlIHR5cGUgb2YgdGhlIGNvZXJjZWQgaW5wdXRzLlxuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV92YWx1ZTogYW55O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9kaXNhYmxlZDogQm9vbGVhbklucHV0O1xuICAgIHN0YXRpYyBuZ0FjY2VwdElucHV0VHlwZV9oaWRlVGV4dDogQm9vbGVhbklucHV0O1xuXG59XG4iLCI8ZGl2IGNsYXNzPVwiYmJpLXJhZGlvLWJ1dHRvbi1pbmRpY2F0b3JcIj48L2Rpdj5cbjxzcGFuICpuZ0lmPVwiIWhpZGVUZXh0XCJcbiAgICAgIGNsYXNzPVwiYmJpLXJhZGlvLWJ1dHRvbi10ZXh0XCI+PG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pjwvc3Bhbj5cbiJdfQ==