@internetarchive/collection-browser 2.7.13 → 2.7.14

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 (296) hide show
  1. package/.github/workflows/ci.yml +3 -3
  2. package/.github/workflows/gh-pages-main.yml +2 -2
  3. package/.github/workflows/pr-preview.yml +2 -2
  4. package/.prettierignore +1 -0
  5. package/dist/index.js +0 -2
  6. package/dist/index.js.map +1 -1
  7. package/dist/src/app-root.d.ts +1 -1
  8. package/dist/src/app-root.js +4 -4
  9. package/dist/src/app-root.js.map +1 -1
  10. package/dist/src/assets/img/icons/arrow-left.d.ts +1 -1
  11. package/dist/src/assets/img/icons/arrow-right.d.ts +1 -1
  12. package/dist/src/assets/img/icons/chevron.d.ts +1 -1
  13. package/dist/src/assets/img/icons/contract.d.ts +1 -1
  14. package/dist/src/assets/img/icons/empty-query.d.ts +1 -1
  15. package/dist/src/assets/img/icons/expand.d.ts +1 -1
  16. package/dist/src/assets/img/icons/eye-closed.d.ts +1 -1
  17. package/dist/src/assets/img/icons/eye.d.ts +1 -1
  18. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  19. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  20. package/dist/src/assets/img/icons/filter.d.ts +1 -1
  21. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  22. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  23. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  24. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  25. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  26. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  27. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  28. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  29. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  36. package/dist/src/assets/img/icons/null-result.d.ts +1 -1
  37. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  38. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  39. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  40. package/dist/src/assets/img/icons/views.d.ts +1 -1
  41. package/dist/src/circular-activity-indicator.d.ts +1 -1
  42. package/dist/src/circular-activity-indicator.js.map +1 -1
  43. package/dist/src/collection-browser.js +1 -2
  44. package/dist/src/collection-browser.js.map +1 -1
  45. package/dist/src/collection-facets/facet-row.js.map +1 -1
  46. package/dist/src/collection-facets/facet-tombstone-row.d.ts +1 -1
  47. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
  48. package/dist/src/collection-facets/facets-template.js +5 -5
  49. package/dist/src/collection-facets/facets-template.js.map +1 -1
  50. package/dist/src/collection-facets/more-facets-content.d.ts +1 -1
  51. package/dist/src/collection-facets/more-facets-content.js +2 -4
  52. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  53. package/dist/src/collection-facets/more-facets-pagination.js +1 -0
  54. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  55. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -1
  56. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js.map +1 -1
  57. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +1 -1
  58. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js.map +1 -1
  59. package/dist/src/collection-facets/smart-facets/models.d.ts +2 -2
  60. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +1 -4
  61. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  62. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +1 -1
  63. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  64. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +1 -1
  65. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  66. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  67. package/dist/src/collection-facets/toggle-switch.d.ts +2 -2
  68. package/dist/src/collection-facets/toggle-switch.js +2 -2
  69. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  70. package/dist/src/collection-facets.js +2 -3
  71. package/dist/src/collection-facets.js.map +1 -1
  72. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  73. package/dist/src/data-source/collection-browser-data-source.js +8 -9
  74. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  75. package/dist/src/data-source/models.d.ts +2 -2
  76. package/dist/src/empty-placeholder.d.ts +1 -1
  77. package/dist/src/empty-placeholder.js +10 -11
  78. package/dist/src/empty-placeholder.js.map +1 -1
  79. package/dist/src/expanded-date-picker.js.map +1 -1
  80. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  81. package/dist/src/language-code-handler/language-code-mapping.js +86 -86
  82. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -1
  83. package/dist/src/manage/manage-bar.js +16 -16
  84. package/dist/src/manage/manage-bar.js.map +1 -1
  85. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  86. package/dist/src/mediatype/mediatype-config.js +1 -0
  87. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  88. package/dist/src/models.d.ts +15 -15
  89. package/dist/src/models.js +3 -3
  90. package/dist/src/models.js.map +1 -1
  91. package/dist/src/restoration-state-handler.js +0 -1
  92. package/dist/src/restoration-state-handler.js.map +1 -1
  93. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +1 -1
  94. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  95. package/dist/src/sort-filter-bar/alpha-bar.js +9 -9
  96. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  97. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  104. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +1 -1
  105. package/dist/src/sort-filter-bar/sort-filter-bar.js +1 -2
  106. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  107. package/dist/src/tiles/base-tile-component.js.map +1 -1
  108. package/dist/src/tiles/collection-browser-loading-tile.d.ts +1 -1
  109. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
  110. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  111. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  112. package/dist/src/tiles/grid/item-tile.js +2 -3
  113. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  114. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  115. package/dist/src/tiles/grid/tile-stats.d.ts +1 -1
  116. package/dist/src/tiles/grid/tile-stats.js +2 -2
  117. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  118. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  119. package/dist/src/tiles/hover/tile-hover-pane.d.ts +1 -1
  120. package/dist/src/tiles/hover/tile-hover-pane.js +3 -1
  121. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  122. package/dist/src/tiles/image-block.d.ts +1 -1
  123. package/dist/src/tiles/image-block.js +1 -1
  124. package/dist/src/tiles/image-block.js.map +1 -1
  125. package/dist/src/tiles/item-image.d.ts +1 -1
  126. package/dist/src/tiles/item-image.js +2 -2
  127. package/dist/src/tiles/item-image.js.map +1 -1
  128. package/dist/src/tiles/list/tile-list-compact-header.d.ts +1 -1
  129. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  130. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -1
  131. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  132. package/dist/src/tiles/list/tile-list.js +4 -6
  133. package/dist/src/tiles/list/tile-list.js.map +1 -1
  134. package/dist/src/tiles/mediatype-icon.d.ts +1 -1
  135. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  136. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  137. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  138. package/dist/src/tiles/review-block.js.map +1 -1
  139. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  140. package/dist/src/tiles/tile-dispatcher.d.ts +1 -1
  141. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  142. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  143. package/dist/src/utils/facet-utils.js.map +1 -1
  144. package/dist/src/utils/format-count.d.ts +2 -2
  145. package/dist/src/utils/format-count.js +0 -1
  146. package/dist/src/utils/format-count.js.map +1 -1
  147. package/dist/src/utils/format-date.d.ts +1 -1
  148. package/dist/src/utils/format-date.js.map +1 -1
  149. package/dist/src/utils/format-unit-size.js.map +1 -1
  150. package/dist/src/utils/log.js +1 -3
  151. package/dist/src/utils/log.js.map +1 -1
  152. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  153. package/dist/test/collection-browser.test.js +4 -3
  154. package/dist/test/collection-browser.test.js.map +1 -1
  155. package/dist/test/collection-facets/facet-row.test.js +4 -1
  156. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  157. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  158. package/dist/test/collection-facets/more-facets-content.test.js +0 -1
  159. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  160. package/dist/test/collection-facets/more-facets-pagination.test.js +0 -1
  161. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  162. package/dist/test/collection-facets/toggle-switch.test.js +12 -3
  163. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  164. package/dist/test/collection-facets.test.js +4 -4
  165. package/dist/test/collection-facets.test.js.map +1 -1
  166. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -1
  167. package/dist/test/empty-placeholder.test.js +0 -1
  168. package/dist/test/empty-placeholder.test.js.map +1 -1
  169. package/dist/test/expanded-date-picker.test.js +4 -3
  170. package/dist/test/expanded-date-picker.test.js.map +1 -1
  171. package/dist/test/icon-overlay.test.js +0 -1
  172. package/dist/test/icon-overlay.test.js.map +1 -1
  173. package/dist/test/image-block.test.js +0 -1
  174. package/dist/test/image-block.test.js.map +1 -1
  175. package/dist/test/item-image.test.js +0 -1
  176. package/dist/test/item-image.test.js.map +1 -1
  177. package/dist/test/manage/manage-bar.test.js +2 -3
  178. package/dist/test/manage/manage-bar.test.js.map +1 -1
  179. package/dist/test/manage/remove-items-modal-content.test.js +0 -1
  180. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
  181. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  182. package/dist/test/mocks/mock-search-service.js.map +1 -1
  183. package/dist/test/restoration-state-handler.test.js.map +1 -1
  184. package/dist/test/review-block.test.js +0 -1
  185. package/dist/test/review-block.test.js.map +1 -1
  186. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  187. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  188. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -1
  189. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  190. package/dist/test/text-overlay.test.js +0 -1
  191. package/dist/test/text-overlay.test.js.map +1 -1
  192. package/dist/test/text-snippet-block.test.js +0 -1
  193. package/dist/test/text-snippet-block.test.js.map +1 -1
  194. package/dist/test/tile-stats.test.js +22 -23
  195. package/dist/test/tile-stats.test.js.map +1 -1
  196. package/dist/test/tiles/grid/account-tile.test.js +0 -1
  197. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  198. package/dist/test/tiles/grid/collection-tile.test.js +0 -1
  199. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  200. package/dist/test/tiles/grid/item-tile.test.js +0 -1
  201. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  202. package/dist/test/tiles/grid/search-tile.test.js +0 -1
  203. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  204. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  205. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  206. package/dist/test/tiles/list/tile-list-compact.test.js +0 -1
  207. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  208. package/dist/test/tiles/list/tile-list.test.js +0 -1
  209. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  210. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  211. package/dist/test/utils/format-count.test.js.map +1 -1
  212. package/dist/test/utils/format-date.test.js.map +1 -1
  213. package/dist/test/utils/local-date-from-utc.test.js.map +1 -1
  214. package/eslint.config.mjs +53 -0
  215. package/index.html +0 -3
  216. package/package.json +41 -39
  217. package/src/app-root.ts +21 -22
  218. package/src/collection-browser.ts +36 -38
  219. package/src/collection-facets/facets-template.ts +7 -6
  220. package/src/collection-facets/more-facets-content.ts +11 -13
  221. package/src/collection-facets/more-facets-pagination.ts +3 -2
  222. package/src/collection-facets/smart-facets/dedupe.ts +2 -2
  223. package/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts +1 -1
  224. package/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts +6 -6
  225. package/src/collection-facets/smart-facets/smart-facet-bar.ts +6 -8
  226. package/src/collection-facets/smart-facets/smart-facet-button.ts +5 -3
  227. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +4 -4
  228. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +1 -1
  229. package/src/collection-facets/toggle-switch.ts +2 -2
  230. package/src/collection-facets.ts +18 -19
  231. package/src/data-source/collection-browser-data-source-interface.ts +5 -1
  232. package/src/data-source/collection-browser-data-source.ts +37 -34
  233. package/src/empty-placeholder.ts +19 -16
  234. package/src/expanded-date-picker.ts +1 -1
  235. package/src/language-code-handler/language-code-handler.ts +1 -1
  236. package/src/manage/manage-bar.ts +23 -20
  237. package/src/manage/remove-items-modal-content.ts +2 -2
  238. package/src/mediatype/mediatype-config.ts +1 -0
  239. package/src/models.ts +3 -3
  240. package/src/restoration-state-handler.ts +14 -15
  241. package/src/sort-filter-bar/alpha-bar.ts +16 -17
  242. package/src/sort-filter-bar/sort-filter-bar.ts +14 -15
  243. package/src/tiles/grid/account-tile.ts +1 -1
  244. package/src/tiles/grid/collection-tile.ts +1 -1
  245. package/src/tiles/grid/item-tile.ts +9 -9
  246. package/src/tiles/grid/tile-stats.ts +4 -4
  247. package/src/tiles/hover/hover-pane-controller.ts +1 -1
  248. package/src/tiles/hover/tile-hover-pane.ts +4 -2
  249. package/src/tiles/item-image.ts +1 -1
  250. package/src/tiles/list/tile-list-compact.ts +2 -2
  251. package/src/tiles/list/tile-list.ts +22 -24
  252. package/src/tiles/tile-dispatcher.ts +5 -5
  253. package/src/tiles/tile-display-value-provider.ts +4 -4
  254. package/src/utils/facet-utils.ts +6 -6
  255. package/src/utils/format-count.ts +2 -3
  256. package/src/utils/format-date.ts +1 -1
  257. package/src/utils/format-unit-size.ts +1 -1
  258. package/src/utils/log.ts +1 -3
  259. package/test/collection-browser.test.ts +125 -124
  260. package/test/collection-facets/facet-row.test.ts +31 -28
  261. package/test/collection-facets/facets-template.test.ts +9 -9
  262. package/test/collection-facets/more-facets-content.test.ts +14 -15
  263. package/test/collection-facets/more-facets-pagination.test.ts +18 -19
  264. package/test/collection-facets/toggle-switch.test.ts +28 -18
  265. package/test/collection-facets.test.ts +46 -39
  266. package/test/data-source/collection-browser-data-source.test.ts +2 -2
  267. package/test/empty-placeholder.test.ts +6 -7
  268. package/test/expanded-date-picker.test.ts +25 -20
  269. package/test/icon-overlay.test.ts +0 -1
  270. package/test/image-block.test.ts +6 -7
  271. package/test/item-image.test.ts +0 -1
  272. package/test/manage/manage-bar.test.ts +19 -16
  273. package/test/manage/remove-items-modal-content.test.ts +4 -5
  274. package/test/mocks/mock-search-responses.ts +2 -1
  275. package/test/mocks/mock-search-service.ts +1 -1
  276. package/test/restoration-state-handler.test.ts +12 -12
  277. package/test/review-block.test.ts +1 -2
  278. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +1 -1
  279. package/test/sort-filter-bar/alpha-bar.test.ts +5 -5
  280. package/test/sort-filter-bar/sort-filter-bar.test.ts +38 -39
  281. package/test/text-overlay.test.ts +0 -1
  282. package/test/text-snippet-block.test.ts +5 -6
  283. package/test/tile-stats.test.ts +26 -35
  284. package/test/tiles/grid/account-tile.test.ts +2 -3
  285. package/test/tiles/grid/collection-tile.test.ts +3 -4
  286. package/test/tiles/grid/item-tile.test.ts +13 -14
  287. package/test/tiles/grid/search-tile.test.ts +1 -2
  288. package/test/tiles/hover/hover-pane-controller.test.ts +15 -15
  289. package/test/tiles/hover/tile-hover-pane.test.ts +5 -5
  290. package/test/tiles/list/tile-list-compact.test.ts +1 -2
  291. package/test/tiles/list/tile-list.test.ts +10 -11
  292. package/test/tiles/tile-dispatcher.test.ts +5 -5
  293. package/test/utils/format-count.test.ts +1 -1
  294. package/test/utils/format-date.test.ts +1 -1
  295. package/test/utils/local-date-from-utc.test.ts +1 -1
  296. package/tsconfig.json +0 -1
