@internetarchive/collection-browser 4.8.0 → 4.8.1-webdev-9227.2

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 (401) 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 +7 -7
  4. package/dist/src/collection-browser.js.map +1 -1
  5. package/dist/src/collection-facets/facet-row-template.d.ts +1 -1
  6. package/dist/src/collection-facets/facet-row-template.js +10 -6
  7. package/dist/src/collection-facets/facet-row-template.js.map +1 -1
  8. package/dist/src/collection-facets/facet-row.js +3 -1
  9. package/dist/src/collection-facets/facet-row.js.map +1 -1
  10. package/dist/src/collection-facets/more-facets-content.js +6 -5
  11. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  12. package/dist/src/collection-facets/more-facets-scroller.js +3 -2
  13. package/dist/src/collection-facets/more-facets-scroller.js.map +1 -1
  14. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js +13 -4
  15. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +1 -1
  16. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +6 -2
  17. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  18. package/dist/src/collection-facets.js +6 -5
  19. package/dist/src/collection-facets.js.map +1 -1
  20. package/dist/src/empty-placeholder.d.ts +7 -7
  21. package/dist/src/empty-placeholder.js +29 -15
  22. package/dist/src/empty-placeholder.js.map +1 -1
  23. package/dist/src/expanded-date-picker.js +3 -2
  24. package/dist/src/expanded-date-picker.js.map +1 -1
  25. package/dist/src/locales/es.d.ts +205 -0
  26. package/dist/src/locales/es.js +220 -0
  27. package/dist/src/locales/es.js.map +1 -0
  28. package/dist/src/manage/manage-bar.d.ts +3 -2
  29. package/dist/src/manage/manage-bar.js +15 -16
  30. package/dist/src/manage/manage-bar.js.map +1 -1
  31. package/dist/src/manage/remove-items-modal-content.js +3 -2
  32. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  33. package/dist/src/mediatype/mediatype-config.js +55 -18
  34. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  35. package/dist/src/models.js +120 -40
  36. package/dist/src/models.js.map +1 -1
  37. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +6 -2
  38. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  39. package/dist/src/sort-filter-bar/alpha-bar.js +5 -2
  40. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  41. package/dist/src/sort-filter-bar/sort-filter-bar.js +9 -8
  42. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  43. package/dist/src/tiles/grid/account-tile.js +3 -2
  44. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  45. package/dist/src/tiles/grid/collection-tile.js +9 -6
  46. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  47. package/dist/src/tiles/grid/item-tile.js +8 -7
  48. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  49. package/dist/src/tiles/grid/tile-stats.js +6 -3
  50. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  51. package/dist/src/tiles/list/tile-list-compact-header.js +3 -2
  52. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  53. package/dist/src/tiles/list/tile-list-compact.js +3 -1
  54. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  55. package/dist/src/tiles/list/tile-list.js +4 -3
  56. package/dist/src/tiles/list/tile-list.js.map +1 -1
  57. package/dist/src/tiles/overlay/text-overlay.js +3 -1
  58. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  59. package/dist/src/tiles/review-block.js +3 -2
  60. package/dist/src/tiles/review-block.js.map +1 -1
  61. package/dist/src/tiles/tile-dispatcher.d.ts +2 -1
  62. package/dist/src/tiles/tile-dispatcher.js +6 -5
  63. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  64. package/dist/src/tiles/tile-mediatype-icon.js +3 -1
  65. package/dist/src/tiles/tile-mediatype-icon.js.map +1 -1
  66. package/dist/src/utils/format-unit-size.d.ts +1 -1
  67. package/dist/src/utils/format-unit-size.js +20 -18
  68. package/dist/src/utils/format-unit-size.js.map +1 -1
  69. package/locales/es.d.ts +1 -0
  70. package/locales/es.js +1 -0
  71. package/package.json +13 -1
  72. package/.editorconfig +0 -29
  73. package/.github/workflows/ci.yml +0 -29
  74. package/.github/workflows/gh-pages-main.yml +0 -41
  75. package/.github/workflows/npm-publish.yml +0 -42
  76. package/.github/workflows/pr-preview.yml +0 -40
  77. package/.husky/pre-commit +0 -1
  78. package/.prettierignore +0 -1
  79. package/dist/test/collection-browser.test.d.ts +0 -1
  80. package/dist/test/collection-browser.test.js +0 -1815
  81. package/dist/test/collection-browser.test.js.map +0 -1
  82. package/dist/test/collection-facets/facet-row.test.d.ts +0 -1
  83. package/dist/test/collection-facets/facet-row.test.js +0 -291
  84. package/dist/test/collection-facets/facet-row.test.js.map +0 -1
  85. package/dist/test/collection-facets/facets-template.test.d.ts +0 -1
  86. package/dist/test/collection-facets/facets-template.test.js +0 -95
  87. package/dist/test/collection-facets/facets-template.test.js.map +0 -1
  88. package/dist/test/collection-facets/more-facets-content.test.d.ts +0 -1
  89. package/dist/test/collection-facets/more-facets-content.test.js +0 -509
  90. package/dist/test/collection-facets/more-facets-content.test.js.map +0 -1
  91. package/dist/test/collection-facets/more-facets-scroller.test.d.ts +0 -1
  92. package/dist/test/collection-facets/more-facets-scroller.test.js +0 -288
  93. package/dist/test/collection-facets/more-facets-scroller.test.js.map +0 -1
  94. package/dist/test/collection-facets/page-window.test.d.ts +0 -1
  95. package/dist/test/collection-facets/page-window.test.js +0 -175
  96. package/dist/test/collection-facets/page-window.test.js.map +0 -1
  97. package/dist/test/collection-facets/toggle-switch.test.d.ts +0 -1
  98. package/dist/test/collection-facets/toggle-switch.test.js +0 -99
  99. package/dist/test/collection-facets/toggle-switch.test.js.map +0 -1
  100. package/dist/test/collection-facets.test.d.ts +0 -2
  101. package/dist/test/collection-facets.test.js +0 -728
  102. package/dist/test/collection-facets.test.js.map +0 -1
  103. package/dist/test/data-source/collection-browser-data-source.test.d.ts +0 -1
  104. package/dist/test/data-source/collection-browser-data-source.test.js +0 -154
  105. package/dist/test/data-source/collection-browser-data-source.test.js.map +0 -1
  106. package/dist/test/empty-placeholder.test.d.ts +0 -1
  107. package/dist/test/empty-placeholder.test.js +0 -57
  108. package/dist/test/empty-placeholder.test.js.map +0 -1
  109. package/dist/test/expanded-date-picker.test.d.ts +0 -1
  110. package/dist/test/expanded-date-picker.test.js +0 -124
  111. package/dist/test/expanded-date-picker.test.js.map +0 -1
  112. package/dist/test/icon-overlay.test.d.ts +0 -1
  113. package/dist/test/icon-overlay.test.js +0 -31
  114. package/dist/test/icon-overlay.test.js.map +0 -1
  115. package/dist/test/image-block.test.d.ts +0 -1
  116. package/dist/test/image-block.test.js +0 -208
  117. package/dist/test/image-block.test.js.map +0 -1
  118. package/dist/test/item-image.test.d.ts +0 -1
  119. package/dist/test/item-image.test.js +0 -187
  120. package/dist/test/item-image.test.js.map +0 -1
  121. package/dist/test/manage/manage-bar.test.d.ts +0 -3
  122. package/dist/test/manage/manage-bar.test.js +0 -216
  123. package/dist/test/manage/manage-bar.test.js.map +0 -1
  124. package/dist/test/manage/remove-items-modal-content.test.d.ts +0 -1
  125. package/dist/test/manage/remove-items-modal-content.test.js +0 -60
  126. package/dist/test/manage/remove-items-modal-content.test.js.map +0 -1
  127. package/dist/test/mediatype-config.test.d.ts +0 -1
  128. package/dist/test/mediatype-config.test.js +0 -11
  129. package/dist/test/mediatype-config.test.js.map +0 -1
  130. package/dist/test/mocks/mock-analytics-handler.d.ts +0 -10
  131. package/dist/test/mocks/mock-analytics-handler.js +0 -16
  132. package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
  133. package/dist/test/mocks/mock-search-responses.d.ts +0 -37
  134. package/dist/test/mocks/mock-search-responses.js +0 -1293
  135. package/dist/test/mocks/mock-search-responses.js.map +0 -1
  136. package/dist/test/mocks/mock-search-service.d.ts +0 -16
  137. package/dist/test/mocks/mock-search-service.js +0 -65
  138. package/dist/test/mocks/mock-search-service.js.map +0 -1
  139. package/dist/test/restoration-state-handler.test.d.ts +0 -1
  140. package/dist/test/restoration-state-handler.test.js +0 -335
  141. package/dist/test/restoration-state-handler.test.js.map +0 -1
  142. package/dist/test/review-block.test.d.ts +0 -1
  143. package/dist/test/review-block.test.js +0 -46
  144. package/dist/test/review-block.test.js.map +0 -1
  145. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +0 -1
  146. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +0 -12
  147. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +0 -1
  148. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +0 -1
  149. package/dist/test/sort-filter-bar/alpha-bar.test.js +0 -68
  150. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +0 -1
  151. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +0 -1
  152. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -304
  153. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +0 -1
  154. package/dist/test/text-overlay.test.d.ts +0 -1
  155. package/dist/test/text-overlay.test.js +0 -43
  156. package/dist/test/text-overlay.test.js.map +0 -1
  157. package/dist/test/text-snippet-block.test.d.ts +0 -1
  158. package/dist/test/text-snippet-block.test.js +0 -58
  159. package/dist/test/text-snippet-block.test.js.map +0 -1
  160. package/dist/test/tile-stats.test.d.ts +0 -1
  161. package/dist/test/tile-stats.test.js +0 -167
  162. package/dist/test/tile-stats.test.js.map +0 -1
  163. package/dist/test/tiles/grid/account-tile.test.d.ts +0 -1
  164. package/dist/test/tiles/grid/account-tile.test.js +0 -96
  165. package/dist/test/tiles/grid/account-tile.test.js.map +0 -1
  166. package/dist/test/tiles/grid/collection-tile.test.d.ts +0 -1
  167. package/dist/test/tiles/grid/collection-tile.test.js +0 -90
  168. package/dist/test/tiles/grid/collection-tile.test.js.map +0 -1
  169. package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
  170. package/dist/test/tiles/grid/item-tile.test.js +0 -400
  171. package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
  172. package/dist/test/tiles/grid/search-tile.test.d.ts +0 -1
  173. package/dist/test/tiles/grid/search-tile.test.js +0 -62
  174. package/dist/test/tiles/grid/search-tile.test.js.map +0 -1
  175. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +0 -1
  176. package/dist/test/tiles/hover/hover-pane-controller.test.js +0 -351
  177. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +0 -1
  178. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +0 -1
  179. package/dist/test/tiles/hover/tile-hover-pane.test.js +0 -53
  180. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +0 -1
  181. package/dist/test/tiles/list/tile-list-compact-header.test.d.ts +0 -1
  182. package/dist/test/tiles/list/tile-list-compact-header.test.js +0 -36
  183. package/dist/test/tiles/list/tile-list-compact-header.test.js.map +0 -1
  184. package/dist/test/tiles/list/tile-list-compact.test.d.ts +0 -1
  185. package/dist/test/tiles/list/tile-list-compact.test.js +0 -237
  186. package/dist/test/tiles/list/tile-list-compact.test.js.map +0 -1
  187. package/dist/test/tiles/list/tile-list.test.d.ts +0 -1
  188. package/dist/test/tiles/list/tile-list.test.js +0 -460
  189. package/dist/test/tiles/list/tile-list.test.js.map +0 -1
  190. package/dist/test/tiles/tile-dispatcher.test.d.ts +0 -1
  191. package/dist/test/tiles/tile-dispatcher.test.js +0 -246
  192. package/dist/test/tiles/tile-dispatcher.test.js.map +0 -1
  193. package/dist/test/tiles/tile-display-value-provider.test.d.ts +0 -1
  194. package/dist/test/tiles/tile-display-value-provider.test.js +0 -142
  195. package/dist/test/tiles/tile-display-value-provider.test.js.map +0 -1
  196. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +0 -1
  197. package/dist/test/tiles/tile-mediatype-icon.test.js +0 -133
  198. package/dist/test/tiles/tile-mediatype-icon.test.js.map +0 -1
  199. package/dist/test/utils/array-equals.test.d.ts +0 -1
  200. package/dist/test/utils/array-equals.test.js +0 -27
  201. package/dist/test/utils/array-equals.test.js.map +0 -1
  202. package/dist/test/utils/format-count.test.d.ts +0 -1
  203. package/dist/test/utils/format-count.test.js +0 -24
  204. package/dist/test/utils/format-count.test.js.map +0 -1
  205. package/dist/test/utils/format-date.test.d.ts +0 -1
  206. package/dist/test/utils/format-date.test.js +0 -61
  207. package/dist/test/utils/format-date.test.js.map +0 -1
  208. package/dist/test/utils/format-unit-size.test.d.ts +0 -1
  209. package/dist/test/utils/format-unit-size.test.js +0 -18
  210. package/dist/test/utils/format-unit-size.test.js.map +0 -1
  211. package/dist/test/utils/local-date-from-utc.test.d.ts +0 -1
  212. package/dist/test/utils/local-date-from-utc.test.js +0 -27
  213. package/dist/test/utils/local-date-from-utc.test.js.map +0 -1
  214. package/dist/test/utils/normalize-filter-text.test.d.ts +0 -1
  215. package/dist/test/utils/normalize-filter-text.test.js +0 -69
  216. package/dist/test/utils/normalize-filter-text.test.js.map +0 -1
  217. package/docs/design/column-virtualization.md +0 -214
  218. package/eslint.config.mjs +0 -53
  219. package/index.html +0 -24
  220. package/index.ts +0 -29
  221. package/local.archive.org.cert +0 -86
  222. package/local.archive.org.key +0 -27
  223. package/pnpm-workspace.yaml +0 -30
  224. package/renovate.json +0 -6
  225. package/src/app-root.ts +0 -1282
  226. package/src/assets/img/icons/arrow-left.ts +0 -10
  227. package/src/assets/img/icons/arrow-right.ts +0 -10
  228. package/src/assets/img/icons/check.ts +0 -5
  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 -3165
  265. package/src/collection-facets/facet-row-template.ts +0 -242
  266. package/src/collection-facets/facet-row.ts +0 -122
  267. package/src/collection-facets/facet-tombstone-row.ts +0 -40
  268. package/src/collection-facets/facets-template.ts +0 -85
  269. package/src/collection-facets/models.ts +0 -16
  270. package/src/collection-facets/more-facets-content.ts +0 -951
  271. package/src/collection-facets/more-facets-scroller.ts +0 -485
  272. package/src/collection-facets/page-window.ts +0 -247
  273. package/src/collection-facets/smart-facets/dedupe.ts +0 -44
  274. package/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  275. package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  276. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  277. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  278. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  279. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  280. package/src/collection-facets/smart-facets/models.ts +0 -36
  281. package/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  282. package/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  283. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  284. package/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  285. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  286. package/src/collection-facets/toggle-switch.ts +0 -175
  287. package/src/collection-facets.ts +0 -1013
  288. package/src/data-source/collection-browser-data-source-interface.ts +0 -351
  289. package/src/data-source/collection-browser-data-source.ts +0 -1474
  290. package/src/data-source/collection-browser-query-state.ts +0 -60
  291. package/src/data-source/models.ts +0 -56
  292. package/src/empty-placeholder.ts +0 -192
  293. package/src/expanded-date-picker.ts +0 -191
  294. package/src/language-code-handler/language-code-handler.ts +0 -64
  295. package/src/language-code-handler/language-code-mapping.ts +0 -564
  296. package/src/manage/manage-bar.ts +0 -276
  297. package/src/manage/remove-items-modal-content.ts +0 -102
  298. package/src/mediatype/mediatype-config.ts +0 -146
  299. package/src/models.ts +0 -912
  300. package/src/restoration-state-handler.ts +0 -550
  301. package/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  302. package/src/sort-filter-bar/alpha-bar.ts +0 -252
  303. package/src/sort-filter-bar/img/compact.ts +0 -5
  304. package/src/sort-filter-bar/img/list.ts +0 -5
  305. package/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  306. package/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  307. package/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  308. package/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  309. package/src/sort-filter-bar/img/tile.ts +0 -5
  310. package/src/sort-filter-bar/sort-filter-bar.ts +0 -733
  311. package/src/styles/ia-button.ts +0 -139
  312. package/src/styles/item-image-styles.ts +0 -124
  313. package/src/styles/sr-only.ts +0 -18
  314. package/src/styles/tile-action-styles.ts +0 -59
  315. package/src/tiles/base-tile-component.ts +0 -124
  316. package/src/tiles/collection-browser-loading-tile.ts +0 -26
  317. package/src/tiles/grid/account-tile.ts +0 -113
  318. package/src/tiles/grid/collection-tile.ts +0 -184
  319. package/src/tiles/grid/item-tile.ts +0 -347
  320. package/src/tiles/grid/search-tile.ts +0 -90
  321. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  322. package/src/tiles/grid/tile-stats.ts +0 -211
  323. package/src/tiles/hover/hover-pane-controller.ts +0 -638
  324. package/src/tiles/hover/tile-hover-pane.ts +0 -184
  325. package/src/tiles/image-block.ts +0 -162
  326. package/src/tiles/item-image.ts +0 -214
  327. package/src/tiles/list/tile-list-compact-header.ts +0 -112
  328. package/src/tiles/list/tile-list-compact.ts +0 -278
  329. package/src/tiles/list/tile-list.ts +0 -718
  330. package/src/tiles/models.ts +0 -21
  331. package/src/tiles/overlay/icon-overlay.ts +0 -57
  332. package/src/tiles/overlay/text-overlay.ts +0 -79
  333. package/src/tiles/review-block.ts +0 -130
  334. package/src/tiles/text-snippet-block.ts +0 -132
  335. package/src/tiles/tile-dispatcher.ts +0 -637
  336. package/src/tiles/tile-display-value-provider.ts +0 -133
  337. package/src/tiles/tile-mediatype-icon.ts +0 -133
  338. package/src/utils/analytics-events.ts +0 -29
  339. package/src/utils/array-equals.ts +0 -8
  340. package/src/utils/collapse-repeated-quotes.ts +0 -13
  341. package/src/utils/date-filter-field.ts +0 -11
  342. package/src/utils/facet-utils.ts +0 -183
  343. package/src/utils/format-count.ts +0 -95
  344. package/src/utils/format-date.ts +0 -62
  345. package/src/utils/format-unit-size.ts +0 -43
  346. package/src/utils/local-date-from-utc.ts +0 -15
  347. package/src/utils/log.ts +0 -14
  348. package/src/utils/normalize-filter-text.ts +0 -54
  349. package/src/utils/resolve-mediatype.ts +0 -26
  350. package/src/utils/sha1.ts +0 -9
  351. package/test/collection-browser.test.ts +0 -2639
  352. package/test/collection-facets/facet-row.test.ts +0 -421
  353. package/test/collection-facets/facets-template.test.ts +0 -139
  354. package/test/collection-facets/more-facets-content.test.ts +0 -716
  355. package/test/collection-facets/more-facets-scroller.test.ts +0 -401
  356. package/test/collection-facets/page-window.test.ts +0 -208
  357. package/test/collection-facets/toggle-switch.test.ts +0 -164
  358. package/test/collection-facets.test.ts +0 -928
  359. package/test/data-source/collection-browser-data-source.test.ts +0 -193
  360. package/test/empty-placeholder.test.ts +0 -88
  361. package/test/expanded-date-picker.test.ts +0 -201
  362. package/test/icon-overlay.test.ts +0 -38
  363. package/test/image-block.test.ts +0 -247
  364. package/test/item-image.test.ts +0 -220
  365. package/test/manage/manage-bar.test.ts +0 -347
  366. package/test/manage/remove-items-modal-content.test.ts +0 -81
  367. package/test/mediatype-config.test.ts +0 -11
  368. package/test/mocks/mock-analytics-handler.ts +0 -30
  369. package/test/mocks/mock-search-responses.ts +0 -1420
  370. package/test/mocks/mock-search-service.ts +0 -136
  371. package/test/restoration-state-handler.test.ts +0 -480
  372. package/test/review-block.test.ts +0 -62
  373. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  374. package/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  375. package/test/sort-filter-bar/sort-filter-bar.test.ts +0 -443
  376. package/test/text-overlay.test.ts +0 -55
  377. package/test/text-snippet-block.test.ts +0 -85
  378. package/test/tile-stats.test.ts +0 -191
  379. package/test/tiles/grid/account-tile.test.ts +0 -121
  380. package/test/tiles/grid/collection-tile.test.ts +0 -114
  381. package/test/tiles/grid/item-tile.test.ts +0 -520
  382. package/test/tiles/grid/search-tile.test.ts +0 -75
  383. package/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  384. package/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  385. package/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  386. package/test/tiles/list/tile-list-compact.test.ts +0 -282
  387. package/test/tiles/list/tile-list.test.ts +0 -576
  388. package/test/tiles/tile-dispatcher.test.ts +0 -320
  389. package/test/tiles/tile-display-value-provider.test.ts +0 -172
  390. package/test/tiles/tile-mediatype-icon.test.ts +0 -160
  391. package/test/utils/array-equals.test.ts +0 -31
  392. package/test/utils/format-count.test.ts +0 -32
  393. package/test/utils/format-date.test.ts +0 -89
  394. package/test/utils/format-unit-size.test.ts +0 -21
  395. package/test/utils/local-date-from-utc.test.ts +0 -37
  396. package/test/utils/normalize-filter-text.test.ts +0 -87
  397. package/tsconfig.json +0 -25
  398. package/types/dompurify.d.ts +0 -1
  399. package/vite.config.ts +0 -29
  400. package/web-dev-server.config.mjs +0 -30
  401. package/web-test-runner.config.mjs +0 -57
