@ndwnu/design-system 5.0.0 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/components/alert/alert.model.d.ts +1 -6
  2. package/components/banner/banner.model.d.ts +1 -4
  3. package/components/card/card-header/card-header.component.d.ts +7 -1
  4. package/components/card/card.animation.d.ts +1 -0
  5. package/components/card/card.component.d.ts +15 -2
  6. package/components/card/index.d.ts +2 -2
  7. package/components/dropdown/dropdown.component.d.ts +1 -1
  8. package/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.d.ts +3 -3
  9. package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.d.ts +7 -7
  10. package/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.d.ts +5 -2
  11. package/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.d.ts +5 -6
  12. package/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.d.ts +12 -14
  13. package/components/form-field/autosuggest/autosuggest.directive.d.ts +7 -8
  14. package/components/form-field/clear-search-button/clear-search-button.component.d.ts +2 -1
  15. package/components/form-field/form-field.component.d.ts +2 -1
  16. package/components/form-field/input/input.model.d.ts +1 -11
  17. package/components/form-field/picker-button/picker-button.component.d.ts +1 -0
  18. package/components/form-field/textarea/auto-grow.directive.d.ts +6 -3
  19. package/components/form-field/textarea/index.d.ts +1 -0
  20. package/components/form-field/textarea/max-char.directive.d.ts +15 -0
  21. package/components/icon/action-icon/action-icon.component.d.ts +2 -2
  22. package/components/index.d.ts +1 -0
  23. package/components/layout/layout.component.d.ts +5 -2
  24. package/components/main-navigation/main-navigation.imports.d.ts +1 -1
  25. package/components/main-navigation/main-navigation.model.d.ts +1 -4
  26. package/components/modal/modal.component.d.ts +1 -2
  27. package/components/multi-select/multi-select.component.d.ts +3 -3
  28. package/components/pill/pill.model.d.ts +1 -8
  29. package/components/router-breadcrumbs/router-breadcrumbs.component.d.ts +2 -2
  30. package/components/summary-card/index.d.ts +10 -0
  31. package/components/summary-card/summary-card-action/summary-card-action.component.d.ts +11 -0
  32. package/components/summary-card/summary-card-actions/summary-card-actions.component.d.ts +9 -0
  33. package/components/summary-card/summary-card-avatar/summary-card-avatar.component.d.ts +8 -0
  34. package/components/summary-card/summary-card-content/summary-card-content.component.d.ts +5 -0
  35. package/components/summary-card/summary-card-header/summary-card-header.component.d.ts +5 -0
  36. package/components/summary-card/summary-card-subtitle/summary-card-subtitle.component.d.ts +5 -0
  37. package/components/summary-card/summary-card-tag/summary-card-tag.component.d.ts +5 -0
  38. package/components/summary-card/summary-card-tags/summary-card-tags.component.d.ts +5 -0
  39. package/components/summary-card/summary-card.component.d.ts +5 -0
  40. package/components/summary-card/summary-card.model.d.ts +2 -0
  41. package/components/tag/tag.component.d.ts +2 -2
  42. package/core/style/styles.css +217 -11
  43. package/core/style/styles.scss +217 -11
  44. package/fesm2022/ndwnu-design-system.mjs +608 -334
  45. package/fesm2022/ndwnu-design-system.mjs.map +1 -1
  46. package/package.json +5 -7
  47. package/esm2022/components/accordion/accordion.component.mjs +0 -32
  48. package/esm2022/components/accordion/accordion.service.mjs +0 -17
  49. package/esm2022/components/accordion/index.mjs +0 -3
  50. package/esm2022/components/alert/alert.component.mjs +0 -42
  51. package/esm2022/components/alert/alert.model.mjs +0 -8
  52. package/esm2022/components/alert/index.mjs +0 -3
  53. package/esm2022/components/badge/badge.component.mjs +0 -21
  54. package/esm2022/components/badge/index.mjs +0 -2
  55. package/esm2022/components/banner/banner.component.mjs +0 -61
  56. package/esm2022/components/banner/banner.model.mjs +0 -6
  57. package/esm2022/components/banner/index.mjs +0 -3
  58. package/esm2022/components/breadcrumb/breadcrumb.component.mjs +0 -15
  59. package/esm2022/components/breadcrumb/index.mjs +0 -2
  60. package/esm2022/components/breadcrumb-group/breadcrumb-group.component.mjs +0 -21
  61. package/esm2022/components/breadcrumb-group/index.mjs +0 -2
  62. package/esm2022/components/button/button.directive.mjs +0 -37
  63. package/esm2022/components/button/index.mjs +0 -2
  64. package/esm2022/components/card/card-content/card-content.component.mjs +0 -11
  65. package/esm2022/components/card/card-content/index.mjs +0 -2
  66. package/esm2022/components/card/card-footer/card-footer.component.mjs +0 -11
  67. package/esm2022/components/card/card-footer/index.mjs +0 -2
  68. package/esm2022/components/card/card-header/card-header.component.mjs +0 -11
  69. package/esm2022/components/card/card-header/index.mjs +0 -2
  70. package/esm2022/components/card/card.component.mjs +0 -11
  71. package/esm2022/components/card/index.mjs +0 -15
  72. package/esm2022/components/collapsible/collapsible.animation.mjs +0 -26
  73. package/esm2022/components/collapsible/collapsible.component.mjs +0 -34
  74. package/esm2022/components/collapsible/index.mjs +0 -2
  75. package/esm2022/components/dashboard-card/dashboard-card.component.mjs +0 -32
  76. package/esm2022/components/dashboard-card/index.mjs +0 -2
  77. package/esm2022/components/dropdown/dropdown.component.mjs +0 -57
  78. package/esm2022/components/dropdown/index.mjs +0 -2
  79. package/esm2022/components/form-field/autosuggest/autosuggest-add-option/autosuggest-add-option.component.mjs +0 -29
  80. package/esm2022/components/form-field/autosuggest/autosuggest-add-option/index.mjs +0 -2
  81. package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.component.mjs +0 -45
  82. package/esm2022/components/form-field/autosuggest/autosuggest-option/autosuggest-option.model.mjs +0 -2
  83. package/esm2022/components/form-field/autosuggest/autosuggest-option/base-autosuggest-option.component.mjs +0 -85
  84. package/esm2022/components/form-field/autosuggest/autosuggest-option/index.mjs +0 -3
  85. package/esm2022/components/form-field/autosuggest/autosuggest-panel/autosuggest-panel.component.mjs +0 -82
  86. package/esm2022/components/form-field/autosuggest/autosuggest.directive.mjs +0 -411
  87. package/esm2022/components/form-field/autosuggest/index.mjs +0 -6
  88. package/esm2022/components/form-field/autosuggest/match-bold.pipe.mjs +0 -21
  89. package/esm2022/components/form-field/checkbox/checkbox.component.mjs +0 -62
  90. package/esm2022/components/form-field/checkbox/index.mjs +0 -2
  91. package/esm2022/components/form-field/checkbox-group/checkbox-group.component.mjs +0 -15
  92. package/esm2022/components/form-field/checkbox-group/index.mjs +0 -2
  93. package/esm2022/components/form-field/clear-search-button/clear-search-button.component.mjs +0 -37
  94. package/esm2022/components/form-field/error/error.component.mjs +0 -12
  95. package/esm2022/components/form-field/error/index.mjs +0 -2
  96. package/esm2022/components/form-field/file-upload/file-upload-text.interface.mjs +0 -2
  97. package/esm2022/components/form-field/file-upload/file-upload.component.mjs +0 -172
  98. package/esm2022/components/form-field/file-upload/index.mjs +0 -3
  99. package/esm2022/components/form-field/form-field.component.mjs +0 -81
  100. package/esm2022/components/form-field/form-field.constant.mjs +0 -2
  101. package/esm2022/components/form-field/form-field.model.mjs +0 -8
  102. package/esm2022/components/form-field/index.mjs +0 -17
  103. package/esm2022/components/form-field/info/index.mjs +0 -2
  104. package/esm2022/components/form-field/info/info.component.mjs +0 -11
  105. package/esm2022/components/form-field/input/index.mjs +0 -3
  106. package/esm2022/components/form-field/input/input.directive.mjs +0 -68
  107. package/esm2022/components/form-field/input/input.model.mjs +0 -13
  108. package/esm2022/components/form-field/input-button/index.mjs +0 -2
  109. package/esm2022/components/form-field/input-button/input-button.component.mjs +0 -23
  110. package/esm2022/components/form-field/input-icon/index.mjs +0 -2
  111. package/esm2022/components/form-field/input-icon/input-icon.component.mjs +0 -12
  112. package/esm2022/components/form-field/month-input/index.mjs +0 -2
  113. package/esm2022/components/form-field/month-input/month-input-utils.mjs +0 -13
  114. package/esm2022/components/form-field/month-input/month-input.component.mjs +0 -154
  115. package/esm2022/components/form-field/option-group/index.mjs +0 -4
  116. package/esm2022/components/form-field/option-group/option-group.component.mjs +0 -64
  117. package/esm2022/components/form-field/option-group/option-group.model.mjs +0 -2
  118. package/esm2022/components/form-field/option-group/option.component.mjs +0 -22
  119. package/esm2022/components/form-field/picker-button/picker-button.component.mjs +0 -45
  120. package/esm2022/components/form-field/radio-button/index.mjs +0 -2
  121. package/esm2022/components/form-field/radio-button/radio-button.component.mjs +0 -63
  122. package/esm2022/components/form-field/radio-group/index.mjs +0 -2
  123. package/esm2022/components/form-field/radio-group/radio-group.component.mjs +0 -70
  124. package/esm2022/components/form-field/success/index.mjs +0 -2
  125. package/esm2022/components/form-field/success/success.component.mjs +0 -12
  126. package/esm2022/components/form-field/textarea/auto-grow.directive.mjs +0 -45
  127. package/esm2022/components/form-field/textarea/index.mjs +0 -2
  128. package/esm2022/components/icon/action-icon/action-icon.component.mjs +0 -40
  129. package/esm2022/components/icon/action-icon/index.mjs +0 -2
  130. package/esm2022/components/icon/icon.component.mjs +0 -36
  131. package/esm2022/components/icon/index.mjs +0 -3
  132. package/esm2022/components/index.mjs +0 -28
  133. package/esm2022/components/layout/index.mjs +0 -2
  134. package/esm2022/components/layout/layout.component.mjs +0 -20
  135. package/esm2022/components/layout-banners/index.mjs +0 -2
  136. package/esm2022/components/layout-banners/layout-banners.component.mjs +0 -11
  137. package/esm2022/components/loader/index.mjs +0 -2
  138. package/esm2022/components/loader/loader.component.mjs +0 -11
  139. package/esm2022/components/main-navigation/index.mjs +0 -3
  140. package/esm2022/components/main-navigation/main-navigation.component.mjs +0 -165
  141. package/esm2022/components/main-navigation/main-navigation.imports.mjs +0 -20
  142. package/esm2022/components/main-navigation/main-navigation.model.mjs +0 -6
  143. package/esm2022/components/main-navigation-menu/index.mjs +0 -2
  144. package/esm2022/components/main-navigation-menu/main-navigation-menu.component.mjs +0 -20
  145. package/esm2022/components/modal/index.mjs +0 -16
  146. package/esm2022/components/modal/modal-content/index.mjs +0 -2
  147. package/esm2022/components/modal/modal-content/modal-content.component.mjs +0 -11
  148. package/esm2022/components/modal/modal-footer/index.mjs +0 -2
  149. package/esm2022/components/modal/modal-footer/modal-footer.component.mjs +0 -11
  150. package/esm2022/components/modal/modal-header/index.mjs +0 -2
  151. package/esm2022/components/modal/modal-header/modal-header.component.mjs +0 -18
  152. package/esm2022/components/modal/modal-ref.mjs +0 -4
  153. package/esm2022/components/modal/modal.component.mjs +0 -19
  154. package/esm2022/components/modal/modal.service.mjs +0 -31
  155. package/esm2022/components/multi-select/checkbox-data.interface.mjs +0 -2
  156. package/esm2022/components/multi-select/index.mjs +0 -4
  157. package/esm2022/components/multi-select/multi-select.component.mjs +0 -76
  158. package/esm2022/components/multi-select/select-all-text.interface.mjs +0 -2
  159. package/esm2022/components/pill/index.mjs +0 -3
  160. package/esm2022/components/pill/pill.component.mjs +0 -25
  161. package/esm2022/components/pill/pill.model.mjs +0 -2
  162. package/esm2022/components/popover/index.mjs +0 -2
  163. package/esm2022/components/popover/popover-trigger.directive.mjs +0 -182
  164. package/esm2022/components/router-breadcrumbs/index.mjs +0 -2
  165. package/esm2022/components/router-breadcrumbs/router-breadcrumbs.component.mjs +0 -37
  166. package/esm2022/components/tab/index.mjs +0 -2
  167. package/esm2022/components/tab/tab.component.mjs +0 -32
  168. package/esm2022/components/tab-group/index.mjs +0 -2
  169. package/esm2022/components/tab-group/tab-group.component.mjs +0 -34
  170. package/esm2022/components/tag/index.mjs +0 -2
  171. package/esm2022/components/tag/tag.component.mjs +0 -29
  172. package/esm2022/components/toast/index.mjs +0 -3
  173. package/esm2022/components/toast/toast.component.mjs +0 -77
  174. package/esm2022/components/toast/toast.service.mjs +0 -43
  175. package/esm2022/components/tooltip/index.mjs +0 -3
  176. package/esm2022/components/tooltip/tooltip.component.mjs +0 -16
  177. package/esm2022/components/tooltip/tooltip.directive.mjs +0 -89
  178. package/esm2022/models/aria.model.mjs +0 -2
  179. package/esm2022/models/index.mjs +0 -2
  180. package/esm2022/ndwnu-design-system.mjs +0 -5
  181. package/esm2022/public-api.mjs +0 -5
