@skyux/lookup 8.7.2 → 9.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (121) hide show
  1. package/documentation.json +244 -244
  2. package/esm2022/lib/modules/autocomplete/autocomplete-adapter.service.mjs +61 -0
  3. package/esm2022/lib/modules/autocomplete/autocomplete-input.directive.mjs +237 -0
  4. package/{esm2020 → esm2022}/lib/modules/autocomplete/autocomplete-search-async-disabled.pipe.mjs +4 -4
  5. package/esm2022/lib/modules/autocomplete/autocomplete.component.mjs +817 -0
  6. package/{esm2020 → esm2022}/lib/modules/autocomplete/autocomplete.module.mjs +27 -27
  7. package/esm2022/lib/modules/country-field/country-field.component.mjs +444 -0
  8. package/{esm2020 → esm2022}/lib/modules/country-field/country-field.module.mjs +19 -19
  9. package/{esm2020 → esm2022}/lib/modules/lookup/lookup-adapter.service.mjs +4 -4
  10. package/esm2022/lib/modules/lookup/lookup-autocomplete-adapter.mjs +114 -0
  11. package/esm2022/lib/modules/lookup/lookup-show-more-modal.component.mjs +270 -0
  12. package/{esm2020 → esm2022}/lib/modules/lookup/lookup.component.mjs +299 -280
  13. package/{esm2020 → esm2022}/lib/modules/lookup/lookup.module.mjs +37 -37
  14. package/esm2022/lib/modules/search/search-adapter.service.mjs +46 -0
  15. package/esm2022/lib/modules/search/search.component.mjs +285 -0
  16. package/{esm2020 → esm2022}/lib/modules/search/search.module.mjs +17 -17
  17. package/{esm2020 → esm2022}/lib/modules/selection-modal/selection-modal-item-selected.pipe.mjs +4 -4
  18. package/esm2022/lib/modules/selection-modal/selection-modal.component.mjs +201 -0
  19. package/{esm2020 → esm2022}/lib/modules/selection-modal/selection-modal.module.mjs +27 -27
  20. package/esm2022/lib/modules/selection-modal/selection-modal.service.mjs +89 -0
  21. package/esm2022/lib/modules/selection-modal/types/selection-modal-instance.mjs +45 -0
  22. package/esm2022/lib/modules/shared/sky-lookup-resources.module.mjs +71 -0
  23. package/esm2022/testing/autocomplete/autocomplete-harness.mjs +155 -0
  24. package/esm2022/testing/autocomplete/autocomplete-input-harness.mjs +63 -0
  25. package/esm2022/testing/autocomplete/autocomplete-search-result-harness.mjs +44 -0
  26. package/esm2022/testing/country-field/country-field-fixture.mjs +118 -0
  27. package/{esm2020 → esm2022}/testing/country-field/country-field-testing.module.mjs +5 -5
  28. package/esm2022/testing/lookup/lookup-harness.mjs +76 -0
  29. package/{esm2020 → esm2022}/testing/search/search-fixture.mjs +18 -19
  30. package/esm2022/testing/search/search-harness.mjs +80 -0
  31. package/{esm2020 → esm2022}/testing/search/search-testing.module.mjs +5 -5
  32. package/esm2022/testing/selection-modal/selection-modal-harness.mjs +122 -0
  33. package/{fesm2020 → fesm2022}/skyux-lookup-testing.mjs +171 -187
  34. package/{fesm2020 → fesm2022}/skyux-lookup-testing.mjs.map +1 -1
  35. package/fesm2022/skyux-lookup.mjs +3707 -0
  36. package/{fesm2015 → fesm2022}/skyux-lookup.mjs.map +1 -1
  37. package/lib/modules/autocomplete/autocomplete-input.directive.d.ts +1 -1
  38. package/lib/modules/autocomplete/autocomplete.component.d.ts +1 -1
  39. package/lib/modules/country-field/country-field.component.d.ts +1 -1
  40. package/lib/modules/lookup/lookup-autocomplete-adapter.d.ts +1 -1
  41. package/lib/modules/lookup/lookup.component.d.ts +1 -1
  42. package/lib/modules/search/search.component.d.ts +1 -1
  43. package/package.json +23 -31
  44. package/esm2020/lib/modules/autocomplete/autocomplete-adapter.service.mjs +0 -64
  45. package/esm2020/lib/modules/autocomplete/autocomplete-input.directive.mjs +0 -235
  46. package/esm2020/lib/modules/autocomplete/autocomplete.component.mjs +0 -775
  47. package/esm2020/lib/modules/country-field/country-field.component.mjs +0 -433
  48. package/esm2020/lib/modules/lookup/lookup-autocomplete-adapter.mjs +0 -115
  49. package/esm2020/lib/modules/lookup/lookup-show-more-modal.component.mjs +0 -271
  50. package/esm2020/lib/modules/search/search-adapter.service.mjs +0 -46
  51. package/esm2020/lib/modules/search/search.component.mjs +0 -279
  52. package/esm2020/lib/modules/selection-modal/selection-modal.component.mjs +0 -199
  53. package/esm2020/lib/modules/selection-modal/selection-modal.service.mjs +0 -92
  54. package/esm2020/lib/modules/selection-modal/types/selection-modal-instance.mjs +0 -48
  55. package/esm2020/lib/modules/shared/sky-lookup-resources.module.mjs +0 -71
  56. package/esm2020/testing/autocomplete/autocomplete-harness.mjs +0 -161
  57. package/esm2020/testing/autocomplete/autocomplete-input-harness.mjs +0 -63
  58. package/esm2020/testing/autocomplete/autocomplete-search-result-harness.mjs +0 -44
  59. package/esm2020/testing/country-field/country-field-fixture.mjs +0 -114
  60. package/esm2020/testing/lookup/lookup-harness.mjs +0 -82
  61. package/esm2020/testing/search/search-harness.mjs +0 -86
  62. package/esm2020/testing/selection-modal/selection-modal-harness.mjs +0 -128
  63. package/fesm2015/skyux-lookup-testing.mjs +0 -980
  64. package/fesm2015/skyux-lookup-testing.mjs.map +0 -1
  65. package/fesm2015/skyux-lookup.mjs +0 -3642
  66. package/fesm2020/skyux-lookup.mjs +0 -3625
  67. package/fesm2020/skyux-lookup.mjs.map +0 -1
  68. /package/{esm2020 → esm2022}/index.mjs +0 -0
  69. /package/{esm2020 → esm2022}/lib/modules/autocomplete/autocomplete-default-search-function.mjs +0 -0
  70. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-default-search-function-options.mjs +0 -0
  71. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-input-text-change.mjs +0 -0
  72. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-message-type.mjs +0 -0
  73. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-message.mjs +0 -0
  74. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-args.mjs +0 -0
  75. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-args.mjs +0 -0
  76. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-function.mjs +0 -0
  77. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-result-display-type.mjs +0 -0
  78. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-async-result.mjs +0 -0
  79. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-context.mjs +0 -0
  80. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-function-filter.mjs +0 -0
  81. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-function-response.mjs +0 -0
  82. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-search-function.mjs +0 -0
  83. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-selection-change.mjs +0 -0
  84. /package/{esm2020 → esm2022}/lib/modules/autocomplete/types/autocomplete-show-more-args.mjs +0 -0
  85. /package/{esm2020 → esm2022}/lib/modules/country-field/types/country-field-context-token.mjs +0 -0
  86. /package/{esm2020 → esm2022}/lib/modules/country-field/types/country-field-context.mjs +0 -0
  87. /package/{esm2020 → esm2022}/lib/modules/country-field/types/country.mjs +0 -0
  88. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-add-click-callback-args.mjs +0 -0
  89. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-add-click-event-args.mjs +0 -0
  90. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-select-mode-type.mjs +0 -0
  91. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-select-mode.mjs +0 -0
  92. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-config.mjs +0 -0
  93. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-custom-picker-context.mjs +0 -0
  94. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-custom-picker.mjs +0 -0
  95. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-native-picker-config.mjs +0 -0
  96. /package/{esm2020 → esm2022}/lib/modules/lookup/types/lookup-show-more-native-picker-context.mjs +0 -0
  97. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-add-click-callback-args.mjs +0 -0
  98. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-add-click-event-args.mjs +0 -0
  99. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-close-args.mjs +0 -0
  100. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-context.mjs +0 -0
  101. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-open-args.mjs +0 -0
  102. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-result.mjs +0 -0
  103. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-search-args.mjs +0 -0
  104. /package/{esm2020 → esm2022}/lib/modules/selection-modal/types/selection-modal-search-result.mjs +0 -0
  105. /package/{esm2020 → esm2022}/lib/modules/shared/sky-lookup-string-utils.mjs +0 -0
  106. /package/{esm2020 → esm2022}/skyux-lookup.mjs +0 -0
  107. /package/{esm2020 → esm2022}/testing/autocomplete/autocomplete-harness-filters.mjs +0 -0
  108. /package/{esm2020 → esm2022}/testing/autocomplete/autocomplete-search-result-harness-filters.mjs +0 -0
  109. /package/{esm2020 → esm2022}/testing/lookup/lookup-harness-filters.mjs +0 -0
  110. /package/{esm2020 → esm2022}/testing/lookup/lookup-selection-harness-filters.mjs +0 -0
  111. /package/{esm2020 → esm2022}/testing/lookup/lookup-selection-harness.mjs +0 -0
  112. /package/{esm2020 → esm2022}/testing/lookup/lookup-selections-list-harness.mjs +0 -0
  113. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-harness-filters.mjs +0 -0
  114. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-harness.mjs +0 -0
  115. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-search-result-harness-filters.mjs +0 -0
  116. /package/{esm2020 → esm2022}/testing/lookup/lookup-show-more-picker-search-result-harness.mjs +0 -0
  117. /package/{esm2020 → esm2022}/testing/public-api.mjs +0 -0
  118. /package/{esm2020 → esm2022}/testing/search/search-harness-filters.mjs +0 -0
  119. /package/{esm2020 → esm2022}/testing/selection-modal/selection-modal-search-result-harness-filters.mjs +0 -0
  120. /package/{esm2020 → esm2022}/testing/selection-modal/selection-modal-search-result-harness.mjs +0 -0
  121. /package/{esm2020 → esm2022}/testing/skyux-lookup-testing.mjs +0 -0
