@acpaas-ui/ngx-forms 5.4.0 → 6.0.0-beta.1

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 (166) hide show
  1. package/README.md +9 -11
  2. package/esm2020/acpaas-ui-ngx-forms.mjs +5 -0
  3. package/esm2020/lib/auto-complete/auto-complete.module.mjs +24 -0
  4. package/esm2020/lib/auto-complete/components/auto-complete/auto-complete.component.mjs +347 -0
  5. package/esm2020/lib/auto-complete/public-api.mjs +3 -0
  6. package/esm2020/lib/datepicker/components/datepicker/datepicker.component.mjs +273 -0
  7. package/esm2020/lib/datepicker/datepicker.conf.mjs +8 -0
  8. package/esm2020/lib/datepicker/datepicker.module.mjs +55 -0
  9. package/esm2020/lib/datepicker/public-api.mjs +4 -0
  10. package/esm2020/lib/datepicker/types/datepicker.types.mjs +2 -0
  11. package/esm2020/lib/range-slider/components/range-slider/range-slider.component.mjs +349 -0
  12. package/esm2020/lib/range-slider/public-api.mjs +3 -0
  13. package/esm2020/lib/range-slider/range-slider.module.mjs +20 -0
  14. package/esm2020/lib/range-slider/types/range-slider.types.mjs +2 -0
  15. package/esm2020/lib/search-filter/components/search-filter/search-filter.component.mjs +259 -0
  16. package/esm2020/lib/search-filter/public-api.mjs +3 -0
  17. package/esm2020/lib/search-filter/search-filter.module.mjs +22 -0
  18. package/esm2020/lib/search-filter/types/search-filter.types.mjs +2 -0
  19. package/esm2020/lib/shared/services/search.service.mjs +32 -0
  20. package/esm2020/lib/shared/types/search.types.mjs +2 -0
  21. package/esm2020/lib/timepicker/classes/timepicker.validators.mjs +49 -0
  22. package/esm2020/lib/timepicker/components/timepicker/timepicker.component.mjs +229 -0
  23. package/esm2020/lib/timepicker/public-api.mjs +5 -0
  24. package/esm2020/lib/timepicker/timepicker.module.mjs +22 -0
  25. package/esm2020/lib/timepicker/types/timepicker.types.mjs +7 -0
  26. package/esm2020/lib/upload/classes/uploader.class.mjs +112 -0
  27. package/esm2020/lib/upload/components/upload/upload.component.mjs +97 -0
  28. package/esm2020/lib/upload/components/upload-input/upload-input.component.mjs +56 -0
  29. package/esm2020/lib/upload/components/upload-queue/upload-queue.component.mjs +78 -0
  30. package/esm2020/lib/upload/components/upload-zone/upload-zone.component.mjs +252 -0
  31. package/esm2020/lib/upload/components/validation-list/validation-list.component.mjs +64 -0
  32. package/esm2020/lib/upload/public-api.mjs +10 -0
  33. package/esm2020/lib/upload/services/validation-messages.service.mjs +29 -0
  34. package/esm2020/lib/upload/types/upload.types.mjs +2 -0
  35. package/esm2020/lib/upload/upload.conf.mjs +12 -0
  36. package/esm2020/lib/upload/upload.module.mjs +45 -0
  37. package/esm2020/public-api.mjs +7 -0
  38. package/fesm2015/acpaas-ui-ngx-forms.mjs +2518 -0
  39. package/fesm2015/acpaas-ui-ngx-forms.mjs.map +1 -0
  40. package/fesm2020/acpaas-ui-ngx-forms.mjs +2339 -0
  41. package/fesm2020/acpaas-ui-ngx-forms.mjs.map +1 -0
  42. package/{acpaas-ui-ngx-forms.d.ts → index.d.ts} +1 -1
  43. package/lib/auto-complete/auto-complete.module.d.ts +9 -0
  44. package/lib/auto-complete/components/auto-complete/auto-complete.component.d.ts +5 -1
  45. package/lib/datepicker/components/datepicker/datepicker.component.d.ts +9 -8
  46. package/lib/datepicker/datepicker.conf.d.ts +0 -1
  47. package/lib/datepicker/datepicker.module.d.ts +11 -1
  48. package/lib/datepicker/public-api.d.ts +1 -1
  49. package/lib/range-slider/components/range-slider/range-slider.component.d.ts +8 -2
  50. package/lib/range-slider/range-slider.module.d.ts +7 -0
  51. package/lib/search-filter/components/search-filter/search-filter.component.d.ts +10 -4
  52. package/lib/search-filter/search-filter.module.d.ts +9 -0
  53. package/lib/shared/services/search.service.d.ts +3 -0
  54. package/lib/timepicker/components/timepicker/timepicker.component.d.ts +9 -4
  55. package/lib/timepicker/timepicker.module.d.ts +8 -0
  56. package/lib/upload/components/upload/upload.component.d.ts +5 -0
  57. package/lib/upload/components/upload-input/upload-input.component.d.ts +3 -0
  58. package/lib/upload/components/upload-queue/upload-queue.component.d.ts +3 -0
  59. package/lib/upload/components/upload-zone/upload-zone.component.d.ts +7 -0
  60. package/lib/upload/components/validation-list/validation-list.component.d.ts +3 -0
  61. package/lib/upload/services/validation-messages.service.d.ts +3 -0
  62. package/lib/upload/upload.module.d.ts +14 -1
  63. package/package.json +37 -26
  64. package/public-api.d.ts +0 -2
  65. package/acpaas-ui-ngx-forms.metadata.json +0 -1
  66. package/bundles/acpaas-ui-ngx-forms.umd.js +0 -3862
  67. package/bundles/acpaas-ui-ngx-forms.umd.js.map +0 -1
  68. package/bundles/acpaas-ui-ngx-forms.umd.min.js +0 -2
  69. package/bundles/acpaas-ui-ngx-forms.umd.min.js.map +0 -1
  70. package/esm2015/acpaas-ui-ngx-forms.js +0 -11
  71. package/esm2015/lib/auto-complete/auto-complete.module.js +0 -36
  72. package/esm2015/lib/auto-complete/components/auto-complete/auto-complete.component.js +0 -416
  73. package/esm2015/lib/auto-complete/public-api.js +0 -8
  74. package/esm2015/lib/datepicker/components/datepicker/datepicker.component.js +0 -343
  75. package/esm2015/lib/datepicker/datepicker.conf.js +0 -18
  76. package/esm2015/lib/datepicker/datepicker.module.js +0 -59
  77. package/esm2015/lib/datepicker/public-api.js +0 -9
  78. package/esm2015/lib/datepicker/types/datepicker.types.js +0 -20
  79. package/esm2015/lib/mask/directives/mask.directive.js +0 -51
  80. package/esm2015/lib/mask/mask.module.js +0 -25
  81. package/esm2015/lib/mask/public-api.js +0 -8
  82. package/esm2015/lib/range-slider/components/range-slider/range-slider.component.js +0 -424
  83. package/esm2015/lib/range-slider/public-api.js +0 -8
  84. package/esm2015/lib/range-slider/range-slider.module.js +0 -26
  85. package/esm2015/lib/range-slider/types/range-slider.types.js +0 -16
  86. package/esm2015/lib/search-filter/components/search-filter/search-filter.component.js +0 -219
  87. package/esm2015/lib/search-filter/public-api.js +0 -8
  88. package/esm2015/lib/search-filter/search-filter.module.js +0 -30
  89. package/esm2015/lib/search-filter/types/search-filter.types.js +0 -16
  90. package/esm2015/lib/shared/services/search.service.js +0 -58
  91. package/esm2015/lib/shared/types/search.types.js +0 -20
  92. package/esm2015/lib/timepicker/classes/timepicker.validators.js +0 -84
  93. package/esm2015/lib/timepicker/components/timepicker/timepicker.component.js +0 -227
  94. package/esm2015/lib/timepicker/public-api.js +0 -10
  95. package/esm2015/lib/timepicker/timepicker.module.js +0 -29
  96. package/esm2015/lib/timepicker/types/timepicker.types.js +0 -13
  97. package/esm2015/lib/upload/classes/uploader.class.js +0 -189
  98. package/esm2015/lib/upload/components/upload/upload.component.js +0 -100
  99. package/esm2015/lib/upload/components/upload-input/upload-input.component.js +0 -67
  100. package/esm2015/lib/upload/components/upload-queue/upload-queue.component.js +0 -68
  101. package/esm2015/lib/upload/components/upload-zone/upload-zone.component.js +0 -219
  102. package/esm2015/lib/upload/components/validation-list/validation-list.component.js +0 -62
  103. package/esm2015/lib/upload/public-api.js +0 -15
  104. package/esm2015/lib/upload/services/validation-messages.service.js +0 -48
  105. package/esm2015/lib/upload/types/upload.types.js +0 -48
  106. package/esm2015/lib/upload/upload.conf.js +0 -21
  107. package/esm2015/lib/upload/upload.module.js +0 -62
  108. package/esm2015/lib/wysiwyg/components/wysiwyg/wysiwyg.component.js +0 -158
  109. package/esm2015/lib/wysiwyg/public-api.js +0 -9
  110. package/esm2015/lib/wysiwyg/wysiwyg.conf.js +0 -24
  111. package/esm2015/lib/wysiwyg/wysiwyg.module.js +0 -29
  112. package/esm2015/public-api.js +0 -14
  113. package/esm5/acpaas-ui-ngx-forms.js +0 -11
  114. package/esm5/lib/auto-complete/auto-complete.module.js +0 -40
  115. package/esm5/lib/auto-complete/components/auto-complete/auto-complete.component.js +0 -506
  116. package/esm5/lib/auto-complete/public-api.js +0 -8
  117. package/esm5/lib/datepicker/components/datepicker/datepicker.component.js +0 -392
  118. package/esm5/lib/datepicker/datepicker.conf.js +0 -18
  119. package/esm5/lib/datepicker/datepicker.module.js +0 -69
  120. package/esm5/lib/datepicker/public-api.js +0 -9
  121. package/esm5/lib/datepicker/types/datepicker.types.js +0 -20
  122. package/esm5/lib/mask/directives/mask.directive.js +0 -58
  123. package/esm5/lib/mask/mask.module.js +0 -29
  124. package/esm5/lib/mask/public-api.js +0 -8
  125. package/esm5/lib/range-slider/components/range-slider/range-slider.component.js +0 -514
  126. package/esm5/lib/range-slider/public-api.js +0 -8
  127. package/esm5/lib/range-slider/range-slider.module.js +0 -30
  128. package/esm5/lib/range-slider/types/range-slider.types.js +0 -16
  129. package/esm5/lib/search-filter/components/search-filter/search-filter.component.js +0 -256
  130. package/esm5/lib/search-filter/public-api.js +0 -8
  131. package/esm5/lib/search-filter/search-filter.module.js +0 -34
  132. package/esm5/lib/search-filter/types/search-filter.types.js +0 -16
  133. package/esm5/lib/shared/services/search.service.js +0 -68
  134. package/esm5/lib/shared/types/search.types.js +0 -20
  135. package/esm5/lib/timepicker/classes/timepicker.validators.js +0 -102
  136. package/esm5/lib/timepicker/components/timepicker/timepicker.component.js +0 -259
  137. package/esm5/lib/timepicker/public-api.js +0 -10
  138. package/esm5/lib/timepicker/timepicker.module.js +0 -33
  139. package/esm5/lib/timepicker/types/timepicker.types.js +0 -13
  140. package/esm5/lib/upload/classes/uploader.class.js +0 -249
  141. package/esm5/lib/upload/components/upload/upload.component.js +0 -117
  142. package/esm5/lib/upload/components/upload-input/upload-input.component.js +0 -84
  143. package/esm5/lib/upload/components/upload-queue/upload-queue.component.js +0 -78
  144. package/esm5/lib/upload/components/upload-zone/upload-zone.component.js +0 -264
  145. package/esm5/lib/upload/components/validation-list/validation-list.component.js +0 -81
  146. package/esm5/lib/upload/public-api.js +0 -15
  147. package/esm5/lib/upload/services/validation-messages.service.js +0 -47
  148. package/esm5/lib/upload/types/upload.types.js +0 -48
  149. package/esm5/lib/upload/upload.conf.js +0 -21
  150. package/esm5/lib/upload/upload.module.js +0 -71
  151. package/esm5/lib/wysiwyg/components/wysiwyg/wysiwyg.component.js +0 -199
  152. package/esm5/lib/wysiwyg/public-api.js +0 -9
  153. package/esm5/lib/wysiwyg/wysiwyg.conf.js +0 -24
  154. package/esm5/lib/wysiwyg/wysiwyg.module.js +0 -33
  155. package/esm5/public-api.js +0 -14
  156. package/fesm2015/acpaas-ui-ngx-forms.js +0 -3079
  157. package/fesm2015/acpaas-ui-ngx-forms.js.map +0 -1
  158. package/fesm5/acpaas-ui-ngx-forms.js +0 -3635
  159. package/fesm5/acpaas-ui-ngx-forms.js.map +0 -1
  160. package/lib/mask/directives/mask.directive.d.ts +0 -8
  161. package/lib/mask/mask.module.d.ts +0 -2
  162. package/lib/mask/public-api.d.ts +0 -2
  163. package/lib/wysiwyg/components/wysiwyg/wysiwyg.component.d.ts +0 -43
  164. package/lib/wysiwyg/public-api.d.ts +0 -3
  165. package/lib/wysiwyg/wysiwyg.conf.d.ts +0 -18
  166. package/lib/wysiwyg/wysiwyg.module.d.ts +0 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @acpaas-ui/ngx-forms