@@ -87,7 +87,7 @@ export class RestorationStateHandler
87
87
 
88
88
  private persistQueryStateToUrl(
89
89
  state: RestorationState,
90
- forceReplace = false
90
+ forceReplace = false,
91
91
  ) {
92
92
  const url = new URL(window.location.href);
93
93
  const oldParams = new URLSearchParams(url.searchParams);
@@ -145,10 +145,9 @@ export class RestorationStateHandler
145
145
 
146
146
  if (state.selectedFacets) {
147
147
  for (const [facetName, facetValues] of Object.entries(
148
- state.selectedFacets
148
+ state.selectedFacets,
149
149
  )) {
150
150
  const facetEntries = Object.entries(facetValues);
151
- // eslint-disable-next-line no-continue
152
151
  if (facetEntries.length === 0) continue;
153
152
  for (const [key, data] of facetEntries) {
154
153
  const notValue = data.state === 'hidden';
@@ -165,7 +164,7 @@ export class RestorationStateHandler
165
164
  if (state.minSelectedDate && state.maxSelectedDate) {
166
165
  newParams.append(
167
166
  'and[]',
168
- `year:[${state.minSelectedDate} TO ${state.maxSelectedDate}]`
167
+ `year:[${state.minSelectedDate} TO ${state.maxSelectedDate}]`,
169
168
  );
170
169
  }
171
170
 
@@ -221,7 +220,7 @@ export class RestorationStateHandler
221
220
  facets: state.selectedFacets,
222
221
  },
223
222
  '',
224
- url
223
+ url,
225
224
  );
226
225
  }
227
226
 
@@ -318,18 +317,18 @@ export class RestorationStateHandler
318
317
  if (minDate && maxDate) {
319
318
  restorationState.minSelectedDate = minDate.substring(
320
319
  1,
321
- minDate.length
320
+ minDate.length,
322
321
  );
323
322
  restorationState.maxSelectedDate = maxDate.substring(
324
323
  0,
325
- maxDate.length - 1
324
+ maxDate.length - 1,
326
325
  );
327
326
  } else {
328
327
  this.setSelectedFacetState(
329
328
  restorationState.selectedFacets,
330
329
  field as FacetOption,
331
330
  value,
332
- 'selected'
331
+ 'selected',
333
332
  );
334
333
  }
335
334
  break;
@@ -345,7 +344,7 @@ export class RestorationStateHandler
345
344
  restorationState.selectedFacets,
346
345
  field as FacetOption,
347
346
  value,
348
- 'selected'
347
+ 'selected',
349
348
  );
