@internetarchive/collection-browser 3.4.1-alpha-webdev7761.2 → 3.4.1-alpha-webdev7761.4

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 (208) hide show
  1. package/dist/src/app-root.js +19 -28
  2. package/dist/src/app-root.js.map +1 -1
  3. package/dist/src/collection-browser.d.ts +14 -10
  4. package/dist/src/collection-browser.js +870 -886
  5. package/dist/src/collection-browser.js.map +1 -1
  6. package/dist/src/collection-facets/facet-row.js +3 -4
  7. package/dist/src/collection-facets/facet-row.js.map +1 -1
  8. package/dist/src/collection-facets/models.js.map +1 -1
  9. package/dist/src/collection-facets/more-facets-content.js +145 -156
  10. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  11. package/dist/src/collection-facets/more-facets-pagination.js +6 -10
  12. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  13. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +16 -21
  14. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -1
  15. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +7 -10
  16. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  17. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +3 -2
  18. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  19. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +9 -11
  20. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  21. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +7 -7
  22. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  23. package/dist/src/collection-facets/toggle-switch.js +4 -6
  24. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  25. package/dist/src/collection-facets.js +34 -50
  26. package/dist/src/collection-facets.js.map +1 -1
  27. package/dist/src/combo-box/caret-closed.js +5 -11
  28. package/dist/src/combo-box/caret-closed.js.map +1 -1
  29. package/dist/src/combo-box/caret-open.js +5 -11
  30. package/dist/src/combo-box/caret-open.js.map +1 -1
  31. package/dist/src/combo-box/clear.d.ts +2 -0
  32. package/dist/src/combo-box/clear.js +11 -0
  33. package/dist/src/combo-box/clear.js.map +1 -0
  34. package/dist/src/combo-box/ia-combo-box.d.ts +40 -9
  35. package/dist/src/combo-box/ia-combo-box.js +363 -272
  36. package/dist/src/combo-box/ia-combo-box.js.map +1 -1
  37. package/dist/src/combo-box/models.d.ts +14 -0
  38. package/dist/src/combo-box/models.js +32 -1
  39. package/dist/src/combo-box/models.js.map +1 -1
  40. package/dist/src/data-source/collection-browser-data-source.js +35 -47
  41. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  42. package/dist/src/empty-placeholder.js +19 -18
  43. package/dist/src/empty-placeholder.js.map +1 -1
  44. package/dist/src/expanded-date-picker.js +6 -10
  45. package/dist/src/expanded-date-picker.js.map +1 -1
  46. package/dist/src/language-code-handler/language-code-handler.js +2 -2
  47. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  48. package/dist/src/manage/manage-bar.js +86 -92
  49. package/dist/src/manage/manage-bar.js.map +1 -1
  50. package/dist/src/manage/remove-items-modal-content.js +2 -2
  51. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  52. package/dist/src/models.js +36 -40
  53. package/dist/src/models.js.map +1 -1
  54. package/dist/src/restoration-state-handler.js +9 -10
  55. package/dist/src/restoration-state-handler.js.map +1 -1
  56. package/dist/src/sort-filter-bar/alpha-bar.js +9 -14
  57. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  58. package/dist/src/sort-filter-bar/sort-filter-bar.js +14 -24
  59. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  60. package/dist/src/tiles/base-tile-component.js +1 -2
  61. package/dist/src/tiles/base-tile-component.js.map +1 -1
  62. package/dist/src/tiles/grid/account-tile.js +36 -38
  63. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  64. package/dist/src/tiles/grid/collection-tile.js +79 -82
  65. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  66. package/dist/src/tiles/grid/item-tile.js +154 -164
  67. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  68. package/dist/src/tiles/grid/search-tile.js +42 -43
  69. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  70. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +119 -119
  71. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -1
  72. package/dist/src/tiles/grid/tile-stats.js +2 -3
  73. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  74. package/dist/src/tiles/hover/hover-pane-controller.js +42 -49
  75. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  76. package/dist/src/tiles/hover/tile-hover-pane.js +113 -114
  77. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  78. package/dist/src/tiles/image-block.js +5 -8
  79. package/dist/src/tiles/image-block.js.map +1 -1
  80. package/dist/src/tiles/item-image.js +12 -19
  81. package/dist/src/tiles/item-image.js.map +1 -1
  82. package/dist/src/tiles/list/tile-list-compact.js +114 -122
  83. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  84. package/dist/src/tiles/list/tile-list.js +326 -347
  85. package/dist/src/tiles/list/tile-list.js.map +1 -1
  86. package/dist/src/tiles/overlay/icon-overlay.js +1 -2
  87. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  88. package/dist/src/tiles/overlay/text-overlay.js +2 -4
  89. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  90. package/dist/src/tiles/text-snippet-block.js +2 -4
  91. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  92. package/dist/src/tiles/tile-dispatcher.js +233 -241
  93. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  94. package/dist/src/tiles/tile-display-value-provider.js +5 -9
  95. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  96. package/dist/src/tiles/tile-mediatype-icon.js +12 -19
  97. package/dist/src/tiles/tile-mediatype-icon.js.map +1 -1
  98. package/dist/src/utils/collapse-repeated-quotes.js +1 -1
  99. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -1
  100. package/dist/src/utils/facet-utils.js +3 -5
  101. package/dist/src/utils/facet-utils.js.map +1 -1
  102. package/dist/src/utils/format-count.js +10 -10
  103. package/dist/src/utils/format-count.js.map +1 -1
  104. package/dist/src/utils/format-date.js.map +1 -1
  105. package/dist/src/utils/resolve-mediatype.js +2 -3
  106. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  107. package/dist/test/collection-browser.test.js +131 -185
  108. package/dist/test/collection-browser.test.js.map +1 -1
  109. package/dist/test/collection-facets/facet-row.test.js +60 -75
  110. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  111. package/dist/test/collection-facets/facets-template.test.js +17 -23
  112. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  113. package/dist/test/collection-facets/more-facets-content.test.js +22 -32
  114. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  115. package/dist/test/collection-facets/more-facets-pagination.test.js +16 -22
  116. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  117. package/dist/test/collection-facets/toggle-switch.test.js +22 -19
  118. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  119. package/dist/test/collection-facets.test.js +80 -97
  120. package/dist/test/collection-facets.test.js.map +1 -1
  121. package/dist/test/empty-placeholder.test.js +11 -17
  122. package/dist/test/empty-placeholder.test.js.map +1 -1
  123. package/dist/test/expanded-date-picker.test.js +8 -14
  124. package/dist/test/expanded-date-picker.test.js.map +1 -1
  125. package/dist/test/icon-overlay.test.js +7 -6
  126. package/dist/test/icon-overlay.test.js.map +1 -1
  127. package/dist/test/image-block.test.js +16 -26
  128. package/dist/test/image-block.test.js.map +1 -1
  129. package/dist/test/item-image.test.js +23 -32
  130. package/dist/test/item-image.test.js.map +1 -1
  131. package/dist/test/manage/manage-bar.test.js +21 -33
  132. package/dist/test/manage/manage-bar.test.js.map +1 -1
  133. package/dist/test/manage/remove-items-modal-content.test.js +10 -15
  134. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
  135. package/dist/test/mocks/mock-search-service.js +2 -3
  136. package/dist/test/mocks/mock-search-service.js.map +1 -1
  137. package/dist/test/restoration-state-handler.test.js +13 -21
  138. package/dist/test/restoration-state-handler.test.js.map +1 -1
  139. package/dist/test/review-block.test.js +16 -18
  140. package/dist/test/review-block.test.js.map +1 -1
  141. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +2 -3
  142. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  143. package/dist/test/sort-filter-bar/alpha-bar.test.js +18 -24
  144. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  145. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +178 -180
  146. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  147. package/dist/test/text-overlay.test.js +16 -15
  148. package/dist/test/text-overlay.test.js.map +1 -1
  149. package/dist/test/text-snippet-block.test.js +14 -19
  150. package/dist/test/text-snippet-block.test.js.map +1 -1
  151. package/dist/test/tile-stats.test.js +73 -34
  152. package/dist/test/tile-stats.test.js.map +1 -1
  153. package/dist/test/tiles/grid/account-tile.test.js +25 -25
  154. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  155. package/dist/test/tiles/grid/collection-tile.test.js +13 -19
  156. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  157. package/dist/test/tiles/grid/item-tile.test.js +141 -168
  158. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  159. package/dist/test/tiles/grid/search-tile.test.js +9 -13
  160. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  161. package/dist/test/tiles/hover/hover-pane-controller.test.js +50 -62
  162. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  163. package/dist/test/tiles/hover/tile-hover-pane.test.js +12 -16
  164. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  165. package/dist/test/tiles/list/tile-list-compact.test.js +104 -118
  166. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  167. package/dist/test/tiles/list/tile-list.test.js +202 -231
  168. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  169. package/dist/test/tiles/tile-dispatcher.test.js +97 -110
  170. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  171. package/dist/test/tiles/tile-mediatype-icon.test.js +12 -24
  172. package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -1
  173. package/dist/test/utils/format-date.test.js.map +1 -1
  174. package/index.html +1 -1
  175. package/package.json +5 -3
  176. package/src/collection-browser.ts +3060 -3030
  177. package/src/collection-facets/models.ts +10 -10
  178. package/src/collection-facets/more-facets-content.ts +639 -639
  179. package/src/collection-facets.ts +1 -1
  180. package/src/combo-box/caret-closed.ts +5 -11
  181. package/src/combo-box/caret-open.ts +5 -11
  182. package/src/combo-box/clear.ts +11 -0
  183. package/src/combo-box/ia-combo-box.ts +1288 -1180
  184. package/src/combo-box/models.ts +31 -1
  185. package/src/manage/manage-bar.ts +247 -247
  186. package/src/restoration-state-handler.ts +5 -1
  187. package/src/tiles/base-tile-component.ts +65 -65
  188. package/src/tiles/grid/account-tile.ts +113 -113
  189. package/src/tiles/grid/collection-tile.ts +163 -163
  190. package/src/tiles/grid/item-tile.ts +340 -340
  191. package/src/tiles/grid/search-tile.ts +90 -90
  192. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +130 -130
  193. package/src/tiles/hover/hover-pane-controller.ts +613 -613
  194. package/src/tiles/hover/tile-hover-pane.ts +184 -184
  195. package/src/tiles/list/tile-list-compact.ts +239 -239
  196. package/src/tiles/list/tile-list.ts +700 -700
  197. package/src/tiles/tile-dispatcher.ts +517 -517
  198. package/src/utils/format-date.ts +62 -62
  199. package/test/collection-facets/facet-row.test.ts +375 -375
  200. package/test/collection-facets.test.ts +928 -928
  201. package/test/tiles/grid/item-tile.test.ts +520 -520
  202. package/test/tiles/hover/hover-pane-controller.test.ts +418 -418
  203. package/test/tiles/list/tile-list-compact.test.ts +282 -282
  204. package/test/tiles/list/tile-list.test.ts +552 -552
  205. package/test/tiles/tile-dispatcher.test.ts +283 -283
  206. package/test/utils/format-date.test.ts +89 -89
  207. package/tsconfig.json +8 -3
  208. package/vite.config.ts +29 -22
