@koobiq/components 17.0.0-beta.1 → 17.0.0-beta.2

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 (157) hide show
  1. package/autocomplete/autocomplete-trigger.directive.d.ts +7 -1
  2. package/button-toggle/_button-toggle-theme.scss +4 -0
  3. package/checkbox/checkbox.scss +0 -1
  4. package/code-block/_code-block-theme.scss +15 -9
  5. package/code-block/actionbar.component.scss +1 -1
  6. package/code-block/code-block.component.d.ts +3 -0
  7. package/code-block/code-block.scss +14 -4
  8. package/core/datetime/date-adapter.d.ts +1 -1
  9. package/core/datetime/date-formats.d.ts +1 -1
  10. package/core/formatters/date/formatter.d.ts +2 -2
  11. package/core/formatters/date/formatter.pipe.d.ts +1 -1
  12. package/core/locales/en-US.d.ts +25 -22
  13. package/core/locales/es-LA.d.ts +24 -27
  14. package/core/locales/fa-IR.d.ts +24 -28
  15. package/core/locales/formatters.d.ts +121 -0
  16. package/core/locales/index.d.ts +7 -0
  17. package/core/locales/locale-service.d.ts +146 -32
  18. package/core/locales/pt-BR.d.ts +24 -27
  19. package/core/locales/ru-RU.d.ts +25 -23
  20. package/core/locales/zh-CN.d.ts +25 -27
  21. package/core/styles/_koobiq-theme.scss +3 -1
  22. package/core/styles/_variables.scss +0 -9
  23. package/core/styles/common/_overlay.scss +4 -0
  24. package/core/styles/theming/_components-theming.scss +59 -21
  25. package/core/styles/theming/{_scrollbars-theme.scss → _scrollbar-theme.scss} +19 -3
  26. package/core/styles/typography/_typography.scss +3 -1
  27. package/core/utils/data-size/data-size.pipe.d.ts +1 -1
  28. package/ellipsis-center/ellipsis-center.directive.d.ts +3 -3
  29. package/esm2022/autocomplete/autocomplete-trigger.directive.mjs +14 -2
  30. package/esm2022/code-block/actionbar.component.mjs +2 -2
  31. package/esm2022/code-block/code-block.component.mjs +21 -5
  32. package/esm2022/core/datetime/date-adapter.mjs +2 -2
  33. package/esm2022/core/datetime/date-formats.mjs +1 -1
  34. package/esm2022/core/formatters/date/formatter.mjs +4 -4
  35. package/esm2022/core/formatters/date/formatter.pipe.mjs +1 -1
  36. package/esm2022/core/locales/en-US.mjs +25 -22
  37. package/esm2022/core/locales/es-LA.mjs +24 -29
  38. package/esm2022/core/locales/fa-IR.mjs +24 -28
  39. package/esm2022/core/locales/formatters.mjs +126 -0
  40. package/esm2022/core/locales/index.mjs +8 -1
  41. package/esm2022/core/locales/locale-service.mjs +9 -8
  42. package/esm2022/core/locales/pt-BR.mjs +24 -27
  43. package/esm2022/core/locales/ru-RU.mjs +25 -25
  44. package/esm2022/core/locales/zh-CN.mjs +25 -27
  45. package/esm2022/core/utils/data-size/data-size.pipe.mjs +3 -3
  46. package/esm2022/ellipsis-center/ellipsis-center.directive.mjs +13 -13
  47. package/esm2022/file-upload/multiple-file-upload.component.mjs +44 -23
  48. package/esm2022/file-upload/single-file-upload.component.mjs +36 -13
  49. package/esm2022/modal/modal.component.mjs +3 -6
  50. package/esm2022/modal/modal.type.mjs +1 -1
  51. package/esm2022/navbar/navbar-item.component.mjs +24 -68
  52. package/esm2022/navbar/navbar.component.mjs +4 -4
  53. package/esm2022/navbar/navbar.module.mjs +2 -6
  54. package/esm2022/navbar/vertical-navbar.component.mjs +3 -8
  55. package/esm2022/popover/popover-confirm.component.mjs +3 -3
  56. package/esm2022/popover/popover.component.mjs +3 -3
  57. package/esm2022/scrollbar/index.mjs +2 -0
  58. package/esm2022/scrollbar/koobiq-components-scrollbar.mjs +5 -0
  59. package/esm2022/scrollbar/public-api.mjs +5 -0
  60. package/esm2022/scrollbar/scrollbar.component.mjs +130 -0
  61. package/esm2022/scrollbar/scrollbar.directive.mjs +97 -0
  62. package/esm2022/scrollbar/scrollbar.module.mjs +20 -0
  63. package/esm2022/scrollbar/scrollbar.types.mjs +13 -0
  64. package/esm2022/select/select.component.mjs +22 -16
  65. package/esm2022/sidepanel/sidepanel-animations.mjs +5 -5
  66. package/esm2022/sidepanel/sidepanel-container.component.mjs +6 -6
  67. package/esm2022/sidepanel/sidepanel-directives.mjs +13 -13
  68. package/esm2022/tabs/tab-body.component.mjs +3 -3
  69. package/esm2022/tags/tag-input.mjs +28 -8
  70. package/esm2022/timezone/timezone-option.component.mjs +7 -6
  71. package/esm2022/timezone/timezone-select.component.mjs +3 -3
  72. package/esm2022/timezone/timezone.utils.mjs +9 -4
  73. package/esm2022/timezone/utc-offset.pipe.mjs +3 -3
  74. package/esm2022/toast/toast-animations.mjs +3 -3
  75. package/esm2022/toast/toast-container.component.mjs +2 -2
  76. package/esm2022/toast/toast.component.mjs +4 -4
  77. package/esm2022/toast/toast.service.mjs +13 -5
  78. package/esm2022/tooltip/tooltip.component.mjs +3 -3
  79. package/esm2022/tree-select/tree-select.component.mjs +7 -5
  80. package/fesm2022/koobiq-components-autocomplete.mjs +13 -1
  81. package/fesm2022/koobiq-components-autocomplete.mjs.map +1 -1
  82. package/fesm2022/koobiq-components-code-block.mjs +22 -6
  83. package/fesm2022/koobiq-components-code-block.mjs.map +1 -1
  84. package/fesm2022/koobiq-components-core.mjs +276 -161
  85. package/fesm2022/koobiq-components-core.mjs.map +1 -1
  86. package/fesm2022/koobiq-components-ellipsis-center.mjs +12 -12
  87. package/fesm2022/koobiq-components-ellipsis-center.mjs.map +1 -1
  88. package/fesm2022/koobiq-components-file-upload.mjs +76 -35
  89. package/fesm2022/koobiq-components-file-upload.mjs.map +1 -1
  90. package/fesm2022/koobiq-components-modal.mjs +2 -5
  91. package/fesm2022/koobiq-components-modal.mjs.map +1 -1
  92. package/fesm2022/koobiq-components-navbar.mjs +29 -91
  93. package/fesm2022/koobiq-components-navbar.mjs.map +1 -1
  94. package/fesm2022/koobiq-components-popover.mjs +4 -4
  95. package/fesm2022/koobiq-components-popover.mjs.map +1 -1
  96. package/fesm2022/koobiq-components-scrollbar.mjs +256 -0
  97. package/fesm2022/koobiq-components-scrollbar.mjs.map +1 -0
  98. package/fesm2022/koobiq-components-select.mjs +18 -12
  99. package/fesm2022/koobiq-components-select.mjs.map +1 -1
  100. package/fesm2022/koobiq-components-sidepanel.mjs +20 -20
  101. package/fesm2022/koobiq-components-sidepanel.mjs.map +1 -1
  102. package/fesm2022/koobiq-components-tabs.mjs +2 -2
  103. package/fesm2022/koobiq-components-tabs.mjs.map +1 -1
  104. package/fesm2022/koobiq-components-tags.mjs +26 -7
  105. package/fesm2022/koobiq-components-tags.mjs.map +1 -1
  106. package/fesm2022/koobiq-components-timezone.mjs +20 -15
  107. package/fesm2022/koobiq-components-timezone.mjs.map +1 -1
  108. package/fesm2022/koobiq-components-toast.mjs +17 -9
  109. package/fesm2022/koobiq-components-toast.mjs.map +1 -1
  110. package/fesm2022/koobiq-components-tooltip.mjs +2 -2
  111. package/fesm2022/koobiq-components-tooltip.mjs.map +1 -1
  112. package/fesm2022/koobiq-components-tree-select.mjs +6 -4
  113. package/fesm2022/koobiq-components-tree-select.mjs.map +1 -1
  114. package/file-upload/multiple-file-upload.component.d.ts +12 -4
  115. package/file-upload/single-file-upload.component.d.ts +10 -4
  116. package/loader-overlay/loader-overlay.scss +2 -2
  117. package/modal/modal.component.d.ts +1 -2
  118. package/modal/modal.scss +0 -5
  119. package/modal/modal.type.d.ts +0 -1
  120. package/navbar/_navbar-item_horizontal.scss +97 -0
  121. package/navbar/_navbar-item_vertical.scss +98 -0
  122. package/navbar/_navbar-theme.scss +57 -60
  123. package/navbar/navbar-brand.scss +76 -16
  124. package/navbar/navbar-divider.scss +13 -4
  125. package/navbar/navbar-item.component.d.ts +1 -15
  126. package/navbar/navbar-item.scss +39 -90
  127. package/navbar/navbar.module.d.ts +1 -1
  128. package/navbar/navbar.scss +13 -1
  129. package/navbar/vertical-navbar.scss +7 -14
  130. package/package.json +22 -14
  131. package/popover/popover.scss +4 -9
  132. package/prebuilt-themes/dark-theme.css +1 -1
  133. package/prebuilt-themes/light-theme.css +1 -1
  134. package/scrollbar/_scrollbar-component-theme.scss +52 -0
  135. package/scrollbar/index.d.ts +1 -0
  136. package/scrollbar/public-api.d.ts +4 -0
  137. package/scrollbar/scrollbar.component.d.ts +33 -0
  138. package/scrollbar/scrollbar.component.scss +559 -0
  139. package/scrollbar/scrollbar.directive.d.ts +47 -0
  140. package/scrollbar/scrollbar.module.d.ts +8 -0
  141. package/scrollbar/scrollbar.types.d.ts +32 -0
  142. package/select/select.component.d.ts +4 -3
  143. package/sidepanel/sidepanel-animations.d.ts +2 -2
  144. package/sidepanel/sidepanel-directives.d.ts +5 -5
  145. package/tags/tag-input.d.ts +9 -4
  146. package/timezone/_timezone-option-theme.scss +8 -0
  147. package/timezone/timezone-option.component.scss +4 -0
  148. package/timezone/timezone-select.component.scss +13 -0
  149. package/timezone/timezone.utils.d.ts +4 -0
  150. package/timezone/utc-offset.pipe.d.ts +3 -1
  151. package/toast/toast-animations.d.ts +1 -1
  152. package/toast/toast-container.component.scss +1 -9
  153. package/toast/toast.component.scss +0 -4
  154. package/toast/toast.service.d.ts +5 -3
  155. package/tooltip/tooltip.scss +0 -3
  156. package/esm2022/navbar/vertical-navbar.animation.mjs +0 -10
  157. package/navbar/vertical-navbar.animation.d.ts +0 -2