350
349
  }
351
350
  });
@@ -358,7 +357,7 @@ export class RestorationStateHandler
358
357
  restorationState.selectedFacets,
359
358
  field as FacetOption,
360
359
  value,
361
- 'hidden'
360
+ 'hidden',
362
361
  );
363
362
  });
364
363
  }
@@ -408,13 +407,13 @@ export class RestorationStateHandler
408
407
  private paramsMatch(
409
408
  searchParams1: URLSearchParams,
410
409
  searchParams2: URLSearchParams,
411
- keys: string[]
410
+ keys: string[],
412
411
  ): boolean {
413
412
  return keys.every(key =>
414
413
  arrayEquals(
415
414
  searchParams1.getAll(key).sort(),
416
- searchParams2.getAll(key).sort()
417
- )
415
+ searchParams2.getAll(key).sort(),
416
+ ),
418
417
  );
419
418
  }
420
419
 
@@ -423,7 +422,7 @@ export class RestorationStateHandler
423
422
  * when loading state from the URL.
424
423
  */
425
424
  private removeRecognizedParams(
426
- searchParams: URLSearchParams
425
+ searchParams: URLSearchParams,
427
426
  ): URLSearchParams {
428
427
  // Remove all of our standard params
429
428
  searchParams.delete('query');
@@ -464,7 +463,7 @@ export class RestorationStateHandler
464
463
  selectedFacets: SelectedFacets,
465
464
  field: FacetOption,
466
465
  value: string,
467
- state: FacetState
466
+ state: FacetState,
468
467
  ): void {
469
468
  const facet = selectedFacets[field];
470
469
  if (!facet) return; // Unrecognized facet group, ignore it.
@@ -33,19 +33,18 @@ export class AlphaBar extends LitElement {
33
33
  <section id="container" aria-label=${this.ariaLandmarkLabel ?? nothing}>
34
34
  <ul>
35
35
  ${this.alphabet.map(
36
- letter =>
37
- html`
38
- <li
39
- class=${letter === this.selectedUppercaseLetter
40
- ? 'selected'
41
- : nothing}
42
- @mousemove=${this.handleMouseMove}
43
- @mouseleave=${this.handleMouseLeave}
44
- >
45
- ${this.letterButtonTemplate(letter)}
46
- ${this.tooltipTemplate(letter)}
47
- </li>
48
- `
36
+ letter => html`
37
+ <li
38
+ class=${letter === this.selectedUppercaseLetter
39
+ ? 'selected'
40
+ : nothing}
41
+ @mousemove=${this.handleMouseMove}
42
+ @mouseleave=${this.handleMouseLeave}
43
+ >
44
+ ${this.letterButtonTemplate(letter)}
45
+ ${this.tooltipTemplate(letter)}
46
+ </li>
47
+ `,
49
48
  )}
50
49
  </ul>
51
50
  </section>
@@ -87,7 +86,7 @@ export class AlphaBar extends LitElement {
87
86
  this.dispatchEvent(
88
87
  new CustomEvent('letterChanged', {
89
88
  detail: { selectedLetter: this.selectedUppercaseLetter },
90
- })
89
+ }),
91
90
  );
92
91
  }
