@koobiq/components 18.29.0 → 18.31.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/code-block/_code-block-theme.scss +4 -12
  2. package/code-block/code-block-tokens.scss +3 -2
  3. package/code-block/code-block.scss +41 -10
  4. package/core/common-behaviors/error-state.d.ts +18 -0
  5. package/core/common-behaviors/index.d.ts +1 -1
  6. package/core/formatters/filesize/size.d.ts +19 -3
  7. package/core/forms/validators.d.ts +13 -0
  8. package/core/option/_option-theme.scss +24 -2
  9. package/core/pop-up/pop-up-trigger.d.ts +3 -4
  10. package/core/pop-up/pop-up.d.ts +2 -1
  11. package/core/select/common.d.ts +3 -3
  12. package/core/selection/pseudo-checkbox/pseudo-checkbox.d.ts +1 -1
  13. package/datepicker/datepicker-input.directive.d.ts +14 -5
  14. package/datepicker/datepicker-module.d.ts +1 -1
  15. package/datepicker/datepicker-toggle.component.d.ts +22 -0
  16. package/datepicker/datepicker-toggle.scss +6 -0
  17. package/ellipsis-center/ellipsis-center.directive.d.ts +8 -2
  18. package/esm2022/actions-panel/actions-panel-container.mjs +2 -2
  19. package/esm2022/code-block/code-block.mjs +6 -3
  20. package/esm2022/core/common-behaviors/error-state.mjs +28 -1
  21. package/esm2022/core/common-behaviors/index.mjs +2 -2
  22. package/esm2022/core/formatters/filesize/formatter.mjs +6 -9
  23. package/esm2022/core/formatters/filesize/size.mjs +15 -17
  24. package/esm2022/core/forms/validators.mjs +22 -1
  25. package/esm2022/core/option/option.mjs +2 -2
  26. package/esm2022/core/pop-up/pop-up-trigger.mjs +19 -10
  27. package/esm2022/core/pop-up/pop-up.mjs +6 -2
  28. package/esm2022/core/select/common.mjs +6 -4
  29. package/esm2022/core/selection/pseudo-checkbox/pseudo-checkbox.mjs +3 -3
  30. package/esm2022/core/version.mjs +2 -2
  31. package/esm2022/datepicker/calendar-header.component.mjs +1 -1
  32. package/esm2022/datepicker/datepicker-input.directive.mjs +66 -6
  33. package/esm2022/datepicker/datepicker-module.mjs +8 -3
  34. package/esm2022/datepicker/datepicker-toggle.component.mjs +94 -10
  35. package/esm2022/dropdown/dropdown.component.mjs +3 -3
  36. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +14 -4
  37. package/esm2022/file-upload/file-upload.mjs +2 -1
  38. package/esm2022/file-upload/multiple-file-upload.component.mjs +21 -7
  39. package/esm2022/file-upload/single-file-upload.component.mjs +16 -7
  40. package/esm2022/filter-bar/filter-bar.mjs +11 -3
  41. package/esm2022/filter-bar/filter-bar.types.mjs +1 -1
  42. package/esm2022/filter-bar/filter-search.mjs +2 -2
  43. package/esm2022/filter-bar/filters.mjs +2 -2
  44. package/esm2022/filter-bar/pipe-add.mjs +2 -2
  45. package/esm2022/filter-bar/pipes/pipe-button.mjs +1 -1
  46. package/esm2022/filter-bar/pipes/pipe-date.mjs +2 -2
  47. package/esm2022/filter-bar/pipes/pipe-datetime.mjs +2 -2
  48. package/esm2022/filter-bar/pipes/pipe-multi-select.mjs +29 -9
  49. package/esm2022/filter-bar/pipes/pipe-multi-tree-select.mjs +30 -10
  50. package/esm2022/filter-bar/pipes/pipe-select.mjs +2 -2
  51. package/esm2022/filter-bar/pipes/pipe-text.mjs +2 -2
  52. package/esm2022/filter-bar/pipes/pipe-tree-select.mjs +2 -2
  53. package/esm2022/form-field/form-field.mjs +8 -8
  54. package/esm2022/form-field/stepper.mjs +20 -4
  55. package/esm2022/icon/icon-button.component.mjs +2 -2
  56. package/esm2022/list/list-selection.component.mjs +5 -4
  57. package/esm2022/list/list.component.mjs +2 -2
  58. package/esm2022/overflow-items/overflow-items.mjs +43 -70
  59. package/esm2022/popover/popover.component.mjs +10 -4
  60. package/esm2022/select/select.component.mjs +34 -17
  61. package/esm2022/tabs/tab-group.component.mjs +1 -1
  62. package/esm2022/timezone/timezone-option.component.mjs +2 -2
  63. package/esm2022/timezone/timezone-select.component.mjs +2 -2
  64. package/esm2022/tooltip/tooltip.component.mjs +12 -3
  65. package/esm2022/top-bar/top-bar.mjs +2 -2
  66. package/esm2022/tree/toggle.mjs +2 -2
  67. package/esm2022/tree/tree-option.component.mjs +5 -4
  68. package/esm2022/tree/tree-selection.component.mjs +2 -2
  69. package/esm2022/tree/tree.mjs +2 -2
  70. package/esm2022/tree-select/tree-select.component.mjs +32 -13
  71. package/fesm2022/koobiq-components-actions-panel.mjs +1 -1
  72. package/fesm2022/koobiq-components-actions-panel.mjs.map +1 -1
  73. package/fesm2022/koobiq-components-code-block.mjs +5 -2
  74. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  75. package/fesm2022/koobiq-components-core.mjs +99 -41
  76. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  77. package/fesm2022/koobiq-components-datepicker.mjs +159 -11
  78. package/fesm2022/koobiq-components-datepicker.mjs.map +1 -1
  79. package/fesm2022/koobiq-components-dropdown.mjs +2 -2
  80. package/fesm2022/koobiq-components-dropdown.mjs.map +1 -1
  81. package/fesm2022/koobiq-components-ellipsis-center.mjs +13 -3
  82. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  83. package/fesm2022/koobiq-components-file-upload.mjs +32 -10
  84. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  85. package/fesm2022/koobiq-components-filter-bar.mjs +75 -27
  86. package/fesm2022/koobiq-components-filter-bar.mjs.map +1 -1
  87. package/fesm2022/koobiq-components-form-field.mjs +25 -10
  88. package/fesm2022/koobiq-components-form-field.mjs.map +1 -1
  89. package/fesm2022/koobiq-components-icon.mjs +2 -2
  90. package/fesm2022/koobiq-components-icon.mjs.map +1 -1
  91. package/fesm2022/koobiq-components-list.mjs +6 -5
  92. package/fesm2022/koobiq-components-list.mjs.map +1 -1
  93. package/fesm2022/koobiq-components-overflow-items.mjs +42 -69
  94. package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
  95. package/fesm2022/koobiq-components-popover.mjs +9 -3
  96. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  97. package/fesm2022/koobiq-components-select.mjs +33 -16
  98. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  99. package/fesm2022/koobiq-components-tabs.mjs +1 -1
  100. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  101. package/fesm2022/koobiq-components-timezone.mjs +4 -4
  102. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  103. package/fesm2022/koobiq-components-tooltip.mjs +11 -2
  104. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  105. package/fesm2022/koobiq-components-top-bar.mjs +2 -2
  106. package/fesm2022/koobiq-components-top-bar.mjs.map +1 -1
  107. package/fesm2022/koobiq-components-tree-select.mjs +31 -12
  108. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  109. package/fesm2022/koobiq-components-tree.mjs +10 -9
  110. package/fesm2022/koobiq-components-tree.mjs.map +1 -1
  111. package/file-upload/_file-upload-theme.scss +38 -22
  112. package/file-upload/file-upload-tokens.scss +37 -14
  113. package/file-upload/file-upload.d.ts +1 -0
  114. package/file-upload/multiple-file-upload.component.d.ts +12 -5
  115. package/file-upload/multiple-file-upload.component.scss +66 -69
  116. package/file-upload/single-file-upload.component.d.ts +7 -1
  117. package/file-upload/single-file-upload.component.scss +8 -0
  118. package/filter-bar/filter-bar.d.ts +7 -1
  119. package/filter-bar/filter-bar.types.d.ts +5 -0
  120. package/filter-bar/pipes/pipe-multi-select.d.ts +5 -1
  121. package/filter-bar/pipes/pipe-multi-tree-select.d.ts +5 -1
  122. package/form-field/form-field.d.ts +3 -1
  123. package/form-field/stepper.d.ts +15 -1
  124. package/icon/_icon-button-theme.scss +67 -85
  125. package/list/_list-theme.scss +24 -2
  126. package/list/list-tokens.scss +5 -0
  127. package/overflow-items/overflow-items.d.ts +16 -25
  128. package/package.json +6 -6
  129. package/popover/popover.component.d.ts +4 -2
  130. package/schematics/ng-add/index.js +5 -5
  131. package/select/select.component.d.ts +8 -1
  132. package/tooltip/tooltip.component.d.ts +8 -1
  133. package/top-bar/top-bar.scss +1 -0
  134. package/tree/_tree-theme.scss +30 -7
  135. package/tree/tree-option.scss +5 -2
  136. package/tree/tree-tokens.scss +5 -0
  137. package/tree-select/tree-select.component.d.ts +8 -1
@@ -327,13 +327,8 @@
327
327
  @include kbq-code-block-style(filled);