@@ -1,45 +0,0 @@
1
- import { ChangeDetectionStrategy, Component, input } from '@angular/core';
2
- import { BaseAutosuggestOptionComponent } from './base-autosuggest-option.component';
3
- import { MatchBoldPipe } from '../match-bold.pipe';
4
- import * as i0 from "@angular/core";
5
- export class AutocompleteOptionSelectionChange {
6
- constructor(source, isUserInput = false) {
7
- this.source = source;
8
- this.isUserInput = isUserInput;
9
- }
10
- }
11
- export class AutosuggestOptionComponent extends BaseAutosuggestOptionComponent {
12
- get viewValue() {
13
- return (this.getHostElement().textContent ?? '').trim();
14
- }
15
- constructor() {
16
- super();
17
- this.searchTerm = input('');
18
- this.label = input.required();
19
- this.id = `ndw-option-${crypto.randomUUID()}`;
20
- }
21
- // getLabel is required in the FocusableOption interface, which is
22
- // implemented by BaseAutosuggestOptionComponent
23
- getLabel() {
24
- return this.viewValue;
25
- }
26
- emitSelectionChangeEvent(isUserInput = false) {
27
- this.selectionChange.emit(new AutocompleteOptionSelectionChange(this, isUserInput));
28
- }
29
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
30
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: AutosuggestOptionComponent, isStandalone: true, selector: "ndw-autosuggest-option", inputs: { searchTerm: { classPropertyName: "searchTerm", publicName: "searchTerm", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null } }, host: { attributes: { "role": "option" }, listeners: { "click": "selectViaInteraction()", "keydown": "handleKeydown($event)" }, properties: { "id": "id", "class.ndw-autosuggest-option--selected": "selected", "class.ndw-autosuggest-option--active": "active", "attr.aria-selected": "selected" }, classAttribute: "ndw-autosuggest-option" }, usesInheritance: true, ngImport: i0, template: "<span class=\"ndw-option-text\" [innerHTML]=\"label() | matchBold: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);box-sizing:border-box;color:var(--ndw-color-grey-700);background-color:var(--ndw-color-white);cursor:pointer;text-align:left;font:inherit;font-size:var(--ndw-font-size-sm);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host.ndw-autosuggest-option--active,:host:hover:not([aria-disabled=true]){background-color:var(--ndw-color-secondary-050)}:host[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default;background-color:var(--ndw-color-grey-100)}:host.ndw-autosuggest-option--add{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;color:var(--ndw-color-link-400)}:host.ndw-autosuggest-option--add .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline:var(--ndw-spacing-3xs)}:host:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}:host span{word-break:break-word}\n"], dependencies: [{ kind: "pipe", type: MatchBoldPipe, name: "matchBold" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
31
- }
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestOptionComponent, decorators: [{
33
- type: Component,
34
- args: [{ selector: 'ndw-autosuggest-option', standalone: true, imports: [MatchBoldPipe], changeDetection: ChangeDetectionStrategy.OnPush, host: {
35
- role: 'option',
36
- '[id]': 'id',
37
- class: 'ndw-autosuggest-option',
38
- '[class.ndw-autosuggest-option--selected]': 'selected',
39
- '[class.ndw-autosuggest-option--active]': 'active',
40
- '[attr.aria-selected]': 'selected',
41
- '(click)': 'selectViaInteraction()',
42
- '(keydown)': 'handleKeydown($event)',
43
- }, template: "<span class=\"ndw-option-text\" [innerHTML]=\"label() | matchBold: searchTerm()\"></span>\n", styles: [":host{display:block;width:100%;padding:var(--ndw-spacing-2xs) var(--ndw-spacing-xs);box-sizing:border-box;color:var(--ndw-color-grey-700);background-color:var(--ndw-color-white);cursor:pointer;text-align:left;font:inherit;font-size:var(--ndw-font-size-sm);transition:background-color var(--ndw-animation-speed-very-fast) ease-in-out}:host.ndw-autosuggest-option--active,:host:hover:not([aria-disabled=true]){background-color:var(--ndw-color-secondary-050)}:host[aria-disabled=true]{-webkit-user-select:none;user-select:none;cursor:default;background-color:var(--ndw-color-grey-100)}:host.ndw-autosuggest-option--add{display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;color:var(--ndw-color-link-400)}:host.ndw-autosuggest-option--add .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-inline:var(--ndw-spacing-3xs)}:host:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}:host span{word-break:break-word}\n"] }]
44
- }], ctorParameters: () => [] });
45
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25kdy9zcmMvY29tcG9uZW50cy9mb3JtLWZpZWxkL2F1dG9zdWdnZXN0L2F1dG9zdWdnZXN0LW9wdGlvbi9hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3Qtb3B0aW9uL2F1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUxRSxPQUFPLEVBQUUsOEJBQThCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNyRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7O0FBRW5ELE1BQU0sT0FBTyxpQ0FBaUM7SUFDNUMsWUFDUyxNQUFrRSxFQUNsRSxjQUFjLEtBQUs7UUFEbkIsV0FBTSxHQUFOLE1BQU0sQ0FBNEQ7UUFDbEUsZ0JBQVcsR0FBWCxXQUFXLENBQVE7SUFDekIsQ0FBQztDQUNMO0FBb0JELE1BQU0sT0FBTywwQkFBMkIsU0FBUSw4QkFBOEI7SUFNNUUsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsV0FBVyxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzFELENBQUM7SUFFRDtRQUNFLEtBQUssRUFBRSxDQUFDO1FBVk0sZUFBVSxHQUFHLEtBQUssQ0FBUyxFQUFFLENBQUMsQ0FBQztRQUMvQixVQUFLLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBVSxDQUFDO1FBVS9DLElBQUksQ0FBQyxFQUFFLEdBQUcsY0FBYyxNQUFNLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQztJQUNoRCxDQUFDO0lBRUQsa0VBQWtFO0lBQ2xFLGdEQUFnRDtJQUN6QyxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFUyx3QkFBd0IsQ0FBQyxXQUFXLEdBQUcsS0FBSztRQUNwRCxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxJQUFJLGlDQUFpQyxDQUFDLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OEdBdkJVLDBCQUEwQjtrR0FBMUIsMEJBQTBCLHFzQkM5QnZDLDZGQUNBLDhnQ0RjWSxhQUFhOzsyRkFlWiwwQkFBMEI7a0JBbEJ0QyxTQUFTOytCQUNFLHdCQUF3QixjQUN0QixJQUFJLFdBQ1AsQ0FBQyxhQUFhLENBQUMsbUJBR1AsdUJBQXVCLENBQUMsTUFBTSxRQUN6Qzt3QkFDSixJQUFJLEVBQUUsUUFBUTt3QkFDZCxNQUFNLEVBQUUsSUFBSTt3QkFDWixLQUFLLEVBQUUsd0JBQXdCO3dCQUMvQiwwQ0FBMEMsRUFBRSxVQUFVO3dCQUN0RCx3Q0FBd0MsRUFBRSxRQUFRO3dCQUNsRCxzQkFBc0IsRUFBRSxVQUFVO3dCQUNsQyxTQUFTLEVBQUUsd0JBQXdCO3dCQUNuQyxXQUFXLEVBQUUsdUJBQXVCO3FCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9zdWdnZXN0LWFkZC1vcHRpb24nO1xuaW1wb3J0IHsgQmFzZUF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9iYXNlLWF1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTWF0Y2hCb2xkUGlwZSB9IGZyb20gJy4uL21hdGNoLWJvbGQucGlwZSc7XG5cbmV4cG9ydCBjbGFzcyBBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2Uge1xuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgcHVibGljIHNvdXJjZTogQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudCxcbiAgICBwdWJsaWMgaXNVc2VySW5wdXQgPSBmYWxzZSxcbiAgKSB7fVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICduZHctYXV0b3N1Z2dlc3Qtb3B0aW9uJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW01hdGNoQm9sZFBpcGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQuc2NzcycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBob3N0OiB7XG4gICAgcm9sZTogJ29wdGlvbicsXG4gICAgJ1tpZF0nOiAnaWQnLFxuICAgIGNsYXNzOiAnbmR3LWF1dG9zdWdnZXN0LW9wdGlvbicsXG4gICAgJ1tjbGFzcy5uZHctYXV0b3N1Z2dlc3Qtb3B0aW9uLS1zZWxlY3RlZF0nOiAnc2VsZWN0ZWQnLFxuICAgICdbY2xhc3MubmR3LWF1dG9zdWdnZXN0LW9wdGlvbi0tYWN0aXZlXSc6ICdhY3RpdmUnLFxuICAgICdbYXR0ci5hcmlhLXNlbGVjdGVkXSc6ICdzZWxlY3RlZCcsXG4gICAgJyhjbGljayknOiAnc2VsZWN0VmlhSW50ZXJhY3Rpb24oKScsXG4gICAgJyhrZXlkb3duKSc6ICdoYW5kbGVLZXlkb3duKCRldmVudCknLFxuICB9LFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCBleHRlbmRzIEJhc2VBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWFyY2hUZXJtID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHB1YmxpYyByZWFkb25seSBsYWJlbCA9IGlucHV0LnJlcXVpcmVkPHN0cmluZz4oKTtcblxuICBwdWJsaWMgaWQ6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IHZpZXdWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAodGhpcy5nZXRIb3N0RWxlbWVudCgpLnRleHRDb250ZW50ID8/ICcnKS50cmltKCk7XG4gIH1cblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmlkID0gYG5kdy1vcHRpb24tJHtjcnlwdG8ucmFuZG9tVVVJRCgpfWA7XG4gIH1cblxuICAvLyBnZXRMYWJlbCBpcyByZXF1aXJlZCBpbiB0aGUgRm9jdXNhYmxlT3B0aW9uIGludGVyZmFjZSwgd2hpY2ggaXNcbiAgLy8gaW1wbGVtZW50ZWQgYnkgQmFzZUF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50XG4gIHB1YmxpYyBnZXRMYWJlbCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnZpZXdWYWx1ZTtcbiAgfVxuXG4gIHByb3RlY3RlZCBlbWl0U2VsZWN0aW9uQ2hhbmdlRXZlbnQoaXNVc2VySW5wdXQgPSBmYWxzZSk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobmV3IEF1dG9jb21wbGV0ZU9wdGlvblNlbGVjdGlvbkNoYW5nZSh0aGlzLCBpc1VzZXJJbnB1dCkpO1xuICB9XG59XG4iLCI8c3BhbiBjbGFzcz1cIm5kdy1vcHRpb24tdGV4dFwiIFtpbm5lckhUTUxdPVwibGFiZWwoKSB8IG1hdGNoQm9sZDogc2VhcmNoVGVybSgpXCI+PC9zcGFuPlxuIl19
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3Qtb3B0aW9uLm1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3Qtb3B0aW9uL2F1dG9zdWdnZXN0LW9wdGlvbi5tb2RlbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IHR5cGUgQXV0b3N1Z2dlc3RPcHRpb24gPSBzdHJpbmcgfCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbmV4cG9ydCB0eXBlIEF1dG9zdWdnZXN0T3B0aW9ucyA9IEFycmF5PEF1dG9zdWdnZXN0T3B0aW9uPjtcbiJdfQ==
@@ -1,85 +0,0 @@
1
- import { ChangeDetectorRef, Component, ElementRef, ChangeDetectionStrategy, EventEmitter, inject, input, } from '@angular/core';
2
- import { hasModifierKey } from '@angular/cdk/keycodes';
3
- import * as i0 from "@angular/core";
4
- export class BaseAutosuggestOptionComponent {
5
- constructor() {
6
- this.value = input();
7
- this.selectionChange = new EventEmitter();
8
- this._active = false;
9
- this._selected = false;
10
- this.element = inject(ElementRef);
11
- this.changeDetectorRef = inject(ChangeDetectorRef);
12
- }
13
- get active() {
14
- return this._active;
15
- }
16
- get selected() {
17
- return this._selected;
18
- }
19
- // This method is used by FocusableOption
20
- focus(_origin, options) {
21
- const element = this.element.nativeElement;
22
- if (typeof element.focus === 'function') {
23
- element.focus(options);
24
- }
25
- }
26
- // This method is used by the KeyManager
27
- setActiveStyles() {
28
- if (!this._active) {
29
- this._active = true;
30
- this.changeDetectorRef.markForCheck();
31
- }
32
- }
33
- // This method is used by KeyManager
34
- setInactiveStyles() {
35
- if (this._active) {
36
- this._active = false;
37
- this.changeDetectorRef.markForCheck();
38
- }
39
- }
40
- select(emitEvent = true) {
41
- if (!this._selected) {
42
- this._selected = true;
43
- this.changeDetectorRef.markForCheck();
44
- if (emitEvent) {
45
- this.emitSelectionChangeEvent();
46
- }
47
- }
48
- }
49
- deselect(emitEvent = true) {
50
- if (this._selected) {
51
- this._selected = false;
52
- this.changeDetectorRef.markForCheck();
53
- if (emitEvent) {
54
- this.emitSelectionChangeEvent();
55
- }
56
- }
57
- }
58
- handleKeydown(event) {
59
- if ((event.key === 'Enter' || event.key === 'Space') && !hasModifierKey(event)) {
60
- this.selectViaInteraction();
61
- event.preventDefault();
62
- }
63
- }
64
- selectViaInteraction() {
65
- this._selected = true;
66
- this.changeDetectorRef.markForCheck();
67
- this.emitSelectionChangeEvent(true);
68
- }
69
- ngOnDestroy() {
70
- this.selectionChange.complete();
71
- }
72
- getHostElement() {
73
- return this.element.nativeElement;
74
- }
75
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BaseAutosuggestOptionComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
76
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "18.0.1", type: BaseAutosuggestOptionComponent, selector: "ng-component", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: '', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
77
- }
78
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: BaseAutosuggestOptionComponent, decorators: [{
79
- type: Component,
80
- args: [{
81
- changeDetection: ChangeDetectionStrategy.OnPush,
82
- template: '',
83
- }]
84
- }] });
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3Qtb3B0aW9uL2Jhc2UtYXV0b3N1Z2dlc3Qtb3B0aW9uLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxVQUFVLEVBQ1YsdUJBQXVCLEVBQ3ZCLFlBQVksRUFDWixNQUFNLEVBRU4sS0FBSyxHQUNOLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7QUFPdkQsTUFBTSxPQUFnQiw4QkFBOEI7SUFKcEQ7UUFLa0IsVUFBSyxHQUFHLEtBQUssRUFBcUIsQ0FBQztRQUNuQyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFxQyxDQUFDO1FBRTlFLFlBQU8sR0FBRyxLQUFLLENBQUM7UUFDaEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQVVYLFlBQU8sR0FBRyxNQUFNLENBQTBCLFVBQVUsQ0FBQyxDQUFDO1FBQ3RELHNCQUFpQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0tBdUVoRTtJQWhGQyxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDeEIsQ0FBQztJQUtELHlDQUF5QztJQUNsQyxLQUFLLENBQUMsT0FBcUIsRUFBRSxPQUFzQjtRQUN4RCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUUzQyxJQUFJLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxVQUFVLEVBQUUsQ0FBQztZQUN4QyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsd0NBQXdDO0lBQ2pDLGVBQWU7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDeEMsQ0FBQztJQUNILENBQUM7SUFFRCxvQ0FBb0M7SUFDN0IsaUJBQWlCO1FBQ3RCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO1lBQ3JCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN4QyxDQUFDO0lBQ0gsQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTLEdBQUcsSUFBSTtRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUV0QyxJQUFJLFNBQVMsRUFBRSxDQUFDO2dCQUNkLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ2xDLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUVNLFFBQVEsQ0FBQyxTQUFTLEdBQUcsSUFBSTtRQUM5QixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztZQUN2QixJQUFJLENBQUMsaUJBQWlCLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFdEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztZQUNsQyxDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxhQUFhLENBQUMsS0FBb0I7UUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLEtBQUssT0FBTyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztZQUM1QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFTSxvQkFBb0I7UUFDekIsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDdEIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0lBSU0sV0FBVztRQUNoQixJQUFJLENBQUMsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2xDLENBQUM7SUFFUyxjQUFjO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7SUFDcEMsQ0FBQzs4R0F0Rm1CLDhCQUE4QjtrR0FBOUIsOEJBQThCLHdMQUZ4QyxFQUFFOzsyRkFFUSw4QkFBOEI7a0JBSm5ELFNBQVM7bUJBQUM7b0JBQ1QsZUFBZSxFQUFFLHVCQUF1QixDQUFDLE1BQU07b0JBQy9DLFFBQVEsRUFBRSxFQUFFO2lCQUNiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9jdXNhYmxlT3B0aW9uLCBGb2N1c09yaWdpbiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7XG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBFdmVudEVtaXR0ZXIsXG4gIGluamVjdCxcbiAgT25EZXN0cm95LFxuICBpbnB1dCxcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2UgfSBmcm9tICcuL2F1dG9zdWdnZXN0LW9wdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgaGFzTW9kaWZpZXJLZXkgfSBmcm9tICdAYW5ndWxhci9jZGsva2V5Y29kZXMnO1xuaW1wb3J0IHsgQXV0b3N1Z2dlc3RPcHRpb24gfSBmcm9tICcuL2F1dG9zdWdnZXN0LW9wdGlvbi5tb2RlbCc7XG5cbkBDb21wb25lbnQoe1xuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICcnLFxufSlcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgaW1wbGVtZW50cyBGb2N1c2FibGVPcHRpb24sIE9uRGVzdHJveSB7XG4gIHB1YmxpYyByZWFkb25seSB2YWx1ZSA9IGlucHV0PEF1dG9zdWdnZXN0T3B0aW9uPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxBdXRvY29tcGxldGVPcHRpb25TZWxlY3Rpb25DaGFuZ2U+KCk7XG5cbiAgcHJvdGVjdGVkIF9hY3RpdmUgPSBmYWxzZTtcbiAgcHJvdGVjdGVkIF9zZWxlY3RlZCA9IGZhbHNlO1xuXG4gIHB1YmxpYyBnZXQgYWN0aXZlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9hY3RpdmU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgZWxlbWVudCA9IGluamVjdDxFbGVtZW50UmVmPEhUTUxFbGVtZW50Pj4oRWxlbWVudFJlZik7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIC8vIFRoaXMgbWV0aG9kIGlzIHVzZWQgYnkgRm9jdXNhYmxlT3B0aW9uXG4gIHB1YmxpYyBmb2N1cyhfb3JpZ2luPzogRm9jdXNPcmlnaW4sIG9wdGlvbnM/OiBGb2N1c09wdGlvbnMpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBpZiAodHlwZW9mIGVsZW1lbnQuZm9jdXMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGVsZW1lbnQuZm9jdXMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgLy8gVGhpcyBtZXRob2QgaXMgdXNlZCBieSB0aGUgS2V5TWFuYWdlclxuICBwdWJsaWMgc2V0QWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fYWN0aXZlKSB7XG4gICAgICB0aGlzLl9hY3RpdmUgPSB0cnVlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICAvLyBUaGlzIG1ldGhvZCBpcyB1c2VkIGJ5IEtleU1hbmFnZXJcbiAgcHVibGljIHNldEluYWN0aXZlU3R5bGVzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLl9hY3RpdmUpIHtcbiAgICAgIHRoaXMuX2FjdGl2ZSA9IGZhbHNlO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgc2VsZWN0KGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuX3NlbGVjdGVkKSB7XG4gICAgICB0aGlzLl9zZWxlY3RlZCA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGRlc2VsZWN0KGVtaXRFdmVudCA9IHRydWUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5fc2VsZWN0ZWQpIHtcbiAgICAgIHRoaXMuX3NlbGVjdGVkID0gZmFsc2U7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICBpZiAoZW1pdEV2ZW50KSB7XG4gICAgICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBpZiAoKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdTcGFjZScpICYmICFoYXNNb2RpZmllcktleShldmVudCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0VmlhSW50ZXJhY3Rpb24oKTtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdFZpYUludGVyYWN0aW9uKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlbGVjdGVkID0gdHJ1ZTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIHRoaXMuZW1pdFNlbGVjdGlvbkNoYW5nZUV2ZW50KHRydWUpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IGVtaXRTZWxlY3Rpb25DaGFuZ2VFdmVudChpc1VzZXJJbnB1dD86IGJvb2xlYW4pOiB2b2lkO1xuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldEhvc3RFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50Lm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cbiJdfQ==
@@ -1,3 +0,0 @@
1
- export * from './autosuggest-option.component';
2
- export * from './base-autosuggest-option.component';
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZHcvc3JjL2NvbXBvbmVudHMvZm9ybS1maWVsZC9hdXRvc3VnZ2VzdC9hdXRvc3VnZ2VzdC1vcHRpb24vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQ0FBZ0MsQ0FBQztBQUMvQyxjQUFjLHFDQUFxQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50JztcbmV4cG9ydCAqIGZyb20gJy4vYmFzZS1hdXRvc3VnZ2VzdC1vcHRpb24uY29tcG9uZW50JztcbiJdfQ==
@@ -1,82 +0,0 @@
1
- import { ChangeDetectionStrategy, ChangeDetectorRef, Component, computed, inject, input, output, signal, TemplateRef, viewChild, ViewChildren, } from '@angular/core';
2
- import { ActiveDescendantKeyManager } from '@angular/cdk/a11y';
3
- import { IconComponent } from '../../../icon';
4
- import { AutosuggestAddOptionComponent } from '../autosuggest-add-option';
5
- import { AutosuggestOptionComponent } from '../autosuggest-option';
6
- import { NgTemplateOutlet } from '@angular/common';
7
- import * as i0 from "@angular/core";
8
- const DEFAULTMAXRESULTS = 100;
9
- const DEFAULTNORESULTTEXT = 'Geen resultaten gevonden. Probeer een andere zoekterm.';
10
- export class AutosuggestPanelComponent {
11
- constructor() {
12
- // Inputs
13
- this.suggestions = input([]);
14
- this.enableAddOption = input(false);
15
- this.maxResults = input(DEFAULTMAXRESULTS);
16
- this.noResultText = input(DEFAULTNORESULTTEXT);
17
- this.displayWith = input();
18
- // Outputs
19
- this.opened = output();
20
- this.closed = output();
21
- this.optionSelected = output();
22
- this.addOption = output();
23
- this.template = viewChild.required(TemplateRef);
24
- this.panel = viewChild.required('panel');
25
- // Variables & Signals
26
- this.searchTerm = signal('');
27
- this.slicedOptions = computed(() => this.suggestions().slice(0, this.maxResults()));
28
- this.hasMoreResults = computed(() => this.suggestions().length > this.maxResults());
29
- this.numberOfLeftOverResults = computed(() => this.suggestions().length - this.maxResults());
30
- this.showPanel = false;
31
- this.isOpen = false;
32
- this.changeDetectorRef = inject(ChangeDetectorRef);
33
- this.id = `ndw-autosuggest-${crypto.randomUUID()}`;
34
- }
35
- ngAfterViewInit() {
36
- this.keyManager = new ActiveDescendantKeyManager(this.items)
37
- .withPageUpDown()
38
- .withWrap()
39
- .withTypeAhead();
40
- this.setVisibility();
41
- }
42
- ngOnDestroy() {
43
- this.keyManager?.destroy();
44
- }
45
- // Methods
46
- getLabelOption(option) {
47
- const displayFn = this.displayWith();
48
- return displayFn ? displayFn(option) : option;
49
- }
50
- setScrollTop(scrollTop) {
51
- const panel = this.panel();
52
- if (panel) {
53
- panel.nativeElement.scrollTop = scrollTop;
54
- }
55
- }
56
- setVisibility() {
57
- this.showPanel = !!this.items?.length;
58
- this.changeDetectorRef.markForCheck();
59
- }
60
- emitSelectEvent(option) {
61
- this.optionSelected.emit(option.value() ?? null);
62
- }
63
- addNewOption(value) {
64
- this.optionSelected.emit(value);
65
- this.addOption.emit(value);
66
- }
67
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestPanelComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
68
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.0.1", type: AutosuggestPanelComponent, isStandalone: true, selector: "ndw-autosuggest", inputs: { suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, enableAddOption: { classPropertyName: "enableAddOption", publicName: "enableAddOption", isSignal: true, isRequired: false, transformFunction: null }, maxResults: { classPropertyName: "maxResults", publicName: "maxResults", isSignal: true, isRequired: false, transformFunction: null }, noResultText: { classPropertyName: "noResultText", publicName: "noResultText", isSignal: true, isRequired: false, transformFunction: null }, displayWith: { classPropertyName: "displayWith", publicName: "displayWith", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { opened: "opened", closed: "closed", optionSelected: "optionSelected", addOption: "addOption" }, viewQueries: [{ propertyName: "template", first: true, predicate: TemplateRef, descendants: true, isSignal: true }, { propertyName: "panel", first: true, predicate: ["panel"], descendants: true, isSignal: true }, { propertyName: "items", predicate: ["option"], descendants: true }], exportAs: ["apAutocomplete"], ngImport: i0, template: "<ng-template>\n @if (suggestions().length === 0 && !enableAddOption()) {\n <div class=\"ndw-autosuggest-panel\">\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n </div>\n } @else {\n <datalist #panel class=\"ndw-autosuggest-panel\">\n @for (option of slicedOptions(); track option) {\n <ndw-autosuggest-option\n #option\n [value]=\"option\"\n [label]=\"getLabelOption(option)\"\n [searchTerm]=\"searchTerm()\"\n />\n }\n\n @if (enableAddOption()) {\n @if (!!searchTerm().trim()) {\n <ndw-autosuggest-add-option\n #option\n [value]=\"searchTerm()\"\n (addOption)=\"addNewOption($event)\"\n />\n } @else if (!suggestions().length) {\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n }\n }\n\n @if (hasMoreResults()) {\n <p class=\"ndw-autosuggest-panel__more-results\">\n Er zijn nog {{ numberOfLeftOverResults() }} niet-getoonde resultaten, maak je zoekopdracht\n specifieker\n </p>\n }\n </datalist>\n }\n</ng-template>\n\n<ng-template #emptyResults>\n <div class=\"ndw-autosuggest-panel__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n</ng-template>\n", styles: [".ndw-autosuggest-panel{--dropdown-line-height: 26px;--dropdown-max-line-items: 7;--dropdown-max-height: calc(var(--dropdown-line-height) * var(--dropdown-max-line-items));display:block;overflow:auto;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;max-height:var(--dropdown-max-height);width:100%;border:1px solid var(--ndw-color-grey-200);border-radius:var(--ndw-border-radius-sm);padding:0;margin-top:2px;background-color:var(--ndw-color-white);box-shadow:var(--ndw-elevation-popover)}.ndw-autosuggest-panel>ndw-autosuggest-option:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest-panel__more-results{font-size:var(--ndw-font-size-sm);color:var(--ndw-color-grey-400);text-align:center}.ndw-autosuggest-panel__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);gap:var(--ndw-spacing-xs);max-width:300px;box-sizing:border-box;font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"], dependencies: [{ kind: "component", type: AutosuggestOptionComponent, selector: "ndw-autosuggest-option", inputs: ["searchTerm", "label"] }, { kind: "component", type: AutosuggestAddOptionComponent, selector: "ndw-autosuggest-add-option", outputs: ["addOption"] }, { kind: "component", type: IconComponent, selector: "ndw-icon", inputs: ["size"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
69
- }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.1", ngImport: i0, type: AutosuggestPanelComponent, decorators: [{
71
- type: Component,
72
- args: [{ selector: 'ndw-autosuggest', standalone: true, imports: [
73
- AutosuggestOptionComponent,
74
- AutosuggestAddOptionComponent,
75
- IconComponent,
76
- NgTemplateOutlet,
77
- ], changeDetection: ChangeDetectionStrategy.OnPush, exportAs: 'apAutocomplete', template: "<ng-template>\n @if (suggestions().length === 0 && !enableAddOption()) {\n <div class=\"ndw-autosuggest-panel\">\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n </div>\n } @else {\n <datalist #panel class=\"ndw-autosuggest-panel\">\n @for (option of slicedOptions(); track option) {\n <ndw-autosuggest-option\n #option\n [value]=\"option\"\n [label]=\"getLabelOption(option)\"\n [searchTerm]=\"searchTerm()\"\n />\n }\n\n @if (enableAddOption()) {\n @if (!!searchTerm().trim()) {\n <ndw-autosuggest-add-option\n #option\n [value]=\"searchTerm()\"\n (addOption)=\"addNewOption($event)\"\n />\n } @else if (!suggestions().length) {\n <ng-container *ngTemplateOutlet=\"emptyResults\"></ng-container>\n }\n }\n\n @if (hasMoreResults()) {\n <p class=\"ndw-autosuggest-panel__more-results\">\n Er zijn nog {{ numberOfLeftOverResults() }} niet-getoonde resultaten, maak je zoekopdracht\n specifieker\n </p>\n }\n </datalist>\n }\n</ng-template>\n\n<ng-template #emptyResults>\n <div class=\"ndw-autosuggest-panel__empty\">\n <ndw-icon>sentiment_dissatisfied</ndw-icon>\n {{ noResultText() }}\n </div>\n</ng-template>\n", styles: [".ndw-autosuggest-panel{--dropdown-line-height: 26px;--dropdown-max-line-items: 7;--dropdown-max-height: calc(var(--dropdown-line-height) * var(--dropdown-max-line-items));display:block;overflow:auto;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;max-height:var(--dropdown-max-height);width:100%;border:1px solid var(--ndw-color-grey-200);border-radius:var(--ndw-border-radius-sm);padding:0;margin-top:2px;background-color:var(--ndw-color-white);box-shadow:var(--ndw-elevation-popover)}.ndw-autosuggest-panel>ndw-autosuggest-option:not(:last-child){border-bottom:1px solid var(--ndw-color-grey-200)}.ndw-autosuggest-panel__more-results{font-size:var(--ndw-font-size-sm);color:var(--ndw-color-grey-400);text-align:center}.ndw-autosuggest-panel__empty{display:grid;justify-items:center;margin:auto;padding:var(--ndw-spacing-sm) var(--ndw-spacing-md);gap:var(--ndw-spacing-xs);max-width:300px;box-sizing:border-box;font-size:var(--ndw-font-size-sm);text-align:center;color:var(--ndw-color-grey-400)}\n"] }]
78
- }], ctorParameters: () => [], propDecorators: { items: [{
79
- type: ViewChildren,
80
- args: ['option']
81
- }] } });
82
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b3N1Z2dlc3QtcGFuZWwuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtcGFuZWwvYXV0b3N1Z2dlc3QtcGFuZWwuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmR3L3NyYy9jb21wb25lbnRzL2Zvcm0tZmllbGQvYXV0b3N1Z2dlc3QvYXV0b3N1Z2dlc3QtcGFuZWwvYXV0b3N1Z2dlc3QtcGFuZWwuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFFBQVEsRUFFUixNQUFNLEVBQ04sS0FBSyxFQUVMLE1BQU0sRUFFTixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVCxZQUFZLEdBQ2IsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM5QyxPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUMxRSxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUtuRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFbkQsTUFBTSxpQkFBaUIsR0FBRyxHQUFHLENBQUM7QUFDOUIsTUFBTSxtQkFBbUIsR0FBRyx3REFBd0QsQ0FBQztBQWdCckYsTUFBTSxPQUFPLHlCQUF5QjtJQXFDcEM7UUFwQ0EsU0FBUztRQUNPLGdCQUFXLEdBQUcsS0FBSyxDQUFxQixFQUFFLENBQUMsQ0FBQztRQUM1QyxvQkFBZSxHQUFHLEtBQUssQ0FBVSxL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QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM3QixDQUFDOzhHQWpGVSx5QkFBeUI7a0dBQXpCLHlCQUF5QiwwNkJBaUJVLFdBQVcsb1FDOUQzRCwyMENBNENBLHdpQ0RUSSwwQkFBMEIsb0dBQzFCLDZCQUE2QiwrRkFDN0IsYUFBYSx1RUFDYixnQkFBZ0I7OzJGQU9QLHlCQUF5QjtrQkFkckMsU0FBUzsrQkFDRSxpQkFBaUIsY0FDZixJQUFJLFdBQ1A7d0JBQ1AsMEJBQTBCO3dCQUMxQiw2QkFBNkI7d0JBQzdCLGFBQWE7d0JBQ2IsZ0JBQWdCO3FCQUNqQixtQkFHZ0IsdUJBQXVCLENBQUMsTUFBTSxZQUNyQyxnQkFBZ0I7d0RBa0JuQixLQUFLO3NCQURYLFlBQVk7dUJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBjb21wdXRlZCxcbiAgRWxlbWVudFJlZixcbiAgaW5qZWN0LFxuICBpbnB1dCxcbiAgT25EZXN0cm95LFxuICBvdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgc2lnbmFsLFxuICBUZW1wbGF0ZVJlZixcbiAgdmlld0NoaWxkLFxuICBWaWV3Q2hpbGRyZW4sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQgeyBBY3RpdmVEZXNjZW5kYW50S2V5TWFuYWdlciB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi8uLi9pY29uJztcbmltcG9ydCB7IEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vYXV0b3N1Z2dlc3QtYWRkLW9wdGlvbic7XG5pbXBvcnQgeyBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2F1dG9zdWdnZXN0LW9wdGlvbic7XG5pbXBvcnQge1xuICBBdXRvc3VnZ2VzdE9wdGlvbixcbiAgQXV0b3N1Z2dlc3RPcHRpb25zLFxufSBmcm9tICcuLi9hdXRvc3VnZ2VzdC1vcHRpb24vYXV0b3N1Z2dlc3Qtb3B0aW9uLm1vZGVsJztcbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG5jb25zdCBERUZBVUxUTUFYUkVTVUxUUyA9IDEwMDtcbmNvbnN0IERFRkFVTFROT1JFU1VMVFRFWFQgPSAnR2VlbiByZXN1bHRhdGVuIGdldm9uZGVuLiBQcm9iZWVyIGVlbiBhbmRlcmUgem9la3Rlcm0uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbmR3LWF1dG9zdWdnZXN0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1xuICAgIEF1dG9zdWdnZXN0T3B0aW9uQ29tcG9uZW50LFxuICAgIEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50LFxuICAgIEljb25Db21wb25lbnQsXG4gICAgTmdUZW1wbGF0ZU91dGxldCxcbiAgXSxcbiAgdGVtcGxhdGVVcmw6ICcuL2F1dG9zdWdnZXN0LXBhbmVsLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F1dG9zdWdnZXN0LXBhbmVsLmNvbXBvbmVudC5zY3NzJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGV4cG9ydEFzOiAnYXBBdXRvY29tcGxldGUnLFxufSlcbmV4cG9ydCBjbGFzcyBBdXRvc3VnZ2VzdFBhbmVsQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcbiAgLy8gSW5wdXRzXG4gIHB1YmxpYyByZWFkb25seSBzdWdnZXN0aW9ucyA9IGlucHV0PEF1dG9zdWdnZXN0T3B0aW9ucz4oW10pO1xuICBwdWJsaWMgcmVhZG9ubHkgZW5hYmxlQWRkT3B0aW9uID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICBwdWJsaWMgcmVhZG9ubHkgbWF4UmVzdWx0cyA9IGlucHV0PG51bWJlcj4oREVGQVVMVE1BWFJFU1VMVFMpO1xuICBwdWJsaWMgcmVhZG9ubHkgbm9SZXN1bHRUZXh0ID0gaW5wdXQ8c3RyaW5nPihERUZBVUxUTk9SRVNVTFRURVhUKTtcbiAgcHVibGljIHJlYWRvbmx5IGRpc3BsYXlXaXRoID0gaW5wdXQ8KHZhbHVlOiBBdXRvc3VnZ2VzdE9wdGlvbikgPT4gc3RyaW5nPigpO1xuXG4gIC8vIE91dHB1dHNcbiAgcHVibGljIHJlYWRvbmx5IG9wZW5lZCA9IG91dHB1dDx2b2lkPigpO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xvc2VkID0gb3V0cHV0PHZvaWQ+KCk7XG4gIHB1YmxpYyByZWFkb25seSBvcHRpb25TZWxlY3RlZCA9IG91dHB1dDxBdXRvc3VnZ2VzdE9wdGlvbiB8IG51bGw+KCk7XG4gIHB1YmxpYyByZWFkb25seSBhZGRPcHRpb24gPSBvdXRwdXQ8c3RyaW5nPigpO1xuXG4gIC8vIFZpZXcgUmVmZXJlbmNlc1xuICBAVmlld0NoaWxkcmVuKCdvcHRpb24nKVxuICBwdWJsaWMgaXRlbXMhOiBRdWVyeUxpc3Q8QXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudD47XG4gIHB1YmxpYyByZWFkb25seSB0ZW1wbGF0ZSA9IHZpZXdDaGlsZC5yZXF1aXJlZChUZW1wbGF0ZVJlZik7XG4gIHB1YmxpYyByZWFkb25seSBwYW5lbCA9IHZpZXdDaGlsZC5yZXF1aXJlZDxFbGVtZW50UmVmPEhUTUxEaXZFbGVtZW50Pj4oJ3BhbmVsJyk7XG5cbiAgLy8gVmFyaWFibGVzICYgU2lnbmFsc1xuICBwdWJsaWMgcmVhZG9ubHkgc2VhcmNoVGVybSA9IHNpZ25hbDxzdHJpbmc+KCcnKTtcbiAgcHVibGljIHJlYWRvbmx5IHNsaWNlZE9wdGlvbnMgPSBjb21wdXRlZCgoKSA9PiB0aGlzLnN1Z2dlc3Rpb25zKCkuc2xpY2UoMCwgdGhpcy5tYXhSZXN1bHRzKCkpKTtcbiAgcHVibGljIHJlYWRvbmx5IGhhc01vcmVSZXN1bHRzID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5zdWdnZXN0aW9ucygpLmxlbmd0aCA+IHRoaXMubWF4UmVzdWx0cygpKTtcbiAgcHVibGljIHJlYWRvbmx5IG51bWJlck9mTGVmdE92ZXJSZXN1bHRzID0gY29tcHV0ZWQoXG4gICAgKCkgPT4gdGhpcy5zdWdnZXN0aW9ucygpLmxlbmd0aCAtIHRoaXMubWF4UmVzdWx0cygpLFxuICApO1xuXG4gIHB1YmxpYyBrZXlNYW5hZ2VyOlxuICAgIHwgQWN0aXZlRGVzY2VuZGFudEtleU1hbmFnZXI8QXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudD5cbiAgICB8IHVuZGVmaW5lZDtcbiAgcHVibGljIHNob3dQYW5lbCA9IGZhbHNlO1xuICBwdWJsaWMgaWQ6IHN0cmluZztcbiAgcHVibGljIGlzT3BlbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2hhbmdlRGV0ZWN0b3JSZWYgPSBpbmplY3QoQ2hhbmdlRGV0ZWN0b3JSZWYpO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmlkID0gYG5kdy1hdXRvc3VnZ2VzdC0ke2NyeXB0by5yYW5kb21VVUlEKCl9YDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5rZXlNYW5hZ2VyID0gbmV3IEFjdGl2ZURlc2NlbmRhbnRLZXlNYW5hZ2VyPFxuICAgICAgQXV0b3N1Z2dlc3RPcHRpb25Db21wb25lbnQgfCBBdXRvc3VnZ2VzdEFkZE9wdGlvbkNvbXBvbmVudFxuICAgID4odGhpcy5pdGVtcylcbiAgICAgIC53aXRoUGFnZVVwRG93bigpXG4gICAgICAud2l0aFdyYXAoKVxuICAgICAgLndpdGhUeXBlQWhlYWQoKTtcbiAgICB0aGlzLnNldFZpc2liaWxpdHkoKTtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmtleU1hbmFnZXI/LmRlc3Ryb3koKTtcbiAgfVxuXG4gIC8vIE1ldGhvZHNcbiAgcHVibGljIGdldExhYmVsT3B0aW9uKG9wdGlvbjogQXV0b3N1Z2dlc3RPcHRpb24pOiBzdHJpbmcge1xuICAgIGNvbnN0IGRpc3BsYXlGbiA9IHRoaXMuZGlzcGxheVdpdGgoKTtcbiAgICByZXR1cm4gZGlzcGxheUZuID8gZGlzcGxheUZuKG9wdGlvbikgOiAob3B0aW9uIGFzIHN0cmluZyk7XG4gIH1cblxuICBwdWJsaWMgc2V0U2Nyb2xsVG9wKHNjcm9sbFRvcDogbnVtYmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFuZWwgPSB0aGlzLnBhbmVsKCk7XG5cbiAgICBpZiAocGFuZWwpIHtcbiAgICAgIHBhbmVsLm5hdGl2ZUVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRWaXNpYmlsaXR5KCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd1BhbmVsID0gISF0aGlzLml0ZW1zPy5sZW5ndGg7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBlbWl0U2VsZWN0RXZlbnQob3B0aW9uOiBBdXRvc3VnZ2VzdE9wdGlvbkNvbXBvbmVudCB8IEF1dG9zdWdnZXN0QWRkT3B0aW9uQ29tcG9uZW50KTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KG9wdGlvbi52YWx1ZSgpID8/IG51bGwpO1xuICB9XG5cbiAgcHVibGljIGFkZE5ld09wdGlvbih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5vcHRpb25TZWxlY3RlZC5lbWl0KHZhbHVlKTtcbiAgICB0aGlzLmFkZE9wdGlvbi5lbWl0KHZhbHVlKTtcbiAgfVxufVxuIiwiPG5nLXRlbXBsYXRlPlxuICBAaWYgKHN1Z2dlc3Rpb25zKCkubGVuZ3RoID09PSAwICYmICFlbmFibGVBZGRPcHRpb24oKSkge1xuICAgIDxkaXYgY2xhc3M9XCJuZHctYXV0b3N1Z2dlc3QtcGFuZWxcIj5cbiAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVJlc3VsdHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgfSBAZWxzZSB7XG4gICAgPGRhdGFsaXN0ICNwYW5lbCBjbGFzcz1cIm5kdy1hdXRvc3VnZ2VzdC1wYW5lbFwiPlxuICAgICAgQGZvciAob3B0aW9uIG9mIHNsaWNlZE9wdGlvbnMoKTsgdHJhY2sgb3B0aW9uKSB7XG4gICAgICAgIDxuZHctYXV0b3N1Z2dlc3Qtb3B0aW9uXG4gICAgICAgICAgI29wdGlvblxuICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb25cIlxuICAgICAgICAgIFtsYWJlbF09XCJnZXRMYWJlbE9wdGlvbihvcHRpb24pXCJcbiAgICAgICAgICBbc2VhcmNoVGVybV09XCJzZWFyY2hUZXJtKClcIlxuICAgICAgICAvPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGVuYWJsZUFkZE9wdGlvbigpKSB7XG4gICAgICAgIEBpZiAoISFzZWFyY2hUZXJtKCkudHJpbSgpKSB7XG4gICAgICAgICAgPG5kdy1hdXRvc3VnZ2VzdC1hZGQtb3B0aW9uXG4gICAgICAgICAgICAjb3B0aW9uXG4gICAgICAgICAgICBbdmFsdWVdPVwic2VhcmNoVGVybSgpXCJcbiAgICAgICAgICAgIChhZGRPcHRpb24pPVwiYWRkTmV3T3B0aW9uKCRldmVudClcIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKCFzdWdnZXN0aW9ucygpLmxlbmd0aCkge1xuICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJlbXB0eVJlc3VsdHNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBAaWYgKGhhc01vcmVSZXN1bHRzKCkpIHtcbiAgICAgICAgPHAgY2xhc3M9XCJuZHctYXV0b3N1Z2dlc3QtcGFuZWxfX21vcmUtcmVzdWx0c1wiPlxuICAgICAgICAgIEVyIHppam4gbm9nIHt7IG51bWJlck9mTGVmdE92ZXJSZXN1bHRzKCkgfX0gbmlldC1nZXRvb25kZSByZXN1bHRhdGVuLCBtYWFrIGplIHpvZWtvcGRyYWNodFxuICAgICAgICAgIHNwZWNpZmlla2VyXG4gICAgICAgIDwvcD5cbiAgICAgIH1cbiAgICA8L2RhdGFsaXN0PlxuICB9XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2VtcHR5UmVzdWx0cz5cbiAgPGRpdiBjbGFzcz1cIm5kdy1hdXRvc3VnZ2VzdC1wYW5lbF9fZW1wdHlcIj5cbiAgICA8bmR3LWljb24+c2VudGltZW50X2Rpc3NhdGlzZmllZDwvbmR3LWljb24+XG4gICAge3sgbm9SZXN1bHRUZXh0KCkgfX1cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19