@skyux/lookup 11.22.0 → 11.23.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 (97) hide show
  1. package/documentation.json +1965 -1846
  2. package/esm2022/lib/modules/autocomplete/autocomplete.component.mjs +2 -2
  3. package/esm2022/lib/modules/country-field/country-field.component.mjs +3 -3
  4. package/esm2022/lib/modules/lookup/lookup.component.mjs +2 -2
  5. package/esm2022/lib/modules/search/search.component.mjs +3 -3
  6. package/esm2022/testing/legacy/country-field/country-field-fixture.mjs +121 -0
  7. package/esm2022/testing/{country-field → legacy/country-field}/country-field-testing.module.mjs +1 -1
  8. package/esm2022/testing/legacy/search/search-fixture.mjs +60 -0
  9. package/esm2022/testing/{search → legacy/search}/search-testing.module.mjs +1 -1
  10. package/esm2022/testing/modules/autocomplete/autocomplete-harness-filters.mjs +2 -0
  11. package/esm2022/testing/modules/autocomplete/autocomplete-harness.mjs +192 -0
  12. package/esm2022/testing/modules/autocomplete/autocomplete-input-harness.mjs +17 -0
  13. package/esm2022/testing/modules/autocomplete/autocomplete-search-result-harness-filters.mjs +2 -0
  14. package/esm2022/testing/modules/autocomplete/autocomplete-search-result-harness.mjs +38 -0
  15. package/esm2022/testing/modules/country-field/country-field-harness-filters.mjs +2 -0
  16. package/esm2022/testing/modules/country-field/country-field-harness.mjs +139 -0
  17. package/esm2022/testing/modules/country-field/country-field-search-result-harness-filters.mjs +2 -0
  18. package/esm2022/testing/modules/country-field/country-field-search-result-harness.mjs +27 -0
  19. package/esm2022/testing/modules/lookup/lookup-harness-filters.mjs +2 -0
  20. package/esm2022/testing/modules/lookup/lookup-harness.mjs +181 -0
  21. package/esm2022/testing/modules/lookup/lookup-search-result-harness-filters.mjs +2 -0
  22. package/esm2022/testing/modules/lookup/lookup-search-result-harness.mjs +24 -0
  23. package/esm2022/testing/modules/lookup/lookup-selection-harness-filters.mjs +2 -0
  24. package/esm2022/testing/modules/lookup/lookup-selection-harness.mjs +8 -0
  25. package/esm2022/testing/modules/lookup/lookup-selections-list-harness.mjs +26 -0
  26. package/esm2022/testing/modules/lookup/lookup-show-more-picker-harness-filters.mjs +2 -0
  27. package/esm2022/testing/modules/lookup/lookup-show-more-picker-harness.mjs +28 -0
  28. package/esm2022/testing/modules/lookup/lookup-show-more-picker-search-result-harness-filters.mjs +2 -0
  29. package/esm2022/testing/modules/lookup/lookup-show-more-picker-search-result-harness.mjs +8 -0
  30. package/esm2022/testing/modules/search/search-harness-filters.mjs +2 -0
  31. package/esm2022/testing/modules/search/search-harness.mjs +143 -0
  32. package/esm2022/testing/modules/selection-modal/selection-modal-harness.mjs +172 -0
  33. package/esm2022/testing/modules/selection-modal/selection-modal-search-result-harness-filters.mjs +2 -0
  34. package/esm2022/testing/modules/selection-modal/selection-modal-search-result-harness.mjs +7 -0
  35. package/esm2022/testing/public-api.mjs +17 -17
  36. package/fesm2022/skyux-lookup-testing.mjs +82 -73
  37. package/fesm2022/skyux-lookup-testing.mjs.map +1 -1
  38. package/fesm2022/skyux-lookup.mjs +8 -8
  39. package/fesm2022/skyux-lookup.mjs.map +1 -1
  40. package/package.json +11 -11
  41. package/testing/{country-field → legacy/country-field}/country-field-fixture.d.ts +1 -1
  42. package/testing/{country-field → modules/country-field}/country-field-search-result-harness-filters.d.ts +1 -1
  43. package/testing/{lookup → modules/lookup}/lookup-search-result-harness-filters.d.ts +1 -1
  44. package/testing/public-api.d.ts +26 -26
  45. package/esm2022/testing/autocomplete/autocomplete-harness-filters.mjs +0 -2
  46. package/esm2022/testing/autocomplete/autocomplete-harness.mjs +0 -192
  47. package/esm2022/testing/autocomplete/autocomplete-input-harness.mjs +0 -17
  48. package/esm2022/testing/autocomplete/autocomplete-search-result-harness-filters.mjs +0 -2
  49. package/esm2022/testing/autocomplete/autocomplete-search-result-harness.mjs +0 -38
  50. package/esm2022/testing/country-field/country-field-fixture.mjs +0 -119
  51. package/esm2022/testing/country-field/country-field-harness-filters.mjs +0 -2
  52. package/esm2022/testing/country-field/country-field-harness.mjs +0 -139
  53. package/esm2022/testing/country-field/country-field-search-result-harness-filters.mjs +0 -2
  54. package/esm2022/testing/country-field/country-field-search-result-harness.mjs +0 -24
  55. package/esm2022/testing/lookup/lookup-harness-filters.mjs +0 -2
  56. package/esm2022/testing/lookup/lookup-harness.mjs +0 -181
  57. package/esm2022/testing/lookup/lookup-search-result-harness-filters.mjs +0 -2
  58. package/esm2022/testing/lookup/lookup-search-result-harness.mjs +0 -21
  59. package/esm2022/testing/lookup/lookup-selection-harness-filters.mjs +0 -2
  60. package/esm2022/testing/lookup/lookup-selection-harness.mjs +0 -8
  61. package/esm2022/testing/lookup/lookup-selections-list-harness.mjs +0 -26
  62. package/esm2022/testing/lookup/lookup-show-more-picker-harness-filters.mjs +0 -2
  63. package/esm2022/testing/lookup/lookup-show-more-picker-harness.mjs +0 -28
  64. package/esm2022/testing/lookup/lookup-show-more-picker-search-result-harness-filters.mjs +0 -2
  65. package/esm2022/testing/lookup/lookup-show-more-picker-search-result-harness.mjs +0 -8
  66. package/esm2022/testing/search/search-fixture.mjs +0 -60
  67. package/esm2022/testing/search/search-harness-filters.mjs +0 -2
  68. package/esm2022/testing/search/search-harness.mjs +0 -143
  69. package/esm2022/testing/selection-modal/selection-modal-harness.mjs +0 -171
  70. package/esm2022/testing/selection-modal/selection-modal-search-result-harness-filters.mjs +0 -2
  71. package/esm2022/testing/selection-modal/selection-modal-search-result-harness.mjs +0 -7
  72. /package/testing/{country-field → legacy/country-field}/country-field-testing.module.d.ts +0 -0
  73. /package/testing/{search → legacy/search}/search-fixture.d.ts +0 -0
  74. /package/testing/{search → legacy/search}/search-testing.module.d.ts +0 -0
  75. /package/testing/{autocomplete → modules/autocomplete}/autocomplete-harness-filters.d.ts +0 -0
  76. /package/testing/{autocomplete → modules/autocomplete}/autocomplete-harness.d.ts +0 -0
  77. /package/testing/{autocomplete → modules/autocomplete}/autocomplete-input-harness.d.ts +0 -0
  78. /package/testing/{autocomplete → modules/autocomplete}/autocomplete-search-result-harness-filters.d.ts +0 -0
  79. /package/testing/{autocomplete → modules/autocomplete}/autocomplete-search-result-harness.d.ts +0 -0
  80. /package/testing/{country-field → modules/country-field}/country-field-harness-filters.d.ts +0 -0
  81. /package/testing/{country-field → modules/country-field}/country-field-harness.d.ts +0 -0
  82. /package/testing/{country-field → modules/country-field}/country-field-search-result-harness.d.ts +0 -0
  83. /package/testing/{lookup → modules/lookup}/lookup-harness-filters.d.ts +0 -0
  84. /package/testing/{lookup → modules/lookup}/lookup-harness.d.ts +0 -0
  85. /package/testing/{lookup → modules/lookup}/lookup-search-result-harness.d.ts +0 -0
  86. /package/testing/{lookup → modules/lookup}/lookup-selection-harness-filters.d.ts +0 -0
  87. /package/testing/{lookup → modules/lookup}/lookup-selection-harness.d.ts +0 -0
  88. /package/testing/{lookup → modules/lookup}/lookup-selections-list-harness.d.ts +0 -0
  89. /package/testing/{lookup → modules/lookup}/lookup-show-more-picker-harness-filters.d.ts +0 -0
  90. /package/testing/{lookup → modules/lookup}/lookup-show-more-picker-harness.d.ts +0 -0
  91. /package/testing/{lookup → modules/lookup}/lookup-show-more-picker-search-result-harness-filters.d.ts +0 -0
  92. /package/testing/{lookup → modules/lookup}/lookup-show-more-picker-search-result-harness.d.ts +0 -0
  93. /package/testing/{search → modules/search}/search-harness-filters.d.ts +0 -0
  94. /package/testing/{search → modules/search}/search-harness.d.ts +0 -0
  95. /package/testing/{selection-modal → modules/selection-modal}/selection-modal-harness.d.ts +0 -0
  96. /package/testing/{selection-modal → modules/selection-modal}/selection-modal-search-result-harness-filters.d.ts +0 -0
  97. /package/testing/{selection-modal → modules/selection-modal}/selection-modal-search-result-harness.d.ts +0 -0
