@internetarchive/collection-browser 2.7.12-alpha-webdev7322.4 → 2.7.12-alpha-webdev7262.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 (320) 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 +13 -13
  6. package/dist/index.js +13 -13
  7. package/dist/src/app-root.d.ts +107 -107
  8. package/dist/src/app-root.js +531 -531
  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/filter.d.ts +2 -2
  30. package/dist/src/assets/img/icons/filter.js +2 -2
  31. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  32. package/dist/src/assets/img/icons/login-required.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  59. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  60. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  61. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  62. package/dist/src/assets/img/icons/null-result.js +2 -2
  63. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  64. package/dist/src/assets/img/icons/restricted.js +2 -2
  65. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  66. package/dist/src/assets/img/icons/reviews.js +2 -2
  67. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  68. package/dist/src/assets/img/icons/upload.js +2 -2
  69. package/dist/src/assets/img/icons/views.d.ts +1 -1
  70. package/dist/src/assets/img/icons/views.js +2 -2
  71. package/dist/src/circular-activity-indicator.d.ts +5 -5
  72. package/dist/src/circular-activity-indicator.js +17 -17
  73. package/dist/src/collection-browser.d.ts +606 -606
  74. package/dist/src/collection-browser.js +1679 -1677
  75. package/dist/src/collection-browser.js.map +1 -1
  76. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  77. package/dist/src/collection-facets/facet-row.js +118 -118
  78. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  79. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  80. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  81. package/dist/src/collection-facets/facets-template.js +44 -44
  82. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  83. package/dist/src/collection-facets/more-facets-content.js +407 -407
  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/smart-facets/dedupe.d.ts +10 -10
  87. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  88. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  89. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  90. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  91. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  92. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  93. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  94. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  95. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  96. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  97. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
  98. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  99. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  100. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  101. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  102. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  103. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  104. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  105. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  106. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  107. package/dist/src/collection-facets/toggle-switch.js +94 -94
  108. package/dist/src/collection-facets.d.ts +103 -103
  109. package/dist/src/collection-facets.js +522 -522
  110. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -245
  111. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  112. package/dist/src/data-source/collection-browser-data-source.d.ts +377 -377
  113. package/dist/src/data-source/collection-browser-data-source.js +1011 -1001
  114. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  115. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -44
  116. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  117. package/dist/src/data-source/models.d.ts +28 -28
  118. package/dist/src/data-source/models.js +8 -8
  119. package/dist/src/empty-placeholder.d.ts +23 -23
  120. package/dist/src/empty-placeholder.js +79 -79
  121. package/dist/src/expanded-date-picker.d.ts +43 -43
  122. package/dist/src/expanded-date-picker.js +109 -109
  123. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  124. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  125. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  126. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  127. package/dist/src/manage/manage-bar.d.ts +58 -58
  128. package/dist/src/manage/manage-bar.js +159 -159
  129. package/dist/src/manage/remove-items-modal-content.d.ts +9 -9
  130. package/dist/src/manage/remove-items-modal-content.js +34 -34
  131. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  132. package/dist/src/mediatype/mediatype-config.js +91 -91
  133. package/dist/src/models.d.ts +228 -228
  134. package/dist/src/models.js +401 -401
  135. package/dist/src/restoration-state-handler.d.ts +70 -70
  136. package/dist/src/restoration-state-handler.js +363 -363
  137. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  138. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  139. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  140. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  141. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  142. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  143. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  144. package/dist/src/sort-filter-bar/img/list.js +2 -2
  145. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  146. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  147. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  148. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  149. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  150. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  151. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  152. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  153. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  154. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  155. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  156. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
  157. package/dist/src/styles/ia-button.d.ts +2 -2
  158. package/dist/src/styles/ia-button.js +17 -17
  159. package/dist/src/styles/item-image-styles.d.ts +8 -8
  160. package/dist/src/styles/item-image-styles.js +9 -9
  161. package/dist/src/styles/sr-only.d.ts +1 -1
  162. package/dist/src/styles/sr-only.js +2 -2
  163. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  164. package/dist/src/tiles/base-tile-component.js +64 -64
  165. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  166. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  167. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  168. package/dist/src/tiles/grid/account-tile.js +72 -72
  169. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  170. package/dist/src/tiles/grid/collection-tile.js +80 -80
  171. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  172. package/dist/src/tiles/grid/item-tile.js +158 -158
  173. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  174. package/dist/src/tiles/grid/search-tile.js +51 -51
  175. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  176. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  177. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  178. package/dist/src/tiles/grid/tile-stats.js +53 -53
  179. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  180. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  181. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  182. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  183. package/dist/src/tiles/image-block.d.ts +18 -18
  184. package/dist/src/tiles/image-block.js +89 -89
  185. package/dist/src/tiles/item-image.d.ts +39 -39
  186. package/dist/src/tiles/item-image.js +154 -154
  187. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  188. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  189. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  190. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  191. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  192. package/dist/src/tiles/list/tile-list.js +323 -323
  193. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  194. package/dist/src/tiles/mediatype-icon.js +47 -47
  195. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  196. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  197. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  198. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  199. package/dist/src/tiles/review-block.d.ts +12 -12
  200. package/dist/src/tiles/review-block.js +56 -56
  201. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  202. package/dist/src/tiles/text-snippet-block.js +73 -73
  203. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  204. package/dist/src/tiles/tile-dispatcher.js +230 -230
  205. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  206. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  207. package/dist/src/utils/analytics-events.d.ts +28 -28
  208. package/dist/src/utils/analytics-events.js +30 -30
  209. package/dist/src/utils/array-equals.d.ts +4 -4
  210. package/dist/src/utils/array-equals.js +10 -10
  211. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  212. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  213. package/dist/src/utils/facet-utils.d.ts +83 -83
  214. package/dist/src/utils/facet-utils.js +145 -145
  215. package/dist/src/utils/format-count.d.ts +7 -7
  216. package/dist/src/utils/format-count.js +76 -76
  217. package/dist/src/utils/format-date.d.ts +2 -2
  218. package/dist/src/utils/format-date.js +27 -27
  219. package/dist/src/utils/format-unit-size.d.ts +2 -2
  220. package/dist/src/utils/format-unit-size.js +33 -33
  221. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  222. package/dist/src/utils/local-date-from-utc.js +15 -15
  223. package/dist/src/utils/log.d.ts +7 -7
  224. package/dist/src/utils/log.js +15 -15
  225. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  226. package/dist/src/utils/resolve-mediatype.js +23 -23
  227. package/dist/src/utils/sha1.d.ts +2 -2
  228. package/dist/src/utils/sha1.js +8 -8
  229. package/dist/test/collection-browser.test.d.ts +1 -1
  230. package/dist/test/collection-browser.test.js +1308 -1308
  231. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  232. package/dist/test/collection-facets/facet-row.test.js +227 -227
  233. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  234. package/dist/test/collection-facets/facets-template.test.js +91 -91
  235. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  236. package/dist/test/collection-facets/more-facets-content.test.js +141 -141
  237. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  238. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  239. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  240. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  241. package/dist/test/collection-facets.test.d.ts +2 -2
  242. package/dist/test/collection-facets.test.js +690 -690
  243. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  244. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  245. package/dist/test/empty-placeholder.test.d.ts +1 -1
  246. package/dist/test/empty-placeholder.test.js +63 -63
  247. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  248. package/dist/test/expanded-date-picker.test.js +95 -95
  249. package/dist/test/icon-overlay.test.d.ts +1 -1
  250. package/dist/test/icon-overlay.test.js +24 -24
  251. package/dist/test/image-block.test.d.ts +1 -1
  252. package/dist/test/image-block.test.js +107 -107
  253. package/dist/test/item-image.test.d.ts +1 -1
  254. package/dist/test/item-image.test.js +85 -85
  255. package/dist/test/manage/manage-bar.test.d.ts +2 -2
  256. package/dist/test/manage/manage-bar.test.js +100 -100
  257. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -1
  258. package/dist/test/manage/remove-items-modal-content.test.js +45 -45
  259. package/dist/test/mediatype-config.test.d.ts +1 -1
  260. package/dist/test/mediatype-config.test.js +16 -16
  261. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  262. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  263. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  264. package/dist/test/mocks/mock-search-responses.js +942 -942
  265. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  266. package/dist/test/mocks/mock-search-service.js +54 -54
  267. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  268. package/dist/test/restoration-state-handler.test.js +270 -270
  269. package/dist/test/review-block.test.d.ts +1 -1
  270. package/dist/test/review-block.test.js +44 -44
  271. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  272. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  273. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  274. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  275. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  276. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  277. package/dist/test/text-overlay.test.d.ts +1 -1
  278. package/dist/test/text-overlay.test.js +38 -38
  279. package/dist/test/text-snippet-block.test.d.ts +1 -1
  280. package/dist/test/text-snippet-block.test.js +57 -57
  281. package/dist/test/tile-stats.test.d.ts +1 -1
  282. package/dist/test/tile-stats.test.js +81 -81
  283. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  284. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  285. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  286. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  287. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  288. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  289. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  290. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  291. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  292. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  293. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  294. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  295. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  296. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  297. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  298. package/dist/test/tiles/list/tile-list.test.js +297 -297
  299. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  300. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  301. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  302. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  303. package/dist/test/utils/array-equals.test.d.ts +1 -1
  304. package/dist/test/utils/array-equals.test.js +26 -26
  305. package/dist/test/utils/format-count.test.d.ts +1 -1
  306. package/dist/test/utils/format-count.test.js +23 -23
  307. package/dist/test/utils/format-date.test.d.ts +1 -1
  308. package/dist/test/utils/format-date.test.js +30 -30
  309. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  310. package/dist/test/utils/format-unit-size.test.js +17 -17
  311. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  312. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  313. package/local.archive.org.cert +86 -86
  314. package/local.archive.org.key +27 -27
  315. package/package.json +3 -3
  316. package/renovate.json +6 -6
  317. package/src/collection-browser.ts +2 -0
  318. package/src/data-source/collection-browser-data-source.ts +12 -1
  319. package/web-dev-server.config.mjs +30 -30
  320. package/web-test-runner.config.mjs +41 -41
