@internetarchive/collection-browser 2.3.0 → 2.4.0-e2e-test-0

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 (311) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +12 -12
  6. package/dist/index.js +12 -12
  7. package/dist/src/app-root.d.ts +91 -91
  8. package/dist/src/app-root.js +487 -487
  9. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  10. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  11. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  13. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  14. package/dist/src/assets/img/icons/chevron.js +2 -2
  15. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  16. package/dist/src/assets/img/icons/contract.js +2 -2
  17. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  18. package/dist/src/assets/img/icons/empty-query.js +2 -2
  19. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  20. package/dist/src/assets/img/icons/expand.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  29. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  30. package/dist/src/assets/img/icons/login-required.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  59. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  60. package/dist/src/assets/img/icons/null-result.js +2 -2
  61. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  62. package/dist/src/assets/img/icons/restricted.js +2 -2
  63. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  64. package/dist/src/assets/img/icons/reviews.js +2 -2
  65. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  66. package/dist/src/assets/img/icons/upload.js +2 -2
  67. package/dist/src/assets/img/icons/views.d.ts +1 -1
  68. package/dist/src/assets/img/icons/views.js +2 -2
  69. package/dist/src/circular-activity-indicator.d.ts +5 -5
  70. package/dist/src/circular-activity-indicator.js +17 -17
  71. package/dist/src/collection-browser.d.ts +466 -466
  72. package/dist/src/collection-browser.js +1476 -1476
  73. package/dist/src/collection-browser.js.map +1 -1
  74. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  75. package/dist/src/collection-facets/facet-row.js +116 -114
  76. package/dist/src/collection-facets/facet-row.js.map +1 -1
  77. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  78. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  79. package/dist/src/collection-facets/facets-template.d.ts +17 -17
  80. package/dist/src/collection-facets/facets-template.js +118 -115
  81. package/dist/src/collection-facets/facets-template.js.map +1 -1
  82. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  83. package/dist/src/collection-facets/more-facets-content.js +360 -360
  84. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  85. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  86. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  87. package/dist/src/collection-facets/toggle-switch.js +94 -94
  88. package/dist/src/collection-facets.d.ts +103 -103
  89. package/dist/src/collection-facets.js +522 -512
  90. package/dist/src/collection-facets.js.map +1 -1
  91. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  92. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  93. package/dist/src/data-source/collection-browser-data-source.d.ts +378 -378
  94. package/dist/src/data-source/collection-browser-data-source.js +985 -985
  95. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  96. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  97. package/dist/src/data-source/models.d.ts +28 -28
  98. package/dist/src/data-source/models.js +8 -8
  99. package/dist/src/empty-placeholder.d.ts +23 -23
  100. package/dist/src/empty-placeholder.js +87 -79
  101. package/dist/src/empty-placeholder.js.map +1 -1
  102. package/dist/src/expanded-date-picker.d.ts +43 -43
  103. package/dist/src/expanded-date-picker.js +109 -109
  104. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  105. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  106. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  107. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  108. package/dist/src/manage/manage-bar.d.ts +30 -30
  109. package/dist/src/manage/manage-bar.js +61 -61
  110. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  111. package/dist/src/mediatype/mediatype-config.js +91 -91
  112. package/dist/src/models.d.ts +209 -209
  113. package/dist/src/models.js +381 -381
  114. package/dist/src/restoration-state-handler.d.ts +70 -70
  115. package/dist/src/restoration-state-handler.js +357 -357
  116. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  117. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  118. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  119. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  120. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  121. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  122. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  123. package/dist/src/sort-filter-bar/img/list.js +2 -2
  124. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  125. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  126. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  127. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  128. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  129. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  130. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  131. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  132. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  133. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  134. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +222 -222
  135. package/dist/src/sort-filter-bar/sort-filter-bar.js +699 -696
  136. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  137. package/dist/src/styles/ia-button.d.ts +2 -2
  138. package/dist/src/styles/ia-button.js +16 -16
  139. package/dist/src/styles/item-image-styles.d.ts +8 -8
  140. package/dist/src/styles/item-image-styles.js +9 -9
  141. package/dist/src/styles/sr-only.d.ts +1 -1
  142. package/dist/src/styles/sr-only.js +2 -2
  143. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  144. package/dist/src/tiles/base-tile-component.js +63 -63
  145. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  146. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  147. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  148. package/dist/src/tiles/grid/account-tile.js +72 -72
  149. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  150. package/dist/src/tiles/grid/collection-tile.js +80 -80
  151. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  152. package/dist/src/tiles/grid/item-tile.js +149 -149
  153. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  154. package/dist/src/tiles/grid/search-tile.js +51 -51
  155. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  156. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  157. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  158. package/dist/src/tiles/grid/tile-stats.js +53 -53
  159. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  160. package/dist/src/tiles/hover/hover-pane-controller.js +354 -352
  161. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  162. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -15
  163. package/dist/src/tiles/hover/tile-hover-pane.js +127 -47
  164. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  165. package/dist/src/tiles/image-block.d.ts +17 -17
  166. package/dist/src/tiles/image-block.js +74 -74
  167. package/dist/src/tiles/image-block.js.map +1 -1
  168. package/dist/src/tiles/item-image.d.ts +39 -39
  169. package/dist/src/tiles/item-image.js +154 -154
  170. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  171. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  172. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  173. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  174. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  175. package/dist/src/tiles/list/tile-list.js +315 -315
  176. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  177. package/dist/src/tiles/mediatype-icon.js +47 -47
  178. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  179. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  180. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  181. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  182. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  183. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  184. package/dist/src/tiles/review-block.d.ts +12 -12
  185. package/dist/src/tiles/review-block.js +56 -56
  186. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  187. package/dist/src/tiles/text-snippet-block.js +73 -73
  188. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  189. package/dist/src/tiles/tile-dispatcher.js +229 -229
  190. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  191. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  192. package/dist/src/utils/analytics-events.d.ts +28 -28
  193. package/dist/src/utils/analytics-events.js +30 -30
  194. package/dist/src/utils/array-equals.d.ts +4 -4
  195. package/dist/src/utils/array-equals.js +10 -10
  196. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  197. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  198. package/dist/src/utils/format-count.d.ts +7 -7
  199. package/dist/src/utils/format-count.js +76 -76
  200. package/dist/src/utils/format-date.d.ts +2 -2
  201. package/dist/src/utils/format-date.js +25 -25
  202. package/dist/src/utils/format-unit-size.d.ts +2 -2
  203. package/dist/src/utils/format-unit-size.js +33 -33
  204. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  205. package/dist/src/utils/local-date-from-utc.js +15 -15
  206. package/dist/src/utils/log.d.ts +7 -7
  207. package/dist/src/utils/log.js +15 -15
  208. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  209. package/dist/src/utils/resolve-mediatype.js +23 -23
  210. package/dist/src/utils/sha1.d.ts +2 -2
  211. package/dist/src/utils/sha1.js +8 -8
  212. package/dist/test/collection-browser.test.d.ts +1 -1
  213. package/dist/test/collection-browser.test.js +1293 -1293
  214. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  215. package/dist/test/collection-facets/facet-row.test.js +203 -203
  216. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  217. package/dist/test/collection-facets/facets-template.test.js +105 -105
  218. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  219. package/dist/test/collection-facets/more-facets-content.test.js +139 -139
  220. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  221. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  222. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  223. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  224. package/dist/test/collection-facets.test.d.ts +2 -2
  225. package/dist/test/collection-facets.test.js +652 -652
  226. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  227. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  228. package/dist/test/empty-placeholder.test.d.ts +1 -1
  229. package/dist/test/empty-placeholder.test.js +63 -63
  230. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  231. package/dist/test/expanded-date-picker.test.js +95 -95
  232. package/dist/test/icon-overlay.test.d.ts +1 -1
  233. package/dist/test/icon-overlay.test.js +24 -24
  234. package/dist/test/image-block.test.d.ts +1 -1
  235. package/dist/test/image-block.test.js +48 -48
  236. package/dist/test/item-image.test.d.ts +1 -1
  237. package/dist/test/item-image.test.js +85 -85
  238. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  239. package/dist/test/manage/manage-bar.test.js +81 -81
  240. package/dist/test/mediatype-config.test.d.ts +1 -1
  241. package/dist/test/mediatype-config.test.js +16 -16
  242. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  243. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  244. package/dist/test/mocks/mock-search-responses.d.ts +24 -24
  245. package/dist/test/mocks/mock-search-responses.js +860 -860
  246. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  247. package/dist/test/mocks/mock-search-service.js +53 -53
  248. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  249. package/dist/test/restoration-state-handler.test.js +270 -270
  250. package/dist/test/review-block.test.d.ts +1 -1
  251. package/dist/test/review-block.test.js +44 -44
  252. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  253. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  254. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  255. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  256. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  257. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  258. package/dist/test/text-overlay.test.d.ts +1 -1
  259. package/dist/test/text-overlay.test.js +48 -48
  260. package/dist/test/text-snippet-block.test.d.ts +1 -1
  261. package/dist/test/text-snippet-block.test.js +57 -57
  262. package/dist/test/tile-stats.test.d.ts +1 -1
  263. package/dist/test/tile-stats.test.js +81 -81
  264. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  265. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  266. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  267. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  268. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  269. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  270. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  271. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  272. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  273. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  274. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  275. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -13
  276. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  277. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  278. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  279. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  280. package/dist/test/tiles/list/tile-list.test.js +297 -297
  281. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  282. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  283. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  284. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  285. package/dist/test/utils/array-equals.test.d.ts +1 -1
  286. package/dist/test/utils/array-equals.test.js +26 -26
  287. package/dist/test/utils/format-count.test.d.ts +1 -1
  288. package/dist/test/utils/format-count.test.js +23 -23
  289. package/dist/test/utils/format-date.test.d.ts +1 -1
  290. package/dist/test/utils/format-date.test.js +17 -17
  291. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  292. package/dist/test/utils/format-unit-size.test.js +17 -17
  293. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  294. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  295. package/local.archive.org.cert +86 -86
  296. package/local.archive.org.key +27 -27
  297. package/package.json +1 -1
  298. package/renovate.json +6 -6
  299. package/src/collection-browser.ts +1 -1
  300. package/src/collection-facets/facet-row.ts +2 -0
  301. package/src/collection-facets/facets-template.ts +4 -1
  302. package/src/collection-facets.ts +12 -2
  303. package/src/empty-placeholder.ts +13 -5
  304. package/src/sort-filter-bar/sort-filter-bar.ts +3 -0
  305. package/src/tiles/hover/hover-pane-controller.ts +2 -0
  306. package/src/tiles/hover/tile-hover-pane.ts +100 -11
  307. package/src/tiles/image-block.ts +1 -1
  308. package/test/tiles/hover/tile-hover-pane.test.ts +61 -0
  309. package/tsconfig.json +21 -21
  310. package/web-dev-server.config.mjs +30 -30
  311. package/web-test-runner.config.mjs +41 -41