@@ -0,0 +1,181 @@
1
+ import { SkyOverlayHarness } from '@skyux/core/testing';
2
+ import { SkyAutocompleteHarness } from '../autocomplete/autocomplete-harness';
3
+ import { SkyAutocompleteInputHarness } from '../autocomplete/autocomplete-input-harness';
4
+ import { SkyLookupSearchResultHarness } from './lookup-search-result-harness';
5
+ import { SkyLookupSelectionsListHarness } from './lookup-selections-list-harness';
6
+ import { SkyLookupShowMorePickerHarness } from './lookup-show-more-picker-harness';
7
+ /**
8
+ * Harness for interacting with a lookup component in tests.
9
+ */
10
+ export class SkyLookupHarness extends SkyAutocompleteHarness {
11
+ /**
12
+ * Finds a standard lookup component, or a lookup component that is wrapped by an input box component.
13
+ * For input box implementations, we need to use the `.sky-input-box` selector since the `sky-lookup`
14
+ * element is removed from the DOM.
15
+ * @internal
16
+ */
17
+ static { this.hostSelector = 'sky-lookup,.sky-input-box'; }
18
+ #documentRootLocator = this.documentRootLocatorFactory();
19
+ #getAutocompleteHarness = this.locatorFor(SkyAutocompleteHarness);
20
+ #getInput = this.locatorFor(SkyAutocompleteInputHarness);
21
+ #getSelectionsListHarness = this.locatorFor(SkyLookupSelectionsListHarness);
22
+ #getWrapper = this.locatorFor('.sky-lookup');
23
+ /**
24
+ * Gets a `HarnessPredicate` that can be used to search for a
25
+ * `SkyLookupHarness` that meets certain criteria.
26
+ *
27
+ * These filters only work for standalone lookups. For lookups
28
+ * wrapped inside `sky-input-box`, place filters on the input box
29
+ * instead and query the datepicker using a `SkyInputBoxHarness`.
30
+ * For the input box implementation, see the code example.
31
+ */
32
+ static with(filters) {
33
+ return SkyLookupHarness.getDataSkyIdPredicate(filters);
34
+ }
35
+ /**
36
+ * Blurs the lookup input.
37
+ */
38
+ async blur() {
39
+ await super.blur();
40
+ }
41
+ /**
42
+ * Clears the lookup input value.
43
+ */
44
+ async clear() {
45
+ await super.clear();
46
+ }
47
+ /**
48
+ * Clicks the "Add" button on the search results panel.
49
+ */
50
+ async clickAddButton() {
51
+ await this.focus();
52
+ await super.clickAddButton();
53
+ }
54
+ /**
55
+ * Clicks the "Show more" button on the search results panel.
56
+ */
57
+ async clickShowMoreButton() {
58
+ await this.focus();
59
+ await super.clickShowMoreButton();
60
+ }
61
+ /**
62
+ * Dismisses the selections made with a multiselect lookup.
63
+ */
64
+ async dismissSelections() {
65
+ await (await this.#getSelectionsListHarness()).dismissSelections();
66
+ }
67
+ /**
68
+ * Enters text into the lookup input.
69
+ */
70
+ async enterText(value) {
71
+ await super.enterText(value);
72
+ }
73
+ /**
74
+ * Focuses the lookup input.
75
+ */
76
+ async focus() {
77
+ await super.focus();
78
+ }
79
+ /**
80
+ * Gets the lookup `aria-labelledby` value.
81
+ * @deprecated Don't use this property. It returns a value from a deprecated input that lookup no longer uses.
82
+ */
83
+ async getAriaLabelledby() {
84
+ return await super.getAriaLabelledby();
85
+ }
86
+ /**
87
+ * Returns lookup search result harnesses.
88
+ */
89
+ async getSearchResults(filters) {
90
+ const overlay = await this.#getOverlay();
91
+ if (!overlay) {
92
+ throw new Error('Unable to retrieve search results. The lookup is closed.');
93
+ }
94
+ const harnesses = await overlay.queryHarnesses(SkyLookupSearchResultHarness.with(filters || {}));
95
+ if (filters && harnesses.length === 0) {
96
+ // Stringify the regular expression so that it's readable in the console log.
97
+ if (filters.text instanceof RegExp) {
98
+ filters.text = filters.text.toString();
99
+ }
100
+ throw new Error(`Could not find search results matching filter(s): ${JSON.stringify(filters)}`);
101
+ }
102
+ return harnesses;
103
+ }
104
+ /**
105
+ * Returns the text content for each lookup search result.
106
+ */
107
+ async getSearchResultsText(filters) {
108
+ const harnesses = await this.getSearchResults(filters);
109
+ const text = [];
110
+ for (const harness of harnesses) {
111
+ text.push(await harness.getText());
112
+ }
113
+ return text;
114
+ }
115
+ /**
116
+ * Gets the "Show more" picker harness.
117
+ */
118
+ async getShowMorePicker() {
119
+ const pickerId = await (await (await this.#getAutocompleteHarness()).host()).getAttribute('data-sky-lookup-show-more-picker-id');
120
+ const defaultPicker = await this.#documentRootLocator.locatorForOptional(SkyLookupShowMorePickerHarness.with({ selector: `#${pickerId}` }))();
121
+ if (!defaultPicker) {
122
+ throw new Error('Cannot get the "Show more" picker because it is not open.');
123
+ }
124
+ return defaultPicker;
125
+ }
126
+ /**
127
+ * Gets a list of selections made with a multiselect lookup.
128
+ */
129
+ async getSelections() {
130
+ return await (await this.#getSelectionsListHarness()).getSelections();
131
+ }
132
+ /**
133
+ * Gets the text content of all selections made with a multiselect lookup.
134
+ */
135
+ async getSelectionsText() {
136
+ return await (await this.#getSelectionsListHarness()).getSelectionsText();
137
+ }
138
+ /**
139
+ * Gets the value of the lookup input.
140
+ */
141
+ async getValue() {
142
+ return await super.getValue();
143
+ }
144
+ /**
145
+ * Whether the lookup input is disabled.
146
+ */
147
+ async isDisabled() {
148
+ return await super.isDisabled();
149
+ }
150
+ /**
151
+ * Whether the lookup input is focused.
152
+ */
153
+ async isFocused() {
154
+ return await super.isFocused();
155
+ }
156
+ /**
157
+ * Whether the lookup allows for multiple selections.
158
+ */
159
+ async isMultiselect() {
160
+ return !(await (await this.#getWrapper()).hasClass('sky-lookup-single'));
161
+ }
162
+ /**
163
+ * Whether the lookup is open.
164
+ */
165
+ async isOpen() {
166
+ return await super.isOpen();
167
+ }
168
+ /**
169
+ * Selects a search result.
170
+ */
171
+ async selectSearchResult(filters) {
172
+ await super.selectSearchResult(filters);
173
+ }
174
+ async #getOverlay() {
175
+ const overlayId = await (await this.#getInput()).getAriaControls();
176
+ return overlayId
177
+ ? await this.#documentRootLocator.locatorForOptional(SkyOverlayHarness.with({ selector: `#${overlayId}` }))()
178
+ : null;
179
+ }
180
+ }
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL21vZHVsZXMvbG9va3VwL2xvb2t1cC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRXhELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBR3pGLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBRzlFLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5GOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLHNCQUFzQjtJQUMxRDs7Ozs7T0FLRzthQUNvQixpQkFBWSxHQUFHLDJCQUEyQixDQUFDO0lBRWxFLG9CQUFvQixHQUFHLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBRXpELHVCQUF1QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUVsRSxTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBRXpELHlCQUF5QixHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsOEJBQThCLENBQUMsQ0FBQztJQUU1RSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3Qzs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBVSxJQUFJLENBQ3pCLE9BQWdDO1FBRWhDLE9BQU8sZ0JBQWdCLENBQUMscUJBQXFCLENBQUMsT0FBTyxDQUFDLENB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S0FBSyxDQUFDLE1BQU07UUFDMUIsT0FBTyxNQUFNLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDYSxLQUFLLENBQUMsa0JBQWtCLENBQ3RDLE9BQTRDO1FBRTVDLE1BQU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRCxLQUFLLENBQUMsV0FBVztRQUNmLE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRW5FLE9BQU8sU0FBUztZQUNkLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxrQkFBa0IsQ0FDaEQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxFQUFFLElBQUksU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUN0RCxFQUFFO1lBQ0wsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHsgU2t5T3ZlcmxheUhhcm5lc3MgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlSGFybmVzcyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lBdXRvY29tcGxldGVJbnB1dEhhcm5lc3MgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWlucHV0LWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbG9va3VwLWhhcm5lc3MtZmlsdGVycyc7XG5pbXBvcnQgeyBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzIH0gZnJvbSAnLi9sb29rdXAtc2VhcmNoLXJlc3VsdC1oYXJuZXNzJztcbmltcG9ydCB7IFNreUxvb2t1cFNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9sb29rdXAtc2VhcmNoLXJlc3VsdC1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2VsZWN0aW9uSGFybmVzcyB9IGZyb20gJy4vbG9va3VwLXNlbGVjdGlvbi1oYXJuZXNzJztcbmltcG9ydCB7IFNreUxvb2t1cFNlbGVjdGlvbnNMaXN0SGFybmVzcyB9IGZyb20gJy4vbG9va3VwLXNlbGVjdGlvbnMtbGlzdC1oYXJuZXNzJztcbmltcG9ydCB7IFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzcyB9IGZyb20gJy4vbG9va3VwLXNob3ctbW9yZS1waWNrZXItaGFybmVzcyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIGxvb2t1cCBjb21wb25lbnQgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBIYXJuZXNzIGV4dGVuZHMgU2t5QXV0b2NvbXBsZXRlSGFybmVzcyB7XG4gIC8qKlxuICAgKiBGaW5kcyBhIHN0YW5kYXJkIGxvb2t1cCBjb21wb25lbnQsIG9yIGEgbG9va3VwIGNvbXBvbmVudCB0aGF0IGlzIHdyYXBwZWQgYnkgYW4gaW5wdXQgYm94IGNvbXBvbmVudC5cbiAgICogRm9yIGlucHV0IGJveCBpbXBsZW1lbnRhdGlvbnMsIHdlIG5lZWQgdG8gdXNlIHRoZSBgLnNreS1pbnB1dC1ib3hgIHNlbGVjdG9yIHNpbmNlIHRoZSBgc2t5LWxvb2t1cGBcbiAgICogZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIERPTS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIG92ZXJyaWRlIGhvc3RTZWxlY3RvciA9ICdza3ktbG9va3VwLC5za3ktaW5wdXQtYm94JztcblxuICAjZG9jdW1lbnRSb290TG9jYXRvciA9IHRoaXMuZG9jdW1lbnRSb290TG9jYXRvckZhY3RvcnkoKTtcblxuICAjZ2V0QXV0b2NvbXBsZXRlSGFybmVzcyA9IHRoaXMubG9jYXRvckZvcihTa3lBdXRvY29tcGxldGVIYXJuZXNzKTtcblxuICAjZ2V0SW5wdXQgPSB0aGlzLmxvY2F0b3JGb3IoU2t5QXV0b2NvbXBsZXRlSW5wdXRIYXJuZXNzKTtcblxuICAjZ2V0U2VsZWN0aW9uc0xpc3RIYXJuZXNzID0gdGhpcy5sb2NhdG9yRm9yKFNreUxvb2t1cFNlbGVjdGlvbnNMaXN0SGFybmVzcyk7XG5cbiAgI2dldFdyYXBwZXIgPSB0aGlzLmxvY2F0b3JGb3IoJy5za3ktbG9va3VwJyk7XG5cbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUxvb2t1cEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICpcbiAgICogVGhlc2UgZmlsdGVycyBvbmx5IHdvcmsgZm9yIHN0YW5kYWxvbmUgbG9va3Vwcy4gRm9yIGxvb2t1cHNcbiAgICogd3JhcHBlZCBpbnNpZGUgYHNreS1pbnB1dC1ib3hgLCBwbGFjZSBmaWx0ZXJzIG9uIHRoZSBpbnB1dCBib3hcbiAgICogaW5zdGVhZCBhbmQgcXVlcnkgdGhlIGRhdGVwaWNrZXIgdXNpbmcgYSBgU2t5SW5wdXRCb3hIYXJuZXNzYC5cbiAgICogRm9yIHRoZSBpbnB1dCBib3ggaW1wbGVtZW50YXRpb24sIHNlZSB0aGUgY29kZSBleGFtcGxlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvdmVycmlkZSB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUxvb2t1cEhhcm5lc3NGaWx0ZXJzLFxuICApOiBIYXJuZXNzUHJlZGljYXRlPFNreUxvb2t1cEhhcm5lc3M+IHtcbiAgICByZXR1cm4gU2t5TG9va3VwSGFybmVzcy5nZXREYXRhU2t5SWRQcmVkaWNhdGUoZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogQmx1cnMgdGhlIGxvb2t1cCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBibHVyKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLmJsdXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIGxvb2t1cCBpbnB1dCB2YWx1ZS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBjbGVhcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5jbGVhcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgXCJBZGRcIiBidXR0b24gb24gdGhlIHNlYXJjaCByZXN1bHRzIHBhbmVsLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGNsaWNrQWRkQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuZm9jdXMoKTtcbiAgICBhd2FpdCBzdXBlci5jbGlja0FkZEJ1dHRvbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgXCJTaG93IG1vcmVcIiBidXR0b24gb24gdGhlIHNlYXJjaCByZXN1bHRzIHBhbmVsLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGNsaWNrU2hvd01vcmVCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy5mb2N1cygpO1xuICAgIGF3YWl0IHN1cGVyLmNsaWNrU2hvd01vcmVCdXR0b24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEaXNtaXNzZXMgdGhlIHNlbGVjdGlvbnMgbWFkZSB3aXRoIGEgbXVsdGlzZWxlY3QgbG9va3VwLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGRpc21pc3NTZWxlY3Rpb25zKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRTZWxlY3Rpb25zTGlzdEhhcm5lc3MoKSkuZGlzbWlzc1NlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFbnRlcnMgdGV4dCBpbnRvIHRoZSBsb29rdXAgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgZW50ZXJUZXh0KHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5lbnRlclRleHQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvY3VzZXMgdGhlIGxvb2t1cCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBmb2N1cygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5mb2N1cygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGxvb2t1cCBgYXJpYS1sYWJlbGxlZGJ5YCB2YWx1ZS5cbiAgICogQGRlcHJlY2F0ZWQgRG9uJ3QgdXNlIHRoaXMgcHJvcGVydHkuIEl0IHJldHVybnMgYSB2YWx1ZSBmcm9tIGEgZGVwcmVjYXRlZCBpbnB1dCB0aGF0IGxvb2t1cCBubyBsb25nZXIgdXNlcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBnZXRBcmlhTGFiZWxsZWRieSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuZ2V0QXJpYUxhYmVsbGVkYnkoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGxvb2t1cCBzZWFyY2ggcmVzdWx0IGhhcm5lc3Nlcy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBnZXRTZWFyY2hSZXN1bHRzKFxuICAgIGZpbHRlcnM/OiBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTxTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzW10+IHtcbiAgICBjb25zdCBvdmVybGF5ID0gYXdhaXQgdGhpcy4jZ2V0T3ZlcmxheSgpO1xuXG4gICAgaWYgKCFvdmVybGF5KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmFibGUgdG8gcmV0cmlldmUgc2VhcmNoIHJlc3VsdHMuIFRoZSBsb29rdXAgaXMgY2xvc2VkLicsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGhhcm5lc3NlcyA9IGF3YWl0IG92ZXJsYXkucXVlcnlIYXJuZXNzZXMoXG4gICAgICBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzLndpdGgoZmlsdGVycyB8fCB7fSksXG4gICAgKTtcblxuICAgIGlmIChmaWx0ZXJzICYmIGhhcm5lc3Nlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIFN0cmluZ2lmeSB0aGUgcmVndWxhciBleHByZXNzaW9uIHNvIHRoYXQgaXQncyByZWFkYWJsZSBpbiB0aGUgY29uc29sZSBsb2cuXG4gICAgICBpZiAoZmlsdGVycy50ZXh0IGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAgIGZpbHRlcnMudGV4dCA9IGZpbHRlcnMudGV4dC50b1N0cmluZygpO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBDb3VsZCBub3QgZmluZCBzZWFyY2ggcmVzdWx0cyBtYXRjaGluZyBmaWx0ZXIocyk6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaGFybmVzc2VzO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHRleHQgY29udGVudCBmb3IgZWFjaCBsb29rdXAgc2VhcmNoIHJlc3VsdC5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBnZXRTZWFyY2hSZXN1bHRzVGV4dChcbiAgICBmaWx0ZXJzPzogU2t5TG9va3VwU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnMsXG4gICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBjb25zdCBoYXJuZXNzZXMgPSBhd2FpdCB0aGlzLmdldFNlYXJjaFJlc3VsdHMoZmlsdGVycyk7XG5cbiAgICBjb25zdCB0ZXh0OiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgaGFybmVzcyBvZiBoYXJuZXNzZXMpIHtcbiAgICAgIHRleHQucHVzaChhd2FpdCBoYXJuZXNzLmdldFRleHQoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRleHQ7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgXCJTaG93IG1vcmVcIiBwaWNrZXIgaGFybmVzcy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTaG93TW9yZVBpY2tlcigpOiBQcm9taXNlPFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzcz4ge1xuICAgIGNvbnN0IHBpY2tlcklkID0gYXdhaXQgKFxuICAgICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldEF1dG9jb21wbGV0ZUhhcm5lc3MoKSkuaG9zdCgpXG4gICAgKS5nZXRBdHRyaWJ1dGUoJ2RhdGEtc2t5LWxvb2t1cC1zaG93LW1vcmUtcGlja2VyLWlkJyk7XG5cbiAgICBjb25zdCBkZWZhdWx0UGlja2VyID0gYXdhaXQgdGhpcy4jZG9jdW1lbnRSb290TG9jYXRvci5sb2NhdG9yRm9yT3B0aW9uYWwoXG4gICAgICBTa3lMb29rdXBTaG93TW9yZVBpY2tlckhhcm5lc3Mud2l0aCh7IHNlbGVjdG9yOiBgIyR7cGlja2VySWR9YCB9KSxcbiAgICApKCk7XG5cbiAgICBpZiAoIWRlZmF1bHRQaWNrZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBnZXQgdGhlIFwiU2hvdyBtb3JlXCIgcGlja2VyIGJlY2F1c2UgaXQgaXMgbm90IG9wZW4uJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGRlZmF1bHRQaWNrZXI7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2Ygc2VsZWN0aW9ucyBtYWRlIHdpdGggYSBtdWx0aXNlbGVjdCBsb29rdXAuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZ2V0U2VsZWN0aW9ucygpOiBQcm9taXNlPFNreUxvb2t1cFNlbGVjdGlvbkhhcm5lc3NbXT4ge1xuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0U2VsZWN0aW9uc0xpc3RIYXJuZXNzKCkpLmdldFNlbGVjdGlvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSB0ZXh0IGNvbnRlbnQgb2YgYWxsIHNlbGVjdGlvbnMgbWFkZSB3aXRoIGEgbXVsdGlzZWxlY3QgbG9va3VwLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNlbGVjdGlvbnNUZXh0KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldFNlbGVjdGlvbnNMaXN0SGFybmVzcygpKS5nZXRTZWxlY3Rpb25zVGV4dCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHZhbHVlIG9mIHRoZSBsb29rdXAgaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgZ2V0VmFsdWUoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuZ2V0VmFsdWUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsb29rdXAgaW5wdXQgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgaXNEaXNhYmxlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuaXNEaXNhYmxlZCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxvb2t1cCBpbnB1dCBpcyBmb2N1c2VkLlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIGlzRm9jdXNlZCgpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuaXNGb2N1c2VkKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgbG9va3VwIGFsbG93cyBmb3IgbXVsdGlwbGUgc2VsZWN0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc011bHRpc2VsZWN0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhKGF3YWl0IChhd2FpdCB0aGlzLiNnZXRXcmFwcGVyKCkpLmhhc0NsYXNzKCdza3ktbG9va3VwLXNpbmdsZScpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsb29rdXAgaXMgb3Blbi5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBpc09wZW4oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmlzT3BlbigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYSBzZWFyY2ggcmVzdWx0LlxuICAgKi9cbiAgcHVibGljIG92ZXJyaWRlIGFzeW5jIHNlbGVjdFNlYXJjaFJlc3VsdChcbiAgICBmaWx0ZXJzOiBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVycyxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgc3VwZXIuc2VsZWN0U2VhcmNoUmVzdWx0KGZpbHRlcnMpO1xuICB9XG5cbiAgYXN5bmMgI2dldE92ZXJsYXkoKTogUHJvbWlzZTxTa3lPdmVybGF5SGFybmVzcyB8IG51bGw+IHtcbiAgICBjb25zdCBvdmVybGF5SWQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXJpYUNvbnRyb2xzKCk7XG5cbiAgICByZXR1cm4gb3ZlcmxheUlkXG4gICAgICA/IGF3YWl0IHRoaXMuI2RvY3VtZW50Um9vdExvY2F0b3IubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICAgICAgIFNreU92ZXJsYXlIYXJuZXNzLndpdGgoeyBzZWxlY3RvcjogYCMke292ZXJsYXlJZH1gIH0pLFxuICAgICAgICApKClcbiAgICAgIDogbnVsbDtcbiAgfVxufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlYXJjaC1yZXN1bHQtaGFybmVzcy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC90ZXN0aW5nL3NyYy9tb2R1bGVzL2xvb2t1cC9sb29rdXAtc2VhcmNoLXJlc3VsdC1oYXJuZXNzLWZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzYCBpbnN0YW5jZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLXNlYXJjaC1yZXN1bHQtaGFybmVzcy1maWx0ZXJzJztcblxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UsIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVyc1xuICBleHRlbmRzIFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { HarnessPredicate } from '@angular/cdk/testing';
2
+ import { SkyAutocompleteSearchResultHarness } from '../autocomplete/autocomplete-search-result-harness';
3
+ /**
4
+ * Harness for interacting with an autocomplete search result in tests.
5
+ */
6
+ export class SkyLookupSearchResultHarness extends SkyAutocompleteSearchResultHarness {
7
+ /**
8
+ * Gets a `HarnessPredicate` that can be used to search for a
9
+ * `SkyLookupSearchResultHarness` that meets certain criteria.
10
+ */
11
+ static with(filters) {
12
+ return new HarnessPredicate(SkyLookupSearchResultHarness, filters).addOption('textContent', filters.text, async (harness, text) => {
13
+ const searchResultText = await harness.getText();
14
+ return await HarnessPredicate.stringMatches(searchResultText, text);
15
+ });
16
+ }
17
+ /**
18
+ * Returns the value of the search result's descriptor property.
19
+ */
20
+ async getDescriptorValue() {
21
+ return await super.getDescriptorValue();
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlYXJjaC1yZXN1bHQtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvdGVzdGluZy9zcmMvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNlYXJjaC1yZXN1bHQtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsa0NBQWtDLEVBQUUsTUFBTSxvREFBb0QsQ0FBQztBQUl4Rzs7R0FFRztBQUNILE1BQU0sT0FBTyw0QkFBNkIsU0FBUSxrQ0FBa0M7SUFDbEY7OztPQUdHO0lBQ0ksTUFBTSxDQUFVLElBQUksQ0FDekIsT0FBNEM7UUFFNUMsT0FBTyxJQUFJLGdCQUFnQixDQUN6Qiw0QkFBNEIsRUFDNUIsT0FBTyxDQUNSLENBQUMsU0FBUyxDQUFDLGFBQWEsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUU7WUFDL0QsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNqRCxPQUFPLE1BQU0sZ0JBQWdCLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ2EsS0FBSyxDQUFDLGtCQUFrQjtRQUN0QyxPQUFPLE1BQU0sS0FBSyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDMUMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSGFybmVzc1ByZWRpY2F0ZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0SGFybmVzcyB9IGZyb20gJy4uL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUtc2VhcmNoLXJlc3VsdC1oYXJuZXNzJztcblxuaW1wb3J0IHsgU2t5TG9va3VwU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnMgfSBmcm9tICcuL2xvb2t1cC1zZWFyY2gtcmVzdWx0LWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhbiBhdXRvY29tcGxldGUgc2VhcmNoIHJlc3VsdCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreUxvb2t1cFNlYXJjaFJlc3VsdEhhcm5lc3MgZXh0ZW5kcyBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUxvb2t1cFNlYXJjaFJlc3VsdEhhcm5lc3NgIHRoYXQgbWVldHMgY2VydGFpbiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgb3ZlcnJpZGUgd2l0aChcbiAgICBmaWx0ZXJzOiBTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVycyxcbiAgKTogSGFybmVzc1ByZWRpY2F0ZTxTa3lMb29rdXBTZWFyY2hSZXN1bHRIYXJuZXNzPiB7XG4gICAgcmV0dXJuIG5ldyBIYXJuZXNzUHJlZGljYXRlKFxuICAgICAgU2t5TG9va3VwU2VhcmNoUmVzdWx0SGFybmVzcyxcbiAgICAgIGZpbHRlcnMsXG4gICAgKS5hZGRPcHRpb24oJ3RleHRDb250ZW50JywgZmlsdGVycy50ZXh0LCBhc3luYyAoaGFybmVzcywgdGV4dCkgPT4ge1xuICAgICAgY29uc3Qgc2VhcmNoUmVzdWx0VGV4dCA9IGF3YWl0IGhhcm5lc3MuZ2V0VGV4dCgpO1xuICAgICAgcmV0dXJuIGF3YWl0IEhhcm5lc3NQcmVkaWNhdGUuc3RyaW5nTWF0Y2hlcyhzZWFyY2hSZXN1bHRUZXh0LCB0ZXh0KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBvZiB0aGUgc2VhcmNoIHJlc3VsdCdzIGRlc2NyaXB0b3IgcHJvcGVydHkuXG4gICAqL1xuICBwdWJsaWMgb3ZlcnJpZGUgYXN5bmMgZ2V0RGVzY3JpcHRvclZhbHVlKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmdldERlc2NyaXB0b3JWYWx1ZSgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlbGVjdGlvbi1oYXJuZXNzLWZpbHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL21vZHVsZXMvbG9va3VwL2xvb2t1cC1zZWxlY3Rpb24taGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUb2tlbkhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMvdGVzdGluZyc7XG5cbi8qKlxuICogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBTa3lMb29rdXBTZWxlY3Rpb25IYXJuZXNzYCBpbnN0YW5jZXMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1pbnRlcmZhY2UsIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1vYmplY3QtdHlwZVxuZXhwb3J0IGludGVyZmFjZSBTa3lMb29rdXBTZWxlY3Rpb25IYXJuZXNzRmlsdGVyc1xuICBleHRlbmRzIFNreVRva2VuSGFybmVzc0ZpbHRlcnMge31cbiJdfQ==
@@ -0,0 +1,8 @@
1
+ import { SkyTokenHarness } from '@skyux/indicators/testing';
2
+ /**
3
+ * Harness for interacting with a multiselect lookup selection in tests.
4
+ * @internal
5
+ */
6
+ export class SkyLookupSelectionHarness extends SkyTokenHarness {
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlbGVjdGlvbi1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC90ZXN0aW5nL3NyYy9tb2R1bGVzL2xvb2t1cC9sb29rdXAtc2VsZWN0aW9uLWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyx5QkFBMEIsU0FBUSxlQUFlO0NBQUciLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lUb2tlbkhhcm5lc3MgfSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycy90ZXN0aW5nJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgbXVsdGlzZWxlY3QgbG9va3VwIHNlbGVjdGlvbiBpbiB0ZXN0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwU2VsZWN0aW9uSGFybmVzcyBleHRlbmRzIFNreVRva2VuSGFybmVzcyB7fVxuIl19
@@ -0,0 +1,26 @@
1
+ import { SkyTokensHarness } from '@skyux/indicators/testing';
2
+ /**
3
+ * Harness for interacting with multiselect lookup selections in tests.
4
+ * @internal
5
+ */
6
+ export class SkyLookupSelectionsListHarness extends SkyTokensHarness {
7
+ /**
8
+ * Gets a list of selections.
9
+ */
10
+ async getSelections() {
11
+ return await super.getTokens();
12
+ }
13
+ /**
14
+ * Dismisses the selections in the list.
15
+ */
16
+ async dismissSelections() {
17
+ await super.dismissTokens();
18
+ }
19
+ /**
20
+ * Gets the text content of all selections in the list.
21
+ */
22
+ async getSelectionsText() {
23
+ return await super.getTokensText();
24
+ }
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNlbGVjdGlvbnMtbGlzdC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC90ZXN0aW5nL3NyYy9tb2R1bGVzL2xvb2t1cC9sb29rdXAtc2VsZWN0aW9ucy1saXN0LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFJN0Q7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDhCQUErQixTQUFRLGdCQUFnQjtJQUNsRTs7T0FFRztJQUNJLEtBQUssQ0FBQyxhQUFhO1FBQ3hCLE9BQU8sTUFBTSxLQUFLLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixNQUFNLEtBQUssQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsaUJBQWlCO1FBQzVCLE9BQU8sTUFBTSxLQUFLLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckMsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5VG9rZW5zSGFybmVzcyB9IGZyb20gJ0Bza3l1eC9pbmRpY2F0b3JzL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBTZWxlY3Rpb25IYXJuZXNzIH0gZnJvbSAnLi9sb29rdXAtc2VsZWN0aW9uLWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggbXVsdGlzZWxlY3QgbG9va3VwIHNlbGVjdGlvbnMgaW4gdGVzdHMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNsYXNzIFNreUxvb2t1cFNlbGVjdGlvbnNMaXN0SGFybmVzcyBleHRlbmRzIFNreVRva2Vuc0hhcm5lc3Mge1xuICAvKipcbiAgICogR2V0cyBhIGxpc3Qgb2Ygc2VsZWN0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRTZWxlY3Rpb25zKCk6IFByb21pc2U8U2t5TG9va3VwU2VsZWN0aW9uSGFybmVzc1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmdldFRva2VucygpO1xuICB9XG5cbiAgLyoqXG4gICAqIERpc21pc3NlcyB0aGUgc2VsZWN0aW9ucyBpbiB0aGUgbGlzdC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaXNtaXNzU2VsZWN0aW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBzdXBlci5kaXNtaXNzVG9rZW5zKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdGV4dCBjb250ZW50IG9mIGFsbCBzZWxlY3Rpb25zIGluIHRoZSBsaXN0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNlbGVjdGlvbnNUZXh0KCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuZ2V0VG9rZW5zVGV4dCgpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1waWNrZXItaGFybmVzcy1maWx0ZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC90ZXN0aW5nL3NyYy9tb2R1bGVzL2xvb2t1cC9sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1oYXJuZXNzLWZpbHRlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VIYXJuZXNzRmlsdGVycyB9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgYFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzc2AgaW5zdGFuY2VzLlxuICogQGludGVybmFsXG4gKi9cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktaW50ZXJmYWNlLCBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktb2JqZWN0LXR5cGVcbmV4cG9ydCBpbnRlcmZhY2UgU2t5TG9va3VwU2hvd01vcmVQaWNrZXJIYXJuZXNzRmlsdGVyc1xuICAvLyBPbWl0dGluZyAnYW5jZXN0b3InLCBzaW5jZSBhbGwgd2UgY2FyZSBhYm91dCBpcyB0aGUgJ3NlbGVjdG9yJyBmaWx0ZXIsXG4gIC8vIHdoaWNoIGlzIHVzZWQgdG8gZmluZCBhIG1vZGFsIGluc3RhbmNlIGJ5IGl0cyBlbGVtZW50IElELlxuICBleHRlbmRzIE9taXQ8QmFzZUhhcm5lc3NGaWx0ZXJzLCAnYW5jZXN0b3InPiB7fVxuIl19
@@ -0,0 +1,28 @@
1
+ import { HarnessPredicate } from '@angular/cdk/testing';
2
+ import { SkySelectionModalHarness } from '../selection-modal/selection-modal-harness';
3
+ /**
4
+ * Harness for interacting with a lookup's "Show more" picker in tests.
5
+ * @internal
6
+ */
7
+ export class SkyLookupShowMorePickerHarness extends SkySelectionModalHarness {
8
+ /**
9
+ * Gets a `HarnessPredicate` that can be used to search for a
10
+ * `SkyLookupShowMorePickerHarness` that meets certain criteria.
11
+ */
12
+ static with(filters) {
13
+ return new HarnessPredicate(SkyLookupShowMorePickerHarness, filters);
14
+ }
15
+ /**
16
+ * Selects multiple search results based on a set of criteria.
17
+ */
18
+ async selectSearchResult(filters) {
19
+ await super.selectSearchResult(filters);
20
+ }
21
+ /**
22
+ * Gets a list of search results.
23
+ */
24
+ async getSearchResults(filters) {
25
+ return await super.getSearchResults(filters);
26
+ }
27
+ }
28
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1waWNrZXItaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvdGVzdGluZy9zcmMvbW9kdWxlcy9sb29rdXAvbG9va3VwLXNob3ctbW9yZS1waWNrZXItaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUV4RCxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSw0Q0FBNEMsQ0FBQztBQU10Rjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sOEJBQStCLFNBQVEsd0JBQXdCO0lBQzFFOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxJQUFJLENBQ2hCLE9BQThDO1FBRTlDLE9BQU8sSUFBSSxnQkFBZ0IsQ0FBQyw4QkFBOEIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQ7O09BRUc7SUFDYSxLQUFLLENBQUMsa0JBQWtCLENBQ3RDLE9BQTJEO1FBRTNELE1BQU0sS0FBSyxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNhLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEMsT0FBMkQ7UUFFM0QsT0FBTyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIYXJuZXNzUHJlZGljYXRlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuXG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbEhhcm5lc3MgfSBmcm9tICcuLi9zZWxlY3Rpb24tbW9kYWwvc2VsZWN0aW9uLW1vZGFsLWhhcm5lc3MnO1xuXG5pbXBvcnQgeyBTa3lMb29rdXBTaG93TW9yZVBpY2tlckhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1oYXJuZXNzLWZpbHRlcnMnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVQaWNrZXJTZWFyY2hSZXN1bHRIYXJuZXNzIH0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1zZWFyY2gtcmVzdWx0LWhhcm5lc3MnO1xuaW1wb3J0IHsgU2t5TG9va3VwU2hvd01vcmVQaWNrZXJTZWFyY2hSZXN1bHRIYXJuZXNzRmlsdGVycyB9IGZyb20gJy4vbG9va3VwLXNob3ctbW9yZS1waWNrZXItc2VhcmNoLXJlc3VsdC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBsb29rdXAncyBcIlNob3cgbW9yZVwiIHBpY2tlciBpbiB0ZXN0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwU2hvd01vcmVQaWNrZXJIYXJuZXNzIGV4dGVuZHMgU2t5U2VsZWN0aW9uTW9kYWxIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEdldHMgYSBgSGFybmVzc1ByZWRpY2F0ZWAgdGhhdCBjYW4gYmUgdXNlZCB0byBzZWFyY2ggZm9yIGFcbiAgICogYFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzc2AgdGhhdCBtZWV0cyBjZXJ0YWluIGNyaXRlcmlhLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aXRoKFxuICAgIGZpbHRlcnM6IFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5TG9va3VwU2hvd01vcmVQaWNrZXJIYXJuZXNzPiB7XG4gICAgcmV0dXJuIG5ldyBIYXJuZXNzUHJlZGljYXRlKFNreUxvb2t1cFNob3dNb3JlUGlja2VySGFybmVzcywgZmlsdGVycyk7XG4gIH1cblxuICAvKipcbiAgICogU2VsZWN0cyBtdWx0aXBsZSBzZWFyY2ggcmVzdWx0cyBiYXNlZCBvbiBhIHNldCBvZiBjcml0ZXJpYS5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBzZWxlY3RTZWFyY2hSZXN1bHQoXG4gICAgZmlsdGVycz86IFNreUxvb2t1cFNob3dNb3JlUGlja2VyU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnMsXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHN1cGVyLnNlbGVjdFNlYXJjaFJlc3VsdChmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgbGlzdCBvZiBzZWFyY2ggcmVzdWx0cy5cbiAgICovXG4gIHB1YmxpYyBvdmVycmlkZSBhc3luYyBnZXRTZWFyY2hSZXN1bHRzKFxuICAgIGZpbHRlcnM/OiBTa3lMb29rdXBTaG93TW9yZVBpY2tlclNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzLFxuICApOiBQcm9taXNlPFNreUxvb2t1cFNob3dNb3JlUGlja2VyU2VhcmNoUmVzdWx0SGFybmVzc1tdPiB7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmdldFNlYXJjaFJlc3VsdHMoZmlsdGVycyk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1waWNrZXItc2VhcmNoLXJlc3VsdC1oYXJuZXNzLWZpbHRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL21vZHVsZXMvbG9va3VwL2xvb2t1cC1zaG93LW1vcmUtcGlja2VyLXNlYXJjaC1yZXN1bHQtaGFybmVzcy1maWx0ZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3NlbGVjdGlvbi1tb2RhbC1zZWFyY2gtcmVzdWx0LWhhcm5lc3MtZmlsdGVycyc7XG5cbi8qKlxuICogQSBzZXQgb2YgY3JpdGVyaWEgdGhhdCBjYW4gYmUgdXNlZCB0byBmaWx0ZXIgYSBsaXN0IG9mIGBTa3lMb29rdXBTaG93TW9yZVBpY2tlclNlYXJjaFJlc3VsdEhhcm5lc3NgIGluc3RhbmNlcy5cbiAqIEBpbnRlcm5hbFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIFNreUxvb2t1cFNob3dNb3JlUGlja2VyU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnNcbiAgLy8gT21pdHRpbmcgJ3RpdGxlVGV4dCcgYW5kICdhbmNlc3Rvcicgc2luY2UgdGhleSBhcmUgbm90IHJlbGV2YW50IGZpbHRlcnMgZm9yIHRoZSBwaWNrZXIncyBzZWFyY2ggcmVzdWx0cy5cbiAgZXh0ZW5kcyBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzIHt9XG4iXX0=
@@ -0,0 +1,8 @@
1
+ import { SkySelectionModalSearchResultHarness } from '../selection-modal/selection-modal-search-result-harness';
2
+ /**
3
+ * Harness for interacting with a lookup's "Show more" picker search results in tests.
4
+ * @internal
5
+ */
6
+ export class SkyLookupShowMorePickerSearchResultHarness extends SkySelectionModalSearchResultHarness {
7
+ }
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLXNob3ctbW9yZS1waWNrZXItc2VhcmNoLXJlc3VsdC1oYXJuZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21wb25lbnRzL2xvb2t1cC90ZXN0aW5nL3NyYy9tb2R1bGVzL2xvb2t1cC9sb29rdXAtc2hvdy1tb3JlLXBpY2tlci1zZWFyY2gtcmVzdWx0LWhhcm5lc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLE1BQU0sMERBQTBELENBQUM7QUFFaEg7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLDBDQUEyQyxTQUFRLG9DQUFvQztDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5U2VsZWN0aW9uTW9kYWxTZWFyY2hSZXN1bHRIYXJuZXNzIH0gZnJvbSAnLi4vc2VsZWN0aW9uLW1vZGFsL3NlbGVjdGlvbi1tb2RhbC1zZWFyY2gtcmVzdWx0LWhhcm5lc3MnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBsb29rdXAncyBcIlNob3cgbW9yZVwiIHBpY2tlciBzZWFyY2ggcmVzdWx0cyBpbiB0ZXN0cy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwU2hvd01vcmVQaWNrZXJTZWFyY2hSZXN1bHRIYXJuZXNzIGV4dGVuZHMgU2t5U2VsZWN0aW9uTW9kYWxTZWFyY2hSZXN1bHRIYXJuZXNzIHt9XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhhcm5lc3MtZmlsdGVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tcG9uZW50cy9sb29rdXAvdGVzdGluZy9zcmMvbW9kdWxlcy9zZWFyY2gvc2VhcmNoLWhhcm5lc3MtZmlsdGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2t5SGFybmVzc0ZpbHRlcnMgfSBmcm9tICdAc2t5dXgvY29yZS90ZXN0aW5nJztcblxuLyoqXG4gKiBBIHNldCBvZiBjcml0ZXJpYSB0aGF0IGNhbiBiZSB1c2VkIHRvIGZpbHRlciBhIGxpc3Qgb2YgYFNreVNlYXJjaEhhcm5lc3NgIGluc3RhbmNlcy5cbiAqIEBpbnRlcm5hbFxuICovXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWludGVyZmFjZSwgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LW9iamVjdC10eXBlXG5leHBvcnQgaW50ZXJmYWNlIFNreVNlYXJjaEhhcm5lc3NGaWx0ZXJzIGV4dGVuZHMgU2t5SGFybmVzc0ZpbHRlcnMge31cbiJdfQ==
@@ -0,0 +1,143 @@
1
+ import { SkyComponentHarness } from '@skyux/core/testing';
2
+ /**
3
+ * Harness for interacting with a search component in tests.
4
+ */
5
+ export class SkySearchHarness extends SkyComponentHarness {
6
+ /**
7
+ * @internal
8
+ */
9
+ static { this.hostSelector = 'sky-search'; }
10
+ #getInput = this.locatorFor('input.sky-search-input');
11
+ #getClearButton = this.locatorFor('button.sky-search-btn-clear');
12
+ #getDismissButton = this.locatorForOptional('button.sky-search-btn-dismiss');
13
+ #getSubmitButton = this.locatorFor('button.sky-search-btn-apply');
14
+ #getOpenButton = this.locatorFor('button.sky-search-btn-open');
15
+ /**
16
+ * Gets a `HarnessPredicate` that can be used to search for a
17
+ * `SkySearchHarness` that meets certain criteria.
18
+ */
19
+ static with(filters) {
20
+ return this.getDataSkyIdPredicate(filters);
21
+ }
22
+ /**
23
+ * Blurs the search input.
24
+ */
25
+ async blur() {
26
+ await this.#assertIsExpanded('Failed to blur the search input.');
27
+ await (await this.#getInput()).blur();
28
+ }
29
+ /**
30
+ * Clears the search input.
31
+ */
32
+ async clear() {
33
+ await this.#assertIsExpanded('Failed to clear the search input.');
34
+ const input = await this.#getInput();
35
+ await input.focus();
36
+ await input.clear();
37
+ await this.clickSubmitButton();
38
+ }
39
+ /**
40
+ * Clicks the search input clear button.
41
+ */
42
+ async clickClearButton() {
43
+ await this.#assertIsExpanded('Failed to click clear button.');
44
+ await (await this.#getClearButton()).click();
45
+ }
46
+ /**
47
+ * Clicks search dismiss button to collapse search back to a button.
48
+ */
49
+ async clickDismissSearchButton() {
50
+ const button = await this.#getDismissButton();
51
+ if (!button) {
52
+ throw new Error('Cannot find dismiss search button. Is a collapsed search open?');
53
+ }
54
+ await button.click();
55
+ }
56
+ /**
57
+ * Clicks the search icon button that opens search input when it is collapsed.
58
+ */
59
+ async clickOpenSearchButton() {
60
+ const button = await this.#getOpenButton();
61
+ if (!(await this.isCollapsed())) {
62
+ throw new Error('Cannot click search open button as search is not collapsed');
63
+ }
64
+ await button.click();
65
+ }
66
+ /**
67
+ * Clicks the search submit button.
68
+ */
69
+ async clickSubmitButton() {
70
+ await this.#assertIsExpanded('Failed to click the submit button.');
71
+ await (await this.#getSubmitButton()).click();
72
+ }
73
+ /**
74
+ * Enters text into the search input and performs a search.
75
+ */
76
+ async enterText(value) {
77
+ await this.#assertIsExpanded('Failed to enter text into the search input.');
78
+ const input = await this.#getInput();
79
+ await input.clear();
80
+ await input.focus();
81
+ await input.sendKeys(value);
82
+ await this.clickSubmitButton();
83
+ }
84
+ /**
85
+ * Focuses the search input.
86
+ */
87
+ async focus() {
88
+ await this.#assertIsExpanded('Failed to focus the search input.');
89
+ await (await this.#getInput()).focus();
90
+ }
91
+ /**
92
+ * Gets the search input's `aria-label`.
93
+ */
94
+ async getAriaLabel() {
95
+ return await (await this.#getInput()).getAttribute('aria-label');
96
+ }
97
+ /**
98
+ * Gets the search's aria-labelledby.
99
+ */
100
+ async getAriaLabelledby() {
101
+ return await (await this.#getInput()).getAttribute('aria-labelledby');
102
+ }
103
+ /**
104
+ * Gets the value of the input's placeholder attribute.
105
+ */
106
+ async getPlaceholderText() {
107
+ await this.#assertIsExpanded('Failed to get the placeholder text.');
108
+ return await (await this.#getInput()).getAttribute('placeholder');
109
+ }
110
+ /**
111
+ * Gets the value of the search input.
112
+ */
113
+ async getValue() {
114
+ await this.#assertIsExpanded('Failed to get the value of the search input.');
115
+ return await (await this.#getInput()).getProperty('value');
116
+ }
117
+ /**
118
+ * Whether the search input is collapsed.
119
+ */
120
+ async isCollapsed() {
121
+ return ((await (await this.#getOpenButton()).getAttribute('hidden')) === null);
122
+ }
123
+ /**
124
+ * Whether the search input is disabled.
125
+ */
126
+ async isDisabled() {
127
+ const disabled = await (await this.#getInput()).getAttribute('disabled');
128
+ return disabled !== null;
129
+ }
130
+ /**
131
+ * Whether the search input is focused.
132
+ */
133
+ async isFocused() {
134
+ await this.#assertIsExpanded('Failed to get the search input focus status.');
135
+ return await (await this.#getInput()).isFocused();
136
+ }
137
+ async #assertIsExpanded(errorMessage) {
138
+ if (await this.isCollapsed()) {
139
+ throw new Error(`${errorMessage} Search is collapsed.`);
140
+ }
141
+ }
142
+ }
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL21vZHVsZXMvc2VhcmNoL3NlYXJjaC1oYXJuZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBSTFEOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGdCQUFpQixTQUFRLG1CQUFtQjtJQUN2RDs7T0FFRzthQUNXLGlCQUFZLEdBQUcsWUFBWSxDQUFDO0lBRTFDLFNBQVMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLENBQUM7SUFFdEQsZUFBZSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsNkJBQTZCLENBQUMsQ0FBQztJQUNqRSxpQkFBaUIsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsK0JBQStCLENBQUMsQ0FBQztJQUM3RSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFDbEUsY0FBYyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUUvRDs7O09BR0c7SUFDSSxNQUFNLENBQUMsSUFBSSxDQUNoQixPQUFnQztRQUVoQyxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsSUFBSTtRQUNmLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLGtDQUFrQyxDQUFDLENBQUM7UUFFakUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLEtBQUs7UUFDaEIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUVsRSxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNyQyxNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixNQUFNLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUNwQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxnQkFBZ0I7UUFDM0IsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsK0JBQStCLENBQUMsQ0FBQztRQUM5RCxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsd0JBQXdCO1FBQ25DLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFFOUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1osTUFBTSxJQUFJLEtBQUssQ0FDYixnRUFBZ0UsQ0FDakUsQ0FBQztRQUNKLENBQUM7UUFFRCxNQUFNLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUN2QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMscUJBQXFCO1FBQ2hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBRTNDLElBQUksQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLElBQUksS0FBSyxDQUNiLDREQUE0RCxDQUM3RCxDQUFDO1FBQ0osQ0FBQztRQUVELE1BQU0sTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxpQkFBaUI7UUFDNUIsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0NBQW9DLENBQUMsQ0FBQztRQUNuRSxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBYTtRQUNsQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyw2Q0FBNkMsQ0FBQyxDQUFDO1FBRTVFLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3JDLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3BCLE1BQU0sS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1QixNQUFNLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxLQUFLO1FBQ2hCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUFDLG1DQUFtQyxDQUFDLENBQUM7UUFFbEUsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsT0FBTyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGlCQUFpQjtRQUM1QixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3hFLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxrQkFBa0I7UUFDN0IsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUVwRSxPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsUUFBUTtRQUNuQixNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FDMUIsOENBQThDLENBQy9DLENBQUM7UUFFRixPQUFPLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsV0FBVztRQUN0QixPQUFPLENBQ0wsQ0FBQyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxJQUFJLENBQ3RFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsVUFBVTtRQUNyQixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekUsT0FBTyxRQUFRLEtBQUssSUFBSSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBQyxTQUFTO1FBQ3BCLE1BQU0sSUFBSSxDQUFDLGlCQUFpQixDQUMxQiw4Q0FBOEMsQ0FDL0MsQ0FBQztRQUVGLE9BQU8sTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7SUFDcEQsQ0FBQztJQUVELEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxZQUFvQjtRQUMxQyxJQUFJLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDN0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxHQUFHLFlBQVksdUJBQXVCLENBQUMsQ0FBQztRQUMxRCxDQUFDO0lBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhhcm5lc3NQcmVkaWNhdGUgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQgeyBTa3lDb21wb25lbnRIYXJuZXNzIH0gZnJvbSAnQHNreXV4L2NvcmUvdGVzdGluZyc7XG5cbmltcG9ydCB7IFNreVNlYXJjaEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9zZWFyY2gtaGFybmVzcy1maWx0ZXJzJztcblxuLyoqXG4gKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgc2VhcmNoIGNvbXBvbmVudCBpbiB0ZXN0cy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNreVNlYXJjaEhhcm5lc3MgZXh0ZW5kcyBTa3lDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnc2t5LXNlYXJjaCc7XG5cbiAgI2dldElucHV0ID0gdGhpcy5sb2NhdG9yRm9yKCdpbnB1dC5za3ktc2VhcmNoLWlucHV0Jyk7XG5cbiAgI2dldENsZWFyQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdidXR0b24uc2t5LXNlYXJjaC1idG4tY2xlYXInKTtcbiAgI2dldERpc21pc3NCdXR0b24gPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbCgnYnV0dG9uLnNreS1zZWFyY2gtYnRuLWRpc21pc3MnKTtcbiAgI2dldFN1Ym1pdEJ1dHRvbiA9IHRoaXMubG9jYXRvckZvcignYnV0dG9uLnNreS1zZWFyY2gtYnRuLWFwcGx5Jyk7XG4gICNnZXRPcGVuQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdidXR0b24uc2t5LXNlYXJjaC1idG4tb3BlbicpO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhXG4gICAqIGBTa3lTZWFyY2hIYXJuZXNzYCB0aGF0IG1lZXRzIGNlcnRhaW4gY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHdpdGgoXG4gICAgZmlsdGVyczogU2t5U2VhcmNoSGFybmVzc0ZpbHRlcnMsXG4gICk6IEhhcm5lc3NQcmVkaWNhdGU8U2t5U2VhcmNoSGFybmVzcz4ge1xuICAgIHJldHVybiB0aGlzLmdldERhdGFTa3lJZFByZWRpY2F0ZShmaWx0ZXJzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBCbHVycyB0aGUgc2VhcmNoIGlucHV0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGJsdXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy4jYXNzZXJ0SXNFeHBhbmRlZCgnRmFpbGVkIHRvIGJsdXIgdGhlIHNlYXJjaCBpbnB1dC4nKTtcblxuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5ibHVyKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXJzIHRoZSBzZWFyY2ggaW5wdXQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xlYXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgdGhpcy4jYXNzZXJ0SXNFeHBhbmRlZCgnRmFpbGVkIHRvIGNsZWFyIHRoZSBzZWFyY2ggaW5wdXQuJyk7XG5cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuI2dldElucHV0KCk7XG4gICAgYXdhaXQgaW5wdXQuZm9jdXMoKTtcbiAgICBhd2FpdCBpbnB1dC5jbGVhcigpO1xuICAgIGF3YWl0IHRoaXMuY2xpY2tTdWJtaXRCdXR0b24oKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIHNlYXJjaCBpbnB1dCBjbGVhciBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tDbGVhckJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLiNhc3NlcnRJc0V4cGFuZGVkKCdGYWlsZWQgdG8gY2xpY2sgY2xlYXIgYnV0dG9uLicpO1xuICAgIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRDbGVhckJ1dHRvbigpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyBzZWFyY2ggZGlzbWlzcyBidXR0b24gdG8gY29sbGFwc2Ugc2VhcmNoIGJhY2sgdG8gYSBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tEaXNtaXNzU2VhcmNoQnV0dG9uKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuI2dldERpc21pc3NCdXR0b24oKTtcblxuICAgIGlmICghYnV0dG9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgZmluZCBkaXNtaXNzIHNlYXJjaCBidXR0b24uIElzIGEgY29sbGFwc2VkIHNlYXJjaCBvcGVuPycsXG4gICAgICApO1xuICAgIH1cblxuICAgIGF3YWl0IGJ1dHRvbi5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIENsaWNrcyB0aGUgc2VhcmNoIGljb24gYnV0dG9uIHRoYXQgb3BlbnMgc2VhcmNoIGlucHV0IHdoZW4gaXQgaXMgY29sbGFwc2VkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNsaWNrT3BlblNlYXJjaEJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRPcGVuQnV0dG9uKCk7XG5cbiAgICBpZiAoIShhd2FpdCB0aGlzLmlzQ29sbGFwc2VkKCkpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDYW5ub3QgY2xpY2sgc2VhcmNoIG9wZW4gYnV0dG9uIGFzIHNlYXJjaCBpcyBub3QgY29sbGFwc2VkJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2tzIHRoZSBzZWFyY2ggc3VibWl0IGJ1dHRvbi5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGlja1N1Ym1pdEJ1dHRvbigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLiNhc3NlcnRJc0V4cGFuZGVkKCdGYWlsZWQgdG8gY2xpY2sgdGhlIHN1Ym1pdCBidXR0b24uJyk7XG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldFN1Ym1pdEJ1dHRvbigpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGVycyB0ZXh0IGludG8gdGhlIHNlYXJjaCBpbnB1dCBhbmQgcGVyZm9ybXMgYSBzZWFyY2guXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgZW50ZXJUZXh0KHZhbHVlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCB0aGlzLiNhc3NlcnRJc0V4cGFuZGVkKCdGYWlsZWQgdG8gZW50ZXIgdGV4dCBpbnRvIHRoZSBzZWFyY2ggaW5wdXQuJyk7XG5cbiAgICBjb25zdCBpbnB1dCA9IGF3YWl0IHRoaXMuI2dldElucHV0KCk7XG4gICAgYXdhaXQgaW5wdXQuY2xlYXIoKTtcbiAgICBhd2FpdCBpbnB1dC5mb2N1cygpO1xuICAgIGF3YWl0IGlucHV0LnNlbmRLZXlzKHZhbHVlKTtcbiAgICBhd2FpdCB0aGlzLmNsaWNrU3VibWl0QnV0dG9uKCk7XG4gIH1cblxuICAvKipcbiAgICogRm9jdXNlcyB0aGUgc2VhcmNoIGlucHV0LlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGZvY3VzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IHRoaXMuI2Fzc2VydElzRXhwYW5kZWQoJ0ZhaWxlZCB0byBmb2N1cyB0aGUgc2VhcmNoIGlucHV0LicpO1xuXG4gICAgYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmZvY3VzKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgc2VhcmNoIGlucHV0J3MgYGFyaWEtbGFiZWxgLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldEFyaWFMYWJlbCgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIHNlYXJjaCdzIGFyaWEtbGFiZWxsZWRieS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRBcmlhTGFiZWxsZWRieSgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbGxlZGJ5Jyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIGlucHV0J3MgcGxhY2Vob2xkZXIgYXR0cmlidXRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFBsYWNlaG9sZGVyVGV4dCgpOiBQcm9taXNlPHN0cmluZyB8IG51bGw+IHtcbiAgICBhd2FpdCB0aGlzLiNhc3NlcnRJc0V4cGFuZGVkKCdGYWlsZWQgdG8gZ2V0IHRoZSBwbGFjZWhvbGRlciB0ZXh0LicpO1xuXG4gICAgcmV0dXJuIGF3YWl0IChhd2FpdCB0aGlzLiNnZXRJbnB1dCgpKS5nZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBnZXRWYWx1ZSgpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgIGF3YWl0IHRoaXMuI2Fzc2VydElzRXhwYW5kZWQoXG4gICAgICAnRmFpbGVkIHRvIGdldCB0aGUgdmFsdWUgb2YgdGhlIHNlYXJjaCBpbnB1dC4nLFxuICAgICk7XG5cbiAgICByZXR1cm4gYXdhaXQgKGF3YWl0IHRoaXMuI2dldElucHV0KCkpLmdldFByb3BlcnR5KCd2YWx1ZScpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNlYXJjaCBpbnB1dCBpcyBjb2xsYXBzZWQuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaXNDb2xsYXBzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgcmV0dXJuIChcbiAgICAgIChhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0T3BlbkJ1dHRvbigpKS5nZXRBdHRyaWJ1dGUoJ2hpZGRlbicpKSA9PT0gbnVsbFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2VhcmNoIGlucHV0IGlzIGRpc2FibGVkLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGlzRGlzYWJsZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgZGlzYWJsZWQgPSBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuZ2V0QXR0cmlidXRlKCdkaXNhYmxlZCcpO1xuICAgIHJldHVybiBkaXNhYmxlZCAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBzZWFyY2ggaW5wdXQgaXMgZm9jdXNlZC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc0ZvY3VzZWQoKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgYXdhaXQgdGhpcy4jYXNzZXJ0SXNFeHBhbmRlZChcbiAgICAgICdGYWlsZWQgdG8gZ2V0IHRoZSBzZWFyY2ggaW5wdXQgZm9jdXMgc3RhdHVzLicsXG4gICAgKTtcblxuICAgIHJldHVybiBhd2FpdCAoYXdhaXQgdGhpcy4jZ2V0SW5wdXQoKSkuaXNGb2N1c2VkKCk7XG4gIH1cblxuICBhc3luYyAjYXNzZXJ0SXNFeHBhbmRlZChlcnJvck1lc3NhZ2U6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmIChhd2FpdCB0aGlzLmlzQ29sbGFwc2VkKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlcnJvck1lc3NhZ2V9IFNlYXJjaCBpcyBjb2xsYXBzZWQuYCk7XG4gICAgfVxuICB9XG59XG4iXX0=