@internetarchive/collection-browser 4.7.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 (391) hide show
  1. package/.husky/pre-commit +0 -0
  2. package/dist/src/collection-browser.js +24 -2
  3. package/dist/src/collection-browser.js.map +1 -1
  4. package/dist/src/sort-filter-bar/sort-filter-bar.js +1 -0
  5. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  6. package/dist/test/collection-browser.test.js +34 -0
  7. package/dist/test/collection-browser.test.js.map +1 -1
  8. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +22 -0
  9. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -1
  10. package/package.json +18 -16
  11. package/src/collection-browser.ts +26 -4
  12. package/src/sort-filter-bar/sort-filter-bar.ts +1 -0
  13. package/test/collection-browser.test.ts +55 -0
  14. package/test/sort-filter-bar/sort-filter-bar.test.ts +29 -0
  15. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.editorconfig +0 -29
  16. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/ci.yml +0 -27
  17. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/gh-pages-main.yml +0 -39
  18. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/npm-publish.yml +0 -39
  19. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.github/workflows/pr-preview.yml +0 -38
  20. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.husky/pre-commit +0 -1
  21. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/.prettierignore +0 -1
  22. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/LICENSE +0 -661
  23. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/README.md +0 -84
  24. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/eslint.config.mjs +0 -53
  25. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/index.html +0 -24
  26. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/index.ts +0 -29
  27. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/local.archive.org.cert +0 -86
  28. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/local.archive.org.key +0 -27
  29. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/package.json +0 -120
  30. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/renovate.json +0 -6
  31. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/app-root.ts +0 -1284
  32. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/arrow-left.ts +0 -10
  33. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/arrow-right.ts +0 -10
  34. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/chevron.ts +0 -4
  35. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/close-circle-dark.ts +0 -5
  36. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/contract.ts +0 -9
  37. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/empty-query.ts +0 -5
  38. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/expand.ts +0 -9
  39. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/eye-closed.ts +0 -5
  40. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/eye.ts +0 -5
  41. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/favorite-filled.ts +0 -10
  42. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/favorite-unfilled.ts +0 -9
  43. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/filter.ts +0 -10
  44. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/login-required.ts +0 -18
  45. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/account.ts +0 -14
  46. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/audio.ts +0 -14
  47. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/collection.ts +0 -12
  48. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/data.ts +0 -15
  49. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/etree.ts +0 -14
  50. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/film.ts +0 -14
  51. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/images.ts +0 -13
  52. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/radio.ts +0 -15
  53. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/search.ts +0 -14
  54. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/software.ts +0 -13
  55. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/texts.ts +0 -13
  56. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  57. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  58. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  59. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/tv.ts +0 -14
  60. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/video.ts +0 -14
  61. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/mediatype/web.ts +0 -13
  62. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/null-result.ts +0 -5
  63. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/quote.ts +0 -7
  64. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/restricted.ts +0 -13
  65. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/reviews.ts +0 -11
  66. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/upload.ts +0 -12
  67. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/assets/img/icons/views.ts +0 -11
  68. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/circular-activity-indicator.ts +0 -64
  69. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-browser.ts +0 -3165
  70. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facet-row.ts +0 -309
  71. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facet-tombstone-row.ts +0 -40
  72. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/facets-template.ts +0 -85
  73. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/models.ts +0 -10
  74. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/more-facets-content.ts +0 -644
  75. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/more-facets-pagination.ts +0 -294
  76. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/dedupe.ts +0 -44
  77. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  78. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  79. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  80. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  81. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  82. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  83. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/models.ts +0 -36
  84. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  85. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  86. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  87. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  88. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  89. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets/toggle-switch.ts +0 -174
  90. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/collection-facets.ts +0 -1013
  91. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-data-source-interface.ts +0 -351
  92. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-data-source.ts +0 -1474
  93. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/collection-browser-query-state.ts +0 -60
  94. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/data-source/models.ts +0 -56
  95. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/empty-placeholder.ts +0 -192
  96. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/expanded-date-picker.ts +0 -191
  97. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/language-code-handler/language-code-handler.ts +0 -64
  98. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/language-code-handler/language-code-mapping.ts +0 -564
  99. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/manage/manage-bar.ts +0 -276
  100. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/manage/remove-items-modal-content.ts +0 -102
  101. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/mediatype/mediatype-config.ts +0 -146
  102. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/models.ts +0 -895
  103. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/restoration-state-handler.ts +0 -550
  104. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  105. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/alpha-bar.ts +0 -252
  106. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/compact.ts +0 -5
  107. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/list.ts +0 -5
  108. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  109. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  110. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  111. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  112. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/img/tile.ts +0 -5
  113. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/sort-filter-bar/sort-filter-bar.ts +0 -733
  114. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/ia-button.ts +0 -139
  115. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/item-image-styles.ts +0 -124
  116. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/sr-only.ts +0 -18
  117. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/styles/tile-action-styles.ts +0 -59
  118. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/base-tile-component.ts +0 -124
  119. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/collection-browser-loading-tile.ts +0 -26
  120. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/account-tile.ts +0 -113
  121. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/collection-tile.ts +0 -184
  122. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/item-tile.ts +0 -347
  123. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/search-tile.ts +0 -90
  124. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  125. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/grid/tile-stats.ts +0 -211
  126. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/hover/hover-pane-controller.ts +0 -638
  127. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/hover/tile-hover-pane.ts +0 -184
  128. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/image-block.ts +0 -162
  129. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/item-image.ts +0 -214
  130. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list-compact-header.ts +0 -112
  131. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list-compact.ts +0 -278
  132. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/list/tile-list.ts +0 -718
  133. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/models.ts +0 -21
  134. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/overlay/icon-overlay.ts +0 -57
  135. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/overlay/text-overlay.ts +0 -79
  136. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/review-block.ts +0 -130
  137. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/text-snippet-block.ts +0 -132
  138. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-dispatcher.ts +0 -637
  139. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-display-value-provider.ts +0 -133
  140. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/tiles/tile-mediatype-icon.ts +0 -133
  141. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/analytics-events.ts +0 -29
  142. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/array-equals.ts +0 -8
  143. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/collapse-repeated-quotes.ts +0 -13
  144. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/date-filter-field.ts +0 -11
  145. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/facet-utils.ts +0 -183
  146. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-count.ts +0 -95
  147. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-date.ts +0 -62
  148. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/format-unit-size.ts +0 -43
  149. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/local-date-from-utc.ts +0 -15
  150. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/log.ts +0 -14
  151. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/resolve-mediatype.ts +0 -26
  152. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/src/utils/sha1.ts +0 -9
  153. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-browser.test.ts +0 -2639
  154. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/facet-row.test.ts +0 -421
  155. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/facets-template.test.ts +0 -139
  156. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/more-facets-content.test.ts +0 -231
  157. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/more-facets-pagination.test.ts +0 -201
  158. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets/toggle-switch.test.ts +0 -164
  159. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/collection-facets.test.ts +0 -928
  160. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/data-source/collection-browser-data-source.test.ts +0 -193
  161. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/empty-placeholder.test.ts +0 -88
  162. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/expanded-date-picker.test.ts +0 -201
  163. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/icon-overlay.test.ts +0 -38
  164. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/image-block.test.ts +0 -247
  165. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/item-image.test.ts +0 -220
  166. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/manage/manage-bar.test.ts +0 -347
  167. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/manage/remove-items-modal-content.test.ts +0 -81
  168. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mediatype-config.test.ts +0 -11
  169. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-analytics-handler.ts +0 -30
  170. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-search-responses.ts +0 -1364
  171. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/mocks/mock-search-service.ts +0 -134
  172. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/restoration-state-handler.test.ts +0 -480
  173. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/review-block.test.ts +0 -62
  174. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  175. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  176. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/sort-filter-bar/sort-filter-bar.test.ts +0 -443
  177. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/text-overlay.test.ts +0 -55
  178. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/text-snippet-block.test.ts +0 -85
  179. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tile-stats.test.ts +0 -191
  180. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/account-tile.test.ts +0 -121
  181. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/collection-tile.test.ts +0 -114
  182. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/item-tile.test.ts +0 -520
  183. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/grid/search-tile.test.ts +0 -75
  184. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  185. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  186. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  187. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list-compact.test.ts +0 -282
  188. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/list/tile-list.test.ts +0 -576
  189. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-dispatcher.test.ts +0 -320
  190. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-display-value-provider.test.ts +0 -172
  191. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/tiles/tile-mediatype-icon.test.ts +0 -160
  192. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/array-equals.test.ts +0 -31
  193. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-count.test.ts +0 -32
  194. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-date.test.ts +0 -89
  195. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/format-unit-size.test.ts +0 -21
  196. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/test/utils/local-date-from-utc.test.ts +0 -37
  197. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/tsconfig.json +0 -25
  198. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/types/dompurify.d.ts +0 -1
  199. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/vite.config.ts +0 -29
  200. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/web-dev-server.config.mjs +0 -30
  201. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/web-test-runner.config.mjs +0 -52
  202. package/.claude/worktrees/WEBDEV-8677-bump-field-parsers/yarn.lock +0 -5965
  203. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.editorconfig +0 -29
  204. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/ci.yml +0 -29
  205. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/gh-pages-main.yml +0 -41
  206. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/npm-publish.yml +0 -49
  207. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.github/workflows/pr-preview.yml +0 -40
  208. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.husky/pre-commit +0 -1
  209. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/.prettierignore +0 -1
  210. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/LICENSE +0 -661
  211. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/README.md +0 -68
  212. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/eslint.config.mjs +0 -53
  213. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/index.html +0 -24
  214. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/index.ts +0 -29
  215. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/local.archive.org.cert +0 -86
  216. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/local.archive.org.key +0 -27
  217. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/package.json +0 -129
  218. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/pnpm-lock.yaml +0 -7366
  219. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/pnpm-workspace.yaml +0 -46
  220. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/renovate.json +0 -6
  221. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/app-root.ts +0 -1284
  222. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/arrow-left.ts +0 -10
  223. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/arrow-right.ts +0 -10
  224. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/chevron.ts +0 -4
  225. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/close-circle-dark.ts +0 -5
  226. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/contract.ts +0 -9
  227. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/empty-query.ts +0 -5
  228. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/expand.ts +0 -9
  229. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/eye-closed.ts +0 -5
  230. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/eye.ts +0 -5
  231. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/favorite-filled.ts +0 -10
  232. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/favorite-unfilled.ts +0 -9
  233. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/filter.ts +0 -10
  234. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/login-required.ts +0 -18
  235. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/account.ts +0 -14
  236. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/audio.ts +0 -14
  237. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/collection.ts +0 -12
  238. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/data.ts +0 -15
  239. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/etree.ts +0 -14
  240. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/film.ts +0 -14
  241. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/images.ts +0 -13
  242. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/radio.ts +0 -15
  243. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/search.ts +0 -14
  244. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/software.ts +0 -13
  245. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/texts.ts +0 -13
  246. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv-commercial.ts +0 -12
  247. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv-fact-check.ts +0 -12
  248. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv-quote.ts +0 -12
  249. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/tv.ts +0 -14
  250. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/video.ts +0 -14
  251. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/mediatype/web.ts +0 -13
  252. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/null-result.ts +0 -5
  253. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/quote.ts +0 -7
  254. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/restricted.ts +0 -13
  255. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/reviews.ts +0 -11
  256. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/upload.ts +0 -12
  257. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/assets/img/icons/views.ts +0 -11
  258. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/circular-activity-indicator.ts +0 -64
  259. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-browser.ts +0 -3165
  260. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/facet-row.ts +0 -309
  261. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/facet-tombstone-row.ts +0 -40
  262. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/facets-template.ts +0 -85
  263. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/models.ts +0 -10
  264. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/more-facets-content.ts +0 -644
  265. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/more-facets-pagination.ts +0 -294
  266. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/dedupe.ts +0 -44
  267. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.ts +0 -27
  268. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/index.ts +0 -3
  269. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.ts +0 -17
  270. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.ts +0 -70
  271. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.ts +0 -79
  272. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.ts +0 -93
  273. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/models.ts +0 -36
  274. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-bar.ts +0 -437
  275. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-button.ts +0 -145
  276. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-dropdown.ts +0 -185
  277. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-equals.ts +0 -16
  278. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/smart-facets/smart-facet-heuristics.ts +0 -26
  279. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets/toggle-switch.ts +0 -174
  280. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/collection-facets.ts +0 -1013
  281. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/collection-browser-data-source-interface.ts +0 -351
  282. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/collection-browser-data-source.ts +0 -1474
  283. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/collection-browser-query-state.ts +0 -60
  284. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/data-source/models.ts +0 -56
  285. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/empty-placeholder.ts +0 -192
  286. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/expanded-date-picker.ts +0 -191
  287. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/language-code-handler/language-code-handler.ts +0 -64
  288. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/language-code-handler/language-code-mapping.ts +0 -564
  289. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/manage/manage-bar.ts +0 -276
  290. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/manage/remove-items-modal-content.ts +0 -102
  291. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/mediatype/mediatype-config.ts +0 -146
  292. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/models.ts +0 -895
  293. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/restoration-state-handler.ts +0 -550
  294. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/alpha-bar-tooltip.ts +0 -53
  295. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/alpha-bar.ts +0 -252
  296. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/compact.ts +0 -5
  297. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/list.ts +0 -5
  298. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-toggle-disabled.ts +0 -15
  299. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-toggle-down.ts +0 -17
  300. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-toggle-up.ts +0 -17
  301. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/sort-triangle.ts +0 -5
  302. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/img/tile.ts +0 -5
  303. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/sort-filter-bar/sort-filter-bar.ts +0 -733
  304. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/ia-button.ts +0 -139
  305. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/item-image-styles.ts +0 -124
  306. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/sr-only.ts +0 -18
  307. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/styles/tile-action-styles.ts +0 -59
  308. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/base-tile-component.ts +0 -124
  309. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/collection-browser-loading-tile.ts +0 -26
  310. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/account-tile.ts +0 -113
  311. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/collection-tile.ts +0 -184
  312. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/item-tile.ts +0 -347
  313. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/search-tile.ts +0 -90
  314. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/styles/tile-grid-shared-styles.ts +0 -130
  315. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/grid/tile-stats.ts +0 -211
  316. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/hover/hover-pane-controller.ts +0 -638
  317. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/hover/tile-hover-pane.ts +0 -184
  318. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/image-block.ts +0 -162
  319. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/item-image.ts +0 -214
  320. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/list/tile-list-compact-header.ts +0 -112
  321. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/list/tile-list-compact.ts +0 -278
  322. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/list/tile-list.ts +0 -718
  323. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/models.ts +0 -21
  324. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/overlay/icon-overlay.ts +0 -57
  325. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/overlay/text-overlay.ts +0 -79
  326. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/review-block.ts +0 -130
  327. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/text-snippet-block.ts +0 -132
  328. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/tile-dispatcher.ts +0 -637
  329. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/tile-display-value-provider.ts +0 -133
  330. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/tiles/tile-mediatype-icon.ts +0 -133
  331. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/analytics-events.ts +0 -29
  332. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/array-equals.ts +0 -8
  333. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/collapse-repeated-quotes.ts +0 -13
  334. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/date-filter-field.ts +0 -11
  335. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/facet-utils.ts +0 -183
  336. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/format-count.ts +0 -95
  337. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/format-date.ts +0 -62
  338. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/format-unit-size.ts +0 -43
  339. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/local-date-from-utc.ts +0 -15
  340. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/log.ts +0 -14
  341. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/resolve-mediatype.ts +0 -26
  342. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/src/utils/sha1.ts +0 -9
  343. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-browser.test.ts +0 -2639
  344. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/facet-row.test.ts +0 -421
  345. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/facets-template.test.ts +0 -139
  346. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/more-facets-content.test.ts +0 -231
  347. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/more-facets-pagination.test.ts +0 -201
  348. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets/toggle-switch.test.ts +0 -164
  349. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/collection-facets.test.ts +0 -928
  350. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/data-source/collection-browser-data-source.test.ts +0 -193
  351. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/empty-placeholder.test.ts +0 -88
  352. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/expanded-date-picker.test.ts +0 -201
  353. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/icon-overlay.test.ts +0 -38
  354. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/image-block.test.ts +0 -247
  355. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/item-image.test.ts +0 -220
  356. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/manage/manage-bar.test.ts +0 -347
  357. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/manage/remove-items-modal-content.test.ts +0 -81
  358. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mediatype-config.test.ts +0 -11
  359. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mocks/mock-analytics-handler.ts +0 -30
  360. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mocks/mock-search-responses.ts +0 -1364
  361. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/mocks/mock-search-service.ts +0 -134
  362. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/restoration-state-handler.test.ts +0 -480
  363. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/review-block.test.ts +0 -62
  364. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/sort-filter-bar/alpha-bar-tooltip.test.ts +0 -17
  365. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/sort-filter-bar/alpha-bar.test.ts +0 -101
  366. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/sort-filter-bar/sort-filter-bar.test.ts +0 -443
  367. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/text-overlay.test.ts +0 -55
  368. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/text-snippet-block.test.ts +0 -85
  369. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tile-stats.test.ts +0 -191
  370. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/account-tile.test.ts +0 -121
  371. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/collection-tile.test.ts +0 -114
  372. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/item-tile.test.ts +0 -520
  373. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/grid/search-tile.test.ts +0 -75
  374. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/hover/hover-pane-controller.test.ts +0 -482
  375. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/hover/tile-hover-pane.test.ts +0 -80
  376. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/list/tile-list-compact-header.test.ts +0 -43
  377. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/list/tile-list-compact.test.ts +0 -282
  378. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/list/tile-list.test.ts +0 -576
  379. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/tile-dispatcher.test.ts +0 -320
  380. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/tile-display-value-provider.test.ts +0 -172
  381. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/tiles/tile-mediatype-icon.test.ts +0 -160
  382. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/array-equals.test.ts +0 -31
  383. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/format-count.test.ts +0 -32
  384. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/format-date.test.ts +0 -89
  385. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/format-unit-size.test.ts +0 -21
  386. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/test/utils/local-date-from-utc.test.ts +0 -37
  387. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/tsconfig.json +0 -25
  388. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/types/dompurify.d.ts +0 -1
  389. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/vite.config.ts +0 -29
  390. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/web-dev-server.config.mjs +0 -30
  391. package/.claude/worktrees/WEBDEV-9127-fix-publish-dist-tag/web-test-runner.config.mjs +0 -52
