@internetarchive/collection-browser 4.7.1-alpha-webdev9189.0 → 4.8.1-alpha-webdev9189.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 (351) hide show
  1. package/dist/src/app-root.js +0 -2
  2. package/dist/src/app-root.js.map +1 -1
  3. package/dist/src/assets/img/icons/check.d.ts +2 -0
  4. package/dist/src/assets/img/icons/check.js +5 -0
  5. package/dist/src/assets/img/icons/check.js.map +1 -0
  6. package/dist/src/collection-facets/facet-row-template.d.ts +38 -0
  7. package/dist/src/collection-facets/facet-row-template.js +200 -0
  8. package/dist/src/collection-facets/facet-row-template.js.map +1 -0
  9. package/dist/src/collection-facets/facet-row.js +11 -186
  10. package/dist/src/collection-facets/facet-row.js.map +1 -1
  11. package/dist/src/collection-facets/models.d.ts +7 -2
  12. package/dist/src/collection-facets/models.js +7 -2
  13. package/dist/src/collection-facets/models.js.map +1 -1
  14. package/dist/src/collection-facets/more-facets-content.d.ts +87 -21
  15. package/dist/src/collection-facets/more-facets-content.js +477 -200
  16. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  17. package/dist/src/collection-facets/more-facets-scroller.d.ts +85 -0
  18. package/dist/src/collection-facets/more-facets-scroller.js +428 -0
  19. package/dist/src/collection-facets/more-facets-scroller.js.map +1 -0
  20. package/dist/src/collection-facets/page-window.d.ts +73 -0
  21. package/dist/src/collection-facets/page-window.js +202 -0
  22. package/dist/src/collection-facets/page-window.js.map +1 -0
  23. package/dist/src/collection-facets/toggle-switch.js +1 -0
  24. package/dist/src/collection-facets/toggle-switch.js.map +1 -1
  25. package/dist/src/models.d.ts +4 -0
  26. package/dist/src/models.js +16 -0
  27. package/dist/src/models.js.map +1 -1
  28. package/dist/src/utils/normalize-filter-text.d.ts +28 -0
  29. package/dist/src/utils/normalize-filter-text.js +35 -0
  30. package/dist/src/utils/normalize-filter-text.js.map +1 -0
  31. package/package.json +7 -1
  32. package/.editorconfig +0 -29
  33. package/.github/workflows/ci.yml +0 -29
  34. package/.github/workflows/gh-pages-main.yml +0 -41
  35. package/.github/workflows/npm-publish.yml +0 -42
  36. package/.github/workflows/pr-preview.yml +0 -40
  37. package/.husky/pre-commit +0 -1
  38. package/.prettierignore +0 -1
  39. package/dist/src/collection-facets/more-facets-pagination.d.ts +0 -36
  40. package/dist/src/collection-facets/more-facets-pagination.js +0 -260
  41. package/dist/src/collection-facets/more-facets-pagination.js.map +0 -1
  42. package/dist/test/collection-browser.test.d.ts +0 -1
  43. package/dist/test/collection-browser.test.js +0 -1849
  44. package/dist/test/collection-browser.test.js.map +0 -1
  45. package/dist/test/collection-facets/facet-row.test.d.ts +0 -1
  46. package/dist/test/collection-facets/facet-row.test.js +0 -291
  47. package/dist/test/collection-facets/facet-row.test.js.map +0 -1
  48. package/dist/test/collection-facets/facets-template.test.d.ts +0 -1
  49. package/dist/test/collection-facets/facets-template.test.js +0 -95
  50. package/dist/test/collection-facets/facets-template.test.js.map +0 -1
  51. package/dist/test/collection-facets/more-facets-content.test.d.ts +0 -1
  52. package/dist/test/collection-facets/more-facets-content.test.js +0 -159
  53. package/dist/test/collection-facets/more-facets-content.test.js.map +0 -1
  54. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +0 -1
  55. package/dist/test/collection-facets/more-facets-pagination.test.js +0 -126
  56. package/dist/test/collection-facets/more-facets-pagination.test.js.map +0 -1
  57. package/dist/test/collection-facets/toggle-switch.test.d.ts +0 -1
  58. package/dist/test/collection-facets/toggle-switch.test.js +0 -99
  59. package/dist/test/collection-facets/toggle-switch.test.js.map +0 -1
  60. package/dist/test/collection-facets.test.d.ts +0 -2
  61. package/dist/test/collection-facets.test.js +0 -728
  62. package/dist/test/collection-facets.test.js.map +0 -1
  63. package/dist/test/data-source/collection-browser-data-source.test.d.ts +0 -1
  64. package/dist/test/data-source/collection-browser-data-source.test.js +0 -154
  65. package/dist/test/data-source/collection-browser-data-source.test.js.map +0 -1
  66. package/dist/test/empty-placeholder.test.d.ts +0 -1
  67. package/dist/test/empty-placeholder.test.js +0 -57
  68. package/dist/test/empty-placeholder.test.js.map +0 -1
  69. package/dist/test/expanded-date-picker.test.d.ts +0 -1
  70. package/dist/test/expanded-date-picker.test.js +0 -124
  71. package/dist/test/expanded-date-picker.test.js.map +0 -1
  72. package/dist/test/icon-overlay.test.d.ts +0 -1
  73. package/dist/test/icon-overlay.test.js +0 -31
  74. package/dist/test/icon-overlay.test.js.map +0 -1
  75. package/dist/test/image-block.test.d.ts +0 -1
  76. package/dist/test/image-block.test.js +0 -208
  77. package/dist/test/image-block.test.js.map +0 -1
  78. package/dist/test/item-image.test.d.ts +0 -1
  79. package/dist/test/item-image.test.js +0 -187
  80. package/dist/test/item-image.test.js.map +0 -1
  81. package/dist/test/manage/manage-bar.test.d.ts +0 -3
  82. package/dist/test/manage/manage-bar.test.js +0 -216
  83. package/dist/test/manage/manage-bar.test.js.map +0 -1
  84. package/dist/test/manage/remove-items-modal-content.test.d.ts +0 -1
  85. package/dist/test/manage/remove-items-modal-content.test.js +0 -60
  86. package/dist/test/manage/remove-items-modal-content.test.js.map +0 -1
  87. package/dist/test/mediatype-config.test.d.ts +0 -1
  88. package/dist/test/mediatype-config.test.js +0 -11
  89. package/dist/test/mediatype-config.test.js.map +0 -1
  90. package/dist/test/mocks/mock-analytics-handler.d.ts +0 -10
  91. package/dist/test/mocks/mock-analytics-handler.js +0 -16
  92. package/dist/test/mocks/mock-analytics-handler.js.map +0 -1
  93. package/dist/test/mocks/mock-search-responses.d.ts +0 -31
  94. package/dist/test/mocks/mock-search-responses.js +0 -1241
  95. package/dist/test/mocks/mock-search-responses.js.map +0 -1
  96. package/dist/test/mocks/mock-search-service.d.ts +0 -16
  97. package/dist/test/mocks/mock-search-service.js +0 -64
  98. package/dist/test/mocks/mock-search-service.js.map +0 -1
  99. package/dist/test/restoration-state-handler.test.d.ts +0 -1
  100. package/dist/test/restoration-state-handler.test.js +0 -335
  101. package/dist/test/restoration-state-handler.test.js.map +0 -1
  102. package/dist/test/review-block.test.d.ts +0 -1
  103. package/dist/test/review-block.test.js +0 -46
  104. package/dist/test/review-block.test.js.map +0 -1
  105. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +0 -1
  106. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +0 -12
  107. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +0 -1
  108. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +0 -1
  109. package/dist/test/sort-filter-bar/alpha-bar.test.js +0 -68
  110. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +0 -1
  111. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +0 -1
  112. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +0 -326
  113. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +0 -1
  114. package/dist/test/text-overlay.test.d.ts +0 -1
  115. package/dist/test/text-overlay.test.js +0 -43
  116. package/dist/test/text-overlay.test.js.map +0 -1
  117. package/dist/test/text-snippet-block.test.d.ts +0 -1
  118. package/dist/test/text-snippet-block.test.js +0 -58
  119. package/dist/test/text-snippet-block.test.js.map +0 -1
  120. package/dist/test/tile-stats.test.d.ts +0 -1
  121. package/dist/test/tile-stats.test.js +0 -167
  122. package/dist/test/tile-stats.test.js.map +0 -1
  123. package/dist/test/tiles/grid/account-tile.test.d.ts +0 -1
  124. package/dist/test/tiles/grid/account-tile.test.js +0 -96
  125. package/dist/test/tiles/grid/account-tile.test.js.map +0 -1
  126. package/dist/test/tiles/grid/collection-tile.test.d.ts +0 -1
  127. package/dist/test/tiles/grid/collection-tile.test.js +0 -90
  128. package/dist/test/tiles/grid/collection-tile.test.js.map +0 -1
  129. package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
  130. package/dist/test/tiles/grid/item-tile.test.js +0 -400
  131. package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
  132. package/dist/test/tiles/grid/search-tile.test.d.ts +0 -1
  133. package/dist/test/tiles/grid/search-tile.test.js +0 -62
  134. package/dist/test/tiles/grid/search-tile.test.js.map +0 -1
  135. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +0 -1
  136. package/dist/test/tiles/hover/hover-pane-controller.test.js +0 -351
  137. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +0 -1
  138. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +0 -1
  139. package/dist/test/tiles/hover/tile-hover-pane.test.js +0 -53
  140. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +0 -1
  141. package/dist/test/tiles/list/tile-list-compact-header.test.d.ts +0 -1
  142. package/dist/test/tiles/list/tile-list-compact-header.test.js +0 -36
  143. package/dist/test/tiles/list/tile-list-compact-header.test.js.map +0 -1
  144. package/dist/test/tiles/list/tile-list-compact.test.d.ts +0 -1
  145. package/dist/test/tiles/list/tile-list-compact.test.js +0 -237
  146. package/dist/test/tiles/list/tile-list-compact.test.js.map +0 -1
  147. package/dist/test/tiles/list/tile-list.test.d.ts +0 -1
  148. package/dist/test/tiles/list/tile-list.test.js +0 -460
  149. package/dist/test/tiles/list/tile-list.test.js.map +0 -1
  150. package/dist/test/tiles/tile-dispatcher.test.d.ts +0 -1
  151. package/dist/test/tiles/tile-dispatcher.test.js +0 -246
  152. package/dist/test/tiles/tile-dispatcher.test.js.map +0 -1
  153. package/dist/test/tiles/tile-display-value-provider.test.d.ts +0 -1
  154. package/dist/test/tiles/tile-display-value-provider.test.js +0 -142
  155. package/dist/test/tiles/tile-display-value-provider.test.js.map +0 -1
  156. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +0 -1
  157. package/dist/test/tiles/tile-mediatype-icon.test.js +0 -133
  158. package/dist/test/tiles/tile-mediatype-icon.test.js.map +0 -1
  159. package/dist/test/utils/array-equals.test.d.ts +0 -1
  160. package/dist/test/utils/array-equals.test.js +0 -27
  161. package/dist/test/utils/array-equals.test.js.map +0 -1
  162. package/dist/test/utils/format-count.test.d.ts +0 -1
  163. package/dist/test/utils/format-count.test.js +0 -24
  164. package/dist/test/utils/format-count.test.js.map +0 -1
  165. package/dist/test/utils/format-date.test.d.ts +0 -1
  166. package/dist/test/utils/format-date.test.js +0 -61
  167. package/dist/test/utils/format-date.test.js.map +0 -1
  168. package/dist/test/utils/format-unit-size.test.d.ts +0 -1
  169. package/dist/test/utils/format-unit-size.test.js +0 -18
  170. package/dist/test/utils/format-unit-size.test.js.map +0 -1
  171. package/dist/test/utils/local-date-from-utc.test.d.ts +0 -1
  172. package/dist/test/utils/local-date-from-utc.test.js +0 -27
  173. package/dist/test/utils/local-date-from-utc.test.js.map +0 -1
  174. package/eslint.config.mjs +0 -53
  175. package/index.html +0 -24
  176. package/index.ts +0 -29
  177. package/local.archive.org.cert +0 -86
  178. package/local.archive.org.key +0 -27
  179. package/pnpm-workspace.yaml +0 -30
  180. package/renovate.json +0 -6
  181. package/src/app-root.ts +0 -1284
  182. package/src/assets/img/icons/arrow-left.ts +0 -10
  183. package/src/assets/img/icons/arrow-right.ts +0 -10
  184. package/src/assets/img/icons/chevron.ts +0 -4
  185. package/src/assets/img/icons/close-circle-dark.ts +0 -5
  186. package/src/assets/img/icons/contract.ts +0 -9
  187. package/src/assets/img/icons/empty-query.ts +0 -5
  188. package/src/assets/img/icons/expand.ts +0 -9
  189. package/src/assets/img/icons/eye-closed.ts +0 -5
  190. package/src/assets/img/icons/eye.ts +0 -5
  191. package/src/assets/img/icons/favorite-filled.ts +0 -10
  192. package/src/assets/img/icons/favorite-unfilled.ts +0 -9
  193. package/src/assets/img/icons/filter.ts +0 -10
  194. package/src/assets/img/icons/login-required.ts +0 -18
  195. package/src/assets/img/icons/mediatype/account.ts +0 -14
  196. package/src/assets/img/icons/mediatype/audio.ts +0 -14
  197. package/src/assets/img/icons/mediatype/collection.ts +0 -12
  198. package/src/assets/img/icons/mediatype/data.ts +0 -15
  199. package/src/assets/img/icons/mediatype/etree.ts +0 -14
  200. package/src/assets/img/icons/mediatype/film.ts +0 -14
  201. package/src/assets/img/icons/mediatype/images.ts +0 -13
  202. package/src/assets/img/icons/mediatype/radio.ts +0 -15
  203. package/src/assets/img/icons/mediatype/search.ts +0 -14
  204. package/src/assets/img/icons/mediatype/software.ts +0 -13
  205. package/src/assets/img/icons/mediatype/texts.ts +0 -13
  206. package/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  207. package/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  208. package/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  209. package/src/assets/img/icons/mediatype/tv.ts +0 -14
  210. package/src/assets/img/icons/mediatype/video.ts +0 -14
  211. package/src/assets/img/icons/mediatype/web.ts +0 -13
  212. package/src/assets/img/icons/null-result.ts +0 -5
  213. package/src/assets/img/icons/quote.ts +0 -7
  214. package/src/assets/img/icons/restricted.ts +0 -13
  215. package/src/assets/img/icons/reviews.ts +0 -11
  216. package/src/assets/img/icons/upload.ts +0 -12
  217. package/src/assets/img/icons/views.ts +0 -11
  218. package/src/circular-activity-indicator.ts +0 -64
  219. package/src/collection-browser.ts +0 -3187
  220. package/src/collection-facets/facet-row.ts +0 -309
  221. package/src/collection-facets/facet-tombstone-row.ts +0 -40
  222. package/src/collection-facets/facets-template.ts +0 -85
  223. package/src/collection-facets/models.ts +0 -10
  224. package/src/collection-facets/more-facets-content.ts +0 -644
  225. package/src/collection-facets/more-facets-pagination.ts +0 -294
  226. package/src/collection-facets/smart-facets/dedupe.ts +0 -44
  227. package/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  228. package/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  229. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  230. package/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  231. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  232. package/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  233. package/src/collection-facets/smart-facets/models.ts +0 -36
  234. package/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  235. package/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  236. package/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  237. package/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  238. package/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  239. package/src/collection-facets/toggle-switch.ts +0 -174
  240. package/src/collection-facets.ts +0 -1013
  241. package/src/data-source/collection-browser-data-source-interface.ts +0 -351
  242. package/src/data-source/collection-browser-data-source.ts +0 -1474
  243. package/src/data-source/collection-browser-query-state.ts +0 -60
  244. package/src/data-source/models.ts +0 -56
  245. package/src/empty-placeholder.ts +0 -192
  246. package/src/expanded-date-picker.ts +0 -191
  247. package/src/language-code-handler/language-code-handler.ts +0 -64
  248. package/src/language-code-handler/language-code-mapping.ts +0 -564
  249. package/src/manage/manage-bar.ts +0 -276
  250. package/src/manage/remove-items-modal-content.ts +0 -102
  251. package/src/mediatype/mediatype-config.ts +0 -146
  252. package/src/models.ts +0 -895
  253. package/src/restoration-state-handler.ts +0 -550
  254. package/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  255. package/src/sort-filter-bar/alpha-bar.ts +0 -252
  256. package/src/sort-filter-bar/img/compact.ts +0 -5
  257. package/src/sort-filter-bar/img/list.ts +0 -5
  258. package/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  259. package/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  260. package/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  261. package/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  262. package/src/sort-filter-bar/img/tile.ts +0 -5
  263. package/src/sort-filter-bar/sort-filter-bar.ts +0 -734
  264. package/src/styles/ia-button.ts +0 -139
  265. package/src/styles/item-image-styles.ts +0 -124
  266. package/src/styles/sr-only.ts +0 -18
  267. package/src/styles/tile-action-styles.ts +0 -59
  268. package/src/tiles/base-tile-component.ts +0 -124
  269. package/src/tiles/collection-browser-loading-tile.ts +0 -26
  270. package/src/tiles/grid/account-tile.ts +0 -113
  271. package/src/tiles/grid/collection-tile.ts +0 -184
  272. package/src/tiles/grid/item-tile.ts +0 -347
  273. package/src/tiles/grid/search-tile.ts +0 -90
  274. package/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  275. package/src/tiles/grid/tile-stats.ts +0 -211
  276. package/src/tiles/hover/hover-pane-controller.ts +0 -638
  277. package/src/tiles/hover/tile-hover-pane.ts +0 -184
  278. package/src/tiles/image-block.ts +0 -162
  279. package/src/tiles/item-image.ts +0 -214
  280. package/src/tiles/list/tile-list-compact-header.ts +0 -112
  281. package/src/tiles/list/tile-list-compact.ts +0 -278
  282. package/src/tiles/list/tile-list.ts +0 -718
  283. package/src/tiles/models.ts +0 -21
  284. package/src/tiles/overlay/icon-overlay.ts +0 -57
  285. package/src/tiles/overlay/text-overlay.ts +0 -79
  286. package/src/tiles/review-block.ts +0 -130
  287. package/src/tiles/text-snippet-block.ts +0 -132
  288. package/src/tiles/tile-dispatcher.ts +0 -637
  289. package/src/tiles/tile-display-value-provider.ts +0 -133
  290. package/src/tiles/tile-mediatype-icon.ts +0 -133
  291. package/src/utils/analytics-events.ts +0 -29
  292. package/src/utils/array-equals.ts +0 -8
  293. package/src/utils/collapse-repeated-quotes.ts +0 -13
  294. package/src/utils/date-filter-field.ts +0 -11
  295. package/src/utils/facet-utils.ts +0 -183
  296. package/src/utils/format-count.ts +0 -95
  297. package/src/utils/format-date.ts +0 -62
  298. package/src/utils/format-unit-size.ts +0 -43
  299. package/src/utils/local-date-from-utc.ts +0 -15
  300. package/src/utils/log.ts +0 -14
  301. package/src/utils/resolve-mediatype.ts +0 -26
  302. package/src/utils/sha1.ts +0 -9
  303. package/test/collection-browser.test.ts +0 -2694
  304. package/test/collection-facets/facet-row.test.ts +0 -421
  305. package/test/collection-facets/facets-template.test.ts +0 -139
  306. package/test/collection-facets/more-facets-content.test.ts +0 -231
  307. package/test/collection-facets/more-facets-pagination.test.ts +0 -201
  308. package/test/collection-facets/toggle-switch.test.ts +0 -164
  309. package/test/collection-facets.test.ts +0 -928
  310. package/test/data-source/collection-browser-data-source.test.ts +0 -193
  311. package/test/empty-placeholder.test.ts +0 -88
  312. package/test/expanded-date-picker.test.ts +0 -201
  313. package/test/icon-overlay.test.ts +0 -38
  314. package/test/image-block.test.ts +0 -247
  315. package/test/item-image.test.ts +0 -220
  316. package/test/manage/manage-bar.test.ts +0 -347
  317. package/test/manage/remove-items-modal-content.test.ts +0 -81
  318. package/test/mediatype-config.test.ts +0 -11
  319. package/test/mocks/mock-analytics-handler.ts +0 -30
  320. package/test/mocks/mock-search-responses.ts +0 -1364
  321. package/test/mocks/mock-search-service.ts +0 -134
  322. package/test/restoration-state-handler.test.ts +0 -480
  323. package/test/review-block.test.ts +0 -62
  324. package/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  325. package/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  326. package/test/sort-filter-bar/sort-filter-bar.test.ts +0 -472
  327. package/test/text-overlay.test.ts +0 -55
  328. package/test/text-snippet-block.test.ts +0 -85
  329. package/test/tile-stats.test.ts +0 -191
  330. package/test/tiles/grid/account-tile.test.ts +0 -121
  331. package/test/tiles/grid/collection-tile.test.ts +0 -114
  332. package/test/tiles/grid/item-tile.test.ts +0 -520
  333. package/test/tiles/grid/search-tile.test.ts +0 -75
  334. package/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  335. package/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  336. package/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  337. package/test/tiles/list/tile-list-compact.test.ts +0 -282
  338. package/test/tiles/list/tile-list.test.ts +0 -576
  339. package/test/tiles/tile-dispatcher.test.ts +0 -320
  340. package/test/tiles/tile-display-value-provider.test.ts +0 -172
  341. package/test/tiles/tile-mediatype-icon.test.ts +0 -160
  342. package/test/utils/array-equals.test.ts +0 -31
  343. package/test/utils/format-count.test.ts +0 -32
  344. package/test/utils/format-date.test.ts +0 -89
  345. package/test/utils/format-unit-size.test.ts +0 -21
  346. package/test/utils/local-date-from-utc.test.ts +0 -37
  347. package/tsconfig.json +0 -25
  348. package/types/dompurify.d.ts +0 -1
  349. package/vite.config.ts +0 -29
  350. package/web-dev-server.config.mjs +0 -30
  351. package/web-test-runner.config.mjs +0 -52
