@internetarchive/collection-browser 4.8.0 → 4.8.1-webdev-9227.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 (381) hide show
  1. package/README.md +33 -0
  2. package/dist/src/collection-browser.d.ts +2 -1
  3. package/dist/src/collection-browser.js +3 -3
  4. package/dist/src/collection-browser.js.map +1 -1
  5. package/dist/src/collection-facets/more-facets-content.js +3 -2
  6. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  7. package/dist/src/collection-facets/more-facets-scroller.js +3 -2
  8. package/dist/src/collection-facets/more-facets-scroller.js.map +1 -1
  9. package/dist/src/collection-facets.js +3 -2
  10. package/dist/src/collection-facets.js.map +1 -1
  11. package/dist/src/empty-placeholder.d.ts +7 -7
  12. package/dist/src/empty-placeholder.js +29 -15
  13. package/dist/src/empty-placeholder.js.map +1 -1
  14. package/dist/src/expanded-date-picker.js +3 -2
  15. package/dist/src/expanded-date-picker.js.map +1 -1
  16. package/dist/src/locales/es.d.ts +94 -0
  17. package/dist/src/locales/es.js +109 -0
  18. package/dist/src/locales/es.js.map +1 -0
  19. package/dist/src/manage/manage-bar.d.ts +3 -2
  20. package/dist/src/manage/manage-bar.js +6 -7
  21. package/dist/src/manage/manage-bar.js.map +1 -1
  22. package/dist/src/manage/remove-items-modal-content.js +3 -2
  23. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  24. package/dist/src/models.js +6 -2
  25. package/dist/src/models.js.map +1 -1
  26. package/dist/src/sort-filter-bar/sort-filter-bar.js +3 -2
  27. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  28. package/dist/src/tiles/grid/account-tile.js +3 -2
  29. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  30. package/dist/src/tiles/grid/collection-tile.js +3 -2
  31. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  32. package/dist/src/tiles/grid/item-tile.js +3 -2
  33. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  34. package/dist/src/tiles/grid/tile-stats.js +3 -2
  35. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  36. package/dist/src/tiles/list/tile-list-compact-header.js +3 -2
  37. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  38. package/dist/src/tiles/list/tile-list-compact.js +3 -1
  39. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  40. package/dist/src/tiles/list/tile-list.js +3 -2
  41. package/dist/src/tiles/list/tile-list.js.map +1 -1
  42. package/dist/src/tiles/overlay/text-overlay.js +3 -1
  43. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  44. package/dist/src/tiles/review-block.js +3 -2
  45. package/dist/src/tiles/review-block.js.map +1 -1
  46. package/dist/src/tiles/tile-dispatcher.d.ts +2 -1
  47. package/dist/src/tiles/tile-dispatcher.js +5 -4
  48. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  49. package/locales/es.d.ts +1 -0
  50. package/locales/es.js +1 -0
  51. package/package.json +13 -1
  52. package/.editorconfig +0 -29
  53. package/.github/workflows/ci.yml +0 -29
  54. package/.github/workflows/gh-pages-main.yml +0 -41
  55. package/.github/workflows/npm-publish.yml +0 -42
  56. package/.github/workflows/pr-preview.yml +0 -40
  57. package/.husky/pre-commit +0 -1
  58. package/.prettierignore +0 -1
  59. package/dist/test/collection-browser.test.d.ts +0 -1
  60. package/dist/test/collection-browser.test.js +0 -1815
  61. package/dist/test/collection-browser.test.js.map +0 -1
  62. package/dist/test/collection-facets/facet-row.test.d.ts +0 -1
  63. package/dist/test/collection-facets/facet-row.test.js +0 -291
  64. package/dist/test/collection-facets/facet-row.test.js.map +0 -1
  65. package/dist/test/collection-facets/facets-template.test.d.ts +0 -1
  66. package/dist/test/collection-facets/facets-template.test.js +0 -95
  67. package/dist/test/collection-facets/facets-template.test.js.map +0 -1
  68. package/dist/test/collection-facets/more-facets-content.test.d.ts +0 -1
  69. package/dist/test/collection-facets/more-facets-content.test.js +0 -509
  70. package/dist/test/collection-facets/more-facets-content.test.js.map +0 -1
  71. package/dist/test/collection-facets/more-facets-scroller.test.d.ts +0 -1
  72. package/dist/test/collection-facets/more-facets-scroller.test.js +0 -288
  73. package/dist/test/collection-facets/more-facets-scroller.test.js.map +0 -1
  74. package/dist/test/collection-facets/page-window.test.d.ts +0 -1
  75. package/dist/test/collection-facets/page-window.test.js +0 -175
  76. package/dist/test/collection-facets/page-window.test.js.map +0 -1
  77. package/dist/test/collection-facets/toggle-switch.test.d.ts +0 -1
  78. package/dist/test/collection-facets/toggle-switch.test.js +0 -99
  79. package/dist/test/collection-facets/toggle-switch.test.js.map +0 -1
  80. package/dist/test/collection-facets.test.d.ts +0 -2
  81. package/dist/test/collection-facets.test.js +0 -728
  82. package/dist/test/collection-facets.test.js.map +0 -1
  83. package/dist/test/data-source/collection-browser-data-source.test.d.ts +0 -1
  84. package/dist/test/data-source/collection-browser-data-source.test.js +0 -154
  85. package/dist/test/data-source/collection-browser-data-source.test.js.map +0 -1
  86. package/dist/test/empty-placeholder.test.d.ts +0 -1
  87. package/dist/test/empty-placeholder.test.js +0 -57
  88. package/dist/test/empty-placeholder.test.js.map +0 -1
  89. package/dist/test/expanded-date-picker.test.d.ts +0 -1
  90. package/dist/test/expanded-date-picker.test.js +0 -124
  91. package/dist/test/expanded-date-picker.test.js.map +0 -1
  92. package/dist/test/icon-overlay.test.d.ts +0 -1
  93. package/dist/test/icon-overlay.test.js +0 -31
  94. package/dist/test/icon-overlay.test.js.map +0 -1
  95. package/dist/test/image-block.test.d.ts +0 -1
  96. package/dist/test/image-block.test.js +0 -208
  97. package/dist/test/image-block.test.js.map +0 -1
  98. package/dist/test/item-image.test.d.ts +0 -1
  99. package/dist/test/item-image.test.js +0 -187
  100. package/dist/test/item-image.test.js.map +0 -1
  101. package/dist/test/manage/manage-bar.test.d.ts +0 -3
  102. package/dist/test/manage/manage-bar.test.js +0 -216
  103. package/dist/test/manage/manage-bar.test.js.map +0 -1
  104. package/dist/test/manage/remove-items-modal-content.test.d.ts +0 -1
  105. package/dist/test/manage/remove-items-modal-content.test.js +0 -60
  106. package/dist/test/manage/remove-items-modal-content.test.js.map +0 -1
  107. package/dist/test/mediatype-config.test.d.ts +0 -1
  108. package/dist/test/mediatype-config.test.js +0 -11
  109. package/dist/test/mediatype-config.test.js.map +0 -1
  110. package/dist/test/mocks/mock-analytics-handler.d.ts +0 -10
  111. package/dist/test/mocks/mock-analytics-handler.js +0 -16
  112. package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
  113. package/dist/test/mocks/mock-search-responses.d.ts +0 -37
  114. package/dist/test/mocks/mock-search-responses.js +0 -1293
  115. package/dist/test/mocks/mock-search-responses.js.map +0 -1
  116. package/dist/test/mocks/mock-search-service.d.ts +0 -16
  117. package/dist/test/mocks/mock-search-service.js +0 -65
  118. package/dist/test/mocks/mock-search-service.js.map +0 -1
  119. package/dist/test/restoration-state-handler.test.d.ts +0 -1
  120. package/dist/test/restoration-state-handler.test.js +0 -335
  121. package/dist/test/restoration-state-handler.test.js.map +0 -1
  122. package/dist/test/review-block.test.d.ts +0 -1
  123. package/dist/test/review-block.test.js +0 -46
  124. package/dist/test/review-block.test.js.map +0 -1
  125. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +0 -1
  126. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +0 -12
  127. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +0 -1
  128. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +0 -1
  129. package/dist/test/sort-filter-bar/alpha-bar.test.js +0 -68
  130. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +0 -1
  131. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +0 -1
  132. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -304
  133. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +0 -1
  134. package/dist/test/text-overlay.test.d.ts +0 -1
  135. package/dist/test/text-overlay.test.js +0 -43
  136. package/dist/test/text-overlay.test.js.map +0 -1
  137. package/dist/test/text-snippet-block.test.d.ts +0 -1
  138. package/dist/test/text-snippet-block.test.js +0 -58
  139. package/dist/test/text-snippet-block.test.js.map +0 -1
  140. package/dist/test/tile-stats.test.d.ts +0 -1
  141. package/dist/test/tile-stats.test.js +0 -167
  142. package/dist/test/tile-stats.test.js.map +0 -1
  143. package/dist/test/tiles/grid/account-tile.test.d.ts +0 -1
  144. package/dist/test/tiles/grid/account-tile.test.js +0 -96
  145. package/dist/test/tiles/grid/account-tile.test.js.map +0 -1
  146. package/dist/test/tiles/grid/collection-tile.test.d.ts +0 -1
  147. package/dist/test/tiles/grid/collection-tile.test.js +0 -90
  148. package/dist/test/tiles/grid/collection-tile.test.js.map +0 -1
  149. package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
  150. package/dist/test/tiles/grid/item-tile.test.js +0 -400
  151. package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
  152. package/dist/test/tiles/grid/search-tile.test.d.ts +0 -1
  153. package/dist/test/tiles/grid/search-tile.test.js +0 -62
  154. package/dist/test/tiles/grid/search-tile.test.js.map +0 -1
  155. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +0 -1
  156. package/dist/test/tiles/hover/hover-pane-controller.test.js +0 -351
  157. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +0 -1
  158. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +0 -1
  159. package/dist/test/tiles/hover/tile-hover-pane.test.js +0 -53
  160. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +0 -1
  161. package/dist/test/tiles/list/tile-list-compact-header.test.d.ts +0 -1
  162. package/dist/test/tiles/list/tile-list-compact-header.test.js +0 -36
  163. package/dist/test/tiles/list/tile-list-compact-header.test.js.map +0 -1
  164. package/dist/test/tiles/list/tile-list-compact.test.d.ts +0 -1
  165. package/dist/test/tiles/list/tile-list-compact.test.js +0 -237
  166. package/dist/test/tiles/list/tile-list-compact.test.js.map +0 -1
  167. package/dist/test/tiles/list/tile-list.test.d.ts +0 -1
  168. package/dist/test/tiles/list/tile-list.test.js +0 -460
  169. package/dist/test/tiles/list/tile-list.test.js.map +0 -1
  170. package/dist/test/tiles/tile-dispatcher.test.d.ts +0 -1
  171. package/dist/test/tiles/tile-dispatcher.test.js +0 -246
  172. package/dist/test/tiles/tile-dispatcher.test.js.map +0 -1
  173. package/dist/test/tiles/tile-display-value-provider.test.d.ts +0 -1
  174. package/dist/test/tiles/tile-display-value-provider.test.js +0 -142
  175. package/dist/test/tiles/tile-display-value-provider.test.js.map +0 -1
  176. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +0 -1
  177. package/dist/test/tiles/tile-mediatype-icon.test.js +0 -133
  178. package/dist/test/tiles/tile-mediatype-icon.test.js.map +0 -1
  179. package/dist/test/utils/array-equals.test.d.ts +0 -1
  180. package/dist/test/utils/array-equals.test.js +0 -27
  181. package/dist/test/utils/array-equals.test.js.map +0 -1
  182. package/dist/test/utils/format-count.test.d.ts +0 -1
  183. package/dist/test/utils/format-count.test.js +0 -24
  184. package/dist/test/utils/format-count.test.js.map +0 -1
  185. package/dist/test/utils/format-date.test.d.ts +0 -1
  186. package/dist/test/utils/format-date.test.js +0 -61
  187. package/dist/test/utils/format-date.test.js.map +0 -1
  188. package/dist/test/utils/format-unit-size.test.d.ts +0 -1
  189. package/dist/test/utils/format-unit-size.test.js +0 -18
  190. package/dist/test/utils/format-unit-size.test.js.map +0 -1
  191. package/dist/test/utils/local-date-from-utc.test.d.ts +0 -1
  192. package/dist/test/utils/local-date-from-utc.test.js +0 -27
  193. package/dist/test/utils/local-date-from-utc.test.js.map +0 -1
  194. package/dist/test/utils/normalize-filter-text.test.d.ts +0 -1
  195. package/dist/test/utils/normalize-filter-text.test.js +0 -69
  196. package/dist/test/utils/normalize-filter-text.test.js.map +0 -1
  197. package/docs/design/column-virtualization.md +0 -214
  198. package/eslint.config.mjs +0 -53
  199. package/index.html +0 -24
  200. package/index.ts +0 -29
  201. package/local.archive.org.cert +0 -86
  202. package/local.archive.org.key +0 -27
  203. package/pnpm-workspace.yaml +0 -30
  204. package/renovate.json +0 -6
  205. package/src/app-root.ts +0 -1282
  206. package/src/assets/img/icons/arrow-left.ts +0 -10
  207. package/src/assets/img/icons/arrow-right.ts +0 -10
  208. package/src/assets/img/icons/check.ts +0 -5
  209. package/src/assets/img/icons/chevron.ts +0 -4
  210. package/src/assets/img/icons/close-circle-dark.ts +0 -5
  211. package/src/assets/img/icons/contract.ts +0 -9
  212. package/src/assets/img/icons/empty-query.ts +0 -5
  213. package/src/assets/img/icons/expand.ts +0 -9
  214. package/src/assets/img/icons/eye-closed.ts +0 -5
  215. package/src/assets/img/icons/eye.ts +0 -5
  216. package/src/assets/img/icons/favorite-filled.ts +0 -10
  217. package/src/assets/img/icons/favorite-unfilled.ts +0 -9
  218. package/src/assets/img/icons/filter.ts +0 -10
  219. package/src/assets/img/icons/login-required.ts +0 -18
  220. package/src/assets/img/icons/mediatype/account.ts +0 -14
  221. package/src/assets/img/icons/mediatype/audio.ts +0 -14
  222. package/src/assets/img/icons/mediatype/collection.ts +0 -12
  223. package/src/assets/img/icons/mediatype/data.ts +0 -15
  224. package/src/assets/img/icons/mediatype/etree.ts +0 -14
  225. package/src/assets/img/icons/mediatype/film.ts +0 -14
  226. package/src/assets/img/icons/mediatype/images.ts +0 -13
  227. package/src/assets/img/icons/mediatype/radio.ts +0 -15
  228. package/src/assets/img/icons/mediatype/search.ts +0 -14
  229. package/src/assets/img/icons/mediatype/software.ts +0 -13
  230. package/src/assets/img/icons/mediatype/texts.ts +0 -13
  231. package/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  232. package/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  233. package/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  234. package/src/assets/img/icons/mediatype/tv.ts +0 -14
  235. package/src/assets/img/icons/mediatype/video.ts +0 -14
  236. package/src/assets/img/icons/mediatype/web.ts +0 -13
  237. package/src/assets/img/icons/null-result.ts +0 -5
  238. package/src/assets/img/icons/quote.ts +0 -7
  239. package/src/assets/img/icons/restricted.ts +0 -13
  240. package/src/assets/img/icons/reviews.ts +0 -11
  241. package/src/assets/img/icons/upload.ts +0 -12
  242. package/src/assets/img/icons/views.ts +0 -11
  243. package/src/circular-activity-indicator.ts +0 -64
  244. package/src/collection-browser.ts +0 -3165
  245. package/src/collection-facets/facet-row-template.ts +0 -242
  246. package/src/collection-facets/facet-row.ts +0 -122
  247. package/src/collection-facets/facet-tombstone-row.ts +0 -40
  248. package/src/collection-facets/facets-template.ts +0 -85
  249. package/src/collection-facets/models.ts +0 -16
  250. package/src/collection-facets/more-facets-content.ts +0 -951
  251. package/src/collection-facets/more-facets-scroller.ts +0 -485
  252. package/src/collection-facets/page-window.ts +0 -247
  253. package/src/collection-facets/smart-facets/dedupe.ts +0 -44
  254. package/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  255. package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  256. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  257. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  258. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  259. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  260. package/src/collection-facets/smart-facets/models.ts +0 -36
  261. package/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  262. package/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  263. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  264. package/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  265. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  266. package/src/collection-facets/toggle-switch.ts +0 -175
  267. package/src/collection-facets.ts +0 -1013
  268. package/src/data-source/collection-browser-data-source-interface.ts +0 -351
  269. package/src/data-source/collection-browser-data-source.ts +0 -1474
  270. package/src/data-source/collection-browser-query-state.ts +0 -60
  271. package/src/data-source/models.ts +0 -56
  272. package/src/empty-placeholder.ts +0 -192
  273. package/src/expanded-date-picker.ts +0 -191
  274. package/src/language-code-handler/language-code-handler.ts +0 -64
  275. package/src/language-code-handler/language-code-mapping.ts +0 -564
  276. package/src/manage/manage-bar.ts +0 -276
  277. package/src/manage/remove-items-modal-content.ts +0 -102
  278. package/src/mediatype/mediatype-config.ts +0 -146
  279. package/src/models.ts +0 -912
  280. package/src/restoration-state-handler.ts +0 -550
  281. package/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  282. package/src/sort-filter-bar/alpha-bar.ts +0 -252
  283. package/src/sort-filter-bar/img/compact.ts +0 -5
  284. package/src/sort-filter-bar/img/list.ts +0 -5
  285. package/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  286. package/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  287. package/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  288. package/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  289. package/src/sort-filter-bar/img/tile.ts +0 -5
  290. package/src/sort-filter-bar/sort-filter-bar.ts +0 -733
  291. package/src/styles/ia-button.ts +0 -139
  292. package/src/styles/item-image-styles.ts +0 -124
  293. package/src/styles/sr-only.ts +0 -18
  294. package/src/styles/tile-action-styles.ts +0 -59
  295. package/src/tiles/base-tile-component.ts +0 -124
  296. package/src/tiles/collection-browser-loading-tile.ts +0 -26
  297. package/src/tiles/grid/account-tile.ts +0 -113
  298. package/src/tiles/grid/collection-tile.ts +0 -184
  299. package/src/tiles/grid/item-tile.ts +0 -347
  300. package/src/tiles/grid/search-tile.ts +0 -90
  301. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  302. package/src/tiles/grid/tile-stats.ts +0 -211
  303. package/src/tiles/hover/hover-pane-controller.ts +0 -638
  304. package/src/tiles/hover/tile-hover-pane.ts +0 -184
  305. package/src/tiles/image-block.ts +0 -162
  306. package/src/tiles/item-image.ts +0 -214
  307. package/src/tiles/list/tile-list-compact-header.ts +0 -112
  308. package/src/tiles/list/tile-list-compact.ts +0 -278
  309. package/src/tiles/list/tile-list.ts +0 -718
  310. package/src/tiles/models.ts +0 -21
  311. package/src/tiles/overlay/icon-overlay.ts +0 -57
  312. package/src/tiles/overlay/text-overlay.ts +0 -79
  313. package/src/tiles/review-block.ts +0 -130
  314. package/src/tiles/text-snippet-block.ts +0 -132
  315. package/src/tiles/tile-dispatcher.ts +0 -637
  316. package/src/tiles/tile-display-value-provider.ts +0 -133
  317. package/src/tiles/tile-mediatype-icon.ts +0 -133
  318. package/src/utils/analytics-events.ts +0 -29
  319. package/src/utils/array-equals.ts +0 -8
  320. package/src/utils/collapse-repeated-quotes.ts +0 -13
  321. package/src/utils/date-filter-field.ts +0 -11
  322. package/src/utils/facet-utils.ts +0 -183
  323. package/src/utils/format-count.ts +0 -95
  324. package/src/utils/format-date.ts +0 -62
  325. package/src/utils/format-unit-size.ts +0 -43
  326. package/src/utils/local-date-from-utc.ts +0 -15
  327. package/src/utils/log.ts +0 -14
  328. package/src/utils/normalize-filter-text.ts +0 -54
  329. package/src/utils/resolve-mediatype.ts +0 -26
  330. package/src/utils/sha1.ts +0 -9
  331. package/test/collection-browser.test.ts +0 -2639
  332. package/test/collection-facets/facet-row.test.ts +0 -421
  333. package/test/collection-facets/facets-template.test.ts +0 -139
  334. package/test/collection-facets/more-facets-content.test.ts +0 -716
  335. package/test/collection-facets/more-facets-scroller.test.ts +0 -401
  336. package/test/collection-facets/page-window.test.ts +0 -208
  337. package/test/collection-facets/toggle-switch.test.ts +0 -164
  338. package/test/collection-facets.test.ts +0 -928
  339. package/test/data-source/collection-browser-data-source.test.ts +0 -193
  340. package/test/empty-placeholder.test.ts +0 -88
  341. package/test/expanded-date-picker.test.ts +0 -201
  342. package/test/icon-overlay.test.ts +0 -38
  343. package/test/image-block.test.ts +0 -247
  344. package/test/item-image.test.ts +0 -220
  345. package/test/manage/manage-bar.test.ts +0 -347
  346. package/test/manage/remove-items-modal-content.test.ts +0 -81
  347. package/test/mediatype-config.test.ts +0 -11
  348. package/test/mocks/mock-analytics-handler.ts +0 -30
  349. package/test/mocks/mock-search-responses.ts +0 -1420
  350. package/test/mocks/mock-search-service.ts +0 -136
  351. package/test/restoration-state-handler.test.ts +0 -480
  352. package/test/review-block.test.ts +0 -62
  353. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  354. package/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  355. package/test/sort-filter-bar/sort-filter-bar.test.ts +0 -443
  356. package/test/text-overlay.test.ts +0 -55
  357. package/test/text-snippet-block.test.ts +0 -85
  358. package/test/tile-stats.test.ts +0 -191
  359. package/test/tiles/grid/account-tile.test.ts +0 -121
  360. package/test/tiles/grid/collection-tile.test.ts +0 -114
  361. package/test/tiles/grid/item-tile.test.ts +0 -520
  362. package/test/tiles/grid/search-tile.test.ts +0 -75
  363. package/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  364. package/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  365. package/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  366. package/test/tiles/list/tile-list-compact.test.ts +0 -282
  367. package/test/tiles/list/tile-list.test.ts +0 -576
  368. package/test/tiles/tile-dispatcher.test.ts +0 -320
  369. package/test/tiles/tile-display-value-provider.test.ts +0 -172
  370. package/test/tiles/tile-mediatype-icon.test.ts +0 -160
  371. package/test/utils/array-equals.test.ts +0 -31
  372. package/test/utils/format-count.test.ts +0 -32
  373. package/test/utils/format-date.test.ts +0 -89
  374. package/test/utils/format-unit-size.test.ts +0 -21
  375. package/test/utils/local-date-from-utc.test.ts +0 -37
  376. package/test/utils/normalize-filter-text.test.ts +0 -87
  377. package/tsconfig.json +0 -25
  378. package/types/dompurify.d.ts +0 -1
  379. package/vite.config.ts +0 -29
  380. package/web-dev-server.config.mjs +0 -30
  381. package/web-test-runner.config.mjs +0 -57