@@ -1,45 +1,45 @@
1
- // If the query contains X word but Y facet isn't selected, recommend facet Y
2
- export class QueryKeywordsHeuristic {
3
- async getRecommendedFacets(query) {
4
- const recommendations = [];
5
- for (const [keyword, facets] of Object.entries(QueryKeywordsHeuristic.KEYWORDS)) {
6
- if (query.includes(keyword)) {
7
- recommendations.push(...facets);
8
- }
9
- }
10
- return recommendations;
11
- }
12
- }
13
- QueryKeywordsHeuristic.KEYWORDS = {
14
- text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
15
- book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
16
- pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
17
- epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
18
- audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
19
- song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
20
- music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
21
- listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
22
- podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
23
- radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
24
- stream: [
25
- { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },
26
- { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },
27
- ],
28
- video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
29
- movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
30
- film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
31
- image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
32
- photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
33
- picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
34
- software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
35
- app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
36
- program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
37
- game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
38
- etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
39
- concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
40
- 'live music': [
41
- { facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] },
42
- ],
43
- dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],
44
- };
1
+ // If the query contains X word but Y facet isn't selected, recommend facet Y
2
+ export class QueryKeywordsHeuristic {
3
+ async getRecommendedFacets(query) {
4
+ const recommendations = [];
5
+ for (const [keyword, facets] of Object.entries(QueryKeywordsHeuristic.KEYWORDS)) {
6
+ if (query.includes(keyword)) {
7
+ recommendations.push(...facets);
8
+ }
9
+ }
10
+ return recommendations;
11
+ }
12
+ }
13
+ QueryKeywordsHeuristic.KEYWORDS = {
14
+ text: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
15
+ book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
16
+ pdf: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
17
+ epub: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
18
+ audio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
19
+ song: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
20
+ music: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
21
+ listen: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
22
+ podcast: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
23
+ radio: [{ facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] }],
24
+ stream: [
25
+ { facets: [{ facetType: 'mediatype', bucketKey: 'audio' }] },
26
+ { facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] },
27
+ ],
28
+ video: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
29
+ movie: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
30
+ film: [{ facets: [{ facetType: 'mediatype', bucketKey: 'movies' }] }],
31
+ image: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
32
+ photo: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
33
+ picture: [{ facets: [{ facetType: 'mediatype', bucketKey: 'image' }] }],
34
+ software: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
35
+ app: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
36
+ program: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
37
+ game: [{ facets: [{ facetType: 'mediatype', bucketKey: 'software' }] }],
38
+ etree: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
39
+ concert: [{ facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] }],
40
+ 'live music': [
41
+ { facets: [{ facetType: 'mediatype', bucketKey: 'etree' }] },
42
+ ],
43
+ dataset: [{ facets: [{ facetType: 'mediatype', bucketKey: 'data' }] }],
44
+ };
45
45
  //# sourceMappingURL=query-keywords-heuristic.js.map