@@ -1,5 +1,6 @@
1
1
  import { FocusMonitor } from '@angular/cdk/a11y';
2
2
  import { ChangeDetectionStrategy, ChangeDetectorRef, Component, ElementRef, EventEmitter, Inject, Input, Optional, Output, Renderer2, ViewChild, ViewEncapsulation } from '@angular/core';
3
+ import { KBQ_LOCALE_SERVICE, KbqLocaleService, ruRULocaleData } from '@koobiq/components/core';
3
4
  import { BehaviorSubject, Subscription } from 'rxjs';
4
5
  import { KBQ_FILE_UPLOAD_CONFIGURATION } from './file-upload';
5
6
  import * as i0 from "@angular/core";
@@ -10,20 +11,19 @@ import * as i4 from "@koobiq/components/icon";
10
11
  import * as i5 from "@koobiq/components/form-field";
11
12
  import * as i6 from "@koobiq/components/ellipsis-center";
12
13
  import * as i7 from "./file-drop";
14
+ import * as i8 from "@koobiq/components/core";
13
15
  let nextSingleFileUploadUniqueId = 0;
14
- export const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION = {
15
- captionText: 'Перетащите файл или',
16
- browseLink: 'выберите'
17
- };
16
+ export const KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION = ruRULocaleData.fileUpload.single;
18
17
  export class KbqSingleFileUploadComponent {
19
18
  get acceptedFiles() {
20
19
  return this.accept && this.accept.length > 0 ? this.accept.map((ext) => `.${ext}`).join(',') : '*/*';
21
20
  }
22
- constructor(focusMonitor, cdr, renderer, config) {
21
+ constructor(focusMonitor, cdr, renderer, configuration, localeService) {
23
22
  this.focusMonitor = focusMonitor;
24
23
  this.cdr = cdr;
25
24
  this.renderer = renderer;
26
- this.config = config;
25
+ this.configuration = configuration;
26
+ this.localeService = localeService;
27
27
  this.disabled = false;
28
28
  this.errors = [];
29
29
  this.files = [];
@@ -31,7 +31,16 @@ export class KbqSingleFileUploadComponent {
31
31
  this.fileQueueChanged = new EventEmitter();
32
32
  this.hasFocus = false;
33
33
  this.focusMonitorSubscription = Subscription.EMPTY;
34
- this.config = config || KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;
34
+ this.updateLocaleParams = () => {
35
+ this.config = this.configuration || this.localeService?.getParams('fileUpload').multiple;
36
+ this.getCaptionText();
37
+ this.cdr.markForCheck();
38
+ };
39
+ this.localeService?.changes
40
+ .subscribe(this.updateLocaleParams);
41
+ if (!localeService) {
42
+ this.initDefaultParams();
43
+ }
35
44
  }
36
45
  ngAfterViewInit() {
37
46
  this.focusMonitorSubscription = this.focusMonitor.monitor(this.input)
@@ -89,29 +98,43 @@ export class KbqSingleFileUploadComponent {
89
98
  }
90
99
  validateFile(file) {
91
100
  if (this.customValidation && this.customValidation.length) {
92
- this.errors = this.customValidation.reduce((errors, validatorFn) => {
101
+ this.errors = this.customValidation
102
+ .reduce((errors, validatorFn) => {
93
103
  errors.push(validatorFn(file));
94
104
  return errors;
95
- }, []).filter(Boolean);
105
+ }, [])
106
+ .filter(Boolean);
96
107
  }
97
108
  }
98
109
  isCorrectExtension(file) {
99
110
  const fileExt = file.name.split('.').pop() || '';
100
111
  return this.acceptedFiles !== '*/*' && this.acceptedFiles.length > 0 ? this.acceptedFiles.includes(fileExt) : true;
101
112
  }
102
- /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSingleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
103
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqSingleFileUploadComponent, selector: "kbq-single-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-single-file-upload" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\">\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i4.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }, { kind: "component", type: i5.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff", "compact"], exportAs: ["kbqHint"] }, { kind: "directive", type: i6.KbqEllipsisCenterDirective, selector: "[mcEllipsisCenter]", inputs: ["mcEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: i7.KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
113
+ initDefaultParams() {
114
+ this.config = KBQ_SINGLE_FILE_UPLOAD_DEFAULT_CONFIGURATION;
115
+ this.getCaptionText();
116
+ }
117
+ getCaptionText() {
118
+ this.separatedCaptionText = this.config.captionText.split('{{ browseLink }}');
119
+ }
120
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSingleFileUploadComponent, deps: [{ token: i1.FocusMonitor }, { token: i0.ChangeDetectorRef }, { token: i0.Renderer2 }, { token: KBQ_FILE_UPLOAD_CONFIGURATION, optional: true }, { token: KBQ_LOCALE_SERVICE, optional: true }], target: i0.ɵɵFactoryTarget.Component }); }
121
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.0", type: KbqSingleFileUploadComponent, selector: "kbq-single-file-upload", inputs: { accept: "accept", disabled: "disabled", errors: "errors", files: "files", inputId: "inputId", customValidation: "customValidation" }, outputs: { fileQueueChanged: "fileQueueChanged" }, host: { classAttribute: "kbq-single-file-upload" }, viewQueries: [{ propertyName: "input", first: true, predicate: ["input"], descendants: true }], ngImport: i0, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors?.length\"\n (filesDropped)=\"onFileDropped($event)\">\n\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ separatedCaptionText[0] }}<label class=\"kbq-link\" [class.kbq-focused]=\"hasFocus\" [for]=\"inputId\">{{ config.browseLink }}</label>{{ separatedCaptionText[1] }}\n </span>\n </div>\n\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\">\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors?.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.KbqProgressSpinner, selector: "kbq-progress-spinner", inputs: ["color", "id", "value", "mode", "size"] }, { kind: "component", type: i4.KbqIcon, selector: "[kbq-icon]", inputs: ["color", "small", "autoColor"] }, { kind: "component", type: i4.KbqIconButton, selector: "[kbq-icon-button]", inputs: ["color", "small", "tabindex", "disabled"] }, { kind: "component", type: i5.KbqHint, selector: "kbq-hint", inputs: ["color", "id", "fillTextOff", "compact"], exportAs: ["kbqHint"] }, { kind: "directive", type: i6.KbqEllipsisCenterDirective, selector: "[kbqEllipsisCenter]", inputs: ["kbqEllipsisCenter", "minVisibleLength"] }, { kind: "directive", type: i7.KbqFileDropDirective, selector: "[kbqFileDrop]", outputs: ["filesDropped"], exportAs: ["kbqFileDrop"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
104
122
  }