93
92
 
@@ -127,10 +126,10 @@ export class AlphaBar extends LitElement {
127
126
  // (but not including any scrollbar).
128
127
  const bodyStyle = getComputedStyle(document.body);
129
128
  const bodyMarginLeft = parseFloat(
130
- bodyStyle.getPropertyValue('margin-left')
129
+ bodyStyle.getPropertyValue('margin-left'),
131
130
  );
132
131
  const bodyMarginRight = parseFloat(
133
- bodyStyle.getPropertyValue('margin-right')
132
+ bodyStyle.getPropertyValue('margin-right'),
134
133
  );
135
134
  const bodyWidthWithMargin =
136
135
  document.body.clientWidth + bodyMarginLeft + bodyMarginRight;
@@ -155,7 +154,7 @@ export class AlphaBar extends LitElement {
155
154
  left -= overflowAmt;
156
155
  this.tooltip.style.setProperty(
157
156
  '--tooltipArrowOffset',
158
- `${overflowAmt}px`
157
+ `${overflowAmt}px`,
159
158
  );
160
159
  }
161
160
 
@@ -228,7 +228,7 @@ export class SortFilterBar
228
228
 
229
229
  if (changed.has('resizeObserver') || changed.has('enableSortOptionsSlot')) {
230
230
  const oldObserver = changed.get(
231
- 'resizeObserver'
231
+ 'resizeObserver',
232
232
  ) as SharedResizeObserverInterface;
233
233
  if (oldObserver) this.disconnectResizeObserver(oldObserver);
234
234
  this.setupResizeObserver();
@@ -239,12 +239,12 @@ export class SortFilterBar
239
239
  if (this.dropdownBackdropVisible) {
240
240
  document.addEventListener(
241
241
  'keydown',
242
- this.boundSortBarSelectorEscapeListener
242
+ this.boundSortBarSelectorEscapeListener,
243
243
  );
244
244
  } else {
245
245
  document.removeEventListener(
246
246
  'keydown',
247
- this.boundSortBarSelectorEscapeListener
247
+ this.boundSortBarSelectorEscapeListener,
248
248
  );
249
249
  }
250
250
  }
@@ -267,7 +267,7 @@ export class SortFilterBar
267
267
  }
