@internetarchive/collection-browser 4.6.0 → 4.7.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 (468) hide show
  1. package/.github/workflows/ci.yml +5 -3
  2. package/.github/workflows/gh-pages-main.yml +5 -3
  3. package/.github/workflows/npm-publish.yml +7 -4
  4. package/.github/workflows/pr-preview.yml +5 -3
  5. package/README.md +7 -23
  6. package/dist/src/app-root.d.ts +1 -1
  7. package/dist/src/assets/img/icons/arrow-left.d.ts +1 -1
  8. package/dist/src/assets/img/icons/arrow-right.d.ts +1 -1
  9. package/dist/src/assets/img/icons/chevron.d.ts +1 -1
  10. package/dist/src/assets/img/icons/close-circle-dark.d.ts +1 -1
  11. package/dist/src/assets/img/icons/contract.d.ts +1 -1
  12. package/dist/src/assets/img/icons/empty-query.d.ts +1 -1
  13. package/dist/src/assets/img/icons/expand.d.ts +1 -1
  14. package/dist/src/assets/img/icons/eye-closed.d.ts +1 -1
  15. package/dist/src/assets/img/icons/eye.d.ts +1 -1
  16. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  17. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  18. package/dist/src/assets/img/icons/filter.d.ts +1 -1
  19. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  20. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  21. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  22. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  23. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  24. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  25. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  26. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  27. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  28. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  29. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/tv-commercial.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/tv-fact-check.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/tv-quote.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  37. package/dist/src/assets/img/icons/null-result.d.ts +1 -1
  38. package/dist/src/assets/img/icons/quote.d.ts +1 -1
  39. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  40. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  41. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  42. package/dist/src/assets/img/icons/views.d.ts +1 -1
  43. package/dist/src/circular-activity-indicator.d.ts +1 -1
  44. package/dist/src/collection-browser.js +24 -2
  45. package/dist/src/collection-browser.js.map +1 -1
  46. package/dist/src/collection-facets/facet-tombstone-row.d.ts +1 -1
  47. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +1 -1
  48. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +1 -1
  49. package/dist/src/collection-facets/toggle-switch.d.ts +1 -1
  50. package/dist/src/collection-facets.d.ts +2 -2
  51. package/dist/src/collection-facets.js +5 -5
  52. package/dist/src/collection-facets.js.map +1 -1
  53. package/dist/src/expanded-date-picker.d.ts +2 -2
  54. package/dist/src/expanded-date-picker.js +3 -3
  55. package/dist/src/expanded-date-picker.js.map +1 -1
  56. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +1 -1
  57. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  58. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  59. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  60. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  61. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  62. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  63. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  64. package/dist/src/sort-filter-bar/sort-filter-bar.js +1 -0
  65. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  66. package/dist/src/tiles/collection-browser-loading-tile.d.ts +1 -1
  67. package/dist/src/tiles/image-block.d.ts +1 -1
  68. package/dist/src/tiles/item-image.d.ts +1 -1
  69. package/dist/src/tiles/item-image.js +1 -1
  70. package/dist/src/tiles/item-image.js.map +1 -1
  71. package/dist/src/tiles/list/tile-list-compact-header.d.ts +1 -1
  72. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -1
  73. package/dist/src/tiles/tile-dispatcher.d.ts +1 -1
  74. package/dist/src/tiles/tile-mediatype-icon.d.ts +1 -1
  75. package/dist/test/collection-browser.test.js +38 -4
  76. package/dist/test/collection-browser.test.js.map +1 -1
  77. package/dist/test/collection-facets.test.js +2 -2
  78. package/dist/test/collection-facets.test.js.map +1 -1
  79. package/dist/test/expanded-date-picker.test.js.map +1 -1
  80. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +22 -0
  81. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  82. package/package.json +18 -10
  83. package/{.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/pnpm-workspace.yaml → pnpm-workspace.yaml} +0 -16
  84. package/src/collection-browser.ts +26 -4
  85. package/src/collection-facets.ts +6 -6
  86. package/src/expanded-date-picker.ts +4 -4
  87. package/src/sort-filter-bar/sort-filter-bar.ts +1 -0
  88. package/src/tiles/item-image.ts +1 -1
  89. package/test/collection-browser.test.ts +64 -9
  90. package/test/collection-facets.test.ts +2 -2
  91. package/test/expanded-date-picker.test.ts +3 -3
  92. package/test/sort-filter-bar/sort-filter-bar.test.ts +29 -0
  93. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.editorconfig +0 -29
  94. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/ci.yml +0 -27
  95. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/gh-pages-main.yml +0 -39
  96. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/npm-publish.yml +0 -39
  97. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/pr-preview.yml +0 -38
  98. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.husky/pre-commit +0 -1
  99. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.prettierignore +0 -1
  100. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/LICENSE +0 -661
  101. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/README.md +0 -84
  102. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/eslint.config.mjs +0 -53
  103. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/index.html +0 -24
  104. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/index.ts +0 -29
  105. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/local.archive.org.cert +0 -86
  106. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/local.archive.org.key +0 -27
  107. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/package.json +0 -120
  108. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/renovate.json +0 -6
  109. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/app-root.ts +0 -1284
  110. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/arrow-left.ts +0 -10
  111. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/arrow-right.ts +0 -10
  112. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/chevron.ts +0 -4
  113. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/close-circle-dark.ts +0 -5
  114. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/contract.ts +0 -9
  115. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/empty-query.ts +0 -5
  116. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/expand.ts +0 -9
  117. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/eye-closed.ts +0 -5
  118. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/eye.ts +0 -5
  119. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/favorite-filled.ts +0 -10
  120. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/favorite-unfilled.ts +0 -9
  121. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/filter.ts +0 -10
  122. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/login-required.ts +0 -18
  123. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/account.ts +0 -14
  124. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/audio.ts +0 -14
  125. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/collection.ts +0 -12
  126. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/data.ts +0 -15
  127. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/etree.ts +0 -14
  128. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/film.ts +0 -14
  129. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/images.ts +0 -13
  130. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/radio.ts +0 -15
  131. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/search.ts +0 -14
  132. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/software.ts +0 -13
  133. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/texts.ts +0 -13
  134. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  135. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  136. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  137. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv.ts +0 -14
  138. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/video.ts +0 -14
  139. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/web.ts +0 -13
  140. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/null-result.ts +0 -5
  141. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/quote.ts +0 -7
  142. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/restricted.ts +0 -13
  143. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/reviews.ts +0 -11
  144. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/upload.ts +0 -12
  145. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/views.ts +0 -11
  146. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/circular-activity-indicator.ts +0 -64
  147. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-browser.ts +0 -3165
  148. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facet-row.ts +0 -309
  149. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facet-tombstone-row.ts +0 -40
  150. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facets-template.ts +0 -85
  151. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/models.ts +0 -10
  152. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/more-facets-content.ts +0 -644
  153. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/more-facets-pagination.ts +0 -294
  154. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/dedupe.ts +0 -44
  155. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  156. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  157. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  158. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  159. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  160. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  161. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/models.ts +0 -36
  162. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  163. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  164. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  165. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  166. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  167. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/toggle-switch.ts +0 -174
  168. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets.ts +0 -1013
  169. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-data-source-interface.ts +0 -351
  170. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-data-source.ts +0 -1474
  171. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-query-state.ts +0 -60
  172. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/models.ts +0 -56
  173. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/empty-placeholder.ts +0 -192
  174. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/expanded-date-picker.ts +0 -191
  175. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/language-code-handler/language-code-handler.ts +0 -64
  176. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/language-code-handler/language-code-mapping.ts +0 -564
  177. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/manage/manage-bar.ts +0 -276
  178. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/manage/remove-items-modal-content.ts +0 -102
  179. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/mediatype/mediatype-config.ts +0 -146
  180. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/models.ts +0 -895
  181. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/restoration-state-handler.ts +0 -550
  182. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  183. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/alpha-bar.ts +0 -252
  184. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/compact.ts +0 -5
  185. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/list.ts +0 -5
  186. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  187. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  188. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  189. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  190. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/tile.ts +0 -5
  191. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/sort-filter-bar.ts +0 -733
  192. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/ia-button.ts +0 -139
  193. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/item-image-styles.ts +0 -124
  194. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/sr-only.ts +0 -18
  195. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/tile-action-styles.ts +0 -59
  196. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/base-tile-component.ts +0 -124
  197. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/collection-browser-loading-tile.ts +0 -26
  198. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/account-tile.ts +0 -113
  199. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/collection-tile.ts +0 -184
  200. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/item-tile.ts +0 -347
  201. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/search-tile.ts +0 -90
  202. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  203. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/tile-stats.ts +0 -211
  204. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/hover/hover-pane-controller.ts +0 -638
  205. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/hover/tile-hover-pane.ts +0 -184
  206. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/image-block.ts +0 -162
  207. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/item-image.ts +0 -214
  208. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list-compact-header.ts +0 -112
  209. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list-compact.ts +0 -278
  210. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list.ts +0 -718
  211. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/models.ts +0 -21
  212. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/overlay/icon-overlay.ts +0 -57
  213. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/overlay/text-overlay.ts +0 -79
  214. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/review-block.ts +0 -130
  215. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/text-snippet-block.ts +0 -132
  216. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-dispatcher.ts +0 -637
  217. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-display-value-provider.ts +0 -133
  218. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-mediatype-icon.ts +0 -133
  219. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/analytics-events.ts +0 -29
  220. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/array-equals.ts +0 -8
  221. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/collapse-repeated-quotes.ts +0 -13
  222. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/date-filter-field.ts +0 -11
  223. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/facet-utils.ts +0 -183
  224. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-count.ts +0 -95
  225. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-date.ts +0 -62
  226. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-unit-size.ts +0 -43
  227. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/local-date-from-utc.ts +0 -15
  228. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/log.ts +0 -14
  229. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/resolve-mediatype.ts +0 -26
  230. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/sha1.ts +0 -9
  231. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-browser.test.ts +0 -2639
  232. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/facet-row.test.ts +0 -421
  233. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/facets-template.test.ts +0 -139
  234. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/more-facets-content.test.ts +0 -231
  235. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/more-facets-pagination.test.ts +0 -201
  236. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/toggle-switch.test.ts +0 -164
  237. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets.test.ts +0 -928
  238. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/data-source/collection-browser-data-source.test.ts +0 -193
  239. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/empty-placeholder.test.ts +0 -88
  240. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/expanded-date-picker.test.ts +0 -201
  241. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/icon-overlay.test.ts +0 -38
  242. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/image-block.test.ts +0 -247
  243. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/item-image.test.ts +0 -220
  244. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/manage/manage-bar.test.ts +0 -347
  245. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/manage/remove-items-modal-content.test.ts +0 -81
  246. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mediatype-config.test.ts +0 -11
  247. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-analytics-handler.ts +0 -30
  248. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-search-responses.ts +0 -1364
  249. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-search-service.ts +0 -134
  250. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/restoration-state-handler.test.ts +0 -480
  251. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/review-block.test.ts +0 -62
  252. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  253. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  254. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/sort-filter-bar.test.ts +0 -443
  255. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/text-overlay.test.ts +0 -55
  256. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/text-snippet-block.test.ts +0 -85
  257. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tile-stats.test.ts +0 -191
  258. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/account-tile.test.ts +0 -121
  259. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/collection-tile.test.ts +0 -114
  260. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/item-tile.test.ts +0 -520
  261. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/search-tile.test.ts +0 -75
  262. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  263. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  264. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  265. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list-compact.test.ts +0 -282
  266. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list.test.ts +0 -576
  267. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-dispatcher.test.ts +0 -320
  268. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-display-value-provider.test.ts +0 -172
  269. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-mediatype-icon.test.ts +0 -160
  270. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/array-equals.test.ts +0 -31
  271. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-count.test.ts +0 -32
  272. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-date.test.ts +0 -89
  273. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-unit-size.test.ts +0 -21
  274. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/local-date-from-utc.test.ts +0 -37
  275. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/tsconfig.json +0 -25
  276. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/types/dompurify.d.ts +0 -1
  277. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/vite.config.ts +0 -29
  278. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/web-dev-server.config.mjs +0 -30
  279. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/web-test-runner.config.mjs +0 -52
  280. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/yarn.lock +0 -5965
  281. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.editorconfig +0 -29
  282. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.github/workflows/ci.yml +0 -29
  283. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.github/workflows/gh-pages-main.yml +0 -41
  284. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.github/workflows/npm-publish.yml +0 -42
  285. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.github/workflows/pr-preview.yml +0 -40
  286. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.husky/pre-commit +0 -1
  287. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/.prettierignore +0 -1
  288. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/LICENSE +0 -661
  289. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/README.md +0 -68
  290. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/eslint.config.mjs +0 -53
  291. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/index.html +0 -24
  292. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/index.ts +0 -29
  293. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/local.archive.org.cert +0 -86
  294. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/local.archive.org.key +0 -27
  295. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/package.json +0 -129
  296. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/pnpm-lock.yaml +0 -7366
  297. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/renovate.json +0 -6
  298. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/app-root.ts +0 -1284
  299. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/arrow-left.ts +0 -10
  300. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/arrow-right.ts +0 -10
  301. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/chevron.ts +0 -4
  302. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/close-circle-dark.ts +0 -5
  303. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/contract.ts +0 -9
  304. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/empty-query.ts +0 -5
  305. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/expand.ts +0 -9
  306. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/eye-closed.ts +0 -5
  307. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/eye.ts +0 -5
  308. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/favorite-filled.ts +0 -10
  309. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/favorite-unfilled.ts +0 -9
  310. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/filter.ts +0 -10
  311. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/login-required.ts +0 -18
  312. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/account.ts +0 -14
  313. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/audio.ts +0 -14
  314. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/collection.ts +0 -12
  315. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/data.ts +0 -15
  316. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/etree.ts +0 -14
  317. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/film.ts +0 -14
  318. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/images.ts +0 -13
  319. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/radio.ts +0 -15
  320. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/search.ts +0 -14
  321. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/software.ts +0 -13
  322. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/texts.ts +0 -13
  323. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  324. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  325. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  326. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/tv.ts +0 -14
  327. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/video.ts +0 -14
  328. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/mediatype/web.ts +0 -13
  329. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/null-result.ts +0 -5
  330. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/quote.ts +0 -7
  331. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/restricted.ts +0 -13
  332. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/reviews.ts +0 -11
  333. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/upload.ts +0 -12
  334. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/assets/img/icons/views.ts +0 -11
  335. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/circular-activity-indicator.ts +0 -64
  336. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-browser.ts +0 -3165
  337. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/facet-row.ts +0 -309
  338. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/facet-tombstone-row.ts +0 -40
  339. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/facets-template.ts +0 -85
  340. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/models.ts +0 -10
  341. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/more-facets-content.ts +0 -644
  342. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/more-facets-pagination.ts +0 -294
  343. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/dedupe.ts +0 -44
  344. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  345. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  346. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  347. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  348. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  349. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  350. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/models.ts +0 -36
  351. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  352. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  353. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  354. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  355. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  356. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets/toggle-switch.ts +0 -174
  357. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/collection-facets.ts +0 -1013
  358. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/data-source/collection-browser-data-source-interface.ts +0 -351
  359. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/data-source/collection-browser-data-source.ts +0 -1474
  360. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/data-source/collection-browser-query-state.ts +0 -60
  361. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/data-source/models.ts +0 -56
  362. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/empty-placeholder.ts +0 -192
  363. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/expanded-date-picker.ts +0 -191
  364. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/language-code-handler/language-code-handler.ts +0 -64
  365. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/language-code-handler/language-code-mapping.ts +0 -564
  366. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/manage/manage-bar.ts +0 -276
  367. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/manage/remove-items-modal-content.ts +0 -102
  368. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/mediatype/mediatype-config.ts +0 -146
  369. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/models.ts +0 -895
  370. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/restoration-state-handler.ts +0 -550
  371. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  372. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/alpha-bar.ts +0 -252
  373. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/compact.ts +0 -5
  374. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/list.ts +0 -5
  375. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  376. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  377. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  378. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  379. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/img/tile.ts +0 -5
  380. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/sort-filter-bar/sort-filter-bar.ts +0 -733
  381. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/styles/ia-button.ts +0 -139
  382. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/styles/item-image-styles.ts +0 -124
  383. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/styles/sr-only.ts +0 -18
  384. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/styles/tile-action-styles.ts +0 -59
  385. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/base-tile-component.ts +0 -124
  386. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/collection-browser-loading-tile.ts +0 -26
  387. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/grid/account-tile.ts +0 -113
  388. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/grid/collection-tile.ts +0 -184
  389. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/grid/item-tile.ts +0 -347
  390. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/grid/search-tile.ts +0 -90
  391. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  392. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/grid/tile-stats.ts +0 -211
  393. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/hover/hover-pane-controller.ts +0 -638
  394. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/hover/tile-hover-pane.ts +0 -184
  395. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/image-block.ts +0 -162
  396. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/item-image.ts +0 -214
  397. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/list/tile-list-compact-header.ts +0 -112
  398. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/list/tile-list-compact.ts +0 -278
  399. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/list/tile-list.ts +0 -718
  400. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/models.ts +0 -21
  401. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/overlay/icon-overlay.ts +0 -57
  402. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/overlay/text-overlay.ts +0 -79
  403. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/review-block.ts +0 -130
  404. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/text-snippet-block.ts +0 -132
  405. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/tile-dispatcher.ts +0 -637
  406. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/tile-display-value-provider.ts +0 -133
  407. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/tiles/tile-mediatype-icon.ts +0 -133
  408. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/analytics-events.ts +0 -29
  409. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/array-equals.ts +0 -8
  410. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/collapse-repeated-quotes.ts +0 -13
  411. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/date-filter-field.ts +0 -11
  412. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/facet-utils.ts +0 -183
  413. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/format-count.ts +0 -95
  414. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/format-date.ts +0 -62
  415. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/format-unit-size.ts +0 -43
  416. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/local-date-from-utc.ts +0 -15
  417. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/log.ts +0 -14
  418. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/resolve-mediatype.ts +0 -26
  419. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/src/utils/sha1.ts +0 -9
  420. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-browser.test.ts +0 -2639
  421. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-facets/facet-row.test.ts +0 -421
  422. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-facets/facets-template.test.ts +0 -139
  423. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-facets/more-facets-content.test.ts +0 -231
  424. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-facets/more-facets-pagination.test.ts +0 -201
  425. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-facets/toggle-switch.test.ts +0 -164
  426. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/collection-facets.test.ts +0 -928
  427. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/data-source/collection-browser-data-source.test.ts +0 -193
  428. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/empty-placeholder.test.ts +0 -88
  429. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/expanded-date-picker.test.ts +0 -201
  430. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/icon-overlay.test.ts +0 -38
  431. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/image-block.test.ts +0 -247
  432. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/item-image.test.ts +0 -220
  433. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/manage/manage-bar.test.ts +0 -347
  434. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/manage/remove-items-modal-content.test.ts +0 -81
  435. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/mediatype-config.test.ts +0 -11
  436. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/mocks/mock-analytics-handler.ts +0 -30
  437. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/mocks/mock-search-responses.ts +0 -1364
  438. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/mocks/mock-search-service.ts +0 -134
  439. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/restoration-state-handler.test.ts +0 -480
  440. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/review-block.test.ts +0 -62
  441. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  442. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  443. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/sort-filter-bar/sort-filter-bar.test.ts +0 -443
  444. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/text-overlay.test.ts +0 -55
  445. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/text-snippet-block.test.ts +0 -85
  446. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tile-stats.test.ts +0 -191
  447. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/grid/account-tile.test.ts +0 -121
  448. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/grid/collection-tile.test.ts +0 -114
  449. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/grid/item-tile.test.ts +0 -520
  450. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/grid/search-tile.test.ts +0 -75
  451. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  452. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  453. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  454. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/list/tile-list-compact.test.ts +0 -282
  455. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/list/tile-list.test.ts +0 -576
  456. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/tile-dispatcher.test.ts +0 -320
  457. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/tile-display-value-provider.test.ts +0 -172
  458. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/tiles/tile-mediatype-icon.test.ts +0 -160
  459. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/utils/array-equals.test.ts +0 -31
  460. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/utils/format-count.test.ts +0 -32
  461. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/utils/format-date.test.ts +0 -89
  462. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/utils/format-unit-size.test.ts +0 -21
  463. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/test/utils/local-date-from-utc.test.ts +0 -37
  464. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/tsconfig.json +0 -25
  465. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/types/dompurify.d.ts +0 -1
  466. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/vite.config.ts +0 -29
  467. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/web-dev-server.config.mjs +0 -30
  468. package/.claude/worktrees/WEBDEV-9119-migrate-to-pnpm/web-test-runner.config.mjs +0 -52
