@internetarchive/collection-browser 2.7.6 → 2.7.7-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 (290) hide show
  1. package/.github/workflows/ci.yml +3 -3
  2. package/.prettierignore +1 -0
  3. package/dist/index.js +0 -2
  4. package/dist/index.js.map +1 -1
  5. package/dist/src/app-root.d.ts +1 -1
  6. package/dist/src/app-root.js +2 -3
  7. package/dist/src/app-root.js.map +1 -1
  8. package/dist/src/assets/img/icons/arrow-left.d.ts +1 -1
  9. package/dist/src/assets/img/icons/arrow-right.d.ts +1 -1
  10. package/dist/src/assets/img/icons/chevron.d.ts +1 -1
  11. package/dist/src/assets/img/icons/contract.d.ts +1 -1
  12. package/dist/src/assets/img/icons/empty-query.d.ts +1 -1
  13. package/dist/src/assets/img/icons/expand.d.ts +1 -1
  14. package/dist/src/assets/img/icons/eye-closed.d.ts +1 -1
  15. package/dist/src/assets/img/icons/eye.d.ts +1 -1
  16. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  17. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  18. package/dist/src/assets/img/icons/filter.d.ts +1 -1
  19. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  20. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  21. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  22. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  23. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  24. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  25. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  26. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  27. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  28. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  29. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  34. package/dist/src/assets/img/icons/null-result.d.ts +1 -1
  35. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  36. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  37. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  38. package/dist/src/assets/img/icons/views.d.ts +1 -1
  39. package/dist/src/circular-activity-indicator.d.ts +1 -1
  40. package/dist/src/circular-activity-indicator.js.map +1 -1
  41. package/dist/src/collection-browser.js +1 -2
  42. package/dist/src/collection-browser.js.map +1 -1
  43. package/dist/src/collection-facets/facet-row.js.map +1 -1
  44. package/dist/src/collection-facets/facet-tombstone-row.d.ts +1 -1
  45. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
  46. package/dist/src/collection-facets/facets-template.js +5 -5
  47. package/dist/src/collection-facets/facets-template.js.map +1 -1
  48. package/dist/src/collection-facets/more-facets-content.d.ts +1 -1
  49. package/dist/src/collection-facets/more-facets-content.js +2 -4
  50. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  51. package/dist/src/collection-facets/more-facets-pagination.js +1 -0
  52. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  53. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -1
  54. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js.map +1 -1
  55. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +1 -1
  56. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js.map +1 -1
  57. package/dist/src/collection-facets/smart-facets/models.d.ts +2 -2
  58. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +1 -4
  59. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  60. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +1 -1
  61. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  62. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +1 -1
  63. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  64. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  65. package/dist/src/collection-facets/toggle-switch.d.ts +2 -2
  66. package/dist/src/collection-facets/toggle-switch.js +2 -2
  67. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  68. package/dist/src/collection-facets.js +2 -3
  69. package/dist/src/collection-facets.js.map +1 -1
  70. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  71. package/dist/src/data-source/collection-browser-data-source.js +8 -9
  72. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  73. package/dist/src/data-source/models.d.ts +2 -2
  74. package/dist/src/empty-placeholder.d.ts +1 -1
  75. package/dist/src/empty-placeholder.js +10 -11
  76. package/dist/src/empty-placeholder.js.map +1 -1
  77. package/dist/src/expanded-date-picker.js.map +1 -1
  78. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  79. package/dist/src/language-code-handler/language-code-mapping.js +86 -86
  80. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -1
  81. package/dist/src/manage/manage-bar.js +10 -10
  82. package/dist/src/manage/manage-bar.js.map +1 -1
  83. package/dist/src/mediatype/mediatype-config.js +1 -0
  84. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  85. package/dist/src/models.d.ts +15 -15
  86. package/dist/src/models.js +3 -3
  87. package/dist/src/models.js.map +1 -1
  88. package/dist/src/restoration-state-handler.js +0 -1
  89. package/dist/src/restoration-state-handler.js.map +1 -1
  90. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +1 -1
  91. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  92. package/dist/src/sort-filter-bar/alpha-bar.js +9 -9
  93. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  94. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  95. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  96. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  97. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/sort-filter-bar.js +1 -2
  103. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  104. package/dist/src/tiles/base-tile-component.js.map +1 -1
  105. package/dist/src/tiles/collection-browser-loading-tile.d.ts +1 -1
  106. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
  107. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  108. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  109. package/dist/src/tiles/grid/item-tile.js +2 -3
  110. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  111. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  112. package/dist/src/tiles/grid/tile-stats.d.ts +1 -1
  113. package/dist/src/tiles/grid/tile-stats.js +2 -2
  114. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  115. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  116. package/dist/src/tiles/hover/tile-hover-pane.d.ts +1 -1
  117. package/dist/src/tiles/hover/tile-hover-pane.js +3 -1
  118. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  119. package/dist/src/tiles/image-block.d.ts +1 -1
  120. package/dist/src/tiles/image-block.js +1 -1
  121. package/dist/src/tiles/image-block.js.map +1 -1
  122. package/dist/src/tiles/item-image.d.ts +1 -1
  123. package/dist/src/tiles/item-image.js +2 -2
  124. package/dist/src/tiles/item-image.js.map +1 -1
  125. package/dist/src/tiles/list/tile-list-compact-header.d.ts +1 -1
  126. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  127. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -1
  128. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  129. package/dist/src/tiles/list/tile-list.js +4 -6
  130. package/dist/src/tiles/list/tile-list.js.map +1 -1
  131. package/dist/src/tiles/mediatype-icon.d.ts +1 -1
  132. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  133. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  134. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  135. package/dist/src/tiles/review-block.js.map +1 -1
  136. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  137. package/dist/src/tiles/tile-dispatcher.d.ts +1 -1
  138. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  139. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  140. package/dist/src/utils/facet-utils.js.map +1 -1
  141. package/dist/src/utils/format-count.d.ts +2 -2
  142. package/dist/src/utils/format-count.js +0 -1
  143. package/dist/src/utils/format-count.js.map +1 -1
  144. package/dist/src/utils/format-date.d.ts +1 -1
  145. package/dist/src/utils/format-date.js +4 -2
  146. package/dist/src/utils/format-date.js.map +1 -1
  147. package/dist/src/utils/format-unit-size.js.map +1 -1
  148. package/dist/src/utils/log.js +1 -3
  149. package/dist/src/utils/log.js.map +1 -1
  150. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  151. package/dist/test/collection-browser.test.js +2 -1
  152. package/dist/test/collection-browser.test.js.map +1 -1
  153. package/dist/test/collection-facets/facet-row.test.js +4 -1
  154. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  155. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  156. package/dist/test/collection-facets/more-facets-content.test.js +0 -1
  157. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  158. package/dist/test/collection-facets/more-facets-pagination.test.js +0 -1
  159. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  160. package/dist/test/collection-facets/toggle-switch.test.js +12 -3
  161. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  162. package/dist/test/collection-facets.test.js +0 -1
  163. package/dist/test/collection-facets.test.js.map +1 -1
  164. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -1
  165. package/dist/test/empty-placeholder.test.js +0 -1
  166. package/dist/test/empty-placeholder.test.js.map +1 -1
  167. package/dist/test/expanded-date-picker.test.js.map +1 -1
  168. package/dist/test/icon-overlay.test.js +0 -1
  169. package/dist/test/icon-overlay.test.js.map +1 -1
  170. package/dist/test/image-block.test.js +0 -1
  171. package/dist/test/image-block.test.js.map +1 -1
  172. package/dist/test/item-image.test.js +0 -1
  173. package/dist/test/item-image.test.js.map +1 -1
  174. package/dist/test/manage/manage-bar.test.js +0 -1
  175. package/dist/test/manage/manage-bar.test.js.map +1 -1
  176. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  177. package/dist/test/mocks/mock-search-service.js.map +1 -1
  178. package/dist/test/restoration-state-handler.test.js.map +1 -1
  179. package/dist/test/review-block.test.js +0 -1
  180. package/dist/test/review-block.test.js.map +1 -1
  181. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  182. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  183. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -1
  184. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  185. package/dist/test/text-overlay.test.js +0 -1
  186. package/dist/test/text-overlay.test.js.map +1 -1
  187. package/dist/test/text-snippet-block.test.js +0 -1
  188. package/dist/test/text-snippet-block.test.js.map +1 -1
  189. package/dist/test/tile-stats.test.js +22 -23
  190. package/dist/test/tile-stats.test.js.map +1 -1
  191. package/dist/test/tiles/grid/account-tile.test.js +0 -1
  192. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  193. package/dist/test/tiles/grid/collection-tile.test.js +0 -1
  194. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  195. package/dist/test/tiles/grid/item-tile.test.js +0 -1
  196. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  197. package/dist/test/tiles/grid/search-tile.test.js +0 -1
  198. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  199. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  200. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  201. package/dist/test/tiles/list/tile-list-compact.test.js +0 -1
  202. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  203. package/dist/test/tiles/list/tile-list.test.js +0 -1
  204. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  205. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  206. package/dist/test/utils/format-count.test.js.map +1 -1
  207. package/dist/test/utils/format-date.test.js +13 -0
  208. package/dist/test/utils/format-date.test.js.map +1 -1
  209. package/dist/test/utils/local-date-from-utc.test.js.map +1 -1
  210. package/eslint.config.mjs +53 -0
  211. package/index.html +0 -3
  212. package/package.json +38 -37
  213. package/src/app-root.ts +20 -21
  214. package/src/collection-browser.ts +33 -35
  215. package/src/collection-facets/facets-template.ts +7 -6
  216. package/src/collection-facets/more-facets-content.ts +11 -13
  217. package/src/collection-facets/more-facets-pagination.ts +3 -2
  218. package/src/collection-facets/smart-facets/dedupe.ts +2 -2
  219. package/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts +1 -1
  220. package/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts +6 -6
  221. package/src/collection-facets/smart-facets/smart-facet-bar.ts +6 -8
  222. package/src/collection-facets/smart-facets/smart-facet-button.ts +5 -3
  223. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +4 -4
  224. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +1 -1
  225. package/src/collection-facets/toggle-switch.ts +2 -2
  226. package/src/collection-facets.ts +18 -19
  227. package/src/data-source/collection-browser-data-source-interface.ts +5 -1
  228. package/src/data-source/collection-browser-data-source.ts +37 -34
  229. package/src/empty-placeholder.ts +19 -16
  230. package/src/expanded-date-picker.ts +1 -1
  231. package/src/language-code-handler/language-code-handler.ts +1 -1
  232. package/src/manage/manage-bar.ts +14 -12
  233. package/src/mediatype/mediatype-config.ts +1 -0
  234. package/src/models.ts +3 -3
  235. package/src/restoration-state-handler.ts +14 -15
  236. package/src/sort-filter-bar/alpha-bar.ts +16 -17
  237. package/src/sort-filter-bar/sort-filter-bar.ts +14 -15
  238. package/src/tiles/grid/account-tile.ts +1 -1
  239. package/src/tiles/grid/collection-tile.ts +1 -1
  240. package/src/tiles/grid/item-tile.ts +9 -9
  241. package/src/tiles/grid/tile-stats.ts +4 -4
  242. package/src/tiles/hover/hover-pane-controller.ts +1 -1
  243. package/src/tiles/hover/tile-hover-pane.ts +4 -2
  244. package/src/tiles/item-image.ts +1 -1
  245. package/src/tiles/list/tile-list-compact.ts +2 -2
  246. package/src/tiles/list/tile-list.ts +22 -24
  247. package/src/tiles/tile-dispatcher.ts +5 -5
  248. package/src/tiles/tile-display-value-provider.ts +4 -4
  249. package/src/utils/facet-utils.ts +6 -6
  250. package/src/utils/format-count.ts +2 -3
  251. package/src/utils/format-date.ts +5 -3
  252. package/src/utils/format-unit-size.ts +1 -1
  253. package/src/utils/log.ts +1 -3
  254. package/test/collection-browser.test.ts +123 -122
  255. package/test/collection-facets/facet-row.test.ts +31 -28
  256. package/test/collection-facets/facets-template.test.ts +9 -9
  257. package/test/collection-facets/more-facets-content.test.ts +14 -15
  258. package/test/collection-facets/more-facets-pagination.test.ts +18 -19
  259. package/test/collection-facets/toggle-switch.test.ts +28 -18
  260. package/test/collection-facets.test.ts +36 -37
  261. package/test/data-source/collection-browser-data-source.test.ts +2 -2
  262. package/test/empty-placeholder.test.ts +6 -7
  263. package/test/expanded-date-picker.test.ts +17 -18
  264. package/test/icon-overlay.test.ts +0 -1
  265. package/test/image-block.test.ts +6 -7
  266. package/test/item-image.test.ts +0 -1
  267. package/test/manage/manage-bar.test.ts +13 -14
  268. package/test/mocks/mock-search-responses.ts +2 -1
  269. package/test/mocks/mock-search-service.ts +1 -1
  270. package/test/restoration-state-handler.test.ts +12 -12
  271. package/test/review-block.test.ts +1 -2
  272. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +1 -1
  273. package/test/sort-filter-bar/alpha-bar.test.ts +5 -5
  274. package/test/sort-filter-bar/sort-filter-bar.test.ts +38 -39
  275. package/test/text-overlay.test.ts +0 -1
  276. package/test/text-snippet-block.test.ts +5 -6
  277. package/test/tile-stats.test.ts +26 -35
  278. package/test/tiles/grid/account-tile.test.ts +2 -3
  279. package/test/tiles/grid/collection-tile.test.ts +3 -4
  280. package/test/tiles/grid/item-tile.test.ts +13 -14
  281. package/test/tiles/grid/search-tile.test.ts +1 -2
  282. package/test/tiles/hover/hover-pane-controller.test.ts +15 -15
  283. package/test/tiles/hover/tile-hover-pane.test.ts +5 -5
  284. package/test/tiles/list/tile-list-compact.test.ts +1 -2
  285. package/test/tiles/list/tile-list.test.ts +10 -11
  286. package/test/tiles/tile-dispatcher.test.ts +5 -5
  287. package/test/utils/format-count.test.ts +1 -1
  288. package/test/utils/format-date.test.ts +17 -0
  289. package/test/utils/local-date-from-utc.test.ts +1 -1
  290. package/tsconfig.json +0 -1