@@ -1,382 +1,382 @@
1
- import { AggregationSortType, } from '@internetarchive/search-service';
2
- import { collapseRepeatedQuotes } from './utils/collapse-repeated-quotes';
3
- import { resolveMediatype } from './utils/resolve-mediatype';
4
- /**
5
- * Class for converting & storing raw search results in the correct format for UI tiles.
6
- */
7
- export class TileModel {
8
- constructor(result) {
9
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11;
10
- const flags = this.getFlags(result);
11
- this.averageRating = (_a = result.avg_rating) === null || _a === void 0 ? void 0 : _a.value;
12
- this.captureDates = (_b = result.capture_dates) === null || _b === void 0 ? void 0 : _b.values;
13
- this.checked = false;
14
- this.collections = (_d = (_c = result.collection) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : [];
15
- this.collectionFilesCount = (_f = (_e = result.collection_files_count) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : 0;
16
- this.collectionSize = (_h = (_g = result.collection_size) === null || _g === void 0 ? void 0 : _g.value) !== null && _h !== void 0 ? _h : 0;
17
- this.commentCount = (_k = (_j = result.num_reviews) === null || _j === void 0 ? void 0 : _j.value) !== null && _k !== void 0 ? _k : 0;
18
- this.creator = (_l = result.creator) === null || _l === void 0 ? void 0 : _l.value;
19
- this.creators = (_o = (_m = result.creator) === null || _m === void 0 ? void 0 : _m.values) !== null && _o !== void 0 ? _o : [];
20
- this.dateAdded = (_p = result.addeddate) === null || _p === void 0 ? void 0 : _p.value;
21
- this.dateArchived = (_q = result.publicdate) === null || _q === void 0 ? void 0 : _q.value;
22
- this.datePublished = (_r = result.date) === null || _r === void 0 ? void 0 : _r.value;
23
- this.dateReviewed = (_s = result.reviewdate) === null || _s === void 0 ? void 0 : _s.value;
24
- this.description = (_t = result.description) === null || _t === void 0 ? void 0 : _t.values.join('\n');
25
- this.favCount = (_v = (_u = result.num_favorites) === null || _u === void 0 ? void 0 : _u.value) !== null && _v !== void 0 ? _v : 0;
26
- this.href = collapseRepeatedQuotes((_x = (_w = result.review) === null || _w === void 0 ? void 0 : _w.__href__) !== null && _x !== void 0 ? _x : (_y = result.__href__) === null || _y === void 0 ? void 0 : _y.value);
27
- this.identifier = result.identifier;
28
- this.issue = (_z = result.issue) === null || _z === void 0 ? void 0 : _z.value;
29
- this.itemCount = (_1 = (_0 = result.item_count) === null || _0 === void 0 ? void 0 : _0.value) !== null && _1 !== void 0 ? _1 : 0;
30
- this.mediatype = resolveMediatype(result);
31
- this.review = result.review;
32
- this.snippets = (_3 = (_2 = result.highlight) === null || _2 === void 0 ? void 0 : _2.values) !== null && _3 !== void 0 ? _3 : [];
33
- this.source = (_4 = result.source) === null || _4 === void 0 ? void 0 : _4.value;
34
- this.subjects = (_6 = (_5 = result.subject) === null || _5 === void 0 ? void 0 : _5.values) !== null && _6 !== void 0 ? _6 : [];
35
- this.title = (_8 = (_7 = result.title) === null || _7 === void 0 ? void 0 : _7.value) !== null && _8 !== void 0 ? _8 : '';
36
- this.volume = (_9 = result.volume) === null || _9 === void 0 ? void 0 : _9.value;
37
- this.viewCount = (_10 = result.downloads) === null || _10 === void 0 ? void 0 : _10.value;
38
- this.weeklyViewCount = (_11 = result.week) === null || _11 === void 0 ? void 0 : _11.value;
39
- this.loginRequired = flags.loginRequired;
40
- this.contentWarning = flags.contentWarning;
41
- }
42
- /**
43
- * Copies the contents of this TileModel onto a new instance
44
- */
45
- clone() {
46
- const cloned = new TileModel({});
47
- cloned.averageRating = this.averageRating;
48
- cloned.captureDates = this.captureDates;
49
- cloned.checked = this.checked;
50
- cloned.collections = this.collections;
51
- cloned.collectionFilesCount = this.collectionFilesCount;
52
- cloned.collectionSize = this.collectionSize;
53
- cloned.commentCount = this.commentCount;
54
- cloned.creator = this.creator;
55
- cloned.creators = this.creators;
56
- cloned.dateStr = this.dateStr;
57
- cloned.dateAdded = this.dateAdded;
58
- cloned.dateArchived = this.dateArchived;
59
- cloned.datePublished = this.datePublished;
60
- cloned.dateReviewed = this.dateReviewed;
61
- cloned.description = this.description;
62
- cloned.favCount = this.favCount;
63
- cloned.href = this.href;
64
- cloned.identifier = this.identifier;
65
- cloned.issue = this.issue;
66
- cloned.itemCount = this.itemCount;
67
- cloned.mediatype = this.mediatype;
68
- cloned.snippets = this.snippets;
69
- cloned.source = this.source;
70
- cloned.subjects = this.subjects;
71
- cloned.title = this.title;
72
- cloned.volume = this.volume;
73
- cloned.viewCount = this.viewCount;
74
- cloned.weeklyViewCount = this.weeklyViewCount;
75
- cloned.loginRequired = this.loginRequired;
76
- cloned.contentWarning = this.contentWarning;
77
- return cloned;
78
- }
79
- /**
80
- * Determines the appropriate tile flags for the given search result
81
- * (login required and/or content warning)
82
- */
83
- getFlags(result) {
84
- var _a, _b, _c, _d;
85
- const flags = {
86
- loginRequired: false,
87
- contentWarning: false,
88
- };
89
- // Check if item and item in "modifying" collection, setting above flags
90
- if (((_a = result.collection) === null || _a === void 0 ? void 0 : _a.values.length) &&
91
- ((_b = result.mediatype) === null || _b === void 0 ? void 0 : _b.value) !== 'collection') {
92
- for (const collection of (_d = (_c = result.collection) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : []) {
93
- if (collection === 'loggedin') {
94
- flags.loginRequired = true;
95
- if (flags.contentWarning)
96
- break;
97
- }
98
- if (collection === 'no-preview') {
99
- flags.contentWarning = true;
100
- if (flags.loginRequired)
101
- break;
102
- }
103
- }
104
- }
105
- return flags;
106
- }
107
- }
108
- /**
109
- * The sort fields shown in the sort filter bar
110
- */
111
- export var SortField;
112
- (function (SortField) {
113
- SortField["default"] = "default";
114
- SortField["unrecognized"] = "unrecognized";
115
- SortField["relevance"] = "relevance";
116
- SortField["alltimeview"] = "alltimeview";
117
- SortField["weeklyview"] = "weeklyview";
118
- SortField["title"] = "title";
119
- SortField["date"] = "date";
120
- SortField["datearchived"] = "datearchived";
121
- SortField["datereviewed"] = "datereviewed";
122
- SortField["dateadded"] = "dateadded";
123
- SortField["datefavorited"] = "datefavorited";
124
- SortField["creator"] = "creator";
125
- })(SortField || (SortField = {}));
126
- export const SORT_OPTIONS = {
127
- // Default sort is the case where the user has not specified a sort option via the sort bar or URL.
128
- // In these cases, we defer to whatever sort the backend chooses.
129
- // For the search page, the default is always relevance sort.
130
- // For collection pages _without a query_, the default is usually weekly views, but this can be
131
- // overridden by the collection's `sort-by` metadata entry. If a query _is_ specified, then the
132
- // default is again relevance sort.
133
- // For fav-* collections only, the default is instead sorting by date favorited.
134
- [SortField.default]: {
135
- field: SortField.default,
136
- defaultSortDirection: null,
137
- canSetDirection: false,
138
- shownInSortBar: false,
139
- shownInURL: false,
140
- handledBySearchService: false,
141
- displayName: '',
142
- urlNames: ['', null, undefined], // Empty or nullish sort params result in default sorting
143
- },
144
- // Unrecognized sort is the case where the user has specified a sort in the URL, but it is not
145
- // one of the options listed in this map. We still want these unrecognized sorts to be applied
146
- // when searching, but they are not displayed in the sort bar and we do not actively manage
147
- // their URL param beyond flipping the direction as needed.
148
- [SortField.unrecognized]: {
149
- field: SortField.unrecognized,
150
- defaultSortDirection: null,
151
- canSetDirection: true,
152
- shownInSortBar: false,
153
- shownInURL: false,
154
- handledBySearchService: true,
155
- displayName: '',
156
- urlNames: [],
157
- },
158
- // Relevance sort is unique in that it does not produce a URL param when it is set.
159
- // It is only available when there is a user-specified query that relevancy can be scored against.
160
- // Therefore, it does not appear as a sort bar option when browsing a collection with no query set.
161
- [SortField.relevance]: {
162
- field: SortField.relevance,
163
- defaultSortDirection: null,
164
- canSetDirection: false,
165
- shownInSortBar: true,
166
- shownInURL: false,
167
- handledBySearchService: false,
168
- displayName: 'Relevance',
169
- urlNames: ['_score'],
170
- },
171
- [SortField.alltimeview]: {
172
- field: SortField.alltimeview,
173
- defaultSortDirection: 'desc',
174
- canSetDirection: true,
175
- shownInSortBar: true,
176
- shownInURL: true,
177
- handledBySearchService: true,
178
- searchServiceKey: 'downloads',
179
- displayName: 'All-time views',
180
- urlNames: ['downloads'],
181
- },
182
- [SortField.weeklyview]: {
183
- field: SortField.weeklyview,
184
- defaultSortDirection: 'desc',
185
- canSetDirection: true,
186
- shownInSortBar: true,
187
- shownInURL: true,
188
- handledBySearchService: true,
189
- searchServiceKey: 'week',
190
- displayName: 'Weekly views',
191
- urlNames: ['week'],
192
- },
193
- [SortField.title]: {
194
- field: SortField.title,
195
- defaultSortDirection: 'asc',
196
- canSetDirection: true,
197
- shownInSortBar: true,
198
- shownInURL: true,
199
- handledBySearchService: true,
200
- searchServiceKey: 'titleSorter',
201
- displayName: 'Title',
202
- urlNames: ['title', 'titleSorter'],
203
- },
204
- [SortField.date]: {
205
- field: SortField.date,
206
- defaultSortDirection: 'desc',
207
- canSetDirection: true,
208
- shownInSortBar: true,
209
- shownInURL: true,
210
- handledBySearchService: true,
211
- searchServiceKey: 'date',
212
- displayName: 'Date published',
213
- urlNames: ['date'],
214
- },
215
- [SortField.datearchived]: {
216
- field: SortField.datearchived,
217
- defaultSortDirection: 'desc',
218
- canSetDirection: true,
219
- shownInSortBar: true,
220
- shownInURL: true,
221
- handledBySearchService: true,
222
- searchServiceKey: 'publicdate',
223
- displayName: 'Date archived',
224
- urlNames: ['publicdate'],
225
- },
226
- [SortField.datereviewed]: {
227
- field: SortField.datereviewed,
228
- defaultSortDirection: 'desc',
229
- canSetDirection: true,
230
- shownInSortBar: true,
231
- shownInURL: true,
232
- handledBySearchService: true,
233
- searchServiceKey: 'reviewdate',
234
- displayName: 'Date reviewed',
235
- urlNames: ['reviewdate'],
236
- },
237
- [SortField.dateadded]: {
238
- field: SortField.dateadded,
239
- defaultSortDirection: 'desc',
240
- canSetDirection: true,
241
- shownInSortBar: true,
242
- shownInURL: true,
243
- handledBySearchService: true,
244
- searchServiceKey: 'addeddate',
245
- displayName: 'Date added',
246
- urlNames: ['addeddate'],
247
- },
248
- [SortField.datefavorited]: {
249
- field: SortField.datefavorited,
250
- defaultSortDirection: 'desc',
251
- canSetDirection: false,
252
- shownInSortBar: true,
253
- shownInURL: false,
254
- handledBySearchService: false,
255
- searchServiceKey: 'favoritedate',
256
- displayName: 'Date favorited',
257
- urlNames: ['favoritedate'],
258
- },
259
- [SortField.creator]: {
260
- field: SortField.creator,
261
- defaultSortDirection: 'asc',
262
- canSetDirection: true,
263
- shownInSortBar: true,
264
- shownInURL: true,
265
- handledBySearchService: true,
266
- searchServiceKey: 'creatorSorter',
267
- displayName: 'Creator',
268
- urlNames: ['creator', 'creatorSorter'],
269
- },
270
- };
271
- /**
272
- * Returns the SortOption corresponding to the given API sort name, or
273
- * the "unrecognized" SortOption if none matches.
274
- */
275
- export function sortOptionFromAPIString(sortName) {
276
- var _a;
277
- return ((_a = Object.values(SORT_OPTIONS).find(opt => opt.urlNames.some(name => sortName === name))) !== null && _a !== void 0 ? _a : SORT_OPTIONS[SortField.unrecognized]);
278
- }
279
- export const defaultProfileElementSorts = {
280
- uploads: SortField.datearchived,
281
- reviews: SortField.datereviewed,
282
- collections: SortField.datearchived,
283
- web_archives: SortField.datearchived,
284
- };
285
- /**
286
- * A map from prefix filter types to the corresponding aggregation keys
287
- * that are needed to fetch the filter counts from the backend.
288
- */
289
- export const prefixFilterAggregationKeys = {
290
- title: 'firstTitle',
291
- creator: 'firstCreator',
292
- };
293
- export const getDefaultSelectedFacets = () => ({
294
- subject: {},
295
- lending: {},
296
- mediatype: {},
297
- language: {},
298
- creator: {},
299
- collection: {},
300
- year: {},
301
- });
302
- export const facetDisplayOrder = [
303
- 'mediatype',
304
- 'lending',
305
- 'year',
306
- 'subject',
307
- 'collection',
308
- 'creator',
309
- 'language',
310
- ];
311
- export const facetTitles = {
312
- subject: 'Subject',
313
- lending: 'Availability',
314
- mediatype: 'Media Type',
315
- language: 'Language',
316
- creator: 'Creator',
317
- collection: 'Collection',
318
- year: 'Year',
319
- };
320
- /**
321
- * The default sort type to use for each facet type
322
- */
323
- export const defaultFacetSort = {
324
- subject: AggregationSortType.COUNT,
325
- lending: AggregationSortType.COUNT,
326
- mediatype: AggregationSortType.COUNT,
327
- language: AggregationSortType.COUNT,
328
- creator: AggregationSortType.COUNT,
329
- collection: AggregationSortType.COUNT,
330
- year: AggregationSortType.NUMERIC,
331
- };
332
- /**
333
- * The sort type corresponding to facet bucket values, for each facet type
334
- * (i.e., the opposite of "sort by count" for that type).
335
- */
336
- export const valueFacetSort = {
337
- subject: AggregationSortType.ALPHABETICAL,
338
- lending: AggregationSortType.ALPHABETICAL,
339
- mediatype: AggregationSortType.ALPHABETICAL,
340
- language: AggregationSortType.ALPHABETICAL,
341
- creator: AggregationSortType.ALPHABETICAL,
342
- collection: AggregationSortType.ALPHABETICAL,
343
- year: AggregationSortType.NUMERIC,
344
- };
345
- /**
346
- * Maps valid lending keys to whether they should be visible in the facet sidebar
347
- */
348
- export const lendingFacetKeysVisibility = {
349
- is_lendable: true,
350
- is_borrowable: false,
351
- available_to_borrow: true,
352
- is_browsable: false,
353
- available_to_browse: false,
354
- is_readable: true,
355
- available_to_waitlist: false,
356
- };
357
- /**
358
- * Maps valid, visible lending keys to their facet sidebar display text
359
- */
360
- export const lendingFacetDisplayNames = {
361
- is_lendable: 'Lending Library',
362
- available_to_borrow: 'Borrow 14 Days',
363
- is_readable: 'Always Available',
364
- };
365
- /**
366
- * A record of which admin-only collections should be suppressed from being displayed
367
- * as facets or in an item's list of collections.
368
- */
369
- export const suppressedCollections = {
370
- deemphasize: true,
371
- community: true,
372
- stream_only: true,
373
- samples_only: true,
374
- test_collection: true,
375
- printdisabled: true,
376
- 'openlibrary-ol': true,
377
- nationalemergencylibrary: true,
378
- china: true,
379
- americana: true,
380
- toronto: true,
381
- };
1
+ import { AggregationSortType, } from '@internetarchive/search-service';
2
+ import { collapseRepeatedQuotes } from './utils/collapse-repeated-quotes';
3
+ import { resolveMediatype } from './utils/resolve-mediatype';
4
+ /**
5
+ * Class for converting & storing raw search results in the correct format for UI tiles.
6
+ */
7
+ export class TileModel {
8
+ constructor(result) {
9
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11;
10
+ const flags = this.getFlags(result);
11
+ this.averageRating = (_a = result.avg_rating) === null || _a === void 0 ? void 0 : _a.value;
12
+ this.captureDates = (_b = result.capture_dates) === null || _b === void 0 ? void 0 : _b.values;
13
+ this.checked = false;
14
+ this.collections = (_d = (_c = result.collection) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : [];
15
+ this.collectionFilesCount = (_f = (_e = result.collection_files_count) === null || _e === void 0 ? void 0 : _e.value) !== null && _f !== void 0 ? _f : 0;
16
+ this.collectionSize = (_h = (_g = result.collection_size) === null || _g === void 0 ? void 0 : _g.value) !== null && _h !== void 0 ? _h : 0;
17
+ this.commentCount = (_k = (_j = result.num_reviews) === null || _j === void 0 ? void 0 : _j.value) !== null && _k !== void 0 ? _k : 0;
18
+ this.creator = (_l = result.creator) === null || _l === void 0 ? void 0 : _l.value;
19
+ this.creators = (_o = (_m = result.creator) === null || _m === void 0 ? void 0 : _m.values) !== null && _o !== void 0 ? _o : [];
20
+ this.dateAdded = (_p = result.addeddate) === null || _p === void 0 ? void 0 : _p.value;
21
+ this.dateArchived = (_q = result.publicdate) === null || _q === void 0 ? void 0 : _q.value;
22
+ this.datePublished = (_r = result.date) === null || _r === void 0 ? void 0 : _r.value;
23
+ this.dateReviewed = (_s = result.reviewdate) === null || _s === void 0 ? void 0 : _s.value;
24
+ this.description = (_t = result.description) === null || _t === void 0 ? void 0 : _t.values.join('\n');
25
+ this.favCount = (_v = (_u = result.num_favorites) === null || _u === void 0 ? void 0 : _u.value) !== null && _v !== void 0 ? _v : 0;
26
+ this.href = collapseRepeatedQuotes((_x = (_w = result.review) === null || _w === void 0 ? void 0 : _w.__href__) !== null && _x !== void 0 ? _x : (_y = result.__href__) === null || _y === void 0 ? void 0 : _y.value);
27
+ this.identifier = result.identifier;
28
+ this.issue = (_z = result.issue) === null || _z === void 0 ? void 0 : _z.value;
29
+ this.itemCount = (_1 = (_0 = result.item_count) === null || _0 === void 0 ? void 0 : _0.value) !== null && _1 !== void 0 ? _1 : 0;
30
+ this.mediatype = resolveMediatype(result);
31
+ this.review = result.review;
32
+ this.snippets = (_3 = (_2 = result.highlight) === null || _2 === void 0 ? void 0 : _2.values) !== null && _3 !== void 0 ? _3 : [];
33
+ this.source = (_4 = result.source) === null || _4 === void 0 ? void 0 : _4.value;
34
+ this.subjects = (_6 = (_5 = result.subject) === null || _5 === void 0 ? void 0 : _5.values) !== null && _6 !== void 0 ? _6 : [];
35
+ this.title = (_8 = (_7 = result.title) === null || _7 === void 0 ? void 0 : _7.value) !== null && _8 !== void 0 ? _8 : '';
36
+ this.volume = (_9 = result.volume) === null || _9 === void 0 ? void 0 : _9.value;
37
+ this.viewCount = (_10 = result.downloads) === null || _10 === void 0 ? void 0 : _10.value;
38
+ this.weeklyViewCount = (_11 = result.week) === null || _11 === void 0 ? void 0 : _11.value;
39
+ this.loginRequired = flags.loginRequired;
40
+ this.contentWarning = flags.contentWarning;
41
+ }
42
+ /**
43
+ * Copies the contents of this TileModel onto a new instance
44
+ */
45
+ clone() {
46
+ const cloned = new TileModel({});
47
+ cloned.averageRating = this.averageRating;
48
+ cloned.captureDates = this.captureDates;
49
+ cloned.checked = this.checked;
50
+ cloned.collections = this.collections;
51
+ cloned.collectionFilesCount = this.collectionFilesCount;
52
+ cloned.collectionSize = this.collectionSize;
53
+ cloned.commentCount = this.commentCount;
54
+ cloned.creator = this.creator;
55
+ cloned.creators = this.creators;
56
+ cloned.dateStr = this.dateStr;
57
+ cloned.dateAdded = this.dateAdded;
58
+ cloned.dateArchived = this.dateArchived;
59
+ cloned.datePublished = this.datePublished;
60
+ cloned.dateReviewed = this.dateReviewed;
61
+ cloned.description = this.description;
62
+ cloned.favCount = this.favCount;
63
+ cloned.href = this.href;
64
+ cloned.identifier = this.identifier;
65
+ cloned.issue = this.issue;
66
+ cloned.itemCount = this.itemCount;
67
+ cloned.mediatype = this.mediatype;
68
+ cloned.snippets = this.snippets;
69
+ cloned.source = this.source;
70
+ cloned.subjects = this.subjects;
71
+ cloned.title = this.title;
72
+ cloned.volume = this.volume;
73
+ cloned.viewCount = this.viewCount;
74
+ cloned.weeklyViewCount = this.weeklyViewCount;
75
+ cloned.loginRequired = this.loginRequired;
76
+ cloned.contentWarning = this.contentWarning;
77
+ return cloned;
78
+ }
79
+ /**
80
+ * Determines the appropriate tile flags for the given search result
81
+ * (login required and/or content warning)
82
+ */
83
+ getFlags(result) {
84
+ var _a, _b, _c, _d;
85
+ const flags = {
86
+ loginRequired: false,
87
+ contentWarning: false,
88
+ };
89
+ // Check if item and item in "modifying" collection, setting above flags
90
+ if (((_a = result.collection) === null || _a === void 0 ? void 0 : _a.values.length) &&
91
+ ((_b = result.mediatype) === null || _b === void 0 ? void 0 : _b.value) !== 'collection') {
92
+ for (const collection of (_d = (_c = result.collection) === null || _c === void 0 ? void 0 : _c.values) !== null && _d !== void 0 ? _d : []) {
93
+ if (collection === 'loggedin') {
94
+ flags.loginRequired = true;
95
+ if (flags.contentWarning)
96
+ break;
97
+ }
98
+ if (collection === 'no-preview') {
99
+ flags.contentWarning = true;
100
+ if (flags.loginRequired)
101
+ break;
102
+ }
103
+ }
104
+ }
105
+ return flags;
106
+ }
107
+ }
108
+ /**
109
+ * The sort fields shown in the sort filter bar
110
+ */
111
+ export var SortField;
112
+ (function (SortField) {
113
+ SortField["default"] = "default";
114
+ SortField["unrecognized"] = "unrecognized";
115
+ SortField["relevance"] = "relevance";
116
+ SortField["alltimeview"] = "alltimeview";
117
+ SortField["weeklyview"] = "weeklyview";
118
+ SortField["title"] = "title";
119
+ SortField["date"] = "date";
120
+ SortField["datearchived"] = "datearchived";
121
+ SortField["datereviewed"] = "datereviewed";
122
+ SortField["dateadded"] = "dateadded";
123
+ SortField["datefavorited"] = "datefavorited";
124
+ SortField["creator"] = "creator";
125
+ })(SortField || (SortField = {}));
126
+ export const SORT_OPTIONS = {
127
+ // Default sort is the case where the user has not specified a sort option via the sort bar or URL.
128
+ // In these cases, we defer to whatever sort the backend chooses.
129
+ // For the search page, the default is always relevance sort.
130
+ // For collection pages _without a query_, the default is usually weekly views, but this can be
131
+ // overridden by the collection's `sort-by` metadata entry. If a query _is_ specified, then the
132
+ // default is again relevance sort.
133
+ // For fav-* collections only, the default is instead sorting by date favorited.
134
+ [SortField.default]: {
135
+ field: SortField.default,
136
+ defaultSortDirection: null,
137
+ canSetDirection: false,
138
+ shownInSortBar: false,
139
+ shownInURL: false,
140
+ handledBySearchService: false,
141
+ displayName: '',
142
+ urlNames: ['', null, undefined], // Empty or nullish sort params result in default sorting
143
+ },
144
+ // Unrecognized sort is the case where the user has specified a sort in the URL, but it is not
145
+ // one of the options listed in this map. We still want these unrecognized sorts to be applied
146
+ // when searching, but they are not displayed in the sort bar and we do not actively manage
147
+ // their URL param beyond flipping the direction as needed.
148
+ [SortField.unrecognized]: {
149
+ field: SortField.unrecognized,
150
+ defaultSortDirection: null,
151
+ canSetDirection: true,
152
+ shownInSortBar: false,
153
+ shownInURL: false,
154
+ handledBySearchService: true,
155
+ displayName: '',
156
+ urlNames: [],
157
+ },
158
+ // Relevance sort is unique in that it does not produce a URL param when it is set.
159
+ // It is only available when there is a user-specified query that relevancy can be scored against.
160
+ // Therefore, it does not appear as a sort bar option when browsing a collection with no query set.
161
+ [SortField.relevance]: {
162
+ field: SortField.relevance,
163
+ defaultSortDirection: null,
164
+ canSetDirection: false,
165
+ shownInSortBar: true,
166
+ shownInURL: false,
167
+ handledBySearchService: false,
168
+ displayName: 'Relevance',
169
+ urlNames: ['_score'],
170
+ },
171
+ [SortField.alltimeview]: {
172
+ field: SortField.alltimeview,
173
+ defaultSortDirection: 'desc',
174
+ canSetDirection: true,
175
+ shownInSortBar: true,
176
+ shownInURL: true,
177
+ handledBySearchService: true,
178
+ searchServiceKey: 'downloads',
179
+ displayName: 'All-time views',
180
+ urlNames: ['downloads'],
181
+ },
182
+ [SortField.weeklyview]: {
183
+ field: SortField.weeklyview,
184
+ defaultSortDirection: 'desc',
185
+ canSetDirection: true,
186
+ shownInSortBar: true,
187
+ shownInURL: true,
188
+ handledBySearchService: true,
189
+ searchServiceKey: 'week',
190
+ displayName: 'Weekly views',
191
+ urlNames: ['week'],
192
+ },
193
+ [SortField.title]: {
194
+ field: SortField.title,
195
+ defaultSortDirection: 'asc',
196
+ canSetDirection: true,
197
+ shownInSortBar: true,
198
+ shownInURL: true,
199
+ handledBySearchService: true,
200
+ searchServiceKey: 'titleSorter',
201
+ displayName: 'Title',
202
+ urlNames: ['title', 'titleSorter'],
203
+ },
204
+ [SortField.date]: {
205
+ field: SortField.date,
206
+ defaultSortDirection: 'desc',
207
+ canSetDirection: true,
208
+ shownInSortBar: true,
209
+ shownInURL: true,
210
+ handledBySearchService: true,
211
+ searchServiceKey: 'date',
212
+ displayName: 'Date published',
213
+ urlNames: ['date'],
214
+ },
215
+ [SortField.datearchived]: {
216
+ field: SortField.datearchived,
217
+ defaultSortDirection: 'desc',
218
+ canSetDirection: true,
219
+ shownInSortBar: true,
220
+ shownInURL: true,
221
+ handledBySearchService: true,
222
+ searchServiceKey: 'publicdate',
223
+ displayName: 'Date archived',
224
+ urlNames: ['publicdate'],
225
+ },
226
+ [SortField.datereviewed]: {
227
+ field: SortField.datereviewed,
228
+ defaultSortDirection: 'desc',
229
+ canSetDirection: true,
230
+ shownInSortBar: true,
231
+ shownInURL: true,
232
+ handledBySearchService: true,
233
+ searchServiceKey: 'reviewdate',
234
+ displayName: 'Date reviewed',
235
+ urlNames: ['reviewdate'],
236
+ },
237
+ [SortField.dateadded]: {
238
+ field: SortField.dateadded,
239
+ defaultSortDirection: 'desc',
240
+ canSetDirection: true,
241
+ shownInSortBar: true,
242
+ shownInURL: true,
243
+ handledBySearchService: true,
244
+ searchServiceKey: 'addeddate',
245
+ displayName: 'Date added',
246
+ urlNames: ['addeddate'],
247
+ },
248
+ [SortField.datefavorited]: {
249
+ field: SortField.datefavorited,
250
+ defaultSortDirection: 'desc',
251
+ canSetDirection: false,
252
+ shownInSortBar: true,
253
+ shownInURL: false,
254
+ handledBySearchService: false,
255
+ searchServiceKey: 'favoritedate',
256
+ displayName: 'Date favorited',
257
+ urlNames: ['favoritedate'],
258
+ },
259
+ [SortField.creator]: {
260
+ field: SortField.creator,
261
+ defaultSortDirection: 'asc',
262
+ canSetDirection: true,
263
+ shownInSortBar: true,
264
+ shownInURL: true,
265
+ handledBySearchService: true,
266
+ searchServiceKey: 'creatorSorter',
267
+ displayName: 'Creator',
268
+ urlNames: ['creator', 'creatorSorter'],
269
+ },
270
+ };
271
+ /**
272
+ * Returns the SortOption corresponding to the given API sort name, or
273
+ * the "unrecognized" SortOption if none matches.
274
+ */
275
+ export function sortOptionFromAPIString(sortName) {
276
+ var _a;
277
+ return ((_a = Object.values(SORT_OPTIONS).find(opt => opt.urlNames.some(name => sortName === name))) !== null && _a !== void 0 ? _a : SORT_OPTIONS[SortField.unrecognized]);
278
+ }
279
+ export const defaultProfileElementSorts = {
280
+ uploads: SortField.datearchived,
281
+ reviews: SortField.datereviewed,
282
+ collections: SortField.datearchived,
283
+ web_archives: SortField.datearchived,
284
+ };
285
+ /**
286
+ * A map from prefix filter types to the corresponding aggregation keys
287
+ * that are needed to fetch the filter counts from the backend.
288
+ */
289
+ export const prefixFilterAggregationKeys = {
290
+ title: 'firstTitle',
291
+ creator: 'firstCreator',
292
+ };
293
+ export const getDefaultSelectedFacets = () => ({
294
+ subject: {},
295
+ lending: {},
296
+ mediatype: {},
297
+ language: {},
298
+ creator: {},
299
+ collection: {},
300
+ year: {},
301
+ });
302
+ export const facetDisplayOrder = [
303
+ 'mediatype',
304
+ 'lending',
305
+ 'year',
306
+ 'subject',
307
+ 'collection',
308
+ 'creator',
309
+ 'language',
310
+ ];
311
+ export const facetTitles = {
312
+ subject: 'Subject',
313
+ lending: 'Availability',
314
+ mediatype: 'Media Type',
315
+ language: 'Language',
316
+ creator: 'Creator',
317
+ collection: 'Collection',
318
+ year: 'Year',
319
+ };
320
+ /**
321
+ * The default sort type to use for each facet type
322
+ */
323
+ export const defaultFacetSort = {
324
+ subject: AggregationSortType.COUNT,
325
+ lending: AggregationSortType.COUNT,
326
+ mediatype: AggregationSortType.COUNT,
327
+ language: AggregationSortType.COUNT,
328
+ creator: AggregationSortType.COUNT,
329
+ collection: AggregationSortType.COUNT,
330
+ year: AggregationSortType.NUMERIC,
331
+ };
332
+ /**
333
+ * The sort type corresponding to facet bucket values, for each facet type
334
+ * (i.e., the opposite of "sort by count" for that type).
335
+ */
336
+ export const valueFacetSort = {
337
+ subject: AggregationSortType.ALPHABETICAL,
338
+ lending: AggregationSortType.ALPHABETICAL,
339
+ mediatype: AggregationSortType.ALPHABETICAL,
340
+ language: AggregationSortType.ALPHABETICAL,
341
+ creator: AggregationSortType.ALPHABETICAL,
342
+ collection: AggregationSortType.ALPHABETICAL,
343
+ year: AggregationSortType.NUMERIC,
344
+ };
345
+ /**
346
+ * Maps valid lending keys to whether they should be visible in the facet sidebar
347
+ */
348
+ export const lendingFacetKeysVisibility = {
349
+ is_lendable: true,
350
+ is_borrowable: false,
351
+ available_to_borrow: true,
352
+ is_browsable: false,
353
+ available_to_browse: false,
354
+ is_readable: true,
355
+ available_to_waitlist: false,
356
+ };
357
+ /**
358
+ * Maps valid, visible lending keys to their facet sidebar display text
359
+ */
360
+ export const lendingFacetDisplayNames = {
361
+ is_lendable: 'Lending Library',
362
+ available_to_borrow: 'Borrow 14 Days',
363
+ is_readable: 'Always Available',
364
+ };
365
+ /**
366
+ * A record of which admin-only collections should be suppressed from being displayed
367
+ * as facets or in an item's list of collections.
368
+ */
369
+ export const suppressedCollections = {
370
+ deemphasize: true,
371
+ community: true,
372
+ stream_only: true,
373
+ samples_only: true,
374
+ test_collection: true,
375
+ printdisabled: true,
376
+ 'openlibrary-ol': true,
377
+ nationalemergencylibrary: true,
378
+ china: true,
379
+ americana: true,
380
+ toronto: true,
381
+ };
382
382
  //# sourceMappingURL=models.js.map