@@ -1,294 +0,0 @@
1
- import {
2
- css,
3
- CSSResultGroup,
4
- html,
5
- LitElement,
6
- nothing,
7
- TemplateResult,
8
- } from 'lit';
9
- import { customElement, property, state } from 'lit/decorators.js';
10
- import arrowLeftIcon from '../assets/img/icons/arrow-left';
11
- import arrowRightIcon from '../assets/img/icons/arrow-right';
12
- import { srOnlyStyle } from '../styles/sr-only';
13
-
14
- @customElement('more-facets-pagination')
15
- export class MoreFacetsPagination extends LitElement {
16
- /**
17
- * Total number of pages
18
- */
19
- @property({ type: Number }) size!: number;
20
-
21
- /**
22
- * Number of pages can be moved in back/forward
23
- */
24
- @property({ type: Number }) step = 2;
25
-
26
- @property({ type: Number }) currentPage: number = 1;
27
-
28
- @state() pages?: number[] = [];
29
-
30
- firstUpdated() {
31
- this.observePageCount();
32
- }
33
-
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- override updated(changed: Map<string, any>) {
36
- if (changed.has('size')) {
37
- this.observePageCount();
38
- }
39
- if (changed.has('currentPage')) {
40
- this.observePageCount();
41
- this.emitPageClick();
42
- }
43
- }
44
-
45
- /** creates `this.pages` array that notes which pages to draw
46
- * - `0` is elipses marker
47
- * - rule: selected page is centered between -2/+2 pages
48
- * - outlier: first page selected, show _1_ 2 3 ... N
49
- * - outlier: second page selected, show 1 _2_ 3 4 ... N
50
- * - outlier: last page selected, show 1 ... N-2 N-1 _N_
51
- * - outlier: if page count = 7, & selected is either [2, 3, 4, 5, 6], show all pages
52
- */
53
- observePageCount() {
54
- this.pages = []; /* `0` is elipses marker */
55
-
56
- const paginatorMaxPagesToShow = 7;
57
- const atMinThreshold = this.size <= paginatorMaxPagesToShow;
58
-
59
- /** Display outliers */
60
- if (this.size <= 5) {
61
- // display all pages
62
- this.pages = [...Array(this.size).keys()].map(i => i + 1);
63
- return;
64
- }
65
-
66
- if (this.size === paginatorMaxPagesToShow) {
67
- // edge: 7 pages
68
- if (this.currentPage === 2) {
69
- this.pages = [1, 2, 3, 4, 0, this.size];
70
- return;
71
- }
72
-
73
- if (this.currentPage === this.size - 1) {
74
- this.pages = [1, 0, 4, 5, this.size - 1, this.size];
75
- return;
76
- }
77
- }
78
-
79
- if (this.currentPage === 1) {
80
- // first page
81
- this.pages = [1, 2, 3, 0, this.size];
82
- return;
83
- }
84
-
85
- if (this.currentPage === this.size) {
86
- // last page
87
- this.pages = [1, 0, this.size - 2, this.size - 1, this.size];
88
- return;
89
- }
90
-
91
- if (this.currentPage === this.size - 1) {
92
- // second last page
93
- this.pages = [
94
- 1,
95
- 0,
96
- this.size - 3,
97
- this.size - 2,
98
- this.size - 1,
99
- this.size,
100
- ];
101
- return;
102
- }
103
-
104
- if (
105
- atMinThreshold &&
106
- this.currentPage > 1 &&
107
- this.currentPage < paginatorMaxPagesToShow
108
- ) {
109
- this.pages = [...Array(this.size).keys()].map(i => i + 1);
110
- return;
111
- }
112
-
113
- /* The rest here calculates the range to display in "page window" */
114
- let startPage = this.currentPage - this.step;
115
- let endPage = this.currentPage + this.step;
116
-
117
- if (startPage <= 0) {
118
- endPage += -startPage + 1;
119
- startPage = 1;
120
- }
121
-
122
- if (endPage >= this.size) {
123
- startPage = Math.max(startPage - (endPage - this.size), 1);
124
- endPage = this.size;
125
- }
126
-
127
- if (startPage === 2) {
128
- endPage -= 1;
129
- }
130
-
131
- if (endPage === this.size - 1) {
132
- startPage += 1;
133
- }
134
-
135
- // create first page node
136
- this.createFirstNode(startPage);
137
-
138
- // create middle pages node
139
- this.createMiddelNode(startPage, endPage);
140
-
141
- // create last page node
142
- this.createLastNode(endPage);
143
- }
144
-
145
- private createFirstNode(startPage: number) {
146
- if (startPage > 1) {
147
- this.pages?.push(1);
148
- }
149
- if (startPage > 2) {
150
- this.pages?.push(0); // let's asssume 0 is for ellipsis template
151
- }
152
- }
153
-
154
- private createMiddelNode(startPage: number, endPage: number) {
155
- for (let page = startPage; page <= endPage; page += 1) {
156
- this.pages?.push(page);
157
- }
158
- }
159
-
160
- private createLastNode(endPage: number) {
161
- if (endPage < this.size - 1) {
162
- this.pages?.push(0); // let's asssume 0 is for ellipsis template
163
- }
164
- if (endPage < this.size) {
165
- this.pages?.push(this.size);
166
- }
167
- }
168
-
169
- private get getEllipsisTemplate() {
170
- return html`<i class="ellipses">...</i>`;
171
- }
172
-
173
- emitPageClick() {
174
- this.dispatchEvent(
175
- new CustomEvent('pageNumberClicked', {
176
- detail: { page: this.currentPage },
177
- bubbles: true,
178
- composed: true,
179
- }),
180
- );
181
- }
182
-
183
- private onRewind() {
184
- this.currentPage -= 1;
185
- if (this.currentPage < 1) {
186
- this.currentPage = 1;
187
- }
188
- }
189
-
190
- private onForward() {
191
- this.currentPage += 1;
192
- if (this.currentPage > this.size) {
193
- this.currentPage = this.size;
194
- }
195
- }
196
-
197
- private onChange(page: number) {
198
- this.currentPage = page;
199
- }
200
-
201
- private getPageTemplate(page: number) {
202
- return html`
203
- <button
204
- @click=${() => this.onChange(page)}
205
- class=${this.currentPage === page ? 'current' : ''}
206
- data-page=${page}
207
- >
208
- ${page}
209
- </button>
210
- `;
211
- }
212
-
213
- private get getPagesTemplate(): TemplateResult | typeof nothing {
214
- if (!this.pages || !this.pages.length) {
215
- return nothing;
216
- }
217
-
218
- return html`
219
- ${this.pages?.map(
220
- page =>
221
- html`${page !== 0
222
- ? this.getPageTemplate(page)
223
- : this.getEllipsisTemplate}`,
224
- )}
225
- `;
226
- }
227
-
228
- render() {
229
- return html`
230
- <div class="facets-pagination">
231
- <button class="arrow-icon rewind" @click=${this.onRewind}>
232
- <span class="sr-only">Rewind pagination:</span>
233
- ${arrowLeftIcon}
234
- </button>
235
- <div class="page-numbers">${this.getPagesTemplate}</div>
236
- <button class="arrow-icon forward" @click=${this.onForward}>
237
- <span class="sr-only">Forward pagination:</span>
238
- ${arrowRightIcon}
239
- </button>
240
- </div>
241
- `;
242
- }
243
-
244
- static get styles(): CSSResultGroup {
245
- return [
246
- srOnlyStyle,
247
- css`
248
- .facets-pagination {
249
- user-select: none;
250
- margin-top: 10px;
251
- background-color: #eee;
252
- text-align: center;
253
- }
254
- .facets-pagination button {
255
- border: none;
256
- background: none;
257
- }
258
- .facets-pagination .arrow-icon {
259
- width: 2.5rem;
260
- vertical-align: middle;
261
- }
262
- .facets-pagination .arrow-icon svg {
263
- height: 14px;
264
- fill: #2c2c2c;
265
- }
266
- .facets-pagination button,
267
- .facets-pagination i {
268
- background: none;
269
- border: 0;
270
- cursor: pointer;
271
- border-radius: 4px;
272
- margin: 10px 5px;
273
- padding: 5px;
274
- font-size: 1.4rem;
275
- color: inherit;
276
- vertical-align: baseline;
277
- display: inline-block;
278
- min-width: 2.5rem;
279
- }
280
- .facets-pagination i {
281
- cursor: auto;
282
- display: inline;
283
- }
284
- .facets-pagination button.current {
285
- background: #2c2c2c;
286
- color: white;
287
- }
288
- .page-numbers {
289
- display: inline-block;
290
- }
291
- `,
292
- ];
293
- }
294
- }
@@ -1,44 +0,0 @@
1
- import type { SmartFacet } from './models';
2
- import { smartFacetEquals } from './smart-facet-equals';
3
-
4
- /**
5
- * Removes any duplicated smart facets from the given array.
6
- * Smart facets are equal if they have the same `label` and same
7
- * set of facet refs. Only the first occurrence of a given smart
8
- * facet is kept.
9
- * @param facets The array of smart facets to deduplicate
10
- * @returns A new array containing the deduplicated set of facets
11
- */
12
- export function dedupe<T extends SmartFacet[] | SmartFacet[][]>(facets: T): T {
13
- if (!Array.isArray(facets[0])) {
14
- const facetsUnnested = facets as SmartFacet[];
15
-
16
- let result: SmartFacet[] = [...facetsUnnested];
17
- for (let i = 0; i < result.length; i++) {
18
- const curFacet = result[i];
19
- result = result.filter(
20
- sf => curFacet === sf || !smartFacetEquals(curFacet, sf),
21
- );
22
- }
23
-
24
- return result as T;
25
- }
26
-
27
- const facetsNested = facets as SmartFacet[][];
28
-
29
- const result: SmartFacet[][] = [];
30
- for (const curFacetArray of facetsNested) {
31
- const subresult: SmartFacet[] = [];
32
- for (const curFacet of curFacetArray) {
33
- const existing = result.find(sfa =>
34
- sfa.find(sf => smartFacetEquals(curFacet, sf)),
35
- );
36
- if (!existing) subresult.push(curFacet);
37
- }
38
- if (subresult.length > 0) {
39
- result.push(subresult);
40
- }
41
- }
42
-
43
- return result as T;
44
- }
@@ -1,27 +0,0 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../../models';
2
-
3
- export class BrowserLanguageHeuristic implements SmartQueryHeuristic {
4
- async getRecommendedFacets(): Promise<SmartFacet[]> {
5
- const browserLanguageCode = navigator.language;
6
- const languageName =
7
- BrowserLanguageHeuristic.getLanguageDisplayName(browserLanguageCode);
8
- if (!languageName) return [];
9
-
10
- return [
11
- {
12
- facets: [
13
- {
14
- facetType: 'language',
15
- bucketKey: languageName,
16
- },
17
- ],
18
- },
19
- ];
20
- }
21
-
22
- private static getLanguageDisplayName(langCode: string): string | undefined {
23
- // Strip off any script/region/variant codes for greater generality
24
- const languageOnly = langCode.split('-')[0];
25
- return new Intl.DisplayNames(['en'], { type: 'language' }).of(languageOnly);
26
- }
27
- }
@@ -1,3 +0,0 @@
1
- export { BrowserLanguageHeuristic } from './browser-language/browser-language-heuristic';
2
- export { QueryKeywordsHeuristic } from './query-keywords/query-keywords-heuristic';
3
- export { WikidataHeuristic } from './wikidata/wikidata-heuristic';
@@ -1,17 +0,0 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../../models';
2
- import { QUERY_KEYWORDS } from './query-keywords-map';
3
-
4
- // If the query contains X keyword but Y facet isn't selected, recommend facet Y
5
- export class QueryKeywordsHeuristic implements SmartQueryHeuristic {
6
- async getRecommendedFacets(query: string): Promise<SmartFacet[]> {
7
- const recommendations: SmartFacet[] = [];
8
-
9
- for (const [keyword, facets] of Object.entries(QUERY_KEYWORDS)) {
10
- if (query.includes(keyword)) {
11
- recommendations.push(...facets);
12
- }
13
- }
14
-
15
- return recommendations;
16
- }
17
- }
@@ -1,70 +0,0 @@
1
- import type { KeywordFacetMap, SmartFacet } from '../../models';
2
-
3
- const TEXTS: SmartFacet = {
4
- facets: [{ facetType: 'mediatype', bucketKey: 'texts' }],
5
- };
6
- const AUDIO: SmartFacet = {
7
- facets: [{ facetType: 'mediatype', bucketKey: 'audio' }],
8
- };
9
- const MOVIES: SmartFacet = {
10
- facets: [{ facetType: 'mediatype', bucketKey: 'movies' }],
11
- };
12
- const IMAGE: SmartFacet = {
13
- facets: [{ facetType: 'mediatype', bucketKey: 'image' }],
14
- };
15
- const SOFTWARE: SmartFacet = {
16
- facets: [{ facetType: 'mediatype', bucketKey: 'software' }],
17
- };
18
- const ETREE: SmartFacet = {
19
- facets: [{ facetType: 'mediatype', bucketKey: 'etree' }],
20
- };
21
- const WEB: SmartFacet = {
22
- facets: [{ facetType: 'mediatype', bucketKey: 'web' }],
23
- };
24
- const DATA: SmartFacet = {
25
- facets: [{ facetType: 'mediatype', bucketKey: 'data' }],
26
- };
27
-
28
- /**
29
- * Map from keywords found in the search query to an array of
30
- * likely-relevant "smart facets" for those keywords.
31
- */
32
- export const QUERY_KEYWORDS: Readonly<KeywordFacetMap> = {
33
- text: [TEXTS],
34
- book: [TEXTS],
35
- novel: [TEXTS],
36
- magazine: [TEXTS],
37
- newspaper: [TEXTS],
38
- pdf: [TEXTS],
39
- epub: [TEXTS],
40
- audio: [AUDIO],
41
- song: [AUDIO],
42
- music: [AUDIO],
43
- listen: [AUDIO],
44
- podcast: [AUDIO],
45
- radio: [AUDIO],
46
- stream: [AUDIO, MOVIES],
47
- video: [MOVIES],
48
- movie: [MOVIES],
49
- film: [MOVIES],
50
- animation: [MOVIES],
51
- youtube: [MOVIES],
52
- image: [IMAGE],
53
- photo: [IMAGE],
54
- picture: [IMAGE],
55
- painting: [IMAGE],
56
- jpg: [IMAGE],
57
- jpeg: [IMAGE],
58
- png: [IMAGE],
59
- gif: [IMAGE],
60
- software: [SOFTWARE],
61
- app: [SOFTWARE],
62
- program: [SOFTWARE],
63
- game: [SOFTWARE],
64
- arcade: [SOFTWARE],
65
- etree: [ETREE],
66
- concert: [ETREE],
67
- 'live music': [ETREE],
68
- 'web crawl': [WEB],
69
- dataset: [DATA],
70
- };
@@ -1,79 +0,0 @@
1
- import type { KeywordFacetMap, SmartFacet } from '../../models';
2
-
3
- const WRITTEN_WORK_SMART_FACETS: SmartFacet[] = [
4
- { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
5
- ];
6
-
7
- const FILMMAKER_SMART_FACETS: SmartFacet[] = [
8
- {
9
- label: 'Films by __QUERY',
10
- facets: [
11
- { facetType: 'mediatype', bucketKey: 'movies' },
12
- { facetType: 'creator', bucketKey: '__QUERY' },
13
- ],
14
- },
15
- ];
16
-
17
- const AUTHOR_SMART_FACETS: SmartFacet[] = [
18
- {
19
- label: 'Writing by __QUERY',
20
- facets: [
21
- { facetType: 'mediatype', bucketKey: 'texts' },
22
- { facetType: 'creator', bucketKey: '__QUERY' },
23
- ],
24
- },
25
- ];
26
-
27
- const VISUAL_ARTIST_SMART_FACETS: SmartFacet[] = [
28
- {
29
- label: 'Images by __QUERY',
30
- facets: [
31
- { facetType: 'mediatype', bucketKey: 'image' },
32
- { facetType: 'creator', bucketKey: '__QUERY' },
33
- ],
34
- },
35
- ];
36
-
37
- const MUSICIAN_SMART_FACETS: SmartFacet[] = [
38
- {
39
- label: 'Music by __QUERY',
40
- facets: [
41
- { facetType: 'mediatype', bucketKey: 'audio' },
42
- { facetType: 'creator', bucketKey: '__QUERY' },
43
- ],
44
- },
45
- ];
46
-
47
- /**
48
- * Map from Wikidata description keywords for a given entity to a
49
- * set of likely-relevant "smart facets" for that query.
50
- *
51
- * The placeholder string "__QUERY" should be substituted for the actual
52
- * queried entity when generating facet values.
53
- */
54
- export const WIKIDATA_ENTITIES: Readonly<KeywordFacetMap> = {
55
- 'written work': WRITTEN_WORK_SMART_FACETS,
56
- literature: WRITTEN_WORK_SMART_FACETS,
57
- book: WRITTEN_WORK_SMART_FACETS,
58
- novel: WRITTEN_WORK_SMART_FACETS,
59
-
60
- filmmaker: FILMMAKER_SMART_FACETS,
61
- director: FILMMAKER_SMART_FACETS,
62
-
63
- author: AUTHOR_SMART_FACETS,
64
- writer: AUTHOR_SMART_FACETS,
65
- novelist: AUTHOR_SMART_FACETS,
66
- essayist: AUTHOR_SMART_FACETS,
67
- poet: AUTHOR_SMART_FACETS,
68
-
69
- 'visual artist': VISUAL_ARTIST_SMART_FACETS,
70
- 'graphic artist': VISUAL_ARTIST_SMART_FACETS,
71
- photographer: VISUAL_ARTIST_SMART_FACETS,
72
- painter: VISUAL_ARTIST_SMART_FACETS,
73
-
74
- singer: MUSICIAN_SMART_FACETS,
75
- songwriter: MUSICIAN_SMART_FACETS,
76
- musician: MUSICIAN_SMART_FACETS,
77
- composer: MUSICIAN_SMART_FACETS,
78
- pianist: MUSICIAN_SMART_FACETS,
79
- };
@@ -1,93 +0,0 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../../models';
2
- import { WIKIDATA_ENTITIES } from './wikidata-entity-map';
3
-
4
- // If wikidata describes the top query result as X, recommend facet Y, e.g.:
5
- // X Y
6
- // written work mt:texts
7
- // film mt:movies
8
- // author mt:texts and creator:<query>
9
- // filmmaker mt:movies and creator:<query>
10
- // photographer mt:image and creator:<query>
11
- // visual artist mt:image and creator:<query>
12
- // etc.
13
- export class WikidataHeuristic implements SmartQueryHeuristic {
14
- private readonly WIKIDATA_BASE_URL = 'https://www.wikidata.org/w/api.php';
15
-
16
- private readonly WIKIDATA_DEFAULT_ARGS =
17
- '?action=wbsearchentities&format=json&language=en&uselang=en&origin=*&type=item&limit=5';
18
-
19
- /**
20
- * Returns the full URL for a Wikidata search for the given query
21
- * @param query The query to search for
22
- */
23
- private getWikidataURL(query: string): string {
24
- const urlQuery = encodeURIComponent(query);
25
- return `${this.WIKIDATA_BASE_URL}${this.WIKIDATA_DEFAULT_ARGS}&search=${urlQuery}`;
26
- }
27
-
28
- /**
29
- * Replaces query placeholders with an actual query string, within a collection of smart facets
30
- * @param smartFacets The array of smart facets
31
- * @param query The query string to replace placeholders with
32
- * @returns A new array of smart facets with all query placeholders replaced
33
- */
34
- private replaceQueryPlaceholders(
35
- smartFacets: SmartFacet[],
36
- query: string,
37
- ): SmartFacet[] {
38
- return smartFacets.map(
39
- smartFacet =>
40
- ({
41
- // Replace placeholders within the smart facet label
42
- label: smartFacet.label?.replace('__QUERY', query),
43
- // Replace placeholders within the facets themselves (buckets & display text)
44
- facets: smartFacet.facets.map(facet => {
45
- const replaced = {
46
- ...facet,
47
- bucketKey: facet.bucketKey.replace(
48
- '__QUERY',
49
- query.toLowerCase(),
50
- ),
51
- };
52
-
53
- if (facet.displayText) {
54
- replaced.displayText = replaced.displayText?.replace(
55
- '__QUERY',
56
- query,
57
- );
58
- }
59
-
60
- return replaced;
61
- }),
62
- }) as SmartFacet,
63
- );
64
- }
65
-
66
- /**
67
- * @inheritdoc
68
- */
69
- async getRecommendedFacets(query: string): Promise<SmartFacet[]> {
70
- const recommendations: SmartFacet[] = [];
71
-
72
- try {
73
- const wikidataURL = this.getWikidataURL(query);
74
- const wikidataResponse = await fetch(wikidataURL);
75
- const searchResults = await wikidataResponse.json();
76
-
77
- for (const [keyword, facets] of Object.entries(WIKIDATA_ENTITIES)) {
78
- const keywordRegex = new RegExp(`\\b${keyword}\\b`);
79
- if (keywordRegex.test(searchResults.search[0]?.description)) {
80
- const entityName = searchResults.search[0].label;
81
- recommendations.push(
82
- ...this.replaceQueryPlaceholders(facets, entityName),
83
- );
84
- }
85
- }
86
-
87
- return recommendations;
88
- } catch (err) {
89
- console.warn(err);
90
- return [];
91
- }
92
- }
93
- }
@@ -1,36 +0,0 @@
1
- import type { FacetEventDetails, FacetOption } from '../../models';
2
-
3
- export interface FacetRef {
4
- facetType: FacetOption;
5
- bucketKey: string;
6
- displayText?: string;
7
- }
8
-
9
- interface LabeledSmartFacet {
10
- label: string;
11
- facets: FacetRef[];
12
- selected?: boolean;
13
- }
14
-
15
- interface UnlabeledSmartFacet {
16
- label?: string;
17
- facets: [FacetRef];
18
- selected?: boolean;
19
- }
20
-
21
- export type SmartFacet = LabeledSmartFacet | UnlabeledSmartFacet;
22
-
23
- export interface SmartFacetEvent {
24
- smartFacet: SmartFacet;
25
- details: FacetEventDetails[];
26
- }
27
-
28
- export type KeywordFacetMap = Record<string, SmartFacet[]>;
29
-
30
- export interface SmartQueryHeuristic {
31
- /**
32
- * Resolves to a recommended set of facets to apply for the given query
33
- * @param query The search query to recommend facets for
34
- */
35
- getRecommendedFacets(query: string): Promise<SmartFacet[]>;
36
- }