@@ -1,5 +1,5 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../models';
2
- export declare class WikidataHeuristic implements SmartQueryHeuristic {
3
- private static readonly ENTITIES;
4
- getRecommendedFacets(query: string): Promise<SmartFacet[]>;
5
- }
1
+ import type { SmartQueryHeuristic, SmartFacet } from '../models';
2
+ export declare class WikidataHeuristic implements SmartQueryHeuristic {
3
+ private static readonly ENTITIES;
4
+ getRecommendedFacets(query: string): Promise<SmartFacet[]>;
5
+ }
@@ -1,173 +1,173 @@
1
- // If wikidata describes the top query result as X, recommend facet Y, e.g.:
2
- // X Y
3
- // written work mt:texts
4
- // film mt:movies
5
- // author mt:texts and creator:<query>
6
- // filmmaker mt:movies and creator:<query>
7
- // photographer mt:image and creator:<query>
8
- // visual artist mt:image and creator:<query>
9
- // etc.
10
- export class WikidataHeuristic {
11
- async getRecommendedFacets(query) {
12
- var _a;
13
- const recommendations = [];
14
- try {
15
- const urlQuery = encodeURIComponent(query);
16
- const wikidataResponse = await fetch(`https://www.wikidata.org/w/api.php?action=wbsearchentities&search=${urlQuery}&format=json&language=en&uselang=en&origin=*&type=item&limit=5`);
17
- const searchResults = await wikidataResponse.json();
18
- for (const [keyword, facets] of Object.entries(WikidataHeuristic.ENTITIES)) {
19
- const keywordRegex = new RegExp(`\\b${keyword}\\b`);
20
- if (keywordRegex.test((_a = searchResults.search[0]) === null || _a === void 0 ? void 0 : _a.description)) {
21
- const entityName = searchResults.search[0].label;
22
- recommendations.push(...facets.map(sf => {
23
- var _a;
24
- return ({
25
- label: (_a = sf.label) === null || _a === void 0 ? void 0 : _a.replace('__QUERY', entityName),
26
- facets: sf.facets.map(f => {
27
- var _a;
28
- const replaced = {
29
- ...f,
30
- bucketKey: f.bucketKey.replace('__QUERY', query),
31
- };
32
- if (f.displayText) {
33
- replaced.displayText = (_a = replaced.displayText) === null || _a === void 0 ? void 0 : _a.replace('__QUERY', entityName);
34
- }
35
- return replaced;
36
- }),
37
- });
38
- }));
39
- }
40
- }
41
- return recommendations;
42
- }
43
- catch (err) {
44
- return [];
45
- }
46
- }
47
- }
48
- WikidataHeuristic.ENTITIES = {
49
- 'written work': [
50
- { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
51
- ],
52
- literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
53
- book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
54
- novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
55
- filmmaker: [
56
- {
57
- label: 'Films by __QUERY',
58
- facets: [
59
- { facetType: 'mediatype', bucketKey: 'movies' },
60
- { facetType: 'creator', bucketKey: '__QUERY' },
61
- ],
62
- },
63
- ],
64
- author: [
65
- {
66
- label: 'Writing by __QUERY',
67
- facets: [
68
- { facetType: 'mediatype', bucketKey: 'texts' },
69
- { facetType: 'creator', bucketKey: '__QUERY' },
70
- ],
71
- },
72
- ],
73
- writer: [
74
- {
75
- label: 'Writing by __QUERY',
76
- facets: [
77
- { facetType: 'mediatype', bucketKey: 'texts' },
78
- { facetType: 'creator', bucketKey: '__QUERY' },
79
- ],
80
- },
81
- ],
82
- poet: [
83
- {
84
- label: 'Writing by __QUERY',
85
- facets: [
86
- { facetType: 'mediatype', bucketKey: 'texts' },
87
- { facetType: 'creator', bucketKey: '__QUERY' },
88
- ],
89
- },
90
- ],
91
- photographer: [
92
- {
93
- label: 'Images by __QUERY',
94
- facets: [
95
- { facetType: 'mediatype', bucketKey: 'image' },
96
- { facetType: 'creator', bucketKey: '__QUERY' },
97
- ],
98
- },
99
- ],
100
- painter: [
101
- {
102
- label: 'Images by __QUERY',
103
- facets: [
104
- { facetType: 'mediatype', bucketKey: 'image' },
105
- { facetType: 'creator', bucketKey: '__QUERY' },
106
- ],
107
- },
108
- ],
109
- 'visual artist': [
110
- {
111
- label: 'Images by __QUERY',
112
- facets: [
113
- { facetType: 'mediatype', bucketKey: 'image' },
114
- { facetType: 'creator', bucketKey: '__QUERY' },
115
- ],
116
- },
117
- ],
118
- 'graphic artist': [
119
- {
120
- label: 'Images by __QUERY',
121
- facets: [
122
- { facetType: 'mediatype', bucketKey: 'image' },
123
- { facetType: 'creator', bucketKey: '__QUERY' },
124
- ],
125
- },
126
- ],
127
- singer: [
128
- {
129
- label: 'Music by __QUERY',
130
- facets: [
131
- { facetType: 'mediatype', bucketKey: 'audio' },
132
- { facetType: 'creator', bucketKey: '__QUERY' },
133
- ],
134
- },
135
- ],
136
- songwriter: [
137
- {
138
- label: 'Music by __QUERY',
139
- facets: [
140
- { facetType: 'mediatype', bucketKey: 'audio' },
141
- { facetType: 'creator', bucketKey: '__QUERY' },
142
- ],
143
- },
144
- ],
145
- musician: [
146
- {
147
- label: 'Music by __QUERY',
148
- facets: [
149
- { facetType: 'mediatype', bucketKey: 'audio' },
150
- { facetType: 'creator', bucketKey: '__QUERY' },
151
- ],
152
- },
153
- ],
154
- composer: [
155
- {
156
- label: 'Music by __QUERY',
157
- facets: [
158
- { facetType: 'mediatype', bucketKey: 'audio' },
159
- { facetType: 'creator', bucketKey: '__QUERY' },
160
- ],
161
- },
162
- ],
163
- pianist: [
164
- {
165
- label: 'Music by __QUERY',
166
- facets: [
167
- { facetType: 'mediatype', bucketKey: 'audio' },
168
- { facetType: 'creator', bucketKey: '__QUERY' },
169
- ],
170
- },
171
- ],
172
- };
1
+ // If wikidata describes the top query result as X, recommend facet Y, e.g.:
2
+ // X Y
3
+ // written work mt:texts
4
+ // film mt:movies
5
+ // author mt:texts and creator:<query>
6
+ // filmmaker mt:movies and creator:<query>
7
+ // photographer mt:image and creator:<query>
8
+ // visual artist mt:image and creator:<query>
9
+ // etc.
10
+ export class WikidataHeuristic {
11
+ async getRecommendedFacets(query) {
12
+ var _a;
13
+ const recommendations = [];
14
+ try {
15
+ const urlQuery = encodeURIComponent(query);
16
+ const wikidataResponse = await fetch(`https://www.wikidata.org/w/api.php?action=wbsearchentities&search=${urlQuery}&format=json&language=en&uselang=en&origin=*&type=item&limit=5`);
17
+ const searchResults = await wikidataResponse.json();
18
+ for (const [keyword, facets] of Object.entries(WikidataHeuristic.ENTITIES)) {
19
+ const keywordRegex = new RegExp(`\\b${keyword}\\b`);
20
+ if (keywordRegex.test((_a = searchResults.search[0]) === null || _a === void 0 ? void 0 : _a.description)) {
21
+ const entityName = searchResults.search[0].label;
22
+ recommendations.push(...facets.map(sf => {
23
+ var _a;
24
+ return ({
25
+ label: (_a = sf.label) === null || _a === void 0 ? void 0 : _a.replace('__QUERY', entityName),
26
+ facets: sf.facets.map(f => {
27
+ var _a;
28
+ const replaced = {
29
+ ...f,
30
+ bucketKey: f.bucketKey.replace('__QUERY', query),
31
+ };
32
+ if (f.displayText) {
33
+ replaced.displayText = (_a = replaced.displayText) === null || _a === void 0 ? void 0 : _a.replace('__QUERY', entityName);
34
+ }
35
+ return replaced;
36
+ }),
37
+ });
38
+ }));
39
+ }
40
+ }
41
+ return recommendations;
42
+ }
43
+ catch (err) {
44
+ return [];
45
+ }
46
+ }
47
+ }
48
+ WikidataHeuristic.ENTITIES = {
49
+ 'written work': [
50
+ { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
51
+ ],
52
+ literature: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
53
+ book: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
54
+ novel: [{ facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] }],
55
+ filmmaker: [
56
+ {
57
+ label: 'Films by __QUERY',
58
+ facets: [
59
+ { facetType: 'mediatype', bucketKey: 'movies' },
60
+ { facetType: 'creator', bucketKey: '__QUERY' },
61
+ ],
62
+ },
63
+ ],
64
+ author: [
65
+ {
66
+ label: 'Writing by __QUERY',
67
+ facets: [
68
+ { facetType: 'mediatype', bucketKey: 'texts' },
69
+ { facetType: 'creator', bucketKey: '__QUERY' },
70
+ ],
71
+ },
72
+ ],
73
+ writer: [
74
+ {
75
+ label: 'Writing by __QUERY',
76
+ facets: [
77
+ { facetType: 'mediatype', bucketKey: 'texts' },
78
+ { facetType: 'creator', bucketKey: '__QUERY' },
79
+ ],
80
+ },
81
+ ],
82
+ poet: [
83
+ {
84
+ label: 'Writing by __QUERY',
85
+ facets: [
86
+ { facetType: 'mediatype', bucketKey: 'texts' },
87
+ { facetType: 'creator', bucketKey: '__QUERY' },
88
+ ],
89
+ },
90
+ ],
91
+ photographer: [
92
+ {
93
+ label: 'Images by __QUERY',
94
+ facets: [
95
+ { facetType: 'mediatype', bucketKey: 'image' },
96
+ { facetType: 'creator', bucketKey: '__QUERY' },
97
+ ],
98
+ },
99
+ ],
100
+ painter: [
101
+ {
102
+ label: 'Images by __QUERY',
103
+ facets: [
104
+ { facetType: 'mediatype', bucketKey: 'image' },
105
+ { facetType: 'creator', bucketKey: '__QUERY' },
106
+ ],
107
+ },
108
+ ],
109
+ 'visual artist': [
110
+ {
111
+ label: 'Images by __QUERY',
112
+ facets: [
113
+ { facetType: 'mediatype', bucketKey: 'image' },
114
+ { facetType: 'creator', bucketKey: '__QUERY' },
115
+ ],
116
+ },
117
+ ],
118
+ 'graphic artist': [
119
+ {
120
+ label: 'Images by __QUERY',
121
+ facets: [
122
+ { facetType: 'mediatype', bucketKey: 'image' },
123
+ { facetType: 'creator', bucketKey: '__QUERY' },
124
+ ],
125
+ },
126
+ ],
127
+ singer: [
128
+ {
129
+ label: 'Music by __QUERY',
130
+ facets: [
131
+ { facetType: 'mediatype', bucketKey: 'audio' },
132
+ { facetType: 'creator', bucketKey: '__QUERY' },
133
+ ],
134
+ },
135
+ ],
136
+ songwriter: [
137
+ {
138
+ label: 'Music by __QUERY',
139
+ facets: [
140
+ { facetType: 'mediatype', bucketKey: 'audio' },
141
+ { facetType: 'creator', bucketKey: '__QUERY' },
142
+ ],
143
+ },
144
+ ],
145
+ musician: [
146
+ {
147
+ label: 'Music by __QUERY',
148
+ facets: [
149
+ { facetType: 'mediatype', bucketKey: 'audio' },
150
+ { facetType: 'creator', bucketKey: '__QUERY' },
151
+ ],
152
+ },
153
+ ],
154
+ composer: [
155
+ {
156
+ label: 'Music by __QUERY',
157
+ facets: [
158
+ { facetType: 'mediatype', bucketKey: 'audio' },
159
+ { facetType: 'creator', bucketKey: '__QUERY' },
160
+ ],
161
+ },
162
+ ],
163
+ pianist: [
164
+ {
165
+ label: 'Music by __QUERY',
166
+ facets: [
167
+ { facetType: 'mediatype', bucketKey: 'audio' },
168
+ { facetType: 'creator', bucketKey: '__QUERY' },
169
+ ],
170
+ },
171
+ ],
172
+ };
173
173
  //# sourceMappingURL=wikidata-heuristic.js.map
@@ -1,26 +1,26 @@
1
- import type { FacetEventDetails, FacetOption } from '../../models';
2
- export interface FacetRef {
3
- facetType: FacetOption;
4
- bucketKey: string;
5
- displayText?: string;
6
- }
7
- interface LabeledSmartFacet {
8
- label: string;
9
- facets: FacetRef[];
10
- selected?: boolean;
11
- }
12
- interface UnlabeledSmartFacet {
13
- label?: string;
14
- facets: [FacetRef];
15
- selected?: boolean;
16
- }
17
- export declare type SmartFacet = LabeledSmartFacet | UnlabeledSmartFacet;
18
- export interface SmartFacetEvent {
19
- smartFacet: SmartFacet;
20
- details: FacetEventDetails[];
21
- }
22
- export declare type KeywordFacetMap = Record<string, SmartFacet[]>;
23
- export interface SmartQueryHeuristic {
24
- getRecommendedFacets(query: string): Promise<SmartFacet[]>;
25
- }
26
- export {};
1
+ import type { FacetEventDetails, FacetOption } from '../../models';
2
+ export interface FacetRef {
3
+ facetType: FacetOption;
4
+ bucketKey: string;
5
+ displayText?: string;
6
+ }
7
+ interface LabeledSmartFacet {
8
+ label: string;
9
+ facets: FacetRef[];
10
+ selected?: boolean;
11
+ }
12
+ interface UnlabeledSmartFacet {
13
+ label?: string;
14
+ facets: [FacetRef];
15
+ selected?: boolean;
16
+ }
17
+ export declare type SmartFacet = LabeledSmartFacet | UnlabeledSmartFacet;
18
+ export interface SmartFacetEvent {
19
+ smartFacet: SmartFacet;
20
+ details: FacetEventDetails[];
21
+ }
22
+ export declare type KeywordFacetMap = Record<string, SmartFacet[]>;
23
+ export interface SmartQueryHeuristic {
24
+ getRecommendedFacets(query: string): Promise<SmartFacet[]>;
25
+ }
26
+ export {};
@@ -1,2 +1,2 @@
1
- export {};
1
+ export {};
2
2
  //# sourceMappingURL=models.js.map
@@ -1,31 +1,31 @@
1
- import { LitElement, TemplateResult, CSSResultGroup, PropertyValues } from 'lit';
2
- import type { Aggregation } from '@internetarchive/search-service';
3
- import type { CollectionTitles } from '../../data-source/models';
4
- import type { SelectedFacets } from '../../models';
5
- import './smart-facet-button';
6
- import './smart-facet-dropdown';
7
- export declare class SmartFacetBar extends LitElement {
8
- query?: string;
9
- aggregations?: Record<string, Aggregation>;
10
- selectedFacets?: SelectedFacets;
11
- /** The map from collection identifiers to their titles */
12
- collectionTitles?: CollectionTitles;
13
- filterToggleActive: boolean;
14
- private heuristicRecs;
15
- private smartFacets;
16
- private lastAggregations?;
17
- render(): TemplateResult<1>;
18
- protected willUpdate(changed: PropertyValues): void;
19
- private updateSmartFacets;
20
- private makeSmartFacet;
21
- private smartFacetButton;
22
- private smartFacetDropdown;
23
- private get filtersToggleTemplate();
24
- private get facetsToDisplay();
25
- private toSmartFacet;
26
- private facetClicked;
27
- private facetDropdownClicked;
28
- private onDropdownClick;
29
- private filterToggleClicked;
30
- static get styles(): CSSResultGroup;
31
- }
1
+ import { LitElement, TemplateResult, CSSResultGroup, PropertyValues } from 'lit';
2
+ import type { Aggregation } from '@internetarchive/search-service';
3
+ import type { CollectionTitles } from '../../data-source/models';
4
+ import type { SelectedFacets } from '../../models';
5
+ import './smart-facet-button';
6
+ import './smart-facet-dropdown';
7
+ export declare class SmartFacetBar extends LitElement {
8
+ query?: string;
9
+ aggregations?: Record<string, Aggregation>;
10
+ selectedFacets?: SelectedFacets;
11
+ /** The map from collection identifiers to their titles */
12
+ collectionTitles?: CollectionTitles;
13
+ filterToggleActive: boolean;
14
+ private heuristicRecs;
15
+ private smartFacets;
16
+ private lastAggregations?;
17
+ render(): TemplateResult<1>;
18
+ protected willUpdate(changed: PropertyValues): void;
19
+ private updateSmartFacets;
20
+ private makeSmartFacet;
21
+ private smartFacetButton;
22
+ private smartFacetDropdown;
23
+ private get filtersToggleTemplate();
24
+ private get facetsToDisplay();
25
+ private toSmartFacet;
26
+ private facetClicked;
27
+ private facetDropdownClicked;
28
+ private onDropdownClick;
29
+ private filterToggleClicked;
30
+ static get styles(): CSSResultGroup;
31
+ }