2
2
 
3
- The forms module is a collection of several forms-related modules, like an autocomplete, a datepicker, a mask, a range slider, a timepicker, etc.
3
+ The forms module is a collection of several forms-related modules, like an autocomplete, a datepicker, a range slider, a timepicker, etc.
4
4
  You can find an overview in the [Modules](#modules) section below.
5
5
 
6
6
  ## Documentation
@@ -9,16 +9,14 @@ Visit our [documentation site](https://antwerp-ui.digipolis.be/) for full how-to
9
9
 
10
10
  ## <a name="modules"></a>Modules
11
11
 
12
- | Name | Description | Documentation |
13
- | ----------- | ------ | -------------------------- |
14
- | `AutoCompleteModule` | This module creates an input field with autocomplete functionality. | [Documentation](src/lib/auto-complete/README.md) |
15
- | `DatepickerModule` | This package allows the user to select a date either by input or by picking one in the calendar flyout. | [Documentation](src/lib/datepicker/README.md) |
16
- | `MaskModule` | With this module you can make input fields that only accept a specific format. | [Documentation](src/lib/mask/README.md) |
17
- | `RangeSliderModule` | This module provides a range slider. | [Documentation](src/lib/range-slider/README.md) |
18
- | `SearchFilterModule` | This package allows the user to use a JIRA-like filter component with remote search capabilities. | [Documentation](src/lib/search-filter/README.md) |
19
- | `TimepickerModule` | This package allows the user set the time either by choosing a slot in the dropdown or by typing in the autocomplete field. | [Documentation](src/lib/timepicker/README.md) |
20
- | `UploadModule` | This module provides a couple of upload components and a specific `Uploader` class. | [Documentation](src/lib/upload/README.md) |
21
- | `WysiwygModule` | This module provides a wysiwyg that can be used on a page or a form. | [Documentation](src/lib/wysiwyg/README.md) |
12
+ | Name | Description | Documentation |
13
+ | -------------------- | --------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
14
+ | `AutoCompleteModule` | This module creates an input field with autocomplete functionality. | [Documentation](src/lib/auto-complete/README.md) |
15
+ | `DatepickerModule` | This package allows the user to select a date either by input or by picking one in the calendar flyout. | [Documentation](src/lib/datepicker/README.md) |
16
+ | `RangeSliderModule` | This module provides a range slider. | [Documentation](src/lib/range-slider/README.md) |
17
+ | `SearchFilterModule` | This package allows the user to use a JIRA-like filter component with remote search capabilities. | [Documentation](src/lib/search-filter/README.md) |
18
+ | `TimepickerModule` | This package allows the user set the time either by choosing a slot in the dropdown or by typing in the autocomplete field. | [Documentation](src/lib/timepicker/README.md) |
19
+ | `UploadModule` | This module provides a couple of upload components and a specific `Uploader` class. | [Documentation](src/lib/upload/README.md) |
22
20
 
23
21
  ## Contributing
24
22
 
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './public-api';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNwYWFzLXVpLW5neC1mb3Jtcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hY3BhYXMtdWktbmd4LWZvcm1zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljLWFwaSc7XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { FormsModule } from '@angular/forms';
4
+ import { FlyoutModule } from '@acpaas-ui/ngx-flyout';
5
+ import { SelectableListModule } from '@acpaas-ui/ngx-selectable-list';
6
+ import { SearchService } from '../shared/services/search.service';
7
+ import { AutoCompleteComponent } from './components/auto-complete/auto-complete.component';
8
+ import * as i0 from "@angular/core";
9
+ export class AutoCompleteModule {
10
+ }
11
+ /** @nocollapse */ AutoCompleteModule.ɵfac = function AutoCompleteModule_Factory(t) { return new (t || AutoCompleteModule)(); };
12
+ /** @nocollapse */ AutoCompleteModule.ɵmod = /** @pureOrBreakMyCode */ i0.ɵɵdefineNgModule({ type: AutoCompleteModule });
13
+ /** @nocollapse */ AutoCompleteModule.ɵinj = /** @pureOrBreakMyCode */ i0.ɵɵdefineInjector({ providers: [SearchService], imports: [CommonModule, FormsModule, FlyoutModule, SelectableListModule] });
14
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AutoCompleteModule, [{
15
+ type: NgModule,
16
+ args: [{
17
+ imports: [CommonModule, FormsModule, FlyoutModule, SelectableListModule],
18
+ declarations: [AutoCompleteComponent],
19
+ exports: [AutoCompleteComponent],
20
+ providers: [SearchService],
21
+ }]
22
+ }], null, null); })();
23
+ (function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AutoCompleteModule, { declarations: [AutoCompleteComponent], imports: [CommonModule, FormsModule, FlyoutModule, SelectableListModule], exports: [AutoCompleteComponent] }); })();
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2F1dG8tY29tcGxldGUvYXV0by1jb21wbGV0ZS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzdDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDbEUsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sb0RBQW9ELENBQUM7O0FBUTNGLE1BQU0sT0FBTyxrQkFBa0I7O3VHQUFsQixrQkFBa0I7bUdBQWxCLGtCQUFrQjt3R0FGbEIsQ0FBQyxhQUFhLENBQUMsWUFIaEIsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsb0JBQW9CO3VGQUs1RCxrQkFBa0I7Y0FOOUIsUUFBUTtlQUFDO2dCQUNSLE9BQU8sRUFBRSxDQUFDLFlBQVksRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLG9CQUFvQixDQUFDO2dCQUN4RSxZQUFZLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQztnQkFDckMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBQ2hDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQzthQUMzQjs7d0ZBQ1ksa0JBQWtCLG1CQUpkLHFCQUFxQixhQUQxQixZQUFZLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxvQkFBb0IsYUFFN0QscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEZseW91dE1vZHVsZSB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LWZseW91dCc7XG5pbXBvcnQgeyBTZWxlY3RhYmxlTGlzdE1vZHVsZSB9IGZyb20gJ0BhY3BhYXMtdWkvbmd4LXNlbGVjdGFibGUtbGlzdCc7XG5pbXBvcnQgeyBTZWFyY2hTZXJ2aWNlIH0gZnJvbSAnLi4vc2hhcmVkL3NlcnZpY2VzL3NlYXJjaC5zZXJ2aWNlJztcbmltcG9ydCB7IEF1dG9Db21wbGV0ZUNvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50JztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgRm9ybXNNb2R1bGUsIEZseW91dE1vZHVsZSwgU2VsZWN0YWJsZUxpc3RNb2R1bGVdLFxuICBkZWNsYXJhdGlvbnM6IFtBdXRvQ29tcGxldGVDb21wb25lbnRdLFxuICBleHBvcnRzOiBbQXV0b0NvbXBsZXRlQ29tcG9uZW50XSxcbiAgcHJvdmlkZXJzOiBbU2VhcmNoU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZU1vZHVsZSB7fVxuIl19
@@ -0,0 +1,347 @@
1
+ import { Component, ContentChild, EventEmitter, forwardRef, Input, Output, TemplateRef, ViewChild, } from '@angular/core';
2
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
3
+ import { get, isEqual } from 'lodash-es';
4
+ import { FlyoutDirective, FlyoutZoneDirective } from '@acpaas-ui/ngx-flyout';
5
+ import * as i0 from "@angular/core";
6
+ import * as i1 from "../../../shared/services/search.service";
7
+ import * as i2 from "@angular/common";
8
+ import * as i3 from "@angular/forms";
9
+ import * as i4 from "@acpaas-ui/ngx-flyout";
10
+ import * as i5 from "@acpaas-ui/ngx-selectable-list";
11
+ function AutoCompleteComponent_div_2_span_1_Template(rf, ctx) { if (rf & 1) {
12
+ i0.ɵɵelementStart(0, "span", 7);
13
+ i0.ɵɵelement(1, "span", 8);
14
+ i0.ɵɵelementStart(2, "span", 9);
15
+ i0.ɵɵtext(3);
16
+ i0.ɵɵelementEnd()();
17
+ } if (rf & 2) {
18
+ const ctx_r1 = i0.ɵɵnextContext(2);
19
+ i0.ɵɵadvance(3);
20
+ i0.ɵɵtextInterpolate(ctx_r1.loadingText);
21
+ } }
22
+ function AutoCompleteComponent_div_2_span_2_Template(rf, ctx) { if (rf & 1) {
23
+ i0.ɵɵelementStart(0, "span", 10);
24
+ i0.ɵɵtext(1);
25
+ i0.ɵɵelementEnd();
26
+ } if (rf & 2) {
27
+ const ctx_r2 = i0.ɵɵnextContext(2);
28
+ i0.ɵɵadvance(1);
29
+ i0.ɵɵtextInterpolate(ctx_r2.searchIncentiveText);
30
+ } }
31
+ function AutoCompleteComponent_div_2_span_3_Template(rf, ctx) { if (rf & 1) {
32
+ i0.ɵɵelementStart(0, "span", 10);
33
+ i0.ɵɵtext(1);
34
+ i0.ɵɵelementEnd();
35
+ } if (rf & 2) {
36
+ const ctx_r3 = i0.ɵɵnextContext(2);
37
+ i0.ɵɵadvance(1);
38
+ i0.ɵɵtextInterpolate(ctx_r3.noResultsText);
39
+ } }
40
+ function AutoCompleteComponent_div_2_aui_selectable_list_4_Template(rf, ctx) { if (rf & 1) {
41
+ const _r6 = i0.ɵɵgetCurrentView();
42
+ i0.ɵɵelementStart(0, "aui-selectable-list", 11);
43
+ i0.ɵɵlistener("selected", function AutoCompleteComponent_div_2_aui_selectable_list_4_Template_aui_selectable_list_selected_0_listener($event) { i0.ɵɵrestoreView(_r6); const ctx_r5 = i0.ɵɵnextContext(2); return i0.ɵɵresetView(ctx_r5.onSelect($event)); });
44
+ i0.ɵɵelementEnd();
45
+ } if (rf & 2) {
46
+ const ctx_r4 = i0.ɵɵnextContext(2);
47
+ i0.ɵɵproperty("index", ctx_r4.index)("itemTemplate", ctx_r4.template)("items", ctx_r4.results)("label", ctx_r4.label)("search", ctx_r4.query);
48
+ } }
49
+ function AutoCompleteComponent_div_2_Template(rf, ctx) { if (rf & 1) {
50
+ i0.ɵɵelementStart(0, "div", 3);
51
+ i0.ɵɵtemplate(1, AutoCompleteComponent_div_2_span_1_Template, 4, 1, "span", 4);
52
+ i0.ɵɵtemplate(2, AutoCompleteComponent_div_2_span_2_Template, 2, 1, "span", 5);
53
+ i0.ɵɵtemplate(3, AutoCompleteComponent_div_2_span_3_Template, 2, 1, "span", 5);
54
+ i0.ɵɵtemplate(4, AutoCompleteComponent_div_2_aui_selectable_list_4_Template, 1, 5, "aui-selectable-list", 6);
55
+ i0.ɵɵelementEnd();
56
+ } if (rf & 2) {
57
+ const ctx_r0 = i0.ɵɵnextContext();
58
+ i0.ɵɵadvance(1);
59
+ i0.ɵɵproperty("ngIf", ctx_r0.focused && ctx_r0.loadingText && ctx_r0.searching);
60
+ i0.ɵɵadvance(1);
61
+ i0.ɵɵproperty("ngIf", ctx_r0.focused && ctx_r0.searchIncentiveText && !ctx_r0.searching && !ctx_r0.query && !ctx_r0.results.length);
62
+ i0.ɵɵadvance(1);
63
+ i0.ɵɵproperty("ngIf", ctx_r0.focused && ctx_r0.noResultsText && !ctx_r0.searching && ctx_r0.query && !ctx_r0.results.length);
64
+ i0.ɵɵadvance(1);
65
+ i0.ɵɵproperty("ngIf", ctx_r0.results.length > 0 && !(ctx_r0.focused && ctx_r0.loadingText && ctx_r0.searching));
66
+ } }
67
+ export class AutoCompleteComponent {
68
+ constructor(ref, searchService) {
69
+ this.ref = ref;
70
+ this.searchService = searchService;
71
+ this.results = []; // The values for the selectable list
72
+ this.data = []; // The values to search in when remote search is disabled
73
+ this.remote = false; // Disable or enamble remote search
74
+ this.minCharacters = 0;
75
+ this.clearInvalid = false;
76
+ this.showAllByDefault = false;
77
+ this.autoComplete = 'off';
78
+ // Eventemitter for searchvalue (parent object should update the results with this param)
79
+ this.search = new EventEmitter();
80
+ // eslint-disable-next-line @angular-eslint/no-output-native
81
+ this.select = new EventEmitter();
82
+ this.query = '';
83
+ this.index = -1; // index for active element in selectable list, by default -1 (so it starts in the input field)
84
+ this.selectedItem = null; // keep a backup of the selectedItem
85
+ this.searching = false; // track remote search state
86
+ this.focused = false;
87
+ this.isDisabled = false;
88
+ this.remoteValue = false;
89
+ this.updateModel = (_) => { };
90
+ }
91
+ // CONTROL_VALUE_ACCESSOR interface
92
+ writeValue(value = '') {
93
+ if (this.value) {
94
+ const selected = this.data.find((item) => item[this.value] === value);
95
+ if (selected) {
96
+ return (this.query = selected[this.label]);
97
+ }
98
+ if (this.remote && !!value) {
99
+ this.remoteValue = true;
100
+ }
101
+ }
102
+ this.query = value;
103
+ }
104
+ // CONTROL_VALUE_ACCESSOR interface
105
+ registerOnChange(fn) {
106
+ this.updateModel = fn;
107
+ }
108
+ // CONTROL_VALUE_ACCESSOR interface
109
+ registerOnTouched() { }
110
+ setDisabledState(isDisabled) {
111
+ this.isDisabled = isDisabled;
112
+ }
113
+ ngOnInit() {
114
+ if (Array.isArray(this.data) && this.data.length > 0 && !this.query && this.showAllByDefault) {
115
+ this.results = [...this.data];
116
+ }
117
+ }
118
+ // OnChanges interface
119
+ ngOnChanges(changes) {
120
+ if (!changes) {
121
+ return;
122
+ }
123
+ const newData = get(changes, 'data.currentValue', []);
124
+ if (!isEqual(newData, get(changes, 'data.previousValue', []))) {
125
+ if (this.remote) {
126
+ this.remoteSearch();
127
+ }
128
+ else {
129
+ this.localSearch();
130
+ }
131
+ }
132
+ if (changes.results && changes.results.currentValue) {
133
+ this.searching = false;
134
+ }
135
+ }
136
+ propagateChange(item) {
137
+ this.query = item !== null ? (this.label ? item[this.label] : item) : '';
138
+ this.select.emit(item);
139
+ if (!item) {
140
+ return;
141
+ }
142
+ const key = this.value ? this.value : this.label ? this.label : null;
143
+ this.updateModel(key ? item[key] || '' : item);
144
+ this.selectedItem = item;
145
+ }
146
+ /**
147
+ * triggers on input value change
148
+ */
149
+ doSearch() {
150
+ this.index = -1; // reset index
151
+ this.searching = true;
152
+ if (this.remote) {
153
+ this.search.emit(this.query); // ask for new remote data
154
+ }
155
+ else {
156
+ this.localSearch();
157
+ }
158
+ this.openFlyout(); // open the flyout when there is a change
159
+ }
160
+ /**
161
+ * triggers on selectable-list:select -> onClick event in selectable-list
162
+ */
163
+ onSelect(item) {
164
+ this.propagateChange(item);
165
+ this.closeFlyout(); // Close the flyout manually
166
+ }
167
+ onFlyoutClosed() {
168
+ // there is only 1 result, select it
169
+ if (this.index >= 0 && this.results.length === 1) {
170
+ return this.onSelect(this.results[0]);
171
+ }
172
+ // there is no query nor selected item, clear the selected item
173
+ if (!this.query && this.index < 0) {
174
+ return this.onSelect(null);
175
+ }
176
+ // reset the query for an invalid query if clearInvalid is true
177
+ if (this.clearInvalid && this.query && !this.results.length && this.index < 0) {
178
+ this.query = this.selectedItem ? (this.label ? this.selectedItem[this.label] : this.selectedItem) : '';
179
+ }
180
+ }
181
+ onKeyArrowDown() {
182
+ if (this.index < this.results.length - 1) {
183
+ this.scrollList(1);
184
+ }
185
+ this.openFlyout();
186
+ }
187
+ onKeyArrowUp() {
188
+ if (this.index >= 0) {
189
+ this.scrollList(-1);
190
+ }
191
+ }
192
+ onKeyEnter(event) {
193
+ event.preventDefault(); // Do not submit form when selecting an item.
194
+ const query = this.index >= 0 ? this.results[this.index] : this.query;
195
+ this.propagateChange(query);
196
+ this.closeFlyout();
197
+ }
198
+ onKeyEscape() {
199
+ this.closeFlyout();
200
+ }
201
+ onFocus() {
202
+ this.focused = true;
203
+ this.openFlyout();
204
+ }
205
+ openFlyout() {
206
+ if (this.flyout) {
207
+ this.flyout.open();
208
+ }
209
+ }
210
+ closeFlyout() {
211
+ if (this.flyout) {
212
+ this.flyout.close();
213
+ }
214
+ this.focused = false;
215
+ }
216
+ localSearch() {
217
+ this.results = this.searchService.search(this.data, {
218
+ minLength: this.minCharacters,
219
+ key: this.label,
220
+ query: this.query,
221
+ showAllByDefault: this.showAllByDefault,
222
+ });
223
+ if (this.results.length === 1 && this.query === this.results[0][this.label]) {
224
+ this.index = 0;
225
+ }
226
+ this.searching = false;
227
+ }
228
+ remoteSearch() {
229
+ if (!this.remoteValue || !this.data) {
230
+ return;
231
+ }
232
+ const selected = this.data.find((item) => {
233
+ if (this.value) {
234
+ return item[this.value] === this.query;
235
+ }
236
+ return item === this.query;
237
+ });
238
+ if (selected) {
239
+ this.query = this.label ? selected[this.label] : selected;
240
+ }
241
+ else {
242
+ this.query = '';
243
+ }
244
+ this.remoteValue = false;
245
+ }
246
+ scrollList(factor) {
247
+ this.index += factor;
248
+ if (!this.flyoutZone) {
249
+ return;
250
+ }
251
+ const liItems = this.flyoutZone.element.getElementsByTagName('li');
252
+ const liHeight = liItems[1] ? liItems[1].offsetHeight : liItems[0].offsetHeight;
253
+ const zoneHeight = this.flyoutZone.element.offsetHeight;
254
+ const offset = zoneHeight / liHeight / 2;
255
+ this.flyoutZone.element.scrollTop = this.index * liHeight - offset * liHeight;
256
+ }
257
+ }
258
+ /** @nocollapse */ AutoCompleteComponent.ɵfac = function AutoCompleteComponent_Factory(t) { return new (t || AutoCompleteComponent)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i1.SearchService)); };
259
+ /** @nocollapse */ AutoCompleteComponent.ɵcmp = /** @pureOrBreakMyCode */ i0.ɵɵdefineComponent({ type: AutoCompleteComponent, selectors: [["aui-auto-complete"]], contentQueries: function AutoCompleteComponent_ContentQueries(rf, ctx, dirIndex) { if (rf & 1) {
260
+ i0.ɵɵcontentQuery(dirIndex, TemplateRef, 7);
261
+ } if (rf & 2) {
262
+ let _t;
263
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.template = _t.first);
264
+ } }, viewQuery: function AutoCompleteComponent_Query(rf, ctx) { if (rf & 1) {
265
+ i0.ɵɵviewQuery(FlyoutDirective, 7);
266
+ i0.ɵɵviewQuery(FlyoutZoneDirective, 7);
267
+ } if (rf & 2) {
268
+ let _t;
269
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.flyout = _t.first);
270
+ i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.flyoutZone = _t.first);
271
+ } }, inputs: { id: "id", placeholder: "placeholder", description: "description", inputLabel: "inputLabel", results: "results", data: "data", remote: "remote", minCharacters: "minCharacters", clearInvalid: "clearInvalid", searchIncentiveText: "searchIncentiveText", loadingText: "loadingText", noResultsText: "noResultsText", showAllByDefault: "showAllByDefault", autoComplete: "autoComplete", label: "label", value: "value" }, outputs: { search: "search", select: "select" }, features: [i0.ɵɵProvidersFeature([
272
+ {
273
+ provide: NG_VALUE_ACCESSOR,
274
+ useExisting: forwardRef((() => AutoCompleteComponent)),
275
+ multi: true,
276
+ },
277
+ ]), i0.ɵɵNgOnChangesFeature], decls: 3, vars: 7, consts: [["aria-haspopup", "listbox", "auiFlyout", "", 1, "m-flyout", "m-flyout--scrollable", "m-flyout--full", "o-auto-complete", 3, "toggleClick", "closed"], ["aria-autocomplete", "list", "auiFlyoutAction", "", "auiSelectableActions", "", "type", "text", 1, "a-input", 3, "ngModel", "disabled", "id", "placeholder", "autocomplete", "focus", "keyArrowDown", "keyArrowUp", "keyEnter", "keyEscape", "ngModelChange"], ["auiFlyoutZone", "", 4, "ngIf"], ["auiFlyoutZone", ""], ["class", "a-spinner a-spinner--s u-margin-xs", "role", "alert", 4, "ngIf"], ["class", "o-auto-complete__info u-text-light u-margin-xs", 4, "ngIf"], [3, "index", "itemTemplate", "items", "label", "search", "selected", 4, "ngIf"], ["role", "alert", 1, "a-spinner", "a-spinner--s", "u-margin-xs"], [1, "a-spinner__circle"], [1, "a-spinner__text"], [1, "o-auto-complete__info", "u-text-light", "u-margin-xs"], [3, "index", "itemTemplate", "items", "label", "search", "selected"]], template: function AutoCompleteComponent_Template(rf, ctx) { if (rf & 1) {
278
+ i0.ɵɵelementStart(0, "div", 0);
279
+ i0.ɵɵlistener("closed", function AutoCompleteComponent_Template_div_closed_0_listener() { return ctx.onFlyoutClosed(); });
280
+ i0.ɵɵelementStart(1, "input", 1);
281
+ i0.ɵɵlistener("focus", function AutoCompleteComponent_Template_input_focus_1_listener() { return ctx.onFocus(); })("keyArrowDown", function AutoCompleteComponent_Template_input_keyArrowDown_1_listener() { return ctx.onKeyArrowDown(); })("keyArrowUp", function AutoCompleteComponent_Template_input_keyArrowUp_1_listener() { return ctx.onKeyArrowUp(); })("keyEnter", function AutoCompleteComponent_Template_input_keyEnter_1_listener($event) { return ctx.onKeyEnter($event); })("keyEscape", function AutoCompleteComponent_Template_input_keyEscape_1_listener() { return ctx.onKeyEscape(); })("ngModelChange", function AutoCompleteComponent_Template_input_ngModelChange_1_listener($event) { return ctx.query = $event; })("ngModelChange", function AutoCompleteComponent_Template_input_ngModelChange_1_listener() { return ctx.doSearch(); });
282
+ i0.ɵɵelementEnd();
283
+ i0.ɵɵtemplate(2, AutoCompleteComponent_div_2_Template, 5, 4, "div", 2);
284
+ i0.ɵɵelementEnd();
285
+ } if (rf & 2) {
286
+ i0.ɵɵproperty("toggleClick", false);
287
+ i0.ɵɵadvance(1);
288
+ i0.ɵɵproperty("ngModel", ctx.query)("disabled", ctx.isDisabled ? true : null)("id", ctx.id)("placeholder", ctx.placeholder)("autocomplete", ctx.autoComplete);
289
+ i0.ɵɵadvance(1);
290
+ i0.ɵɵproperty("ngIf", !ctx.isDisabled);
291
+ } }, dependencies: [i2.NgIf, i3.DefaultValueAccessor, i3.NgControlStatus, i3.NgModel, i4.FlyoutActionDirective, i4.FlyoutZoneDirective, i4.FlyoutDirective, i5.SelectableListComponent, i5.SelectableActionsDirective], styles: [".o-auto-complete[_ngcontent-%COMP%], .o-auto-complete__info[_ngcontent-%COMP%]{display:block}"] });
292
+ (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AutoCompleteComponent, [{
293
+ type: Component,
294
+ args: [{ selector: 'aui-auto-complete', providers: [
295
+ {
296
+ provide: NG_VALUE_ACCESSOR,
297
+ useExisting: forwardRef((() => AutoCompleteComponent)),
298
+ multi: true,
299
+ },
300
+ ], template: "<div\n (closed)=\"onFlyoutClosed()\"\n [toggleClick]=\"false\"\n aria-haspopup=\"listbox\"\n auiFlyout\n class=\"m-flyout m-flyout--scrollable m-flyout--full o-auto-complete\"\n>\n <input\n (focus)=\"onFocus()\"\n (keyArrowDown)=\"onKeyArrowDown()\"\n (keyArrowUp)=\"onKeyArrowUp()\"\n (keyEnter)=\"onKeyEnter($event)\"\n (keyEscape)=\"onKeyEscape()\"\n [(ngModel)]=\"query\"\n (ngModelChange)=\"doSearch()\"\n [disabled]=\"isDisabled ? true : null\"\n [id]=\"id\"\n [placeholder]=\"placeholder\"\n aria-autocomplete=\"list\"\n auiFlyoutAction\n auiSelectableActions\n [autocomplete]=\"autoComplete\"\n type=\"text\"\n class=\"a-input\"\n />\n <div *ngIf=\"!isDisabled\" auiFlyoutZone>\n <span *ngIf=\"focused && loadingText && searching\" class=\"a-spinner a-spinner--s u-margin-xs\" role=\"alert\">\n <span class=\"a-spinner__circle\"></span>\n <span class=\"a-spinner__text\">{{ loadingText }}</span>\n </span>\n <span\n *ngIf=\"focused && searchIncentiveText && !searching && !query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\"\n >{{ searchIncentiveText }}</span\n >\n <span\n *ngIf=\"focused && noResultsText && !searching && query && !results.length\"\n class=\"o-auto-complete__info u-text-light u-margin-xs\"\n >{{ noResultsText }}</span\n >\n <aui-selectable-list\n (selected)=\"onSelect($event)\"\n *ngIf=\"results.length > 0 && !(focused && loadingText && searching)\"\n [index]=\"index\"\n [itemTemplate]=\"template\"\n [items]=\"results\"\n [label]=\"label\"\n [search]=\"query\"\n ></aui-selectable-list>\n </div>\n</div>\n", styles: [".o-auto-complete,.o-auto-complete__info{display:block}\n"] }]
301
+ }], function () { return [{ type: i0.ElementRef }, { type: i1.SearchService }]; }, { id: [{
302
+ type: Input
303
+ }], placeholder: [{
304
+ type: Input
305
+ }], description: [{
306
+ type: Input
307
+ }], inputLabel: [{
308
+ type: Input
309
+ }], results: [{
310
+ type: Input
311
+ }], data: [{
312
+ type: Input
313
+ }], remote: [{
314
+ type: Input
315
+ }], minCharacters: [{
316
+ type: Input
317
+ }], clearInvalid: [{
318
+ type: Input
319
+ }], searchIncentiveText: [{
320
+ type: Input
321
+ }], loadingText: [{
322
+ type: Input
323
+ }], noResultsText: [{
324
+ type: Input
325
+ }], showAllByDefault: [{
326
+ type: Input
327
+ }], autoComplete: [{
328
+ type: Input
329
+ }], label: [{
330
+ type: Input
331
+ }], value: [{
332
+ type: Input
333
+ }], search: [{
334
+ type: Output
335
+ }], select: [{
336
+ type: Output
337
+ }], flyout: [{
338
+ type: ViewChild,
339
+ args: [FlyoutDirective, { static: true }]
340
+ }], flyoutZone: [{
341
+ type: ViewChild,
342
+ args: [FlyoutZoneDirective, { static: true }]
343
+ }], template: [{
344
+ type: ContentChild,
345
+ args: [TemplateRef, { static: true }]
346
+ }] }); })();
347
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0by1jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2F1dG8tY29tcGxldGUvY29tcG9uZW50cy9hdXRvLWNvbXBsZXRlL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9hdXRvLWNvbXBsZXRlL2NvbXBvbmVudHMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsWUFBWSxFQUVaLFlBQVksRUFDWixVQUFVLEVBQ1YsS0FBSyxFQUdMLE1BQU0sRUFFTixXQUFXLEVBQ1gsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBd0IsaUJBQWlCLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6RSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxNQUFNLFdBQVcsQ0FBQztBQUN6QyxPQUFPLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixFQUFFLE1BQU0sdUJBQXVCLENBQUM7Ozs7Ozs7O0lDVXpFLCtCQUEwRztJQUN4RywwQkFBdUM7SUFDdkMsK0JBQThCO0lBQUEsWUFBaUI7SUFBQSxpQkFBTyxFQUFBOzs7SUFBeEIsZUFBaUI7SUFBakIsd0NBQWlCOzs7SUFFakQsZ0NBR0c7SUFBQSxZQUF5QjtJQUFBLGlCQUMzQjs7O0lBREUsZUFBeUI7SUFBekIsZ0RBQXlCOzs7SUFFNUIsZ0NBR0c7SUFBQSxZQUFtQjtJQUFBLGlCQUNyQjs7O0lBREUsZUFBbUI7SUFBbkIsMENBQW1COzs7O0lBRXRCLCtDQVFDO0lBUEMsa05BQVksZUFBQSx1QkFBZ0IsQ0FBQSxJQUFDO0lBTzlCLGlCQUFzQjs7O0lBTHJCLG9DQUFlLGlDQUFBLHlCQUFBLHVCQUFBLHdCQUFBOzs7SUFsQm5CLDhCQUF1QztJQUNyQyw4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QUFLO1lBQ0csYUFBYTtrQkFBckIsS0FBSztZQUNHLGdCQUFnQjtrQkFBeEIsS0FBSztZQUNHLFlBQVk7a0JBQXBCLEtBQUs7WUFHRyxLQUFLO2tCQUFiLEtBQUs7WUFDRyxLQUFLO2tCQUFiLEtBQUs7WUFHSSxNQUFNO2tCQUFmLE1BQU07WUFFRyxNQUFNO2tCQUFmLE1BQU07WUFFdUMsTUFBTTtrQkFBbkQsU0FBUzttQkFBQyxlQUFlLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBQ00sVUFBVTtrQkFBM0QsU0FBUzttQkFBQyxtQkFBbUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7WUFFSSxRQUFRO2tCQUEzRCxZQUFZO21CQUFDLFdBQVcsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBmb3J3YXJkUmVmLFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkluaXQsXG4gIE91dHB1dCxcbiAgU2ltcGxlQ2hhbmdlcyxcbiAgVGVtcGxhdGVSZWYsXG4gIFZpZXdDaGlsZCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250cm9sVmFsdWVBY2Nlc3NvciwgTkdfVkFMVUVfQUNDRVNTT1IgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBnZXQsIGlzRXF1YWwgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHsgRmx5b3V0RGlyZWN0aXZlLCBGbHlvdXRab25lRGlyZWN0aXZlIH0gZnJvbSAnQGFjcGFhcy11aS9uZ3gtZmx5b3V0JztcbmltcG9ydCB7IFNlYXJjaFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zaGFyZWQvc2VydmljZXMvc2VhcmNoLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhdWktYXV0by1jb21wbGV0ZScsXG4gIHN0eWxlVXJsczogWycuL2F1dG8tY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG8tY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IEF1dG9Db21wbGV0ZUNvbXBvbmVudCksIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICAgIG11bHRpOiB0cnVlLFxuICAgIH0sXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEF1dG9Db21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBPbkluaXQsIE9uQ2hhbmdlcyB7XG4gIEBJbnB1dCgpIGlkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGlucHV0TGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgcmVzdWx0czogYW55W10gPSBbXTsgLy8gVGhlIHZhbHVlcyBmb3IgdGhlIHNlbGVjdGFibGUgbGlzdFxuICBASW5wdXQoKSBkYXRhOiBhbnlbXSA9IFtdOyAvLyBUaGUgdmFsdWVzIHRvIHNlYXJjaCBpbiB3aGVuIHJlbW90ZSBzZWFyY2ggaXMgZGlzYWJsZWRcbiAgQElucHV0KCkgcmVtb3RlID0gZmFsc2U7IC8vIERpc2FibGUgb3IgZW5hbWJsZSByZW1vdGUgc2VhcmNoXG4gIEBJbnB1dCgpIG1pbkNoYXJhY3RlcnMgPSAwO1xuICBASW5wdXQoKSBjbGVhckludmFsaWQgPSBmYWxzZTtcbiAgQElucHV0KCkgc2VhcmNoSW5jZW50aXZlVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBsb2FkaW5nVGV4dDogc3RyaW5nO1xuICBASW5wdXQoKSBub1Jlc3VsdHNUZXh0OiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dBbGxCeURlZmF1bHQgPSBmYWxzZTtcbiAgQElucHV0KCkgYXV0b0NvbXBsZXRlID0gJ29mZic7XG5cbiAgLy8gc3BlY2lmeSB3aGljaCBsYWJlbC92YWx1ZSBwcm9wcyB0byB1c2VcbiAgQElucHV0KCkgbGFiZWw6IHN0cmluZztcbiAgQElucHV0KCkgdmFsdWU6IHN0cmluZztcblxuICAvLyBFdmVudGVtaXR0ZXIgZm9yIHNlYXJjaHZhbHVlIChwYXJlbnQgb2JqZWN0IHNob3VsZCB1cGRhdGUgdGhlIHJlc3VsdHMgd2l0aCB0aGlzIHBhcmFtKVxuICBAT3V0cHV0KCkgc2VhcmNoOiBFdmVudEVtaXR0ZXI8c3RyaW5nPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9uby1vdXRwdXQtbmF0aXZlXG4gIEBPdXRwdXQoKSBzZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBWaWV3Q2hpbGQoRmx5b3V0RGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmbHlvdXQ6IEZseW91dERpcmVjdGl2ZTtcbiAgQFZpZXdDaGlsZChGbHlvdXRab25lRGlyZWN0aXZlLCB7IHN0YXRpYzogdHJ1ZSB9KSBmbHlvdXRab25lOiBGbHlvdXRab25lRGlyZWN0aXZlO1xuXG4gIEBDb250ZW50Q2hpbGQoVGVtcGxhdGVSZWYsIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyB0ZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwdWJsaWMgcXVlcnkgPSAnJztcbiAgcHVibGljIGluZGV4ID0gLTE7IC8vIGluZGV4IGZvciBhY3RpdmUgZWxlbWVudCBpbiBzZWxlY3RhYmxlIGxpc3QsIGJ5IGRlZmF1bHQgLTEgKHNvIGl0IHN0YXJ0cyBpbiB0aGUgaW5wdXQgZmllbGQpXG4gIHB1YmxpYyBzZWxlY3RlZEl0ZW06IGFueSA9IG51bGw7IC8vIGtlZXAgYSBiYWNrdXAgb2YgdGhlIHNlbGVjdGVkSXRlbVxuICBwdWJsaWMgc2VhcmNoaW5nID0gZmFsc2U7IC8vIHRyYWNrIHJlbW90ZSBzZWFyY2ggc3RhdGVcbiAgcHVibGljIGZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIGlzRGlzYWJsZWQgPSBmYWxzZTtcblxuICBwcml2YXRlIHJlbW90ZVZhbHVlID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWY6IEVsZW1lbnRSZWYsIHByaXZhdGUgc2VhcmNoU2VydmljZTogU2VhcmNoU2VydmljZSkge31cblxuICBwdWJsaWMgdXBkYXRlTW9kZWwgPSAoXzogYW55KSA9PiB7fTtcblxuICAvLyBDT05UUk9MX1ZBTFVFX0FDQ0VTU09SIGludGVyZmFjZVxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZSA9ICcnKSB7XG4gICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy5kYXRhLmZpbmQoKGl0ZW06IGFueSkgPT4gaXRlbVt0aGlzLnZhbHVlXSA9PT0gdmFsdWUpO1xuXG4gICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLnF1ZXJ5ID0gc2VsZWN0ZWRbdGhpcy5sYWJlbF0pO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5yZW1vdGUgJiYgISF2YWx1ZSkge1xuICAgICAgICB0aGlzLnJlbW90ZVZhbHVlID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnF1ZXJ5ID0gdmFsdWU7XG4gIH1cblxuICAvLyBDT05UUk9MX1ZBTFVFX0FDQ0VTU09SIGludGVyZmFjZVxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbikge1xuICAgIHRoaXMudXBkYXRlTW9kZWwgPSBmbjtcbiAgfVxuXG4gIC8vIENPTlRST0xfVkFMVUVfQUNDRVNTT1IgaW50ZXJmYWNlXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZCgpIHt9XG5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgIHRoaXMuaXNEaXNhYmxlZCA9IGlzRGlzYWJsZWQ7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5kYXRhKSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCAmJiAhdGhpcy5xdWVyeSAmJiB0aGlzLnNob3dBbGxCeURlZmF1bHQpIHtcbiAgICAgIHRoaXMucmVzdWx0cyA9IFsuLi50aGlzLmRhdGFdO1xuICAgIH1cbiAgfVxuXG4gIC8vIE9uQ2hhbmdlcyBpbnRlcmZhY2VcbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoIWNoYW5nZXMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdEYXRhID0gZ2V0KGNoYW5nZXMsICdkYXRhLmN1cnJlbnRWYWx1ZScsIFtdKTtcbiAgICBpZiAoIWlzRXF1YWwobmV3RGF0YSwgZ2V0KGNoYW5nZXMsICdkYXRhLnByZXZpb3VzVmFsdWUnLCBbXSkpKSB7XG4gICAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgICAgdGhpcy5yZW1vdGVTZWFyY2goKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9jYWxTZWFyY2goKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5yZXN1bHRzICYmIGNoYW5nZXMucmVzdWx0cy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIHRoaXMuc2VhcmNoaW5nID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByb3BhZ2F0ZUNoYW5nZShpdGVtOiBhbnkpIHtcbiAgICB0aGlzLnF1ZXJ5ID0gaXRlbSAhPT0gbnVsbCA/ICh0aGlzLmxhYmVsID8gaXRlbVt0aGlzLmxhYmVsXSA6IGl0ZW0pIDogJyc7XG4gICAgdGhpcy5zZWxlY3QuZW1pdChpdGVtKTtcblxuICAgIGlmICghaXRlbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGtleSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlIDogdGhpcy5sYWJlbCA/IHRoaXMubGFiZWwgOiBudWxsO1xuICAgIHRoaXMudXBkYXRlTW9kZWwoa2V5ID8gaXRlbVtrZXldIHx8ICcnIDogaXRlbSk7XG4gICAgdGhpcy5zZWxlY3RlZEl0ZW0gPSBpdGVtO1xuICB9XG5cbiAgLyoqXG4gICAqIHRyaWdnZXJzIG9uIGlucHV0IHZhbHVlIGNoYW5nZVxuICAgKi9cbiAgcHVibGljIGRvU2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuaW5kZXggPSAtMTsgLy8gcmVzZXQgaW5kZXhcbiAgICB0aGlzLnNlYXJjaGluZyA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5yZW1vdGUpIHtcbiAgICAgIHRoaXMuc2VhcmNoLmVtaXQodGhpcy5xdWVyeSk7IC8vIGFzayBmb3IgbmV3IHJlbW90ZSBkYXRhXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9jYWxTZWFyY2goKTtcbiAgICB9XG5cbiAgICB0aGlzLm9wZW5GbHlvdXQoKTsgLy8gb3BlbiB0aGUgZmx5b3V0IHdoZW4gdGhlcmUgaXMgYSBjaGFuZ2VcbiAgfVxuXG4gIC8qKlxuICAgKiB0cmlnZ2VycyBvbiBzZWxlY3RhYmxlLWxpc3Q6c2VsZWN0IC0+IG9uQ2xpY2sgZXZlbnQgaW4gc2VsZWN0YWJsZS1saXN0XG4gICAqL1xuICBwdWJsaWMgb25TZWxlY3QoaXRlbTogYW55KTogdm9pZCB7XG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UoaXRlbSk7XG4gICAgdGhpcy5jbG9zZUZseW91dCgpOyAvLyBDbG9zZSB0aGUgZmx5b3V0IG1hbnVhbGx5XG4gIH1cblxuICBwdWJsaWMgb25GbHlvdXRDbG9zZWQoKTogdm9pZCB7XG4gICAgLy8gdGhlcmUgaXMgb25seSAxIHJlc3VsdCwgc2VsZWN0IGl0XG4gICAgaWYgKHRoaXMuaW5kZXggPj0gMCAmJiB0aGlzLnJlc3VsdHMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gdGhpcy5vblNlbGVjdCh0aGlzLnJlc3VsdHNbMF0pO1xuICAgIH1cblxuICAgIC8vIHRoZXJlIGlzIG5vIHF1ZXJ5IG5vciBzZWxlY3RlZCBpdGVtLCBjbGVhciB0aGUgc2VsZWN0ZWQgaXRlbVxuICAgIGlmICghdGhpcy5xdWVyeSAmJiB0aGlzLmluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuIHRoaXMub25TZWxlY3QobnVsbCk7XG4gICAgfVxuXG4gICAgLy8gcmVzZXQgdGhlIHF1ZXJ5IGZvciBhbiBpbnZhbGlkIHF1ZXJ5IGlmIGNsZWFySW52YWxpZCBpcyB0cnVlXG4gICAgaWYgKHRoaXMuY2xlYXJJbnZhbGlkICYmIHRoaXMucXVlcnkgJiYgIXRoaXMucmVzdWx0cy5sZW5ndGggJiYgdGhpcy5pbmRleCA8IDApIHtcbiAgICAgIHRoaXMucXVlcnkgPSB0aGlzLnNlbGVjdGVkSXRlbSA/ICh0aGlzLmxhYmVsID8gdGhpcy5zZWxlY3RlZEl0ZW1bdGhpcy5sYWJlbF0gOiB0aGlzLnNlbGVjdGVkSXRlbSkgOiAnJztcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25LZXlBcnJvd0Rvd24oKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5kZXggPCB0aGlzLnJlc3VsdHMubGVuZ3RoIC0gMSkge1xuICAgICAgdGhpcy5zY3JvbGxMaXN0KDEpO1xuICAgIH1cblxuICAgIHRoaXMub3BlbkZseW91dCgpO1xuICB9XG5cbiAgcHVibGljIG9uS2V5QXJyb3dVcCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbmRleCA+PSAwKSB7XG4gICAgICB0aGlzLnNjcm9sbExpc3QoLTEpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbktleUVudGVyKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIERvIG5vdCBzdWJtaXQgZm9ybSB3aGVuIHNlbGVjdGluZyBhbiBpdGVtLlxuXG4gICAgY29uc3QgcXVlcnkgPSB0aGlzLmluZGV4ID49IDAgPyB0aGlzLnJlc3VsdHNbdGhpcy5pbmRleF0gOiB0aGlzLnF1ZXJ5O1xuXG4gICAgdGhpcy5wcm9wYWdhdGVDaGFuZ2UocXVlcnkpO1xuICAgIHRoaXMuY2xvc2VGbHlvdXQoKTtcbiAgfVxuXG4gIHB1YmxpYyBvbktleUVzY2FwZSgpOiB2b2lkIHtcbiAgICB0aGlzLmNsb3NlRmx5b3V0KCk7XG4gIH1cblxuICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICB0aGlzLmZvY3VzZWQgPSB0cnVlO1xuICAgIHRoaXMub3BlbkZseW91dCgpO1xuICB9XG5cbiAgcHVibGljIG9wZW5GbHlvdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuZmx5b3V0KSB7XG4gICAgICB0aGlzLmZseW91dC5vcGVuKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGNsb3NlRmx5b3V0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmZseW91dCkge1xuICAgICAgdGhpcy5mbHlvdXQuY2xvc2UoKTtcbiAgICB9XG5cbiAgICB0aGlzLmZvY3VzZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyBsb2NhbFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLnJlc3VsdHMgPSB0aGlzLnNlYXJjaFNlcnZpY2Uuc2VhcmNoKHRoaXMuZGF0YSwge1xuICAgICAgbWluTGVuZ3RoOiB0aGlzLm1pbkNoYXJhY3RlcnMsXG4gICAgICBrZXk6IHRoaXMubGFiZWwsXG4gICAgICBxdWVyeTogdGhpcy5xdWVyeSxcbiAgICAgIHNob3dBbGxCeURlZmF1bHQ6IHRoaXMuc2hvd0FsbEJ5RGVmYXVsdCxcbiAgICB9KTtcblxuICAgIGlmICh0aGlzLnJlc3VsdHMubGVuZ3RoID09PSAxICYmIHRoaXMucXVlcnkgPT09IHRoaXMucmVzdWx0c1swXVt0aGlzLmxhYmVsXSkge1xuICAgICAgdGhpcy5pbmRleCA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5zZWFyY2hpbmcgPSBmYWxzZTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdGVTZWFyY2goKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLnJlbW90ZVZhbHVlIHx8ICF0aGlzLmRhdGEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZGF0YS5maW5kKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgIHJldHVybiBpdGVtW3RoaXMudmFsdWVdID09PSB0aGlzLnF1ZXJ5O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXRlbSA9PT0gdGhpcy5xdWVyeTtcbiAgICB9KTtcblxuICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgdGhpcy5xdWVyeSA9IHRoaXMubGFiZWwgPyBzZWxlY3RlZFt0aGlzLmxhYmVsXSA6IHNlbGVjdGVkO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnF1ZXJ5ID0gJyc7XG4gICAgfVxuXG4gICAgdGhpcy5yZW1vdGVWYWx1ZSA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNjcm9sbExpc3QoZmFjdG9yOiBudW1iZXIpOiB2b2lkIHtcbiAgICB0aGlzLmluZGV4ICs9IGZhY3RvcjtcblxuICAgIGlmICghdGhpcy5mbHlvdXRab25lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgbGlJdGVtcyA9IHRoaXMuZmx5b3V0Wm9uZS5lbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdsaScpO1xuICAgIGNvbnN0IGxpSGVpZ2h0ID0gbGlJdGVtc1sxXSA/IGxpSXRlbXNbMV0ub2Zmc2V0SGVpZ2h0IDogbGlJdGVtc1swXS5vZmZzZXRIZWlnaHQ7XG4gICAgY29uc3Qgem9uZUhlaWdodCA9IHRoaXMuZmx5b3V0Wm9uZS5lbGVtZW50Lm9mZnNldEhlaWdodDtcbiAgICBjb25zdCBvZmZzZXQgPSB6b25lSGVpZ2h0IC8gbGlIZWlnaHQgLyAyO1xuXG4gICAgdGhpcy5mbHlvdXRab25lLmVsZW1lbnQuc2Nyb2xsVG9wID0gdGhpcy5pbmRleCAqIGxpSGVpZ2h0IC0gb2Zmc2V0ICogbGlIZWlnaHQ7XG4gIH1cbn1cbiIsIjxkaXZcbiAgKGNsb3NlZCk9XCJvbkZseW91dENsb3NlZCgpXCJcbiAgW3RvZ2dsZUNsaWNrXT1cImZhbHNlXCJcbiAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICBhdWlGbHlvdXRcbiAgY2xhc3M9XCJtLWZseW91dCBtLWZseW91dC0tc2Nyb2xsYWJsZSBtLWZseW91dC0tZnVsbCBvLWF1dG8tY29tcGxldGVcIlxuPlxuICA8aW5wdXRcbiAgICAoZm9jdXMpPVwib25Gb2N1cygpXCJcbiAgICAoa2V5QXJyb3dEb3duKT1cIm9uS2V5QXJyb3dEb3duKClcIlxuICAgIChrZXlBcnJvd1VwKT1cIm9uS2V5QXJyb3dVcCgpXCJcbiAgICAoa2V5RW50ZXIpPVwib25LZXlFbnRlcigkZXZlbnQpXCJcbiAgICAoa2V5RXNjYXBlKT1cIm9uS2V5RXNjYXBlKClcIlxuICAgIFsobmdNb2RlbCldPVwicXVlcnlcIlxuICAgIChuZ01vZGVsQ2hhbmdlKT1cImRvU2VhcmNoKClcIlxuICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkID8gdHJ1ZSA6IG51bGxcIlxuICAgIFtpZF09XCJpZFwiXG4gICAgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCJcbiAgICBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIlxuICAgIGF1aUZseW91dEFjdGlvblxuICAgIGF1aVNlbGVjdGFibGVBY3Rpb25zXG4gICAgW2F1dG9jb21wbGV0ZV09XCJhdXRvQ29tcGxldGVcIlxuICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICBjbGFzcz1cImEtaW5wdXRcIlxuICAvPlxuICA8ZGl2ICpuZ0lmPVwiIWlzRGlzYWJsZWRcIiBhdWlGbHlvdXRab25lPlxuICAgIDxzcGFuICpuZ0lmPVwiZm9jdXNlZCAmJiBsb2FkaW5nVGV4dCAmJiBzZWFyY2hpbmdcIiBjbGFzcz1cImEtc3Bpbm5lciBhLXNwaW5uZXItLXMgdS1tYXJnaW4teHNcIiByb2xlPVwiYWxlcnRcIj5cbiAgICAgIDxzcGFuIGNsYXNzPVwiYS1zcGlubmVyX19jaXJjbGVcIj48L3NwYW4+XG4gICAgICA8c3BhbiBjbGFzcz1cImEtc3Bpbm5lcl9fdGV4dFwiPnt7IGxvYWRpbmdUZXh0IH19PC9zcGFuPlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJmb2N1c2VkICYmIHNlYXJjaEluY2VudGl2ZVRleHQgJiYgIXNlYXJjaGluZyAmJiAhcXVlcnkgJiYgIXJlc3VsdHMubGVuZ3RoXCJcbiAgICAgIGNsYXNzPVwiby1hdXRvLWNvbXBsZXRlX19pbmZvIHUtdGV4dC1saWdodCB1LW1hcmdpbi14c1wiXG4gICAgICA+e3sgc2VhcmNoSW5jZW50aXZlVGV4dCB9fTwvc3BhblxuICAgID5cbiAgICA8c3BhblxuICAgICAgKm5nSWY9XCJmb2N1c2VkICYmIG5vUmVzdWx0c1RleHQgJiYgIXNlYXJjaGluZyAmJiBxdWVyeSAmJiAhcmVzdWx0cy5sZW5ndGhcIlxuICAgICAgY2xhc3M9XCJvLWF1dG8tY29tcGxldGVfX2luZm8gdS10ZXh0LWxpZ2h0IHUtbWFyZ2luLXhzXCJcbiAgICAgID57eyBub1Jlc3VsdHNUZXh0IH19PC9zcGFuXG4gICAgPlxuICAgIDxhdWktc2VsZWN0YWJsZS1saXN0XG4gICAgICAoc2VsZWN0ZWQpPVwib25TZWxlY3QoJGV2ZW50KVwiXG4gICAgICAqbmdJZj1cInJlc3VsdHMubGVuZ3RoID4gMCAmJiAhKGZvY3VzZWQgJiYgbG9hZGluZ1RleHQgJiYgc2VhcmNoaW5nKVwiXG4gICAgICBbaW5kZXhdPVwiaW5kZXhcIlxuICAgICAgW2l0ZW1UZW1wbGF0ZV09XCJ0ZW1wbGF0ZVwiXG4gICAgICBbaXRlbXNdPVwicmVzdWx0c1wiXG4gICAgICBbbGFiZWxdPVwibGFiZWxcIlxuICAgICAgW3NlYXJjaF09XCJxdWVyeVwiXG4gICAgPjwvYXVpLXNlbGVjdGFibGUtbGlzdD5cbiAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export { AutoCompleteModule } from './auto-complete.module';
2
+ export { AutoCompleteComponent } from './components/auto-complete/auto-complete.component';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvYXV0by1jb21wbGV0ZS9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzVELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9EQUFvRCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHsgQXV0b0NvbXBsZXRlTW9kdWxlIH0gZnJvbSAnLi9hdXRvLWNvbXBsZXRlLm1vZHVsZSc7XG5leHBvcnQgeyBBdXRvQ29tcGxldGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvYXV0by1jb21wbGV0ZS9hdXRvLWNvbXBsZXRlLmNvbXBvbmVudCc7XG4iXX0=