@internetarchive/collection-browser 2.7.14-alpha-webdev7002.4 → 2.7.14-alpha-webdev7397.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 (509) hide show
  1. package/.github/workflows/ci.yml +3 -3
  2. package/.github/workflows/gh-pages-main.yml +2 -2
  3. package/.github/workflows/pr-preview.yml +2 -2
  4. package/.prettierignore +1 -0
  5. package/dist/index.d.ts +13 -16
  6. package/dist/index.js +11 -16
  7. package/dist/index.js.map +1 -1
  8. package/dist/src/app-root.d.ts +107 -107
  9. package/dist/src/app-root.js +531 -531
  10. package/dist/src/app-root.js.map +1 -1
  11. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  15. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  16. package/dist/src/assets/img/icons/chevron.js +2 -2
  17. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  18. package/dist/src/assets/img/icons/contract.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  22. package/dist/src/assets/img/icons/expand.js +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  25. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  26. package/dist/src/assets/img/icons/eye.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  29. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  30. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  31. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  32. package/dist/src/assets/img/icons/filter.js +2 -2
  33. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  34. package/dist/src/assets/img/icons/login-required.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  59. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  60. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  61. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  62. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  63. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  64. package/dist/src/assets/img/icons/null-result.js +2 -2
  65. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  66. package/dist/src/assets/img/icons/restricted.js +2 -2
  67. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  68. package/dist/src/assets/img/icons/reviews.js +2 -2
  69. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  70. package/dist/src/assets/img/icons/upload.js +2 -2
  71. package/dist/src/assets/img/icons/views.d.ts +1 -1
  72. package/dist/src/assets/img/icons/views.js +2 -2
  73. package/dist/src/circular-activity-indicator.d.ts +5 -5
  74. package/dist/src/circular-activity-indicator.js +17 -17
  75. package/dist/src/circular-activity-indicator.js.map +1 -1
  76. package/dist/src/collection-browser.d.ts +606 -606
  77. package/dist/src/collection-browser.js +1679 -1677
  78. package/dist/src/collection-browser.js.map +1 -1
  79. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  80. package/dist/src/collection-facets/facet-row.js +118 -118
  81. package/dist/src/collection-facets/facet-row.js.map +1 -1
  82. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  83. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  84. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -1
  85. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  86. package/dist/src/collection-facets/facets-template.js +49 -49
  87. package/dist/src/collection-facets/facets-template.js.map +1 -1
  88. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  89. package/dist/src/collection-facets/more-facets-content.js +406 -408
  90. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  91. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  92. package/dist/src/collection-facets/more-facets-pagination.js +197 -196
  93. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -1
  94. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  95. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  96. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -1
  97. package/dist/src/collection-facets/smart-facets/heuristics/{browser-language/browser-language-heuristic.d.ts → browser-language-heuristic.d.ts} +5 -5
  98. package/dist/src/collection-facets/smart-facets/heuristics/{browser-language/browser-language-heuristic.js → browser-language-heuristic.js} +23 -23
  99. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js.map +1 -0
  100. package/dist/src/collection-facets/smart-facets/heuristics/{query-keywords/query-keywords-heuristic.d.ts → query-keywords-heuristic.d.ts} +5 -4
  101. package/dist/src/collection-facets/smart-facets/heuristics/{query-keywords/query-keywords-map.js → query-keywords-heuristic.js} +45 -35
  102. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js.map +1 -0
  103. package/dist/src/collection-facets/smart-facets/heuristics/{wikidata/wikidata-heuristic.d.ts → wikidata-heuristic.d.ts} +5 -4
  104. package/dist/src/collection-facets/smart-facets/heuristics/{wikidata/wikidata-entity-map.js → wikidata-heuristic.js} +173 -133
  105. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js.map +1 -0
  106. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  107. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  108. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  109. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +237 -240
  110. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -1
  111. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  112. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  113. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -1
  114. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  115. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  116. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -1
  117. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  118. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  119. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  120. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -17
  121. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -1
  122. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  123. package/dist/src/collection-facets/toggle-switch.js +94 -94
  124. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  125. package/dist/src/collection-facets.d.ts +103 -103
  126. package/dist/src/collection-facets.js +521 -522
  127. package/dist/src/collection-facets.js.map +1 -1
  128. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -245
  129. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  130. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  131. package/dist/src/data-source/collection-browser-data-source.d.ts +377 -377
  132. package/dist/src/data-source/collection-browser-data-source.js +1003 -1004
  133. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  134. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -44
  135. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  136. package/dist/src/data-source/models.d.ts +28 -28
  137. package/dist/src/data-source/models.js +8 -8
  138. package/dist/src/empty-placeholder.d.ts +23 -23
  139. package/dist/src/empty-placeholder.js +87 -88
  140. package/dist/src/empty-placeholder.js.map +1 -1
  141. package/dist/src/expanded-date-picker.d.ts +43 -43
  142. package/dist/src/expanded-date-picker.js +109 -109
  143. package/dist/src/expanded-date-picker.js.map +1 -1
  144. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  145. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  146. package/dist/src/language-code-handler/language-code-handler.js.map +1 -1
  147. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  148. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  149. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -1
  150. package/dist/src/manage/manage-bar.d.ts +58 -58
  151. package/dist/src/manage/manage-bar.js +175 -175
  152. package/dist/src/manage/manage-bar.js.map +1 -1
  153. package/dist/src/manage/remove-items-modal-content.d.ts +9 -9
  154. package/dist/src/manage/remove-items-modal-content.js +34 -34
  155. package/dist/src/manage/remove-items-modal-content.js.map +1 -1
  156. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  157. package/dist/src/mediatype/mediatype-config.js +92 -91
  158. package/dist/src/mediatype/mediatype-config.js.map +1 -1
  159. package/dist/src/models.d.ts +228 -228
  160. package/dist/src/models.js +401 -401
  161. package/dist/src/models.js.map +1 -1
  162. package/dist/src/restoration-state-handler.d.ts +70 -70
  163. package/dist/src/restoration-state-handler.js +362 -363
  164. package/dist/src/restoration-state-handler.js.map +1 -1
  165. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  166. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  167. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -1
  168. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  169. package/dist/src/sort-filter-bar/alpha-bar.js +136 -136
  170. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  171. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  172. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  173. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  174. package/dist/src/sort-filter-bar/img/list.js +2 -2
  175. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  176. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  177. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  178. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  179. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  180. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  181. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  182. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  183. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  184. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  185. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  186. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -697
  187. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  188. package/dist/src/styles/ia-button.d.ts +2 -2
  189. package/dist/src/styles/ia-button.js +17 -17
  190. package/dist/src/styles/item-image-styles.d.ts +8 -8
  191. package/dist/src/styles/item-image-styles.js +9 -9
  192. package/dist/src/styles/sr-only.d.ts +1 -1
  193. package/dist/src/styles/sr-only.js +2 -2
  194. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  195. package/dist/src/tiles/base-tile-component.js +64 -64
  196. package/dist/src/tiles/base-tile-component.js.map +1 -1
  197. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  198. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  199. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -1
  200. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  201. package/dist/src/tiles/grid/account-tile.js +72 -72
  202. package/dist/src/tiles/grid/account-tile.js.map +1 -1
  203. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  204. package/dist/src/tiles/grid/collection-tile.js +80 -80
  205. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  206. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  207. package/dist/src/tiles/grid/item-tile.js +159 -160
  208. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  209. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  210. package/dist/src/tiles/grid/search-tile.js +51 -51
  211. package/dist/src/tiles/grid/search-tile.js.map +1 -1
  212. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  213. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  214. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  215. package/dist/src/tiles/grid/tile-stats.js +54 -54
  216. package/dist/src/tiles/grid/tile-stats.js.map +1 -1
  217. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  218. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  219. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  220. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  221. package/dist/src/tiles/hover/tile-hover-pane.js +72 -70
  222. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  223. package/dist/src/tiles/image-block.d.ts +18 -18
  224. package/dist/src/tiles/image-block.js +89 -89
  225. package/dist/src/tiles/image-block.js.map +1 -1
  226. package/dist/src/tiles/item-image.d.ts +39 -39
  227. package/dist/src/tiles/item-image.js +154 -154
  228. package/dist/src/tiles/item-image.js.map +1 -1
  229. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  230. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  231. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -1
  232. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  233. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  234. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  235. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  236. package/dist/src/tiles/list/tile-list.js +324 -326
  237. package/dist/src/tiles/list/tile-list.js.map +1 -1
  238. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  239. package/dist/src/tiles/mediatype-icon.js +47 -47
  240. package/dist/src/tiles/mediatype-icon.js.map +1 -1
  241. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  242. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  243. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -1
  244. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  245. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  246. package/dist/src/tiles/overlay/text-overlay.js.map +1 -1
  247. package/dist/src/tiles/review-block.d.ts +12 -12
  248. package/dist/src/tiles/review-block.js +56 -56
  249. package/dist/src/tiles/review-block.js.map +1 -1
  250. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  251. package/dist/src/tiles/text-snippet-block.js +73 -73
  252. package/dist/src/tiles/text-snippet-block.js.map +1 -1
  253. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  254. package/dist/src/tiles/tile-dispatcher.js +230 -230
  255. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  256. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  257. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  258. package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
  259. package/dist/src/utils/analytics-events.d.ts +28 -28
  260. package/dist/src/utils/analytics-events.js +30 -30
  261. package/dist/src/utils/array-equals.d.ts +4 -4
  262. package/dist/src/utils/array-equals.js +10 -10
  263. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  264. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  265. package/dist/src/utils/facet-utils.d.ts +83 -83
  266. package/dist/src/utils/facet-utils.js +145 -145
  267. package/dist/src/utils/facet-utils.js.map +1 -1
  268. package/dist/src/utils/format-count.d.ts +7 -7
  269. package/dist/src/utils/format-count.js +75 -76
  270. package/dist/src/utils/format-count.js.map +1 -1
  271. package/dist/src/utils/format-date.d.ts +2 -2
  272. package/dist/src/utils/format-date.js +27 -27
  273. package/dist/src/utils/format-date.js.map +1 -1
  274. package/dist/src/utils/format-unit-size.d.ts +2 -2
  275. package/dist/src/utils/format-unit-size.js +33 -33
  276. package/dist/src/utils/format-unit-size.js.map +1 -1
  277. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  278. package/dist/src/utils/local-date-from-utc.js +15 -15
  279. package/dist/src/utils/log.d.ts +7 -7
  280. package/dist/src/utils/log.js +13 -15
  281. package/dist/src/utils/log.js.map +1 -1
  282. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  283. package/dist/src/utils/resolve-mediatype.js +23 -23
  284. package/dist/src/utils/resolve-mediatype.js.map +1 -1
  285. package/dist/src/utils/sha1.d.ts +2 -2
  286. package/dist/src/utils/sha1.js +8 -8
  287. package/dist/test/collection-browser.test.d.ts +1 -1
  288. package/dist/test/collection-browser.test.js +1309 -1308
  289. package/dist/test/collection-browser.test.js.map +1 -1
  290. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  291. package/dist/test/collection-facets/facet-row.test.js +230 -227
  292. package/dist/test/collection-facets/facet-row.test.js.map +1 -1
  293. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  294. package/dist/test/collection-facets/facets-template.test.js +91 -91
  295. package/dist/test/collection-facets/facets-template.test.js.map +1 -1
  296. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  297. package/dist/test/collection-facets/more-facets-content.test.js +140 -141
  298. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  299. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  300. package/dist/test/collection-facets/more-facets-pagination.test.js +116 -117
  301. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -1
  302. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  303. package/dist/test/collection-facets/toggle-switch.test.js +82 -73
  304. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -1
  305. package/dist/test/collection-facets.test.d.ts +2 -2
  306. package/dist/test/collection-facets.test.js +692 -692
  307. package/dist/test/collection-facets.test.js.map +1 -1
  308. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  309. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  310. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -1
  311. package/dist/test/empty-placeholder.test.d.ts +1 -1
  312. package/dist/test/empty-placeholder.test.js +62 -63
  313. package/dist/test/empty-placeholder.test.js.map +1 -1
  314. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  315. package/dist/test/expanded-date-picker.test.js +97 -96
  316. package/dist/test/expanded-date-picker.test.js.map +1 -1
  317. package/dist/test/icon-overlay.test.d.ts +1 -1
  318. package/dist/test/icon-overlay.test.js +23 -24
  319. package/dist/test/icon-overlay.test.js.map +1 -1
  320. package/dist/test/image-block.test.d.ts +1 -1
  321. package/dist/test/image-block.test.js +106 -107
  322. package/dist/test/image-block.test.js.map +1 -1
  323. package/dist/test/item-image.test.d.ts +1 -1
  324. package/dist/test/item-image.test.js +84 -85
  325. package/dist/test/item-image.test.js.map +1 -1
  326. package/dist/test/manage/manage-bar.test.d.ts +2 -2
  327. package/dist/test/manage/manage-bar.test.js +100 -101
  328. package/dist/test/manage/manage-bar.test.js.map +1 -1
  329. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -1
  330. package/dist/test/manage/remove-items-modal-content.test.js +44 -45
  331. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -1
  332. package/dist/test/mediatype-config.test.d.ts +1 -1
  333. package/dist/test/mediatype-config.test.js +16 -16
  334. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  335. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  336. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  337. package/dist/test/mocks/mock-search-responses.js +942 -942
  338. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  339. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  340. package/dist/test/mocks/mock-search-service.js +54 -54
  341. package/dist/test/mocks/mock-search-service.js.map +1 -1
  342. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  343. package/dist/test/restoration-state-handler.test.js +270 -270
  344. package/dist/test/restoration-state-handler.test.js.map +1 -1
  345. package/dist/test/review-block.test.d.ts +1 -1
  346. package/dist/test/review-block.test.js +43 -44
  347. package/dist/test/review-block.test.js.map +1 -1
  348. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  349. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  350. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -1
  351. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  352. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  353. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -1
  354. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  355. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +425 -426
  356. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  357. package/dist/test/text-overlay.test.d.ts +1 -1
  358. package/dist/test/text-overlay.test.js +37 -38
  359. package/dist/test/text-overlay.test.js.map +1 -1
  360. package/dist/test/text-snippet-block.test.d.ts +1 -1
  361. package/dist/test/text-snippet-block.test.js +56 -57
  362. package/dist/test/text-snippet-block.test.js.map +1 -1
  363. package/dist/test/tile-stats.test.d.ts +1 -1
  364. package/dist/test/tile-stats.test.js +98 -99
  365. package/dist/test/tile-stats.test.js.map +1 -1
  366. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  367. package/dist/test/tiles/grid/account-tile.test.js +75 -76
  368. package/dist/test/tiles/grid/account-tile.test.js.map +1 -1
  369. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  370. package/dist/test/tiles/grid/collection-tile.test.js +72 -73
  371. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -1
  372. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  373. package/dist/test/tiles/grid/item-tile.test.js +311 -312
  374. package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
  375. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  376. package/dist/test/tiles/grid/search-tile.test.js +50 -51
  377. package/dist/test/tiles/grid/search-tile.test.js.map +1 -1
  378. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  379. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  380. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
  381. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  382. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  383. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  384. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  385. package/dist/test/tiles/list/tile-list-compact.test.js +142 -143
  386. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -1
  387. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  388. package/dist/test/tiles/list/tile-list.test.js +296 -297
  389. package/dist/test/tiles/list/tile-list.test.js.map +1 -1
  390. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  391. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  392. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
  393. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  394. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  395. package/dist/test/utils/array-equals.test.d.ts +1 -1
  396. package/dist/test/utils/array-equals.test.js +26 -26
  397. package/dist/test/utils/format-count.test.d.ts +1 -1
  398. package/dist/test/utils/format-count.test.js +23 -23
  399. package/dist/test/utils/format-count.test.js.map +1 -1
  400. package/dist/test/utils/format-date.test.d.ts +1 -1
  401. package/dist/test/utils/format-date.test.js +30 -30
  402. package/dist/test/utils/format-date.test.js.map +1 -1
  403. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  404. package/dist/test/utils/format-unit-size.test.js +17 -17
  405. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  406. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  407. package/dist/test/utils/local-date-from-utc.test.js.map +1 -1
  408. package/eslint.config.mjs +53 -0
  409. package/index.html +0 -3
  410. package/index.ts +1 -15
  411. package/package.json +41 -39
  412. package/src/app-root.ts +21 -22
  413. package/src/collection-browser.ts +44 -40
  414. package/src/collection-facets/facets-template.ts +7 -6
  415. package/src/collection-facets/more-facets-content.ts +11 -13
  416. package/src/collection-facets/more-facets-pagination.ts +3 -2
  417. package/src/collection-facets/smart-facets/dedupe.ts +2 -2
  418. package/src/collection-facets/smart-facets/heuristics/{browser-language/browser-language-heuristic.ts → browser-language-heuristic.ts} +1 -1
  419. package/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.ts +55 -0
  420. package/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.ts +191 -0
  421. package/src/collection-facets/smart-facets/smart-facet-bar.ts +6 -8
  422. package/src/collection-facets/smart-facets/smart-facet-button.ts +5 -3
  423. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +4 -4
  424. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +8 -13
  425. package/src/collection-facets/toggle-switch.ts +2 -2
  426. package/src/collection-facets.ts +18 -19
  427. package/src/data-source/collection-browser-data-source-interface.ts +5 -1
  428. package/src/data-source/collection-browser-data-source.ts +37 -34
  429. package/src/empty-placeholder.ts +19 -16
  430. package/src/expanded-date-picker.ts +1 -1
  431. package/src/language-code-handler/language-code-handler.ts +1 -1
  432. package/src/manage/manage-bar.ts +23 -20
  433. package/src/manage/remove-items-modal-content.ts +2 -2
  434. package/src/mediatype/mediatype-config.ts +1 -0
  435. package/src/models.ts +3 -3
  436. package/src/restoration-state-handler.ts +14 -15
  437. package/src/sort-filter-bar/alpha-bar.ts +16 -17
  438. package/src/sort-filter-bar/sort-filter-bar.ts +14 -15
  439. package/src/tiles/grid/account-tile.ts +1 -1
  440. package/src/tiles/grid/collection-tile.ts +1 -1
  441. package/src/tiles/grid/item-tile.ts +9 -9
  442. package/src/tiles/grid/tile-stats.ts +4 -4
  443. package/src/tiles/hover/hover-pane-controller.ts +1 -1
  444. package/src/tiles/hover/tile-hover-pane.ts +4 -2
  445. package/src/tiles/item-image.ts +1 -1
  446. package/src/tiles/list/tile-list-compact.ts +2 -2
  447. package/src/tiles/list/tile-list.ts +22 -24
  448. package/src/tiles/tile-dispatcher.ts +5 -5
  449. package/src/tiles/tile-display-value-provider.ts +4 -4
  450. package/src/utils/facet-utils.ts +6 -6
  451. package/src/utils/format-count.ts +2 -3
  452. package/src/utils/format-date.ts +1 -1
  453. package/src/utils/format-unit-size.ts +1 -1
  454. package/src/utils/log.ts +1 -3
  455. package/test/collection-browser.test.ts +125 -124
  456. package/test/collection-facets/facet-row.test.ts +31 -28
  457. package/test/collection-facets/facets-template.test.ts +9 -9
  458. package/test/collection-facets/more-facets-content.test.ts +14 -15
  459. package/test/collection-facets/more-facets-pagination.test.ts +18 -19
  460. package/test/collection-facets/toggle-switch.test.ts +28 -18
  461. package/test/collection-facets.test.ts +46 -39
  462. package/test/data-source/collection-browser-data-source.test.ts +2 -2
  463. package/test/empty-placeholder.test.ts +6 -7
  464. package/test/expanded-date-picker.test.ts +25 -20
  465. package/test/icon-overlay.test.ts +0 -1
  466. package/test/image-block.test.ts +6 -7
  467. package/test/item-image.test.ts +0 -1
  468. package/test/manage/manage-bar.test.ts +19 -16
  469. package/test/manage/remove-items-modal-content.test.ts +4 -5
  470. package/test/mocks/mock-search-responses.ts +2 -1
  471. package/test/mocks/mock-search-service.ts +1 -1
  472. package/test/restoration-state-handler.test.ts +12 -12
  473. package/test/review-block.test.ts +1 -2
  474. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +1 -1
  475. package/test/sort-filter-bar/alpha-bar.test.ts +5 -5
  476. package/test/sort-filter-bar/sort-filter-bar.test.ts +38 -39
  477. package/test/text-overlay.test.ts +0 -1
  478. package/test/text-snippet-block.test.ts +5 -6
  479. package/test/tile-stats.test.ts +26 -35
  480. package/test/tiles/grid/account-tile.test.ts +2 -3
  481. package/test/tiles/grid/collection-tile.test.ts +3 -4
  482. package/test/tiles/grid/item-tile.test.ts +13 -14
  483. package/test/tiles/grid/search-tile.test.ts +1 -2
  484. package/test/tiles/hover/hover-pane-controller.test.ts +15 -15
  485. package/test/tiles/hover/tile-hover-pane.test.ts +5 -5
  486. package/test/tiles/list/tile-list-compact.test.ts +1 -2
  487. package/test/tiles/list/tile-list.test.ts +10 -11
  488. package/test/tiles/tile-dispatcher.test.ts +5 -5
  489. package/test/utils/format-count.test.ts +1 -1
  490. package/test/utils/format-date.test.ts +1 -1
  491. package/test/utils/local-date-from-utc.test.ts +1 -1
  492. package/tsconfig.json +0 -1
  493. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js.map +0 -1
  494. package/dist/src/collection-facets/smart-facets/heuristics/index.d.ts +0 -3
  495. package/dist/src/collection-facets/smart-facets/heuristics/index.js +0 -4
  496. package/dist/src/collection-facets/smart-facets/heuristics/index.js.map +0 -1
  497. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js +0 -14
  498. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js.map +0 -1
  499. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.d.ts +0 -6
  500. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js.map +0 -1
  501. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.d.ts +0 -9
  502. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +0 -1
  503. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +0 -49
  504. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +0 -1
  505. package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  506. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  507. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -36
  508. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -134
  509. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -60