@@ -1,4 +1,3 @@
1
- /* eslint-disable import/no-duplicates */
2
1
  import {
3
2
  css,
4
3
  html,
@@ -171,7 +170,7 @@ export class CollectionFacets extends LitElement {
171
170
  : nothing}
172
171
  ${this.collectionPartOfTemplate}
173
172
  ${this.mergedFacets.map(facetGroup =>
174
- this.getFacetGroupTemplate(facetGroup)
173
+ this.getFacetGroupTemplate(facetGroup),
175
174
  )}
176
175
  </div>
177
176
  `;
@@ -349,7 +348,7 @@ export class CollectionFacets extends LitElement {
349
348
  e: CustomEvent<{
350
349
  minDate: string;
351
350
  maxDate: string;
352
- }>
351
+ }>,
353
352
  ): void => {
354
353
  const { minDate, maxDate } = e.detail;
355
354
  const event = new CustomEvent('histogramDateRangeUpdated', {
@@ -366,10 +365,10 @@ export class CollectionFacets extends LitElement {
366
365
 
367
366
  facetDisplayOrder.forEach(facetKey => {
368
367
  const selectedFacetGroup = this.selectedFacetGroups.find(
369
- group => group.key === facetKey
368
+ group => group.key === facetKey,
370
369
  );
371
370
  const aggregateFacetGroup = this.aggregationFacetGroups.find(
372
- group => group.key === facetKey
371
+ group => group.key === facetKey,
373
372
  );
374
373
 
375
374
  // if the user selected a facet, but it's not in the aggregation, we add it as-is
@@ -388,7 +387,7 @@ export class CollectionFacets extends LitElement {
388
387
  let bucketsWithCount =
389
388
  selectedFacetGroup?.buckets.map(bucket => {
390
389
  const selectedBucket = aggregateFacetGroup.buckets.find(
391
- b => b.key === bucket.key
390
+ b => b.key === bucket.key,
392
391
  );
393
392
  return selectedBucket
394
393
  ? {
@@ -412,7 +411,7 @@ export class CollectionFacets extends LitElement {
412
411
  * - additionally want to show all items (selected/suppressed) in page facet area
413
412
  */
414
413
  let allowedFacetCount = Object.keys(
415
- (selectedFacetGroup?.buckets as []) || []
414
+ (selectedFacetGroup?.buckets as []) || [],
416
415
  )?.length;
417
416
  if (allowedFacetCount < this.allowedFacetCount) {
418
417
  allowedFacetCount = this.allowedFacetCount; // splice start index from 0th
@@ -421,7 +420,7 @@ export class CollectionFacets extends LitElement {
421
420
  // For lending facets, only include a specific subset of buckets
422
421
  if (facetKey === 'lending') {
423
422
  bucketsWithCount = bucketsWithCount.filter(
424
- bucket => lendingFacetKeysVisibility[bucket.key as LendingFacetKey]
423
+ bucket => lendingFacetKeysVisibility[bucket.key as LendingFacetKey],
425
424
  );
426
425
  }
427
426
 
@@ -431,13 +430,13 @@ export class CollectionFacets extends LitElement {
431
430
  // For mediatype facets, ensure the collection bucket is always shown if present
432
431
  if (facetKey === 'mediatype') {
433
432
  const collectionIndex = bucketsWithCount.findIndex(
434
- bucket => bucket.key === 'collection'
433
+ bucket => bucket.key === 'collection',
435
434
  );
436
435
 
437
436
  if (collectionIndex >= allowedFacetCount) {
438
437
  const [collectionBucket] = bucketsWithCount.splice(
439
438
  collectionIndex,
440
- 1
439
+ 1,
441
440
  );
442
441
 
443
442
  // If we're showing lots of selected facets, ensure we're not cutting off the last one
@@ -484,7 +483,7 @@ export class CollectionFacets extends LitElement {
484
483
  count: facetData.count,
485
484
  state: facetData.state,
486
485
  };
487
- }
486
+ },
488
487
  );
489
488
 
490
489
  return {
@@ -492,7 +491,7 @@ export class CollectionFacets extends LitElement {
492
491
  key: option,
493
492
  buckets,
494
493
  };
495
- }
494
+ },
496
495
  );
497
496
 
498
497
  return facetGroups;
@@ -512,7 +511,7 @@ export class CollectionFacets extends LitElement {
512
511
  if (!title) return;
513
512
 
514
513
  let castedBuckets = aggregation.getSortedBuckets(
515
- defaultFacetSort[option]
514
+ defaultFacetSort[option],
516
515
  ) as Bucket[];
517
516
 
518
517
  if (option === 'collection') {
@@ -556,7 +555,7 @@ export class CollectionFacets extends LitElement {
556
555
  * chevron for the mobile view
557
556
  */
558
557
  private getFacetGroupTemplate(
559
- facetGroup: FacetGroup
558
+ facetGroup: FacetGroup,
560
559
  ): TemplateResult | typeof nothing {
561
560
  if (!this.facetsLoading && facetGroup.buckets.length === 0) return nothing;
562
561
 
@@ -611,7 +610,7 @@ export class CollectionFacets extends LitElement {
611
610
  return html`
612
611
  ${map(
613
612
  Array(5).fill(null),
614
- () => html`<facet-tombstone-row></facet-tombstone-row>`
613
+ () => html`<facet-tombstone-row></facet-tombstone-row>`,
615
614
  )}
616
615
  `;
617
616
  }
@@ -622,7 +621,7 @@ export class CollectionFacets extends LitElement {
622
621
  * TODO: want to fire analytics?
623
622
  */
624
623
  private searchMoreFacetsLink(
625
- facetGroup: FacetGroup
624
+ facetGroup: FacetGroup,
626
625
  ): TemplateResult | typeof nothing {
627
626
  // Don't render More... links for FTS searches
628
627
  if (!this.moreLinksVisible) {
@@ -654,7 +653,7 @@ export class CollectionFacets extends LitElement {
654
653
  label: facetGroup.key,
655
654
  });
656
655
  this.dispatchEvent(
657
- new CustomEvent('showMoreFacets', { detail: facetGroup.key })
656
+ new CustomEvent('showMoreFacets', { detail: facetGroup.key }),
658
657
  );
659
658
  }}
660
659
  data-testid="more-link-btn"
@@ -665,7 +664,7 @@ export class CollectionFacets extends LitElement {
665
664
 
666
665
  async showMoreFacetsModal(
667
666
  facetGroup: FacetGroup,
668
- sortedBy: AggregationSortType
667
+ sortedBy: AggregationSortType,
669
668
  ): Promise<void> {
670
669
  const customModalContent = html`
671
670
  <more-facets-content
@@ -724,7 +723,7 @@ export class CollectionFacets extends LitElement {
724
723
  this.selectedFacets,
725
724
  facetGroup.key,
726
725
  e.detail.bucket,
727
- true
726
+ true,
728
727
  );
729
728
 
730
729
  const event = new CustomEvent<SelectedFacets>('facetsChanged', {
@@ -280,7 +280,11 @@ export interface CollectionBrowserDataSourceInterface
280
280
  * @param callback A callback function to apply on each tile model, as with Array.map
281
281
  */
282
282
  map(
283
- callback: (model: TileModel, index: number, array: TileModel[]) => TileModel
283
+ callback: (
284
+ model: TileModel,
285
+ index: number,
286
+ array: TileModel[],
287
+ ) => TileModel,
284
288
  ): void;
285
289
 
286
290
  /**
@@ -162,13 +162,12 @@ export class CollectionBrowserDataSource
162
162
  return this._initialSearchCompletePromise;
163
163
  }
164
164
 
165
- // eslint-disable-next-line no-useless-constructor
166
165
  constructor(
167
166
  /** The host element to which this controller should attach listeners */
168
167
  private readonly host: ReactiveControllerHost &
169
168
  CollectionBrowserSearchInterface,
170
169
  /** Default size of result pages */
171
- private pageSize: number = 50
170
+ private pageSize: number = 50,
172
171
  ) {
173
172
  // Just setting some property values
174
173
  }
@@ -264,13 +263,13 @@ export class CollectionBrowserDataSource
264
263
  const pageStartIndex = this.pageSize * i;
265
264
  this.addPage(
266
265
  firstPageNum + i,
267
- tiles.slice(pageStartIndex, pageStartIndex + this.pageSize)
266
+ tiles.slice(pageStartIndex, pageStartIndex + this.pageSize),
268
267
  );
269
268
  }
270
269
 
271
270
  const visiblePages = this.host.currentVisiblePageNumbers;
272
271
  const needsReload = visiblePages.some(
273
- page => page >= firstPageNum && page <= firstPageNum + numPages
272
+ page => page >= firstPageNum && page <= firstPageNum + numPages,
274
273
  );
275
274
  if (needsReload) {
276
275
  this.refreshVisibleResults();
@@ -431,15 +430,19 @@ export class CollectionBrowserDataSource
431
430
  * @inheritdoc
432
431
  */
433
432
  map(
434
- callback: (model: TileModel, index: number, array: TileModel[]) => TileModel
433
+ callback: (
434
+ model: TileModel,
435
+ index: number,
436
+ array: TileModel[],
437
+ ) => TileModel,
435
438
  ): void {
436
439
  this.pages = Object.fromEntries(
437
440
  Object.entries(this.pages).map(([page, tileModels]) => [
438
441
  page,
439
442
  tileModels.map((model, index, array) =>
440
- model ? callback(model, index, array) : model
443
+ model ? callback(model, index, array) : model,
441
444
  ),
442
- ])
445
+ ]),
443
446
  );
444
447
  this.requestHostUpdate();
445
448
  this.refreshVisibleResults();
@@ -536,12 +539,12 @@ export class CollectionBrowserDataSource
536
539
  * @returns A filtered array of tile models satisfying the predicate
537
540
  */
538
541
  private getFilteredTileModels(
539
- predicate: (model: TileModel, index: number, array: TileModel[]) => unknown
542
+ predicate: (model: TileModel, index: number, array: TileModel[]) => unknown,
540
543
  ): TileModel[] {
541
544
  return Object.values(this.pages)
542
545
  .flat()
543
546
  .filter((model, index, array) =>
544
- model ? predicate(model, index, array) : false
547
+ model ? predicate(model, index, array) : false,
545
548
  );
546
549
  }
547
550
 
@@ -653,25 +656,25 @@ export class CollectionBrowserDataSource
653
656
  builder.addFilter(
654
657
  'year',
655
658
  this.host.minSelectedDate,
656
- FilterConstraint.GREATER_OR_EQUAL
659
+ FilterConstraint.GREATER_OR_EQUAL,
657
660
  );
658
661
  }