@@ -1,134 +0,0 @@
1
- import type { Result } from '@internetarchive/result-type';
2
- import type {
3
- SearchParams,
4
- SearchResponse,
5
- SearchServiceInterface,
6
- SearchServiceError,
7
- SearchType,
8
- } from '@internetarchive/search-service';
9
- import {
10
- getMockSuccessSingleResult,
11
- getMockSuccessMultipleResults,
12
- getMockSuccessSingleResultWithSort,
13
- getMockSuccessLoggedInResult,
14
- getMockSuccessNoPreviewResult,
15
- getMockSuccessLoggedInAndNoPreviewResult,
16
- getMockSuccessWithYearHistogramAggs,
17
- getMockSuccessWithDateHistogramAggs,
18
- getMockSuccessMultiLineDescription,
19
- getMockSuccessFirstTitleResult,
20
- getMockSuccessFirstCreatorResult,
21
- getMockErrorResult,
22
- getMockMalformedResult,
23
- getMockSuccessWithCollectionTitles,
24
- getMockSuccessWithChannelAliases,
25
- getMockSuccessWithCollectionAggregations,
26
- getMockSuccessExtraQuotedHref,
27
- getMockSuccessWithDefaultSort,
28
- getMockSuccessWithConciseDefaultSort,
29
- getMockSuccessWithDefaultFavSort,
30
- getMockSuccessWithParentCollections,
31
- getMockSuccessForTvCollection,
32
- getMockSuccessManyFields,
33
- getMockSuccessNoResults,
34
- getMockSuccessWithWebArchiveHits,
35
- getMockSuccessWithManyAggregations,
36
- getMockSuccessTvFields,
37
- getMockSuccessArchiveOrgUserResult,
38
- getMockSuccessArchiveOrgUserNoBlurResult,
39
- } from './mock-search-responses';
40
-
41
- const responses: Record<
42
- string,
43
- () => Result<SearchResponse, SearchServiceError>
44
- > = {
45
- 'single-result': getMockSuccessSingleResult,
46
- years: getMockSuccessWithYearHistogramAggs,
47
- months: getMockSuccessWithDateHistogramAggs,
48
- 'multi-line-description': getMockSuccessMultiLineDescription,
49
- loggedin: getMockSuccessLoggedInResult,
50
- 'no-preview': getMockSuccessNoPreviewResult,
51
- 'loggedin-no-preview': getMockSuccessLoggedInAndNoPreviewResult,
52
- 'archive-org-user-loggedin': getMockSuccessArchiveOrgUserResult,
53
- 'archive-org-user-loggedin-noblur': getMockSuccessArchiveOrgUserNoBlurResult,
54
- 'first-title': getMockSuccessFirstTitleResult,
55
- 'first-creator': getMockSuccessFirstCreatorResult,
56
- 'collection-titles': getMockSuccessWithCollectionTitles,
57
- 'channel-aliases': getMockSuccessWithChannelAliases,
58
- 'collection-aggregations': getMockSuccessWithCollectionAggregations,
59
- 'extra-quoted-href': getMockSuccessExtraQuotedHref,
60
- 'default-sort': getMockSuccessWithDefaultSort,
61
- 'default-sort-concise': getMockSuccessWithConciseDefaultSort,
62
- 'fav-sort': getMockSuccessWithDefaultFavSort,
63
- 'parent-collections': getMockSuccessWithParentCollections,
64
- 'tv-collection': getMockSuccessForTvCollection,
65
- 'web-archive': getMockSuccessWithWebArchiveHits,
66
- 'more-facets': getMockSuccessWithManyAggregations,
67
- 'many-fields': getMockSuccessManyFields,
68
- 'tv-fields': getMockSuccessTvFields,
69
- 'no-results': getMockSuccessNoResults,
70
- error: getMockErrorResult,
71
- malformed: getMockMalformedResult,
72
- };
73
-
74
- export class MockSearchService implements SearchServiceInterface {
75
- searchParams?: SearchParams;
76
-
77
- searchType?: SearchType;
78
-
79
- asyncResponse: boolean;
80
-
81
- asyncResponseDelay: number;
82
-
83
- resultsSpy: Function;
84
-
85
- constructor({
86
- asyncResponse = false,
87
- asyncResponseDelay = 0,
88
- resultsSpy = () => {},
89
- } = {}) {
90
- this.asyncResponse = asyncResponse;
91
- this.asyncResponseDelay = asyncResponseDelay;
92
- this.resultsSpy = resultsSpy;
93
- }
94
-
95
- async search(
96
- params: SearchParams,
97
- searchType: SearchType,
98
- ): Promise<Result<SearchResponse, SearchServiceError>> {
99
- this.searchParams = params;
100
- this.searchType = searchType;
101
-
102
- if (this.asyncResponse) {
103
- // Add an artificial 1-tick delay
104
- await new Promise(res => {
105
- setTimeout(res, this.asyncResponseDelay);
106
- });
107
- }
108
-
109
- const responseKey =
110
- (this.searchParams.query || this.searchParams.pageTarget) ?? '';
111
- const resultFn: () => Result<SearchResponse, SearchServiceError> =
112
- responses[responseKey] ?? getMockSuccessMultipleResults;
113
- let result = resultFn();
114
-
115
- // with-sort query has special handling
116
- if (this.searchParams.query === 'with-sort') {
117
- result = getMockSuccessSingleResultWithSort(this.resultsSpy);
118
- }
119
-
120
- // Apply any uid param from the request
121
- if (result.success) {
122
- (result.success.request.clientParameters as any).uid = params.uid;
123
- }
124
-
125
- return result;
126
- }
127
-
128
- async itemDetails(
129
- _: string,
130
- ): Promise<Result<SearchResponse, SearchServiceError>> {
131
- // We don't currently use the itemDetails method in collection-browser
132
- throw new Error('not implemented');
133
- }
134
- }
@@ -1,480 +0,0 @@
1
- import { SearchType } from '@internetarchive/search-service';
2
- import { expect } from '@open-wc/testing';
3
- import { SortField, getDefaultSelectedFacets } from '../src/models';
4
- import { RestorationStateHandler } from '../src/restoration-state-handler';
5
-
6
- describe('Restoration state handler', () => {
7
- it('should restore query from URL', async () => {
8
- const handler = new RestorationStateHandler({ context: 'search' });
9
-
10
- const url = new URL(window.location.href);
11
- url.search = '?query=boop';
12
- window.history.replaceState({ path: url.href }, '', url.href);
13
-
14
- const restorationState = handler.getRestorationState();
15
- expect(restorationState.baseQuery).to.equal('boop');
16
- });
17
-
18
- it('should restore default search type from URL without valid sin', async () => {
19
- const handler = new RestorationStateHandler({ context: 'search' });
20
-
21
- const url = new URL(window.location.href);
22
- url.search = '?sin=foo';
23
- window.history.replaceState({ path: url.href }, '', url.href);
24
-
25
- const restorationState = handler.getRestorationState();
26
- expect(restorationState.searchType).to.equal(SearchType.DEFAULT);
27
- });
28
-
29
- it('should restore default search type if sin explicitly empty in URL', async () => {
30
- const handler = new RestorationStateHandler({ context: 'search' });
31
-
32
- const url = new URL(window.location.href);
33
- url.search = '?sin=';
34
- window.history.replaceState({ path: url.href }, '', url.href);
35
-
36
- const restorationState = handler.getRestorationState();
37
- expect(restorationState.searchType).to.equal(SearchType.DEFAULT);
38
- });
39
-
40
- it('should restore full text search type from URL', async () => {
41
- const handler = new RestorationStateHandler({ context: 'search' });
42
-
43
- const url = new URL(window.location.href);
44
- url.search = '?sin=TXT';
45
- window.history.replaceState({ path: url.href }, '', url.href);
46
-
47
- const restorationState = handler.getRestorationState();
48
- expect(restorationState.searchType).to.equal(SearchType.FULLTEXT);
49
- });
50
-
51
- it('should restore radio search type from URL', async () => {
52
- const handler = new RestorationStateHandler({ context: 'search' });
53
-
54
- const url = new URL(window.location.href);
55
- url.search = '?sin=RADIO';
56
- window.history.replaceState({ path: url.href }, '', url.href);
57
-
58
- const restorationState = handler.getRestorationState();
59
- expect(restorationState.searchType).to.equal(SearchType.RADIO);
60
- });
61
-
62
- it('should restore TV search type from URL', async () => {
63
- const handler = new RestorationStateHandler({ context: 'search' });
64
-
65
- const url = new URL(window.location.href);
66
- url.search = '?sin=TV';
67
- window.history.replaceState({ path: url.href }, '', url.href);
68
-
69
- const restorationState = handler.getRestorationState();
70
- expect(restorationState.searchType).to.equal(SearchType.TV);
71
- });
72
-
73
- it('should restore metadata search type from URL', async () => {
74
- const handler = new RestorationStateHandler({ context: 'search' });
75
-
76
- const url = new URL(window.location.href);
77
- url.search = '?sin=MD';
78
- window.history.replaceState({ path: url.href }, '', url.href);
79
-
80
- const restorationState = handler.getRestorationState();
81
- expect(restorationState.searchType).to.equal(SearchType.METADATA);
82
- });
83
-
84
- it('should restore page number from URL', async () => {
85
- const handler = new RestorationStateHandler({ context: 'search' });
86
-
87
- const url = new URL(window.location.href);
88
- url.search = '?page=42';
89
- window.history.replaceState({ path: url.href }, '', url.href);
90
-
91
- const restorationState = handler.getRestorationState();
92
- expect(restorationState.currentPage).to.equal(42);
93
- });
94
-
95
- it('should restore selected year facets from URL', async () => {
96
- const handler = new RestorationStateHandler({ context: 'search' });
97
-
98
- const url = new URL(window.location.href);
99
- url.search = '?and[]=year:"2018"';
100
- window.history.replaceState({ path: url.href }, '', url.href);
101
-
102
- const restorationState = handler.getRestorationState();
103
- expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(
104
- 'selected',
105
- );
106
- });
107
-
108
- it('should ignore unrecognized facet types in URL', async () => {
109
- const handler = new RestorationStateHandler({ context: 'search' });
110
-
111
- const url = new URL(window.location.href);
112
- url.search = '?and[]=foo:"bar"';
113
- window.history.replaceState({ path: url.href }, '', url.href);
114
-
115
- const restorationState = handler.getRestorationState();
116
- expect(restorationState.selectedFacets).to.deep.equal(
117
- getDefaultSelectedFacets(),
118
- );
119
- });
120
-
121
- it('should restore selected date range facets from URL', async () => {
122
- const handler = new RestorationStateHandler({ context: 'search' });
123
-
124
- const url = new URL(window.location.href);
125
- url.search = '?and[]=year:"2018+TO+2021"';
126
- window.history.replaceState({ path: url.href }, '', url.href);
127
-
128
- const restorationState = handler.getRestorationState();
129
- expect(restorationState.minSelectedDate).to.equal('2018');
130
- expect(restorationState.maxSelectedDate).to.equal('2021');
131
- });
132
-
133
- it('should restore creator filter from URL', async () => {
134
- const handler = new RestorationStateHandler({ context: 'search' });
135
-
136
- const url = new URL(window.location.href);
137
- url.search = '?and[]=firstCreator:F';
138
- window.history.replaceState({ path: url.href }, '', url.href);
139
-
140
- const restorationState = handler.getRestorationState();
141
- expect(restorationState.selectedCreatorFilter).to.equal('F');
142
- });
143
-
144
- it('should restore title filter from URL', async () => {
145
- const handler = new RestorationStateHandler({ context: 'search' });
146
-
147
- const url = new URL(window.location.href);
148
- url.search = '?and[]=firstTitle:F';
149
- window.history.replaceState({ path: url.href }, '', url.href);
150
-
151
- const restorationState = handler.getRestorationState();
152
- expect(restorationState.selectedTitleFilter).to.equal('F');
153
- });
154
-
155
- it('should restore other selected facets from URL', async () => {
156
- const handler = new RestorationStateHandler({ context: 'search' });
157
-
158
- const url = new URL(window.location.href);
159
- url.search = '?and[]=subject:"foo"';
160
- window.history.replaceState({ path: url.href }, '', url.href);
161
-
162
- const restorationState = handler.getRestorationState();
163
- expect(restorationState.selectedFacets.subject?.foo.state).to.equal(
164
- 'selected',
165
- );
166
- });
167
-
168
- it('should restore negative facets from URL', async () => {
169
- const handler = new RestorationStateHandler({ context: 'search' });
170
-
171
- const url = new URL(window.location.href);
172
- url.search = '?not[]=year:2018';
173
- window.history.replaceState({ path: url.href }, '', url.href);
174
-
175
- const restorationState = handler.getRestorationState();
176
- expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(
177
- 'hidden',
178
- );
179
- });
180
-
181
- it('should restore multiple selected/negative facets from URL', async () => {
182
- const handler = new RestorationStateHandler({ context: 'search' });
183
-
184
- const url = new URL(window.location.href);
185
- url.search =
186
- '?and[]=collection:"foo"&and[]=collection:"bar"&not[]=collection:"baz"&not[]=collection:"boop"';
187
- window.history.replaceState({ path: url.href }, '', url.href);
188
-
189
- const restorationState = handler.getRestorationState();
190
-
191
- expect(restorationState.selectedFacets.collection?.foo.state).to.equal(
192
- 'selected',
193
- );
194
- expect(restorationState.selectedFacets.collection?.bar.state).to.equal(
195
- 'selected',
196
- );
197
-
198
- expect(restorationState.selectedFacets.collection?.baz.state).to.equal(
199
- 'hidden',
200
- );
201
- expect(restorationState.selectedFacets.collection?.boop.state).to.equal(
202
- 'hidden',
203
- );
204
- });
205
-
206
- it('negative facets take precedence if both present in URL', async () => {
207
- const handler = new RestorationStateHandler({ context: 'search' });
208
-
209
- const url = new URL(window.location.href);
210
- url.search = '?and[]=collection:"foo"&not[]=collection:"foo"';
211
- window.history.replaceState({ path: url.href }, '', url.href);
212
-
213
- const restorationState = handler.getRestorationState();
214
- expect(restorationState.selectedFacets.collection?.foo.state).to.equal(
215
- 'hidden',
216
- );
217
- });
218
-
219
- it('should restore selected facets with numbers in the square brackets', async () => {
220
- const handler = new RestorationStateHandler({ context: 'search' });
221
-
222
- const url = new URL(window.location.href);
223
- url.search = '?and[12]=subject:"foo"';
224
- window.history.replaceState({ path: url.href }, '', url.href);
225
-
226
- const restorationState = handler.getRestorationState();
227
- expect(restorationState.selectedFacets.subject?.foo.state).to.equal(
228
- 'selected',
229
- );
230
- });
231
-
232
- it('should restore negative facets with numbers in the square brackets', async () => {
233
- const handler = new RestorationStateHandler({ context: 'search' });
234
-
235
- const url = new URL(window.location.href);
236
- url.search = '?not[12]=year:2018';
237
- window.history.replaceState({ path: url.href }, '', url.href);
238
-
239
- const restorationState = handler.getRestorationState();
240
- expect(restorationState.selectedFacets.year?.['2018'].state).to.equal(
241
- 'hidden',
242
- );
243
- });
244
-
245
- it('should restore any TV clip filters from URL', async () => {
246
- const handler = new RestorationStateHandler({ context: 'search' });
247
- const url = new URL(window.location.href);
248
-
249
- // Commercials
250
- url.search = '?only_commercials=1';
251
- window.history.replaceState({ path: url.href }, '', url.href);
252
- const commercialsRestorationState = handler.getRestorationState();
253
- expect(
254
- commercialsRestorationState.selectedFacets.clip_type?.commercial.state,
255
- ).to.equal('selected');
256
-
257
- // Fact checks
258
- url.search = '?only_factchecks=1';
259
- window.history.replaceState({ path: url.href }, '', url.href);
260
- const factchecksRestorationState = handler.getRestorationState();
261
- expect(
262
- factchecksRestorationState.selectedFacets.clip_type?.['fact check'].state,
263
- ).to.equal('selected');
264
-
265
- // Quotes
266
- url.search = '?only_quotes=1';
267
- window.history.replaceState({ path: url.href }, '', url.href);
268
- const quotesRestorationState = handler.getRestorationState();
269
- expect(
270
- quotesRestorationState.selectedFacets.clip_type?.quote.state,
271
- ).to.equal('selected');
272
-
273
- // No filter param
274
- url.search = '';
275
- window.history.replaceState({ path: url.href }, '', url.href);
276
- const unfilteredRestorationState = handler.getRestorationState();
277
- expect(unfilteredRestorationState.selectedFacets.clip_type).to.deep.equal(
278
- {},
279
- );
280
- });
281
-
282
- it('should restore sort from URL (space format)', async () => {
283
- const handler = new RestorationStateHandler({ context: 'search' });
284
-
285
- const url = new URL(window.location.href);
286
- url.search = '?sort=date+desc';
287
- window.history.replaceState({ path: url.href }, '', url.href);
288
-
289
- const restorationState = handler.getRestorationState();
290
- expect(restorationState.selectedSort).to.equal('date');
291
- expect(restorationState.sortDirection).to.equal('desc');
292
- });
293
-
294
- it('should restore sort from URL (prefix format, desc)', async () => {
295
- const handler = new RestorationStateHandler({ context: 'search' });
296
-
297
- const url = new URL(window.location.href);
298
- url.search = '?sort=-date';
299
- window.history.replaceState({ path: url.href }, '', url.href);
300
-
301
- const restorationState = handler.getRestorationState();
302
- expect(restorationState.selectedSort).to.equal('date');
303
- expect(restorationState.sortDirection).to.equal('desc');
304
- });
305
-
306
- it('should restore sort from URL (prefix format, asc)', async () => {
307
- const handler = new RestorationStateHandler({ context: 'search' });
308
-
309
- const url = new URL(window.location.href);
310
- url.search = '?sort=date';
311
- window.history.replaceState({ path: url.href }, '', url.href);
312
-
313
- const restorationState = handler.getRestorationState();
314
- expect(restorationState.selectedSort).to.equal('date');
315
- expect(restorationState.sortDirection).to.equal('asc');
316
- });
317
-
318
- it('should restore sort from URL (space format)', async () => {
319
- const handler = new RestorationStateHandler({ context: 'search' });
320
-
321
- const url = new URL(window.location.href);
322
- url.search = '?sort=foo+desc';
323
- window.history.replaceState({ path: url.href }, '', url.href);
324
-
325
- const restorationState = handler.getRestorationState();
326
- expect(restorationState.selectedSort).to.equal('unrecognized');
327
- expect(restorationState.sortDirection).to.equal('desc');
328
- });
329
-
330
- it('should restore unrecognized sort from URL (prefix format)', async () => {
331
- const handler = new RestorationStateHandler({ context: 'search' });
332
-
333
- const url = new URL(window.location.href);
334
- url.search = '?sort=-foo';
335
- window.history.replaceState({ path: url.href }, '', url.href);
336
-
337
- const restorationState = handler.getRestorationState();
338
- expect(restorationState.selectedSort).to.equal('unrecognized');
339
- expect(restorationState.sortDirection).to.equal('desc');
340
- });
341
-
342
- it('should save direction to URL even for unrecognized sort fields', async () => {
343
- const url = new URL(window.location.href);
344
- url.search = '?sort=foo';
345
- window.history.replaceState({ path: url.href }, '', url.href);
346
-
347
- const handler = new RestorationStateHandler({ context: 'search' });
348
- handler.persistState({
349
- selectedSort: SortField.unrecognized,
350
- sortDirection: 'desc',
351
- selectedFacets: getDefaultSelectedFacets(),
352
- });
353
-
354
- expect(window.location.search).to.equal('?sort=-foo');
355
- });
356
-
357
- it('should keep existing direction for unrecognized sort fields when unspecified in state', async () => {
358
- const url = new URL(window.location.href);
359
- url.search = '?sort=foo+desc';
360
- window.history.replaceState({ path: url.href }, '', url.href);
361
-
362
- const handler = new RestorationStateHandler({ context: 'search' });
363
- handler.persistState({
364
- selectedSort: SortField.unrecognized,
365
- selectedFacets: getDefaultSelectedFacets(),
366
- });
367
-
368
- expect(window.location.search).to.equal('?sort=-foo');
369
- });
370
-
371
- it('should just ignore unrecognized sort fields w/ unknown formats', async () => {
372
- const url = new URL(window.location.href);
373
- url.search = '?sort=+foo';
374
- window.history.replaceState({ path: url.href }, '', url.href);
375
-
376
- const handler = new RestorationStateHandler({ context: 'search' });
377
- handler.persistState({
378
- selectedSort: SortField.unrecognized,
379
- selectedFacets: getDefaultSelectedFacets(),
380
- });
381
-
382
- expect(window.location.search).to.equal('?sort=+foo');
383
- });
384
-
385
- it('should not save current page state to the URL for page 1', async () => {
386
- const url = new URL(window.location.href);
387
- url.search = '';
388
- window.history.replaceState({ path: url.href }, '', url.href);
389
-
390
- const handler = new RestorationStateHandler({ context: 'search' });
391
- handler.persistState({
392
- currentPage: 1,
393
- selectedFacets: getDefaultSelectedFacets(),
394
- });
395
-
396
- expect(window.location.search).to.be.empty;
397
- });
398
-
399
- it('should save current page state to the URL when page > 1', async () => {
400
- const url = new URL(window.location.href);
401
- url.search = '';
402
- window.history.replaceState({ path: url.href }, '', url.href);
403
-
404
- const handler = new RestorationStateHandler({ context: 'search' });
405
- handler.persistState({
406
- currentPage: 2,
407
- selectedFacets: getDefaultSelectedFacets(),
408
- });
409
-
410
- expect(window.location.search).to.equal('?page=2');
411
- });
412
-
413
- it('should upgrade legacy search params to new ones', async () => {
414
- const url = new URL(window.location.href);
415
- url.search = '?q=foo';
416
- window.history.replaceState({ path: url.href }, '', url.href);
417
-
418
- const handler = new RestorationStateHandler({ context: 'search' });
419
- const restorationState = handler.getRestorationState();
420
- expect(restorationState.baseQuery).to.equal('foo');
421
-
422
- handler.persistState(restorationState);
423
- expect(window.location.search).to.equal('?query=foo');
424
- });
425
-
426
- it('should remove empty sin param', async () => {
427
- const url = new URL(window.location.href);
428
- url.search = '?sin=';
429
- window.history.replaceState({ path: url.href }, '', url.href);
430
-
431
- const handler = new RestorationStateHandler({ context: 'search' });
432
-
433
- handler.persistState({ selectedFacets: getDefaultSelectedFacets() });
434
- expect(window.location.search).to.equal('');
435
- });
436
-
437
- it('should persist metadata search type only when option is true', async () => {
438
- const url = new URL(window.location.href);
439
- url.search = '?sin=';
440
- window.history.replaceState({ path: url.href }, '', url.href);
441
-
442
- const handler = new RestorationStateHandler({ context: 'search' });
443
-
444
- handler.persistState(
445
- {
446
- selectedFacets: getDefaultSelectedFacets(),
447
- searchType: SearchType.METADATA,
448
- },
449
- { persistMetadataSearchType: false },
450
- );
451
- expect(window.location.search).to.equal('');
452
-
453
- handler.persistState(
454
- {
455
- selectedFacets: getDefaultSelectedFacets(),
456
- searchType: SearchType.METADATA,
457
- },
458
- { persistMetadataSearchType: true },
459
- );
460
- expect(window.location.search).to.equal('?sin=MD');
461
- });
462
-
463
- it('round trip load/persist should erase numbers in square brackets', async () => {
464
- const handler = new RestorationStateHandler({ context: 'search' });
465
-
466
- const url = new URL(window.location.href);
467
- url.search = '?and[0]=subject:"foo"';
468
- window.history.replaceState({ path: url.href }, '', url.href);
469
-
470
- // Load state from the URL and immediately persist it back to the URL
471
- const restorationState = handler.getRestorationState();
472
- handler.persistState(restorationState);
473
-
474
- // Ensure the new URL includes the "normalized" facet parameter and not the numbered one
475
- expect(decodeURIComponent(window.location.search)).to.include(
476
- 'and[]=subject:"foo"',
477
- );
478
- expect(new URL(window.location.href).searchParams.get('and[0]')).to.be.null;
479
- });
480
- });
@@ -1,62 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { ReviewBlock } from '../src/tiles/review-block';
4
- import '../src/tiles/review-block';
5
-
6
- describe('ReviewBlock component', () => {
7
- it('renders basic component', async () => {
8
- const el = await fixture<ReviewBlock>(
9
- html`<review-block
10
- title="Foo"
11
- body="foo bar baz"
12
- starRating="3"
13
- ></review-block>`,
14
- );
15
-
16
- el.title = 'Foo';
17
- await el.updateComplete;
18
-
19
- const container = el.shadowRoot?.querySelector('.review-container');
20
- expect(container).to.exist;
21
-
22
- const title = el.shadowRoot?.querySelector('.review-title');
23
- expect(title?.textContent?.trim()).to.equal('Foo');
24
-
25
- const body = el.shadowRoot?.querySelector('.review-body');
26
- expect(body?.textContent?.trim()).to.equal('foo bar baz');
27
-
28
- const stars = el.shadowRoot?.querySelector('.star-rating');
29
- expect(stars).to.exist;
30
- expect(stars?.querySelectorAll('svg').length).to.equal(5);
31
- expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(2);
32
- });
33
-
34
- it('renders with any of title/body/stars', async () => {
35
- const el = await fixture<ReviewBlock>(html`<review-block></review-block>`);
36
-
37
- // No content if no title/body/stars
38
- expect(el.shadowRoot?.children.length).to.equal(0);
39
-
40
- el.title = 'Foo';
41
- await el.updateComplete;
42
-
43
- const title = el.shadowRoot?.querySelector('.review-title');
44
- expect(title?.textContent?.trim()).to.equal('Foo');
45
-
46
- el.title = '';
47
- el.body = 'foo bar baz';
48
- await el.updateComplete;
49
-
50
- const body = el.shadowRoot?.querySelector('.review-body');
51
- expect(body?.textContent?.trim()).to.equal('foo bar baz');
52
-
53
- el.body = '';
54
- el.starRating = 4;
55
- await el.updateComplete;
56
-
57
- const stars = el.shadowRoot?.querySelector('.star-rating');
58
- expect(stars).to.exist;
59
- expect(stars?.querySelectorAll('svg').length).to.equal(5);
60
- expect(stars?.querySelectorAll('.unfilled-star').length).to.equal(1);
61
- });
62
- });
@@ -1,17 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { AlphaBarTooltip } from '../../src/sort-filter-bar/alpha-bar-tooltip';
4
-
5
- import '../../src/sort-filter-bar/alpha-bar-tooltip';
6
-
7
- describe('Alphabet Filter Bar Tooltips', () => {
8
- it('renders component', async () => {
9
- const el = await fixture<AlphaBarTooltip>(
10
- html`<alpha-bar-tooltip .numResults=${42}></alpha-bar-tooltip>`,
11
- );
12
-
13
- // Should render the number of results
14
- const tooltipText = el.shadowRoot?.querySelector('#tooltip-text');
15
- expect(tooltipText?.textContent?.trim()).to.equal('42 results');
16
- });
17
- });