@@ -1,718 +0,0 @@
1
- import { css, html, nothing, PropertyValues, TemplateResult } from 'lit';
2
- import { ifDefined } from 'lit/directives/if-defined.js';
3
- import { join } from 'lit/directives/join.js';
4
- import { map } from 'lit/directives/map.js';
5
- import { unsafeHTML } from 'lit/directives/unsafe-html.js';
6
- import { customElement, property, state } from 'lit/decorators.js';
7
- import { msg, str } from '@lit/localize';
8
- import DOMPurify from 'dompurify';
9
-
10
- import type { SortParam } from '@internetarchive/search-service';
11
- import { suppressedCollections } from '../../models';
12
- import type { CollectionTitles } from '../../data-source/models';
13
- import { BaseTileComponent } from '../base-tile-component';
14
-
15
- import { formatCount, NumberFormat } from '../../utils/format-count';
16
- import type { DateFormat } from '../../utils/format-date';
17
- import { isFirstMillisecondOfUTCYear } from '../../utils/local-date-from-utc';
18
- import { tileActionStyles } from '../../styles/tile-action-styles';
19
-
20
- import '../image-block';
21
- import '../review-block';
22
- import '../text-snippet-block';
23
- import '../tile-mediatype-icon';
24
-
25
- @customElement('tile-list')
26
- export class TileList extends BaseTileComponent {
27
- /*
28
- * Reactive properties inherited from BaseTileComponent:
29
- * - model?: TileModel;
30
- * - tileActions: TileAction[] = [];
31
- * - currentWidth?: number;
32
- * - currentHeight?: number;
33
- * - baseNavigationUrl?: string;
34
- * - baseImageUrl?: string;
35
- * - collectionPagePath?: string;
36
- * - sortParam: SortParam | null = null;
37
- * - defaultSortParam: SortParam | null = null;
38
- * - creatorFilter?: string;
39
- * - mobileBreakpoint?: number;
40
- * - loggedIn = false;
41
- * - suppressBlurring = false;
42
- * - useLocalTime = false;
43
- */
44
-
45
- @property({ type: Object })
46
- collectionTitles?: CollectionTitles;
47
-
48
- @state() private collectionLinks: (TemplateResult | typeof nothing)[] = [];
49
-
50
- render() {
51
- return html`
52
- <div id="list-line" class="${this.classSize}">
53
- ${this.classSize === 'mobile'
54
- ? this.mobileTemplate
55
- : this.desktopTemplate}
56
- </div>
57
- `;
58
- }
59
-
60
- /**
61
- * Templates
62
- */
63
- private get mobileTemplate() {
64
- return html`
65
- <div id="list-line-top">
66
- <div id="list-line-left">
67
- ${this.imageBlockTemplate} ${this.renderTileActions('list-detail')}
68
- </div>
69
- <div id="list-line-right">
70
- <div id="title-line">
71
- <div id="title">${this.titleTemplate}</div>
72
- ${this.iconRightTemplate}
73
- </div>
74
- </div>
75
- </div>
76
- <div id="list-line-bottom">${this.detailsTemplate}</div>
77
- `;
78
- }
79
-
80
- private get desktopTemplate() {
81
- return html`
82
- <div id="list-line-left">
83
- ${this.imageBlockTemplate} ${this.renderTileActions('list-detail')}
84
- </div>
85
- <div id="list-line-right">
86
- <div id="title-line">
87
- <div id="title">${this.titleTemplate}</div>
88
- ${this.iconRightTemplate}
89
- </div>
90
- ${this.detailsTemplate}
91
- </div>
92
- `;
93
- }
94
-
95
- private get imageBlockTemplate() {
96
- if (!this.model) return nothing;
97
-
98
- const isCollection = this.model.mediatype === 'collection';
99
- const href = this.displayValueProvider.itemPageUrl(
100
- this.model.identifier,
101
- isCollection,
102
- );
103
-
104
- return html`<a
105
- id="image-link"
106
- title=${msg(str`View ${this.model?.title}`)}
107
- href=${href}
108
- >
109
- <image-block
110
- .model=${this.model}
111
- .baseImageUrl=${this.baseImageUrl}
112
- .isCompactTile=${false}
113
- .isListTile=${true}
114
- .viewSize=${this.classSize}
115
- .loggedIn=${this.loggedIn}
116
- .suppressBlurring=${this.suppressBlurring}
117
- >
118
- </image-block>
119
- </a> `;
120
- }
121
-
122
- private get detailsTemplate() {
123
- return html`
124
- ${this.itemLineTemplate} ${this.creatorTemplate}
125
- <div id="dates-line">
126
- ${this.datePublishedTemplate} ${this.dateSortByTemplate}
127
- ${this.webArchivesCaptureDatesTemplate}
128
- </div>
129
- <div id="views-line">
130
- ${this.viewsTemplate} ${this.ratingTemplate} ${this.reviewsTemplate}
131
- </div>
132
- ${this.topicsTemplate} ${this.collectionsTemplate}
133
- ${this.descriptionTemplate} ${this.textSnippetsTemplate}
134
- ${this.reviewBlockTemplate}
135
- `;
136
- }
137
-
138
- // Data templates
139
- private get iconRightTemplate() {
140
- return html`
141
- <a
142
- id="icon-right"
143
- href=${this.mediatypeURL}
144
- title=${msg(str`See more: ${this.model?.mediatype}`)}
145
- >
146
- <tile-mediatype-icon .model=${this.model}> </tile-mediatype-icon>
147
- </a>
148
- `;
149
- }
150
-
151
- private get titleTemplate() {
152
- if (!this.model?.title) {
153
- return nothing;
154
- }
155
-
156
- // If the model has a server-specified href, use it
157
- // Otherwise construct a details link using the identifier
158
- return this.model?.href
159
- ? html`<a href="${this.baseNavigationUrl}${this.model.href}"
160
- >${this.model.title ?? this.model.identifier}</a
161
- >`
162
- : this.detailsLink(
163
- this.model.identifier,
164
- this.model.title,
165
- this.model.mediatype === 'collection',
166
- );
167
- }
168
-
169
- private get itemLineTemplate() {
170
- const source = this.sourceTemplate;
171
- const volume = this.volumeTemplate;
172
- const issue = this.issueTemplate;
173
- if (!source && !volume && !issue) {
174
- return nothing;
175
- }
176
- return html` <div id="item-line">${source} ${volume} ${issue}</div> `;
177
- }
178
-
179
- private get sourceTemplate() {
180
- if (!this.model?.source) {
181
- return nothing;
182
- }
183
- return html`
184
- <div id="source" class="metadata">
185
- ${this.labelTemplate(msg('Source'))}
186
- ${this.searchLink('source', this.model.source)}
187
- </div>
188
- `;
189
- }
190
-
191
- private get volumeTemplate() {
192
- return this.metadataTemplate(this.model?.volume, msg('Volume'));
193
- }
194
-
195
- private get issueTemplate() {
196
- return this.metadataTemplate(this.model?.issue, msg('Issue'));
197
- }
198
-
199
- private get creatorTemplate() {
200
- // "Archivist since" if account
201
- if (this.model?.mediatype === 'account') {
202
- return html`
203
- <div id="creator" class="metadata">
204
- <span class="label"
205
- >${this.displayValueProvider.accountLabel ?? nothing}</span
206
- >
207
- </div>
208
- `;
209
- }
210
- // "Creator" if not account tile
211
- if (!this.model?.creators || this.model.creators.length === 0) {
212
- return nothing;
213
- }
214
- return html`
215
- <div id="creator" class="metadata">
216
- ${this.labelTemplate(msg('By'))}
217
- ${join(
218
- map(this.model.creators, id => this.searchLink('creator', id)),
219
- ', ',
220
- )}
221
- </div>
222
- `;
223
- }
224
-
225
- private get datePublishedTemplate() {
226
- // If we're showing a date published of Jan 1 at midnight, only show the year.
227
- // This is because items with only a year for their publication date are normalized to
228
- // Jan 1 at midnight timestamps in the search engine documents.
229
- const date: Date | undefined = this.model?.datePublished;
230
- let format: DateFormat = 'long';
231
- if (isFirstMillisecondOfUTCYear(date)) {
232
- format = 'year-only';
233
- }
234
-
235
- return this.metadataTemplate(
236
- this.getFormattedDate(date, format),
237
- msg('Published'),
238
- );
239
- }
240
-
241
- // Show date label/value when sorted by date type
242
- // Except datePublished which is always shown
243
- private get dateSortByTemplate() {
244
- if (
245
- this.effectiveSort &&
246
- (this.effectiveSort.field === 'addeddate' ||
247
- this.effectiveSort.field === 'reviewdate' ||
248
- this.effectiveSort.field === 'publicdate')
249
- ) {
250
- return this.metadataTemplate(
251
- this.getFormattedDate(this.date, 'long'),
252
- this.displayValueProvider.dateLabel,
253
- );
254
- }
255
- return nothing;
256
- }
257
-
258
- private get viewsTemplate() {
259
- const isWeeklySort = this.effectiveSort?.field === 'week';
260
- const viewCount = isWeeklySort
261
- ? this.model?.weeklyViewCount // weekly views
262
- : this.model?.viewCount; // all-time views
263
- if (viewCount == null) return nothing;
264
-
265
- // when its a search-tile, we don't have any stats to show
266
- if (this.model?.mediatype === 'search') {
267
- return this.metadataTemplate('(Favorited search query)', '');
268
- }
269
-
270
- return this.metadataTemplate(
271
- `${formatCount(viewCount, this.formatSize)}`,
272
- this.displayValueProvider.viewsLabel,
273
- );
274
- }
275
-
276
- private get ratingTemplate() {
277
- return this.metadataTemplate(this.model?.averageRating, msg('Avg Rating'));
278
- }
279
-
280
- private get reviewsTemplate() {
281
- return this.metadataTemplate(this.model?.commentCount, msg('Reviews'));
282
- }
283
-
284
- private get topicsTemplate() {
285
- if (!this.model?.subjects || this.model.subjects.length === 0) {
286
- return nothing;
287
- }
288
- return html`
289
- <div id="topics" class="metadata">
290
- ${this.labelTemplate(msg('Topics'))}
291
- ${join(
292
- map(this.model.subjects, id => this.searchLink('subject', id)),
293
- ', ',
294
- )}
295
- </div>
296
- `;
297
- }
298
-
299
- private get collectionsTemplate() {
300
- if (!this.collectionLinks || this.collectionLinks.length === 0) {
301
- return nothing;
302
- }
303
- return html`
304
- <div id="collections" class="metadata">
305
- ${this.labelTemplate(msg('Collections'))}
306
- ${join(this.collectionLinks, ', ')}
307
- </div>
308
- `;
309
- }
310
-
311
- private get descriptionTemplate() {
312
- return this.metadataTemplate(
313
- // Sanitize away any HTML tags and convert line breaks to spaces.
314
- unsafeHTML(
315
- DOMPurify.sanitize(this.model?.description?.replace(/\n/g, ' ') ?? ''),
316
- ),
317
- '',
318
- 'description',
319
- );
320
- }
321
-
322
- private get reviewBlockTemplate(): TemplateResult | typeof nothing {
323
- if (!this.model?.review) return nothing;
324
-
325
- const { reviewtitle, reviewbody, stars } = this.model.review;
326
- return html`
327
- <review-block
328
- viewsize="list"
329
- title=${ifDefined(reviewtitle)}
330
- body=${ifDefined(reviewbody)}
331
- starRating=${ifDefined(stars)}
332
- >
333
- </review-block>
334
- `;
335
- }
336
-
337
- private get textSnippetsTemplate(): TemplateResult | typeof nothing {
338
- if (!this.hasSnippets) return nothing;
339
-
340
- return html`<text-snippet-block
341
- viewsize="list"
342
- .snippets=${this.model?.snippets}
343
- ></text-snippet-block>`;
344
- }
345
-
346
- private get hasSnippets(): boolean {
347
- return !!this.model?.snippets?.length;
348
- }
349
-
350
- private get webArchivesCaptureDatesTemplate():
351
- | TemplateResult
352
- | typeof nothing {
353
- if (!this.model?.captureDates || !this.model.title) return nothing;
354
-
355
- return html`
356
- <ul class="capture-dates">
357
- ${map(
358
- this.model.captureDates,
359
- date =>
360
- html`<li>
361
- ${this.displayValueProvider.webArchivesCaptureLink(
362
- this.model!.title,
363
- date,
364
- )}
365
- </li>`,
366
- )}
367
- </ul>
368
- `;
369
- }
370
-
371
- // Utility functions
372
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
373
- private metadataTemplate(text: any, label = '', id?: string) {
374
- if (!text) return nothing;
375
- return html`
376
- <div id=${ifDefined(id)} class="metadata">
377
- ${this.labelTemplate(label)} ${text}
378
- </div>
379
- `;
380
- }
381
-
382
- private labelTemplate(label: string) {
383
- return html` ${label
384
- ? html`<span class="label">${label}: </span>`
385
- : nothing}`;
386
- }
387
-
388
- private searchLink(field: string, searchTerm: string) {
389
- if (!field || !searchTerm) {
390
- return nothing;
391
- }
392
- const query = encodeURIComponent(`${field}:"${searchTerm}"`);
393
- // No whitespace after closing tag
394
- // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
395
- return html`<a
396
- href="${this.baseNavigationUrl}/search?query=${query}"
397
- rel="nofollow"
398
- >
399
- ${DOMPurify.sanitize(searchTerm)}</a
400
- >`;
401
- }
402
-
403
- private detailsLink(
404
- identifier?: string,
405
- text?: string,
406
- isCollection = false,
407
- ): TemplateResult | typeof nothing {
408
- if (!identifier) return nothing;
409
-
410
- const linkText = text ?? identifier;
411
- const linkHref = this.displayValueProvider.itemPageUrl(
412
- identifier,
413
- isCollection,
414
- );
415
-
416
- return html`<a href=${linkHref}> ${DOMPurify.sanitize(linkText)} </a>`;
417
- }
418
-
419
- /** The URL of this item's mediatype collection, if defined. */
420
- private get mediatypeURL(): string | typeof nothing {
421
- // NB: baseNavigationUrl can be an empty string
422
- if (this.baseNavigationUrl === undefined || !this.model?.mediatype)
423
- return nothing;
424
-
425
- // Need special handling for certain mediatypes that don't have a top-level collection page
426
- switch (this.model.mediatype) {
427
- case 'collection':
428
- return `${this.baseNavigationUrl}/search?query=mediatype:collection&sort=-downloads`;
429
- case 'account':
430
- return nothing;
431
- default:
432
- return this.displayValueProvider.itemPageUrl(
433
- this.model.mediatype,
434
- true,
435
- );
436
- }
437
- }
438
-
439
- protected updated(changed: PropertyValues): void {
440
- if (changed.has('model') || changed.has('collectionTitles')) {
441
- this.buildCollectionLinks();
442
- }
443
- }
444
-
445
- private async buildCollectionLinks() {
446
- if (!this.model?.collections || this.model.collections.length === 0) {
447
- return;
448
- }
449
-
450
- // Note: quirk of Lit: need to replace collectionLinks array,
451
- // otherwise it will not re-render. Can't simply alter the array.
452
- this.collectionLinks = [];
453
- const newCollectionLinks: (TemplateResult | typeof nothing)[] = [];
454
- for (const collection of this.model.collections) {
455
- // Don't include favorites or collections that are meant to be suppressed
456
- if (
457
- !suppressedCollections[collection] &&
458
- !collection.startsWith('fav-')
459
- ) {
460
- newCollectionLinks.push(
461
- this.detailsLink(
462
- collection,
463
- this.collectionTitles?.get(collection) ?? collection,
464
- true,
465
- ),
466
- );
467
- }
468
- }
469
- this.collectionLinks = newCollectionLinks;
470
- }
471
-
472
- /*
473
- * TODO: fix field names to match model in src/collection-browser.ts
474
- * private get dateSortSelector()
475
- * @see src/models.ts
476
- */
477
- private get date(): Date | undefined {
478
- switch (this.effectiveSort?.field) {
479
- case 'date':
480
- return this.model?.datePublished;
481
- case 'reviewdate':
482
- return this.model?.dateReviewed;
483
- case 'addeddate':
484
- return this.model?.dateAdded;
485
- default:
486
- return this.model?.dateArchived; // publicdate
487
- }
488
- }
489
-
490
- /**
491
- * Returns the active sort param if one is set, or the default sort param otherwise.
492
- */
493
- private get effectiveSort(): SortParam | null {
494
- return this.sortParam ?? this.defaultSortParam;
495
- }
496
-
497
- private get classSize(): string {
498
- if (
499
- this.mobileBreakpoint &&
500
- this.currentWidth &&
501
- this.currentWidth < this.mobileBreakpoint
502
- ) {
503
- return 'mobile';
504
- }
505
- return 'desktop';
506
- }
507
-
508
- private get formatSize(): NumberFormat {
509
- if (
510
- this.mobileBreakpoint &&
511
- this.currentWidth &&
512
- this.currentWidth < this.mobileBreakpoint
513
- ) {
514
- return 'short';
515
- }
516
- return 'long';
517
- }
518
-
519
- static get styles() {
520
- return [
521
- tileActionStyles,
522
- css`
523
- html {
524
- font-size: unset;
525
- }
526
-
527
- div {
528
- font-size: 14px;
529
- }
530
-
531
- div a {
532
- text-decoration: none;
533
- }
534
-
535
- div a:link {
536
- color: var(--ia-theme-link-color, #4b64ff);
537
- }
538
-
539
- .label {
540
- font-weight: bold;
541
- }
542
-
543
- #list-line.mobile {
544
- --infiniteScrollerRowGap: 20px;
545
- --infiniteScrollerRowHeight: auto;
546
- }
547
-
548
- #list-line.desktop {
549
- --infiniteScrollerRowGap: 30px;
550
- --infiniteScrollerRowHeight: auto;
551
- }
552
-
553
- /* fields */
554
- #icon-right {
555
- width: 20px;
556
- padding-top: 5px;
557
- --iconHeight: 20px;
558
- --iconWidth: 20px;
559
- --iconTextAlign: right;
560
- margin-top: -8px;
561
- text-align: right;
562
- }
563
-
564
- #title {
565
- color: #4b64ff;
566
- text-decoration: none;
567
- font-size: 22px;
568
- font-weight: bold;
569
- /* align top of text with image */
570
- line-height: 25px;
571
- margin-top: -4px;
572
- padding-bottom: 2px;
573
- flex-grow: 1;
574
-
575
- display: -webkit-box;
576
- -webkit-box-orient: vertical;
577
- -webkit-line-clamp: 3;
578
- overflow: hidden;
579
- overflow-wrap: anywhere;
580
- }
581
-
582
- .metadata {
583
- line-height: 20px;
584
- }
585
-
586
- #description,
587
- #creator,
588
- #topics,
589
- #source {
590
- text-align: left;
591
- overflow: hidden;
592
- text-overflow: ellipsis;
593
- -webkit-box-orient: vertical;
594
- display: -webkit-box;
595
- word-break: break-word;
596
- -webkit-line-clamp: 3; /* number of lines to show */
597
- line-clamp: 3;
598
-
599
- /*
600
- * Safari doesn't always respect the line-clamping rules above,
601
- * so we add this to ensure these fields still get truncated
602
- */
603
- max-height: 60px;
604
- }
605
-
606
- #collections {
607
- display: -webkit-box;
608
- -webkit-box-orient: vertical;
609
- -webkit-line-clamp: 3;
610
- overflow: hidden;
611
- overflow-wrap: anywhere;
612
- }
613
-
614
- #collections > a {
615
- display: inline-block;
616
- }
617
-
618
- #icon {
619
- padding-top: 5px;
620
- }
621
-
622
- #description {
623
- padding-top: 10px;
624
- }
625
-
626
- /* Top level container */
627
- #list-line {
628
- display: flex;
629
- }
630
-
631
- #list-line.mobile {
632
- flex-direction: column;
633
- }
634
-
635
- #list-line.desktop {
636
- column-gap: 10px;
637
- }
638
-
639
- #list-line-top {
640
- display: flex;
641
- column-gap: 7px;
642
- }
643
-
644
- #list-line-bottom {
645
- padding-top: 4px;
646
- }
647
-
648
- #list-line-right,
649
- #list-line-top,
650
- #list-line-bottom {
651
- width: 100%;
652
- }
653
-
654
- /*
655
- * If the container becomes very tiny, don't let the thumbnail side take
656
- * up too much space. Shouldn't make a difference on ordinary viewport sizes.
657
- */
658
- #list-line-left {
659
- max-width: 25%;
660
-
661
- display: flex;
662
- flex-direction: column;
663
- row-gap: 5px;
664
- }
665
-
666
- div a:hover {
667
- text-decoration: underline;
668
- }
669
-
670
- /* Lines containing multiple div as row */
671
- #item-line,
672
- #dates-line,
673
- #views-line,
674
- #title-line {
675
- display: flex;
676
- flex-direction: row;
677
- column-gap: 10px;
678
- }
679
-
680
- /*
681
- * With the exception of the title line, allow these to wrap if
682
- * the space becomes too small to accommodate them together.
683
- *
684
- * The title line is excluded because it contains the mediatype icon
685
- * which we don't want to wrap.
686
- */
687
- #item-line,
688
- #dates-line,
689
- #views-line {
690
- flex-wrap: wrap;
691
- }
692
-
693
- .capture-dates {
694
- margin: 0;
695
- padding: 0;
696
- list-style-type: none;
697
- }
698
-
699
- .capture-dates a:link {
700
- text-decoration: none;
701
- color: var(--ia-theme-link-color, #4b64ff);
702
- }
703
- .capture-dates a:hover {
704
- text-decoration: underline;
705
- }
706
-
707
- /*
708
- * Tile-list (extended) action row sits under the thumbnail in the left
709
- * column. The image-block above already has its own bottom padding via
710
- * the parent's row-gap, so we don't need extra spacing here.
711
- */
712
- .tile-actions.list-detail {
713
- width: 100%;
714
- }
715
- `,
716
- ];
717
- }
718
- }