@internetarchive/collection-browser 2.7.7 → 2.7.8

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 (330) 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 -99
  8. package/dist/src/app-root.js +539 -505
  9. package/dist/src/app-root.js.map +1 -1
  10. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  11. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  14. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  15. package/dist/src/assets/img/icons/chevron.js +2 -2
  16. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  17. package/dist/src/assets/img/icons/contract.js +2 -2
  18. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  19. package/dist/src/assets/img/icons/empty-query.js +2 -2
  20. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  21. package/dist/src/assets/img/icons/expand.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  29. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  30. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  31. package/dist/src/assets/img/icons/filter.js +2 -2
  32. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  33. package/dist/src/assets/img/icons/login-required.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  60. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  61. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  62. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  63. package/dist/src/assets/img/icons/null-result.js +2 -2
  64. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  65. package/dist/src/assets/img/icons/restricted.js +2 -2
  66. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  67. package/dist/src/assets/img/icons/reviews.js +2 -2
  68. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  69. package/dist/src/assets/img/icons/upload.js +2 -2
  70. package/dist/src/assets/img/icons/views.d.ts +1 -1
  71. package/dist/src/assets/img/icons/views.js +2 -2
  72. package/dist/src/circular-activity-indicator.d.ts +5 -5
  73. package/dist/src/circular-activity-indicator.js +17 -17
  74. package/dist/src/collection-browser.d.ts +591 -582
  75. package/dist/src/collection-browser.js +1644 -1629
  76. package/dist/src/collection-browser.js.map +1 -1
  77. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  78. package/dist/src/collection-facets/facet-row.js +118 -118
  79. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  80. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  81. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  82. package/dist/src/collection-facets/facets-template.js +44 -44
  83. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  84. package/dist/src/collection-facets/more-facets-content.js +407 -407
  85. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  86. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  87. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  88. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  89. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  90. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  91. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  92. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  93. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  94. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  95. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  96. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  97. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  98. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
  99. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  100. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  101. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  102. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  103. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  104. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  105. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  106. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  107. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  108. package/dist/src/collection-facets/toggle-switch.js +94 -94
  109. package/dist/src/collection-facets.d.ts +103 -103
  110. package/dist/src/collection-facets.js +522 -522
  111. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  112. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  113. package/dist/src/data-source/collection-browser-data-source.d.ts +373 -373
  114. package/dist/src/data-source/collection-browser-data-source.js +982 -982
  115. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  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 -35
  128. package/dist/src/manage/manage-bar.js +173 -79
  129. package/dist/src/manage/manage-bar.js.map +1 -1
  130. package/dist/src/manage/remove-items-modal-content.d.ts +9 -0
  131. package/dist/src/manage/remove-items-modal-content.js +104 -0
  132. package/dist/src/manage/remove-items-modal-content.js.map +1 -0
  133. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  134. package/dist/src/mediatype/mediatype-config.js +91 -91
  135. package/dist/src/models.d.ts +228 -219
  136. package/dist/src/models.js +401 -401
  137. package/dist/src/models.js.map +1 -1
  138. package/dist/src/restoration-state-handler.d.ts +70 -70
  139. package/dist/src/restoration-state-handler.js +363 -363
  140. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  141. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  142. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  143. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  144. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  145. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  146. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  147. package/dist/src/sort-filter-bar/img/list.js +2 -2
  148. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  149. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  150. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  151. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  152. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  153. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  154. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  155. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  156. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  157. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  158. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  159. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
  160. package/dist/src/styles/ia-button.d.ts +2 -2
  161. package/dist/src/styles/ia-button.js +17 -17
  162. package/dist/src/styles/item-image-styles.d.ts +8 -8
  163. package/dist/src/styles/item-image-styles.js +9 -9
  164. package/dist/src/styles/sr-only.d.ts +1 -1
  165. package/dist/src/styles/sr-only.js +2 -2
  166. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  167. package/dist/src/tiles/base-tile-component.js +64 -64
  168. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  169. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  170. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  171. package/dist/src/tiles/grid/account-tile.js +72 -72
  172. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  173. package/dist/src/tiles/grid/collection-tile.js +80 -80
  174. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  175. package/dist/src/tiles/grid/item-tile.js +158 -158
  176. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  177. package/dist/src/tiles/grid/search-tile.js +51 -51
  178. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  179. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  180. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  181. package/dist/src/tiles/grid/tile-stats.js +53 -53
  182. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  183. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  184. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  185. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  186. package/dist/src/tiles/image-block.d.ts +18 -18
  187. package/dist/src/tiles/image-block.js +89 -89
  188. package/dist/src/tiles/item-image.d.ts +39 -39
  189. package/dist/src/tiles/item-image.js +154 -154
  190. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  191. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  192. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  193. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  194. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  195. package/dist/src/tiles/list/tile-list.js +323 -323
  196. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  197. package/dist/src/tiles/mediatype-icon.js +47 -47
  198. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  199. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  200. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  201. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  202. package/dist/src/tiles/review-block.d.ts +12 -12
  203. package/dist/src/tiles/review-block.js +56 -56
  204. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  205. package/dist/src/tiles/text-snippet-block.js +73 -73
  206. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  207. package/dist/src/tiles/tile-dispatcher.js +230 -230
  208. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  209. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  210. package/dist/src/utils/analytics-events.d.ts +28 -28
  211. package/dist/src/utils/analytics-events.js +30 -30
  212. package/dist/src/utils/array-equals.d.ts +4 -4
  213. package/dist/src/utils/array-equals.js +10 -10
  214. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  215. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  216. package/dist/src/utils/facet-utils.d.ts +83 -83
  217. package/dist/src/utils/facet-utils.js +145 -145
  218. package/dist/src/utils/format-count.d.ts +7 -7
  219. package/dist/src/utils/format-count.js +76 -76
  220. package/dist/src/utils/format-date.d.ts +2 -2
  221. package/dist/src/utils/format-date.js +27 -27
  222. package/dist/src/utils/format-unit-size.d.ts +2 -2
  223. package/dist/src/utils/format-unit-size.js +33 -33
  224. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  225. package/dist/src/utils/local-date-from-utc.js +15 -15
  226. package/dist/src/utils/log.d.ts +7 -7
  227. package/dist/src/utils/log.js +15 -15
  228. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  229. package/dist/src/utils/resolve-mediatype.js +23 -23
  230. package/dist/src/utils/sha1.d.ts +2 -2
  231. package/dist/src/utils/sha1.js +8 -8
  232. package/dist/test/collection-browser.test.d.ts +1 -1
  233. package/dist/test/collection-browser.test.js +1293 -1293
  234. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  235. package/dist/test/collection-facets/facet-row.test.js +227 -227
  236. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  237. package/dist/test/collection-facets/facets-template.test.js +91 -91
  238. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  239. package/dist/test/collection-facets/more-facets-content.test.js +141 -141
  240. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  241. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  242. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  243. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  244. package/dist/test/collection-facets.test.d.ts +2 -2
  245. package/dist/test/collection-facets.test.js +690 -690
  246. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  247. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  248. package/dist/test/empty-placeholder.test.d.ts +1 -1
  249. package/dist/test/empty-placeholder.test.js +63 -63
  250. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  251. package/dist/test/expanded-date-picker.test.js +95 -95
  252. package/dist/test/icon-overlay.test.d.ts +1 -1
  253. package/dist/test/icon-overlay.test.js +24 -24
  254. package/dist/test/image-block.test.d.ts +1 -1
  255. package/dist/test/image-block.test.js +107 -107
  256. package/dist/test/item-image.test.d.ts +1 -1
  257. package/dist/test/item-image.test.js +85 -85
  258. package/dist/test/manage/manage-bar.test.d.ts +2 -1
  259. package/dist/test/manage/manage-bar.test.js +106 -91
  260. package/dist/test/manage/manage-bar.test.js.map +1 -1
  261. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -0
  262. package/dist/test/manage/remove-items-modal-content.test.js +66 -0
  263. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -0
  264. package/dist/test/mediatype-config.test.d.ts +1 -1
  265. package/dist/test/mediatype-config.test.js +16 -16
  266. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  267. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  268. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  269. package/dist/test/mocks/mock-search-responses.js +942 -942
  270. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  271. package/dist/test/mocks/mock-search-service.js +54 -54
  272. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  273. package/dist/test/restoration-state-handler.test.js +270 -270
  274. package/dist/test/review-block.test.d.ts +1 -1
  275. package/dist/test/review-block.test.js +44 -44
  276. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  277. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  278. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  279. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  280. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  281. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  282. package/dist/test/text-overlay.test.d.ts +1 -1
  283. package/dist/test/text-overlay.test.js +38 -38
  284. package/dist/test/text-snippet-block.test.d.ts +1 -1
  285. package/dist/test/text-snippet-block.test.js +57 -57
  286. package/dist/test/tile-stats.test.d.ts +1 -1
  287. package/dist/test/tile-stats.test.js +81 -81
  288. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  289. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  290. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  291. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  292. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  293. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  294. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  295. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  296. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  297. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  298. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  299. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  300. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  301. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  302. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  303. package/dist/test/tiles/list/tile-list.test.js +297 -297
  304. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  305. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  306. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  307. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  308. package/dist/test/utils/array-equals.test.d.ts +1 -1
  309. package/dist/test/utils/array-equals.test.js +26 -26
  310. package/dist/test/utils/format-count.test.d.ts +1 -1
  311. package/dist/test/utils/format-count.test.js +23 -23
  312. package/dist/test/utils/format-date.test.d.ts +1 -1
  313. package/dist/test/utils/format-date.test.js +30 -30
  314. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  315. package/dist/test/utils/format-unit-size.test.js +17 -17
  316. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  317. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  318. package/local.archive.org.cert +86 -86
  319. package/local.archive.org.key +27 -27
  320. package/package.json +1 -1
  321. package/renovate.json +6 -6
  322. package/src/app-root.ts +38 -4
  323. package/src/collection-browser.ts +36 -16
  324. package/src/manage/manage-bar.ts +119 -23
  325. package/src/manage/remove-items-modal-content.ts +102 -0
  326. package/src/models.ts +10 -0
  327. package/test/manage/manage-bar.test.ts +41 -18
  328. package/test/manage/remove-items-modal-content.test.ts +82 -0
  329. package/web-dev-server.config.mjs +30 -30
  330. 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
+ }