@internetarchive/collection-browser 4.7.1-alpha-webdev9189.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 (396) hide show
  1. package/README.md +33 -0
  2. package/dist/src/app-root.js +0 -2
  3. package/dist/src/app-root.js.map +1 -1
  4. package/dist/src/assets/img/icons/check.d.ts +2 -0
  5. package/dist/src/assets/img/icons/check.js +5 -0
  6. package/dist/src/assets/img/icons/check.js.map +1 -0
  7. package/dist/src/collection-browser.d.ts +2 -1
  8. package/dist/src/collection-browser.js +5 -27
  9. package/dist/src/collection-browser.js.map +1 -1
  10. package/dist/src/collection-facets/facet-row-template.d.ts +38 -0
  11. package/dist/src/collection-facets/facet-row-template.js +200 -0
  12. package/dist/src/collection-facets/facet-row-template.js.map +1 -0
  13. package/dist/src/collection-facets/facet-row.js +11 -186
  14. package/dist/src/collection-facets/facet-row.js.map +1 -1
  15. package/dist/src/collection-facets/models.d.ts +7 -2
  16. package/dist/src/collection-facets/models.js +7 -2
  17. package/dist/src/collection-facets/models.js.map +1 -1
  18. package/dist/src/collection-facets/more-facets-content.d.ts +87 -21
  19. package/dist/src/collection-facets/more-facets-content.js +479 -201
  20. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  21. package/dist/src/collection-facets/more-facets-scroller.d.ts +85 -0
  22. package/dist/src/collection-facets/more-facets-scroller.js +429 -0
  23. package/dist/src/collection-facets/more-facets-scroller.js.map +1 -0
  24. package/dist/src/collection-facets/page-window.d.ts +73 -0
  25. package/dist/src/collection-facets/page-window.js +202 -0
  26. package/dist/src/collection-facets/page-window.js.map +1 -0
  27. package/dist/src/collection-facets/toggle-switch.js +1 -0
  28. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  29. package/dist/src/collection-facets.js +3 -2
  30. package/dist/src/collection-facets.js.map +1 -1
  31. package/dist/src/empty-placeholder.d.ts +7 -7
  32. package/dist/src/empty-placeholder.js +29 -15
  33. package/dist/src/empty-placeholder.js.map +1 -1
  34. package/dist/src/expanded-date-picker.js +3 -2
  35. package/dist/src/expanded-date-picker.js.map +1 -1
  36. package/dist/src/locales/es.d.ts +94 -0
  37. package/dist/src/locales/es.js +109 -0
  38. package/dist/src/locales/es.js.map +1 -0
  39. package/dist/src/manage/manage-bar.d.ts +3 -2
  40. package/dist/src/manage/manage-bar.js +6 -7
  41. package/dist/src/manage/manage-bar.js.map +1 -1
  42. package/dist/src/manage/remove-items-modal-content.js +3 -2
  43. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  44. package/dist/src/models.d.ts +4 -0
  45. package/dist/src/models.js +22 -2
  46. package/dist/src/models.js.map +1 -1
  47. package/dist/src/sort-filter-bar/sort-filter-bar.js +3 -3
  48. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  49. package/dist/src/tiles/grid/account-tile.js +3 -2
  50. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  51. package/dist/src/tiles/grid/collection-tile.js +3 -2
  52. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  53. package/dist/src/tiles/grid/item-tile.js +3 -2
  54. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  55. package/dist/src/tiles/grid/tile-stats.js +3 -2
  56. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  57. package/dist/src/tiles/list/tile-list-compact-header.js +3 -2
  58. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  59. package/dist/src/tiles/list/tile-list-compact.js +3 -1
  60. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  61. package/dist/src/tiles/list/tile-list.js +3 -2
  62. package/dist/src/tiles/list/tile-list.js.map +1 -1
  63. package/dist/src/tiles/overlay/text-overlay.js +3 -1
  64. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  65. package/dist/src/tiles/review-block.js +3 -2
  66. package/dist/src/tiles/review-block.js.map +1 -1
  67. package/dist/src/tiles/tile-dispatcher.d.ts +2 -1
  68. package/dist/src/tiles/tile-dispatcher.js +5 -4
  69. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  70. package/dist/src/utils/log.d.ts +1 -4
  71. package/dist/src/utils/normalize-filter-text.d.ts +28 -0
  72. package/dist/src/utils/normalize-filter-text.js +35 -0
  73. package/dist/src/utils/normalize-filter-text.js.map +1 -0
  74. package/locales/es.d.ts +1 -0
  75. package/locales/es.js +1 -0
  76. package/package.json +15 -1
  77. package/.editorconfig +0 -29
  78. package/.github/workflows/ci.yml +0 -29
  79. package/.github/workflows/gh-pages-main.yml +0 -41
  80. package/.github/workflows/npm-publish.yml +0 -42
  81. package/.github/workflows/pr-preview.yml +0 -40
  82. package/.husky/pre-commit +0 -1
  83. package/.prettierignore +0 -1
  84. package/dist/src/collection-facets/more-facets-pagination.d.ts +0 -36
  85. package/dist/src/collection-facets/more-facets-pagination.js +0 -260
  86. package/dist/src/collection-facets/more-facets-pagination.js.map +0 -1
  87. package/dist/test/collection-browser.test.d.ts +0 -1
  88. package/dist/test/collection-browser.test.js +0 -1849
  89. package/dist/test/collection-browser.test.js.map +0 -1
  90. package/dist/test/collection-facets/facet-row.test.d.ts +0 -1
  91. package/dist/test/collection-facets/facet-row.test.js +0 -291
  92. package/dist/test/collection-facets/facet-row.test.js.map +0 -1
  93. package/dist/test/collection-facets/facets-template.test.d.ts +0 -1
  94. package/dist/test/collection-facets/facets-template.test.js +0 -95
  95. package/dist/test/collection-facets/facets-template.test.js.map +0 -1
  96. package/dist/test/collection-facets/more-facets-content.test.d.ts +0 -1
  97. package/dist/test/collection-facets/more-facets-content.test.js +0 -159
  98. package/dist/test/collection-facets/more-facets-content.test.js.map +0 -1
  99. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +0 -1
  100. package/dist/test/collection-facets/more-facets-pagination.test.js +0 -126
  101. package/dist/test/collection-facets/more-facets-pagination.test.js.map +0 -1
  102. package/dist/test/collection-facets/toggle-switch.test.d.ts +0 -1
  103. package/dist/test/collection-facets/toggle-switch.test.js +0 -99
  104. package/dist/test/collection-facets/toggle-switch.test.js.map +0 -1
  105. package/dist/test/collection-facets.test.d.ts +0 -2
  106. package/dist/test/collection-facets.test.js +0 -728
  107. package/dist/test/collection-facets.test.js.map +0 -1
  108. package/dist/test/data-source/collection-browser-data-source.test.d.ts +0 -1
  109. package/dist/test/data-source/collection-browser-data-source.test.js +0 -154
  110. package/dist/test/data-source/collection-browser-data-source.test.js.map +0 -1
  111. package/dist/test/empty-placeholder.test.d.ts +0 -1
  112. package/dist/test/empty-placeholder.test.js +0 -57
  113. package/dist/test/empty-placeholder.test.js.map +0 -1
  114. package/dist/test/expanded-date-picker.test.d.ts +0 -1
  115. package/dist/test/expanded-date-picker.test.js +0 -124
  116. package/dist/test/expanded-date-picker.test.js.map +0 -1
  117. package/dist/test/icon-overlay.test.d.ts +0 -1
  118. package/dist/test/icon-overlay.test.js +0 -31
  119. package/dist/test/icon-overlay.test.js.map +0 -1
  120. package/dist/test/image-block.test.d.ts +0 -1
  121. package/dist/test/image-block.test.js +0 -208
  122. package/dist/test/image-block.test.js.map +0 -1
  123. package/dist/test/item-image.test.d.ts +0 -1
  124. package/dist/test/item-image.test.js +0 -187
  125. package/dist/test/item-image.test.js.map +0 -1
  126. package/dist/test/manage/manage-bar.test.d.ts +0 -3
  127. package/dist/test/manage/manage-bar.test.js +0 -216
  128. package/dist/test/manage/manage-bar.test.js.map +0 -1
  129. package/dist/test/manage/remove-items-modal-content.test.d.ts +0 -1
  130. package/dist/test/manage/remove-items-modal-content.test.js +0 -60
  131. package/dist/test/manage/remove-items-modal-content.test.js.map +0 -1
  132. package/dist/test/mediatype-config.test.d.ts +0 -1
  133. package/dist/test/mediatype-config.test.js +0 -11
  134. package/dist/test/mediatype-config.test.js.map +0 -1
  135. package/dist/test/mocks/mock-analytics-handler.d.ts +0 -10
  136. package/dist/test/mocks/mock-analytics-handler.js +0 -16
  137. package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
  138. package/dist/test/mocks/mock-search-responses.d.ts +0 -31
  139. package/dist/test/mocks/mock-search-responses.js +0 -1241
  140. package/dist/test/mocks/mock-search-responses.js.map +0 -1
  141. package/dist/test/mocks/mock-search-service.d.ts +0 -16
  142. package/dist/test/mocks/mock-search-service.js +0 -64
  143. package/dist/test/mocks/mock-search-service.js.map +0 -1
  144. package/dist/test/restoration-state-handler.test.d.ts +0 -1
  145. package/dist/test/restoration-state-handler.test.js +0 -335
  146. package/dist/test/restoration-state-handler.test.js.map +0 -1
  147. package/dist/test/review-block.test.d.ts +0 -1
  148. package/dist/test/review-block.test.js +0 -46
  149. package/dist/test/review-block.test.js.map +0 -1
  150. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +0 -1
  151. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +0 -12
  152. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +0 -1
  153. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +0 -1
  154. package/dist/test/sort-filter-bar/alpha-bar.test.js +0 -68
  155. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +0 -1
  156. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +0 -1
  157. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -326
  158. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +0 -1
  159. package/dist/test/text-overlay.test.d.ts +0 -1
  160. package/dist/test/text-overlay.test.js +0 -43
  161. package/dist/test/text-overlay.test.js.map +0 -1
  162. package/dist/test/text-snippet-block.test.d.ts +0 -1
  163. package/dist/test/text-snippet-block.test.js +0 -58
  164. package/dist/test/text-snippet-block.test.js.map +0 -1
  165. package/dist/test/tile-stats.test.d.ts +0 -1
  166. package/dist/test/tile-stats.test.js +0 -167
  167. package/dist/test/tile-stats.test.js.map +0 -1
  168. package/dist/test/tiles/grid/account-tile.test.d.ts +0 -1
  169. package/dist/test/tiles/grid/account-tile.test.js +0 -96
  170. package/dist/test/tiles/grid/account-tile.test.js.map +0 -1
  171. package/dist/test/tiles/grid/collection-tile.test.d.ts +0 -1
  172. package/dist/test/tiles/grid/collection-tile.test.js +0 -90
  173. package/dist/test/tiles/grid/collection-tile.test.js.map +0 -1
  174. package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
  175. package/dist/test/tiles/grid/item-tile.test.js +0 -400
  176. package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
  177. package/dist/test/tiles/grid/search-tile.test.d.ts +0 -1
  178. package/dist/test/tiles/grid/search-tile.test.js +0 -62
  179. package/dist/test/tiles/grid/search-tile.test.js.map +0 -1
  180. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +0 -1
  181. package/dist/test/tiles/hover/hover-pane-controller.test.js +0 -351
  182. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +0 -1
  183. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +0 -1
  184. package/dist/test/tiles/hover/tile-hover-pane.test.js +0 -53
  185. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +0 -1
  186. package/dist/test/tiles/list/tile-list-compact-header.test.d.ts +0 -1
  187. package/dist/test/tiles/list/tile-list-compact-header.test.js +0 -36
  188. package/dist/test/tiles/list/tile-list-compact-header.test.js.map +0 -1
  189. package/dist/test/tiles/list/tile-list-compact.test.d.ts +0 -1
  190. package/dist/test/tiles/list/tile-list-compact.test.js +0 -237
  191. package/dist/test/tiles/list/tile-list-compact.test.js.map +0 -1
  192. package/dist/test/tiles/list/tile-list.test.d.ts +0 -1
  193. package/dist/test/tiles/list/tile-list.test.js +0 -460
  194. package/dist/test/tiles/list/tile-list.test.js.map +0 -1
  195. package/dist/test/tiles/tile-dispatcher.test.d.ts +0 -1
  196. package/dist/test/tiles/tile-dispatcher.test.js +0 -246
  197. package/dist/test/tiles/tile-dispatcher.test.js.map +0 -1
  198. package/dist/test/tiles/tile-display-value-provider.test.d.ts +0 -1
  199. package/dist/test/tiles/tile-display-value-provider.test.js +0 -142
  200. package/dist/test/tiles/tile-display-value-provider.test.js.map +0 -1
  201. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +0 -1
  202. package/dist/test/tiles/tile-mediatype-icon.test.js +0 -133
  203. package/dist/test/tiles/tile-mediatype-icon.test.js.map +0 -1
  204. package/dist/test/utils/array-equals.test.d.ts +0 -1
  205. package/dist/test/utils/array-equals.test.js +0 -27
  206. package/dist/test/utils/array-equals.test.js.map +0 -1
  207. package/dist/test/utils/format-count.test.d.ts +0 -1
  208. package/dist/test/utils/format-count.test.js +0 -24
  209. package/dist/test/utils/format-count.test.js.map +0 -1
  210. package/dist/test/utils/format-date.test.d.ts +0 -1
  211. package/dist/test/utils/format-date.test.js +0 -61
  212. package/dist/test/utils/format-date.test.js.map +0 -1
  213. package/dist/test/utils/format-unit-size.test.d.ts +0 -1
  214. package/dist/test/utils/format-unit-size.test.js +0 -18
  215. package/dist/test/utils/format-unit-size.test.js.map +0 -1
  216. package/dist/test/utils/local-date-from-utc.test.d.ts +0 -1
  217. package/dist/test/utils/local-date-from-utc.test.js +0 -27
  218. package/dist/test/utils/local-date-from-utc.test.js.map +0 -1
  219. package/eslint.config.mjs +0 -53
  220. package/index.html +0 -24
  221. package/index.ts +0 -29
  222. package/local.archive.org.cert +0 -86
  223. package/local.archive.org.key +0 -27
  224. package/pnpm-workspace.yaml +0 -30
  225. package/renovate.json +0 -6
  226. package/src/app-root.ts +0 -1284
  227. package/src/assets/img/icons/arrow-left.ts +0 -10
  228. package/src/assets/img/icons/arrow-right.ts +0 -10
  229. package/src/assets/img/icons/chevron.ts +0 -4
  230. package/src/assets/img/icons/close-circle-dark.ts +0 -5
  231. package/src/assets/img/icons/contract.ts +0 -9
  232. package/src/assets/img/icons/empty-query.ts +0 -5
  233. package/src/assets/img/icons/expand.ts +0 -9
  234. package/src/assets/img/icons/eye-closed.ts +0 -5
  235. package/src/assets/img/icons/eye.ts +0 -5
  236. package/src/assets/img/icons/favorite-filled.ts +0 -10
  237. package/src/assets/img/icons/favorite-unfilled.ts +0 -9
  238. package/src/assets/img/icons/filter.ts +0 -10
  239. package/src/assets/img/icons/login-required.ts +0 -18
  240. package/src/assets/img/icons/mediatype/account.ts +0 -14
  241. package/src/assets/img/icons/mediatype/audio.ts +0 -14
  242. package/src/assets/img/icons/mediatype/collection.ts +0 -12
  243. package/src/assets/img/icons/mediatype/data.ts +0 -15
  244. package/src/assets/img/icons/mediatype/etree.ts +0 -14
  245. package/src/assets/img/icons/mediatype/film.ts +0 -14
  246. package/src/assets/img/icons/mediatype/images.ts +0 -13
  247. package/src/assets/img/icons/mediatype/radio.ts +0 -15
  248. package/src/assets/img/icons/mediatype/search.ts +0 -14
  249. package/src/assets/img/icons/mediatype/software.ts +0 -13
  250. package/src/assets/img/icons/mediatype/texts.ts +0 -13
  251. package/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  252. package/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  253. package/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  254. package/src/assets/img/icons/mediatype/tv.ts +0 -14
  255. package/src/assets/img/icons/mediatype/video.ts +0 -14
  256. package/src/assets/img/icons/mediatype/web.ts +0 -13
  257. package/src/assets/img/icons/null-result.ts +0 -5
  258. package/src/assets/img/icons/quote.ts +0 -7
  259. package/src/assets/img/icons/restricted.ts +0 -13
  260. package/src/assets/img/icons/reviews.ts +0 -11
  261. package/src/assets/img/icons/upload.ts +0 -12
  262. package/src/assets/img/icons/views.ts +0 -11
  263. package/src/circular-activity-indicator.ts +0 -64
  264. package/src/collection-browser.ts +0 -3187
  265. package/src/collection-facets/facet-row.ts +0 -309
  266. package/src/collection-facets/facet-tombstone-row.ts +0 -40
  267. package/src/collection-facets/facets-template.ts +0 -85
  268. package/src/collection-facets/models.ts +0 -10
  269. package/src/collection-facets/more-facets-content.ts +0 -644
  270. package/src/collection-facets/more-facets-pagination.ts +0 -294
  271. package/src/collection-facets/smart-facets/dedupe.ts +0 -44
  272. package/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  273. package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  274. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  275. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  276. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  277. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  278. package/src/collection-facets/smart-facets/models.ts +0 -36
  279. package/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  280. package/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  281. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  282. package/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  283. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  284. package/src/collection-facets/toggle-switch.ts +0 -174
  285. package/src/collection-facets.ts +0 -1013
  286. package/src/data-source/collection-browser-data-source-interface.ts +0 -351
  287. package/src/data-source/collection-browser-data-source.ts +0 -1474
  288. package/src/data-source/collection-browser-query-state.ts +0 -60
  289. package/src/data-source/models.ts +0 -56
  290. package/src/empty-placeholder.ts +0 -192
  291. package/src/expanded-date-picker.ts +0 -191
  292. package/src/language-code-handler/language-code-handler.ts +0 -64
  293. package/src/language-code-handler/language-code-mapping.ts +0 -564
  294. package/src/manage/manage-bar.ts +0 -276
  295. package/src/manage/remove-items-modal-content.ts +0 -102
  296. package/src/mediatype/mediatype-config.ts +0 -146
  297. package/src/models.ts +0 -895
  298. package/src/restoration-state-handler.ts +0 -550
  299. package/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  300. package/src/sort-filter-bar/alpha-bar.ts +0 -252
  301. package/src/sort-filter-bar/img/compact.ts +0 -5
  302. package/src/sort-filter-bar/img/list.ts +0 -5
  303. package/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  304. package/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  305. package/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  306. package/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  307. package/src/sort-filter-bar/img/tile.ts +0 -5
  308. package/src/sort-filter-bar/sort-filter-bar.ts +0 -734
  309. package/src/styles/ia-button.ts +0 -139
  310. package/src/styles/item-image-styles.ts +0 -124
  311. package/src/styles/sr-only.ts +0 -18
  312. package/src/styles/tile-action-styles.ts +0 -59
  313. package/src/tiles/base-tile-component.ts +0 -124
  314. package/src/tiles/collection-browser-loading-tile.ts +0 -26
  315. package/src/tiles/grid/account-tile.ts +0 -113
  316. package/src/tiles/grid/collection-tile.ts +0 -184
  317. package/src/tiles/grid/item-tile.ts +0 -347
  318. package/src/tiles/grid/search-tile.ts +0 -90
  319. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  320. package/src/tiles/grid/tile-stats.ts +0 -211
  321. package/src/tiles/hover/hover-pane-controller.ts +0 -638
  322. package/src/tiles/hover/tile-hover-pane.ts +0 -184
  323. package/src/tiles/image-block.ts +0 -162
  324. package/src/tiles/item-image.ts +0 -214
  325. package/src/tiles/list/tile-list-compact-header.ts +0 -112
  326. package/src/tiles/list/tile-list-compact.ts +0 -278
  327. package/src/tiles/list/tile-list.ts +0 -718
  328. package/src/tiles/models.ts +0 -21
  329. package/src/tiles/overlay/icon-overlay.ts +0 -57
  330. package/src/tiles/overlay/text-overlay.ts +0 -79
  331. package/src/tiles/review-block.ts +0 -130
  332. package/src/tiles/text-snippet-block.ts +0 -132
  333. package/src/tiles/tile-dispatcher.ts +0 -637
  334. package/src/tiles/tile-display-value-provider.ts +0 -133
  335. package/src/tiles/tile-mediatype-icon.ts +0 -133
  336. package/src/utils/analytics-events.ts +0 -29
  337. package/src/utils/array-equals.ts +0 -8
  338. package/src/utils/collapse-repeated-quotes.ts +0 -13
  339. package/src/utils/date-filter-field.ts +0 -11
  340. package/src/utils/facet-utils.ts +0 -183
  341. package/src/utils/format-count.ts +0 -95
  342. package/src/utils/format-date.ts +0 -62
  343. package/src/utils/format-unit-size.ts +0 -43
  344. package/src/utils/local-date-from-utc.ts +0 -15
  345. package/src/utils/log.ts +0 -14
  346. package/src/utils/resolve-mediatype.ts +0 -26
  347. package/src/utils/sha1.ts +0 -9
  348. package/test/collection-browser.test.ts +0 -2694
  349. package/test/collection-facets/facet-row.test.ts +0 -421
  350. package/test/collection-facets/facets-template.test.ts +0 -139
  351. package/test/collection-facets/more-facets-content.test.ts +0 -231
  352. package/test/collection-facets/more-facets-pagination.test.ts +0 -201
  353. package/test/collection-facets/toggle-switch.test.ts +0 -164
  354. package/test/collection-facets.test.ts +0 -928
  355. package/test/data-source/collection-browser-data-source.test.ts +0 -193
  356. package/test/empty-placeholder.test.ts +0 -88
  357. package/test/expanded-date-picker.test.ts +0 -201
  358. package/test/icon-overlay.test.ts +0 -38
  359. package/test/image-block.test.ts +0 -247
  360. package/test/item-image.test.ts +0 -220
  361. package/test/manage/manage-bar.test.ts +0 -347
  362. package/test/manage/remove-items-modal-content.test.ts +0 -81
  363. package/test/mediatype-config.test.ts +0 -11
  364. package/test/mocks/mock-analytics-handler.ts +0 -30
  365. package/test/mocks/mock-search-responses.ts +0 -1364
  366. package/test/mocks/mock-search-service.ts +0 -134
  367. package/test/restoration-state-handler.test.ts +0 -480
  368. package/test/review-block.test.ts +0 -62
  369. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  370. package/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  371. package/test/sort-filter-bar/sort-filter-bar.test.ts +0 -472
  372. package/test/text-overlay.test.ts +0 -55
  373. package/test/text-snippet-block.test.ts +0 -85
  374. package/test/tile-stats.test.ts +0 -191
  375. package/test/tiles/grid/account-tile.test.ts +0 -121
  376. package/test/tiles/grid/collection-tile.test.ts +0 -114
  377. package/test/tiles/grid/item-tile.test.ts +0 -520
  378. package/test/tiles/grid/search-tile.test.ts +0 -75
  379. package/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  380. package/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  381. package/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  382. package/test/tiles/list/tile-list-compact.test.ts +0 -282
  383. package/test/tiles/list/tile-list.test.ts +0 -576
  384. package/test/tiles/tile-dispatcher.test.ts +0 -320
  385. package/test/tiles/tile-display-value-provider.test.ts +0 -172
  386. package/test/tiles/tile-mediatype-icon.test.ts +0 -160
  387. package/test/utils/array-equals.test.ts +0 -31
  388. package/test/utils/format-count.test.ts +0 -32
  389. package/test/utils/format-date.test.ts +0 -89
  390. package/test/utils/format-unit-size.test.ts +0 -21
  391. package/test/utils/local-date-from-utc.test.ts +0 -37
  392. package/tsconfig.json +0 -25
  393. package/types/dompurify.d.ts +0 -1
  394. package/vite.config.ts +0 -29
  395. package/web-dev-server.config.mjs +0 -30
  396. package/web-test-runner.config.mjs +0 -52