@@ -1,377 +1,377 @@
1
- import type { ReactiveControllerHost } from 'lit';
2
- import { AccountExtraInfo, Aggregation, CollectionExtraInfo, FilterMap, PageElementMap, SearchParams, SearchResponseSessionContext } from '@internetarchive/search-service';
3
- import { type PrefixFilterType, TileModel, PrefixFilterCounts, RequestKind } from '../models';
4
- import { type PageSpecifierParams } from './models';
5
- import type { CollectionBrowserDataSourceInterface } from './collection-browser-data-source-interface';
6
- import type { CollectionBrowserSearchInterface } from './collection-browser-query-state';
7
- export declare class CollectionBrowserDataSource implements CollectionBrowserDataSourceInterface {
8
- /** The host element to which this controller should attach listeners */
9
- private readonly host;
10
- /** Default size of result pages */
11
- private pageSize;
12
- /**
13
- * All pages of tile models that have been fetched so far, indexed by their page
14
- * number (with the first being page 1).
15
- */
16
- private pages;
17
- /**
18
- * Tile offset to apply when looking up tiles in the pages, in order to maintain
19
- * page alignment after tiles are removed.
20
- */
21
- private offset;
22
- /**
23
- * Total number of tile models stored in this data source's pages
24
- */
25
- private numTileModels;
26
- /**
27
- * A set of fetch IDs that are valid for the current query state
28
- */
29
- private fetchesInProgress;
30
- /**
31
- * A record of the query key used for the last search.
32
- * If this changes, we need to load new results.
33
- */
34
- private previousQueryKey;
35
- /**
36
- * Whether the initial page of search results for the current query state
37
- * is presently being fetched.
38
- */
39
- private searchResultsLoading;
40
- /**
41
- * Whether the facets (aggregations) for the current query state are
42
- * presently being fetched.
43
- */
44
- private facetsLoading;
45
- /**
46
- * Whether the facets are actually visible -- if not, then we can delay any facet
47
- * fetches until they become visible.
48
- */
49
- private facetsReadyToLoad;
50
- /**
51
- * Whether further query changes should be ignored and not trigger fetches
52
- */
53
- private suppressFetches;
54
- /**
55
- * @inheritdoc
56
- */
57
- totalResults: number;
58
- /**
59
- * @inheritdoc
60
- */
61
- endOfDataReached: boolean;
62
- /**
63
- * @inheritdoc
64
- */
65
- queryInitialized: boolean;
66
- /**
67
- * @inheritdoc
68
- */
69
- aggregations?: Record<string, Aggregation>;
70
- /**
71
- * @inheritdoc
72
- */
73
- yearHistogramAggregation?: Aggregation;
74
- /**
75
- * @inheritdoc
76
- */
77
- collectionTitles: Map<string, string>;
78
- /**
79
- * @inheritdoc
80
- */
81
- collectionExtraInfo?: CollectionExtraInfo;
82
- /**
83
- * @inheritdoc
84
- */
85
- accountExtraInfo?: AccountExtraInfo;
86
- /**
87
- * @inheritdoc
88
- */
89
- sessionContext?: SearchResponseSessionContext;
90
- /**
91
- * @inheritdoc
92
- */
93
- pageElements?: PageElementMap;
94
- /**
95
- * @inheritdoc
96
- */
97
- parentCollections?: string[];
98
- /**
99
- * @inheritdoc
100
- */
101
- prefixFilterCountMap: Partial<Record<PrefixFilterType, PrefixFilterCounts>>;
102
- /**
103
- * @inheritdoc
104
- */
105
- queryErrorMessage?: string;
106
- /**
107
- * Internal property to store the private value backing the `initialSearchComplete` getter.
108
- */
109
- private _initialSearchCompletePromise;
110
- /**
111
- * @inheritdoc
112
- */
113
- get initialSearchComplete(): Promise<boolean>;
114
- constructor(
115
- /** The host element to which this controller should attach listeners */
116
- host: ReactiveControllerHost & CollectionBrowserSearchInterface,
117
- /** Default size of result pages */
118
- pageSize?: number);
119
- hostConnected(): void;
120
- hostUpdate(): void;
121
- /**
122
- * Returns whether this data source is the one currently installed on the host component.
123
- */
124
- private get activeOnHost();
125
- /**
126
- * @inheritdoc
127
- */
128
- get size(): number;
129
- /**
130
- * @inheritdoc
131
- */
132
- reset(): void;
133
- /**
134
- * @inheritdoc
135
- */
136
- resetPages(): void;
137
- /**
138
- * @inheritdoc
139
- */
140
- addPage(pageNum: number, pageTiles: TileModel[]): void;
141
- /**
142
- * @inheritdoc
143
- */
144
- addMultiplePages(firstPageNum: number, tiles: TileModel[]): void;
145
- /**
146
- * @inheritdoc
147
- */
148
- getPage(pageNum: number): TileModel[];
149
- /**
150
- * @inheritdoc
151
- */
152
- getAllPages(): Record<string, TileModel[]>;
153
- /**
154
- * @inheritdoc
155
- */
156
- hasPage(pageNum: number): boolean;
157
- /**
158
- * @inheritdoc
159
- */
160
- getTileModelAt(index: number): TileModel | undefined;
161
- /**
162
- * @inheritdoc
163
- */
164
- indexOf(tile: TileModel): number;
165
- /**
166
- * @inheritdoc
167
- */
168
- getPageSize(): number;
169
- /**
170
- * @inheritdoc
171
- */
172
- setPageSize(pageSize: number): void;
173
- /**
174
- * @inheritdoc
175
- */
176
- setTotalResultCount(count: number): void;
177
- /**
178
- * @inheritdoc
179
- */
180
- setFetchesSuppressed(suppressed: boolean): void;
181
- /**
182
- * @inheritdoc
183
- */
184
- handleQueryChange(): Promise<void>;
185
- /**
186
- * @inheritdoc
187
- */
188
- handleFacetReadinessChange(ready: boolean): Promise<void>;
189
- /**
190
- * Whether the data source & its host are in a state where a facet request should be fired.
191
- * (i.e., they aren't suppressed or already loading, etc.)
192
- */
193
- private get canFetchFacets();
194
- /**
195
- * @inheritdoc
196
- */
197
- map(callback: (model: TileModel, index: number, array: TileModel[]) => TileModel): void;
198
- /**
199
- * @inheritdoc
200
- */
201
- checkAllTiles: () => void;
202
- /**
203
- * @inheritdoc
204
- */
205
- uncheckAllTiles: () => void;
206
- /**
207
- * @inheritdoc
208
- */
209
- removeCheckedTiles: () => void;
210
- /**
211
- * @inheritdoc
212
- */
213
- get checkedTileModels(): TileModel[];
214
- /**
215
- * @inheritdoc
216
- */
217
- get uncheckedTileModels(): TileModel[];
218
- /**
219
- * Returns a flattened, filtered array of all the tile models in the data source
220
- * for which the given predicate returns a truthy value.
221
- *
222
- * @param predicate A callback function to apply on each tile model, as with Array.filter
223
- * @returns A filtered array of tile models satisfying the predicate
224
- */
225
- private getFilteredTileModels;
226
- /**
227
- * @inheritdoc
228
- */
229
- get canPerformSearch(): boolean;
230
- /**
231
- * Sets the state for whether the initial set of search results for the
232
- * current query is loading
233
- */
234
- private setSearchResultsLoading;
235
- /**
236
- * Sets the state for whether the facets for a query is loading
237
- */
238
- private setFacetsLoading;
239
- /**
240
- * Requests that the host perform an update, provided this data
241
- * source is actively installed on it.
242
- */
243
- private requestHostUpdate;
244
- /**
245
- * Requests that the host refresh its visible tiles, provided this
246
- * data source is actively installed on it.
247
- */
248
- private refreshVisibleResults;
249
- /**
250
- * The query key is a string that uniquely identifies the current search.
251
- * It consists of:
252
- * - The current base query
253
- * - The current collection/profile target & page element
254
- * - The current search type
255
- * - Any currently-applied facets
256
- * - Any currently-applied date range
257
- * - Any currently-applied prefix filters
258
- * - The current sort options
259
- *
260
- * This lets us internally keep track of queries so we don't persist data that's
261
- * no longer relevant. Not meant to be human-readable.
262
- */
263
- get pageFetchQueryKey(): string;
264
- /**
265
- * Similar to `pageFetchQueryKey` above, but excludes sort fields since they
266
- * are not relevant in determining aggregation queries.
267
- */
268
- get facetFetchQueryKey(): string;
269
- /**
270
- * Constructs a search service FilterMap object from the combination of
271
- * all the currently-applied filters. This includes any facets, letter
272
- * filters, and date range.
273
- */
274
- get filterMap(): FilterMap;
275
- /**
276
- * Produces a compact unique ID for a search request that can help with debugging
277
- * on the backend by making related requests easier to trace through different services.
278
- * (e.g., tying the hits/aggregations requests for the same page back to a single hash).
279
- *
280
- * @param params The search service parameters for the request
281
- * @param kind The kind of request (hits-only, aggregations-only, or both)
282
- * @returns A Promise resolving to the uid to apply to the request
283
- */
284
- requestUID(params: SearchParams, kind: RequestKind): Promise<string>;
285
- /**
286
- * @inheritdoc
287
- */
288
- get pageSpecifierParams(): PageSpecifierParams | null;
289
- /**
290
- * The full query, including year facets and date range clauses
291
- */
292
- private get fullQuery();
293
- /**
294
- * Generates a query string representing the current set of applied facets
295
- *
296
- * Example: `mediatype:("collection" OR "audio" OR -"etree") AND year:("2000" OR "2001")`
297
- */
298
- private get facetQuery();
299
- private get dateRangeQueryClause();
300
- private get sortFilterQueries();
301
- /**
302
- * Returns a query clause identifying the currently selected title filter,
303
- * e.g., `firstTitle:X`.
304
- */
305
- private get titleQuery();
306
- /**
307
- * Returns a query clause identifying the currently selected creator filter,
308
- * e.g., `firstCreator:X`.
309
- */
310
- private get creatorQuery();
311
- /**
312
- * Builds an OR-joined facet clause for the given facet name and values.
313
- *
314
- * E.g., for name `subject` and values
315
- * `{ foo: { state: 'selected' }, bar: { state: 'hidden' } }`
316
- * this will produce the clause
317
- * `subject:("foo" OR -"bar")`.
318
- *
319
- * @param facetName The facet type (e.g., 'collection')
320
- * @param facetValues The facet buckets, mapped by their keys
321
- */
322
- private buildFacetClause;
323
- /**
324
- * Handles some special pre-request normalization steps for certain facet types
325
- * that require them.
326
- *
327
- * @param facetName The name of the facet type (e.g., 'language')
328
- * @param facetValues An array of values for that facet type
329
- */
330
- private prepareFacetForFetch;
331
- /**
332
- * Takes an array of facet clauses, and combines them into a
333
- * full AND-joined facet query string. Empty clauses are ignored.
334
- */
335
- private joinFacetClauses;
336
- /**
337
- * Fires a backend request to fetch a set of aggregations (representing UI facets) for
338
- * the current search state.
339
- */
340
- private fetchFacets;
341
- /**
342
- * Performs the initial page fetch(es) for the current search state.
343
- */
344
- private doInitialPageFetch;
345
- /**
346
- * Fetches one or more pages of results and updates the data source.
347
- *
348
- * @param pageNumber The page number to fetch
349
- * @param numInitialPages If this is an initial page fetch (`pageNumber = 1`),
350
- * specifies how many pages to batch together in one request. Ignored
351
- * if `pageNumber != 1`, defaulting to a single page.
352
- */
353
- fetchPage(pageNumber: number, numInitialPages?: number): Promise<void>;
354
- /**
355
- * Update the datasource from the fetch response
356
- *
357
- * @param pageNumber
358
- * @param results
359
- */
360
- private addFetchedResultsToDataSource;
361
- /**
362
- * Fetches the aggregation buckets for the given prefix filter type.
363
- */
364
- private fetchPrefixFilterBuckets;
365
- /**
366
- * Fetches and caches the prefix filter counts for the given filter type.
367
- */
368
- updatePrefixFilterCounts(filterType: PrefixFilterType): Promise<void>;
369
- /**
370
- * @inheritdoc
371
- */
372
- updatePrefixFiltersForCurrentSort(): Promise<void>;
373
- /**
374
- * @inheritdoc
375
- */
376
- refreshLetterCounts(): void;
377
- }
1
+ import type { ReactiveControllerHost } from 'lit';
2
+ import { AccountExtraInfo, Aggregation, CollectionExtraInfo, FilterMap, PageElementMap, SearchParams, SearchResponseSessionContext } from '@internetarchive/search-service';
3
+ import { type PrefixFilterType, TileModel, PrefixFilterCounts, RequestKind } from '../models';
4
+ import { type PageSpecifierParams } from './models';
5
+ import type { CollectionBrowserDataSourceInterface } from './collection-browser-data-source-interface';
6
+ import type { CollectionBrowserSearchInterface } from './collection-browser-query-state';
7
+ export declare class CollectionBrowserDataSource implements CollectionBrowserDataSourceInterface {
8
+ /** The host element to which this controller should attach listeners */
9
+ private readonly host;
10
+ /** Default size of result pages */
11
+ private pageSize;
12
+ /**
13
+ * All pages of tile models that have been fetched so far, indexed by their page
14
+ * number (with the first being page 1).
15
+ */
16
+ private pages;
17
+ /**
18
+ * Tile offset to apply when looking up tiles in the pages, in order to maintain
19
+ * page alignment after tiles are removed.
20
+ */
21
+ private offset;
22
+ /**
23
+ * Total number of tile models stored in this data source's pages
24
+ */
25
+ private numTileModels;
26
+ /**
27
+ * A set of fetch IDs that are valid for the current query state
28
+ */
29
+ private fetchesInProgress;
30
+ /**
31
+ * A record of the query key used for the last search.
32
+ * If this changes, we need to load new results.
33
+ */
34
+ private previousQueryKey;
35
+ /**
36
+ * Whether the initial page of search results for the current query state
37
+ * is presently being fetched.
38
+ */
39
+ private searchResultsLoading;
40
+ /**
41
+ * Whether the facets (aggregations) for the current query state are
42
+ * presently being fetched.
43
+ */
44
+ private facetsLoading;
45
+ /**
46
+ * Whether the facets are actually visible -- if not, then we can delay any facet
47
+ * fetches until they become visible.
48
+ */
49
+ private facetsReadyToLoad;
50
+ /**
51
+ * Whether further query changes should be ignored and not trigger fetches
52
+ */
53
+ private suppressFetches;
54
+ /**
55
+ * @inheritdoc
56
+ */
57
+ totalResults: number;
58
+ /**
59
+ * @inheritdoc
60
+ */
61
+ endOfDataReached: boolean;
62
+ /**
63
+ * @inheritdoc
64
+ */
65
+ queryInitialized: boolean;
66
+ /**
67
+ * @inheritdoc
68
+ */
69
+ aggregations?: Record<string, Aggregation>;
70
+ /**
71
+ * @inheritdoc
72
+ */
73
+ yearHistogramAggregation?: Aggregation;
74
+ /**
75
+ * @inheritdoc
76
+ */
77
+ collectionTitles: Map<string, string>;
78
+ /**
79
+ * @inheritdoc
80
+ */
81
+ collectionExtraInfo?: CollectionExtraInfo;
82
+ /**
83
+ * @inheritdoc
84
+ */
85
+ accountExtraInfo?: AccountExtraInfo;
86
+ /**
87
+ * @inheritdoc
88
+ */
89
+ sessionContext?: SearchResponseSessionContext;
90
+ /**
91
+ * @inheritdoc
92
+ */
93
+ pageElements?: PageElementMap;
94
+ /**
95
+ * @inheritdoc
96
+ */
97
+ parentCollections?: string[];
98
+ /**
99
+ * @inheritdoc
100
+ */
101
+ prefixFilterCountMap: Partial<Record<PrefixFilterType, PrefixFilterCounts>>;
102
+ /**
103
+ * @inheritdoc
104
+ */
105
+ queryErrorMessage?: string;
106
+ /**
107
+ * Internal property to store the private value backing the `initialSearchComplete` getter.
108
+ */
109
+ private _initialSearchCompletePromise;
110
+ /**
111
+ * @inheritdoc
112
+ */
113
+ get initialSearchComplete(): Promise<boolean>;
114
+ constructor(
115
+ /** The host element to which this controller should attach listeners */
116
+ host: ReactiveControllerHost & CollectionBrowserSearchInterface,
117
+ /** Default size of result pages */
118
+ pageSize?: number);
119
+ hostConnected(): void;
120
+ hostUpdate(): void;
121
+ /**
122
+ * Returns whether this data source is the one currently installed on the host component.
123
+ */
124
+ private get activeOnHost();
125
+ /**
126
+ * @inheritdoc
127
+ */
128
+ get size(): number;
129
+ /**
130
+ * @inheritdoc
131
+ */
132
+ reset(): void;
133
+ /**
134
+ * @inheritdoc
135
+ */
136
+ resetPages(): void;
137
+ /**
138
+ * @inheritdoc
139
+ */
140
+ addPage(pageNum: number, pageTiles: TileModel[]): void;
141
+ /**
142
+ * @inheritdoc
143
+ */
144
+ addMultiplePages(firstPageNum: number, tiles: TileModel[]): void;
145
+ /**
146
+ * @inheritdoc
147
+ */
148
+ getPage(pageNum: number): TileModel[];
149
+ /**
150
+ * @inheritdoc
151
+ */
152
+ getAllPages(): Record<string, TileModel[]>;
153
+ /**
154
+ * @inheritdoc
155
+ */
156
+ hasPage(pageNum: number): boolean;
157
+ /**
158
+ * @inheritdoc
159
+ */
160
+ getTileModelAt(index: number): TileModel | undefined;
161
+ /**
162
+ * @inheritdoc
163
+ */
164
+ indexOf(tile: TileModel): number;
165
+ /**
166
+ * @inheritdoc
167
+ */
168
+ getPageSize(): number;
169
+ /**
170
+ * @inheritdoc
171
+ */
172
+ setPageSize(pageSize: number): void;
173
+ /**
174
+ * @inheritdoc
175
+ */
176
+ setTotalResultCount(count: number): void;
177
+ /**
178
+ * @inheritdoc
179
+ */
180
+ setFetchesSuppressed(suppressed: boolean): void;
181
+ /**
182
+ * @inheritdoc
183
+ */
184
+ handleQueryChange(): Promise<void>;
185
+ /**
186
+ * @inheritdoc
187
+ */
188
+ handleFacetReadinessChange(ready: boolean): Promise<void>;
189
+ /**
190
+ * Whether the data source & its host are in a state where a facet request should be fired.
191
+ * (i.e., they aren't suppressed or already loading, etc.)
192
+ */
193
+ private get canFetchFacets();
194
+ /**
195
+ * @inheritdoc
196
+ */
197
+ map(callback: (model: TileModel, index: number, array: TileModel[]) => TileModel): void;
198
+ /**
199
+ * @inheritdoc
200
+ */
201
+ checkAllTiles: () => void;
202
+ /**
203
+ * @inheritdoc
204
+ */
205
+ uncheckAllTiles: () => void;
206
+ /**
207
+ * @inheritdoc
208
+ */
209
+ removeCheckedTiles: () => void;
210
+ /**
211
+ * @inheritdoc
212
+ */
213
+ get checkedTileModels(): TileModel[];
214
+ /**
215
+ * @inheritdoc
216
+ */
217
+ get uncheckedTileModels(): TileModel[];
218
+ /**
219
+ * Returns a flattened, filtered array of all the tile models in the data source
220
+ * for which the given predicate returns a truthy value.
221
+ *
222
+ * @param predicate A callback function to apply on each tile model, as with Array.filter
223
+ * @returns A filtered array of tile models satisfying the predicate
224
+ */
225
+ private getFilteredTileModels;
226
+ /**
227
+ * @inheritdoc
228
+ */
229
+ get canPerformSearch(): boolean;
230
+ /**
231
+ * Sets the state for whether the initial set of search results for the
232
+ * current query is loading
233
+ */
234
+ private setSearchResultsLoading;
235
+ /**
236
+ * Sets the state for whether the facets for a query is loading
237
+ */
238
+ private setFacetsLoading;
239
+ /**
240
+ * Requests that the host perform an update, provided this data
241
+ * source is actively installed on it.
242
+ */
243
+ private requestHostUpdate;
244
+ /**
245
+ * Requests that the host refresh its visible tiles, provided this
246
+ * data source is actively installed on it.
247
+ */
248
+ private refreshVisibleResults;
249
+ /**
250
+ * The query key is a string that uniquely identifies the current search.
251
+ * It consists of:
252
+ * - The current base query
253
+ * - The current collection/profile target & page element
254
+ * - The current search type
255
+ * - Any currently-applied facets
256
+ * - Any currently-applied date range
257
+ * - Any currently-applied prefix filters
258
+ * - The current sort options
259
+ *
260
+ * This lets us internally keep track of queries so we don't persist data that's
261
+ * no longer relevant. Not meant to be human-readable.
262
+ */
263
+ get pageFetchQueryKey(): string;
264
+ /**
265
+ * Similar to `pageFetchQueryKey` above, but excludes sort fields since they
266
+ * are not relevant in determining aggregation queries.
267
+ */
268
+ get facetFetchQueryKey(): string;
269
+ /**
270
+ * Constructs a search service FilterMap object from the combination of
271
+ * all the currently-applied filters. This includes any facets, letter
272
+ * filters, and date range.
273
+ */
274
+ get filterMap(): FilterMap;
275
+ /**
276
+ * Produces a compact unique ID for a search request that can help with debugging
277
+ * on the backend by making related requests easier to trace through different services.
278
+ * (e.g., tying the hits/aggregations requests for the same page back to a single hash).
279
+ *
280
+ * @param params The search service parameters for the request
281
+ * @param kind The kind of request (hits-only, aggregations-only, or both)
282
+ * @returns A Promise resolving to the uid to apply to the request
283
+ */
284
+ requestUID(params: SearchParams, kind: RequestKind): Promise<string>;
285
+ /**
286
+ * @inheritdoc
287
+ */
288
+ get pageSpecifierParams(): PageSpecifierParams | null;
289
+ /**
290
+ * The full query, including year facets and date range clauses
291
+ */
292
+ private get fullQuery();
293
+ /**
294
+ * Generates a query string representing the current set of applied facets
295
+ *
296
+ * Example: `mediatype:("collection" OR "audio" OR -"etree") AND year:("2000" OR "2001")`
297
+ */
298
+ private get facetQuery();
299
+ private get dateRangeQueryClause();
300
+ private get sortFilterQueries();
301
+ /**
302
+ * Returns a query clause identifying the currently selected title filter,
303
+ * e.g., `firstTitle:X`.
304
+ */
305
+ private get titleQuery();
306
+ /**
307
+ * Returns a query clause identifying the currently selected creator filter,
308
+ * e.g., `firstCreator:X`.
309
+ */
310
+ private get creatorQuery();
311
+ /**
312
+ * Builds an OR-joined facet clause for the given facet name and values.
313
+ *
314
+ * E.g., for name `subject` and values
315
+ * `{ foo: { state: 'selected' }, bar: { state: 'hidden' } }`
316
+ * this will produce the clause
317
+ * `subject:("foo" OR -"bar")`.
318
+ *
319
+ * @param facetName The facet type (e.g., 'collection')
320
+ * @param facetValues The facet buckets, mapped by their keys
321
+ */
322
+ private buildFacetClause;
323
+ /**
324
+ * Handles some special pre-request normalization steps for certain facet types
325
+ * that require them.
326
+ *
327
+ * @param facetName The name of the facet type (e.g., 'language')
328
+ * @param facetValues An array of values for that facet type
329
+ */
330
+ private prepareFacetForFetch;
331
+ /**
332
+ * Takes an array of facet clauses, and combines them into a
333
+ * full AND-joined facet query string. Empty clauses are ignored.
334
+ */
335
+ private joinFacetClauses;
336
+ /**
337
+ * Fires a backend request to fetch a set of aggregations (representing UI facets) for
338
+ * the current search state.
339
+ */
340
+ private fetchFacets;
341
+ /**
342
+ * Performs the initial page fetch(es) for the current search state.
343
+ */
344
+ private doInitialPageFetch;
345
+ /**
346
+ * Fetches one or more pages of results and updates the data source.
347
+ *
348
+ * @param pageNumber The page number to fetch
349
+ * @param numInitialPages If this is an initial page fetch (`pageNumber = 1`),
350
+ * specifies how many pages to batch together in one request. Ignored
351
+ * if `pageNumber != 1`, defaulting to a single page.
352
+ */
353
+ fetchPage(pageNumber: number, numInitialPages?: number): Promise<void>;
354
+ /**
355
+ * Update the datasource from the fetch response
356
+ *
357
+ * @param pageNumber
358
+ * @param results
359
+ */
360
+ private addFetchedResultsToDataSource;
361
+ /**
362
+ * Fetches the aggregation buckets for the given prefix filter type.
363
+ */
364
+ private fetchPrefixFilterBuckets;
365
+ /**
366
+ * Fetches and caches the prefix filter counts for the given filter type.
367
+ */
368
+ updatePrefixFilterCounts(filterType: PrefixFilterType): Promise<void>;
369
+ /**
370
+ * @inheritdoc
371
+ */
372
+ updatePrefixFiltersForCurrentSort(): Promise<void>;
373
+ /**
374
+ * @inheritdoc
375
+ */
376
+ refreshLetterCounts(): void;
377
+ }