@@ -8,35 +8,31 @@ describe('RemoveItemsModalContent', () => {
8
8
  { identifier: '2', title: 'Item 2', date: '2022-01-02' },
9
9
  ];
10
10
  it('renders basic component', async () => {
11
- var _a, _b, _c;
12
11
  const el = await fixture(html `
13
12
  <remove-items-modal-content
14
13
  .items=${items}
15
14
  .message=${''}
16
15
  ></remove-items-modal-content>
17
16
  `);
18
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('ul')).to.exist;
19
- expect((_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.button-bar')).to.exist;
20
- expect((_c = el.shadowRoot) === null || _c === void 0 ? void 0 : _c.querySelector('.remove-items-btn')).to.exist;
17
+ expect(el.shadowRoot?.querySelector('ul')).to.exist;
18
+ expect(el.shadowRoot?.querySelector('.button-bar')).to.exist;
19
+ expect(el.shadowRoot?.querySelector('.remove-items-btn')).to.exist;
21
20
  });
22
21
  it('renders list of items', async () => {
23
- var _a;
24
22
  const el = await fixture(html `
25
23
  <remove-items-modal-content
26
24
  .items=${items}
27
25
  .message=${''}
28
26
  ></remove-items-modal-content>
29
27
  `);
30
- const listItems = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelectorAll('li');
28
+ const listItems = el.shadowRoot?.querySelectorAll('li');
31
29
  expect(listItems).to.have.lengthOf(2);
32
- listItems === null || listItems === void 0 ? void 0 : listItems.forEach((item, index) => {
33
- var _a, _b;
34
- expect((_a = item.querySelector('.item-title')) === null || _a === void 0 ? void 0 : _a.textContent).to.equal(items[index].title);
35
- expect((_b = item.querySelector('.item-date')) === null || _b === void 0 ? void 0 : _b.textContent).to.equal(items[index].date);
30
+ listItems?.forEach((item, index) => {
31
+ expect(item.querySelector('.item-title')?.textContent).to.equal(items[index].title);
32
+ expect(item.querySelector('.item-date')?.textContent).to.equal(items[index].date);
36
33
  });
37
34
  });
38
35
  it('renders message', async () => {
39
- var _a, _b;
40
36
  const message = 'This is a test message';
41
37
  const el = await fixture(html `
42
38
  <remove-items-modal-content
@@ -44,10 +40,9 @@ describe('RemoveItemsModalContent', () => {
44
40
  .message=${message}
45
41
  ></remove-items-modal-content>
46
42
  `);
47
- expect((_b = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.message')) === null || _b === void 0 ? void 0 : _b.textContent).to.equal(message);
43
+ expect(el.shadowRoot?.querySelector('.message')?.textContent).to.equal(message);
48
44
  });
49
45
  it('dispatches confirm event when remove items button is clicked', async () => {
50
- var _a;
51
46
  const el = await fixture(html `
52
47
  <remove-items-modal-content
53
48
  .items=${items}
@@ -56,8 +51,8 @@ describe('RemoveItemsModalContent', () => {
56
51
  `);
57
52
  const spy = Sinon.spy();
58
53
  el.addEventListener('confirm', spy);
59
- const button = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.remove-items-btn');
60
- button === null || button === void 0 ? void 0 : button.click();
54
+ const button = el.shadowRoot?.querySelector('.remove-items-btn');
55
+ button?.click();
61
56
  expect(spy.calledOnce).to.be.true;
62
57
  expect(spy.args[0][0].detail.items).to.deep.equal(items);
63
58
  });
@@ -1 +1 @@
1
- {"version":3,"file":"remove-items-modal-content.test.js","sourceRoot":"","sources":["../../../test/manage/remove-items-modal-content.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport Sinon from 'sinon';\nimport type { ManageableItem } from '../../src/models';\nimport type { RemoveItemsModalContent } from '../../src/manage/remove-items-modal-content';\nimport '../../src/manage/remove-items-modal-content';\n\ndescribe('RemoveItemsModalContent', () => {\n const items: ManageableItem[] = [\n { identifier: '1', title: 'Item 1', date: '2022-01-01' },\n { identifier: '2', title: 'Item 2', date: '2022-01-02' },\n ];\n\n it('renders basic component', async () => {\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${items}\n .message=${''}\n ></remove-items-modal-content>\n `);\n\n expect(el.shadowRoot?.querySelector('ul')).to.exist;\n expect(el.shadowRoot?.querySelector('.button-bar')).to.exist;\n expect(el.shadowRoot?.querySelector('.remove-items-btn')).to.exist;\n });\n\n it('renders list of items', async () => {\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${items}\n .message=${''}\n ></remove-items-modal-content>\n `);\n\n const listItems = el.shadowRoot?.querySelectorAll('li');\n expect(listItems).to.have.lengthOf(2);\n\n listItems?.forEach((item, index) => {\n expect(item.querySelector('.item-title')?.textContent).to.equal(\n items[index].title,\n );\n expect(item.querySelector('.item-date')?.textContent).to.equal(\n items[index].date,\n );\n });\n });\n\n it('renders message', async () => {\n const message = 'This is a test message';\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${[]}\n .message=${message}\n ></remove-items-modal-content>\n `);\n\n expect(el.shadowRoot?.querySelector('.message')?.textContent).to.equal(\n message,\n );\n });\n\n it('dispatches confirm event when remove items button is clicked', async () => {\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${items}\n .message=${''}\n ></remove-items-modal-content>\n `);\n\n const spy = Sinon.spy();\n el.addEventListener('confirm', spy);\n\n const button = el.shadowRoot?.querySelector(\n '.remove-items-btn',\n ) as HTMLInputElement;\n button?.click();\n\n expect(spy.calledOnce).to.be.true;\n expect(spy.args[0][0].detail.items).to.deep.equal(items);\n });\n});\n"]}
1
+ {"version":3,"file":"remove-items-modal-content.test.js","sourceRoot":"","sources":["../../../test/manage/remove-items-modal-content.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport Sinon from 'sinon';\nimport type { ManageableItem } from '../../src/models';\nimport type { RemoveItemsModalContent } from '../../src/manage/remove-items-modal-content';\nimport '../../src/manage/remove-items-modal-content';\n\ndescribe('RemoveItemsModalContent', () => {\n const items: ManageableItem[] = [\n { identifier: '1', title: 'Item 1', date: '2022-01-01' },\n { identifier: '2', title: 'Item 2', date: '2022-01-02' },\n ];\n\n it('renders basic component', async () => {\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${items}\n .message=${''}\n ></remove-items-modal-content>\n `);\n\n expect(el.shadowRoot?.querySelector('ul')).to.exist;\n expect(el.shadowRoot?.querySelector('.button-bar')).to.exist;\n expect(el.shadowRoot?.querySelector('.remove-items-btn')).to.exist;\n });\n\n it('renders list of items', async () => {\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${items}\n .message=${''}\n ></remove-items-modal-content>\n `);\n\n const listItems = el.shadowRoot?.querySelectorAll('li');\n expect(listItems).to.have.lengthOf(2);\n\n listItems?.forEach((item, index) => {\n expect(item.querySelector('.item-title')?.textContent).to.equal(\n items[index].title,\n );\n expect(item.querySelector('.item-date')?.textContent).to.equal(\n items[index].date,\n );\n });\n });\n\n it('renders message', async () => {\n const message = 'This is a test message';\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${[]}\n .message=${message}\n ></remove-items-modal-content>\n `);\n\n expect(el.shadowRoot?.querySelector('.message')?.textContent).to.equal(\n message,\n );\n });\n\n it('dispatches confirm event when remove items button is clicked', async () => {\n const el = await fixture<RemoveItemsModalContent>(html`\n <remove-items-modal-content\n .items=${items}\n .message=${''}\n ></remove-items-modal-content>\n `);\n\n const spy = Sinon.spy();\n el.addEventListener('confirm', spy);\n\n const button = el.shadowRoot?.querySelector(\n '.remove-items-btn',\n ) as HTMLInputElement;\n button?.click();\n\n expect(spy.calledOnce).to.be.true;\n expect(spy.args[0][0].detail.items).to.deep.equal(items);\n });\n});\n"]}
@@ -35,7 +35,6 @@ export class MockSearchService {
35
35
  this.resultsSpy = resultsSpy;
36
36
  }
37
37
  async search(params, searchType) {
38
- var _a, _b;
39
38
  this.searchParams = params;
40
39
  this.searchType = searchType;
41
40
  if (this.asyncResponse) {
@@ -44,8 +43,8 @@ export class MockSearchService {
44
43
  setTimeout(res, this.asyncResponseDelay);
45
44
  });
46
45
  }
47
- const responseKey = (_a = (this.searchParams.query || this.searchParams.pageTarget)) !== null && _a !== void 0 ? _a : '';
48
- const resultFn = (_b = responses[responseKey]) !== null && _b !== void 0 ? _b : getMockSuccessMultipleResults;
46
+ const responseKey = (this.searchParams.query || this.searchParams.pageTarget) ?? '';
47
+ const resultFn = responses[responseKey] ?? getMockSuccessMultipleResults;
49
48
  let result = resultFn();
50
49
  // with-sort query has special handling
51
50
  if (this.searchParams.query === 'with-sort') {
@@ -1 +1 @@
1
- {"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n getMockSuccessSingleResult,\n getMockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n getMockSuccessLoggedInResult,\n getMockSuccessNoPreviewResult,\n getMockSuccessLoggedInAndNoPreviewResult,\n getMockSuccessWithYearHistogramAggs,\n getMockSuccessWithDateHistogramAggs,\n getMockSuccessMultiLineDescription,\n getMockSuccessFirstTitleResult,\n getMockSuccessFirstCreatorResult,\n getMockErrorResult,\n getMockMalformedResult,\n getMockSuccessWithCollectionTitles,\n getMockSuccessWithChannelAliases,\n getMockSuccessWithCollectionAggregations,\n getMockSuccessExtraQuotedHref,\n getMockSuccessWithDefaultSort,\n getMockSuccessWithConciseDefaultSort,\n getMockSuccessWithDefaultFavSort,\n getMockSuccessWithParentCollections,\n getMockSuccessForTvCollection,\n getMockSuccessManyFields,\n getMockSuccessNoResults,\n getMockSuccessWithWebArchiveHits,\n getMockSuccessWithManyAggregations,\n getMockSuccessTvFields,\n getMockSuccessArchiveOrgUserResult,\n getMockSuccessArchiveOrgUserNoBlurResult,\n} from './mock-search-responses';\n\nconst responses: Record<\n string,\n () => Result<SearchResponse, SearchServiceError>\n> = {\n 'single-result': getMockSuccessSingleResult,\n years: getMockSuccessWithYearHistogramAggs,\n months: getMockSuccessWithDateHistogramAggs,\n 'multi-line-description': getMockSuccessMultiLineDescription,\n loggedin: getMockSuccessLoggedInResult,\n 'no-preview': getMockSuccessNoPreviewResult,\n 'loggedin-no-preview': getMockSuccessLoggedInAndNoPreviewResult,\n 'archive-org-user-loggedin': getMockSuccessArchiveOrgUserResult,\n 'archive-org-user-loggedin-noblur': getMockSuccessArchiveOrgUserNoBlurResult,\n 'first-title': getMockSuccessFirstTitleResult,\n 'first-creator': getMockSuccessFirstCreatorResult,\n 'collection-titles': getMockSuccessWithCollectionTitles,\n 'channel-aliases': getMockSuccessWithChannelAliases,\n 'collection-aggregations': getMockSuccessWithCollectionAggregations,\n 'extra-quoted-href': getMockSuccessExtraQuotedHref,\n 'default-sort': getMockSuccessWithDefaultSort,\n 'default-sort-concise': getMockSuccessWithConciseDefaultSort,\n 'fav-sort': getMockSuccessWithDefaultFavSort,\n 'parent-collections': getMockSuccessWithParentCollections,\n 'tv-collection': getMockSuccessForTvCollection,\n 'web-archive': getMockSuccessWithWebArchiveHits,\n 'more-facets': getMockSuccessWithManyAggregations,\n 'many-fields': getMockSuccessManyFields,\n 'tv-fields': getMockSuccessTvFields,\n 'no-results': getMockSuccessNoResults,\n error: getMockErrorResult,\n malformed: getMockMalformedResult,\n};\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n asyncResponseDelay: number;\n\n resultsSpy: Function;\n\n constructor({\n asyncResponse = false,\n asyncResponseDelay = 0,\n resultsSpy = () => {},\n } = {}) {\n this.asyncResponse = asyncResponse;\n this.asyncResponseDelay = asyncResponseDelay;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType,\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, this.asyncResponseDelay);\n });\n }\n\n const responseKey =\n (this.searchParams.query || this.searchParams.pageTarget) ?? '';\n const resultFn: () => Result<SearchResponse, SearchServiceError> =\n responses[responseKey] ?? getMockSuccessMultipleResults;\n let result = resultFn();\n\n // with-sort query has special handling\n if (this.searchParams.query === 'with-sort') {\n result = getMockSuccessSingleResultWithSort(this.resultsSpy);\n }\n\n // Apply any uid param from the request\n if (result.success) {\n (result.success.request.clientParameters as any).uid = params.uid;\n }\n\n return result;\n }\n\n async itemDetails(\n _: string,\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n // We don't currently use the itemDetails method in collection-browser\n throw new Error('not implemented');\n }\n}\n"]}
1
+ {"version":3,"file":"mock-search-service.js","sourceRoot":"","sources":["../../../test/mocks/mock-search-service.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Result } from '@internetarchive/result-type';\nimport type {\n SearchParams,\n SearchResponse,\n SearchServiceInterface,\n SearchServiceError,\n SearchType,\n} from '@internetarchive/search-service';\nimport {\n getMockSuccessSingleResult,\n getMockSuccessMultipleResults,\n getMockSuccessSingleResultWithSort,\n getMockSuccessLoggedInResult,\n getMockSuccessNoPreviewResult,\n getMockSuccessLoggedInAndNoPreviewResult,\n getMockSuccessWithYearHistogramAggs,\n getMockSuccessWithDateHistogramAggs,\n getMockSuccessMultiLineDescription,\n getMockSuccessFirstTitleResult,\n getMockSuccessFirstCreatorResult,\n getMockErrorResult,\n getMockMalformedResult,\n getMockSuccessWithCollectionTitles,\n getMockSuccessWithChannelAliases,\n getMockSuccessWithCollectionAggregations,\n getMockSuccessExtraQuotedHref,\n getMockSuccessWithDefaultSort,\n getMockSuccessWithConciseDefaultSort,\n getMockSuccessWithDefaultFavSort,\n getMockSuccessWithParentCollections,\n getMockSuccessForTvCollection,\n getMockSuccessManyFields,\n getMockSuccessNoResults,\n getMockSuccessWithWebArchiveHits,\n getMockSuccessWithManyAggregations,\n getMockSuccessTvFields,\n getMockSuccessArchiveOrgUserResult,\n getMockSuccessArchiveOrgUserNoBlurResult,\n} from './mock-search-responses';\n\nconst responses: Record<\n string,\n () => Result<SearchResponse, SearchServiceError>\n> = {\n 'single-result': getMockSuccessSingleResult,\n years: getMockSuccessWithYearHistogramAggs,\n months: getMockSuccessWithDateHistogramAggs,\n 'multi-line-description': getMockSuccessMultiLineDescription,\n loggedin: getMockSuccessLoggedInResult,\n 'no-preview': getMockSuccessNoPreviewResult,\n 'loggedin-no-preview': getMockSuccessLoggedInAndNoPreviewResult,\n 'archive-org-user-loggedin': getMockSuccessArchiveOrgUserResult,\n 'archive-org-user-loggedin-noblur': getMockSuccessArchiveOrgUserNoBlurResult,\n 'first-title': getMockSuccessFirstTitleResult,\n 'first-creator': getMockSuccessFirstCreatorResult,\n 'collection-titles': getMockSuccessWithCollectionTitles,\n 'channel-aliases': getMockSuccessWithChannelAliases,\n 'collection-aggregations': getMockSuccessWithCollectionAggregations,\n 'extra-quoted-href': getMockSuccessExtraQuotedHref,\n 'default-sort': getMockSuccessWithDefaultSort,\n 'default-sort-concise': getMockSuccessWithConciseDefaultSort,\n 'fav-sort': getMockSuccessWithDefaultFavSort,\n 'parent-collections': getMockSuccessWithParentCollections,\n 'tv-collection': getMockSuccessForTvCollection,\n 'web-archive': getMockSuccessWithWebArchiveHits,\n 'more-facets': getMockSuccessWithManyAggregations,\n 'many-fields': getMockSuccessManyFields,\n 'tv-fields': getMockSuccessTvFields,\n 'no-results': getMockSuccessNoResults,\n error: getMockErrorResult,\n malformed: getMockMalformedResult,\n};\n\nexport class MockSearchService implements SearchServiceInterface {\n searchParams?: SearchParams;\n\n searchType?: SearchType;\n\n asyncResponse: boolean;\n\n asyncResponseDelay: number;\n\n resultsSpy: Function;\n\n constructor({\n asyncResponse = false,\n asyncResponseDelay = 0,\n resultsSpy = () => {},\n } = {}) {\n this.asyncResponse = asyncResponse;\n this.asyncResponseDelay = asyncResponseDelay;\n this.resultsSpy = resultsSpy;\n }\n\n async search(\n params: SearchParams,\n searchType: SearchType,\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n this.searchParams = params;\n this.searchType = searchType;\n\n if (this.asyncResponse) {\n // Add an artificial 1-tick delay\n await new Promise(res => {\n setTimeout(res, this.asyncResponseDelay);\n });\n }\n\n const responseKey =\n (this.searchParams.query || this.searchParams.pageTarget) ?? '';\n const resultFn: () => Result<SearchResponse, SearchServiceError> =\n responses[responseKey] ?? getMockSuccessMultipleResults;\n let result = resultFn();\n\n // with-sort query has special handling\n if (this.searchParams.query === 'with-sort') {\n result = getMockSuccessSingleResultWithSort(this.resultsSpy);\n }\n\n // Apply any uid param from the request\n if (result.success) {\n (result.success.request.clientParameters as any).uid = params.uid;\n }\n\n return result;\n }\n\n async itemDetails(\n _: string,\n ): Promise<Result<SearchResponse, SearchServiceError>> {\n // We don't currently use the itemDetails method in collection-browser\n throw new Error('not implemented');\n }\n}\n"]}
@@ -68,13 +68,12 @@ describe('Restoration state handler', () => {
68
68
  expect(restorationState.currentPage).to.equal(42);
69
69
  });
70
70
  it('should restore selected year facets from URL', async () => {
71
- var _a;
72
71
  const handler = new RestorationStateHandler({ context: 'search' });
73
72
  const url = new URL(window.location.href);
74
73
  url.search = '?and[]=year:"2018"';
75
74
  window.history.replaceState({ path: url.href }, '', url.href);
76
75
  const restorationState = handler.getRestorationState();
77
- expect((_a = restorationState.selectedFacets.year) === null || _a === void 0 ? void 0 : _a['2018'].state).to.equal('selected');
76
+ expect(restorationState.selectedFacets.year?.['2018'].state).to.equal('selected');
78
77
  });
79
78
  it('should ignore unrecognized facet types in URL', async () => {
80
79
  const handler = new RestorationStateHandler({ context: 'search' });
@@ -110,82 +109,75 @@ describe('Restoration state handler', () => {
110
109
  expect(restorationState.selectedTitleFilter).to.equal('F');
111
110
  });
112
111
  it('should restore other selected facets from URL', async () => {
113
- var _a;
114
112
  const handler = new RestorationStateHandler({ context: 'search' });
115
113
  const url = new URL(window.location.href);
116
114
  url.search = '?and[]=subject:"foo"';
117
115
  window.history.replaceState({ path: url.href }, '', url.href);
118
116
  const restorationState = handler.getRestorationState();
119
- expect((_a = restorationState.selectedFacets.subject) === null || _a === void 0 ? void 0 : _a.foo.state).to.equal('selected');
117
+ expect(restorationState.selectedFacets.subject?.foo.state).to.equal('selected');
120
118
  });
121
119
  it('should restore negative facets from URL', async () => {
122
- var _a;
123
120
  const handler = new RestorationStateHandler({ context: 'search' });
124
121
  const url = new URL(window.location.href);
125
122
  url.search = '?not[]=year:2018';
126
123
  window.history.replaceState({ path: url.href }, '', url.href);
127
124
  const restorationState = handler.getRestorationState();
128
- expect((_a = restorationState.selectedFacets.year) === null || _a === void 0 ? void 0 : _a['2018'].state).to.equal('hidden');
125
+ expect(restorationState.selectedFacets.year?.['2018'].state).to.equal('hidden');
129
126
  });
130
127
  it('should restore multiple selected/negative facets from URL', async () => {
131
- var _a, _b, _c, _d;
132
128
  const handler = new RestorationStateHandler({ context: 'search' });
133
129
  const url = new URL(window.location.href);
134
130
  url.search =
135
131
  '?and[]=collection:"foo"&and[]=collection:"bar"&not[]=collection:"baz"&not[]=collection:"boop"';
136
132
  window.history.replaceState({ path: url.href }, '', url.href);
137
133
  const restorationState = handler.getRestorationState();
138
- expect((_a = restorationState.selectedFacets.collection) === null || _a === void 0 ? void 0 : _a.foo.state).to.equal('selected');
139
- expect((_b = restorationState.selectedFacets.collection) === null || _b === void 0 ? void 0 : _b.bar.state).to.equal('selected');
140
- expect((_c = restorationState.selectedFacets.collection) === null || _c === void 0 ? void 0 : _c.baz.state).to.equal('hidden');
141
- expect((_d = restorationState.selectedFacets.collection) === null || _d === void 0 ? void 0 : _d.boop.state).to.equal('hidden');
134
+ expect(restorationState.selectedFacets.collection?.foo.state).to.equal('selected');
135
+ expect(restorationState.selectedFacets.collection?.bar.state).to.equal('selected');
136
+ expect(restorationState.selectedFacets.collection?.baz.state).to.equal('hidden');
137
+ expect(restorationState.selectedFacets.collection?.boop.state).to.equal('hidden');
142
138
  });
143
139
  it('negative facets take precedence if both present in URL', async () => {
144
- var _a;
145
140
  const handler = new RestorationStateHandler({ context: 'search' });
146
141
  const url = new URL(window.location.href);
147
142
  url.search = '?and[]=collection:"foo"&not[]=collection:"foo"';
148
143
  window.history.replaceState({ path: url.href }, '', url.href);
149
144
  const restorationState = handler.getRestorationState();
150
- expect((_a = restorationState.selectedFacets.collection) === null || _a === void 0 ? void 0 : _a.foo.state).to.equal('hidden');
145
+ expect(restorationState.selectedFacets.collection?.foo.state).to.equal('hidden');
151
146
  });
152
147
  it('should restore selected facets with numbers in the square brackets', async () => {
153
- var _a;
154
148
  const handler = new RestorationStateHandler({ context: 'search' });
155
149
  const url = new URL(window.location.href);
156
150
  url.search = '?and[12]=subject:"foo"';
157
151
  window.history.replaceState({ path: url.href }, '', url.href);
158
152
  const restorationState = handler.getRestorationState();
159
- expect((_a = restorationState.selectedFacets.subject) === null || _a === void 0 ? void 0 : _a.foo.state).to.equal('selected');
153
+ expect(restorationState.selectedFacets.subject?.foo.state).to.equal('selected');
160
154
  });
161
155
  it('should restore negative facets with numbers in the square brackets', async () => {
162
- var _a;
163
156
  const handler = new RestorationStateHandler({ context: 'search' });
164
157
  const url = new URL(window.location.href);
165
158
  url.search = '?not[12]=year:2018';
166
159
  window.history.replaceState({ path: url.href }, '', url.href);
167
160
  const restorationState = handler.getRestorationState();
168
- expect((_a = restorationState.selectedFacets.year) === null || _a === void 0 ? void 0 : _a['2018'].state).to.equal('hidden');
161
+ expect(restorationState.selectedFacets.year?.['2018'].state).to.equal('hidden');
169
162
  });
170
163
  it('should restore any TV clip filters from URL', async () => {
171
- var _a, _b, _c;
172
164
  const handler = new RestorationStateHandler({ context: 'search' });
173
165
  const url = new URL(window.location.href);
174
166
  // Commercials
175
167
  url.search = '?only_commercials=1';
176
168
  window.history.replaceState({ path: url.href }, '', url.href);
177
169
  const commercialsRestorationState = handler.getRestorationState();
178
- expect((_a = commercialsRestorationState.selectedFacets.clip_type) === null || _a === void 0 ? void 0 : _a.commercial.state).to.equal('selected');
170
+ expect(commercialsRestorationState.selectedFacets.clip_type?.commercial.state).to.equal('selected');
179
171
  // Fact checks
180
172
  url.search = '?only_factchecks=1';
181
173
  window.history.replaceState({ path: url.href }, '', url.href);
182
174
  const factchecksRestorationState = handler.getRestorationState();
183
- expect((_b = factchecksRestorationState.selectedFacets.clip_type) === null || _b === void 0 ? void 0 : _b['fact check'].state).to.equal('selected');
175
+ expect(factchecksRestorationState.selectedFacets.clip_type?.['fact check'].state).to.equal('selected');
184
176
  // Quotes
185
177
  url.search = '?only_quotes=1';
186
178
  window.history.replaceState({ path: url.href }, '', url.href);
187
179
  const quotesRestorationState = handler.getRestorationState();
188
- expect((_c = quotesRestorationState.selectedFacets.clip_type) === null || _c === void 0 ? void 0 : _c.quote.state).to.equal('selected');
180
+ expect(quotesRestorationState.selectedFacets.clip_type?.quote.state).to.equal('selected');
189
181
  // No filter param
190
182
  url.search = '';
191
183
  window.history.replaceState({ path: url.href }, '', url.href);
@@ -1 +1 @@
1
- {"version":3,"file":"restoration-state-handler.test.js","sourceRoot":"","sources":["../../test/restoration-state-handler.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchType } from '@internetarchive/search-service';\r\nimport { expect } from '@open-wc/testing';\r\nimport { SortField, getDefaultSelectedFacets } from '../src/models';\r\nimport { RestorationStateHandler } from '../src/restoration-state-handler';\r\n\r\ndescribe('Restoration state handler', () => {\r\n it('should restore query from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?query=boop';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.baseQuery).to.equal('boop');\r\n });\r\n\r\n it('should restore default search type from URL without valid sin', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.DEFAULT);\r\n });\r\n\r\n it('should restore default search type if sin explicitly empty in URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.DEFAULT);\r\n });\r\n\r\n it('should restore full text search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=TXT';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);\r\n });\r\n\r\n it('should restore radio search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=RADIO';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.RADIO);\r\n });\r\n\r\n it('should restore TV search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=TV';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.TV);\r\n });\r\n\r\n it('should restore metadata search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=MD';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.METADATA);\r\n });\r\n\r\n it('should restore page number from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?page=42';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.currentPage).to.equal(42);\r\n });\r\n\r\n it('should restore selected year facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=year:\"2018\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(\r\n 'selected',\r\n );\r\n });\r\n\r\n it('should ignore unrecognized facet types in URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=foo:\"bar\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets).to.deep.equal(\r\n getDefaultSelectedFacets(),\r\n );\r\n });\r\n\r\n it('should restore selected date range facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=year:\"2018+TO+2021\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.minSelectedDate).to.equal('2018');\r\n expect(restorationState.maxSelectedDate).to.equal('2021');\r\n });\r\n\r\n it('should restore creator filter from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=firstCreator:F';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedCreatorFilter).to.equal('F');\r\n });\r\n\r\n it('should restore title filter from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=firstTitle:F';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedTitleFilter).to.equal('F');\r\n });\r\n\r\n it('should restore other selected facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=subject:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.subject?.foo.state).to.equal(\r\n 'selected',\r\n );\r\n });\r\n\r\n it('should restore negative facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?not[]=year:2018';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('should restore multiple selected/negative facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search =\r\n '?and[]=collection:\"foo\"&and[]=collection:\"bar\"&not[]=collection:\"baz\"&not[]=collection:\"boop\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n\r\n expect(restorationState.selectedFacets.collection?.foo.state).to.equal(\r\n 'selected',\r\n );\r\n expect(restorationState.selectedFacets.collection?.bar.state).to.equal(\r\n 'selected',\r\n );\r\n\r\n expect(restorationState.selectedFacets.collection?.baz.state).to.equal(\r\n 'hidden',\r\n );\r\n expect(restorationState.selectedFacets.collection?.boop.state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('negative facets take precedence if both present in URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=collection:\"foo\"&not[]=collection:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.collection?.foo.state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('should restore selected facets with numbers in the square brackets', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[12]=subject:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.subject?.foo.state).to.equal(\r\n 'selected',\r\n );\r\n });\r\n\r\n it('should restore negative facets with numbers in the square brackets', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?not[12]=year:2018';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('should restore any TV clip filters from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n const url = new URL(window.location.href);\r\n\r\n // Commercials\r\n url.search = '?only_commercials=1';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const commercialsRestorationState = handler.getRestorationState();\r\n expect(\r\n commercialsRestorationState.selectedFacets.clip_type?.commercial.state,\r\n ).to.equal('selected');\r\n\r\n // Fact checks\r\n url.search = '?only_factchecks=1';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const factchecksRestorationState = handler.getRestorationState();\r\n expect(\r\n factchecksRestorationState.selectedFacets.clip_type?.['fact check'].state,\r\n ).to.equal('selected');\r\n\r\n // Quotes\r\n url.search = '?only_quotes=1';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const quotesRestorationState = handler.getRestorationState();\r\n expect(\r\n quotesRestorationState.selectedFacets.clip_type?.quote.state,\r\n ).to.equal('selected');\r\n\r\n // No filter param\r\n url.search = '';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const unfilteredRestorationState = handler.getRestorationState();\r\n expect(unfilteredRestorationState.selectedFacets.clip_type).to.deep.equal(\r\n {},\r\n );\r\n });\r\n\r\n it('should restore sort from URL (space format)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=date+desc';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('date');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should restore sort from URL (prefix format, desc)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=-date';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('date');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should restore sort from URL (prefix format, asc)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=date';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('date');\r\n expect(restorationState.sortDirection).to.equal('asc');\r\n });\r\n\r\n it('should restore sort from URL (space format)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=foo+desc';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('unrecognized');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should restore unrecognized sort from URL (prefix format)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=-foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('unrecognized');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should save direction to URL even for unrecognized sort fields', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n selectedSort: SortField.unrecognized,\r\n sortDirection: 'desc',\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?sort=-foo');\r\n });\r\n\r\n it('should keep existing direction for unrecognized sort fields when unspecified in state', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=foo+desc';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n selectedSort: SortField.unrecognized,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?sort=-foo');\r\n });\r\n\r\n it('should just ignore unrecognized sort fields w/ unknown formats', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=+foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n selectedSort: SortField.unrecognized,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?sort=+foo');\r\n });\r\n\r\n it('should not save current page state to the URL for page 1', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n currentPage: 1,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.be.empty;\r\n });\r\n\r\n it('should save current page state to the URL when page > 1', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n currentPage: 2,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?page=2');\r\n });\r\n\r\n it('should upgrade legacy search params to new ones', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?q=foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.baseQuery).to.equal('foo');\r\n\r\n handler.persistState(restorationState);\r\n expect(window.location.search).to.equal('?query=foo');\r\n });\r\n\r\n it('should remove empty sin param', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n handler.persistState({ selectedFacets: getDefaultSelectedFacets() });\r\n expect(window.location.search).to.equal('');\r\n });\r\n\r\n it('should persist metadata search type only when option is true', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n handler.persistState(\r\n {\r\n selectedFacets: getDefaultSelectedFacets(),\r\n searchType: SearchType.METADATA,\r\n },\r\n { persistMetadataSearchType: false },\r\n );\r\n expect(window.location.search).to.equal('');\r\n\r\n handler.persistState(\r\n {\r\n selectedFacets: getDefaultSelectedFacets(),\r\n searchType: SearchType.METADATA,\r\n },\r\n { persistMetadataSearchType: true },\r\n );\r\n expect(window.location.search).to.equal('?sin=MD');\r\n });\r\n\r\n it('round trip load/persist should erase numbers in square brackets', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[0]=subject:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n // Load state from the URL and immediately persist it back to the URL\r\n const restorationState = handler.getRestorationState();\r\n handler.persistState(restorationState);\r\n\r\n // Ensure the new URL includes the \"normalized\" facet parameter and not the numbered one\r\n expect(decodeURIComponent(window.location.search)).to.include(\r\n 'and[]=subject:\"foo\"',\r\n );\r\n expect(new URL(window.location.href).searchParams.get('and[0]')).to.be.null;\r\n });\r\n});\r\n"]}
1
+ {"version":3,"file":"restoration-state-handler.test.js","sourceRoot":"","sources":["../../test/restoration-state-handler.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchType } from '@internetarchive/search-service';\r\nimport { expect } from '@open-wc/testing';\r\nimport { SortField, getDefaultSelectedFacets } from '../src/models';\r\nimport { RestorationStateHandler } from '../src/restoration-state-handler';\r\n\r\ndescribe('Restoration state handler', () => {\r\n it('should restore query from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?query=boop';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.baseQuery).to.equal('boop');\r\n });\r\n\r\n it('should restore default search type from URL without valid sin', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.DEFAULT);\r\n });\r\n\r\n it('should restore default search type if sin explicitly empty in URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.DEFAULT);\r\n });\r\n\r\n it('should restore full text search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=TXT';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);\r\n });\r\n\r\n it('should restore radio search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=RADIO';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.RADIO);\r\n });\r\n\r\n it('should restore TV search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=TV';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.TV);\r\n });\r\n\r\n it('should restore metadata search type from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=MD';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.searchType).to.equal(SearchType.METADATA);\r\n });\r\n\r\n it('should restore page number from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?page=42';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.currentPage).to.equal(42);\r\n });\r\n\r\n it('should restore selected year facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=year:\"2018\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(\r\n 'selected',\r\n );\r\n });\r\n\r\n it('should ignore unrecognized facet types in URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=foo:\"bar\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets).to.deep.equal(\r\n getDefaultSelectedFacets(),\r\n );\r\n });\r\n\r\n it('should restore selected date range facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=year:\"2018+TO+2021\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.minSelectedDate).to.equal('2018');\r\n expect(restorationState.maxSelectedDate).to.equal('2021');\r\n });\r\n\r\n it('should restore creator filter from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=firstCreator:F';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedCreatorFilter).to.equal('F');\r\n });\r\n\r\n it('should restore title filter from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=firstTitle:F';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedTitleFilter).to.equal('F');\r\n });\r\n\r\n it('should restore other selected facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=subject:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.subject?.foo.state).to.equal(\r\n 'selected',\r\n );\r\n });\r\n\r\n it('should restore negative facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?not[]=year:2018';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('should restore multiple selected/negative facets from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search =\r\n '?and[]=collection:\"foo\"&and[]=collection:\"bar\"&not[]=collection:\"baz\"&not[]=collection:\"boop\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n\r\n expect(restorationState.selectedFacets.collection?.foo.state).to.equal(\r\n 'selected',\r\n );\r\n expect(restorationState.selectedFacets.collection?.bar.state).to.equal(\r\n 'selected',\r\n );\r\n\r\n expect(restorationState.selectedFacets.collection?.baz.state).to.equal(\r\n 'hidden',\r\n );\r\n expect(restorationState.selectedFacets.collection?.boop.state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('negative facets take precedence if both present in URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[]=collection:\"foo\"&not[]=collection:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.collection?.foo.state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('should restore selected facets with numbers in the square brackets', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[12]=subject:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.subject?.foo.state).to.equal(\r\n 'selected',\r\n );\r\n });\r\n\r\n it('should restore negative facets with numbers in the square brackets', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?not[12]=year:2018';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(\r\n 'hidden',\r\n );\r\n });\r\n\r\n it('should restore any TV clip filters from URL', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n const url = new URL(window.location.href);\r\n\r\n // Commercials\r\n url.search = '?only_commercials=1';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const commercialsRestorationState = handler.getRestorationState();\r\n expect(\r\n commercialsRestorationState.selectedFacets.clip_type?.commercial.state,\r\n ).to.equal('selected');\r\n\r\n // Fact checks\r\n url.search = '?only_factchecks=1';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const factchecksRestorationState = handler.getRestorationState();\r\n expect(\r\n factchecksRestorationState.selectedFacets.clip_type?.['fact check'].state,\r\n ).to.equal('selected');\r\n\r\n // Quotes\r\n url.search = '?only_quotes=1';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const quotesRestorationState = handler.getRestorationState();\r\n expect(\r\n quotesRestorationState.selectedFacets.clip_type?.quote.state,\r\n ).to.equal('selected');\r\n\r\n // No filter param\r\n url.search = '';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n const unfilteredRestorationState = handler.getRestorationState();\r\n expect(unfilteredRestorationState.selectedFacets.clip_type).to.deep.equal(\r\n {},\r\n );\r\n });\r\n\r\n it('should restore sort from URL (space format)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=date+desc';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('date');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should restore sort from URL (prefix format, desc)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=-date';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('date');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should restore sort from URL (prefix format, asc)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=date';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('date');\r\n expect(restorationState.sortDirection).to.equal('asc');\r\n });\r\n\r\n it('should restore sort from URL (space format)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=foo+desc';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('unrecognized');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should restore unrecognized sort from URL (prefix format)', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=-foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.selectedSort).to.equal('unrecognized');\r\n expect(restorationState.sortDirection).to.equal('desc');\r\n });\r\n\r\n it('should save direction to URL even for unrecognized sort fields', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n selectedSort: SortField.unrecognized,\r\n sortDirection: 'desc',\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?sort=-foo');\r\n });\r\n\r\n it('should keep existing direction for unrecognized sort fields when unspecified in state', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=foo+desc';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n selectedSort: SortField.unrecognized,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?sort=-foo');\r\n });\r\n\r\n it('should just ignore unrecognized sort fields w/ unknown formats', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sort=+foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n selectedSort: SortField.unrecognized,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?sort=+foo');\r\n });\r\n\r\n it('should not save current page state to the URL for page 1', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n currentPage: 1,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.be.empty;\r\n });\r\n\r\n it('should save current page state to the URL when page > 1', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n handler.persistState({\r\n currentPage: 2,\r\n selectedFacets: getDefaultSelectedFacets(),\r\n });\r\n\r\n expect(window.location.search).to.equal('?page=2');\r\n });\r\n\r\n it('should upgrade legacy search params to new ones', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?q=foo';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n const restorationState = handler.getRestorationState();\r\n expect(restorationState.baseQuery).to.equal('foo');\r\n\r\n handler.persistState(restorationState);\r\n expect(window.location.search).to.equal('?query=foo');\r\n });\r\n\r\n it('should remove empty sin param', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n handler.persistState({ selectedFacets: getDefaultSelectedFacets() });\r\n expect(window.location.search).to.equal('');\r\n });\r\n\r\n it('should persist metadata search type only when option is true', async () => {\r\n const url = new URL(window.location.href);\r\n url.search = '?sin=';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n handler.persistState(\r\n {\r\n selectedFacets: getDefaultSelectedFacets(),\r\n searchType: SearchType.METADATA,\r\n },\r\n { persistMetadataSearchType: false },\r\n );\r\n expect(window.location.search).to.equal('');\r\n\r\n handler.persistState(\r\n {\r\n selectedFacets: getDefaultSelectedFacets(),\r\n searchType: SearchType.METADATA,\r\n },\r\n { persistMetadataSearchType: true },\r\n );\r\n expect(window.location.search).to.equal('?sin=MD');\r\n });\r\n\r\n it('round trip load/persist should erase numbers in square brackets', async () => {\r\n const handler = new RestorationStateHandler({ context: 'search' });\r\n\r\n const url = new URL(window.location.href);\r\n url.search = '?and[0]=subject:\"foo\"';\r\n window.history.replaceState({ path: url.href }, '', url.href);\r\n\r\n // Load state from the URL and immediately persist it back to the URL\r\n const restorationState = handler.getRestorationState();\r\n handler.persistState(restorationState);\r\n\r\n // Ensure the new URL includes the \"normalized\" facet parameter and not the numbered one\r\n expect(decodeURIComponent(window.location.search)).to.include(\r\n 'and[]=subject:\"foo\"',\r\n );\r\n expect(new URL(window.location.href).searchParams.get('and[0]')).to.be.null;\r\n });\r\n});\r\n"]}
@@ -3,7 +3,6 @@ import { html } from 'lit';
3
3
  import '../src/tiles/review-block';
4
4
  describe('ReviewBlock component', () => {
5
5
  it('renders basic component', async () => {
6
- var _a, _b, _c, _d, _e, _f;
7
6
  const el = await fixture(html `<review-block
8
7
  title="Foo"
9
8
  body="foo bar baz"
@@ -11,38 +10,37 @@ describe('ReviewBlock component', () => {
11
10
  ></review-block>`);
12
11
  el.title = 'Foo';
13
12
  await el.updateComplete;
14
- const container = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.review-container');
13
+ const container = el.shadowRoot?.querySelector('.review-container');
15
14
  expect(container).to.exist;
16
- const title = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.review-title');
17
- expect((_c = title === null || title === void 0 ? void 0 : title.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Foo');
18
- const body = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.review-body');
19
- expect((_e = body === null || body === void 0 ? void 0 : body.textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('foo bar baz');
20
- const stars = (_f = el.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelector('.star-rating');
15
+ const title = el.shadowRoot?.querySelector('.review-title');
16
+ expect(title?.textContent?.trim()).to.equal('Foo');
17
+ const body = el.shadowRoot?.querySelector('.review-body');
18
+ expect(body?.textContent?.trim()).to.equal('foo bar baz');
19
+ const stars = el.shadowRoot?.querySelector('.star-rating');
21
20
  expect(stars).to.exist;
22
- expect(stars === null || stars === void 0 ? void 0 : stars.querySelectorAll('svg').length).to.equal(5);
23
- expect(stars === null || stars === void 0 ? void 0 : stars.querySelectorAll('.unfilled-star').length).to.equal(2);
21
+ expect(stars?.querySelectorAll('svg').length).to.equal(5);
22
+ expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(2);
24
23
  });
25
24
  it('renders with any of title/body/stars', async () => {
26
- var _a, _b, _c, _d, _e, _f;
27
25
  const el = await fixture(html `<review-block></review-block>`);
28
26
  // No content if no title/body/stars
29
- expect((_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.children.length).to.equal(0);
27
+ expect(el.shadowRoot?.children.length).to.equal(0);
30
28
  el.title = 'Foo';
31
29
  await el.updateComplete;
32
- const title = (_b = el.shadowRoot) === null || _b === void 0 ? void 0 : _b.querySelector('.review-title');
33
- expect((_c = title === null || title === void 0 ? void 0 : title.textContent) === null || _c === void 0 ? void 0 : _c.trim()).to.equal('Foo');
30
+ const title = el.shadowRoot?.querySelector('.review-title');
31
+ expect(title?.textContent?.trim()).to.equal('Foo');
34
32
  el.title = '';
35
33
  el.body = 'foo bar baz';
36
34
  await el.updateComplete;
37
- const body = (_d = el.shadowRoot) === null || _d === void 0 ? void 0 : _d.querySelector('.review-body');
38
- expect((_e = body === null || body === void 0 ? void 0 : body.textContent) === null || _e === void 0 ? void 0 : _e.trim()).to.equal('foo bar baz');
35
+ const body = el.shadowRoot?.querySelector('.review-body');
36
+ expect(body?.textContent?.trim()).to.equal('foo bar baz');
39
37
  el.body = '';
40
38
  el.starRating = 4;
41
39
  await el.updateComplete;
42
- const stars = (_f = el.shadowRoot) === null || _f === void 0 ? void 0 : _f.querySelector('.star-rating');
40
+ const stars = el.shadowRoot?.querySelector('.star-rating');
43
41
  expect(stars).to.exist;
44
- expect(stars === null || stars === void 0 ? void 0 : stars.querySelectorAll('svg').length).to.equal(5);
45
- expect(stars === null || stars === void 0 ? void 0 : stars.querySelectorAll('.unfilled-star').length).to.equal(1);
42
+ expect(stars?.querySelectorAll('svg').length).to.equal(5);
43
+ expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(1);
46
44
  });
47
45
  });
48
46
  //# sourceMappingURL=review-block.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"review-block.test.js","sourceRoot":"","sources":["../../test/review-block.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { ReviewBlock } from '../src/tiles/review-block';\nimport '../src/tiles/review-block';\n\ndescribe('ReviewBlock component', () => {\n it('renders basic component', async () => {\n const el = await fixture<ReviewBlock>(\n html`<review-block\n title=\"Foo\"\n body=\"foo bar baz\"\n starRating=\"3\"\n ></review-block>`,\n );\n\n el.title = 'Foo';\n await el.updateComplete;\n\n const container = el.shadowRoot?.querySelector('.review-container');\n expect(container).to.exist;\n\n const title = el.shadowRoot?.querySelector('.review-title');\n expect(title?.textContent?.trim()).to.equal('Foo');\n\n const body = el.shadowRoot?.querySelector('.review-body');\n expect(body?.textContent?.trim()).to.equal('foo bar baz');\n\n const stars = el.shadowRoot?.querySelector('.star-rating');\n expect(stars).to.exist;\n expect(stars?.querySelectorAll('svg').length).to.equal(5);\n expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(2);\n });\n\n it('renders with any of title/body/stars', async () => {\n const el = await fixture<ReviewBlock>(html`<review-block></review-block>`);\n\n // No content if no title/body/stars\n expect(el.shadowRoot?.children.length).to.equal(0);\n\n el.title = 'Foo';\n await el.updateComplete;\n\n const title = el.shadowRoot?.querySelector('.review-title');\n expect(title?.textContent?.trim()).to.equal('Foo');\n\n el.title = '';\n el.body = 'foo bar baz';\n await el.updateComplete;\n\n const body = el.shadowRoot?.querySelector('.review-body');\n expect(body?.textContent?.trim()).to.equal('foo bar baz');\n\n el.body = '';\n el.starRating = 4;\n await el.updateComplete;\n\n const stars = el.shadowRoot?.querySelector('.star-rating');\n expect(stars).to.exist;\n expect(stars?.querySelectorAll('svg').length).to.equal(5);\n expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(1);\n });\n});\n"]}
1
+ {"version":3,"file":"review-block.test.js","sourceRoot":"","sources":["../../test/review-block.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { ReviewBlock } from '../src/tiles/review-block';\nimport '../src/tiles/review-block';\n\ndescribe('ReviewBlock component', () => {\n it('renders basic component', async () => {\n const el = await fixture<ReviewBlock>(\n html`<review-block\n title=\"Foo\"\n body=\"foo bar baz\"\n starRating=\"3\"\n ></review-block>`,\n );\n\n el.title = 'Foo';\n await el.updateComplete;\n\n const container = el.shadowRoot?.querySelector('.review-container');\n expect(container).to.exist;\n\n const title = el.shadowRoot?.querySelector('.review-title');\n expect(title?.textContent?.trim()).to.equal('Foo');\n\n const body = el.shadowRoot?.querySelector('.review-body');\n expect(body?.textContent?.trim()).to.equal('foo bar baz');\n\n const stars = el.shadowRoot?.querySelector('.star-rating');\n expect(stars).to.exist;\n expect(stars?.querySelectorAll('svg').length).to.equal(5);\n expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(2);\n });\n\n it('renders with any of title/body/stars', async () => {\n const el = await fixture<ReviewBlock>(html`<review-block></review-block>`);\n\n // No content if no title/body/stars\n expect(el.shadowRoot?.children.length).to.equal(0);\n\n el.title = 'Foo';\n await el.updateComplete;\n\n const title = el.shadowRoot?.querySelector('.review-title');\n expect(title?.textContent?.trim()).to.equal('Foo');\n\n el.title = '';\n el.body = 'foo bar baz';\n await el.updateComplete;\n\n const body = el.shadowRoot?.querySelector('.review-body');\n expect(body?.textContent?.trim()).to.equal('foo bar baz');\n\n el.body = '';\n el.starRating = 4;\n await el.updateComplete;\n\n const stars = el.shadowRoot?.querySelector('.star-rating');\n expect(stars).to.exist;\n expect(stars?.querySelectorAll('svg').length).to.equal(5);\n expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(1);\n });\n});\n"]}
@@ -3,11 +3,10 @@ import { html } from 'lit';
3
3
  import '../../src/sort-filter-bar/alpha-bar-tooltip';
4
4
  describe('Alphabet Filter Bar Tooltips', () => {
5
5
  it('renders component', async () => {
6
- var _a, _b;
7
6
  const el = await fixture(html `<alpha-bar-tooltip .numResults=${42}></alpha-bar-tooltip>`);
8
7
  // Should render the number of results
9
- const tooltipText = (_a = el.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('#tooltip-text');
10
- expect((_b = tooltipText === null || tooltipText === void 0 ? void 0 : tooltipText.textContent) === null || _b === void 0 ? void 0 : _b.trim()).to.equal('42 results');
8
+ const tooltipText = el.shadowRoot?.querySelector('#tooltip-text');
9
+ expect(tooltipText?.textContent?.trim()).to.equal('42 results');
11
10
  });
12
11
  });
13
12
  //# sourceMappingURL=alpha-bar-tooltip.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"alpha-bar-tooltip.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/alpha-bar-tooltip.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,6CAA6C,CAAC;AAErD,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;;QACjC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,kCAAkC,EAAE,uBAAuB,CAChE,CAAC;QAEF,sCAAsC;QACtC,MAAM,WAAW,GAAG,MAAA,EAAE,CAAC,UAAU,0CAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAClE,MAAM,CAAC,MAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,WAAW,0CAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { AlphaBarTooltip } from '../../src/sort-filter-bar/alpha-bar-tooltip';\n\nimport '../../src/sort-filter-bar/alpha-bar-tooltip';\n\ndescribe('Alphabet Filter Bar Tooltips', () => {\n it('renders component', async () => {\n const el = await fixture<AlphaBarTooltip>(\n html`<alpha-bar-tooltip .numResults=${42}></alpha-bar-tooltip>`,\n );\n\n // Should render the number of results\n const tooltipText = el.shadowRoot?.querySelector('#tooltip-text');\n expect(tooltipText?.textContent?.trim()).to.equal('42 results');\n });\n});\n"]}
1
+ {"version":3,"file":"alpha-bar-tooltip.test.js","sourceRoot":"","sources":["../../../test/sort-filter-bar/alpha-bar-tooltip.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAG3B,OAAO,6CAA6C,CAAC;AAErD,QAAQ,CAAC,8BAA8B,EAAE,GAAG,EAAE;IAC5C,EAAE,CAAC,mBAAmB,EAAE,KAAK,IAAI,EAAE;QACjC,MAAM,EAAE,GAAG,MAAM,OAAO,CACtB,IAAI,CAAA,kCAAkC,EAAE,uBAAuB,CAChE,CAAC;QAEF,sCAAsC;QACtC,MAAM,WAAW,GAAG,EAAE,CAAC,UAAU,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect, fixture } from '@open-wc/testing';\nimport { html } from 'lit';\nimport type { AlphaBarTooltip } from '../../src/sort-filter-bar/alpha-bar-tooltip';\n\nimport '../../src/sort-filter-bar/alpha-bar-tooltip';\n\ndescribe('Alphabet Filter Bar Tooltips', () => {\n it('renders component', async () => {\n const el = await fixture<AlphaBarTooltip>(\n html`<alpha-bar-tooltip .numResults=${42}></alpha-bar-tooltip>`,\n );\n\n // Should render the number of results\n const tooltipText = el.shadowRoot?.querySelector('#tooltip-text');\n expect(tooltipText?.textContent?.trim()).to.equal('42 results');\n });\n});\n"]}