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