105
123
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImport: i0, type: KbqSingleFileUploadComponent, decorators: [{
106
124
  type: Component,
107
125
  args: [{ selector: 'kbq-single-file-upload', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
108
126
  class: 'kbq-single-file-upload'
109
- }, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors && errors.length\"\n (filesDropped)=\"onFileDropped($event)\">\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ config.captionText }}\n <label class=\"kbq-link\"\n [class.kbq-focused]=\"hasFocus\"\n [for]=\"inputId\">\n {{ config.browseLink }}\n </label>\n </span>\n </div>\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\">\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors && errors.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [mcEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
127
+ }, template: "<div class=\"kbq-file-upload\"\n kbqFileDrop\n [class.kbq-disabled]=\"disabled\"\n [class.kbq-error]=\"errors?.length\"\n (filesDropped)=\"onFileDropped($event)\">\n\n <div class=\"dropzone\" *ngIf=\"!files.length; else fileOutput\">\n <i kbq-icon=\"mc-upload-to-cloud_24\"></i>\n <span class=\"dropzone__text\">\n {{ separatedCaptionText[0] }}<label class=\"kbq-link\" [class.kbq-focused]=\"hasFocus\" [for]=\"inputId\">{{ config.browseLink }}</label>{{ separatedCaptionText[1] }}\n </span>\n </div>\n\n <input #input\n type=\"file\"\n class=\"cdk-visually-hidden\"\n [id]=\"inputId\"\n [accept]=\"acceptedFiles\"\n [disabled]=\"disabled\"\n (change)=\"onFileSelectedViaClick($event)\">\n</div>\n<kbq-hint class=\"kbq-file-upload__hint\">\n <ng-content select=\"[hint]\"></ng-content>\n</kbq-hint>\n<ng-container *ngIf=\"errors?.length\">\n <kbq-hint class=\"kbq-file-upload__hint kbq-error\" *ngFor=\"let error of errors\">{{ error }}</kbq-hint>\n</ng-container>\n\n\n<ng-template #fileOutput>\n <div class=\"file-item\" *ngIf=\"files && files.length\">\n <div class=\"file-item__text-wrapper\">\n <ng-container *ngIf=\"{ loading: files[0].loading | async, progress: files[0].progress | async} as asyncData\">\n <ng-container *ngIf=\"!asyncData.loading\">\n <ng-content select=\"[kbq-icon]\"></ng-content>\n </ng-container>\n\n <kbq-progress-spinner\n [value]=\"asyncData.progress || 0\"\n *ngIf=\"asyncData.loading\"\n ></kbq-progress-spinner>\n </ng-container>\n\n <div class=\"file-item__text\" [kbqEllipsisCenter]=\"files[0].file.name\" [minVisibleLength]=\"10\"></div>\n </div>\n <i kbq-icon-button=\"mc-close-circle_16\"\n [color]=\"'contrast'\"\n [disabled]=\"disabled\"\n (keydown.delete)=\"deleteItem()\"\n (keydown.backspace)=\"deleteItem()\"\n (click)=\"deleteItem($event)\">\n </i>\n </div>\n</ng-template>\n", styles: ["@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-file-upload{box-sizing:border-box;display:flex;align-items:center;position:relative}.kbq-file-upload .dropzone,.kbq-file-upload .file-item{display:flex;align-items:center}.kbq-file-upload .kbq-ellipsis-center{position:relative;display:flex}.kbq-file-upload .kbq-ellipsis-center .data-text-start{flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:pre}.kbq-file-upload .kbq-ellipsis-center .data-text-end{flex:1 0 auto;overflow:hidden;white-space:pre}\n", "@keyframes kbq-progress{0%{background-position:0 0}to{background-position:29px 0}}.kbq-progress{position:relative}.kbq-progress:after{content:\"\";position:absolute;border-radius:inherit;inset:0;background:linear-gradient(135deg,#0000000a 10px,#ffffff0a 10px 20px,#0000000a 20px 30px,#ffffff0a 31px) repeat;background-size:32px 32px;animation:kbq-progress 1s linear infinite}.kbq-group{display:flex;flex-direction:row}.kbq-group .kbq-group_justified>.kbq-group-item{width:100%}.kbq-group .kbq-group-item+.kbq-group-item{margin-left:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-top-right-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-bottom-left-radius:0;border-top-left-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group{display:flex;flex-direction:column}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child){border-bottom-right-radius:0;border-bottom-left-radius:0;border-top-right-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:first-child:not(:last-child)>.kbq-form-field__container{border-bottom-right-radius:0;border-bottom-left-radius:0}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-left-radius:var(--kbq-button-size-border-radius, 8px)}.kbq-vertical-group>.kbq-group-item:last-child:not(:first-child)>.kbq-form-field__container{border-top-right-radius:0;border-top-left-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child){border-radius:0}.kbq-vertical-group>.kbq-group-item:not(:first-child):not(:last-child)>.kbq-form-field__container{border-radius:0}.kbq-vertical-group .kbq-group-item+.kbq-group-item{margin-top:calc(-1 * var(--kbq-button-size-border-width, 2px))}.kbq-no-select{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.kbq-single-file-upload .kbq-file-upload{padding:calc(var(--kbq-file-upload-size-single-container-padding-vertical, 12px) - 1px) calc(var(--kbq-file-upload-size-single-container-padding-horizontal, 12px) - 1px);border-radius:var(--kbq-file-upload-size-single-container-border-radius, 8px);border-width:var(--kbq-file-upload-size-single-container-border-width, 1px);border-style:dashed}.kbq-single-file-upload .kbq-file-upload .dropzone__text{padding-top:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);padding-bottom:var(--kbq-file-upload-size-single-text-block-padding-vertical, 4px);gap:var(--kbq-file-upload-size-single-text-block-content-gap-horizontal, 4px)}.kbq-single-file-upload .kbq-file-upload .dropzone{gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item{width:100%}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper{display:flex;align-items:center;width:100%;gap:var(--kbq-file-upload-size-single-container-content-gap-horizontal, 8px)}.kbq-single-file-upload .kbq-file-upload .file-item .file-item__text-wrapper .file-item__text{width:120px;flex-grow:1}.kbq-hint{display:block}.kbq-file-upload__hint{margin-top:var(--kbq-form-field-hint-size-margin-top, 4px)}\n"] }]
110
128
  }], ctorParameters: () => [{ type: i1.FocusMonitor }, { type: i0.ChangeDetectorRef }, { type: i0.Renderer2 }, { type: undefined, decorators: [{
111
129
  type: Optional
112
130
  }, {
113
131
  type: Inject,
114
132
  args: [KBQ_FILE_UPLOAD_CONFIGURATION]
133
+ }] }, { type: i8.KbqLocaleService, decorators: [{
134
+ type: Optional
135
+ }, {
136
+ type: Inject,
137
+ args: [KBQ_LOCALE_SERVICE]
115
138
  }] }], propDecorators: { accept: [{
116
139
  type: Input
117
140
  }], disabled: [{
@@ -130,4 +153,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.0", ngImpor
130
153
  type: ViewChild,
131
154
  args: ['input']
132
155
  }] } });