268
268
 
269
269
  private disconnectResizeObserver(
270
- resizeObserver: SharedResizeObserverInterface
270
+ resizeObserver: SharedResizeObserverInterface,
271
271
  ) {
272
272
  if (this.sortSelectorContainer) {
273
273
  resizeObserver.removeObserver({
@@ -430,7 +430,7 @@ export class SortFilterBar
430
430
  .filter(opt => opt.shownInSortBar)
431
431
  .filter(opt => this.showRelevance || opt.field !== SortField.relevance)
432
432
  .filter(
433
- opt => this.showDateFavorited || opt.field !== SortField.datefavorited
433
+ opt => this.showDateFavorited || opt.field !== SortField.datefavorited,
434
434
  );
435
435
 
436
436
  return html`
@@ -439,12 +439,11 @@ export class SortFilterBar
439
439
  class=${this.mobileSelectorVisible ? 'visible' : 'hidden'}
440
440
  >
441
441
  ${this.getSortDropdown({
442
- displayName: html`${SORT_OPTIONS[this.finalizedSortField]
443
- .displayName}`,
442
+ displayName: html`${SORT_OPTIONS[this.finalizedSortField].displayName}`,
444
443
  id: 'mobile-dropdown',
445
444
  selected: true,
446
445
  dropdownOptions: displayedOptions.map(opt =>
447
- this.getDropdownOption(opt.field)
446
+ this.getDropdownOption(opt.field),
448
447
  ),
449
448
  selectedOption: this.finalizedSortField,
450
449
  onOptionSelected: this.mobileSortChanged,
@@ -452,7 +451,7 @@ export class SortFilterBar
452
451
  this.dropdownBackdropVisible = this.mobileDropdown.open;
453
452
  this.mobileDropdown.classList.toggle(
454
453
  'open',
455
- this.mobileDropdown.open
454
+ this.mobileDropdown.open,
456
455
  );
457
456
  },
458
457
  })}
@@ -479,7 +478,7 @@ export class SortFilterBar
479
478
  displayName?: TemplateResult;
480
479
  selected?: boolean;
481
480
  onClick?: (e: Event) => void;
482
- }
481
+ },
483
482
  ): TemplateResult {
484
483
  const isSelected =
485
484
  options?.selected ?? this.finalizedSortField === sortField;
@@ -759,7 +758,7 @@ export class SortFilterBar
759
758
  /** Toggles the current sort direction between 'asc' and 'desc' */
760
759
  private toggleSortDirection() {
761
760
  this.setSortDirection(
762
- this.finalizedSortDirection === 'desc' ? 'asc' : 'desc'
761
+ this.finalizedSortDirection === 'desc' ? 'asc' : 'desc',
763
762
  );
764
763
  }
765
764
 
@@ -896,14 +895,14 @@ export class SortFilterBar
896
895
  }
897
896
 
898
897
  private titleLetterChanged(
899
- e: CustomEvent<{ selectedLetter: string | undefined }>
898
+ e: CustomEvent<{ selectedLetter: string | undefined }>,
900
899
  ) {
901
900
  this.selectedTitleFilter = e.detail.selectedLetter ?? null;
902
901
  this.emitTitleLetterChangedEvent();
903
902
  }
904
903
 
905
904
  private creatorLetterChanged(
906
- e: CustomEvent<{ selectedLetter: string | undefined }>
905
+ e: CustomEvent<{ selectedLetter: string | undefined }>,
907
906
  ) {
908
907
  this.selectedCreatorFilter = e.detail.selectedLetter ?? null;
909
908
  this.emitCreatorLetterChangedEvent();
@@ -914,7 +913,7 @@ export class SortFilterBar
914
913
  'titleLetterChanged',
915
914
  {
916
915
  detail: { selectedLetter: this.selectedTitleFilter },
917
- }
916
+ },
918
917
  );
919
918
  this.dispatchEvent(event);
920
919
  }
@@ -924,7 +923,7 @@ export class SortFilterBar
924
923
  'creatorLetterChanged',
925
924
  {
926
925
  detail: { selectedLetter: this.selectedCreatorFilter },
927
- }
926
+ },
928
927
  );
929
928
  this.dispatchEvent(event);
930
929
  }
@@ -87,7 +87,7 @@ export class AccountTile extends BaseTileComponent {
87
87
  e.preventDefault();
88
88
  const event = new CustomEvent<{ x: number; y: number }>(
89
89
  'infoButtonPressed',
90
- { detail: { x: e.clientX, y: e.clientY } }
90
+ { detail: { x: e.clientX, y: e.clientY } },
91
91
  );
92
92
  this.dispatchEvent(event);
93
93
  }
@@ -99,7 +99,7 @@ export class CollectionTile extends BaseTileComponent {
99
99
  e.preventDefault();
100
100
  const event = new CustomEvent<{ x: number; y: number }>(
101
101
  'infoButtonPressed',
102
- { detail: { x: e.clientX, y: e.clientY } }
102
+ { detail: { x: e.clientX, y: e.clientY } },
103
103
  );
104
104
  this.dispatchEvent(event);
105
105
  }
@@ -1,4 +1,3 @@
1
- /* eslint-disable import/no-duplicates */
2
1
  import { css, CSSResultGroup, html, nothing, TemplateResult } from 'lit';
3
2
  import { customElement, property } from 'lit/decorators.js';
4
3
  import { ifDefined } from 'lit/directives/if-defined.js';
@@ -202,12 +201,13 @@ export class ItemTile extends BaseTileComponent {
202
201
  <ul class="capture-dates">
203
202
  ${map(
204
203
  this.model.captureDates,
205
- date => html`<li>
206
- ${this.displayValueProvider.webArchivesCaptureLink(
207
- this.model!.title,
208
- date
209
- )}
210
- </li>`
204
+ date =>
205
+ html`<li>
206
+ ${this.displayValueProvider.webArchivesCaptureLink(
207
+ this.model!.title,
208
+ date,
209
+ )}
210
+ </li>`,
211
211
  )}
212
212
  </ul>
213
213
  `;
@@ -215,7 +215,7 @@ export class ItemTile extends BaseTileComponent {
215
215
 
216
216
  private get isSortedByDate(): boolean {
217
217
  return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes(
218
- this.effectiveSort?.field as string
218
+ this.effectiveSort?.field as string,
219
219
  );
220
220
  }
221
221
 
@@ -234,7 +234,7 @@ export class ItemTile extends BaseTileComponent {
234
234
  e.preventDefault();
235
235
  const event = new CustomEvent<{ x: number; y: number }>(
236
236
  'infoButtonPressed',
237
- { detail: { x: e.clientX, y: e.clientY } }
237
+ { detail: { x: e.clientX, y: e.clientY } },
238
238
  );
239
239
  this.dispatchEvent(event);
240
240
  }
@@ -29,7 +29,7 @@ export class TileStats extends LitElement {
29
29
  const formattedReviewCount = formatCount(
30
30
  this.commentCount,
31
31
  'short',
32
- 'short'
32
+ 'short',
33
33
  );
34
34
 
35
35
  const uploadsOrViewsTitle =
@@ -57,10 +57,10 @@ export class TileStats extends LitElement {
57
57
  </span>
58
58
  ${formatCount(
59
59
  this.mediatype === 'account'
60
- ? this.itemCount ?? 0
61
- : this.viewCount ?? 0,
60
+ ? (this.itemCount ?? 0)
61
+ : (this.viewCount ?? 0),
62
+ 'short',
62
63
  'short',
63
- 'short'
64
64
  )}
65
65
  </p>
66
66
  </li>
@@ -151,7 +151,7 @@ export class HoverPaneController implements HoverPaneControllerInterface {
151
151
  HoverPaneProviderInterface &
152
152
  HTMLElement,
153
153
  /** Options for adjusting the hover pane behavior (offsets, delays, etc.) */
154
- options: HoverPaneControllerOptions = {}
154
+ options: HoverPaneControllerOptions = {},
155
155
  ) {
156
156
  this.mobileBreakpoint = options.mobileBreakpoint ?? this.mobileBreakpoint;
157
157
  this.offsetX = options.offsetX ?? this.offsetX;
@@ -26,7 +26,7 @@ export class TileHoverPane extends LitElement {
26
26
 
27
27
  @property({ type: Number }) mobileBreakpoint?: number;
28
28
 
29
- @property({ type: Number }) currentWidth?: Number;
29
+ @property({ type: Number }) currentWidth?: number;
30
30
 
31
31
  @property({ type: Object })
32
32
  collectionTitles?: CollectionTitles;
@@ -95,7 +95,9 @@ export class TileHoverPane extends LitElement {
95
95
  visibility: hidden;
96
96
  opacity: 0;
97
97
  transform: translateY(8px);
98
- transition: opacity 0.1s ease-in, transform 0.1s ease-in;
98
+ transition:
99
+ opacity 0.1s ease-in,
100
+ transform 0.1s ease-in;
99
101
  --image-width: auto;
100
102
  }
101
103
 
@@ -64,7 +64,7 @@ export class ItemImage extends LitElement {
64
64
  return this.baseImageUrl
65
65
  ? `https://web.archive.org/thumb/${domain}?generate=1`
66
66
  : nothing;
67
- } catch (err) {
67
+ } catch {
68
68
  return `${this.baseImageUrl}/images/notfound.png`;
69
69
  }
70
70
  }
@@ -73,7 +73,7 @@ export class TileListCompact extends BaseTileComponent {
73
73
 
74
74
  return this.displayValueProvider.itemPageUrl(
75
75
  this.model.identifier,
76
- this.model.mediatype === 'collection'
76
+ this.model.mediatype === 'collection',
77
77
  );
78
78
  }
79
79
 
@@ -155,7 +155,7 @@ export class TileListCompact extends BaseTileComponent {
155
155
 
156
156
  private get isSortedByDate(): boolean {
157
157
  return ['date', 'reviewdate', 'addeddate', 'publicdate'].includes(
158
- this.effectiveSort?.field as string
158
+ this.effectiveSort?.field as string,
159
159
  );
160
160
  }
161
161
 
@@ -90,7 +90,7 @@ export class TileList extends BaseTileComponent {
90
90
  const isCollection = this.model.mediatype === 'collection';
91
91
  const href = this.displayValueProvider.itemPageUrl(
92
92
  this.model.identifier,
93
- isCollection
93
+ isCollection,
94
94
  );
95
95
 
96
96
  return html`<a href=${href}>
@@ -149,7 +149,7 @@ export class TileList extends BaseTileComponent {
149
149
  : this.detailsLink(
150
150
  this.model.identifier,
151
151
  this.model.title,
152
- this.model.mediatype === 'collection'
152
+ this.model.mediatype === 'collection',
153
153
  );
154
154
  }
155
155
 
@@ -203,7 +203,7 @@ export class TileList extends BaseTileComponent {
203
203
  ${this.labelTemplate(msg('By'))}
204
204
  ${join(
205
205
  map(this.model.creators, id => this.searchLink('creator', id)),
206
- ', '
206
+ ', ',
207
207
  )}
208
208
  </div>
209
209
  `;
@@ -233,7 +233,7 @@ export class TileList extends BaseTileComponent {
233
233
  ) {
234
234
  return this.metadataTemplate(
235
235
  formatDate(this.date, 'long'),
236
- this.displayValueProvider.dateLabel
236
+ this.displayValueProvider.dateLabel,
237
237
  );
238
238
  }
239
239
  return nothing;
@@ -253,7 +253,7 @@ export class TileList extends BaseTileComponent {
253
253
 
254
254
  return this.metadataTemplate(
255
255
  `${formatCount(viewCount, this.formatSize)}`,
256
- msg('Views')
256
+ msg('Views'),
257
257
  );
258
258
  }
259
259
 
@@ -274,7 +274,7 @@ export class TileList extends BaseTileComponent {
274
274
  ${this.labelTemplate(msg('Topics'))}
275
275
  ${join(
276
276
  map(this.model.subjects, id => this.searchLink('subject', id)),
277
- ', '
277
+ ', ',
278
278
  )}
279
279
  </div>
280
280
  `;
@@ -296,10 +296,10 @@ export class TileList extends BaseTileComponent {
296
296
  return this.metadataTemplate(
297
297
  // Sanitize away any HTML tags and convert line breaks to spaces.
298
298
  unsafeHTML(
299
- DOMPurify.sanitize(this.model?.description?.replace(/\n/g, ' ') ?? '')
299
+ DOMPurify.sanitize(this.model?.description?.replace(/\n/g, ' ') ?? ''),
300
300
  ),
301
301
  '',
302
- 'description'
302
+ 'description',
303
303
  );
304
304
  }
305
305
 
@@ -340,19 +340,20 @@ export class TileList extends BaseTileComponent {
340
340
  <ul class="capture-dates">
341
341
  ${map(
342
342
  this.model.captureDates,
343
- date => html`<li>
344
- ${this.displayValueProvider.webArchivesCaptureLink(
345
- this.model!.title,
346
- date
347
- )}
348
- </li>`
343
+ date =>
344
+ html`<li>
345
+ ${this.displayValueProvider.webArchivesCaptureLink(
346
+ this.model!.title,
347
+ date,
348
+ )}
349
+ </li>`,
349
350
  )}
350
351
  </ul>
351
352
  `;
352
353
  }
353
354
 
354
355
  // Utility functions
355
- // eslint-disable-next-line default-param-last
356
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
356
357
  private metadataTemplate(text: any, label = '', id?: string) {
357
358
  if (!text) return nothing;
358
359
  return html`
@@ -375,28 +376,25 @@ export class TileList extends BaseTileComponent {
375
376
  const query = encodeURIComponent(`${field}:"${searchTerm}"`);
376
377
  // No whitespace after closing tag
377
378
  // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
378
-
379
- /* eslint-disable lit/no-invalid-html */
380
379
  return html`<a
381
380
  href="${this.baseNavigationUrl}/search?query=${query}"
382
381
  rel="nofollow"
383
382
  >
384
383
  ${DOMPurify.sanitize(searchTerm)}</a
385
384
  >`;
386
- /* eslint-enable lit/no-invalid-html */
387
385
  }
388
386
 
389
387
  private detailsLink(
390
388
  identifier?: string,
391
389
  text?: string,
392
- isCollection = false
390
+ isCollection = false,
393
391
  ): TemplateResult | typeof nothing {
394
392
  if (!identifier) return nothing;
395
393
 
396
394
  const linkText = text ?? identifier;
397
395
  const linkHref = this.displayValueProvider.itemPageUrl(
398
396
  identifier,
399
- isCollection
397
+ isCollection,
400
398
  );
401
399
 
402
400
  return html`<a href=${linkHref}> ${DOMPurify.sanitize(linkText)} </a>`;
@@ -417,7 +415,7 @@ export class TileList extends BaseTileComponent {
417
415
  default:
418
416
  return this.displayValueProvider.itemPageUrl(
419
417
  this.model.mediatype,
420
- true
418
+ true,
421
419
  );
422
420
  }
423
421
  }
@@ -447,8 +445,8 @@ export class TileList extends BaseTileComponent {
447
445
  this.detailsLink(
448
446
  collection,
449
447
  this.collectionTitles?.get(collection) ?? collection,
450
- true
451
- )
448
+ true,
449
+ ),
452
450
  );
453
451
  }
454
452
  }
@@ -664,7 +662,7 @@ export class TileList extends BaseTileComponent {
664
662
  /*
665
663
  * With the exception of the title line, allow these to wrap if
666
664
  * the space becomes too small to accommodate them together.
667
- *
665
+ *
668
666
  * The title line is excluded because it contains the mediatype icon
669
667
  * which we don't want to wrap.
670
668
  */
@@ -60,7 +60,7 @@ export class TileDispatcher
60
60
  @property({ type: Boolean }) enableHoverPane = false;
61
61
 
62
62
  @property({ type: String }) manageCheckTitle = msg(
63
- 'Remove this item from the list'
63
+ 'Remove this item from the list',
64
64
  );
65
65
 
66
66
  private hoverPaneController?: HoverPaneControllerInterface;
@@ -155,7 +155,7 @@ export class TileDispatcher
155
155
 
156
156
  return this.displayValueProvider.itemPageUrl(
157
157
  this.model.identifier,
158
- this.model.mediatype === 'collection'
158
+ this.model.mediatype === 'collection',
159
159
  );
160
160
  }
161
161
 
@@ -229,7 +229,7 @@ export class TileDispatcher
229
229
  updated(props: PropertyValues) {
230
230
  if (props.has('resizeObserver')) {
231
231
  const previousObserver = props.get(
232
- 'resizeObserver'
232
+ 'resizeObserver',
233
233
  ) as SharedResizeObserverInterface;
234
234
  this.stopResizeObservation(previousObserver);
235
235
  this.startResizeObservation();
@@ -247,7 +247,7 @@ export class TileDispatcher
247
247
  }
248
248
 
249
249
  this.dispatchEvent(
250
- new CustomEvent('resultSelected', { detail: this.model })
250
+ new CustomEvent('resultSelected', { detail: this.model }),
251
251
  );
252
252
  }
253
253
 
@@ -263,7 +263,7 @@ export class TileDispatcher
263
263
  }
264
264
 
265
265
  private tileInfoButtonPressed(
266
- e: CustomEvent<{ x: number; y: number }>
266
+ e: CustomEvent<{ x: number; y: number }>,
267
267
  ): void {
268
268
  this.hoverPaneController?.toggleHoverPane({
269
269
  coords: e.detail,
@@ -26,7 +26,7 @@ export class TileDisplayValueProvider {
26
26
  collectionPagePath?: string;
27
27
  sortParam?: SortParam;
28
28
  creatorFilter?: string;
29
- } = {}
29
+ } = {},
30
30
  ) {
31
31
  this.model = options.model;
32
32
  this.baseNavigationUrl = options.baseNavigationUrl;
@@ -55,7 +55,7 @@ export class TileDisplayValueProvider {
55
55
  .normalize('NFD')
56
56
  .replace(/[^A-Z]+/gi, '')
57
57
  .toUpperCase()
58
- .startsWith(firstLetter)
58
+ .startsWith(firstLetter),
59
59
  );
60
60
  }
61
61
 
@@ -98,7 +98,7 @@ export class TileDisplayValueProvider {
98
98
  */
99
99
  itemPageUrl(
100
100
  identifier?: string,
101
- isCollection = false
101
+ isCollection = false,
102
102
  ): string | typeof nothing {
103
103
  if (!identifier || this.baseNavigationUrl == null) return nothing;
104
104
  const basePath = isCollection ? this.collectionPagePath : '/details/';
@@ -115,7 +115,7 @@ export class TileDisplayValueProvider {
115
115
  .replace(/[TZ:-]/g, '')
116
116
  .replace(/\..*/, '');
117
117
  const captureHref = `https://web.archive.org/web/${captureDateStr}/${encodeURIComponent(
118
- url
118
+ url,
119
119
  )}`;
120
120
  const captureText = formatDate(date, 'long');
121
121