328
328
  }
329
329
 
330
- .kbq-code-block__content {
331
- border-color: transparent;
332
- }
333
-
334
- .kbq-code-block__content.cdk-keyboard-focused {
335
- outline: none;
336
- border-color: var(--kbq-states-line-focus-theme);
330
+ .kbq-code-block__main.cdk-keyboard-focused {
331
+ outline-color: var(--kbq-states-line-focus-theme);
337
332
  }
338
333
  }
339
334
  }
@@ -342,12 +337,9 @@
342
337
  .kbq-code-block {
343
338
  @include kbq-typography-level-to-styles-css-variables(typography, mono-codeblock);
344
339
 
345
- .kbq-code-block__content {
340
+ .kbq-code-block__pre,
341
+ .kbq-code-block__code {
346
342
  font: inherit;
347
-
348
- .kbq-code-block__code {
349
- font: inherit;
350
- }
351
343
  }
352
344
  }
353
345
  }
@@ -1,6 +1,7 @@
1
1
  .kbq-code-block {
2
- --kbq-code-block-size-container-border-width: 1px;
3
- --kbq-code-block-size-container-border-radius: var(--kbq-size-m);
2
+ --kbq-code-block-size-container-border-width: var(--kbq-size-border-width);
3
+ --kbq-code-block-size-container-border-width-focused: 2px;
4
+ --kbq-code-block-size-container-border-radius: var(--kbq-size-border-radius);
4
5
  --kbq-code-block-size-with-header-content-padding-top: var(--kbq-size-xxs);
5
6
  --kbq-code-block-size-with-header-content-padding-bottom: var(--kbq-size-l);
6
7
  --kbq-code-block-size-with-header-content-padding-horizontal: var(--kbq-size-xl);
@@ -4,11 +4,13 @@
4
4
  display: flex;
5
5
  flex-direction: column;
6
6
  position: relative;
7
- overflow: hidden;
7
+
8
8
  border-width: var(--kbq-code-block-size-container-border-width);
9
9
  border-style: solid;
10
10
  border-radius: var(--kbq-code-block-size-container-border-radius);
11
+
11
12
  box-sizing: border-box;
13
+
12
14
  hyphens: none;
13
15
  -ms-hyphens: none;
14
16
  -moz-hyphens: none;
@@ -44,21 +46,30 @@
44
46
  }
45
47
 