133
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUNILDZCQUE2QixFQUtoQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7O0FBR3ZCLElBQUksNEJBQTRCLEdBQUcsQ0FBQyxDQUFDO0FBRXJDLE1BQU0sQ0FBQyxNQUFNLDRDQUE0QyxHQUFzQjtJQUMzRSxXQUFXLEVBQUUscUJBQXFCO0lBQ2xDLFVBQVUsRUFBRSxVQUFVO0NBQ3pCLENBQUM7QUFZRixNQUFNLE9BQU8sNEJBQTRCO0lBZXJDLElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEdB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QUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQ3ZILENBQUM7aUlBckdRLDRCQUE0Qix3R0F1QmIsNkJBQTZCO3FIQXZCNUMsNEJBQTRCLHFaQzlDekMsOHVFQXlEQTs7MkZEWGEsNEJBQTRCO2tCQVZ4QyxTQUFTOytCQUNJLHdCQUF3QixtQkFHakIsdUJBQXVCLENBQUMsTUFBTSxpQkFDaEMsaUJBQWlCLENBQUMsSUFBSSxRQUMvQjt3QkFDRixLQUFLLEVBQUUsd0JBQXdCO3FCQUNsQzs7MEJBeUJJLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsNkJBQTZCO3lDQXRCNUMsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUNJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFFYSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU8iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb2N1c01vbml0b3IgfSBmcm9tICdAYW5ndWxhci9jZGsvYTExeSc7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFJlbmRlcmVyMixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYW5EaXNhYmxlIH0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTiwgS2JxRmlsZSxcbiAgICBLYnFGaWxlSXRlbSxcbiAgICBLYnFGaWxlVmFsaWRhdG9yRm4sXG4gICAgS2JxSW5wdXRGaWxlLFxuICAgIEticUlucHV0RmlsZUxhYmVsXG59IGZyb20gJy4vZmlsZS11cGxvYWQnO1xuXG5cbmxldCBuZXh0U2luZ2xlRmlsZVVwbG9hZFVuaXF1ZUlkID0gMDtcblxuZXhwb3J0IGNvbnN0IEtCUV9TSU5HTEVfRklMRV9VUExPQURfREVGQVVMVF9DT05GSUdVUkFUSU9OOiBLYnFJbnB1dEZpbGVMYWJlbCA9IHtcbiAgICBjYXB0aW9uVGV4dDogJ9Cf0LXRgNC10YLQsNGJ0LjRgtC1INGE0LDQudC7INC40LvQuCcsXG4gICAgYnJvd3NlTGluazogJ9Cy0YvQsdC10YDQuNGC0LUnXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1zaW5nbGUtZmlsZS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLnNjc3MnLCAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtc2luZ2xlLWZpbGUtdXBsb2FkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxU2luZ2xlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgS2JxSW5wdXRGaWxlLCBDYW5EaXNhYmxlIHtcbiAgICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGZpbGVzOiBLYnFGaWxlSXRlbVtdID0gW107XG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nID0gYGticS1zaW5nbGUtZmlsZS11cGxvYWQtJHtuZXh0U2luZ2xlRmlsZVVwbG9hZFVuaXF1ZUlkKyt9YDtcbiAgICBASW5wdXQoKSBjdXN0b21WYWxpZGF0aW9uPzogS2JxRmlsZVZhbGlkYXRvckZuW107XG4gICAgQE91dHB1dCgpIGZpbGVRdWV1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbSB8IG51bGw+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgaGFzRm9jdXMgPSBmYWxzZTtcblxuICAgIHByaXZhdGUgZm9jdXNNb25pdG9yU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgZ2V0IGFjY2VwdGVkRmlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0ICYmIHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDAgPyB0aGlzLmFjY2VwdC5tYXAoKGV4dDogc3RyaW5nKSA9PiBgLiR7ZXh0fWApLmpvaW4oJywnKSA6ICcqLyonO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTikgcHVibGljIGNvbmZpZzogS2JxSW5wdXRGaWxlTGFiZWxcbiAgICApIHtcbiAgICAgICAgdGhpcy5jb25maWcgPSBjb25maWcgfHwgS0JRX1NJTkdMRV9GSUxFX1VQTE9BRF9ERUZBVUxUX0NPTkZJR1VSQVRJT047XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclN1YnNjcmlwdGlvbiA9IHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5pbnB1dClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9yaWdpbikgPT4gdGhpcy5vbkZvY3VzKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soeyB0YXJnZXQgfTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM7XG4gICAgICAgIGlmIChmaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW3RoaXMubWFwVG9GaWxlSXRlbShmaWxlc1swXSldO1xuICAgICAgICAgICAgdGhpcy5maWxlUXVldWVDaGFuZ2VkLmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgLyogZXZlbiBpZiB0aGUgdXNlciBzZWxlY3RzIHRoZSBzYW1lIGZpbGUsXG4gICAgICAgICB0aGUgb25jaGFuZ2UgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZXZlcnkgdGltZSB1c2VyIGNsaWNrcyBvbiB0aGUgY29udHJvbC4qL1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbnVsbCk7XG4gICAgfVxuXG4gICAgZGVsZXRlSXRlbShldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0IHwgS2JxRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29ycmVjdEV4dGVuc2lvbihmaWxlc1swXSkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGZpbGUpID0+IHRoaXMubWFwVG9GaWxlSXRlbShmaWxlKSk7XG4gICAgICAgICAgICB0aGlzLmZpbGVRdWV1ZUNoYW5nZWQuZW1pdCh0aGlzLmZpbGVzWzBdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uRm9jdXMoZm9jdXNTdGF0ZTogYm9vbGVhbikge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgeyByZXR1cm47IH1cbiAgICAgICAgdGhpcy5oYXNGb2N1cyA9IGZvY3VzU3RhdGU7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwVG9GaWxlSXRlbShmaWxlOiBGaWxlKTogS2JxRmlsZUl0ZW0ge1xuICAgICAgICB0aGlzLnZhbGlkYXRlRmlsZShmaWxlKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHByb2dyZXNzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCksXG4gICAgICAgICAgICBsb2FkaW5nOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVGaWxlKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsaWRhdGlvbiAmJiB0aGlzLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuY3VzdG9tVmFsaWRhdGlvbi5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgKGVycm9yczogKHN0cmluZyB8IG51bGwpW10sIHZhbGlkYXRvckZuOiBLYnFGaWxlVmFsaWRhdG9yRm4pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3JzLnB1c2godmFsaWRhdG9yRm4oZmlsZSkpO1xuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBbXSkuZmlsdGVyKEJvb2xlYW4pIGFzIHN0cmluZ1tdO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc0NvcnJlY3RFeHRlbnNpb24oZmlsZTogRmlsZSk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmaWxlRXh0OiBzdHJpbmcgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKSB8fCAnJztcblxuICAgICAgICByZXR1cm4gdGhpcy5hY2NlcHRlZEZpbGVzICE9PSAnKi8qJyAmJiB0aGlzLmFjY2VwdGVkRmlsZXMubGVuZ3RoID4gMCA/IHRoaXMuYWNjZXB0ZWRGaWxlcy5pbmNsdWRlcyhmaWxlRXh0KSA6IHRydWU7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImticS1maWxlLXVwbG9hZFwiXG4gICAgIGticUZpbGVEcm9wXG4gICAgIFtjbGFzcy5rYnEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICBbY2xhc3Mua2JxLWVycm9yXT1cImVycm9ycyAmJiBlcnJvcnMubGVuZ3RoXCJcbiAgICAgKGZpbGVzRHJvcHBlZCk9XCJvbkZpbGVEcm9wcGVkKCRldmVudClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImRyb3B6b25lXCIgKm5nSWY9XCIhZmlsZXMubGVuZ3RoOyBlbHNlIGZpbGVPdXRwdXRcIj5cbiAgICAgICAgICAgIDxpIGticS1pY29uPVwibWMtdXBsb2FkLXRvLWNsb3VkXzI0XCI+PC9pPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJkcm9wem9uZV9fdGV4dFwiPlxuICAgICAgICAgICAgICAgIHt7IGNvbmZpZy5jYXB0aW9uVGV4dCB9fVxuICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImticS1saW5rXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmticS1mb2N1c2VkXT1cImhhc0ZvY3VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgW2Zvcl09XCJpbnB1dElkXCI+XG4gICAgICAgICAgICAgICAge3sgY29uZmlnLmJyb3dzZUxpbmsgfX1cbiAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICA8aW5wdXQgI2lucHV0XG4gICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgY2xhc3M9XCJjZGstdmlzdWFsbHktaGlkZGVuXCJcbiAgICAgICAgICAgW2lkXT1cImlucHV0SWRcIlxuICAgICAgICAgICBbYWNjZXB0XT1cImFjY2VwdGVkRmlsZXNcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soJGV2ZW50KVwiPlxuPC9kaXY+XG48a2JxLWhpbnQgY2xhc3M9XCJrYnEtZmlsZS11cGxvYWRfX2hpbnRcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaGludF1cIj48L25nLWNvbnRlbnQ+XG48L2ticS1oaW50PlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cImVycm9ycyAmJiBlcnJvcnMubGVuZ3RoXCI+XG4gICAgPGticS1oaW50IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19oaW50IGticS1lcnJvclwiICpuZ0Zvcj1cImxldCBlcnJvciBvZiBlcnJvcnNcIj57eyBlcnJvciB9fTwva2JxLWhpbnQ+XG48L25nLWNvbnRhaW5lcj5cblxuXG48bmctdGVtcGxhdGUgI2ZpbGVPdXRwdXQ+XG4gICAgPGRpdiBjbGFzcz1cImZpbGUtaXRlbVwiICpuZ0lmPVwiZmlsZXMgJiYgZmlsZXMubGVuZ3RoXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1fX3RleHQtd3JhcHBlclwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInsgbG9hZGluZzogZmlsZXNbMF0ubG9hZGluZyB8IGFzeW5jLCBwcm9ncmVzczogZmlsZXNbMF0ucHJvZ3Jlc3MgfCBhc3luY30gYXMgYXN5bmNEYXRhXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhc3luY0RhdGEubG9hZGluZ1wiPlxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJba2JxLWljb25dXCI+PC9uZy1jb250ZW50PlxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgPGticS1wcm9ncmVzcy1zcGlubmVyXG4gICAgICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJhc3luY0RhdGEucHJvZ3Jlc3MgfHwgMFwiXG4gICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiYXN5bmNEYXRhLmxvYWRpbmdcIlxuICAgICAgICAgICAgICAgID48L2ticS1wcm9ncmVzcy1zcGlubmVyPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1fX3RleHRcIiBbbWNFbGxpcHNpc0NlbnRlcl09XCJmaWxlc1swXS5maWxlLm5hbWVcIiBbbWluVmlzaWJsZUxlbmd0aF09XCIxMFwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGkga2JxLWljb24tYnV0dG9uPVwibWMtY2xvc2UtY2lyY2xlXzE2XCJcbiAgICAgICAgICAgW2NvbG9yXT1cIidjb250cmFzdCdcIlxuICAgICAgICAgICBbZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICAgICAoa2V5ZG93bi5kZWxldGUpPVwiZGVsZXRlSXRlbSgpXCJcbiAgICAgICAgICAgKGtleWRvd24uYmFja3NwYWNlKT1cImRlbGV0ZUl0ZW0oKVwiXG4gICAgICAgICAgIChjbGljayk9XCJkZWxldGVJdGVtKCRldmVudClcIj5cbiAgICAgICAgPC9pPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
156
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvbXBvbmVudHMvZmlsZS11cGxvYWQvc2luZ2xlLWZpbGUtdXBsb2FkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBRUgsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFFBQVEsRUFDUixNQUFNLEVBQ04sU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsRUFDcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNTLGtCQUFrQixFQUFFLGdCQUFnQixFQUNoRCxjQUFjLEVBQ2pCLE1BQU0seUJBQXlCLENBQUM7QUFDakMsT0FBTyxFQUFFLGVBQWUsRUFBRSxZQUFZLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFckQsT0FBTyxFQUNILDZCQUE2QixFQU1oQyxNQUFNLGVBQWUsQ0FBQzs7Ozs7Ozs7OztBQUd2QixJQUFJLDRCQUE0QixHQUFHLENBQUMsQ0FBQztBQUVyQyxNQUFNLENBQUMsTUFBTSw0Q0FBNEMsR0FDckQsY0FBYyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7QUFhckMsTUFBTSxPQUFPLDRCQUE0QjtJQW1CckMsSUFBSSxhQUFhO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFXLEVBQUUs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UUFBUTs7MEJBQUksTUFBTTsyQkFBQyw2QkFBNkI7OzBCQUNoRCxRQUFROzswQkFBSSxNQUFNOzJCQUFDLGtCQUFrQjt5Q0EzQmpDLE1BQU07c0JBQWQsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBRWEsS0FBSztzQkFBeEIsU0FBUzt1QkFBQyxPQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNNb25pdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LFxuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbmplY3QsXG4gICAgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBSZW5kZXJlcjIsXG4gICAgVmlld0NoaWxkLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDYW5EaXNhYmxlLCBLQlFfTE9DQUxFX1NFUlZJQ0UsIEticUxvY2FsZVNlcnZpY2UsXG4gICAgcnVSVUxvY2FsZURhdGFcbn0gZnJvbSAnQGtvb2JpcS9jb21wb25lbnRzL2NvcmUnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgICBLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTixcbiAgICBLYnFGaWxlLFxuICAgIEticUZpbGVJdGVtLFxuICAgIEticUZpbGVWYWxpZGF0b3JGbixcbiAgICBLYnFJbnB1dEZpbGUsXG4gICAgS2JxSW5wdXRGaWxlTGFiZWxcbn0gZnJvbSAnLi9maWxlLXVwbG9hZCc7XG5cblxubGV0IG5leHRTaW5nbGVGaWxlVXBsb2FkVW5pcXVlSWQgPSAwO1xuXG5leHBvcnQgY29uc3QgS0JRX1NJTkdMRV9GSUxFX1VQTE9BRF9ERUZBVUxUX0NPTkZJR1VSQVRJT046IEticUlucHV0RmlsZUxhYmVsID1cbiAgICBydVJVTG9jYWxlRGF0YS5maWxlVXBsb2FkLnNpbmdsZTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2ticS1zaW5nbGUtZmlsZS11cGxvYWQnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2ZpbGUtdXBsb2FkLnNjc3MnLCAnLi9zaW5nbGUtZmlsZS11cGxvYWQuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICAgIGhvc3Q6IHtcbiAgICAgICAgY2xhc3M6ICdrYnEtc2luZ2xlLWZpbGUtdXBsb2FkJ1xuICAgIH1cbn0pXG5leHBvcnQgY2xhc3MgS2JxU2luZ2xlRmlsZVVwbG9hZENvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgS2JxSW5wdXRGaWxlLCBDYW5EaXNhYmxlIHtcbiAgICBASW5wdXQoKSBhY2NlcHQ6IHN0cmluZ1tdO1xuICAgIEBJbnB1dCgpIGRpc2FibGVkOiBib29sZWFuID0gZmFsc2U7XG4gICAgQElucHV0KCkgZXJyb3JzOiBzdHJpbmdbXSA9IFtdO1xuICAgIEBJbnB1dCgpIGZpbGVzOiBLYnFGaWxlSXRlbVtdID0gW107XG4gICAgQElucHV0KCkgaW5wdXRJZDogc3RyaW5nID0gYGticS1zaW5nbGUtZmlsZS11cGxvYWQtJHtuZXh0U2luZ2xlRmlsZVVwbG9hZFVuaXF1ZUlkKyt9YDtcbiAgICBASW5wdXQoKSBjdXN0b21WYWxpZGF0aW9uPzogS2JxRmlsZVZhbGlkYXRvckZuW107XG4gICAgQE91dHB1dCgpIGZpbGVRdWV1ZUNoYW5nZWQ6IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbSB8IG51bGw+ID0gbmV3IEV2ZW50RW1pdHRlcjxLYnFGaWxlSXRlbSB8IG51bGw+KCk7XG5cbiAgICBAVmlld0NoaWxkKCdpbnB1dCcpIGlucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuXG4gICAgaGFzRm9jdXMgPSBmYWxzZTtcblxuICAgIGNvbmZpZzogS2JxSW5wdXRGaWxlTGFiZWxcblxuICAgIHNlcGFyYXRlZENhcHRpb25UZXh0OiBzdHJpbmdbXTtcblxuICAgIHByaXZhdGUgZm9jdXNNb25pdG9yU3Vic2NyaXB0aW9uID0gU3Vic2NyaXB0aW9uLkVNUFRZO1xuXG4gICAgZ2V0IGFjY2VwdGVkRmlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWNjZXB0ICYmIHRoaXMuYWNjZXB0Lmxlbmd0aCA+IDAgPyB0aGlzLmFjY2VwdC5tYXAoKGV4dDogc3RyaW5nKSA9PiBgLiR7ZXh0fWApLmpvaW4oJywnKSA6ICcqLyonO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcml2YXRlIGZvY3VzTW9uaXRvcjogRm9jdXNNb25pdG9yLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChLQlFfRklMRV9VUExPQURfQ09ORklHVVJBVElPTikgcHVibGljIHJlYWRvbmx5IGNvbmZpZ3VyYXRpb246IEticUlucHV0RmlsZUxhYmVsLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEtCUV9MT0NBTEVfU0VSVklDRSkgcHJpdmF0ZSBsb2NhbGVTZXJ2aWNlPzogS2JxTG9jYWxlU2VydmljZVxuICAgICkge1xuICAgICAgICB0aGlzLmxvY2FsZVNlcnZpY2U/LmNoYW5nZXNcbiAgICAgICAgICAgIC5zdWJzY3JpYmUodGhpcy51cGRhdGVMb2NhbGVQYXJhbXMpO1xuXG4gICAgICAgIGlmICghbG9jYWxlU2VydmljZSkge1xuICAgICAgICAgICAgdGhpcy5pbml0RGVmYXVsdFBhcmFtcygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclN1YnNjcmlwdGlvbiA9IHRoaXMuZm9jdXNNb25pdG9yLm1vbml0b3IodGhpcy5pbnB1dClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKG9yaWdpbikgPT4gdGhpcy5vbkZvY3VzKG9yaWdpbiA9PT0gJ2tleWJvYXJkJykpO1xuICAgIH1cblxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmZvY3VzTW9uaXRvclN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIG9uRmlsZVNlbGVjdGVkVmlhQ2xpY2soeyB0YXJnZXQgfTogRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgY29uc3QgZmlsZXM6IEZpbGVMaXN0IHwgbnVsbCA9ICh0YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkuZmlsZXM7XG4gICAgICAgIGlmIChmaWxlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbGVzID0gW3RoaXMubWFwVG9GaWxlSXRlbShmaWxlc1swXSldO1xuICAgICAgICAgICAgdGhpcy5maWxlUXVldWVDaGFuZ2VkLmVtaXQodGhpcy5maWxlc1swXSk7XG4gICAgICAgIH1cbiAgICAgICAgLyogZXZlbiBpZiB0aGUgdXNlciBzZWxlY3RzIHRoZSBzYW1lIGZpbGUsXG4gICAgICAgICB0aGUgb25jaGFuZ2UgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQgZXZlcnkgdGltZSB1c2VyIGNsaWNrcyBvbiB0aGUgY29udHJvbC4qL1xuICAgICAgICB0aGlzLnJlbmRlcmVyLnNldFByb3BlcnR5KHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCwgJ3ZhbHVlJywgbnVsbCk7XG4gICAgfVxuXG4gICAgZGVsZXRlSXRlbShldmVudD86IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsgcmV0dXJuOyB9XG5cbiAgICAgICAgZXZlbnQ/LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmZpbGVzID0gW107XG4gICAgICAgIHRoaXMuZXJyb3JzID0gW107XG4gICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlZC5lbWl0KG51bGwpO1xuICAgIH1cblxuICAgIG9uRmlsZURyb3BwZWQoZmlsZXM6IEZpbGVMaXN0IHwgS2JxRmlsZVtdKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuXG4gICAgICAgIGlmICh0aGlzLmlzQ29ycmVjdEV4dGVuc2lvbihmaWxlc1swXSkpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsZXMgPSBBcnJheS5mcm9tKGZpbGVzKVxuICAgICAgICAgICAgICAgIC5tYXAoKGZpbGUpID0+IHRoaXMubWFwVG9GaWxlSXRlbShmaWxlKSk7XG5cbiAgICAgICAgICAgIHRoaXMuZmlsZVF1ZXVlQ2hhbmdlZC5lbWl0KHRoaXMuZmlsZXNbMF0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgb25Gb2N1cyhmb2N1c1N0YXRlOiBib29sZWFuKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7IHJldHVybjsgfVxuICAgICAgICB0aGlzLmhhc0ZvY3VzID0gZm9jdXNTdGF0ZTtcbiAgICAgICAgdGhpcy5jZHIubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVMb2NhbGVQYXJhbXMgPSAoKSA9PiB7XG4gICAgICAgIHRoaXMuY29uZmlnID0gdGhpcy5jb25maWd1cmF0aW9uIHx8IHRoaXMubG9jYWxlU2VydmljZT8uZ2V0UGFyYW1zKCdmaWxlVXBsb2FkJykubXVsdGlwbGU7XG5cbiAgICAgICAgdGhpcy5nZXRDYXB0aW9uVGV4dCgpO1xuXG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIHByaXZhdGUgbWFwVG9GaWxlSXRlbShmaWxlOiBGaWxlKTogS2JxRmlsZUl0ZW0ge1xuICAgICAgICB0aGlzLnZhbGlkYXRlRmlsZShmaWxlKTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZmlsZSxcbiAgICAgICAgICAgIHByb2dyZXNzOiBuZXcgQmVoYXZpb3JTdWJqZWN0PG51bWJlcj4oMCksXG4gICAgICAgICAgICBsb2FkaW5nOiBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgdmFsaWRhdGVGaWxlKGZpbGU6IEZpbGUpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY3VzdG9tVmFsaWRhdGlvbiAmJiB0aGlzLmN1c3RvbVZhbGlkYXRpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmVycm9ycyA9IHRoaXMuY3VzdG9tVmFsaWRhdGlvblxuICAgICAgICAgICAgICAgIC5yZWR1Y2UoXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcnM6IChzdHJpbmcgfCBudWxsKVtdLCB2YWxpZGF0b3JGbjogS2JxRmlsZVZhbGlkYXRvckZuKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMucHVzaCh2YWxpZGF0b3JGbihmaWxlKSk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcnM7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIFtdXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbikgYXMgc3RyaW5nW107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzQ29ycmVjdEV4dGVuc2lvbihmaWxlOiBGaWxlKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGZpbGVFeHQ6IHN0cmluZyA9IGZpbGUubmFtZS5zcGxpdCgnLicpLnBvcCgpIHx8ICcnO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmFjY2VwdGVkRmlsZXMgIT09ICcqLyonICYmIHRoaXMuYWNjZXB0ZWRGaWxlcy5sZW5ndGggPiAwID8gdGhpcy5hY2NlcHRlZEZpbGVzLmluY2x1ZGVzKGZpbGVFeHQpIDogdHJ1ZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGluaXREZWZhdWx0UGFyYW1zKCkge1xuICAgICAgICB0aGlzLmNvbmZpZyA9IEtCUV9TSU5HTEVfRklMRV9VUExPQURfREVGQVVMVF9DT05GSUdVUkFUSU9OO1xuXG4gICAgICAgIHRoaXMuZ2V0Q2FwdGlvblRleHQoKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENhcHRpb25UZXh0KCkge1xuICAgICAgICB0aGlzLnNlcGFyYXRlZENhcHRpb25UZXh0ID0gdGhpcy5jb25maWcuY2FwdGlvblRleHQuc3BsaXQoJ3t7IGJyb3dzZUxpbmsgfX0nKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkXCJcbiAgICAga2JxRmlsZURyb3BcbiAgICAgW2NsYXNzLmticS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgIFtjbGFzcy5rYnEtZXJyb3JdPVwiZXJyb3JzPy5sZW5ndGhcIlxuICAgICAoZmlsZXNEcm9wcGVkKT1cIm9uRmlsZURyb3BwZWQoJGV2ZW50KVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cImRyb3B6b25lXCIgKm5nSWY9XCIhZmlsZXMubGVuZ3RoOyBlbHNlIGZpbGVPdXRwdXRcIj5cbiAgICAgICAgPGkga2JxLWljb249XCJtYy11cGxvYWQtdG8tY2xvdWRfMjRcIj48L2k+XG4gICAgICAgIDxzcGFuIGNsYXNzPVwiZHJvcHpvbmVfX3RleHRcIj5cbiAgICAgICAgICAgIHt7IHNlcGFyYXRlZENhcHRpb25UZXh0WzBdIH19PGxhYmVsIGNsYXNzPVwia2JxLWxpbmtcIiBbY2xhc3Mua2JxLWZvY3VzZWRdPVwiaGFzRm9jdXNcIiBbZm9yXT1cImlucHV0SWRcIj57eyBjb25maWcuYnJvd3NlTGluayB9fTwvbGFiZWw+e3sgc2VwYXJhdGVkQ2FwdGlvblRleHRbMV0gfX1cbiAgICAgICAgPC9zcGFuPlxuICAgIDwvZGl2PlxuXG4gICAgPGlucHV0ICNpbnB1dFxuICAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgIGNsYXNzPVwiY2RrLXZpc3VhbGx5LWhpZGRlblwiXG4gICAgICAgICAgIFtpZF09XCJpbnB1dElkXCJcbiAgICAgICAgICAgW2FjY2VwdF09XCJhY2NlcHRlZEZpbGVzXCJcbiAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgKGNoYW5nZSk9XCJvbkZpbGVTZWxlY3RlZFZpYUNsaWNrKCRldmVudClcIj5cbjwvZGl2PlxuPGticS1oaW50IGNsYXNzPVwia2JxLWZpbGUtdXBsb2FkX19oaW50XCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2hpbnRdXCI+PC9uZy1jb250ZW50PlxuPC9rYnEtaGludD5cbjxuZy1jb250YWluZXIgKm5nSWY9XCJlcnJvcnM/Lmxlbmd0aFwiPlxuICAgIDxrYnEtaGludCBjbGFzcz1cImticS1maWxlLXVwbG9hZF9faGludCBrYnEtZXJyb3JcIiAqbmdGb3I9XCJsZXQgZXJyb3Igb2YgZXJyb3JzXCI+e3sgZXJyb3IgfX08L2ticS1oaW50PlxuPC9uZy1jb250YWluZXI+XG5cblxuPG5nLXRlbXBsYXRlICNmaWxlT3V0cHV0PlxuICAgIDxkaXYgY2xhc3M9XCJmaWxlLWl0ZW1cIiAqbmdJZj1cImZpbGVzICYmIGZpbGVzLmxlbmd0aFwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtX190ZXh0LXdyYXBwZXJcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ7IGxvYWRpbmc6IGZpbGVzWzBdLmxvYWRpbmcgfCBhc3luYywgcHJvZ3Jlc3M6IGZpbGVzWzBdLnByb2dyZXNzIHwgYXN5bmN9IGFzIGFzeW5jRGF0YVwiPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhYXN5bmNEYXRhLmxvYWRpbmdcIj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW2ticS1pY29uXVwiPjwvbmctY29udGVudD5cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgIDxrYnEtcHJvZ3Jlc3Mtc3Bpbm5lclxuICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiYXN5bmNEYXRhLnByb2dyZXNzIHx8IDBcIlxuICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImFzeW5jRGF0YS5sb2FkaW5nXCJcbiAgICAgICAgICAgICAgICA+PC9rYnEtcHJvZ3Jlc3Mtc3Bpbm5lcj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmlsZS1pdGVtX190ZXh0XCIgW2ticUVsbGlwc2lzQ2VudGVyXT1cImZpbGVzWzBdLmZpbGUubmFtZVwiIFttaW5WaXNpYmxlTGVuZ3RoXT1cIjEwXCI+PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8aSBrYnEtaWNvbi1idXR0b249XCJtYy1jbG9zZS1jaXJjbGVfMTZcIlxuICAgICAgICAgICBbY29sb3JdPVwiJ2NvbnRyYXN0J1wiXG4gICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgIChrZXlkb3duLmRlbGV0ZSk9XCJkZWxldGVJdGVtKClcIlxuICAgICAgICAgICAoa2V5ZG93bi5iYWNrc3BhY2UpPVwiZGVsZXRlSXRlbSgpXCJcbiAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZUl0ZW0oJGV2ZW50KVwiPlxuICAgICAgICA8L2k+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19