@@ -1,550 +0,0 @@
1
- import { SearchType, SortDirection } from '@internetarchive/search-service';
2
- import { getCookie, setCookie } from 'typescript-cookie';
3
- import {
4
- FacetOption,
5
- CollectionBrowserContext,
6
- CollectionDisplayMode,
7
- SelectedFacets,
8
- SortField,
9
- FacetBucket,
10
- FacetState,
11
- getDefaultSelectedFacets,
12
- sortOptionFromAPIString,
13
- SORT_OPTIONS,
14
- tvClipURLParamsToFilters,
15
- } from './models';
16
- import { arrayEquals } from './utils/array-equals';
17
- import { dateFilterField } from './utils/date-filter-field';
18
-
19
- export interface RestorationState {
20
- displayMode?: CollectionDisplayMode;
21
- searchType?: SearchType;
22
- selectedSort?: SortField;
23
- sortDirection?: SortDirection;
24
- selectedFacets: SelectedFacets;
25
- baseQuery?: string;
26
- currentPage?: number;
27
- titleQuery?: string;
28
- creatorQuery?: string;
29
- minSelectedDate?: string;
30
- maxSelectedDate?: string;
31
- selectedTitleFilter?: string;
32
- selectedCreatorFilter?: string;
33
- }
34
-
35
- export interface RestorationStatePersistOptions {
36
- forceReplace?: boolean;
37
- persistMetadataSearchType?: boolean;
38
- }
39
-
40
- export interface RestorationStateHandlerInterface {
41
- persistState(
42
- state: RestorationState,
43
- options?: RestorationStatePersistOptions,
44
- ): void;
45
- getRestorationState(): RestorationState;
46
- }
47
-
48
- export class RestorationStateHandler
49
- implements RestorationStateHandlerInterface
50
- {
51
- private context: CollectionBrowserContext;
52
-
53
- private cookieDomain = '.archive.org';
54
-
55
- private cookieExpiration = 30;
56
-
57
- private cookiePath = '/';
58
-
59
- constructor(options: { context: CollectionBrowserContext }) {
60
- this.context = options.context;
61
- }
62
-
63
- persistState(
64
- state: RestorationState,
65
- options: RestorationStatePersistOptions = {},
66
- ): void {
67
- if (state.displayMode) this.persistViewStateToCookies(state.displayMode);
68
- this.persistQueryStateToUrl(state, options);
69
- }
70
-
71
- getRestorationState(): RestorationState {
72
- const restorationState = this.loadQueryStateFromUrl();
73
- const displayMode = this.loadTileViewStateFromCookies();
74
- restorationState.displayMode = displayMode;
75
- return restorationState;
76
- }
77
-
78
- private persistViewStateToCookies(displayMode: CollectionDisplayMode) {
79
- const gridState = displayMode === 'grid' ? 'tiles' : 'lists';
80
- setCookie(`view-${this.context}`, gridState, {
81
- domain: this.cookieDomain,
82
- expires: this.cookieExpiration,
83
- path: this.cookiePath,
84
- });
85
- const detailsState = displayMode === 'list-detail' ? 'showdetails' : '';
86
- setCookie(`showdetails-${this.context}`, detailsState, {
87
- domain: this.cookieDomain,
88
- expires: this.cookieExpiration,
89
- path: this.cookiePath,
90
- });
91
- }
92
-
93
- private loadTileViewStateFromCookies(): CollectionDisplayMode {
94
- const viewState = getCookie(`view-${this.context}`);
95
- const detailsState = getCookie(`showdetails-${this.context}`);
96
- if (viewState === 'tiles' || viewState === undefined) return 'grid';
97
- if (detailsState === 'showdetails') return 'list-detail';
98
- return 'list-compact';
99
- }
100
-
101
- private persistQueryStateToUrl(
102
- state: RestorationState,
103
- options: RestorationStatePersistOptions = {},
104
- ) {
105
- const url = new URL(window.location.href);
106
- const oldParams = new URLSearchParams(url.searchParams);
107
- const newParams = this.removeRecognizedParams(url.searchParams);
108
-
109
- let replaceEmptySin = false;
110
-
111
- if (state.baseQuery) {
112
- newParams.set('query', state.baseQuery);
113
- }
114
-
115
- switch (state.searchType) {
116
- case SearchType.FULLTEXT:
117
- newParams.set('sin', 'TXT');
118
- break;
119
- case SearchType.RADIO:
120
- newParams.set('sin', 'RADIO');
121
- break;
122
- case SearchType.TV:
123
- newParams.set('sin', 'TV');
124
- break;
125
- case SearchType.METADATA:
126
- // Only write the param for metadata when it isn't already the default.
127
- // Currently this is only the case within TV collections.
128
- if (options.persistMetadataSearchType || oldParams.get('sin') === 'MD')
129
- newParams.set('sin', 'MD');
130
- break;
131
- }
132
-
133
- if (oldParams.get('sin') === '') {
134
- // Treat empty sin the same as no sin at all
135
- oldParams.delete('sin');
136
- replaceEmptySin = true;
137
- }
138
-
139
- if (state.currentPage) {
140
- if (state.currentPage > 1) {
141
- newParams.set('page', state.currentPage.toString());
142
- } else {
143
- newParams.delete('page');
144
- }
145
- }
146
-
147
- if (state.selectedSort) {
148
- const sortOption = SORT_OPTIONS[state.selectedSort];
149
- let prefix = this.sortDirectionPrefix(state.sortDirection);
150
-
151
- const isTVRelevanceSort =
152
- state.searchType === SearchType.TV &&
153
- state.selectedSort === SortField.relevance;
154
-
155
- if (sortOption.field === SortField.unrecognized) {
156
- // For unrecognized sorts, use the existing param, possibly updating its direction
157
- const oldSortParam = oldParams.get('sort') ?? '';
158
- const { field, direction } =
159
- this.getSortFieldAndDirection(oldSortParam);
160
-
161
- // Use the state-specified direction if available, or extract one from the param if not
162
- if (!state.sortDirection) prefix = this.sortDirectionPrefix(direction);
163
-
164
- if (field) {
165
- newParams.set('sort', `${prefix}${field}`);
166
- } else {
167
- newParams.set('sort', oldSortParam);
168
- }
169
- } else if (sortOption.shownInURL || isTVRelevanceSort) {
170
- // Otherwise, use the canonical API form of the sort option
171
- const canonicalApiSort = sortOption.urlNames[0];
172
- newParams.set('sort', `${prefix}${canonicalApiSort}`);
173
- }
174
- }
175
-
176
- if (state.selectedFacets) {
177
- for (const [facetName, facetValues] of Object.entries(
178
- state.selectedFacets,
179
- )) {
180
- const facetEntries = Object.entries(facetValues);
181
- if (facetEntries.length === 0) continue;
182
- for (const [key, data] of facetEntries) {
183
- const notValue = data.state === 'hidden';
184
- const paramValue = `${facetName}:"${key}"`;
185
- if (notValue) {
186
- newParams.append('not[]', paramValue);
187
- } else {
188
- newParams.append('and[]', paramValue);
189
- }
190
- }
191
- }
192
- }
193
-
194
- const dateField = dateFilterField(
195
- state.minSelectedDate,
196
- state.maxSelectedDate,
197
- );
198
-
199
- if (state.minSelectedDate && state.maxSelectedDate) {
200
- newParams.append(
201
- 'and[]',
202
- `${dateField}:[${state.minSelectedDate} TO ${state.maxSelectedDate}]`,
203
- );
204
- }
205
-
206
- if (state.titleQuery) {
207
- newParams.append('and[]', state.titleQuery);
208
- }
209
-
210
- if (state.creatorQuery) {
211
- newParams.append('and[]', state.creatorQuery);
212
- }
213
-
214
- // Ensure we aren't pushing consecutive identical states to the history stack.
215
- // - If the state has changed, we push a new history entry.
216
- // - If only the page number has changed, we replace the current history entry.
217
- // - If the state hasn't changed, then do nothing.
218
- let historyMethod: 'pushState' | 'replaceState' = options.forceReplace
219
- ? 'replaceState'
220
- : 'pushState';
221
- const nonQueryParamsMatch = this.paramsMatch(oldParams, newParams, [
222
- 'sin',
223
- 'sort',
224
- 'and[]',
225
- 'not[]',
226
- 'only_commercials',
227
- 'only_factchecks',
228
- 'only_quotes',
229
- ]);
230
-
231
- if (
232
- nonQueryParamsMatch &&
233
- this.paramsMatch(oldParams, newParams, ['query'])
234
- ) {
235
- if (replaceEmptySin) {
236
- // Get rid of any empty sin param
237
- newParams.delete('sin');
238
- } else if (this.paramsMatch(oldParams, newParams, ['page'])) {
239
- // For page number, we want to replace the page state when it changes,
240
- // not push a new history entry. If it hasn't changed, then we're done.
241
- return;
242
- }
243
- historyMethod = 'replaceState';
244
- } else if (nonQueryParamsMatch && this.hasLegacyParam(oldParams)) {
245
- // Similarly, if the only non-matching param was a legacy query param, then
246
- // we just want to overwrite it.
247
- historyMethod = 'replaceState';
248
- }
249
-
250
- window.history[historyMethod]?.(
251
- {
252
- query: state.baseQuery,
253
- searchType: state.searchType,
254
- page: state.currentPage,
255
- sort: { field: state.selectedSort, direction: state.sortDirection },
256
- minDate: state.minSelectedDate,
257
- maxDate: state.maxSelectedDate,
258
- facets: state.selectedFacets,
259
- },
260
- '',
261
- url,
262
- );
263
- }
264
-
265
- private loadQueryStateFromUrl(): RestorationState {
266
- const url = new URL(window.location.href);
267
- const searchInside = url.searchParams.get('sin');
268
- const pageNumber = url.searchParams.get('page');
269
- const searchQuery = url.searchParams.get('query');
270
- const sortQuery = url.searchParams.get('sort');
271
- const facetAnds = url.searchParams.getAll('and[]');
272
- const facetNots = url.searchParams.getAll('not[]');
273
-
274
- // We also need to check for the presence of params like 'and[0]', 'not[1]', etc.
275
- // since Facebook automatically converts URLs with [] into those forms.
276
- for (const [key, val] of url.searchParams.entries()) {
277
- if (/and\[\d+\]/.test(key)) {
278
- facetAnds.push(val);
279
- } else if (/not\[\d+\]/.test(key)) {
280
- facetNots.push(val);
281
- }
282
- }
283
-
284
- // Legacy search allowed `q` and `search` params for the query, so in the interest
285
- // of backwards-compatibility with old bookmarks, we recognize those here too.
286
- // (However, they still get upgraded to a `query` param when we persist our state
287
- // to the URL).
288
- const legacySearchQuery =
289
- url.searchParams.get('q') ?? url.searchParams.get('search');
290
-
291
- const restorationState: RestorationState = {
292
- selectedFacets: getDefaultSelectedFacets(),
293
- };
294
-
295
- if (searchQuery) {
296
- restorationState.baseQuery = searchQuery;
297
- } else if (legacySearchQuery) {
298
- restorationState.baseQuery = legacySearchQuery;
299
- }
300
-
301
- switch (searchInside) {
302
- case 'TXT':
303
- restorationState.searchType = SearchType.FULLTEXT;
304
- break;
305
- case 'RADIO':
306
- restorationState.searchType = SearchType.RADIO;
307
- break;
308
- case 'TV':
309
- restorationState.searchType = SearchType.TV;
310
- break;
311
- case 'MD':
312
- restorationState.searchType = SearchType.METADATA;
313
- break;
314
- default:
315
- restorationState.searchType = SearchType.DEFAULT;
316
- break;
317
- }
318
-
319
- if (pageNumber) {
320
- const parsed = parseInt(pageNumber, 10);
321
- restorationState.currentPage = parsed;
322
- } else {
323
- restorationState.currentPage = 1;
324
- }
325
-
326
- if (sortQuery) {
327
- const { field, direction } = this.getSortFieldAndDirection(sortQuery);
328
-
329
- const sortOption = sortOptionFromAPIString(field);
330
- restorationState.selectedSort = sortOption.field;
331
-
332
- if (['asc', 'desc'].includes(direction)) {
333
- restorationState.sortDirection = direction as SortDirection;
334
- }
335
- }
336
-
337
- if (facetAnds) {
338
- facetAnds.forEach(and => {
339
- // eslint-disable-next-line prefer-const
340
- let [field, ...valueParts] = and.split(':');
341
- if (!valueParts.length) return;
342
- const value = valueParts.join(':');
343
-
344
- // Legacy search allowed and[] fields like 'creatorSorter', 'languageSorter', etc.
345
- // which we want to normalize to 'creator', 'language', etc. if redirected here.
346
- field = field.replace(/Sorter$/, '');
347
-
348
- // Legacy search also allowed a form of negative faceting like `and[]=-collection:foo`
349
- // which we want to normalize to a not[] param instead
350
- if (field.startsWith('-')) {
351
- facetNots.push(and.slice(1));
352
- return;
353
- }
354
-
355
- switch (field) {
356
- case 'date':
357
- case 'year': {
358
- const [minDate, maxDate] = value.split(' TO ');
359
- // we have two potential ways of filtering by date:
360
- // the range with "date TO date" or the single date with "date"
361
- // this is checking for the range case and if we don't have those, fall
362
- // back to the single date case
363
- if (minDate && maxDate) {
364
- restorationState.minSelectedDate = minDate.substring(
365
- 1,
366
- minDate.length,
367
- );
368
- restorationState.maxSelectedDate = maxDate.substring(
369
- 0,
370
- maxDate.length - 1,
371
- );
372
- } else {
373
- this.setSelectedFacetState(
374
- restorationState.selectedFacets,
375
- field as FacetOption,
376
- value,
377
- 'selected',
378
- );
379
- }
380
- break;
381
- }
382
- case 'firstTitle':
383
- restorationState.selectedTitleFilter = value;
384
- break;
385
- case 'firstCreator':
386
- restorationState.selectedCreatorFilter = value;
387
- break;
388
- default:
389
- this.setSelectedFacetState(
390
- restorationState.selectedFacets,
391
- field as FacetOption,
392
- value,
393
- 'selected',
394
- );
395
- }
396
- });
397
- }
398
-
399
- if (facetNots) {
400
- facetNots.forEach(not => {
401
- const [field, ...valueParts] = not.split(':');
402
- if (!valueParts.length) return;
403
- const value = valueParts.join(':');
404
- this.setSelectedFacetState(
405
- restorationState.selectedFacets,
406
- field as FacetOption,
407
- value,
408
- 'hidden',
409
- );
410
- });
411
- }
412
-
413
- // TV clip special filters (carryovers from legacy page)
414
- for (const [paramKey, facetKey] of Object.entries(
415
- tvClipURLParamsToFilters,
416
- )) {
417
- if (url.searchParams.get(paramKey)) {
418
- this.setSelectedFacetState(
419
- restorationState.selectedFacets,
420
- 'clip_type',
421
- facetKey,
422
- 'selected',
423
- );
424
- break;
425
- }
426
- }
427
-
428
- return restorationState;
429
- }
430
-
431
- /**
432
- * Converts a URL sort param into a field/direction pair, if possible.
433
- * Either or both may be undefined if the param is not in a recognized format.
434
- */
435
- private getSortFieldAndDirection(sortParam: string) {
436
- // check for two different sort formats: `date desc` and `-date`
437
- const hasSpace = sortParam.indexOf(' ') > -1;
438
- let field;
439
- let direction;
440
- if (hasSpace) {
441
- [field, direction] = sortParam.split(' ');
442
- } else {
443
- field = sortParam.startsWith('-') ? sortParam.slice(1) : sortParam;
444
- direction = sortParam.startsWith('-') ? 'desc' : 'asc';
445
- }
446
-
447
- return { field, direction };
448
- }
449
-
450
- /** Returns the `-` prefix for `desc` sort, or the empty string otherwise. */
451
- private sortDirectionPrefix(sortDirection?: string) {
452
- return sortDirection === 'desc' ? '-' : '';
453
- }
454
-
455
- /** Remove optional opening and closing quotes from a string */
456
- private stripQuotes(value: string): string {
457
- if (value.startsWith('"') && value.endsWith('"')) {
458
- return value.substring(1, value.length - 1);
459
- }
460
-
461
- return value;
462
- }
463
-
464
- /**
465
- * Returns whether the two given URLSearchParams objects have
466
- * identical values for all of the given param keys. If either
467
- * object contains more than one value for a given key, then
468
- * all of the values for that key must match (disregarding order).
469
- */
470
- private paramsMatch(
471
- searchParams1: URLSearchParams,
472
- searchParams2: URLSearchParams,
473
- keys: string[],
474
- ): boolean {
475
- return keys.every(key =>
476
- arrayEquals(
477
- searchParams1.getAll(key).sort(),
478
- searchParams2.getAll(key).sort(),
479
- ),
480
- );
481
- }
482
-
483
- /**
484
- * Deletes any params from the given URLSearchParams object that are recognized
485
- * when loading state from the URL.
486
- */
487
- private removeRecognizedParams(
488
- searchParams: URLSearchParams,
489
- ): URLSearchParams {
490
- // Remove all of our standard params
491
- searchParams.delete('query');
492
- searchParams.delete('sin');
493
- searchParams.delete('page');
494
- searchParams.delete('sort');
495
- searchParams.delete('and[]');
496
- searchParams.delete('not[]');
497
-
498
- // Remove any and/not facet params that contain numbers in their square brackets
499
- for (const key of searchParams.keys()) {
500
- if (/(and|not)\[\d+\]/.test(key)) {
501
- searchParams.delete(key);
502
- }
503
- }
504
-
505
- // Also remove some legacy params that should have been upgraded to the ones above
506
- searchParams.delete('q');
507
- searchParams.delete('search');
508
- searchParams.delete('only_commercials');
509
- searchParams.delete('only_factchecks');
510
- searchParams.delete('only_quotes');
511
-
512
- return searchParams;
513
- }
514
-
515
- /**
516
- * Returns whether the given URLSearchParams object contains a param that is
517
- * only recognized as a holdover from legacy search, and should not be
518
- * persisted to the URL.
519
- */
520
- private hasLegacyParam(searchParams: URLSearchParams): boolean {
521
- return searchParams.has('q') || searchParams.has('search');
522
- }
523
-
524
- /**
525
- * Sets the facet state for the given field & value to the given state,
526
- * creating any previously-undefined buckets as needed.
527
- */
528
- private setSelectedFacetState(
529
- selectedFacets: SelectedFacets,
530
- field: FacetOption,
531
- value: string,
532
- state: FacetState,
533
- ): void {
534
- const facet = selectedFacets[field];
535
- if (!facet) return; // Unrecognized facet group, ignore it.
536
-
537
- const unQuotedValue = this.stripQuotes(value);
538
- facet[unQuotedValue] ??= this.getDefaultBucket(unQuotedValue);
539
- facet[unQuotedValue].state = state;
540
- }
541
-
542
- /** Returns a default bucket with the given key, count of 0, and state 'none'. */
543
- private getDefaultBucket(key: string): FacetBucket {
544
- return {
545
- key,
546
- count: 0,
547
- state: 'none',
548
- };
549
- }
550
- }
@@ -1,53 +0,0 @@
1
- import { LitElement, html, css, CSSResultGroup } from 'lit';
2
- import { customElement, property } from 'lit/decorators.js';
3
-
4
- @customElement('alpha-bar-tooltip')
5
- export class AlphaBarTooltip extends LitElement {
6
- @property({ type: Number }) numResults: number = 0;
7
-
8
- render() {
9
- return html`
10
- <div id="tooltip-container" role="tooltip">
11
- <div id="arrow"></div>
12
- <div id="tooltip-text">
13
- ${this.numResults} ${this.numResults === 1 ? 'result' : 'results'}
14
- </div>
15
- </div>
16
- `;
17
- }
18
-
19
- static get styles(): CSSResultGroup {
20
- const arrowSize = css`var(--tooltipArrowSize, 5px)`;
21
- const arrowOffset = css`var(--tooltipArrowOffset, 0px)`;
22
-
23
- return css`
24
- #tooltip-container {
25
- width: max-content;
26
- max-width: 200px;
27
- pointer-events: none;
28
- }
29
-
30
- #arrow {
31
- position: relative;
32
- left: calc(50% + ${arrowOffset});
33
- top: 0;
34
- width: 0;
35
- height: 0;
36
- margin-top: calc(-1 * ${arrowSize});
37
- margin-left: calc(-1 * ${arrowSize});
38
- border: ${arrowSize} solid transparent;
39
- border-bottom-color: black;
40
- }
41
-
42
- #tooltip-text {
43
- padding: 3px 8px;
44
- border-radius: 4px;
45
- background-color: #000;
46
- color: white;
47
- font-size: 1.2rem;
48
- text-align: center;
49
- text-decoration: none;
50
- }
51
- `;
52
- }
53
- }