46
48
  &:has(.kbq-code-block__view-all) {
47
- .kbq-code-block__content {
49
+ .kbq-code-block__main {
48
50
  .kbq-code-block__code {
49
51
  padding-bottom: var(--kbq-size-3xl) !important;
50
52
  }
51
53
  }
52
54
  }
53
55
 
54
- .kbq-code-block__content {
56
+ .kbq-code-block__main {
55
57
  flex-grow: 1;
56
- margin: 0;
57
58
  flex-direction: column;
58
- border-width: var(--kbq-code-block-size-container-border-width);
59
- border-style: solid;
59
+
60
60
  border-radius: var(--kbq-code-block-size-container-border-radius);
61
61
 
62
+ &.cdk-keyboard-focused {
63
+ outline-style: solid;
64
+ outline-width: var(--kbq-code-block-size-container-border-width-focused);
65
+ outline-offset: -1px;
66
+ }
67
+
68
+ .kbq-code-block__pre {
69
+ margin: 0;
70
+ flex-grow: 1;
71
+ }
72
+
62
73
  .kbq-code-block__code {
63
74
  tab-size: var(--kbq-code-block-tab-size);
64
75
  padding: var(--kbq-code-block-size-with-header-content-padding-top)
@@ -107,12 +118,18 @@
107
118
  }
108
119
 
109
120
  &.kbq-code-block_view-all {
110
- .kbq-code-block__content {
121
+ .kbq-code-block__main {
111
122
  max-height: unset;
112
123
  overflow: auto;
113
124
  }
114
125
  }
115
126
 
127
+ &:not(.kbq-code-block_view-all) {
128
+ .kbq-code-block__main {
129
+ overflow: hidden;
130
+ }
131
+ }
132
+
116
133
  &.kbq-code-block_hide-tabs {
117
134
  .kbq-code-block__header {
118
135
  padding: 0;
@@ -126,7 +143,7 @@
126
143
  padding: var(--kbq-size-s) var(--kbq-size-m);
127
144
  }
128
145
 
129
- .kbq-code-block__content {
146
+ .kbq-code-block__main {
130
147
  position: relative;
131
148
 
132
149
  .kbq-code-block__code {
@@ -140,12 +157,24 @@
140
157
  }
141
158
  }
142
159
 
160
+ &:not(.kbq-code-block_hide-tabs) {
161
+ .kbq-code-block__header {
162
+ border-radius: var(--kbq-code-block-size-container-border-radius)
163
+ var(--kbq-code-block-size-container-border-radius) 0 0;
164
+ }
165
+
166
+ .kbq-code-block__main {
167
+ border-radius: 0 0 var(--kbq-code-block-size-container-border-radius)
168
+ var(--kbq-code-block-size-container-border-radius);
169
+ }
170
+ }
171
+
143
172
  &.kbq-code-block_show-actionbar .kbq-code-block__actionbar {
144
173
  display: flex;
145
174
  }
146
175
 
147
176
  &:not(:has(.kbq-code-block__view-all)) {
148
- .kbq-code-block__content {
177
+ .kbq-code-block__main {
149
178
  overflow: auto;
150
179
  }
151
180
  }
@@ -154,8 +183,10 @@
154
183
  display: flex;
155
184
  justify-content: center;
156
185
  width: 100%;
186
+
157
187
  position: absolute;
158
- bottom: 0;
188
+ bottom: calc(var(--kbq-code-block-size-container-border-width) * -1);
189
+
159
190
  border-radius: var(--kbq-code-block-size-container-border-radius);
160
191
 
161
192
  .kbq-code-block__view-all__wrapper {
@@ -26,3 +26,21 @@ export interface HasErrorState {
26
26
  * For component with `errorState` and need to update `errorState`.
27
27
  */
28
28
  export declare function mixinErrorState<T extends AbstractConstructor<HasErrorState>>(base: T): CanUpdateErrorStateCtor & T;
29
+ /**
30
+ * Class that tracks the error state of a component.
31
+ * @docs-private
32
+ */
33
+ export declare class KbqErrorStateTracker implements CanUpdateErrorState {
34
+ private defaultMatcher;
35
+ ngControl: NgControl | null;
36
+ private parentFormGroup;
37
+ private parentForm;
38
+ private stateChanges;
39
+ /** Whether the tracker is currently in an error state. */
40
+ errorState: boolean;
41
+ /** User-defined matcher for the error state. */
42
+ errorStateMatcher: ErrorStateMatcher;
43
+ constructor(defaultMatcher: ErrorStateMatcher | null, ngControl: NgControl | null, parentFormGroup: FormGroupDirective | null, parentForm: NgForm | null, stateChanges: Subject<void>);
44
+ /** Updates the error state based on the provided error state matcher. */
45
+ updateErrorState(): void;
46
+ }
@@ -4,7 +4,7 @@ export * from './clipboard';
4
4
  export { CanColor, CanColorCtor, KbqColorDirective, KbqComponentColors, mixinColor, ThemePalette } from './color';
5
5
  export { KBQ_SANITY_CHECKS, KbqCommonModule } from './common-module';
6
6
  export { CanDisable, CanDisableCtor, mixinDisabled } from './disabled';
7
- export { CanUpdateErrorState, CanUpdateErrorStateCtor, mixinErrorState } from './error-state';
7
+ export { CanUpdateErrorState, CanUpdateErrorStateCtor, KbqErrorStateTracker, mixinErrorState } from './error-state';
8
8
  export { KbqDefaultSizes } from './size';
9
9
  export { HasTabIndex, HasTabIndexCtor, mixinTabIndex } from './tabindex';
10
10
  export declare const KBQ_PARENT_ANIMATION_COMPONENT: InjectionToken<any>;
@@ -12,14 +12,30 @@ export declare const formatDataSize: (value: number, precision: number, system:
12
12
  * Converts a byte value into locale-independent file size parts: numeric value and unit abbreviation.
13
13
  *
14
14
  * @param value - size in bytes.
15
- * @param precision - digits after the decimal point (e.g., `2` → "1.02 KB").
16
15
  * @param system - unit system defining abbreviations and base scaling (SI/IEC).
17
16
  * @returns Object with the formatted size info.
18
17
  *
19
18
  * @example
20
- * formatDataSize(1500, 2, 'SI'); // { value: "1.50", unit: "KB" }
19
+ * getFormattedSizeParts(1500, 'SI'); // { value: "1.50", unit: "KB" }
21
20
  */
22
- export declare const getFormattedSizeParts: (value: number, precision: number, system: KbqUnitSystem) => {
21
+ export declare function getFormattedSizeParts(value: number, system: KbqUnitSystem): {
22
+ value: string;
23
+ unit: string;
24
+ };
25
+ /**
26
+ * Converts a byte value into locale-independent file size parts: numeric value and unit abbreviation.
27
+ *
28
+ * @param value - size in bytes.
29
+ * @param _precision param is deprecated, use `Intl.NumberFormat` rounding options instead.
30
+ * @param system - unit system defining abbreviations and base scaling (SI/IEC).
31
+ * @returns Object with the formatted size info.
32
+ * @deprecated `_precision` - this param will be remove in next major version.
33
+ * @TODO remove deprecated (#DS-3849).
34
+ *
35
+ * @example
36
+ * getFormattedSizeParts(1500, 2, 'SI'); // { value: "1.50", unit: "KB" }
37
+ */
38
+ export declare function getFormattedSizeParts(value: number, _precision: number, system: KbqUnitSystem): {
23
39
  value: string;
24
40
  unit: string;
25
41
  };
@@ -104,4 +104,17 @@ export declare class FileValidators {
104
104
  * ```
105
105
  */
106
106
  static maxFileSize(maxSize: number): ValidatorFn;
107
+ /**
108
+ * Validator that checks whether file's name or MIME type
109
+ * matches one of the accepted extensions or MIME types.
110
+ *
111
+ * @param accept - Array of allowed file extensions or MIME types.
112
+ * @returns ValidatorFn that returns validation error if file type is not accepted, or null otherwise.
113
+ */
114
+ static isCorrectExtension(accept: (`.${string}` | `${string}/${string}`)[]): ValidatorFn;
107
115
  }
116
+ /**
117
+ * Type helper describing accepted file types, referring to:
118
+ * @link https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/input/file#unique_file_type_specifiers
119
+ */
120
+ export type KbqFileTypeSpecifier = Parameters<typeof FileValidators.isCorrectExtension>[0];
@@ -24,12 +24,20 @@
24
24
  @include kbq-option(states-hover);
25
25
  }
26
26
 
27
- &.kbq-selected {
27
+ &:active:not(.kbq-disabled) {
28
+ @include kbq-option(states-active);
29
+ }
30
+
31
+ &.kbq-selected:not(.kbq-disabled) {
28
32
  @include kbq-option(states-selected);
29
33
 
30
- &:hover:not(.kbq-disabled) {
34
+ &:hover {
31
35
  @include kbq-option(states-selected-hover);
32
36
  }
37
+
38
+ &:active {
39
+ @include kbq-option(states-selected-active);
40
+ }
33
41
  }
34
42
 
35
43
  &.kbq-disabled {
@@ -47,6 +55,20 @@
47
55
  }
48
56
  }
49
57
 
58
+ .kbq-option-multiple {
59
+ &.kbq-selected:not(.kbq-disabled) {
60
+ @include kbq-option(multiple-states-selected);
61
+
62
+ &:hover {
63
+ @include kbq-option(multiple-states-selected-hover);
64
+ }
65
+
66
+ &:active {
67
+ @include kbq-option(multiple-states-selected-active);
68
+ }
69
+ }
70
+ }
71
+
50
72
  .cdk-keyboard-focused {
51
73
  .kbq-option.kbq-focused,
52
74
  .kbq-option.kbq-active {
@@ -6,8 +6,6 @@ import { BehaviorSubject, Observable, Subscription } from 'rxjs';
6
6
  import { AsyncScheduler } from 'rxjs/internal/scheduler/AsyncScheduler';
7
7
  import { PopUpPlacements } from './constants';
8
8
  import * as i0 from "@angular/core";
9
- /** parameter is used in interval to hide the popup */
10
- export declare const hidingIntervalForHover = 500;
11
9
  export declare abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy {
12
10
  /** Stream that emits when the popupTrigger is hovered. */
13
11
  readonly hovered: BehaviorSubject<boolean>;
@@ -50,8 +48,8 @@ export declare abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy {
50
48
  };
51
49
  protected mouseEvent?: MouseEvent;
52
50
  protected strategy: FlexibleConnectedPositionStrategy;
53
- /** @docs-private */
54
- protected hidingIntervalSubscription: Subscription;
51
+ /** Hide pop-up with timeout. Need if you want to show pop-up after leaving trigger */
52
+ protected hideWithTimeout: boolean;
55
53
  abstract updateClassMap(newPlacement?: string): void;
56
54
  abstract updateData(): void;
57
55
  abstract closingActions(): Observable<any>;
@@ -71,6 +69,7 @@ export declare abstract class KbqPopUpTrigger<T> implements OnInit, OnDestroy {
71
69
  resetOrigin(): void;
72
70
  onPositionChange: ($event: ConnectedOverlayPositionChange) => void;
73
71
  initListeners(): void;
72
+ getMouseLeaveListener(): (delay?: number) => void;
74
73
  /** Updates the position of the current popover. */
75
74
  updatePosition(reapplyPosition?: boolean): void;
76
75
  focus(): void;
@@ -1,5 +1,5 @@
1
1
  import { AnimationEvent } from '@angular/animations';
2
- import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, Renderer2, TemplateRef } from '@angular/core';
2
+ import { ChangeDetectorRef, DestroyRef, ElementRef, EventEmitter, OnDestroy, Renderer2, TemplateRef } from '@angular/core';
3
3
  import { BehaviorSubject, Observable, Subject } from 'rxjs';
4
4
  import { PopUpVisibility } from './constants';
5
5
  import { KbqPopUpTrigger } from './pop-up-trigger';
@@ -8,6 +8,7 @@ export declare abstract class KbqPopUp implements OnDestroy {
8
8
  protected readonly renderer: Renderer2;
9
9
  protected readonly elementRef: ElementRef<any>;
10
10
  protected readonly changeDetectorRef: ChangeDetectorRef;
11
+ readonly destroyRef: DestroyRef;
11
12
  /** Stream that emits when the popup item is hovered. */
12
13
  readonly hovered: BehaviorSubject<boolean>;
13
14
  trigger: KbqPopUpTrigger<unknown>;
@@ -1,6 +1,5 @@
1
1
  import { CdkConnectedOverlay } from '@angular/cdk/overlay';
2
- import { AfterContentInit, OnDestroy } from '@angular/core';
3
- import { Subscription } from 'rxjs';
2
+ import { AfterContentInit, EventEmitter, OnDestroy } from '@angular/core';
4
3
  import { KbqFormFieldRef } from '../form-field';
5
4
  import * as i0 from "@angular/core";
6
5
  export declare class KbqSelectTrigger {
@@ -17,9 +16,10 @@ export declare class KbqSelectFooter {
17
16
  }
18
17
  export declare class KbqSelectSearch implements AfterContentInit, OnDestroy {
19
18
  protected formField: KbqFormFieldRef;
20
- searchChangesSubscription: Subscription;
19
+ readonly changes: EventEmitter<string>;
21
20
  isSearchChanged: boolean;
22
21
  get ngControl(): any;
22
+ private searchChangesSubscription;
23
23
  constructor(formField: KbqFormFieldRef);
24
24
  setPlaceholder(value: string): void;
25
25
  hasPlaceholder(): boolean;
@@ -1,6 +1,6 @@
1
1
  import { KbqColorDirective } from '../../common-behaviors';
2
2
  import * as i0 from "@angular/core";
3
- export type KbqPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate';
3
+ export type KbqPseudoCheckboxState = 'unchecked' | 'checked' | 'indeterminate' | boolean;
4
4
  /**
5
5
  * Component that shows a simplified checkbox without including any kind of "real" checkbox.
6
6
  * Meant to be used when the checkbox is purely decorative and a large number of them will be
@@ -1,6 +1,6 @@
1
- import { ElementRef, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';
1
+ import { AfterContentInit, DoCheck, ElementRef, EventEmitter, OnDestroy, Renderer2 } from '@angular/core';
2
2
  import { AbstractControl, ControlValueAccessor, ValidationErrors, Validator } from '@angular/forms';
3
- import { DateAdapter, KbqDateFormats, KbqLocaleService } from '@koobiq/components/core';
3
+ import { DateAdapter, ErrorStateMatcher, KbqDateFormats, KbqLocaleService } from '@koobiq/components/core';
4
4
  import { KbqFormFieldControl } from '@koobiq/components/form-field';
5
5
  import { KbqWarningTooltipTrigger } from '@koobiq/components/tooltip';
6
6
  import { Subject } from 'rxjs';
@@ -31,14 +31,13 @@ export declare class KbqDatepickerInputEvent<D> {
31
31
  targetElement: HTMLElement);
32
32
  }
33
33
  /** Directive used to connect an input to a KbqDatepicker. */
34
- export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy {
34
+ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, ControlValueAccessor, Validator, OnDestroy, DoCheck, AfterContentInit {
35
35
  elementRef: ElementRef<HTMLInputElement>;
36
36
  private readonly renderer;
37
37
  readonly adapter: DateAdapter<D>;
38
38
  private readonly dateFormats;
39
39
  private localeService;
40
40
  readonly stateChanges: Subject<void>;
41
- readonly errorState: boolean;
42
41
  controlType: string;
43
42
  focused: boolean;
44
43
  datepicker: KbqDatepicker<D>;
@@ -48,6 +47,9 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
48
47
  valueChange: EventEmitter<D | null>;
49
48
  /** Emits when the disabled state has changed */
50
49
  disabledChange: EventEmitter<boolean>;
50
+ /** Object used to control when error messages are shown. */
51
+ get errorStateMatcher(): ErrorStateMatcher;
52
+ set errorStateMatcher(value: ErrorStateMatcher);
51
53
  get placeholder(): string;
52
54
  set placeholder(value: string);
53
55
  private _placeholder;
@@ -90,6 +92,8 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
90
92
  get ngControl(): any;
91
93
  get isReadOnly(): boolean;
92
94
  get dateInputFormat(): string;
95
+ get errorState(): boolean;
96
+ set errorState(value: boolean);
93
97
  private get readyForParse();
94
98
  private get selectionStart();
95
99
  private set selectionStart(value);
@@ -109,11 +113,14 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
109
113
  private thirdDigit;
110
114
  private separatorPositions;
111
115
  private usePlaceholderFromInput;
116
+ private errorStateTracker;
112
117
  constructor(elementRef: ElementRef<HTMLInputElement>, renderer: Renderer2, adapter: DateAdapter<D>, dateFormats: KbqDateFormats, localeService: KbqLocaleService);
118
+ ngDoCheck(): void;
113
119
  onContainerClick(): void;
114
120
  focus(): void;
115
121
  focusChanged(isFocused: boolean): void;
116
122
  onTouched: () => void;
123
+ ngAfterContentInit(): void;
117
124
  ngOnDestroy(): void;
118
125
  /** @docs-private */
119
126
  registerOnValidatorChange(fn: () => void): void;
@@ -131,6 +138,8 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
131
138
  onBlur(): void;
132
139
  onPaste($event: any): any;
133
140
  toISO8601(value: D): string;
141
+ /** Refreshes the error state of the input. */
142
+ updateErrorState(): void;
134
143
  private saveTimePart;
135
144
  private updateLocaleParams;
136
145
  private setFormat;
@@ -191,5 +200,5 @@ export declare class KbqDatepickerInput<D> implements KbqFormFieldControl<D>, Co
191
200
  private createDateTime;
192
201
  private correctCursorPosition;
193
202
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqDatepickerInput<any>, [null, null, { optional: true; }, { optional: true; }, { optional: true; }]>;
194
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqDatepickerInput<any>, "input[kbqDatepicker], input[kbqCalendar]", ["kbqDatepickerInput"], { "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "kbqDatepicker": { "alias": "kbqDatepicker"; "required": false; }; "kbqCalendar": { "alias": "kbqCalendar"; "required": false; }; "kbqDatepickerFilter": { "alias": "kbqDatepickerFilter"; "required": false; }; "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "kbqValidationTooltip": { "alias": "kbqValidationTooltip"; "required": false; }; }, { "incorrectInput": "incorrectInput"; "dateChange": "dateChange"; "dateInput": "dateInput"; }, never, never, false, never>;
203
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqDatepickerInput<any>, "input[kbqDatepicker], input[kbqCalendar]", ["kbqDatepickerInput"], { "errorStateMatcher": { "alias": "errorStateMatcher"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "kbqDatepicker": { "alias": "kbqDatepicker"; "required": false; }; "kbqCalendar": { "alias": "kbqCalendar"; "required": false; }; "kbqDatepickerFilter": { "alias": "kbqDatepickerFilter"; "required": false; }; "value": { "alias": "value"; "required": false; }; "min": { "alias": "min"; "required": false; }; "max": { "alias": "max"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "id": { "alias": "id"; "required": false; }; "kbqValidationTooltip": { "alias": "kbqValidationTooltip"; "required": false; }; }, { "incorrectInput": "incorrectInput"; "dateChange": "dateChange"; "dateInput": "dateInput"; }, never, never, false, never>;
195
204
  }
@@ -15,6 +15,6 @@ import * as i13 from "@koobiq/components/icon";
15
15
  import * as i14 from "@angular/common";
16
16
  export declare class KbqDatepickerModule {
17
17
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqDatepickerModule, never>;
18
- static ɵmod: i0.ɵɵNgModuleDeclaration<KbqDatepickerModule, [typeof i1.KbqCalendar, typeof i2.KbqCalendarBody, typeof i3.KbqDatepicker, typeof i3.KbqDatepickerContent, typeof i4.KbqDatepickerInput, typeof i5.KbqDatepickerToggle, typeof i5.KbqDatepickerToggleIcon, typeof i6.KbqMonthView, typeof i7.KbqCalendarHeader], [typeof i8.KbqButtonModule, typeof i9.OverlayModule, typeof i10.A11yModule, typeof i11.PortalModule, typeof i12.KbqSelectModule, typeof i13.KbqIconModule, typeof i14.NgClass, typeof i14.TitleCasePipe], [typeof i1.KbqCalendar, typeof i2.KbqCalendarBody, typeof i3.KbqDatepicker, typeof i3.KbqDatepickerContent, typeof i4.KbqDatepickerInput, typeof i5.KbqDatepickerToggle, typeof i5.KbqDatepickerToggleIcon, typeof i6.KbqMonthView, typeof i7.KbqCalendarHeader]>;
18
+ static ɵmod: i0.ɵɵNgModuleDeclaration<KbqDatepickerModule, [typeof i1.KbqCalendar, typeof i2.KbqCalendarBody, typeof i3.KbqDatepicker, typeof i3.KbqDatepickerContent, typeof i4.KbqDatepickerInput, typeof i5.KbqDatepickerToggle, typeof i5.KbqDatepickerToggleIcon, typeof i6.KbqMonthView, typeof i7.KbqCalendarHeader], [typeof i8.KbqButtonModule, typeof i9.OverlayModule, typeof i10.A11yModule, typeof i11.PortalModule, typeof i12.KbqSelectModule, typeof i13.KbqIconModule, typeof i5.KbqDatepickerToggleIconComponent, typeof i14.NgClass, typeof i14.TitleCasePipe], [typeof i1.KbqCalendar, typeof i2.KbqCalendarBody, typeof i3.KbqDatepicker, typeof i3.KbqDatepickerContent, typeof i4.KbqDatepickerInput, typeof i5.KbqDatepickerToggle, typeof i5.KbqDatepickerToggleIcon, typeof i5.KbqDatepickerToggleIconComponent, typeof i6.KbqMonthView, typeof i7.KbqCalendarHeader]>;
19
19
  static ɵinj: i0.ɵɵInjectorDeclaration<KbqDatepickerModule>;
20
20
  }
@@ -8,6 +8,28 @@ export declare class KbqDatepickerToggleIcon {
8
8
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqDatepickerToggleIcon, never>;
9
9
  static ɵdir: i0.ɵɵDirectiveDeclaration<KbqDatepickerToggleIcon, "[kbqDatepickerToggleIcon]", never, {}, {}, never, never, false, never>;
10
10
  }
11
+ export declare class KbqDatepickerToggleIconComponent<D> implements AfterContentInit, OnChanges, OnDestroy {
12
+ /** Whether the toggle button is disabled. */
13
+ get disabled(): boolean;
14
+ set disabled(value: boolean);
15
+ private _disabled;
16
+ /** Datepicker instance that the button will toggle. */
17
+ datepicker: KbqDatepicker<D>;
18
+ private readonly destroyRef;
19
+ private readonly cdr;
20
+ private stateChangesSubscription;
21
+ ngOnChanges(changes: SimpleChanges): void;
22
+ ngAfterContentInit(): void;
23
+ ngOnDestroy(): void;
24
+ /** Open datepicker */
25
+ open($event: MouseEvent): void;
26
+ private watchStateChanges;
27
+ static ɵfac: i0.ɵɵFactoryDeclaration<KbqDatepickerToggleIconComponent<any>, never>;
28
+ static ɵcmp: i0.ɵɵComponentDeclaration<KbqDatepickerToggleIconComponent<any>, "kbq-datepicker-toggle-icon", never, { "disabled": { "alias": "disabled"; "required": false; }; "datepicker": { "alias": "for"; "required": false; }; }, {}, never, ["[kbqDatepickerToggleIcon]"], true, never>;
29
+ }
30
+ /**
31
+ * @deprecated Use `KbqDatepickerToggleIconComponent` instead
32
+ */
11
33
  export declare class KbqDatepickerToggle<D> implements AfterContentInit, OnChanges, OnDestroy {
12
34
  intl: KbqDatepickerIntl;
13
35
  private changeDetectorRef;
@@ -1,6 +1,12 @@
1
1
  @use '../core/styles/tokens';
2
2
  @use '../core/styles/common/tokens' as *;
3
3
 
4
+ .kbq-datepicker-toggle-icon {
5
+ display: inline-flex;
6
+ justify-content: center;
7
+ align-items: center;
8
+ }
9
+
4
10
  .kbq-datepicker-toggle:focus {
5
11
  outline: 0;
6
12
  }
@@ -4,19 +4,25 @@ import { Subject } from 'rxjs';
4
4
  import * as i0 from "@angular/core";
5
5
  export declare class KbqEllipsisCenterDirective extends KbqTooltipTrigger implements OnInit, AfterViewInit, OnDestroy {
6
6
  private renderer;
7
+ private cdr;
7
8
  set kbqEllipsisCenter(value: string);
8
9
  minVisibleLength: number;
9
10
  charWidth: number;
11
+ /**
12
+ * Debounce time (ms) for resize events before recalculating ellipsis position.
13
+ * @default 50
14
+ */
15
+ debounceInterval: number;
10
16
  readonly resizeStream: Subject<Event>;
11
17
  private _kbqEllipsisCenter;
12
18
  private resizeSubscription;
13
- private readonly debounceInterval;
14
19
  ngOnInit(): void;
15
20
  ngAfterViewInit(): void;
16
21
  ngOnDestroy(): void;
17
22
  private refresh;
18
23
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqEllipsisCenterDirective, never>;
19
- static ɵdir: i0.ɵɵDirectiveDeclaration<KbqEllipsisCenterDirective, "[kbqEllipsisCenter]", never, { "kbqEllipsisCenter": { "alias": "kbqEllipsisCenter"; "required": false; }; "minVisibleLength": { "alias": "minVisibleLength"; "required": false; }; "charWidth": { "alias": "charWidth"; "required": false; }; }, {}, never, never, false, never>;
24
+ static ɵdir: i0.ɵɵDirectiveDeclaration<KbqEllipsisCenterDirective, "[kbqEllipsisCenter]", never, { "kbqEllipsisCenter": { "alias": "kbqEllipsisCenter"; "required": false; }; "minVisibleLength": { "alias": "minVisibleLength"; "required": false; }; "charWidth": { "alias": "charWidth"; "required": false; }; "debounceInterval": { "alias": "debounceInterval"; "required": false; }; }, {}, never, never, false, never>;
25
+ static ngAcceptInputType_debounceInterval: unknown;
20
26
  }
21
27
  export declare class KbqEllipsisCenterModule {
22
28
  static ɵfac: i0.ɵɵFactoryDeclaration<KbqEllipsisCenterModule, never>;
@@ -178,7 +178,7 @@ export class KbqActionsPanelContainer extends CdkDialogContainer {
178
178
  <i kbq-icon="kbq-xmark-circle_16"></i>
179
179
  </button>
180
180
  }
181
- `, isInline: true, styles: [".kbq-actions-panel-container,.kbq-actions-panel-overlay{--kbq-actions-panel-background-color: var(--kbq-background-contrast);--kbq-actions-panel-text-color: var(--kbq-foreground-on-contrast);--kbq-actions-panel-padding: var(--kbq-size-s);--kbq-actions-panel-margin: var(--kbq-size-s) var(--kbq-size-s) var(--kbq-size-l);--kbq-actions-panel-border-radius: var(--kbq-size-l);--kbq-actions-panel-box-shadow: var(--kbq-shadow-card);--kbq-actions-panel-height: var(--kbq-size-5xl);--kbq-actions-panel-vertical-divider-background-color: var(--kbq-line-contrast-fade);--kbq-actions-panel-vertical-divider-height: var(--kbq-size-m);--kbq-actions-panel-vertical-divider-margin: 0 var(--kbq-size-s)}\n", ".kbq-actions-panel-container{background:var(--kbq-actions-panel-background-color);color:var(--kbq-actions-panel-text-color);box-shadow:var(--kbq-actions-panel-box-shadow);height:var(--kbq-actions-panel-height);padding:var(--kbq-actions-panel-padding);border-radius:var(--kbq-actions-panel-border-radius);display:flex;flex-grow:1;align-items:center;overflow:hidden;box-sizing:border-box}.kbq-actions-panel-container .kbq-actions-panel-container__content{display:flex;align-items:center;flex-grow:1;overflow:hidden}.kbq-actions-panel-container .kbq-actions-panel-container__vertical-divider{background-color:var(--kbq-actions-panel-vertical-divider-background-color);height:var(--kbq-actions-panel-vertical-divider-height)!important;margin:var(--kbq-actions-panel-vertical-divider-margin)}.kbq-actions-panel-overlay{margin:var(--kbq-actions-panel-margin)}.kbq-actions-panel-overlay-container{position:relative}\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "component", type: i1.KbqDivider, selector: "kbq-divider", inputs: ["vertical", "inset", "paddings"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqToolTipModule }, { kind: "directive", type: i4.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }], animations: [KBQ_ACTIONS_PANEL_CONTAINER_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
181
+ `, isInline: true, styles: [".kbq-actions-panel-container,.kbq-actions-panel-overlay{--kbq-actions-panel-background-color: var(--kbq-background-contrast);--kbq-actions-panel-text-color: var(--kbq-foreground-on-contrast);--kbq-actions-panel-padding: var(--kbq-size-s);--kbq-actions-panel-margin: var(--kbq-size-s) var(--kbq-size-s) var(--kbq-size-l);--kbq-actions-panel-border-radius: var(--kbq-size-l);--kbq-actions-panel-box-shadow: var(--kbq-shadow-card);--kbq-actions-panel-height: var(--kbq-size-5xl);--kbq-actions-panel-vertical-divider-background-color: var(--kbq-line-contrast-fade);--kbq-actions-panel-vertical-divider-height: var(--kbq-size-m);--kbq-actions-panel-vertical-divider-margin: 0 var(--kbq-size-s)}\n", ".kbq-actions-panel-container{background:var(--kbq-actions-panel-background-color);color:var(--kbq-actions-panel-text-color);box-shadow:var(--kbq-actions-panel-box-shadow);height:var(--kbq-actions-panel-height);padding:var(--kbq-actions-panel-padding);border-radius:var(--kbq-actions-panel-border-radius);display:flex;flex-grow:1;align-items:center;overflow:hidden;box-sizing:border-box}.kbq-actions-panel-container .kbq-actions-panel-container__content{display:flex;align-items:center;flex-grow:1;overflow:hidden}.kbq-actions-panel-container .kbq-actions-panel-container__vertical-divider{background-color:var(--kbq-actions-panel-vertical-divider-background-color);height:var(--kbq-actions-panel-vertical-divider-height)!important;margin:var(--kbq-actions-panel-vertical-divider-margin)}.kbq-actions-panel-overlay{margin:var(--kbq-actions-panel-margin)}.kbq-actions-panel-overlay-container{position:relative}\n"], dependencies: [{ kind: "directive", type: CdkPortalOutlet, selector: "[cdkPortalOutlet]", inputs: ["cdkPortalOutlet"], outputs: ["attached"], exportAs: ["cdkPortalOutlet"] }, { kind: "ngmodule", type: KbqDividerModule }, { kind: "component", type: i1.KbqDivider, selector: "kbq-divider", inputs: ["vertical", "inset", "paddings"] }, { kind: "ngmodule", type: KbqButtonModule }, { kind: "component", type: i2.KbqButton, selector: "[kbq-button]", inputs: ["kbqStyle", "disabled", "tabIndex"] }, { kind: "directive", type: i2.KbqButtonCssStyler, selector: "[kbq-button]" }, { kind: "ngmodule", type: KbqIconModule }, { kind: "component", type: i3.KbqIcon, selector: "[kbq-icon]", inputs: ["small", "autoColor", "kbq-icon"] }, { kind: "ngmodule", type: KbqToolTipModule }, { kind: "directive", type: i4.KbqTooltipTrigger, selector: "[kbqTooltip]", inputs: ["hideWithTimeout", "kbqVisible", "kbqPlacement", "kbqRelativeToPointer", "kbqPlacementPriority", "kbqTooltip", "kbqTooltipDisabled", "kbqEnterDelay", "kbqLeaveDelay", "kbqTrigger", "kbqTooltipClass", "kbqTooltipContext", "kbqTooltipColor", "kbqTooltipArrow", "kbqTooltipOffset"], outputs: ["kbqPlacementChange", "kbqVisibleChange"], exportAs: ["kbqTooltip"] }], animations: [KBQ_ACTIONS_PANEL_CONTAINER_ANIMATION], changeDetection: i0.ChangeDetectionStrategy.Default, encapsulation: i0.ViewEncapsulation.None }); }
182
182
  }
183
183
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: KbqActionsPanelContainer, decorators: [{
184
184
  type: Component,
@@ -214,4 +214,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
214
214
  '(keydown.escape)': 'handleEscape($event)'
215
215
  }, changeDetection: ChangeDetectionStrategy.Default, encapsulation: ViewEncapsulation.None, styles: [".kbq-actions-panel-container,.kbq-actions-panel-overlay{--kbq-actions-panel-background-color: var(--kbq-background-contrast);--kbq-actions-panel-text-color: var(--kbq-foreground-on-contrast);--kbq-actions-panel-padding: var(--kbq-size-s);--kbq-actions-panel-margin: var(--kbq-size-s) var(--kbq-size-s) var(--kbq-size-l);--kbq-actions-panel-border-radius: var(--kbq-size-l);--kbq-actions-panel-box-shadow: var(--kbq-shadow-card);--kbq-actions-panel-height: var(--kbq-size-5xl);--kbq-actions-panel-vertical-divider-background-color: var(--kbq-line-contrast-fade);--kbq-actions-panel-vertical-divider-height: var(--kbq-size-m);--kbq-actions-panel-vertical-divider-margin: 0 var(--kbq-size-s)}\n", ".kbq-actions-panel-container{background:var(--kbq-actions-panel-background-color);color:var(--kbq-actions-panel-text-color);box-shadow:var(--kbq-actions-panel-box-shadow);height:var(--kbq-actions-panel-height);padding:var(--kbq-actions-panel-padding);border-radius:var(--kbq-actions-panel-border-radius);display:flex;flex-grow:1;align-items:center;overflow:hidden;box-sizing:border-box}.kbq-actions-panel-container .kbq-actions-panel-container__content{display:flex;align-items:center;flex-grow:1;overflow:hidden}.kbq-actions-panel-container .kbq-actions-panel-container__vertical-divider{background-color:var(--kbq-actions-panel-vertical-divider-background-color);height:var(--kbq-actions-panel-vertical-divider-height)!important;margin:var(--kbq-actions-panel-vertical-divider-margin)}.kbq-actions-panel-overlay{margin:var(--kbq-actions-panel-margin)}.kbq-actions-panel-overlay-container{position:relative}\n"] }]
216
216
  }] });
217
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1wYW5lbC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2FjdGlvbnMtcGFuZWwvYWN0aW9ucy1wYW5lbC1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILE9BQU8sRUFDUCxZQUFZLEVBRVosS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBR2QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0IsRUFFbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixjQUFjLEVBQ2pCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFC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ZCxcbiAgICBBbmltYXRpb25FdmVudCxcbiAgICBncm91cCxcbiAgICBxdWVyeSxcbiAgICBzdGF0ZSxcbiAgICBzdHlsZSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtEaWFsb2dDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IENka1BvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBPbkRlc3Ryb3ksXG4gICAgUHJvdmlkZXIsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBLYnFCdXR0b25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgS0JRX0xPQ0FMRV9TRVJWSUNFLFxuICAgIEticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb24sXG4gICAgS2JxQW5pbWF0aW9uQ3VydmVzLFxuICAgIEticUFuaW1hdGlvbkR1cmF0aW9ucyxcbiAgICBydVJVTG9jYWxlRGF0YVxufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFEaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2RpdmlkZXInO1xuaW1wb3J0IHsgS2JxSWNvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IEticVRvb2xUaXBNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLYnFBY3Rpb25zUGFuZWwgfSBmcm9tICcuL2FjdGlvbnMtcGFuZWwnO1xuaW1wb3J0IHsgS2JxQWN0aW9uc1BhbmVsQ29uZmlnIH0gZnJvbSAnLi9hY3Rpb25zLXBhbmVsLWNvbmZpZyc7XG5cbi8qKiBMb2NhbGl6YXRpb24gY29uZmlndXJhdGlvbiBwcm92aWRlci4gKi9cbmV4cG9ydCBjb25zdCBLQlFfQUNUSU9OU19QQU5FTF9MT0NBTEVfQ09ORklHVVJBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uPihcbiAgICAnS0JRX0FDVElPTlNfUEFORUxfTE9DQUxFX0NPTkZJR1VSQVRJT04nLFxuICAgIHsgZmFjdG9yeTogKCkgPT4gcnVSVUxvY2FsZURhdGEuYWN0aW9uc1BhbmVsIH1cbik7XG5cbi8qKiBVdGlsaXR5IHByb3ZpZGVyIGZvciBgS0JRX0FDVElPTlNfUEFORUxfTE9DQUxFX0NPTkZJR1VSQVRJT05gLiAqL1xuZXhwb3J0IGNvbnN0IGticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb25Qcm92aWRlciA9IChcbiAgICBjb25maWd1cmF0aW9uOiBLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uXG4pOiBQcm92aWRlciA9PiAoe1xuICAgIHByb3ZpZGU6IEtCUV9BQ1RJT05TX1BBTkVMX0xPQ0FMRV9DT05GSUdVUkFUSU9OLFxuICAgIHVzZVZhbHVlOiBjb25maWd1cmF0aW9uXG59KTtcblxuLyoqXG4gKiBBbmltYXRpb24gdGhhdCBzaG93cyBhbmQgaGlkZXMgdGhlIGFjdGlvbnMgcGFuZWwuXG4gKi9cbmNvbnN0IEtCUV9BQ1RJT05TX1BBTkVMX0NPTlRBSU5FUl9BTklNQVRJT04gPSB0cmlnZ2VyKCdzdGF0ZScsIFtcbiAgICBzdGF0ZSgndm9pZCwgaGlkZGVuJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJyB9KSksXG4gICAgc3RhdGUoJ3Zpc2libGUnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCUpJyB9KSksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJ3Zpc2libGUgPT4gdm9pZCwgdmlzaWJsZSA9PiBoaWRkZW4nLFxuICAgICAgICBncm91cChbXG4gICAgICAgICAgICBhbmltYXRlKGAke0ticUFuaW1hdGlvbkR1cmF0aW9ucy5FbnRlcmluZ30gJHtLYnFBbmltYXRpb25DdXJ2ZXMuU3RhbmRhcmRDdXJ2ZX1gKSxcbiAgICAgICAgICAgIHF1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICAgIF0pXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAndm9pZCA9PiB2aXNpYmxlJyxcbiAgICAgICAgZ3JvdXAoW1xuICAgICAgICAgICAgYW5pbWF0ZShgJHtLYnFBbmltYXRpb25EdXJhdGlvbnMuRXhpdGluZ30gJHtLYnFBbmltYXRpb25DdXJ2ZXMuU3RhbmRhcmRDdXJ2ZX1gKSxcbiAgICAgICAgICAgIHF1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICAgIF0pXG4gICAgKVxuXSk7XG5cbi8qKlxuICogSW50ZXJuYWwgY29tcG9uZW50IHRoYXQgd3JhcHMgdXNlci1wcm92aWRlZCBhY3Rpb25zIHBhbmVsIGNvbnRlbnQuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrUG9ydGFsT3V0bGV0LFxuICAgICAgICBLYnFEaXZpZGVyTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticUljb25Nb2R1bGUsXG4gICAgICAgIEticVRvb2xUaXBNb2R1bGVcbiAgICBdLFxuICAgIHNlbGVjdG9yOiAna2JxLWFjdGlvbnMtcGFuZWwtY29udGFpbmVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFjdGlvbnMtcGFuZWwtY29udGFpbmVyX19jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKCFjb25maWcuZGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICA8a2JxLWRpdmlkZXIgY2xhc3M9XCJrYnEtYWN0aW9ucy1wYW5lbC1jb250YWluZXJfX3ZlcnRpY2FsLWRpdmlkZXJcIiBbdmVydGljYWxdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJrYnEtYWN0aW9ucy1wYW5lbC1jb250YWluZXJfX2Nsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBdPVwibG9jYWxlQ29uZmlndXJhdGlvbigpIS5jbG9zZVRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIFtrYnFUb29sdGlwT2Zmc2V0XT1cIjE2XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJjb250cmFzdFwiXG4gICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXhtYXJrLWNpcmNsZV8xNlwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFtcbiAgICAgICAgJy4vYWN0aW9ucy1wYW5lbC10b2tlbnMuc2NzcycsXG4gICAgICAgICcuL2FjdGlvbnMtcGFuZWwtY29udGFpbmVyLnNjc3MnXG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbS0JRX0FDVElPTlNfUEFORUxfQ09OVEFJTkVSX0FOSU1BVElPTl0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1hY3Rpb25zLXBhbmVsLWNvbnRhaW5lcicsXG4gICAgICAgICdbY2xhc3Mua2JxLWFjdGlvbnMtcGFuZWwtY29udGFpbmVyX3J0bF0nOiAnY29uZmlnLmRpcmVjdGlvbiA9PT0gXCJydGxcIicsXG4gICAgICAgICdbQHN0YXRlXSc6ICdhbmltYXRpb25TdGF0ZScsXG4gICAgICAgICcoQHN0YXRlLnN0YXJ0KSc6ICdvbkFuaW1hdGlvblN0YXJ0KCRldmVudCknLFxuICAgICAgICAnKEBzdGF0ZS5kb25lKSc6ICdvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5lc2NhcGUpJzogJ2hhbmRsZUVzY2FwZSgkZXZlbnQpJ1xuICAgIH0sXG4gICAgLy8gVXNlcyB0aGUgYERlZmF1bHRgIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kgYXMgcGFyZW50IGBDZGtEaWFsb2dDb250YWluZXJgOlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi8xOC4yLjE0L3NyYy9jZGsvZGlhbG9nL2RpYWxvZy1jb250YWluZXIudHMjTDYwXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxQWN0aW9uc1BhbmVsQ29udGFpbmVyIGV4dGVuZHMgQ2RrRGlhbG9nQ29udGFpbmVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIGFjdGlvbnMgcGFuZWwgYW5pbWF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICd2aXNpYmxlJyB8ICdoaWRkZW4nID0gJ3ZvaWQnO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIHN0YXRlIG9mIHRoZSBhbmltYXRpb24gY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICByZWFkb25seSBhbmltYXRpb25TdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGFjdGlvbnMgcGFuZWwgY29udGFpbmVyIGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgICBwcml2YXRlIGRlc3Ryb3llZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFjdGlvbnMgcGFuZWwgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEticUFjdGlvbnNQYW5lbENvbmZpZyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnNQYW5lbCA9IGluamVjdChLYnFBY3Rpb25zUGFuZWwpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWN0aW9ucyBwYW5lbCBsb2NhbGUgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlQ29uZmlndXJhdGlvbiA9IHRvU2lnbmFsPEticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb24+KFxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgID8gdGhpcy5sb2NhbGVTZXJ2aWNlLmNoYW5nZXMucGlwZShtYXAoKCkgPT4gdGhpcy5sb2NhbGVTZXJ2aWNlIS5nZXRQYXJhbXMoJ2FjdGlvbnNQYW5lbCcpKSlcbiAgICAgICAgICAgIDogb2YoaW5qZWN0KEtCUV9BQ1RJT05TX1BBTkVMX0xPQ0FMRV9DT05GSUdVUkFUSU9OKSlcbiAgICApO1xuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgYWN0aW9ucyBwYW5lbC5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uc1BhbmVsLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnQgYW5pbWF0aW9uIG9mIHRoZSBhY3Rpb25zIHBhbmVsIGVudHJhbmNlIGludG8gdmlldy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzdGFydE9wZW5BbmltYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAvLyBhbmltYXRpb25TdGF0ZSBsaXZlcyBpbiBob3N0IGJpbmRpbmdzIGFuZCBgZGV0ZWN0Q2hhbmdlc2AgZG9lcyBub3QgcmVmcmVzaCBob3N0IGJpbmRpbmdzICBzbyB3ZSBoYXZlIHRvXG4gICAgICAgICAgICAvLyBjYWxsIGBtYXJrRm9yQ2hlY2tgIHRvIGVuc3VyZSB0aGUgaG9zdCB2aWV3IGlzIHJlZnJlc2hlZCBldmVudHVhbGx5LlxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFydCBhbmltYXRpb24gb2YgdGhlIGFjdGlvbnMgcGFuZWwgZXhpdGluZyBmcm9tIHZpZXcuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgc3RhcnRDbG9zZUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGFuaW1hdGlvbiBkb25lIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICB0aGlzLl90cmFwRm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYW5pbWF0aW9uIHN0YXJ0IGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25BbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBlc2NhcGUga2V5IGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXNjYXBlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfY29udGVudEF0dGFjaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFwcGx5Q29udGFpbmVyQ2xhc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5Q29udGFpbmVyQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY29udGFpbmVyQ2xhc3MgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgICAgIGlmIChjb250YWluZXJDbGFzcykge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGFpbmVyQ2xhc3MpKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyQ2xhc3MuZm9yRWFjaCgoY3NzQ2xhc3MpID0+IHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjc3NDbGFzcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY29udGFpbmVyQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
217
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9ucy1wYW5lbC1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21wb25lbnRzL2FjdGlvbnMtcGFuZWwvYWN0aW9ucy1wYW5lbC1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILE9BQU8sRUFDUCxZQUFZLEVBRVosS0FBSyxFQUNMLEtBQUssRUFDTCxLQUFLLEVBQ0wsS0FBSyxFQUNMLFVBQVUsRUFDVixPQUFPLEVBQ1YsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN6RCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBQ1QsWUFBWSxFQUNaLE1BQU0sRUFDTixjQUFjLEVBR2QsU0FBUyxFQUNULGlCQUFpQixFQUNwQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFDSCxrQkFBa0IsRUFFbEIsa0JBQWtCLEVBQ2xCLHFCQUFxQixFQUNyQixjQUFjLEVBQ2pCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFDOUQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3hELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzlELE9BQU8sRUFBRSxHQUFHLEVBQUUsRUFBRSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUscUJBQXFC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ZCxcbiAgICBBbmltYXRpb25FdmVudCxcbiAgICBncm91cCxcbiAgICBxdWVyeSxcbiAgICBzdGF0ZSxcbiAgICBzdHlsZSxcbiAgICB0cmFuc2l0aW9uLFxuICAgIHRyaWdnZXJcbn0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDZGtEaWFsb2dDb250YWluZXIgfSBmcm9tICdAYW5ndWxhci9jZGsvZGlhbG9nJztcbmltcG9ydCB7IENka1BvcnRhbE91dGxldCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xuaW1wb3J0IHtcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBPbkRlc3Ryb3ksXG4gICAgUHJvdmlkZXIsXG4gICAgUmVuZGVyZXIyLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgdG9TaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBLYnFCdXR0b25Nb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvYnV0dG9uJztcbmltcG9ydCB7XG4gICAgS0JRX0xPQ0FMRV9TRVJWSUNFLFxuICAgIEticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb24sXG4gICAgS2JxQW5pbWF0aW9uQ3VydmVzLFxuICAgIEticUFuaW1hdGlvbkR1cmF0aW9ucyxcbiAgICBydVJVTG9jYWxlRGF0YVxufSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvY29yZSc7XG5pbXBvcnQgeyBLYnFEaXZpZGVyTW9kdWxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2RpdmlkZXInO1xuaW1wb3J0IHsgS2JxSWNvbk1vZHVsZSB9IGZyb20gJ0Brb29iaXEvY29tcG9uZW50cy9pY29uJztcbmltcG9ydCB7IEticVRvb2xUaXBNb2R1bGUgfSBmcm9tICdAa29vYmlxL2NvbXBvbmVudHMvdG9vbHRpcCc7XG5pbXBvcnQgeyBtYXAsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBLYnFBY3Rpb25zUGFuZWwgfSBmcm9tICcuL2FjdGlvbnMtcGFuZWwnO1xuaW1wb3J0IHsgS2JxQWN0aW9uc1BhbmVsQ29uZmlnIH0gZnJvbSAnLi9hY3Rpb25zLXBhbmVsLWNvbmZpZyc7XG5cbi8qKiBMb2NhbGl6YXRpb24gY29uZmlndXJhdGlvbiBwcm92aWRlci4gKi9cbmV4cG9ydCBjb25zdCBLQlFfQUNUSU9OU19QQU5FTF9MT0NBTEVfQ09ORklHVVJBVElPTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uPihcbiAgICAnS0JRX0FDVElPTlNfUEFORUxfTE9DQUxFX0NPTkZJR1VSQVRJT04nLFxuICAgIHsgZmFjdG9yeTogKCkgPT4gcnVSVUxvY2FsZURhdGEuYWN0aW9uc1BhbmVsIH1cbik7XG5cbi8qKiBVdGlsaXR5IHByb3ZpZGVyIGZvciBgS0JRX0FDVElPTlNfUEFORUxfTE9DQUxFX0NPTkZJR1VSQVRJT05gLiAqL1xuZXhwb3J0IGNvbnN0IGticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb25Qcm92aWRlciA9IChcbiAgICBjb25maWd1cmF0aW9uOiBLYnFBY3Rpb25zUGFuZWxMb2NhbGVDb25maWd1cmF0aW9uXG4pOiBQcm92aWRlciA9PiAoe1xuICAgIHByb3ZpZGU6IEtCUV9BQ1RJT05TX1BBTkVMX0xPQ0FMRV9DT05GSUdVUkFUSU9OLFxuICAgIHVzZVZhbHVlOiBjb25maWd1cmF0aW9uXG59KTtcblxuLyoqXG4gKiBBbmltYXRpb24gdGhhdCBzaG93cyBhbmQgaGlkZXMgdGhlIGFjdGlvbnMgcGFuZWwuXG4gKi9cbmNvbnN0IEtCUV9BQ1RJT05TX1BBTkVMX0NPTlRBSU5FUl9BTklNQVRJT04gPSB0cmlnZ2VyKCdzdGF0ZScsIFtcbiAgICBzdGF0ZSgndm9pZCwgaGlkZGVuJywgc3R5bGUoeyB0cmFuc2Zvcm06ICd0cmFuc2xhdGVZKDEwMCUpJyB9KSksXG4gICAgc3RhdGUoJ3Zpc2libGUnLCBzdHlsZSh7IHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoMCUpJyB9KSksXG4gICAgdHJhbnNpdGlvbihcbiAgICAgICAgJ3Zpc2libGUgPT4gdm9pZCwgdmlzaWJsZSA9PiBoaWRkZW4nLFxuICAgICAgICBncm91cChbXG4gICAgICAgICAgICBhbmltYXRlKGAke0ticUFuaW1hdGlvbkR1cmF0aW9ucy5FbnRlcmluZ30gJHtLYnFBbmltYXRpb25DdXJ2ZXMuU3RhbmRhcmRDdXJ2ZX1gKSxcbiAgICAgICAgICAgIHF1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICAgIF0pXG4gICAgKSxcbiAgICB0cmFuc2l0aW9uKFxuICAgICAgICAndm9pZCA9PiB2aXNpYmxlJyxcbiAgICAgICAgZ3JvdXAoW1xuICAgICAgICAgICAgYW5pbWF0ZShgJHtLYnFBbmltYXRpb25EdXJhdGlvbnMuRXhpdGluZ30gJHtLYnFBbmltYXRpb25DdXJ2ZXMuU3RhbmRhcmRDdXJ2ZX1gKSxcbiAgICAgICAgICAgIHF1ZXJ5KCdAKicsIGFuaW1hdGVDaGlsZCgpLCB7IG9wdGlvbmFsOiB0cnVlIH0pXG4gICAgICAgIF0pXG4gICAgKVxuXSk7XG5cbi8qKlxuICogSW50ZXJuYWwgY29tcG9uZW50IHRoYXQgd3JhcHMgdXNlci1wcm92aWRlZCBhY3Rpb25zIHBhbmVsIGNvbnRlbnQuXG4gKlxuICogQGRvY3MtcHJpdmF0ZVxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ2RrUG9ydGFsT3V0bGV0LFxuICAgICAgICBLYnFEaXZpZGVyTW9kdWxlLFxuICAgICAgICBLYnFCdXR0b25Nb2R1bGUsXG4gICAgICAgIEticUljb25Nb2R1bGUsXG4gICAgICAgIEticVRvb2xUaXBNb2R1bGVcbiAgICBdLFxuICAgIHNlbGVjdG9yOiAna2JxLWFjdGlvbnMtcGFuZWwtY29udGFpbmVyJyxcbiAgICB0ZW1wbGF0ZTogYFxuICAgICAgICA8ZGl2IGNsYXNzPVwia2JxLWFjdGlvbnMtcGFuZWwtY29udGFpbmVyX19jb250ZW50XCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgY2RrUG9ydGFsT3V0bGV0IC8+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICBAaWYgKCFjb25maWcuZGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICA8a2JxLWRpdmlkZXIgY2xhc3M9XCJrYnEtYWN0aW9ucy1wYW5lbC1jb250YWluZXJfX3ZlcnRpY2FsLWRpdmlkZXJcIiBbdmVydGljYWxdPVwidHJ1ZVwiIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJrYnEtYWN0aW9ucy1wYW5lbC1jb250YWluZXJfX2Nsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgW2ticVRvb2x0aXBdPVwibG9jYWxlQ29uZmlndXJhdGlvbigpIS5jbG9zZVRvb2x0aXBcIlxuICAgICAgICAgICAgICAgIFtrYnFUb29sdGlwT2Zmc2V0XT1cIjE2XCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiY2xvc2UoKVwiXG4gICAgICAgICAgICAgICAgY29sb3I9XCJjb250cmFzdFwiXG4gICAgICAgICAgICAgICAga2JxLWJ1dHRvblxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpIGticS1pY29uPVwia2JxLXhtYXJrLWNpcmNsZV8xNlwiPjwvaT5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICB9XG4gICAgYCxcbiAgICBzdHlsZVVybHM6IFtcbiAgICAgICAgJy4vYWN0aW9ucy1wYW5lbC10b2tlbnMuc2NzcycsXG4gICAgICAgICcuL2FjdGlvbnMtcGFuZWwtY29udGFpbmVyLnNjc3MnXG4gICAgXSxcbiAgICBhbmltYXRpb25zOiBbS0JRX0FDVElPTlNfUEFORUxfQ09OVEFJTkVSX0FOSU1BVElPTl0sXG4gICAgaG9zdDoge1xuICAgICAgICBjbGFzczogJ2ticS1hY3Rpb25zLXBhbmVsLWNvbnRhaW5lcicsXG4gICAgICAgICdbY2xhc3Mua2JxLWFjdGlvbnMtcGFuZWwtY29udGFpbmVyX3J0bF0nOiAnY29uZmlnLmRpcmVjdGlvbiA9PT0gXCJydGxcIicsXG4gICAgICAgICdbQHN0YXRlXSc6ICdhbmltYXRpb25TdGF0ZScsXG4gICAgICAgICcoQHN0YXRlLnN0YXJ0KSc6ICdvbkFuaW1hdGlvblN0YXJ0KCRldmVudCknLFxuICAgICAgICAnKEBzdGF0ZS5kb25lKSc6ICdvbkFuaW1hdGlvbkRvbmUoJGV2ZW50KScsXG4gICAgICAgICcoa2V5ZG93bi5lc2NhcGUpJzogJ2hhbmRsZUVzY2FwZSgkZXZlbnQpJ1xuICAgIH0sXG4gICAgLy8gVXNlcyB0aGUgYERlZmF1bHRgIGNoYW5nZSBkZXRlY3Rpb24gc3RyYXRlZ3kgYXMgcGFyZW50IGBDZGtEaWFsb2dDb250YWluZXJgOlxuICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvYmxvYi8xOC4yLjE0L3NyYy9jZGsvZGlhbG9nL2RpYWxvZy1jb250YWluZXIudHMjTDYwXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5EZWZhdWx0LFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgS2JxQWN0aW9uc1BhbmVsQ29udGFpbmVyIGV4dGVuZHMgQ2RrRGlhbG9nQ29udGFpbmVyIGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIGFjdGlvbnMgcGFuZWwgYW5pbWF0aW9ucy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgYW5pbWF0aW9uU3RhdGU6ICd2b2lkJyB8ICd2aXNpYmxlJyB8ICdoaWRkZW4nID0gJ3ZvaWQnO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgd2hlbmV2ZXIgdGhlIHN0YXRlIG9mIHRoZSBhbmltYXRpb24gY2hhbmdlcy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICByZWFkb25seSBhbmltYXRpb25TdGF0ZUNoYW5nZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEFuaW1hdGlvbkV2ZW50PigpO1xuXG4gICAgLyoqIFdoZXRoZXIgdGhlIGFjdGlvbnMgcGFuZWwgY29udGFpbmVyIGhhcyBiZWVuIGRlc3Ryb3llZC4gKi9cbiAgICBwcml2YXRlIGRlc3Ryb3llZDogYm9vbGVhbjtcblxuICAgIC8qKlxuICAgICAqIEFjdGlvbnMgcGFuZWwgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgY29uZmlnID0gaW5qZWN0KEticUFjdGlvbnNQYW5lbENvbmZpZyk7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGFjdGlvbnNQYW5lbCA9IGluamVjdChLYnFBY3Rpb25zUGFuZWwpO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVuZGVyZXIgPSBpbmplY3QoUmVuZGVyZXIyKTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvY2FsZVNlcnZpY2UgPSBpbmplY3QoS0JRX0xPQ0FMRV9TRVJWSUNFLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gICAgLyoqXG4gICAgICogQWN0aW9ucyBwYW5lbCBsb2NhbGUgY29uZmlndXJhdGlvbi5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgcmVhZG9ubHkgbG9jYWxlQ29uZmlndXJhdGlvbiA9IHRvU2lnbmFsPEticUFjdGlvbnNQYW5lbExvY2FsZUNvbmZpZ3VyYXRpb24+KFxuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2VcbiAgICAgICAgICAgID8gdGhpcy5sb2NhbGVTZXJ2aWNlLmNoYW5nZXMucGlwZShtYXAoKCkgPT4gdGhpcy5sb2NhbGVTZXJ2aWNlIS5nZXRQYXJhbXMoJ2FjdGlvbnNQYW5lbCcpKSlcbiAgICAgICAgICAgIDogb2YoaW5qZWN0KEtCUV9BQ1RJT05TX1BBTkVMX0xPQ0FMRV9DT05GSUdVUkFUSU9OKSlcbiAgICApO1xuXG4gICAgb3ZlcnJpZGUgbmdPbkRlc3Ryb3koKSB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveWVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDbG9zZSB0aGUgYWN0aW9ucyBwYW5lbC5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgY2xvc2UoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aW9uc1BhbmVsLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU3RhcnQgYW5pbWF0aW9uIG9mIHRoZSBhY3Rpb25zIHBhbmVsIGVudHJhbmNlIGludG8gdmlldy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBzdGFydE9wZW5BbmltYXRpb24oKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5kZXN0cm95ZWQpIHtcbiAgICAgICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGUgPSAndmlzaWJsZSc7XG4gICAgICAgICAgICAvLyBhbmltYXRpb25TdGF0ZSBsaXZlcyBpbiBob3N0IGJpbmRpbmdzIGFuZCBgZGV0ZWN0Q2hhbmdlc2AgZG9lcyBub3QgcmVmcmVzaCBob3N0IGJpbmRpbmdzICBzbyB3ZSBoYXZlIHRvXG4gICAgICAgICAgICAvLyBjYWxsIGBtYXJrRm9yQ2hlY2tgIHRvIGVuc3VyZSB0aGUgaG9zdCB2aWV3IGlzIHJlZnJlc2hlZCBldmVudHVhbGx5LlxuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTdGFydCBhbmltYXRpb24gb2YgdGhlIGFjdGlvbnMgcGFuZWwgZXhpdGluZyBmcm9tIHZpZXcuXG4gICAgICpcbiAgICAgKiBAZG9jcy1wcml2YXRlXG4gICAgICovXG4gICAgc3RhcnRDbG9zZUFuaW1hdGlvbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLmRlc3Ryb3llZCkge1xuICAgICAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZSA9ICdoaWRkZW4nO1xuICAgICAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBIYW5kbGVzIGFuaW1hdGlvbiBkb25lIGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25BbmltYXRpb25Eb25lKGV2ZW50OiBBbmltYXRpb25FdmVudCk6IHZvaWQge1xuICAgICAgICBpZiAoZXZlbnQudG9TdGF0ZSA9PT0gJ3Zpc2libGUnKSB7XG4gICAgICAgICAgICB0aGlzLl90cmFwRm9jdXMoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuYW5pbWF0aW9uU3RhdGVDaGFuZ2VkLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEhhbmRsZXMgYW5pbWF0aW9uIHN0YXJ0IGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgb25BbmltYXRpb25TdGFydChldmVudDogQW5pbWF0aW9uRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbmltYXRpb25TdGF0ZUNoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSGFuZGxlcyBlc2NhcGUga2V5IGV2ZW50cy5cbiAgICAgKlxuICAgICAqIEBkb2NzLXByaXZhdGVcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXNjYXBlKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5jb25maWcuZGlzYWJsZUNsb3NlKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGRvY3MtcHJpdmF0ZVxuICAgICAqL1xuICAgIHByb3RlY3RlZCBvdmVycmlkZSBfY29udGVudEF0dGFjaGVkKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFwcGx5Q29udGFpbmVyQ2xhc3MoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFwcGx5Q29udGFpbmVyQ2xhc3MoKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHsgY29udGFpbmVyQ2xhc3MgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgICAgIGlmIChjb250YWluZXJDbGFzcykge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY29udGFpbmVyQ2xhc3MpKSB7XG4gICAgICAgICAgICAgICAgY29udGFpbmVyQ2xhc3MuZm9yRWFjaCgoY3NzQ2xhc3MpID0+IHRoaXMucmVuZGVyZXIuYWRkQ2xhc3ModGhpcy5fZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LCBjc3NDbGFzcykpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyLmFkZENsYXNzKHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwgY29udGFpbmVyQ2xhc3MpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19