@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,294 +0,0 @@
1
- import {
2
- css,
3
- CSSResultGroup,
4
- html,
5
- LitElement,
6
- nothing,
7
- TemplateResult,
8
- } from 'lit';
9
- import { customElement, property, state } from 'lit/decorators.js';
10
- import arrowLeftIcon from '../assets/img/icons/arrow-left';
11
- import arrowRightIcon from '../assets/img/icons/arrow-right';
12
- import { srOnlyStyle } from '../styles/sr-only';
13
-
14
- @customElement('more-facets-pagination')
15
- export class MoreFacetsPagination extends LitElement {
16
- /**
17
- * Total number of pages
18
- */
19
- @property({ type: Number }) size!: number;
20
-
21
- /**
22
- * Number of pages can be moved in back/forward
23
- */
24
- @property({ type: Number }) step = 2;
25
-
26
- @property({ type: Number }) currentPage: number = 1;
27
-
28
- @state() pages?: number[] = [];
29
-
30
- firstUpdated() {
31
- this.observePageCount();
32
- }
33
-
34
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
35
- override updated(changed: Map<string, any>) {
36
- if (changed.has('size')) {
37
- this.observePageCount();
38
- }
39
- if (changed.has('currentPage')) {
40
- this.observePageCount();
41
- this.emitPageClick();
42
- }
43
- }
44
-
45
- /** creates `this.pages` array that notes which pages to draw
46
- * - `0` is elipses marker
47
- * - rule: selected page is centered between -2/+2 pages
48
- * - outlier: first page selected, show _1_ 2 3 ... N
49
- * - outlier: second page selected, show 1 _2_ 3 4 ... N
50
- * - outlier: last page selected, show 1 ... N-2 N-1 _N_
51
- * - outlier: if page count = 7, & selected is either [2, 3, 4, 5, 6], show all pages
52
- */
53
- observePageCount() {
54
- this.pages = []; /* `0` is elipses marker */
55
-
56
- const paginatorMaxPagesToShow = 7;
57
- const atMinThreshold = this.size <= paginatorMaxPagesToShow;
58
-
59
- /** Display outliers */
60
- if (this.size <= 5) {
61
- // display all pages
62
- this.pages = [...Array(this.size).keys()].map(i => i + 1);
63
- return;
64
- }
65
-
66
- if (this.size === paginatorMaxPagesToShow) {
67
- // edge: 7 pages
68
- if (this.currentPage === 2) {
69
- this.pages = [1, 2, 3, 4, 0, this.size];
70
- return;
71
- }
72
-
73
- if (this.currentPage === this.size - 1) {
74
- this.pages = [1, 0, 4, 5, this.size - 1, this.size];
75
- return;
76
- }
77
- }
78
-
79
- if (this.currentPage === 1) {
80
- // first page
81
- this.pages = [1, 2, 3, 0, this.size];
82
- return;
83
- }
84
-
85
- if (this.currentPage === this.size) {
86
- // last page
87
- this.pages = [1, 0, this.size - 2, this.size - 1, this.size];
88
- return;
89
- }
90
-
91
- if (this.currentPage === this.size - 1) {
92
- // second last page
93
- this.pages = [
94
- 1,
95
- 0,
96
- this.size - 3,
97
- this.size - 2,
98
- this.size - 1,
99
- this.size,
100
- ];
101
- return;
102
- }
103
-
104
- if (
105
- atMinThreshold &&
106
- this.currentPage > 1 &&
107
- this.currentPage < paginatorMaxPagesToShow
108
- ) {
109
- this.pages = [...Array(this.size).keys()].map(i => i + 1);
110
- return;
111
- }
112
-
113
- /* The rest here calculates the range to display in "page window" */
114
- let startPage = this.currentPage - this.step;
115
- let endPage = this.currentPage + this.step;
116
-
117
- if (startPage <= 0) {
118
- endPage += -startPage + 1;
119
- startPage = 1;
120
- }
121
-
122
- if (endPage >= this.size) {
123
- startPage = Math.max(startPage - (endPage - this.size), 1);
124
- endPage = this.size;
125
- }
126
-
127
- if (startPage === 2) {
128
- endPage -= 1;
129
- }
130
-
131
- if (endPage === this.size - 1) {
132
- startPage += 1;
133
- }
134
-
135
- // create first page node
136
- this.createFirstNode(startPage);
137
-
138
- // create middle pages node
139
- this.createMiddelNode(startPage, endPage);
140
-
141
- // create last page node
142
- this.createLastNode(endPage);
143
- }
144
-
145
- private createFirstNode(startPage: number) {
146
- if (startPage > 1) {
147
- this.pages?.push(1);
148
- }
149
- if (startPage > 2) {
150
- this.pages?.push(0); // let's asssume 0 is for ellipsis template
151
- }
152
- }
153
-
154
- private createMiddelNode(startPage: number, endPage: number) {
155
- for (let page = startPage; page <= endPage; page += 1) {
156
- this.pages?.push(page);
157
- }
158
- }
159
-
160
- private createLastNode(endPage: number) {
161
- if (endPage < this.size - 1) {
162
- this.pages?.push(0); // let's asssume 0 is for ellipsis template
163
- }
164
- if (endPage < this.size) {
165
- this.pages?.push(this.size);
166
- }
167
- }
168
-
169
- private get getEllipsisTemplate() {
170
- return html`<i class="ellipses">...</i>`;
171
- }
172
-
173
- emitPageClick() {
174
- this.dispatchEvent(
175
- new CustomEvent('pageNumberClicked', {
176
- detail: { page: this.currentPage },
177
- bubbles: true,
178
- composed: true,
179
- }),
180
- );
181
- }
182
-
183
- private onRewind() {
184
- this.currentPage -= 1;
185
- if (this.currentPage < 1) {
186
- this.currentPage = 1;
187
- }
188
- }
189
-
190
- private onForward() {
191
- this.currentPage += 1;
192
- if (this.currentPage > this.size) {
193
- this.currentPage = this.size;
194
- }
195
- }
196
-
197
- private onChange(page: number) {
198
- this.currentPage = page;
199
- }
200
-
201
- private getPageTemplate(page: number) {
202
- return html`
203
- <button
204
- @click=${() => this.onChange(page)}
205
- class=${this.currentPage === page ? 'current' : ''}
206
- data-page=${page}
207
- >
208
- ${page}
209
- </button>
210
- `;
211
- }
212
-
213
- private get getPagesTemplate(): TemplateResult | typeof nothing {
214
- if (!this.pages || !this.pages.length) {
215
- return nothing;
216
- }
217
-
218
- return html`
219
- ${this.pages?.map(
220
- page =>
221
- html`${page !== 0
222
- ? this.getPageTemplate(page)
223
- : this.getEllipsisTemplate}`,
224
- )}
225
- `;
226
- }
227
-
228
- render() {
229
- return html`
230
- <div class="facets-pagination">
231
- <button class="arrow-icon rewind" @click=${this.onRewind}>
232
- <span class="sr-only">Rewind pagination:</span>
233
- ${arrowLeftIcon}
234
- </button>
235
- <div class="page-numbers">${this.getPagesTemplate}</div>
236
- <button class="arrow-icon forward" @click=${this.onForward}>
237
- <span class="sr-only">Forward pagination:</span>
238
- ${arrowRightIcon}
239
- </button>
240
- </div>
241
- `;
242
- }
243
-
244
- static get styles(): CSSResultGroup {
245
- return [
246
- srOnlyStyle,
247
- css`
248
- .facets-pagination {
249
- user-select: none;
250
- margin-top: 10px;
251
- background-color: #eee;
252
- text-align: center;
253
- }
254
- .facets-pagination button {
255
- border: none;
256
- background: none;
257
- }
258
- .facets-pagination .arrow-icon {
259
- width: 2.5rem;
260
- vertical-align: middle;
261
- }
262
- .facets-pagination .arrow-icon svg {
263
- height: 14px;
264
- fill: #2c2c2c;
265
- }
266
- .facets-pagination button,
267
- .facets-pagination i {
268
- background: none;
269
- border: 0;
270
- cursor: pointer;
271
- border-radius: 4px;
272
- margin: 10px 5px;
273
- padding: 5px;
274
- font-size: 1.4rem;
275
- color: inherit;
276
- vertical-align: baseline;
277
- display: inline-block;
278
- min-width: 2.5rem;
279
- }
280
- .facets-pagination i {
281
- cursor: auto;
282
- display: inline;
283
- }
284
- .facets-pagination button.current {
285
- background: #2c2c2c;
286
- color: white;
287
- }
288
- .page-numbers {
289
- display: inline-block;
290
- }
291
- `,
292
- ];
293
- }
294
- }
@@ -1,44 +0,0 @@
1
- import type { SmartFacet } from './models';
2
- import { smartFacetEquals } from './smart-facet-equals';
3
-
4
- /**
5
- * Removes any duplicated smart facets from the given array.
6
- * Smart facets are equal if they have the same `label` and same
7
- * set of facet refs. Only the first occurrence of a given smart
8
- * facet is kept.
9
- * @param facets The array of smart facets to deduplicate
10
- * @returns A new array containing the deduplicated set of facets
11
- */
12
- export function dedupe<T extends SmartFacet[] | SmartFacet[][]>(facets: T): T {
13
- if (!Array.isArray(facets[0])) {
14
- const facetsUnnested = facets as SmartFacet[];
15
-
16
- let result: SmartFacet[] = [...facetsUnnested];
17
- for (let i = 0; i < result.length; i++) {
18
- const curFacet = result[i];
19
- result = result.filter(
20
- sf => curFacet === sf || !smartFacetEquals(curFacet, sf),
21
- );
22
- }
23
-
24
- return result as T;
25
- }
26
-
27
- const facetsNested = facets as SmartFacet[][];
28
-
29
- const result: SmartFacet[][] = [];
30
- for (const curFacetArray of facetsNested) {
31
- const subresult: SmartFacet[] = [];
32
- for (const curFacet of curFacetArray) {
33
- const existing = result.find(sfa =>
34
- sfa.find(sf => smartFacetEquals(curFacet, sf)),
35
- );
36
- if (!existing) subresult.push(curFacet);
37
- }
38
- if (subresult.length > 0) {
39
- result.push(subresult);
40
- }
41
- }
42
-
43
- return result as T;
44
- }
@@ -1,27 +0,0 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../../models';
2
-
3
- export class BrowserLanguageHeuristic implements SmartQueryHeuristic {
4
- async getRecommendedFacets(): Promise<SmartFacet[]> {
5
- const browserLanguageCode = navigator.language;
6
- const languageName =
7
- BrowserLanguageHeuristic.getLanguageDisplayName(browserLanguageCode);
8
- if (!languageName) return [];
9
-
10
- return [
11
- {
12
- facets: [
13
- {
14
- facetType: 'language',
15
- bucketKey: languageName,
16
- },
17
- ],
18
- },
19
- ];
20
- }
21
-
22
- private static getLanguageDisplayName(langCode: string): string | undefined {
23
- // Strip off any script/region/variant codes for greater generality
24
- const languageOnly = langCode.split('-')[0];
25
- return new Intl.DisplayNames(['en'], { type: 'language' }).of(languageOnly);
26
- }
27
- }
@@ -1,3 +0,0 @@
1
- export { BrowserLanguageHeuristic } from './browser-language/browser-language-heuristic';
2
- export { QueryKeywordsHeuristic } from './query-keywords/query-keywords-heuristic';
3
- export { WikidataHeuristic } from './wikidata/wikidata-heuristic';
@@ -1,17 +0,0 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../../models';
2
- import { QUERY_KEYWORDS } from './query-keywords-map';
3
-
4
- // If the query contains X keyword but Y facet isn't selected, recommend facet Y
5
- export class QueryKeywordsHeuristic implements SmartQueryHeuristic {
6
- async getRecommendedFacets(query: string): Promise<SmartFacet[]> {
7
- const recommendations: SmartFacet[] = [];
8
-
9
- for (const [keyword, facets] of Object.entries(QUERY_KEYWORDS)) {
10
- if (query.includes(keyword)) {
11
- recommendations.push(...facets);
12
- }
13
- }
14
-
15
- return recommendations;
16
- }
17
- }
@@ -1,70 +0,0 @@
1
- import type { KeywordFacetMap, SmartFacet } from '../../models';
2
-
3
- const TEXTS: SmartFacet = {
4
- facets: [{ facetType: 'mediatype', bucketKey: 'texts' }],
5
- };
6
- const AUDIO: SmartFacet = {
7
- facets: [{ facetType: 'mediatype', bucketKey: 'audio' }],
8
- };
9
- const MOVIES: SmartFacet = {
10
- facets: [{ facetType: 'mediatype', bucketKey: 'movies' }],
11
- };
12
- const IMAGE: SmartFacet = {
13
- facets: [{ facetType: 'mediatype', bucketKey: 'image' }],
14
- };
15
- const SOFTWARE: SmartFacet = {
16
- facets: [{ facetType: 'mediatype', bucketKey: 'software' }],
17
- };
18
- const ETREE: SmartFacet = {
19
- facets: [{ facetType: 'mediatype', bucketKey: 'etree' }],
20
- };
21
- const WEB: SmartFacet = {
22
- facets: [{ facetType: 'mediatype', bucketKey: 'web' }],
23
- };
24
- const DATA: SmartFacet = {
25
- facets: [{ facetType: 'mediatype', bucketKey: 'data' }],
26
- };
27
-
28
- /**
29
- * Map from keywords found in the search query to an array of
30
- * likely-relevant "smart facets" for those keywords.
31
- */
32
- export const QUERY_KEYWORDS: Readonly<KeywordFacetMap> = {
33
- text: [TEXTS],
34
- book: [TEXTS],
35
- novel: [TEXTS],
36
- magazine: [TEXTS],
37
- newspaper: [TEXTS],
38
- pdf: [TEXTS],
39
- epub: [TEXTS],
40
- audio: [AUDIO],
41
- song: [AUDIO],
42
- music: [AUDIO],
43
- listen: [AUDIO],
44
- podcast: [AUDIO],
45
- radio: [AUDIO],
46
- stream: [AUDIO, MOVIES],
47
- video: [MOVIES],
48
- movie: [MOVIES],
49
- film: [MOVIES],
50
- animation: [MOVIES],
51
- youtube: [MOVIES],
52
- image: [IMAGE],
53
- photo: [IMAGE],
54
- picture: [IMAGE],
55
- painting: [IMAGE],
56
- jpg: [IMAGE],
57
- jpeg: [IMAGE],
58
- png: [IMAGE],
59
- gif: [IMAGE],
60
- software: [SOFTWARE],
61
- app: [SOFTWARE],
62
- program: [SOFTWARE],
63
- game: [SOFTWARE],
64
- arcade: [SOFTWARE],
65
- etree: [ETREE],
66
- concert: [ETREE],
67
- 'live music': [ETREE],
68
- 'web crawl': [WEB],
69
- dataset: [DATA],
70
- };
@@ -1,79 +0,0 @@
1
- import type { KeywordFacetMap, SmartFacet } from '../../models';
2
-
3
- const WRITTEN_WORK_SMART_FACETS: SmartFacet[] = [
4
- { facets: [{ facetType: 'mediatype', bucketKey: 'texts' }] },
5
- ];
6
-
7
- const FILMMAKER_SMART_FACETS: SmartFacet[] = [
8
- {
9
- label: 'Films by __QUERY',
10
- facets: [
11
- { facetType: 'mediatype', bucketKey: 'movies' },
12
- { facetType: 'creator', bucketKey: '__QUERY' },
13
- ],
14
- },
15
- ];
16
-
17
- const AUTHOR_SMART_FACETS: SmartFacet[] = [
18
- {
19
- label: 'Writing by __QUERY',
20
- facets: [
21
- { facetType: 'mediatype', bucketKey: 'texts' },
22
- { facetType: 'creator', bucketKey: '__QUERY' },
23
- ],
24
- },
25
- ];
26
-
27
- const VISUAL_ARTIST_SMART_FACETS: SmartFacet[] = [
28
- {
29
- label: 'Images by __QUERY',
30
- facets: [
31
- { facetType: 'mediatype', bucketKey: 'image' },
32
- { facetType: 'creator', bucketKey: '__QUERY' },
33
- ],
34
- },
35
- ];
36
-
37
- const MUSICIAN_SMART_FACETS: SmartFacet[] = [
38
- {
39
- label: 'Music by __QUERY',
40
- facets: [
41
- { facetType: 'mediatype', bucketKey: 'audio' },
42
- { facetType: 'creator', bucketKey: '__QUERY' },
43
- ],
44
- },
45
- ];
46
-
47
- /**
48
- * Map from Wikidata description keywords for a given entity to a
49
- * set of likely-relevant "smart facets" for that query.
50
- *
51
- * The placeholder string "__QUERY" should be substituted for the actual
52
- * queried entity when generating facet values.
53
- */
54
- export const WIKIDATA_ENTITIES: Readonly<KeywordFacetMap> = {
55
- 'written work': WRITTEN_WORK_SMART_FACETS,
56
- literature: WRITTEN_WORK_SMART_FACETS,
57
- book: WRITTEN_WORK_SMART_FACETS,
58
- novel: WRITTEN_WORK_SMART_FACETS,
59
-
60
- filmmaker: FILMMAKER_SMART_FACETS,
61
- director: FILMMAKER_SMART_FACETS,
62
-
63
- author: AUTHOR_SMART_FACETS,
64
- writer: AUTHOR_SMART_FACETS,
65
- novelist: AUTHOR_SMART_FACETS,
66
- essayist: AUTHOR_SMART_FACETS,
67
- poet: AUTHOR_SMART_FACETS,
68
-
69
- 'visual artist': VISUAL_ARTIST_SMART_FACETS,
70
- 'graphic artist': VISUAL_ARTIST_SMART_FACETS,
71
- photographer: VISUAL_ARTIST_SMART_FACETS,
72
- painter: VISUAL_ARTIST_SMART_FACETS,
73
-
74
- singer: MUSICIAN_SMART_FACETS,
75
- songwriter: MUSICIAN_SMART_FACETS,
76
- musician: MUSICIAN_SMART_FACETS,
77
- composer: MUSICIAN_SMART_FACETS,
78
- pianist: MUSICIAN_SMART_FACETS,
79
- };
@@ -1,93 +0,0 @@
1
- import type { SmartQueryHeuristic, SmartFacet } from '../../models';
2
- import { WIKIDATA_ENTITIES } from './wikidata-entity-map';
3
-
4
- // If wikidata describes the top query result as X, recommend facet Y, e.g.:
5
- // X Y
6
- // written work mt:texts
7
- // film mt:movies
8
- // author mt:texts and creator:<query>
9
- // filmmaker mt:movies and creator:<query>
10
- // photographer mt:image and creator:<query>
11
- // visual artist mt:image and creator:<query>
12
- // etc.
13
- export class WikidataHeuristic implements SmartQueryHeuristic {
14
- private readonly WIKIDATA_BASE_URL = 'https://www.wikidata.org/w/api.php';
15
-
16
- private readonly WIKIDATA_DEFAULT_ARGS =
17
- '?action=wbsearchentities&format=json&language=en&uselang=en&origin=*&type=item&limit=5';
18
-
19
- /**
20
- * Returns the full URL for a Wikidata search for the given query
21
- * @param query The query to search for
22
- */
23
- private getWikidataURL(query: string): string {
24
- const urlQuery = encodeURIComponent(query);
25
- return `${this.WIKIDATA_BASE_URL}${this.WIKIDATA_DEFAULT_ARGS}&search=${urlQuery}`;
26
- }
27
-
28
- /**
29
- * Replaces query placeholders with an actual query string, within a collection of smart facets
30
- * @param smartFacets The array of smart facets
31
- * @param query The query string to replace placeholders with
32
- * @returns A new array of smart facets with all query placeholders replaced
33
- */
34
- private replaceQueryPlaceholders(
35
- smartFacets: SmartFacet[],
36
- query: string,
37
- ): SmartFacet[] {
38
- return smartFacets.map(
39
- smartFacet =>
40
- ({
41
- // Replace placeholders within the smart facet label
42
- label: smartFacet.label?.replace('__QUERY', query),
43
- // Replace placeholders within the facets themselves (buckets & display text)
44
- facets: smartFacet.facets.map(facet => {
45
- const replaced = {
46
- ...facet,
47
- bucketKey: facet.bucketKey.replace(
48
- '__QUERY',
49
- query.toLowerCase(),
50
- ),
51
- };
52
-
53
- if (facet.displayText) {
54
- replaced.displayText = replaced.displayText?.replace(
55
- '__QUERY',
56
- query,
57
- );
58
- }
59
-
60
- return replaced;
61
- }),
62
- }) as SmartFacet,
63
- );
64
- }
65
-
66
- /**
67
- * @inheritdoc
68
- */
69
- async getRecommendedFacets(query: string): Promise<SmartFacet[]> {
70
- const recommendations: SmartFacet[] = [];
71
-
72
- try {
73
- const wikidataURL = this.getWikidataURL(query);
74
- const wikidataResponse = await fetch(wikidataURL);
75
- const searchResults = await wikidataResponse.json();
76
-
77
- for (const [keyword, facets] of Object.entries(WIKIDATA_ENTITIES)) {
78
- const keywordRegex = new RegExp(`\\b${keyword}\\b`);
79
- if (keywordRegex.test(searchResults.search[0]?.description)) {
80
- const entityName = searchResults.search[0].label;
81
- recommendations.push(
82
- ...this.replaceQueryPlaceholders(facets, entityName),
83
- );
84
- }
85
- }
86
-
87
- return recommendations;
88
- } catch (err) {
89
- console.warn(err);
90
- return [];
91
- }
92
- }
93
- }
@@ -1,36 +0,0 @@
1
- import type { FacetEventDetails, FacetOption } from '../../models';
2
-
3
- export interface FacetRef {
4
- facetType: FacetOption;
5
- bucketKey: string;
6
- displayText?: string;
7
- }
8
-
9
- interface LabeledSmartFacet {
10
- label: string;
11
- facets: FacetRef[];
12
- selected?: boolean;
13
- }
14
-
15
- interface UnlabeledSmartFacet {
16
- label?: string;
17
- facets: [FacetRef];
18
- selected?: boolean;
19
- }
20
-
21
- export type SmartFacet = LabeledSmartFacet | UnlabeledSmartFacet;
22
-
23
- export interface SmartFacetEvent {
24
- smartFacet: SmartFacet;
25
- details: FacetEventDetails[];
26
- }
27
-
28
- export type KeywordFacetMap = Record<string, SmartFacet[]>;
29
-
30
- export interface SmartQueryHeuristic {
31
- /**
32
- * Resolves to a recommended set of facets to apply for the given query
33
- * @param query The search query to recommend facets for
34
- */
35
- getRecommendedFacets(query: string): Promise<SmartFacet[]>;
36
- }