659
662
  if (this.host.maxSelectedDate) {
660
663
  builder.addFilter(
661
664
  'year',
662
665
  this.host.maxSelectedDate,
663
- FilterConstraint.LESS_OR_EQUAL
666
+ FilterConstraint.LESS_OR_EQUAL,
664
667
  );
665
668
  }
666
669
 
667
670
  // Add any selected facets
668
671
  if (this.host.selectedFacets) {
669
672
  for (const [facetName, facetValues] of Object.entries(
670
- this.host.selectedFacets
673
+ this.host.selectedFacets,
671
674
  )) {
672
675
  const { name, values } = this.prepareFacetForFetch(
673
676
  facetName,
674
- facetValues
677
+ facetValues,
675
678
  );
676
679
  for (const [value, bucket] of Object.entries(values)) {
677
680
  let constraint;
@@ -693,14 +696,14 @@ export class CollectionBrowserDataSource
693
696
  builder.addFilter(
694
697
  'firstTitle',
695
698
  this.host.selectedTitleFilter,
696
- FilterConstraint.INCLUDE
699
+ FilterConstraint.INCLUDE,
697
700
  );
698
701
  }
699
702
  if (this.host.selectedCreatorFilter) {
700
703
  builder.addFilter(
701
704
  'firstCreator',
702
705
  this.host.selectedCreatorFilter,
703
- FilterConstraint.INCLUDE
706
+ FilterConstraint.INCLUDE,
704
707
  );
705
708
  }
706
709
 
@@ -788,7 +791,7 @@ export class CollectionBrowserDataSource
788
791
  if (!this.host.selectedFacets) return undefined;
789
792
  const facetClauses = [];
790
793
  for (const [facetName, facetValues] of Object.entries(
791
- this.host.selectedFacets
794
+ this.host.selectedFacets,
792
795
  )) {
793
796
  facetClauses.push(this.buildFacetClause(facetName, facetValues));
794
797
  }
@@ -841,11 +844,11 @@ export class CollectionBrowserDataSource
841
844
  */
842
845
  private buildFacetClause(
843
846
  facetName: string,
844
- facetValues: Record<string, FacetBucket>
847
+ facetValues: Record<string, FacetBucket>,
845
848
  ): string {
846
849
  const { name: facetQueryName, values } = this.prepareFacetForFetch(
847
850
  facetName,
848
- facetValues
851
+ facetValues,
849
852
  );
850
853
  const facetEntries = Object.entries(values);
851
854
  if (facetEntries.length === 0) return '';
@@ -869,7 +872,7 @@ export class CollectionBrowserDataSource
869
872
  */
870
873
  private prepareFacetForFetch(
871
874
  facetName: string,
872
- facetValues: Record<string, FacetBucket>
875
+ facetValues: Record<string, FacetBucket>,
873
876
  ): { name: string; values: Record<string, FacetBucket> } {
874
877
  // eslint-disable-next-line prefer-const
875
878
  let [normalizedName, normalizedValues] = [facetName, facetValues];
@@ -891,7 +894,7 @@ export class CollectionBrowserDataSource
891
894
  */
892
895
  private joinFacetClauses(facetClauses: string[]): string | undefined {
893
896
  const nonEmptyFacetClauses = facetClauses.filter(
894
- clause => clause.length > 0
897
+ clause => clause.length > 0,
895
898
  );
896
899
  return nonEmptyFacetClauses.length > 0
897
900
  ? `(${nonEmptyFacetClauses.join(' AND ')})`
@@ -925,12 +928,12 @@ export class CollectionBrowserDataSource
925
928
  };
926
929
  params.uid = await this.requestUID(
927
930
  { ...params, sort: sortParams },
928
- 'aggregations'
931
+ 'aggregations',
929
932
  );
930
933
 
931
934
  const searchResponse = await this.host.searchService?.search(
932
935
  params,
933
- this.host.searchType
936
+ this.host.searchType,
934
937
  );
935
938
  const success = searchResponse?.success;
936
939
 
@@ -947,10 +950,10 @@ export class CollectionBrowserDataSource
947
950
  const detailMsg = searchResponse?.error?.details?.message;
948
951
 
949
952
  if (!errorMsg && !detailMsg) {
950
- // @ts-ignore: Property 'Sentry' does not exist on type 'Window & typeof globalThis'
953
+ // @ts-expect-error: Property 'Sentry' does not exist on type 'Window & typeof globalThis'
951
954
  window?.Sentry?.captureMessage?.(
952
955
  'Missing or malformed facet response from backend',
953
- 'error'
956
+ 'error',
954
957
  );
955
958
  }
956
959
 
@@ -1045,7 +1048,7 @@ export class CollectionBrowserDataSource
1045
1048
  // log('=== FIRING PAGE REQUEST ===', params);
1046
1049
  const searchResponse = await this.host.searchService?.search(
1047
1050
  params,
1048
- this.host.searchType
1051
+ this.host.searchType,
1049
1052
  );
1050
1053
  // log('=== RECEIVED PAGE RESPONSE IN CB ===', searchResponse);
1051
1054
  const success = searchResponse?.success;
@@ -1067,7 +1070,7 @@ export class CollectionBrowserDataSource
1067
1070
 
1068
1071
  if (!this.queryErrorMessage) {
1069
1072
  this.queryErrorMessage = 'Missing or malformed response from backend';
1070
- // @ts-ignore: Property 'Sentry' does not exist on type 'Window & typeof globalThis'
1073
+ // @ts-expect-error: Property 'Sentry' does not exist on type 'Window & typeof globalThis'
1071
1074
  window?.Sentry?.captureMessage?.(this.queryErrorMessage, 'error');
1072
1075
  }
1073
1076
 
@@ -1094,7 +1097,7 @@ export class CollectionBrowserDataSource
1094
1097
 
1095
1098
  if (this.collectionExtraInfo) {
1096
1099
  this.parentCollections = [].concat(
1097
- this.collectionExtraInfo.public_metadata?.collection ?? []
1100
+ this.collectionExtraInfo.public_metadata?.collection ?? [],
1098
1101
  );
1099
1102
  }
1100
1103
  } else if (this.host.withinProfile) {
@@ -1115,7 +1118,7 @@ export class CollectionBrowserDataSource
1115
1118
  // Update the data source for each returned page.
1116
1119
  // For loans and web archives, we must account for receiving more pages than we asked for.
1117
1120
  const isUnpagedElement = ['lending', 'web_archives'].includes(
1118
- this.host.profileElement!
1121
+ this.host.profileElement!,
1119
1122
  );
1120
1123
  if (isUnpagedElement) {
1121
1124
  numPages = Math.ceil(results.length / this.pageSize);
@@ -1128,7 +1131,7 @@ export class CollectionBrowserDataSource
1128
1131
  this.addFetchedResultsToDataSource(
1129
1132
  pageNumber + i,
1130
1133
  results.slice(pageStartIndex, pageStartIndex + this.pageSize),
1131
- !isUnpagedElement || i === numPages - 1
1134
+ !isUnpagedElement || i === numPages - 1,
1132
1135
  );
1133
1136
  }
1134
1137
  }
@@ -1154,7 +1157,7 @@ export class CollectionBrowserDataSource
1154
1157
  private addFetchedResultsToDataSource(
1155
1158
  pageNumber: number,
1156
1159
  results: SearchResult[],
1157
- needsReload = true
1160
+ needsReload = true,
1158
1161
  ): void {
1159
1162
  const tiles: TileModel[] = [];
1160
1163
  results?.forEach(result => {
@@ -1173,7 +1176,7 @@ export class CollectionBrowserDataSource
1173
1176
  * Fetches the aggregation buckets for the given prefix filter type.
1174
1177
  */
1175
1178
  private async fetchPrefixFilterBuckets(
1176
- filterType: PrefixFilterType
1179
+ filterType: PrefixFilterType,
1177
1180
  ): Promise<Bucket[]> {
1178
1181
  const trimmedQuery = this.host.baseQuery?.trim();
1179
1182
  if (!this.canPerformSearch) return [];
@@ -1193,12 +1196,12 @@ export class CollectionBrowserDataSource
1193
1196
  };
1194
1197
  params.uid = await this.requestUID(
1195
1198
  { ...params, sort: sortParams },
1196
- 'aggregations'
1199
+ 'aggregations',
1197
1200
  );
1198
1201
 
1199
1202
  const searchResponse = await this.host.searchService?.search(
1200
1203
  params,
1201
- this.host.searchType
1204
+ this.host.searchType,
1202
1205
  );
1203
1206
 
1204
1207
  return (searchResponse?.success?.response?.aggregations?.[
@@ -1226,7 +1229,7 @@ export class CollectionBrowserDataSource
1226
1229
  acc[(bucket.key as string).toUpperCase()] = bucket.doc_count;
1227
1230
  return acc;
1228
1231
  },
1229
- {}
1232
+ {},
1230
1233
  );
1231
1234
 
1232
1235
  this.requestHostUpdate();
@@ -23,35 +23,38 @@ export type PlaceholderType =
23
23
  @customElement('empty-placeholder')
24
24
  export class EmptyPlaceholder extends LitElement {
25
25
  private static readonly MESSAGE_EMPTY_QUERY = msg(
26
- 'To begin searching, enter a search term in the box above and hit "Go".'
26
+ 'To begin searching, enter a search term in the box above and hit "Go".',
27
27
  );
28
28
 
29
29
  private static readonly MESSAGE_NO_SEARCH_RESULTS = msg(
30
30
  'Your search did not match any items in the Archive. ' +
31
- 'Try different keywords or a more general search.'
31
+ 'Try different keywords or a more general search.',
32
32
  );
33
33
 
34
34
  private static readonly MESSAGE_NO_COLLECTION_RESULTS = msg(
35
35
  'Your search did not match any items in this collection. ' +
36
- 'Try different keywords or a more general search.'
36
+ 'Try different keywords or a more general search.',
37
37
  );
38
38
 
39
39
  private static readonly MESSAGE_NO_VIEWABLE_MEMBERS = msg(
40
- 'This collection contains no viewable items.'
40
+ 'This collection contains no viewable items.',
41
41
  );
42
42
 
43
- private static readonly MESSAGE_QUERY_ERROR = msg(html`The search engine
44
- encountered an error, which might be related to your search query.
45
- <a
46
- href="https://help.archive.org/help/search-building-powerful-complex-queries/"
47
- >
48
- Tips for constructing search queries.
49
- </a> `);
50
-
51
- private static readonly MESSAGE_COLLECTION_ERROR = msg(html`The search engine
52
- encountered an error while loading this collection. If the problem persists,
53
- please let us know at
54
- <a href="mailto:info@archive.org">info@archive.org</a>.`);
43
+ private static readonly MESSAGE_QUERY_ERROR = msg(
44
+ html`The search engine encountered an error, which might be related to your
45
+ search query.
46
+ <a
47
+ href="https://help.archive.org/help/search-building-powerful-complex-queries/"
48
+ >
49
+ Tips for constructing search queries.
50
+ </a> `,
51
+ );
52
+
53
+ private static readonly MESSAGE_COLLECTION_ERROR = msg(
54
+ html`The search engine encountered an error while loading this collection.
55
+ If the problem persists, please let us know at
56
+ <a href="mailto:info@archive.org">info@archive.org</a>.`,
57
+ );
55
58
 
56
59
  private static readonly QUERY_ERROR_DETAILS_MESSAGE = msg('Error details:');
57
60
 
@@ -96,7 +96,7 @@ export class ExpandedDatePicker extends LitElement {
96
96
  e: CustomEvent<{
97
97
  minDate: string;
98
98
  maxDate: string;
99
- }>
99
+ }>,
100
100
  ): void {
101
101
  this.minSelectedDate = e.detail.minDate;
102
102
  this.maxSelectedDate = e.detail.maxDate;
@@ -50,7 +50,7 @@ export class LanguageCodeHandler implements LanguageCodeHandlerInterface {
50
50
  /** @inheritdoc */
51
51
  getCodeStringFromLanguageName(languageName: string): string {
52
52
  const languageCodes = Object.keys(codeToLanguageMap).filter(
53
- code => codeToLanguageMap[code] === languageName
53
+ code => codeToLanguageMap[code] === languageName,
54
54
  );
55
55
  const stringifiedCodes = languageCodes?.join(this.delimeter);
56
56
  return stringifiedCodes;
@@ -66,21 +66,23 @@ export class ManageBar extends LitElement {
66
66
  <div class="selection-buttons">
67
67
  ${when(
68
68
  this.showSelectAll,
69
- () => html` <button
70
- class="ia-button link select-all-btn"
71
- @click=${this.selectAllClicked}
72
- >
73
- ${msg('Select all')}
74
- </button>`
69
+ () =>
70
+ html` <button
71
+ class="ia-button link select-all-btn"
72
+ @click=${this.selectAllClicked}
73
+ >
74
+ ${msg('Select all')}
75
+ </button>`,
75
76
  )}
76
77
  ${when(
77
78
  this.showUnselectAll,
78
- () => html` <button
79
- class="ia-button link unselect-all-btn"
80
- @click=${this.unselectAllClicked}
81
- >
82
- ${msg('Unselect all')}
83
- </button>`
79
+ () =>
80
+ html` <button
81
+ class="ia-button link unselect-all-btn"
82
+ @click=${this.unselectAllClicked}
83
+ >
84
+ ${msg('Unselect all')}
85
+ </button>`,
84
86
  )}
85
87
  </div>
86
88
  </div>
@@ -13,6 +13,7 @@ import { videoIcon } from '../assets/img/icons/mediatype/video';
13
13
  import { webIcon } from '../assets/img/icons/mediatype/web';
14
14
  import { searchIcon } from '../assets/img/icons/mediatype/search';
15
15
 
16
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
16
17
  export const mediatypeConfig: { [key: string]: any } = {
17
18
  account: {
18
19
  color: '#000000',
package/src/models.ts CHANGED
@@ -125,7 +125,7 @@ export class TileModel {
125
125
  this.description = result.description?.values.join('\n');
126
126
  this.favCount = result.num_favorites?.value ?? 0;
127
127
  this.href = collapseRepeatedQuotes(
128
- result.review?.__href__ ?? result.__href__?.value
128
+ result.review?.__href__ ?? result.__href__?.value,
129
129
  );
130
130
  this.identifier = TileModel.cleanIdentifier(result.identifier);
131
131
  this.issue = result.issue?.value;
@@ -212,7 +212,7 @@ export class TileModel {
212
212
  }
213
213
 
214
214
  private static cleanIdentifier(
215
- identifier: string | undefined
215
+ identifier: string | undefined,
216
216
  ): string | undefined {
217
217
  // Some identifiers (e.g., from Whisper) represent documents rather than items, and
218
218
  // are suffixed with values that need to be stripped. Those values are separated
@@ -463,7 +463,7 @@ export const SORT_OPTIONS: Record<SortField, SortOption> = {
463
463
  export function sortOptionFromAPIString(sortName?: string | null): SortOption {
464
464
  return (
465
465
  Object.values(SORT_OPTIONS).find(opt =>
466
- opt.urlNames.some(name => sortName === name)
466
+ opt.urlNames.some(name => sortName === name),
467
467
  ) ?? SORT_OPTIONS[SortField.unrecognized]
468
468
  );
469
469
  }