@@ -1,128 +0,0 @@
1
- var _SkySelectionModalHarness_getCancelButton, _SkySelectionModalHarness_getClearAllButton, _SkySelectionModalHarness_getInfiniteScroll, _SkySelectionModalHarness_getSaveButton, _SkySelectionModalHarness_getSearchHarness, _SkySelectionModalHarness_getSelectAllButton, _SkySelectionModalHarness_getAddButton;
2
- import { __classPrivateFieldGet } from "tslib";
3
- import { ComponentHarness } from '@angular/cdk/testing';
4
- import { SkyInfiniteScrollHarness, SkyRepeaterItemHarness, } from '@skyux/lists/testing';
5
- import { SkySearchHarness } from '../search/search-harness';
6
- /**
7
- * Harness for interacting with a selection modal in tests.
8
- */
9
- export class SkySelectionModalHarness extends ComponentHarness {
10
- constructor() {
11
- super(...arguments);
12
- _SkySelectionModalHarness_getCancelButton.set(this, this.locatorFor('button.sky-lookup-show-more-modal-close'));
13
- _SkySelectionModalHarness_getClearAllButton.set(this, this.locatorForOptional('button.sky-lookup-show-more-modal-clear-all-btn'));
14
- _SkySelectionModalHarness_getInfiniteScroll.set(this, this.locatorFor(SkyInfiniteScrollHarness));
15
- _SkySelectionModalHarness_getSaveButton.set(this, this.locatorFor('button.sky-lookup-show-more-modal-save'));
16
- _SkySelectionModalHarness_getSearchHarness.set(this, this.locatorFor(SkySearchHarness));
17
- _SkySelectionModalHarness_getSelectAllButton.set(this, this.locatorForOptional('button.sky-lookup-show-more-modal-select-all-btn'));
18
- _SkySelectionModalHarness_getAddButton.set(this, this.locatorForOptional('button.sky-lookup-show-more-modal-add'));
19
- }
20
- /**
21
- * Clears the text of the search input.
22
- */
23
- async clearSearchText() {
24
- return (await __classPrivateFieldGet(this, _SkySelectionModalHarness_getSearchHarness, "f").call(this)).clear();
25
- }
26
- /**
27
- * Enters text into the search input and performs a search.
28
- */
29
- async enterSearchText(value) {
30
- return (await __classPrivateFieldGet(this, _SkySelectionModalHarness_getSearchHarness, "f").call(this)).enterText(value);
31
- }
32
- /**
33
- * Selects multiple search results based on a set of criteria.
34
- */
35
- async selectSearchResult(filters) {
36
- const harnesses = await this.getSearchResults(filters);
37
- if (await this.isMultiselect()) {
38
- for (const harness of harnesses) {
39
- await harness.select();
40
- }
41
- }
42
- else {
43
- // Click on the item directly because we've added a custom click event in the picker's template.
44
- await (await harnesses[0].host()).click();
45
- }
46
- }
47
- /**
48
- * Saves any selections made and closes the modal.
49
- */
50
- async saveAndClose() {
51
- return (await __classPrivateFieldGet(this, _SkySelectionModalHarness_getSaveButton, "f").call(this)).click();
52
- }
53
- /**
54
- * Closes the picker without saving any selections made.
55
- */
56
- async cancel() {
57
- return (await __classPrivateFieldGet(this, _SkySelectionModalHarness_getCancelButton, "f").call(this)).click();
58
- }
59
- /**
60
- * Gets a list of search results.
61
- */
62
- async getSearchResults(filters) {
63
- const pickerId = (await (await this.host()).getAttribute('id'));
64
- const harnesses = await this.locatorForAll(SkyRepeaterItemHarness.with({
65
- ...(filters || {}),
66
- ancestor: `#${pickerId}`,
67
- }))();
68
- if (filters && harnesses.length === 0) {
69
- throw new Error(`Could not find search results in the picker matching filter(s): ${JSON.stringify(filters)}`);
70
- }
71
- return harnesses;
72
- }
73
- /**
74
- * Clears all selections made.
75
- */
76
- async clearAll() {
77
- const button = await __classPrivateFieldGet(this, _SkySelectionModalHarness_getClearAllButton, "f").call(this);
78
- if (!button) {
79
- throw new Error('Could not clear all selections because the "Clear all" button could not be found.');
80
- }
81
- await button.click();
82
- }
83
- /**
84
- * Whether the selection modal is configured to allow multiple selections.
85
- */
86
- async isMultiselect() {
87
- return !(await (await this.host()).hasClass('sky-lookup-show-more-modal-single'));
88
- }
89
- /**
90
- * Selects all search results.
91
- */
92
- async selectAll() {
93
- const button = await __classPrivateFieldGet(this, _SkySelectionModalHarness_getSelectAllButton, "f").call(this);
94
- if (!button) {
95
- throw new Error('Could not select all selections because the "Select all" button could not be found.');
96
- }
97
- await button.click();
98
- }
99
- /**
100
- * Loads more results in the picker.
101
- */
102
- async loadMore() {
103
- return (await __classPrivateFieldGet(this, _SkySelectionModalHarness_getInfiniteScroll, "f").call(this)).loadMore();
104
- }
105
- /**
106
- * Whether the selection modal is configured to show the add button.
107
- */
108
- async hasAddButton() {
109
- const button = await __classPrivateFieldGet(this, _SkySelectionModalHarness_getAddButton, "f").call(this);
110
- return !!button;
111
- }
112
- /**
113
- * Clicks the add button.
114
- */
115
- async clickAddButton() {
116
- const button = await __classPrivateFieldGet(this, _SkySelectionModalHarness_getAddButton, "f").call(this);
117
- if (!button) {
118
- throw new Error('Could not click the add button because the button could not be found.');
119
- }
120
- await button.click();
121
- }
122
- }
123
- _SkySelectionModalHarness_getCancelButton = new WeakMap(), _SkySelectionModalHarness_getClearAllButton = new WeakMap(), _SkySelectionModalHarness_getInfiniteScroll = new WeakMap(), _SkySelectionModalHarness_getSaveButton = new WeakMap(), _SkySelectionModalHarness_getSearchHarness = new WeakMap(), _SkySelectionModalHarness_getSelectAllButton = new WeakMap(), _SkySelectionModalHarness_getAddButton = new WeakMap();
124
- /**
125
- * @internal
126
- */
127
- SkySelectionModalHarness.hostSelector = '.sky-lookup-show-more-modal';
128
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLW1vZGFsLWhhcm5lc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbXBvbmVudHMvbG9va3VwL3Rlc3Rpbmcvc3JjL3NlbGVjdGlvbi1tb2RhbC9zZWxlY3Rpb24tbW9kYWwtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3hELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsc0JBQXNCLEdBQ3ZCLE1BQU0sc0JBQXNCLENBQUM7QUFFOUIsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFLNUQ7O0dBRUc7QUFDSCxNQUFNLE9BQU8sd0JBQXlCLFNBQVEsZ0JBQWdCO0lBQTlEOztRQU1FLG9EQUFtQixJQUFJLENBQUMsVUFBVSxDQUFDLHlDQUF5QyxDQUFDLEVBQUM7UUFFOUUsc0RBQXFCLElBQUksQ0FBQyxrQkFBa0IsQ0FDMUMsaURBQWlELENBQ2xELEVBQUM7UUFFRixzREFBcUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsQ0FBQyxFQUFDO1FBRS9ELGtEQUFpQixJQUFJLENBQUMsVUFBVSxDQUFDLHdDQUF3QyxDQUFDLEVBQUM7UUFFM0UscURBQW9CLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBQztRQUV0RCx1REFBc0IsSUFBSSxDQUFDLGtCQUFrQixDQUMzQyxrREFBa0QsQ0FDbkQsRUFBQztRQUVGLGlEQUFnQixJQUFJLENBQUMsa0JBQWtCLENBQ3JDLHVDQUF1QyxDQUN4QyxFQUFDO0lBMklKLENBQUM7SUF6SUM7O09BRUc7SUFDSSxLQUFLLENBQUMsZUFBZTtRQUMxQixPQUFPLENBQUMsTUFBTSx1QkFBQSxJQUFJLGtEQUFrQixNQUF0QixJQUFJLENBQW9CLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNsRCxDQUFDO0lB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SyxDQUFDLFFBQVE7UUFDbkIsT0FBTyxDQUFDLE1BQU0sdUJBQUEsSUFBSSxtREFBbUIsTUFBdkIsSUFBSSxDQUFxQixDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLFlBQVk7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDhDQUFjLE1BQWxCLElBQUksQ0FBZ0IsQ0FBQztRQUMxQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksS0FBSyxDQUFDLGNBQWM7UUFDekIsTUFBTSxNQUFNLEdBQUcsTUFBTSx1QkFBQSxJQUFJLDhDQUFjLE1BQWxCLElBQUksQ0FBZ0IsQ0FBQztRQUMxQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1gsTUFBTSxJQUFJLEtBQUssQ0FDYix1RUFBdUUsQ0FDeEUsQ0FBQztTQUNIO1FBRUQsTUFBTSxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDdkIsQ0FBQzs7O0FBaktEOztHQUVHO0FBQ1cscUNBQVksR0FBRyw2QkFBNkIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudEhhcm5lc3MgfSBmcm9tICdAYW5ndWxhci9jZGsvdGVzdGluZyc7XG5pbXBvcnQge1xuICBTa3lJbmZpbml0ZVNjcm9sbEhhcm5lc3MsXG4gIFNreVJlcGVhdGVySXRlbUhhcm5lc3MsXG59IGZyb20gJ0Bza3l1eC9saXN0cy90ZXN0aW5nJztcblxuaW1wb3J0IHsgU2t5U2VhcmNoSGFybmVzcyB9IGZyb20gJy4uL3NlYXJjaC9zZWFyY2gtaGFybmVzcyc7XG5cbmltcG9ydCB7IFNreVNlbGVjdGlvbk1vZGFsU2VhcmNoUmVzdWx0SGFybmVzcyB9IGZyb20gJy4vc2VsZWN0aW9uLW1vZGFsLXNlYXJjaC1yZXN1bHQtaGFybmVzcyc7XG5pbXBvcnQgeyBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzIH0gZnJvbSAnLi9zZWxlY3Rpb24tbW9kYWwtc2VhcmNoLXJlc3VsdC1oYXJuZXNzLWZpbHRlcnMnO1xuXG4vKipcbiAqIEhhcm5lc3MgZm9yIGludGVyYWN0aW5nIHdpdGggYSBzZWxlY3Rpb24gbW9kYWwgaW4gdGVzdHMuXG4gKi9cbmV4cG9ydCBjbGFzcyBTa3lTZWxlY3Rpb25Nb2RhbEhhcm5lc3MgZXh0ZW5kcyBDb21wb25lbnRIYXJuZXNzIHtcbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnLnNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsJztcblxuICAjZ2V0Q2FuY2VsQnV0dG9uID0gdGhpcy5sb2NhdG9yRm9yKCdidXR0b24uc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtY2xvc2UnKTtcblxuICAjZ2V0Q2xlYXJBbGxCdXR0b24gPSB0aGlzLmxvY2F0b3JGb3JPcHRpb25hbChcbiAgICAnYnV0dG9uLnNreS1sb29rdXAtc2hvdy1tb3JlLW1vZGFsLWNsZWFyLWFsbC1idG4nXG4gICk7XG5cbiAgI2dldEluZmluaXRlU2Nyb2xsID0gdGhpcy5sb2NhdG9yRm9yKFNreUluZmluaXRlU2Nyb2xsSGFybmVzcyk7XG5cbiAgI2dldFNhdmVCdXR0b24gPSB0aGlzLmxvY2F0b3JGb3IoJ2J1dHRvbi5za3ktbG9va3VwLXNob3ctbW9yZS1tb2RhbC1zYXZlJyk7XG5cbiAgI2dldFNlYXJjaEhhcm5lc3MgPSB0aGlzLmxvY2F0b3JGb3IoU2t5U2VhcmNoSGFybmVzcyk7XG5cbiAgI2dldFNlbGVjdEFsbEJ1dHRvbiA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICdidXR0b24uc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtc2VsZWN0LWFsbC1idG4nXG4gICk7XG5cbiAgI2dldEFkZEJ1dHRvbiA9IHRoaXMubG9jYXRvckZvck9wdGlvbmFsKFxuICAgICdidXR0b24uc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtYWRkJ1xuICApO1xuXG4gIC8qKlxuICAgKiBDbGVhcnMgdGhlIHRleHQgb2YgdGhlIHNlYXJjaCBpbnB1dC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGVhclNlYXJjaFRleHQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRTZWFyY2hIYXJuZXNzKCkpLmNsZWFyKCk7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXJzIHRleHQgaW50byB0aGUgc2VhcmNoIGlucHV0IGFuZCBwZXJmb3JtcyBhIHNlYXJjaC5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBlbnRlclNlYXJjaFRleHQodmFsdWU6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHJldHVybiAoYXdhaXQgdGhpcy4jZ2V0U2VhcmNoSGFybmVzcygpKS5lbnRlclRleHQodmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgbXVsdGlwbGUgc2VhcmNoIHJlc3VsdHMgYmFzZWQgb24gYSBzZXQgb2YgY3JpdGVyaWEuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgc2VsZWN0U2VhcmNoUmVzdWx0KFxuICAgIGZpbHRlcnM/OiBTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdEhhcm5lc3NGaWx0ZXJzXG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGhhcm5lc3NlcyA9IGF3YWl0IHRoaXMuZ2V0U2VhcmNoUmVzdWx0cyhmaWx0ZXJzKTtcblxuICAgIGlmIChhd2FpdCB0aGlzLmlzTXVsdGlzZWxlY3QoKSkge1xuICAgICAgZm9yIChjb25zdCBoYXJuZXNzIG9mIGhhcm5lc3Nlcykge1xuICAgICAgICBhd2FpdCBoYXJuZXNzLnNlbGVjdCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDbGljayBvbiB0aGUgaXRlbSBkaXJlY3RseSBiZWNhdXNlIHdlJ3ZlIGFkZGVkIGEgY3VzdG9tIGNsaWNrIGV2ZW50IGluIHRoZSBwaWNrZXIncyB0ZW1wbGF0ZS5cbiAgICAgIGF3YWl0IChhd2FpdCBoYXJuZXNzZXNbMF0uaG9zdCgpKS5jbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTYXZlcyBhbnkgc2VsZWN0aW9ucyBtYWRlIGFuZCBjbG9zZXMgdGhlIG1vZGFsLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNhdmVBbmRDbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldFNhdmVCdXR0b24oKSkuY2xpY2soKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbG9zZXMgdGhlIHBpY2tlciB3aXRob3V0IHNhdmluZyBhbnkgc2VsZWN0aW9ucyBtYWRlLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGNhbmNlbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gKGF3YWl0IHRoaXMuI2dldENhbmNlbEJ1dHRvbigpKS5jbGljaygpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYSBsaXN0IG9mIHNlYXJjaCByZXN1bHRzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIGdldFNlYXJjaFJlc3VsdHMoXG4gICAgZmlsdGVycz86IFNreVNlbGVjdGlvbk1vZGFsU2VhcmNoUmVzdWx0SGFybmVzc0ZpbHRlcnNcbiAgKTogUHJvbWlzZTxTa3lTZWxlY3Rpb25Nb2RhbFNlYXJjaFJlc3VsdEhhcm5lc3NbXT4ge1xuICAgIGNvbnN0IHBpY2tlcklkID0gKGF3YWl0IChhd2FpdCB0aGlzLmhvc3QoKSkuZ2V0QXR0cmlidXRlKCdpZCcpKSBhcyBzdHJpbmc7XG5cbiAgICBjb25zdCBoYXJuZXNzZXMgPSBhd2FpdCB0aGlzLmxvY2F0b3JGb3JBbGwoXG4gICAgICBTa3lSZXBlYXRlckl0ZW1IYXJuZXNzLndpdGgoe1xuICAgICAgICAuLi4oZmlsdGVycyB8fCB7fSksXG4gICAgICAgIGFuY2VzdG9yOiBgIyR7cGlja2VySWR9YCxcbiAgICAgIH0pXG4gICAgKSgpO1xuXG4gICAgaWYgKGZpbHRlcnMgJiYgaGFybmVzc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgQ291bGQgbm90IGZpbmQgc2VhcmNoIHJlc3VsdHMgaW4gdGhlIHBpY2tlciBtYXRjaGluZyBmaWx0ZXIocyk6ICR7SlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgZmlsdGVyc1xuICAgICAgICApfWBcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhhcm5lc3NlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGVhcnMgYWxsIHNlbGVjdGlvbnMgbWFkZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBjbGVhckFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRDbGVhckFsbEJ1dHRvbigpO1xuICAgIGlmICghYnV0dG9uKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdDb3VsZCBub3QgY2xlYXIgYWxsIHNlbGVjdGlvbnMgYmVjYXVzZSB0aGUgXCJDbGVhciBhbGxcIiBidXR0b24gY291bGQgbm90IGJlIGZvdW5kLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgc2VsZWN0aW9uIG1vZGFsIGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgbXVsdGlwbGUgc2VsZWN0aW9ucy5cbiAgICovXG4gIHB1YmxpYyBhc3luYyBpc011bHRpc2VsZWN0KCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHJldHVybiAhKGF3YWl0IChcbiAgICAgIGF3YWl0IHRoaXMuaG9zdCgpXG4gICAgKS5oYXNDbGFzcygnc2t5LWxvb2t1cC1zaG93LW1vcmUtbW9kYWwtc2luZ2xlJykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbGVjdHMgYWxsIHNlYXJjaCByZXN1bHRzLlxuICAgKi9cbiAgcHVibGljIGFzeW5jIHNlbGVjdEFsbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidXR0b24gPSBhd2FpdCB0aGlzLiNnZXRTZWxlY3RBbGxCdXR0b24oKTtcbiAgICBpZiAoIWJ1dHRvbikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ291bGQgbm90IHNlbGVjdCBhbGwgc2VsZWN0aW9ucyBiZWNhdXNlIHRoZSBcIlNlbGVjdCBhbGxcIiBidXR0b24gY291bGQgbm90IGJlIGZvdW5kLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgbW9yZSByZXN1bHRzIGluIHRoZSBwaWNrZXIuXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgbG9hZE1vcmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIChhd2FpdCB0aGlzLiNnZXRJbmZpbml0ZVNjcm9sbCgpKS5sb2FkTW9yZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHNlbGVjdGlvbiBtb2RhbCBpcyBjb25maWd1cmVkIHRvIHNob3cgdGhlIGFkZCBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgaGFzQWRkQnV0dG9uKCk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGF3YWl0IHRoaXMuI2dldEFkZEJ1dHRvbigpO1xuICAgIHJldHVybiAhIWJ1dHRvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBDbGlja3MgdGhlIGFkZCBidXR0b24uXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY2xpY2tBZGRCdXR0b24oKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYnV0dG9uID0gYXdhaXQgdGhpcy4jZ2V0QWRkQnV0dG9uKCk7XG4gICAgaWYgKCFidXR0b24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0NvdWxkIG5vdCBjbGljayB0aGUgYWRkIGJ1dHRvbiBiZWNhdXNlIHRoZSBidXR0b24gY291bGQgbm90IGJlIGZvdW5kLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgYXdhaXQgYnV0dG9uLmNsaWNrKCk7XG4gIH1cbn1cbiJdfQ==