@@ -1,576 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { TileList } from '../../../src/tiles/list/tile-list';
4
-
5
- import '../../../src/tiles/list/tile-list';
6
- import type { TileModel } from '../../../src/models';
7
-
8
- describe('List Tile', () => {
9
- it('should render initial component', async () => {
10
- const el = await fixture<TileList>(
11
- html`<tile-list .model=${{}}></tile-list>`,
12
- );
13
-
14
- const listContainer = el.shadowRoot?.querySelector('#list-line');
15
- const itemTitle = el.shadowRoot?.querySelector('#title');
16
- const imageBlock = el.shadowRoot?.querySelector('image-block');
17
-
18
- expect(listContainer).to.exist;
19
- expect(itemTitle).to.exist;
20
- expect(imageBlock).to.exist;
21
- });
22
-
23
- it('should render the mobile template if below mobile breakpoint', async () => {
24
- const el = await fixture<TileList>(html`
25
- <tile-list .mobileBreakpoint=${500} .currentWidth=${400}> </tile-list>
26
- `);
27
-
28
- const listContainer = el.shadowRoot?.getElementById('list-line');
29
- const topLine = el.shadowRoot?.getElementById('list-line-top');
30
- const bottomLine = el.shadowRoot?.getElementById('list-line-bottom');
31
-
32
- expect(listContainer).to.exist;
33
- expect(listContainer?.classList.contains('mobile')).to.be.true;
34
- expect(topLine).to.exist;
35
- expect(bottomLine).to.exist;
36
- });
37
-
38
- it('should render title link with model href if provided', async () => {
39
- const el = await fixture<TileList>(html`
40
- <tile-list
41
- .baseNavigationUrl=${''}
42
- .model=${{ title: 'foo', href: '/foo/bar' }}
43
- ></tile-list>
44
- `);
45
-
46
- const title = el.shadowRoot?.querySelector('#title > a');
47
-
48
- expect(title).to.exist;
49
- expect(title?.getAttribute('href')).to.equal('/foo/bar');
50
- });
51
-
52
- it('should add title to image link if provided', async () => {
53
- const el = await fixture<TileList>(html`
54
- <tile-list
55
- .baseNavigationUrl=${''}
56
- .model=${{ title: 'foo', href: '/foo/bar' }}
57
- ></tile-list>
58
- `);
59
-
60
- const imageLink = el.shadowRoot?.querySelector('#image-link');
61
-
62
- expect(imageLink).to.exist;
63
- expect(imageLink?.getAttribute('title')).to.equal('View foo');
64
- });
65
-
66
- it('should render with creator element but not dates', async () => {
67
- const el = await fixture<TileList>(html`
68
- <tile-list .model=${{ creators: ['someone'] }}></tile-list>
69
- `);
70
-
71
- const creator = el.shadowRoot?.querySelector('#creator');
72
- const datesLine = el.shadowRoot?.querySelector('#dates-line');
73
-
74
- expect(creator).to.exist;
75
- expect(datesLine?.children.length).to.equal(0);
76
- });
77
-
78
- it('should render with snippet block when it has snippets', async () => {
79
- const el = await fixture<TileList>(html`
80
- <tile-list .model=${{ snippets: ['some {{{snippet}}} text'] }}>
81
- </tile-list>
82
- `);
83
-
84
- const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');
85
-
86
- expect(snippetBlock).to.exist;
87
- });
88
-
89
- it('should not render snippet block when no snippets are present', async () => {
90
- const el = await fixture<TileList>(html`<tile-list></tile-list>`);
91
-
92
- const snippetBlock = el.shadowRoot?.querySelector('text-snippet-block');
93
-
94
- expect(snippetBlock).to.not.exist;
95
- });
96
-
97
- it('should not render suppressed collections', async () => {
98
- const el = await fixture<TileList>(html`
99
- <tile-list
100
- .model=${{ collections: ['deemphasize', 'community', 'foo'] }}
101
- .baseNavigationUrl=${'base'}
102
- >
103
- </tile-list>
104
- `);
105
-
106
- const collectionsRow = el.shadowRoot?.getElementById('collections');
107
- expect(collectionsRow).to.exist;
108
-
109
- const collectionLinks = collectionsRow?.querySelectorAll('a[href]');
110
- expect(collectionLinks?.length).to.equal(1);
111
- expect(collectionLinks?.item(0).getAttribute('href')).to.equal(
112
- 'base/details/foo',
113
- );
114
- });
115
-
116
- it('should not render fav- collections', async () => {
117
- const el = await fixture<TileList>(html`
118
- <tile-list
119
- .model=${{ collections: ['fav-foo', 'bar'] }}
120
- .baseNavigationUrl=${'base'}
121
- >
122
- </tile-list>
123
- `);
124
-
125
- const collectionsRow = el.shadowRoot?.getElementById('collections');
126
- expect(collectionsRow).to.exist;
127
-
128
- const collectionLinks = collectionsRow?.querySelectorAll('a[href]');
129
- expect(collectionLinks?.length).to.equal(1);
130
- expect(collectionLinks?.item(0).getAttribute('href')).to.equal(
131
- 'base/details/bar',
132
- );
133
- });
134
-
135
- it('should render weekly views when sorting by week', async () => {
136
- const el = await fixture<TileList>(html`
137
- <tile-list
138
- .model=${{ viewCount: 50, weeklyViewCount: 10 }}
139
- .sortParam=${{ field: 'week', direction: 'desc' }}
140
- >
141
- </tile-list>
142
- `);
143
-
144
- const viewsRow = el.shadowRoot?.getElementById('views-line');
145
- expect(viewsRow).to.exist;
146
- expect(viewsRow?.textContent?.trim()).to.equal('Weekly views: 10');
147
- });
148
-
149
- it('should render all-time views when sorting by non-week field', async () => {
150
- const el = await fixture<TileList>(html`
151
- <tile-list
152
- .model=${{ viewCount: 50, weeklyViewCount: 10 }}
153
- .sortParam=${{ field: 'downloads', direction: 'desc' }}
154
- >
155
- </tile-list>
156
- `);
157
-
158
- const viewsRow = el.shadowRoot?.getElementById('views-line');
159
- expect(viewsRow).to.exist;
160
- expect(viewsRow?.textContent?.trim()).to.equal('All-time views: 50');
161
- });
162
-
163
- it('should render all-time views with no sort param', async () => {
164
- const el = await fixture<TileList>(html`
165
- <tile-list .model=${{ viewCount: 50, weeklyViewCount: 10 }}> </tile-list>
166
- `);
167
-
168
- const viewsRow = el.shadowRoot?.getElementById('views-line');
169
- expect(viewsRow).to.exist;
170
- expect(viewsRow?.textContent?.trim()).to.equal('All-time views: 50');
171
- });
172
-
173
- it('should render published date when sorting by it', async () => {
174
- const model: Partial<TileModel> = {
175
- dateAdded: new Date(2010, 0, 2),
176
- dateArchived: new Date(2011, 0, 2),
177
- datePublished: new Date(2012, 0, 2),
178
- dateReviewed: new Date(2013, 0, 2),
179
- };
180
-
181
- const el = await fixture<TileList>(html`
182
- <tile-list
183
- .model=${model}
184
- .sortParam=${{ field: 'date', direction: 'desc' }}
185
- >
186
- </tile-list>
187
- `);
188
-
189
- const dateRow = el.shadowRoot?.getElementById('dates-line');
190
- expect(dateRow).to.exist;
191
- expect(dateRow?.textContent?.trim()).to.contain('Published: Jan 02, 2012');
192
- });
193
-
194
- it('should render added date when sorting by it', async () => {
195
- const model: Partial<TileModel> = {
196
- dateAdded: new Date(2010, 0, 2),
197
- dateArchived: new Date(2011, 0, 2),
198
- datePublished: new Date(2012, 0, 2),
199
- dateReviewed: new Date(2013, 0, 2),
200
- };
201
-
202
- const el = await fixture<TileList>(html`
203
- <tile-list
204
- .model=${model}
205
- .sortParam=${{ field: 'addeddate', direction: 'desc' }}
206
- >
207
- </tile-list>
208
- `);
209
-
210
- const dateRow = el.shadowRoot?.getElementById('dates-line');
211
- expect(dateRow).to.exist;
212
- expect(dateRow?.textContent?.trim()).to.contain('Added: Jan 02, 2010');
213
- });
214
-
215
- it('should render archived date when sorting by it', async () => {
216
- const model: Partial<TileModel> = {
217
- dateAdded: new Date(2010, 0, 2),
218
- dateArchived: new Date(2011, 0, 2),
219
- datePublished: new Date(2012, 0, 2),
220
- dateReviewed: new Date(2013, 0, 2),
221
- };
222
-
223
- const el = await fixture<TileList>(html`
224
- <tile-list
225
- .model=${model}
226
- .sortParam=${{ field: 'publicdate', direction: 'desc' }}
227
- >
228
- </tile-list>
229
- `);
230
-
231
- const dateRow = el.shadowRoot?.getElementById('dates-line');
232
- expect(dateRow).to.exist;
233
- expect(dateRow?.textContent?.trim()).to.contain('Archived: Jan 02, 2011');
234
- });
235
-
236
- it('should render reviewed date when sorting by it', async () => {
237
- const model: Partial<TileModel> = {
238
- dateAdded: new Date(2010, 0, 2),
239
- dateArchived: new Date(2011, 0, 2),
240
- datePublished: new Date(2012, 0, 2),
241
- dateReviewed: new Date(2013, 0, 2),
242
- };
243
-
244
- const el = await fixture<TileList>(html`
245
- <tile-list
246
- .model=${model}
247
- .sortParam=${{ field: 'reviewdate', direction: 'desc' }}
248
- >
249
- </tile-list>
250
- `);
251
-
252
- const dateRow = el.shadowRoot?.getElementById('dates-line');
253
- expect(dateRow).to.exist;
254
- expect(dateRow?.textContent?.trim()).to.contain('Reviewed: Jan 02, 2013');
255
- });
256
-
257
- it('should only show the year for a date published of Jan 1 at midnight UTC', async () => {
258
- const model: Partial<TileModel> = {
259
- datePublished: new Date('2012-01-01T00:00:00Z'),
260
- };
261
-
262
- const el = await fixture<TileList>(html`
263
- <tile-list
264
- .model=${model}
265
- .sortParam=${{ field: 'date', direction: 'desc' }}
266
- >
267
- </tile-list>
268
- `);
269
-
270
- const dateRow = el.shadowRoot?.getElementById('dates-line');
271
- expect(dateRow).to.exist;
272
- expect(dateRow?.textContent?.trim()).to.contain('Published: 2012');
273
- });
274
-
275
- it('should show full date added/archived/reviewed, even on Jan 1 at midnight UTC', async () => {
276
- const model: Partial<TileModel> = {
277
- dateAdded: new Date(2010, 0, 1, 0, 0, 0, 0),
278
- dateArchived: new Date(2011, 0, 1, 0, 0, 0, 0),
279
- datePublished: new Date(2012, 0, 1, 0, 0, 0, 0),
280
- dateReviewed: new Date(2013, 0, 1, 0, 0, 0, 0),
281
- };
282
-
283
- const el = await fixture<TileList>(html`
284
- <tile-list
285
- .model=${model}
286
- .sortParam=${{ field: 'addeddate', direction: 'desc' }}
287
- >
288
- </tile-list>
289
- `);
290
-
291
- let dateRow = el.shadowRoot?.getElementById('dates-line');
292
- expect(dateRow).to.exist;
293
- expect(dateRow?.textContent?.trim()).to.contain('Added: Jan 01, 2010');
294
-
295
- el.sortParam = { field: 'publicdate', direction: 'desc' };
296
- await el.updateComplete;
297
- dateRow = el.shadowRoot?.getElementById('dates-line');
298
- expect(dateRow).to.exist;
299
- expect(dateRow?.textContent?.trim()).to.contain('Archived: Jan 01, 2011');
300
-
301
- el.sortParam = { field: 'reviewdate', direction: 'desc' };
302
- await el.updateComplete;
303
- dateRow = el.shadowRoot?.getElementById('dates-line');
304
- expect(dateRow).to.exist;
305
- expect(dateRow?.textContent?.trim()).to.contain('Reviewed: Jan 01, 2013');
306
- });
307
-
308
- it('should display dates in UTC time zone by default', async () => {
309
- const model: Partial<TileModel> = {
310
- datePublished: new Date('2012-02-15T00:00:00Z'),
311
- };
312
-
313
- const el = await fixture<TileList>(html`
314
- <tile-list
315
- .model=${model}
316
- .sortParam=${{ field: 'date', direction: 'desc' }}
317
- >
318
- </tile-list>
319
- `);
320
-
321
- const dateRow = el.shadowRoot?.getElementById('dates-line');
322
- expect(dateRow).to.exist;
323
- expect(dateRow?.textContent?.trim()).to.contain('Published: Feb 15, 2012');
324
- });
325
-
326
- it('should display dates in local time when useLocalTime option is true', async () => {
327
- // Expected behavior depends on the time zone offset where the testing occurs
328
- const offset = new Date().getTimezoneOffset();
329
- let datePublished, expected;
330
- if (offset > 0) {
331
- // Positive local time zone offsets have earlier local dates than UTC
332
- datePublished = new Date('2012-02-15T00:00:00Z');
333
- expected = 'Published: Feb 14, 2012';
334
- } else if (offset < 0) {
335
- // Negative local time zone offsets have later local dates than UTC
336
- datePublished = new Date('2012-02-15T23:59:59Z');
337
- expected = 'Published: Feb 16, 2012';
338
- } else {
339
- // Local time may just be UTC itself
340
- datePublished = new Date('2012-02-15T00:00:00Z');
341
- expected = 'Published: Feb 15, 2012';
342
- }
343
-
344
- const model: Partial<TileModel> = {
345
- datePublished,
346
- };
347
-
348
- const el = await fixture<TileList>(html`
349
- <tile-list
350
- useLocalTime
351
- .model=${model}
352
- .sortParam=${{ field: 'date', direction: 'desc' }}
353
- >
354
- </tile-list>
355
- `);
356
-
357
- const dateRow = el.shadowRoot?.getElementById('dates-line');
358
- expect(dateRow).to.exist;
359
-
360
- expect(dateRow?.textContent?.trim()).to.contain(expected);
361
- });
362
-
363
- it('should render links to /search pages (not search.php) for subject, creator, and source', async () => {
364
- const model: Partial<TileModel> = {
365
- subjects: ['foo'],
366
- creators: ['bar'],
367
- source: 'baz',
368
- };
369
-
370
- const el = await fixture<TileList>(html`
371
- <tile-list .model=${model}></tile-list>
372
- `);
373
-
374
- const subjectLink = el.shadowRoot?.querySelector('#topics a[href]');
375
- expect(subjectLink).to.exist;
376
- expect(subjectLink?.getAttribute('href')).to.equal(
377
- `/search?query=${encodeURIComponent('subject:"foo"')}`,
378
- );
379
-
380
- const creatorLink = el.shadowRoot?.querySelector('#creator a[href]');
381
- expect(creatorLink).to.exist;
382
- expect(creatorLink?.getAttribute('href')).to.equal(
383
- `/search?query=${encodeURIComponent('creator:"bar"')}`,
384
- );
385
-
386
- const sourceLink = el.shadowRoot?.querySelector('#source a[href]');
387
- expect(sourceLink).to.exist;
388
- expect(sourceLink?.getAttribute('href')).to.equal(
389
- `/search?query=${encodeURIComponent('source:"baz"')}`,
390
- );
391
- });
392
-
393
- it('should render multi-line descriptions with spaces b/w lines', async () => {
394
- const el = await fixture<TileList>(html`
395
- <tile-list .model=${{ description: 'line1\nline2' }}> </tile-list>
396
- `);
397
-
398
- const descriptionBlock = el.shadowRoot?.getElementById('description');
399
- expect(descriptionBlock).to.exist;
400
- expect(descriptionBlock?.textContent?.trim()).to.equal('line1 line2'); // line break replaced by space
401
- });
402
-
403
- it('should render mediatype icon as link to corresponding mediatype collection details', async () => {
404
- const model: Partial<TileModel> = {
405
- mediatype: 'texts',
406
- };
407
-
408
- const el = await fixture<TileList>(html`
409
- <tile-list
410
- .baseNavigationUrl=${'https://archive.org'}
411
- .model=${model}
412
- ></tile-list>
413
- `);
414
-
415
- const mediatypeLink = el.shadowRoot?.querySelector('a#icon-right');
416
- expect(mediatypeLink).to.exist;
417
- expect(mediatypeLink?.getAttribute('href')).to.equal(
418
- `https://archive.org/details/texts`,
419
- );
420
- expect(mediatypeLink?.getAttribute('title')).to.equal('See more: texts');
421
- });
422
-
423
- it('should render mediatype icon as link even with empty baseNavigationUrl', async () => {
424
- const model: Partial<TileModel> = {
425
- mediatype: 'texts',
426
- };
427
-
428
- const el = await fixture<TileList>(html`
429
- <tile-list .baseNavigationUrl=${''} .model=${model}></tile-list>
430
- `);
431
-
432
- const mediatypeLink = el.shadowRoot?.querySelector('a#icon-right');
433
- expect(mediatypeLink).to.exist;
434
- expect(mediatypeLink?.getAttribute('href')).to.equal(`/details/texts`);
435
- });
436
-
437
- it('should render collection mediatype icon as link to search page', async () => {
438
- const model: Partial<TileModel> = {
439
- mediatype: 'collection',
440
- };
441
-
442
- const el = await fixture<TileList>(html`
443
- <tile-list
444
- .baseNavigationUrl=${'https://archive.org'}
445
- .model=${model}
446
- ></tile-list>
447
- `);
448
-
449
- const mediatypeLink = el.shadowRoot?.querySelector('a#icon-right');
450
- expect(mediatypeLink).to.exist;
451
- expect(mediatypeLink?.getAttribute('href')).to.equal(
452
- `https://archive.org/search?query=mediatype:collection&sort=-downloads`,
453
- );
454
- });
455
-
456
- it('should not render account mediatype icon as link', async () => {
457
- const model: Partial<TileModel> = {
458
- mediatype: 'account',
459
- };
460
-
461
- const el = await fixture<TileList>(html`
462
- <tile-list
463
- .baseNavigationUrl=${'https://archive.org'}
464
- .model=${model}
465
- ></tile-list>
466
- `);
467
-
468
- const mediatypeLink = el.shadowRoot?.querySelector('a#icon-right');
469
- expect(mediatypeLink).to.exist;
470
- expect(mediatypeLink?.getAttribute('href')).not.to.exist;
471
- });
472
-
473
- it('should render date added for accounts', async () => {
474
- const el = await fixture<TileList>(html`
475
- <tile-list
476
- .model=${{
477
- mediatype: 'account',
478
- dateAdded: new Date('2015-05-05T00:00:00'),
479
- }}
480
- >
481
- </tile-list>
482
- `);
483
-
484
- const creatorBlock = el.shadowRoot?.getElementById('creator');
485
- expect(creatorBlock).to.exist;
486
- expect(creatorBlock?.textContent?.trim()).to.equal('Archivist since 2015');
487
- });
488
-
489
- it('should render web capture date links if present', async () => {
490
- const captureDates = [
491
- new Date('2010-01-02T12:34:56Z'),
492
- new Date('2011-02-03T12:43:21Z'),
493
- ];
494
-
495
- const el = await fixture<TileList>(html`
496
- <tile-list
497
- .model=${{
498
- identifier: 'foo',
499
- title: 'https://example.com/',
500
- captureDates,
501
- }}
502
- ></tile-list>
503
- `);
504
-
505
- const captureDatesUl = el.shadowRoot?.querySelector('.capture-dates');
506
- expect(captureDatesUl, 'capture dates container').to.exist;
507
- expect(captureDatesUl?.children.length).to.equal(2);
508
-
509
- const firstDateLink = captureDatesUl?.children[0]?.querySelector('a[href]');
510
- expect(firstDateLink, 'first date link').to.exist;
511
- expect(firstDateLink?.getAttribute('href')).to.equal(
512
- 'https://web.archive.org/web/20100102123456/https://example.com/',
513
- );
514
- expect(firstDateLink?.textContent?.trim()).to.equal('Jan 02, 2010');
515
-
516
- const secondDateLink =
517
- captureDatesUl?.children[1]?.querySelector('a[href]');
518
- expect(secondDateLink, 'second date link').to.exist;
519
- expect(secondDateLink?.getAttribute('href')).to.equal(
520
- 'https://web.archive.org/web/20110203124321/https://example.com/',
521
- );
522
- expect(secondDateLink?.textContent?.trim()).to.equal('Feb 03, 2011');
523
- });
524
-
525
- it('should not render web captures if no title is present', async () => {
526
- const captureDates = [
527
- new Date('2010-01-02T12:34:56Z'),
528
- new Date('2011-02-03T12:43:21Z'),
529
- ];
530
-
531
- const el = await fixture<TileList>(html`
532
- <tile-list
533
- .model=${{
534
- identifier: 'foo',
535
- captureDates,
536
- }}
537
- ></tile-list>
538
- `);
539
-
540
- const captureDatesUl = el.shadowRoot?.querySelector('.capture-dates');
541
- expect(captureDatesUl).not.to.exist;
542
- });
543
-
544
- it('should render review snippet if present', async () => {
545
- const review = {
546
- title: 'Foo',
547
- body: 'foo bar baz',
548
- stars: 3,
549
- };
550
-
551
- const el = await fixture<TileList>(html`
552
- <tile-list
553
- .model=${{
554
- identifier: 'foo',
555
- review,
556
- }}
557
- ></tile-list>
558
- `);
559
-
560
- const reviewBlock = el.shadowRoot?.querySelector('review-block');
561
- expect(reviewBlock).to.exist;
562
- });
563
-
564
- it('should not render review snippet block when no review is present', async () => {
565
- const el = await fixture<TileList>(html`
566
- <tile-list
567
- .model=${{
568
- identifier: 'foo',
569
- }}
570
- ></tile-list>
571
- `);
572
-
573
- const reviewBlock = el.shadowRoot?.querySelector('review-block');
574
- expect(reviewBlock).not.to.exist;
575
- });
576
- });