@@ -1,320 +0,0 @@
1
- import { aTimeout, expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import sinon from 'sinon';
4
- import type { TileDispatcher } from '../../src/tiles/tile-dispatcher';
5
-
6
- import '../../src/tiles/tile-dispatcher';
7
- import type { ItemTile } from '../../src/tiles/grid/item-tile';
8
- import { TileHoverPane } from '../../src/tiles/hover/tile-hover-pane';
9
- import type { HoverPaneProperties } from '../../src/tiles/hover/hover-pane-controller';
10
-
11
- describe('Tile Dispatcher', () => {
12
- it('should render item-tile for grid mode by default', async () => {
13
- const el = await fixture<TileDispatcher>(html`
14
- <tile-dispatcher
15
- .tileDisplayMode=${'grid'}
16
- .model=${{ mediatype: 'texts' }}
17
- >
18
- </tile-dispatcher>
19
- `);
20
-
21
- const itemTile = el.shadowRoot?.querySelector('item-tile');
22
- expect(itemTile).to.exist;
23
- });
24
-
25
- it('should render collection-tile for grid mode and collection mediatype', async () => {
26
- const el = await fixture<TileDispatcher>(html`
27
- <tile-dispatcher
28
- .tileDisplayMode=${'grid'}
29
- .model=${{ mediatype: 'collection' }}
30
- >
31
- </tile-dispatcher>
32
- `);
33
-
34
- const collectionTile = el.shadowRoot?.querySelector('collection-tile');
35
- expect(collectionTile).to.exist;
36
- });
37
-
38
- it('should render account-tile for grid mode and account mediatype', async () => {
39
- const el = await fixture<TileDispatcher>(html`
40
- <tile-dispatcher
41
- .tileDisplayMode=${'grid'}
42
- .model=${{ mediatype: 'account' }}
43
- >
44
- </tile-dispatcher>
45
- `);
46
-
47
- const accountTile = el.shadowRoot?.querySelector('account-tile');
48
- expect(accountTile).to.exist;
49
- });
50
-
51
- it('should render search-tile for grid mode and search mediatype', async () => {
52
- const el = await fixture<TileDispatcher>(html`
53
- <tile-dispatcher
54
- .tileDisplayMode=${'grid'}
55
- .model=${{ mediatype: 'search' }}
56
- >
57
- </tile-dispatcher>
58
- `);
59
-
60
- const searchTile = el.shadowRoot?.querySelector('search-tile');
61
- expect(searchTile).to.exist;
62
- });
63
-
64
- it('should render tile-list for extended list mode', async () => {
65
- const el = await fixture<TileDispatcher>(html`
66
- <tile-dispatcher .tileDisplayMode=${'list-detail'} .model=${{}}>
67
- </tile-dispatcher>
68
- `);
69
-
70
- const listTile = el.shadowRoot?.querySelector('tile-list');
71
- expect(listTile).to.exist;
72
- });
73
-
74
- it('should render tile-list-compact for compact list mode', async () => {
75
- const el = await fixture<TileDispatcher>(html`
76
- <tile-dispatcher .tileDisplayMode=${'list-compact'} .model=${{}}>
77
- </tile-dispatcher>
78
- `);
79
-
80
- const compactListTile = el.shadowRoot?.querySelector('tile-list-compact');
81
- expect(compactListTile).to.exist;
82
- });
83
-
84
- it('should open item in new tab when right-clicked in manage mode', async () => {
85
- const oldWindowOpen = window.open;
86
- const spy = sinon.spy();
87
- window.open = spy;
88
-
89
- const el = await fixture<TileDispatcher>(html`
90
- <tile-dispatcher
91
- isManageView
92
- .model=${{ identifier: 'foo', href: '/foo' }}
93
- .baseNavigationUrl=${''}
94
- >
95
- </tile-dispatcher>
96
- `);
97
-
98
- const tileLink = el.shadowRoot?.querySelector(
99
- 'a[href]',
100
- ) as HTMLAnchorElement;
101
- expect(tileLink).to.exist;
102
-
103
- tileLink.dispatchEvent(new Event('contextmenu'));
104
- await el.updateComplete;
105
-
106
- expect(spy.callCount).to.equal(1);
107
- expect(spy.args[0][0]).to.equal('/foo');
108
- expect(spy.args[0][1]).to.equal('_blank');
109
-
110
- window.open = oldWindowOpen;
111
- });
112
-
113
- it('should use model href as link href', async () => {
114
- const el = await fixture<TileDispatcher>(html`
115
- <tile-dispatcher
116
- .model=${{
117
- identifier: 'foo',
118
- href: 'https://web.archive.org/web/20180613065659/http://www.sankei.com/',
119
- }}
120
- .baseNavigationUrl=${''}
121
- ></tile-dispatcher>
122
- `);
123
-
124
- const tileLink = el.shadowRoot?.querySelector(
125
- 'a[href]',
126
- ) as HTMLAnchorElement;
127
- expect(tileLink).to.exist;
128
- expect(tileLink.getAttribute('href')).to.equal(
129
- 'https://web.archive.org/web/20180613065659/http://www.sankei.com/',
130
- );
131
- });
132
-
133
- it('should toggle model checked state when manage check clicked', async () => {
134
- const el = await fixture<TileDispatcher>(html`
135
- <tile-dispatcher
136
- isManageView
137
- .model=${{ identifier: 'foo', href: '/foo' }}
138
- .tileDisplayMode=${'grid'}
139
- ></tile-dispatcher>
140
- `);
141
-
142
- const manageCheck = el.shadowRoot?.querySelector(
143
- '.manage-check > input[type="checkbox"]',
144
- ) as HTMLButtonElement;
145
-
146
- manageCheck.click();
147
- await el.updateComplete;
148
- expect(el.model?.checked).to.be.true;
149
-
150
- manageCheck.click();
151
- await el.updateComplete;
152
- expect(el.model?.checked).to.be.false;
153
- });
154
-
155
- it('should return hover pane props', async () => {
156
- const el = await fixture<TileDispatcher>(html`
157
- <tile-dispatcher .model=${{ identifier: 'foo' }}> </tile-dispatcher>
158
- `);
159
-
160
- expect(el.getHoverPaneProps()).to.satisfy(
161
- (props: HoverPaneProperties) => props?.model?.identifier === 'foo',
162
- );
163
- });
164
-
165
- it('should focus the tile link when requested', async () => {
166
- const el = await fixture<TileDispatcher>(html`
167
- <tile-dispatcher .tileDisplayMode=${'grid'}> </tile-dispatcher>
168
- `);
169
-
170
- const tileLink = el.shadowRoot?.querySelector(
171
- '.tile-link',
172
- ) as HTMLAnchorElement;
173
- expect(tileLink).to.exist;
174
-
175
- const spyFocus = sinon.spy(tileLink, 'focus');
176
- el.acquireFocus();
177
- expect(spyFocus.callCount).to.equal(1);
178
- });
179
-
180
- it('should blur the tile link when requested', async () => {
181
- const el = await fixture<TileDispatcher>(html`
182
- <tile-dispatcher .tileDisplayMode=${'grid'}> </tile-dispatcher>
183
- `);
184
-
185
- const tileLink = el.shadowRoot?.querySelector(
186
- '.tile-link',
187
- ) as HTMLAnchorElement;
188
- expect(tileLink).to.exist;
189
-
190
- const spyBlur = sinon.spy(tileLink, 'blur');
191
- el.releaseFocus();
192
- expect(spyBlur.callCount).to.equal(1);
193
- });
194
-
195
- describe('Hover pane info button behavior', () => {
196
- let oldMatchMedia: typeof window.matchMedia;
197
-
198
- before(() => {
199
- oldMatchMedia = window.matchMedia;
200
- // Pretend that there is no hover-capable input device
201
- window.matchMedia = () => ({ matches: false }) as MediaQueryList;
202
- });
203
-
204
- after(() => {
205
- window.matchMedia = oldMatchMedia;
206
- });
207
-
208
- it('should toggle hover pane when tile info button is pressed', async () => {
209
- const el = await fixture<TileDispatcher>(html`
210
- <tile-dispatcher
211
- .tileDisplayMode=${'grid'}
212
- .model=${{ mediatype: 'texts' }}
213
- .enableHoverPane=${true}
214
- >
215
- </tile-dispatcher>
216
- `);
217
-
218
- const itemTile = el.shadowRoot?.querySelector('item-tile') as ItemTile;
219
- expect(itemTile).to.exist;
220
-
221
- const infoButton = itemTile.shadowRoot?.querySelector(
222
- '.info-button',
223
- ) as HTMLButtonElement;
224
- expect(infoButton).to.exist;
225
-
226
- infoButton.click();
227
- await aTimeout(500);
228
- await el.updateComplete;
229
- expect(el.getHoverPane()).to.be.instanceOf(TileHoverPane);
230
-
231
- infoButton.click();
232
- await aTimeout(500);
233
- await el.updateComplete;
234
- expect(el.getHoverPane()).not.to.exist;
235
- });
236
-
237
- it('should not show info button when hover pane is not enabled', async () => {
238
- const el = await fixture<TileDispatcher>(html`
239
- <tile-dispatcher
240
- .tileDisplayMode=${'grid'}
241
- .model=${{ mediatype: 'texts' }}
242
- .enableHoverPane=${false}
243
- >
244
- </tile-dispatcher>
245
- `);
246
-
247
- const itemTile = el.shadowRoot?.querySelector('item-tile') as ItemTile;
248
- expect(itemTile).to.exist;
249
-
250
- const infoButton = itemTile.shadowRoot?.querySelector('.info-button');
251
- expect(infoButton).to.not.exist;
252
- });
253
- });
254
-
255
- describe('Accessibility', () => {
256
- it('should have proper aria-label on tile link', async () => {
257
- const el = await fixture<TileDispatcher>(html`
258
- <tile-dispatcher
259
- .tileDisplayMode=${'grid'}
260
- .model=${{
261
- title: 'Example Title',
262
- mediatype: 'texts',
263
- }}
264
- >
265
- </tile-dispatcher>
266
- `);
267
-
268
- const tileLink = el.shadowRoot?.querySelector(
269
- '.tile-link',
270
- ) as HTMLAnchorElement;
271
- expect(tileLink).to.exist;
272
- expect(tileLink.getAttribute('aria-label')).to.equal('Example Title');
273
- });
274
-
275
- it('should fallback to untitled aria-label on tile link when no title', async () => {
276
- const el = await fixture<TileDispatcher>(html`
277
- <tile-dispatcher
278
- .tileDisplayMode=${'grid'}
279
- .model=${{
280
- mediatype: 'texts',
281
- }}
282
- >
283
- </tile-dispatcher>
284
- `);
285
-
286
- const tileLink = el.shadowRoot?.querySelector(
287
- '.tile-link',
288
- ) as HTMLAnchorElement;
289
- expect(tileLink).to.exist;
290
- expect(tileLink.getAttribute('aria-label')).to.equal('Untitled item');
291
- });
292
-
293
- it('should have no accessibility violations in grid mode', async () => {
294
- const el = await fixture<TileDispatcher>(html`
295
- <tile-dispatcher
296
- .tileDisplayMode=${'grid'}
297
- .model=${{
298
- title: 'Example Title',
299
- mediatype: 'texts',
300
- }}
301
- >
302
- </tile-dispatcher>
303
- `);
304
-
305
- await expect(el).to.be.accessible();
306
- });
307
-
308
- it('should have no accessibility violations in list mode', async () => {
309
- const el = await fixture<TileDispatcher>(html`
310
- <tile-dispatcher
311
- .tileDisplayMode=${'list-detail'}
312
- .model=${{ mediatype: 'texts' }}
313
- >
314
- </tile-dispatcher>
315
- `);
316
-
317
- await expect(el).to.be.accessible();
318
- });
319
- });
320
- });
@@ -1,172 +0,0 @@
1
- import { expect } from '@open-wc/testing';
2
- import { nothing } from 'lit';
3
- import { TileDisplayValueProvider } from '../../src/tiles/tile-display-value-provider';
4
- import type { TileModel } from '../../src/models';
5
-
6
- describe('Tile Display Value Provider', () => {
7
- describe('basic construction', () => {
8
- it('constructs w/ no options', () => {
9
- const provider = new TileDisplayValueProvider();
10
- expect(provider).to.exist;
11
- });
12
-
13
- it('constructs w/ options', () => {
14
- const provider = new TileDisplayValueProvider({
15
- model: {} as TileModel,
16
- baseNavigationUrl: 'foo',
17
- collectionPagePath: 'bar',
18
- sortParam: { field: 'baz', direction: 'asc' },
19
- creatorFilter: 'X',
20
- });
21
- expect(provider).to.exist;
22
- });
23
- });
24
-
25
- describe('firstCreatorMatchingFilter', () => {
26
- it('provides undefined creator when no model set', () => {
27
- const provider = new TileDisplayValueProvider();
28
- expect(provider.firstCreatorMatchingFilter).to.be.undefined;
29
- });
30
-
31
- it('provides creator from model with no filter', () => {
32
- const provider = new TileDisplayValueProvider({
33
- model: { creator: 'foo', creators: ['foo', 'bar', 'baz'] } as TileModel,
34
- });
35
-
36
- expect(provider.firstCreatorMatchingFilter).to.equal('foo');
37
- });
38
-
39
- it('provides first creator matching filter when present', () => {
40
- const provider = new TileDisplayValueProvider({
41
- model: { creator: 'foo', creators: ['foo', 'bar', 'baz'] } as TileModel,
42
- creatorFilter: 'B',
43
- });
44
-
45
- expect(provider.firstCreatorMatchingFilter).to.equal('bar');
46
- });
47
-
48
- it('matches letters with diacritics', () => {
49
- const provider = new TileDisplayValueProvider({
50
- model: {
51
- creator: 'foo',
52
- creators: ['foo', 'émile', 'ernest'],
53
- } as TileModel,
54
- creatorFilter: 'E',
55
- });
56
-
57
- expect(provider.firstCreatorMatchingFilter).to.equal('émile');
58
- });
59
-
60
- it('ignores non-alphabetical characters when matching', () => {
61
- const provider = new TileDisplayValueProvider({
62
- model: {
63
- creator: 'foo',
64
- creators: ['foo', '"(bar)"', 'baz'],
65
- } as TileModel,
66
- creatorFilter: 'B',
67
- });
68
-
69
- expect(provider.firstCreatorMatchingFilter).to.equal('"(bar)"');
70
- });
71
- });
72
-
73
- describe('accountLabel', () => {
74
- it('provides empty account label when no model', () => {
75
- const provider = new TileDisplayValueProvider();
76
- expect(provider.accountLabel).to.equal('');
77
- });
78
-
79
- it('provides empty account label when no date added', () => {
80
- const provider = new TileDisplayValueProvider({ model: {} as TileModel });
81
- expect(provider.accountLabel).to.equal('');
82
- });
83
-
84
- it('provides Archivist label from date added', () => {
85
- const provider = new TileDisplayValueProvider({
86
- model: { dateAdded: new Date(2010, 1, 2) } as TileModel,
87
- });
88
-
89
- expect(provider.accountLabel).to.equal('Archivist since 2010');
90
- });
91
- });
92
-
93
- describe('dateLabel', () => {
94
- it('provides empty date label when no sort param', () => {
95
- const provider = new TileDisplayValueProvider();
96
- expect(provider.dateLabel).to.equal('');
97
- });
98
-
99
- it('provides empty date label when sorting by non-date', () => {
100
- const provider = new TileDisplayValueProvider({
101
- sortParam: { field: 'downloads', direction: 'desc' },
102
- });
103
- expect(provider.dateLabel).to.equal('');
104
- });
105
-
106
- it('provides correct date label for publicdate', () => {
107
- const provider = new TileDisplayValueProvider({
108
- sortParam: { field: 'publicdate', direction: 'asc' },
109
- });
110
-
111
- expect(provider.dateLabel).to.equal('Archived');
112
- });
113
-
114
- it('provides correct date label for reviewdate', () => {
115
- const provider = new TileDisplayValueProvider({
116
- sortParam: { field: 'reviewdate', direction: 'asc' },
117
- });
118
-
119
- expect(provider.dateLabel).to.equal('Reviewed');
120
- });
121
-
122
- it('provides correct date label for addeddate', () => {
123
- const provider = new TileDisplayValueProvider({
124
- sortParam: { field: 'addeddate', direction: 'asc' },
125
- });
126
-
127
- expect(provider.dateLabel).to.equal('Added');
128
- });
129
-
130
- it('provides correct date label for published date', () => {
131
- const provider = new TileDisplayValueProvider({
132
- sortParam: { field: 'date', direction: 'asc' },
133
- });
134
-
135
- expect(provider.dateLabel).to.equal('Published');
136
- });
137
- });
138
-
139
- describe('itemPageUrl', () => {
140
- it('provides nothing when no base url set', () => {
141
- const provider = new TileDisplayValueProvider();
142
- expect(provider.itemPageUrl('foo')).to.equal(nothing);
143
- });
144
-
145
- it('provides nothing when identifier is empty', () => {
146
- const provider = new TileDisplayValueProvider({
147
- baseNavigationUrl: 'foo',
148
- });
149
- expect(provider.itemPageUrl('')).to.equal(nothing);
150
- });
151
-
152
- it('builds correct url from base and identifier', () => {
153
- const provider = new TileDisplayValueProvider({
154
- baseNavigationUrl: 'base',
155
- });
156
- expect(provider.itemPageUrl('foo')).to.equal('base/details/foo');
157
- });
158
-
159
- it('allows base url to be empty', () => {
160
- const provider = new TileDisplayValueProvider({ baseNavigationUrl: '' });
161
- expect(provider.itemPageUrl('foo')).to.equal('/details/foo');
162
- });
163
-
164
- it('uses provided collection base path for collections', () => {
165
- const provider = new TileDisplayValueProvider({
166
- baseNavigationUrl: 'base',
167
- collectionPagePath: '/collection/',
168
- });
169
- expect(provider.itemPageUrl('foo', true)).to.equal('base/collection/foo');
170
- });
171
- });
172
- });
@@ -1,160 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { TileMediatypeIcon } from '../../src/tiles/tile-mediatype-icon';
4
-
5
- import '../../src/tiles/tile-mediatype-icon';
6
- import { TileModel } from '../../src/models';
7
- import { MediaType } from '@internetarchive/field-parsers';
8
-
9
- describe('Mediatype Icon', () => {
10
- let model: TileModel;
11
- beforeEach(() => {
12
- model = new TileModel({});
13
- });
14
-
15
- it('renders component', async () => {
16
- model.mediatype = 'texts';
17
- const el = await fixture<TileMediatypeIcon>(html`
18
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
19
- `);
20
-
21
- const iconDiv = el.shadowRoot?.querySelector('#icon');
22
- expect(iconDiv).to.exist;
23
- });
24
-
25
- it('renders basic mediatype correctly', async () => {
26
- model.mediatype = 'movies';
27
- const el = await fixture<TileMediatypeIcon>(html`
28
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
29
- `);
30
-
31
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
32
- expect(iconDiv.title).to.equal('Movie');
33
- expect(iconDiv.getAttribute('style')).to.include('#f1644b');
34
- expect(iconDiv.children[0]).to.be.instanceOf(SVGElement);
35
- });
36
-
37
- it('renders TV mediatype', async () => {
38
- model.mediatype = 'movies';
39
- model.collections = ['tvnews'];
40
- const el = await fixture<TileMediatypeIcon>(html`
41
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
42
- `);
43
-
44
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
45
- expect(iconDiv.title).to.equal('TV');
46
- });
47
-
48
- it('renders TV Political Ad mediatype for TV items with ad ids', async () => {
49
- model.mediatype = 'movies';
50
- model.collections = ['tvnews'];
51
- model.adIds = ['foo'];
52
- const el = await fixture<TileMediatypeIcon>(html`
53
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
54
- `);
55
-
56
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
57
- expect(iconDiv.title).to.equal('TV Political Ad');
58
- });
59
-
60
- it('renders TV Political Ad mediatype for TV items in tv_ads collection', async () => {
61
- model.mediatype = 'movies';
62
- model.collections = ['tvnews', 'tv_ads'];
63
- const el = await fixture<TileMediatypeIcon>(html`
64
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
65
- `);
66
-
67
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
68
- expect(iconDiv.title).to.equal('TV Political Ad');
69
- });
70
-
71
- it('renders TV Fact Check mediatype for TV search results with fact check URLs', async () => {
72
- model.hitType = 'tv_clip';
73
- model.hitRequestSource = 'search_query';
74
- model.mediatype = 'movies';
75
- model.collections = ['tvnews'];
76
- model.factChecks = ['https://example.com'];
77
- const el = await fixture<TileMediatypeIcon>(html`
78
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
79
- `);
80
-
81
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
82
- expect(iconDiv.title).to.equal('TV Fact Check');
83
- });
84
-
85
- it('renders TV Fact Check mediatype for TV search results in factchecked collection', async () => {
86
- model.hitType = 'tv_clip';
87
- model.hitRequestSource = 'search_query';
88
- model.mediatype = 'movies';
89
- model.collections = ['tvnews', 'factchecked'];
90
- const el = await fixture<TileMediatypeIcon>(html`
91
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
92
- `);
93
-
94
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
95
- expect(iconDiv.title).to.equal('TV Fact Check');
96
- });
97
-
98
- it('does not use TV Fact Check mediatype for non-search results', async () => {
99
- model.hitType = 'tv_clip';
100
- model.hitRequestSource = 'collection_members';
101
- model.mediatype = 'movies';
102
- model.collections = ['tvnews'];
103
- model.factChecks = ['https://example.com'];
104
- const el = await fixture<TileMediatypeIcon>(html`
105
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
106
- `);
107
-
108
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
109
- expect(iconDiv.title).to.equal('TV');
110
- });
111
-
112
- it('renders TV Quote mediatype for TV search results that are clips', async () => {
113
- model.hitType = 'tv_clip';
114
- model.hitRequestSource = 'search_query';
115
- model.mediatype = 'movies';
116
- model.collections = ['tvnews'];
117
- model.isClip = true;
118
- const el = await fixture<TileMediatypeIcon>(html`
119
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
120
- `);
121
-
122
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
123
- expect(iconDiv.title).to.equal('TV Quote');
124
- });
125
-
126
- it('does not use TV Quote mediatype for non-search results', async () => {
127
- model.hitType = 'tv_clip';
128
- model.hitRequestSource = 'collection_members';
129
- model.mediatype = 'movies';
130
- model.collections = ['tvnews'];
131
- model.isClip = true;
132
- const el = await fixture<TileMediatypeIcon>(html`
133
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
134
- `);
135
-
136
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
137
- expect(iconDiv.title).to.equal('TV');
138
- });
139
-
140
- it('renders radio mediatype', async () => {
141
- model.mediatype = 'audio';
142
- model.collections = ['radio'];
143
- const el = await fixture<TileMediatypeIcon>(html`
144
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
145
- `);
146
-
147
- const iconDiv = el.shadowRoot?.querySelector('#icon') as HTMLDivElement;
148
- expect(iconDiv.title).to.equal('Radio');
149
- });
150
-
151
- it('renders no icon if mediatype is unrecognized', async () => {
152
- model.mediatype = 'foobar' as MediaType;
153
- const el = await fixture<TileMediatypeIcon>(html`
154
- <tile-mediatype-icon .model=${model}></tile-mediatype-icon>
155
- `);
156
-
157
- const iconDiv = el.shadowRoot?.querySelector('#icon');
158
- expect(iconDiv).not.to.exist;
159
- });
160
- });
@@ -1,31 +0,0 @@
1
- import { expect } from '@open-wc/testing';
2
- import { arrayEquals } from '../../src/utils/array-equals';
3
-
4
- describe('arrayEquals', () => {
5
- it('returns true for empty args', () => {
6
- expect(arrayEquals([], [])).to.be.true;
7
- });
8
-
9
- it('returns true for identical array objects', () => {
10
- const arr = ['foo', 'bar'];
11
- expect(arrayEquals(arr, arr)).to.be.true;
12
- });
13
-
14
- it('returns true for arrays with identical contents', () => {
15
- const arr1 = ['foo', 'bar'];
16
- const arr2 = ['foo', 'bar'];
17
- expect(arrayEquals(arr1, arr2)).to.be.true;
18
- });
19
-
20
- it('returns false for arrays of unequal length', () => {
21
- const arr1 = [1, 2, 3];
22
- const arr2 = [1, 2, 3, 4];
23
- expect(arrayEquals(arr1, arr2)).to.be.false;
24
- });
25
-
26
- it('returns false for unequal arrays of same length', () => {
27
- const arr1 = ['foo', 'bar'];
28
- const arr2 = ['foo', 'qux'];
29
- expect(arrayEquals(arr1, arr2)).to.be.false;
30
- });
31
- });