@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,101 +0,0 @@
1
- import { aTimeout, expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { AlphaBar } from '../../src/sort-filter-bar/alpha-bar';
4
-
5
- import '../../src/sort-filter-bar/alpha-bar';
6
- import type { AlphaBarTooltip } from '../../src/sort-filter-bar/alpha-bar-tooltip';
7
-
8
- describe('Alphabetical Filter Bar', () => {
9
- it('renders component', async () => {
10
- const el = await fixture<AlphaBar>(html`<alpha-bar></alpha-bar>`);
11
-
12
- // Should have all the letters
13
- const letters = el.shadowRoot?.querySelectorAll('li');
14
- expect(letters?.length).to.equal(26);
15
- });
16
-
17
- it('renders letters with items as buttons', async () => {
18
- const el = await fixture<AlphaBar>(html`<alpha-bar></alpha-bar>`);
19
-
20
- el.letterCounts = { U: 10, X: 10 };
21
- await el.updateComplete;
22
-
23
- // Should have exactly two letter buttons
24
- const letterButtons = el.shadowRoot?.querySelectorAll(
25
- 'li > button:not(:disabled)',
26
- );
27
- expect(letterButtons?.length).to.equal(2);
28
- expect(letterButtons?.item(0).textContent?.trim()).to.equal('U');
29
- expect(letterButtons?.item(1).textContent?.trim()).to.equal('X');
30
- });
31
-
32
- it('renders letters without items as disabled buttons', async () => {
33
- const el = await fixture<AlphaBar>(html`<alpha-bar></alpha-bar>`);
34
-
35
- el.letterCounts = { U: 10, X: 10 };
36
- await el.updateComplete;
37
-
38
- // All but the two letters above should be disabled
39
- const letterButtons = el.shadowRoot?.querySelectorAll(
40
- 'li > button:disabled',
41
- );
42
- expect(letterButtons?.length).to.equal(24);
43
- expect(letterButtons?.item(0).textContent?.trim()).to.equal('A');
44
- expect(letterButtons?.item(23).textContent?.trim()).to.equal('Z');
45
- });
46
-
47
- it('renders the selected letter with the "selected" class', async () => {
48
- const el = await fixture<AlphaBar>(html`<alpha-bar></alpha-bar>`);
49
-
50
- el.selectedLetter = 'B';
51
- await el.updateComplete;
52
-
53
- const selectedLetter = el.shadowRoot?.querySelector('li.selected');
54
- expect(selectedLetter).to.exist;
55
- expect(selectedLetter?.textContent?.trim()).to.equal('B');
56
- });
57
-
58
- it('renders a tooltip when hovered and removes it when un-hovered', async () => {
59
- const el = await fixture<AlphaBar>(html`<alpha-bar></alpha-bar>`);
60
- const firstLetter = el.shadowRoot?.querySelector('li') as HTMLLIElement;
61
- expect(firstLetter).to.exist;
62
-
63
- firstLetter.dispatchEvent(new MouseEvent('mousemove'));
64
- await el.updateComplete;
65
-
66
- const tooltip = el.shadowRoot?.querySelector(
67
- 'alpha-bar-tooltip',
68
- ) as AlphaBarTooltip;
69
- expect(tooltip).to.exist;
70
-
71
- // Should be positioned after next tick
72
- await aTimeout(0);
73
- expect(tooltip.style.left).to.exist;
74
-
75
- firstLetter.dispatchEvent(new MouseEvent('mouseleave'));
76
- await el.updateComplete;
77
-
78
- expect(el.shadowRoot?.querySelector('alpha-bar-tooltip')).not.to.exist;
79
- });
80
-
81
- it('positions tooltip correctly when it would overflow viewport', async () => {
82
- const el = await fixture<AlphaBar>(html`<alpha-bar></alpha-bar>`);
83
- const letters = el.shadowRoot?.querySelectorAll('li');
84
- const lastLetter = letters?.item(letters.length - 1) as HTMLLIElement;
85
- expect(lastLetter).to.exist;
86
-
87
- lastLetter.dispatchEvent(new MouseEvent('mousemove'));
88
- await el.updateComplete;
89
-
90
- const tooltip = el.shadowRoot?.querySelector(
91
- 'alpha-bar-tooltip',
92
- ) as AlphaBarTooltip;
93
- expect(tooltip).to.exist;
94
-
95
- // Should be positioned after next tick, but not off-screen
96
- await aTimeout(0);
97
- expect(tooltip.getBoundingClientRect().right).to.be.lessThan(
98
- window.innerWidth,
99
- );
100
- });
101
- });
@@ -1,443 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import sinon from 'sinon';
3
- import { html } from 'lit';
4
- import type { IaDropdown } from '@internetarchive/ia-dropdown';
5
- import type { SortFilterBar } from '../../src/sort-filter-bar/sort-filter-bar';
6
- import { SortField, defaultSortAvailability } from '../../src/models';
7
-
8
- import '../../src/sort-filter-bar/sort-filter-bar';
9
-
10
- describe('Sort dropdown behavior', () => {
11
- let el: SortFilterBar;
12
- let sortDropdown: IaDropdown;
13
-
14
- beforeEach(async () => {
15
- el = await fixture<SortFilterBar>(html`
16
- <sort-filter-bar></sort-filter-bar>
17
- `);
18
- sortDropdown = el.shadowRoot?.querySelector('#sort-dropdown') as IaDropdown;
19
- await el.updateComplete;
20
- });
21
-
22
- it('should render basic component', async () => {
23
- const sortSelectorContainer = el.shadowRoot?.querySelector(
24
- '#sort-selector-container',
25
- );
26
- expect(sortSelectorContainer).to.exist;
27
- });
28
-
29
- it('should render sort-by label', async () => {
30
- const sortByLabel = el.shadowRoot?.querySelector('.sort-by-text');
31
- expect(sortByLabel).to.exist;
32
- expect(sortByLabel?.textContent?.trim()).to.equal('Sort by:');
33
- });
34
-
35
- it('should render sort direction button', async () => {
36
- const sortDirections = el.shadowRoot?.querySelector(
37
- '.sort-direction-container',
38
- );
39
- expect(sortDirections).to.exist;
40
- expect(sortDirections?.querySelector('.sort-direction-icon')).to.exist;
41
- });
42
-
43
- it('renders default set of sort options in dropdown', async () => {
44
- expect(sortDropdown).to.exist;
45
- expect(sortDropdown.options.map(o => o.id)).to.deep.equal([
46
- SortField.relevance,
47
- SortField.alltimeview,
48
- SortField.weeklyview,
49
- SortField.title,
50
- SortField.date,
51
- SortField.datearchived,
52
- SortField.datereviewed,
53
- SortField.dateadded,
54
- SortField.creator,
55
- ]);
56
- });
57
-
58
- it('respects overridden sort field availability', async () => {
59
- const customSortAvailability: Record<SortField, boolean> = {
60
- ...defaultSortAvailability,
61
- [SortField.title]: false,
62
- [SortField.datearchived]: false,
63
- [SortField.datereviewed]: false,
64
- [SortField.creator]: false,
65
- };
66
-
67
- el.sortFieldAvailability = customSortAvailability;
68
- await el.updateComplete;
69
-
70
- const dropdown = el.shadowRoot?.querySelector(
71
- '#sort-dropdown',
72
- ) as IaDropdown;
73
- expect(dropdown.options.length).to.equal(5);
74
- expect(dropdown.options.map(o => o.id)).to.deep.equal([
75
- SortField.relevance,
76
- SortField.alltimeview,
77
- SortField.weeklyview,
78
- SortField.date,
79
- SortField.dateadded,
80
- ]);
81
- });
82
-
83
- it('shows the display name of the selected sort', async () => {
84
- el.selectedSort = SortField.alltimeview;
85
- await el.updateComplete;
86
-
87
- const label = sortDropdown?.querySelector('.dropdown-label');
88
- expect(label?.textContent?.trim()).to.equal('All-time views');
89
- });
90
-
91
- it('falls back to first available sort when default is unavailable', async () => {
92
- el.selectedSort = SortField.default;
93
- el.defaultSortField = SortField.relevance;
94
- el.sortFieldAvailability = {
95
- ...defaultSortAvailability,
96
- [SortField.relevance]: false,
97
- };
98
- await el.updateComplete;
99
-
100
- const label = sortDropdown?.querySelector('.dropdown-label');
101
- // No relevance, so fall back to the first one in the list
102
- expect(label?.textContent?.trim()).to.equal('All-time views');
103
- });
104
-
105
- it('changes selected sort when dropdown option selected', async () => {
106
- expect(sortDropdown).to.exist;
107
-
108
- sortDropdown.selectedOption = 'title';
109
- const option = { id: 'title' };
110
- sortDropdown.dispatchEvent(
111
- new CustomEvent('optionSelected', { detail: { option } }),
112
- );
113
- await el.updateComplete;
114
-
115
- expect(el.selectedSort).to.equal('title');
116
- });
117
-
118
- it('selects a sort option by clicking it in the dropdown', async () => {
119
- el.selectedSort = SortField.title;
120
- await el.updateComplete;
121
-
122
- const dropdown = el.shadowRoot?.querySelector(
123
- '#sort-dropdown',
124
- ) as IaDropdown;
125
- expect(dropdown).to.exist;
126
-
127
- const firstOption = dropdown?.shadowRoot?.querySelector(
128
- 'li > button',
129
- ) as HTMLButtonElement;
130
- expect(firstOption).to.exist;
131
-
132
- firstOption?.click();
133
- await el.updateComplete;
134
-
135
- // The first option is relevance by default
136
- expect(el.selectedSort).to.equal(SortField.relevance);
137
- });
138
-
139
- it('emits sortChanged event when sort option selected', async () => {
140
- const sortChangedHandler = sinon.spy();
141
- el.addEventListener('sortChanged', sortChangedHandler);
142
-
143
- const option = { id: SortField.title };
144
- sortDropdown.dispatchEvent(
145
- new CustomEvent('optionSelected', { detail: { option } }),
146
- );
147
- await el.updateComplete;
148
-
149
- expect(sortChangedHandler.calledOnce).to.be.true;
150
- const eventDetail = sortChangedHandler.firstCall.args[0].detail;
151
- expect(eventDetail.selectedSort).to.equal(SortField.title);
152
- expect(eventDetail.sortDirection).to.equal('asc');
153
- });
154
-
155
- it('renders sort selector backdrop when dropdown is open', async () => {
156
- expect(sortDropdown).to.exist;
157
-
158
- const caret = sortDropdown?.shadowRoot?.querySelector(
159
- '.caret',
160
- ) as HTMLElement;
161
- expect(caret).to.exist;
162
-
163
- caret!.click();
164
- await el.updateComplete;
165
-
166
- let backdrop = el.shadowRoot?.querySelector(
167
- '#sort-selector-backdrop',
168
- ) as HTMLElement;
169
- expect(backdrop).to.exist;
170
-
171
- // Clicking the backdrop should close the dropdown
172
- backdrop!.click();
173
- await el.updateComplete;
174
-
175
- backdrop = el.shadowRoot?.querySelector(
176
- '#sort-selector-backdrop',
177
- ) as HTMLElement;
178
- expect(backdrop).not.to.exist;
179
- });
180
-
181
- it('pressing Escape key closes the dropdown', async () => {
182
- expect(sortDropdown).to.exist;
183
-
184
- const caret = sortDropdown?.shadowRoot?.querySelector(
185
- '.caret',
186
- ) as HTMLElement;
187
- expect(caret).to.exist;
188
-
189
- caret!.click();
190
- await el.updateComplete;
191
-
192
- let backdrop = el.shadowRoot?.querySelector(
193
- '#sort-selector-backdrop',
194
- ) as HTMLElement;
195
- expect(backdrop).to.exist;
196
-
197
- document.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape' }));
198
- await el.updateComplete;
199
-
200
- backdrop = el.shadowRoot?.querySelector(
201
- '#sort-selector-backdrop',
202
- ) as HTMLElement;
203
- expect(backdrop).not.to.exist;
204
- });
205
-
206
- it('clears title filter when sort changed from title', async () => {
207
- el.selectedSort = 'title' as SortField;
208
- el.selectedTitleFilter = 'A';
209
- await el.updateComplete;
210
-
211
- const dropdown = el.shadowRoot?.querySelector(
212
- '#sort-dropdown',
213
- ) as IaDropdown;
214
- expect(dropdown).to.exist;
215
-
216
- dropdown.selectedOption = 'relevance';
217
- const option = { id: 'relevance' };
218
- dropdown.dispatchEvent(
219
- new CustomEvent('optionSelected', { detail: { option } }),
220
- );
221
- await el.updateComplete;
222
-
223
- expect(el.selectedSort).to.equal('relevance');
224
- expect(el.selectedTitleFilter).to.be.null;
225
- });
226
-
227
- it('clears creator filter when sort changed from creator', async () => {
228
- el.selectedSort = 'creator' as SortField;
229
- el.selectedCreatorFilter = 'A';
230
- await el.updateComplete;
231
-
232
- const dropdown = el.shadowRoot?.querySelector(
233
- '#sort-dropdown',
234
- ) as IaDropdown;
235
- expect(dropdown).to.exist;
236
-
237
- dropdown.selectedOption = 'relevance';
238
- const option = { id: 'relevance' };
239
- dropdown.dispatchEvent(
240
- new CustomEvent('optionSelected', { detail: { option } }),
241
- );
242
- await el.updateComplete;
243
-
244
- expect(el.selectedSort).to.equal('relevance');
245
- expect(el.selectedCreatorFilter).to.be.null;
246
- });
247
-
248
- it('contains sort-options slot when enabled', async () => {
249
- const slotEl = await fixture<SortFilterBar>(html`
250
- <sort-filter-bar .enableSortOptionsSlot=${true}></sort-filter-bar>
251
- `);
252
- await slotEl.updateComplete;
253
-
254
- const sortOptionsSlot = slotEl?.shadowRoot?.querySelector(
255
- 'slot[name="sort-options"]',
256
- );
257
- expect(sortOptionsSlot).to.exist;
258
-
259
- expect(slotEl?.shadowRoot?.querySelector('#sort-selector-container')).to.not
260
- .exist;
261
- });
262
- });
263
-
264
- describe('Sort direction button behavior', () => {
265
- it('should disable sort direction button when sorting by relevance', async () => {
266
- const el = await fixture<SortFilterBar>(html`
267
- <sort-filter-bar> </sort-filter-bar>
268
- `);
269
-
270
- el.selectedSort = 'relevance' as SortField;
271
- await el.updateComplete;
272
-
273
- const sortDirectionButton = el.shadowRoot?.querySelector(
274
- '.sort-direction-selector',
275
- ) as HTMLButtonElement;
276
- expect(sortDirectionButton).to.exist;
277
- expect(sortDirectionButton.disabled).to.be.true;
278
- });
279
-
280
- it('should enable sort direction button when not sorting by relevance', async () => {
281
- const el = await fixture<SortFilterBar>(html`
282
- <sort-filter-bar> </sort-filter-bar>
283
- `);
284
-
285
- el.selectedSort = 'title' as SortField;
286
- await el.updateComplete;
287
-
288
- const sortDirectionButton = el.shadowRoot?.querySelector(
289
- '.sort-direction-selector',
290
- ) as HTMLButtonElement;
291
- expect(sortDirectionButton).to.exist;
292
- expect(sortDirectionButton.disabled).to.be.false;
293
- });
294
-
295
- it('should toggle sort direction when clicked', async () => {
296
- const el = await fixture<SortFilterBar>(html`
297
- <sort-filter-bar> </sort-filter-bar>
298
- `);
299
-
300
- el.selectedSort = 'title' as SortField;
301
- el.sortDirection = 'asc';
302
- await el.updateComplete;
303
-
304
- const sortDirectionButton = el.shadowRoot?.querySelector(
305
- '.sort-direction-selector',
306
- ) as HTMLButtonElement;
307
-
308
- sortDirectionButton.click();
309
- await el.updateComplete;
310
- expect(el.sortDirection).to.equal('desc');
311
-
312
- sortDirectionButton.click();
313
- await el.updateComplete;
314
- expect(el.sortDirection).to.equal('asc');
315
- });
316
- });
317
-
318
- describe('Display mode/style buttons', () => {
319
- it('should render all display mode buttons', async () => {
320
- const el = await fixture<SortFilterBar>(html`
321
- <sort-filter-bar> </sort-filter-bar>
322
- `);
323
-
324
- const displayModeButtonList = el.shadowRoot
325
- ?.querySelector('#display-style-selector')
326
- ?.querySelector('ul');
327
-
328
- const gridButton = displayModeButtonList?.children
329
- .item(0)
330
- ?.querySelector('#grid-button');
331
- expect(gridButton).to.exist;
332
-
333
- const detailListButton = displayModeButtonList?.children
334
- .item(1)
335
- ?.querySelector('#list-detail-button');
336
- expect(detailListButton).to.exist;
337
-
338
- const compactListButton = displayModeButtonList?.children
339
- .item(2)
340
- ?.querySelector('#list-compact-button');
341
- expect(compactListButton).to.exist;
342
- });
343
-
344
- it('should not render display mode buttons when suppressed', async () => {
345
- const el = await fixture<SortFilterBar>(html`
346
- <sort-filter-bar suppressDisplayModes></sort-filter-bar>
347
- `);
348
-
349
- const displayModeButtonList = el.shadowRoot?.querySelector(
350
- '#display-style-selector',
351
- );
352
- expect(displayModeButtonList).not.to.exist;
353
- });
354
-
355
- it('should active current display mode', async () => {
356
- const el = await fixture<SortFilterBar>(html`
357
- <sort-filter-bar> </sort-filter-bar>
358
- `);
359
-
360
- el.displayMode = 'grid';
361
- await el.updateComplete;
362
-
363
- const displayModeTitle = el.shadowRoot
364
- ?.querySelector('#display-style-selector')
365
- ?.querySelector('button.active')
366
- ?.getAttribute('title');
367
- expect(displayModeTitle).to.equal('Tile view');
368
- });
369
-
370
- it('should change displayMode prop to the one clicked', async () => {
371
- const el = await fixture<SortFilterBar>(html`
372
- <sort-filter-bar> </sort-filter-bar>
373
- `);
374
-
375
- el.displayMode = 'grid';
376
- await el.updateComplete;
377
-
378
- const extendedListButton = el.shadowRoot?.querySelector(
379
- '#list-detail-button',
380
- ) as HTMLElement;
381
- extendedListButton.click();
382
- await el.updateComplete;
383
- expect(el.displayMode).to.equal('list-detail');
384
-
385
- const compactListButton = el.shadowRoot?.querySelector(
386
- '#list-compact-button',
387
- ) as HTMLElement;
388
- compactListButton.click();
389
- await el.updateComplete;
390
- expect(el.displayMode).to.equal('list-compact');
391
-
392
- const gridModeButton = el.shadowRoot?.querySelector(
393
- '#grid-button',
394
- ) as HTMLElement;
395
- gridModeButton.click();
396
- await el.updateComplete;
397
- expect(el.displayMode).to.equal('grid');
398
- });
399
- });
400
-
401
- describe('Sort/filter bar letter behavior', () => {
402
- it('sets the selected title letter when clicked', async () => {
403
- const el = await fixture<SortFilterBar>(html`
404
- <sort-filter-bar></sort-filter-bar>
405
- `);
406
-
407
- el.selectedSort = 'title' as SortField;
408
- el.prefixFilterCountMap = { title: { T: 1 }, creator: {} };
409
- await el.updateComplete;
410
-
411
- const alphaBar = el.shadowRoot?.querySelector('alpha-bar');
412
- const letterLink = alphaBar?.shadowRoot?.querySelector(
413
- 'li > button:not(:disabled)',
414
- ) as HTMLAnchorElement;
415
- expect(letterLink?.textContent?.trim()).to.equal('T');
416
-
417
- letterLink?.click();
418
- await el.updateComplete;
419
-
420
- expect(el.selectedTitleFilter).to.equal('T');
421
- });
422
-
423
- it('sets the selected creator letter when clicked', async () => {
424
- const el = await fixture<SortFilterBar>(html`
425
- <sort-filter-bar></sort-filter-bar>
426
- `);
427
-
428
- el.selectedSort = 'creator' as SortField;
429
- el.prefixFilterCountMap = { title: {}, creator: { C: 1 } };
430
- await el.updateComplete;
431
-
432
- const alphaBar = el.shadowRoot?.querySelector('alpha-bar');
433
- const letterLink = alphaBar?.shadowRoot?.querySelector(
434
- 'li > button:not(:disabled)',
435
- ) as HTMLAnchorElement;
436
- expect(letterLink?.textContent?.trim()).to.equal('C');
437
-
438
- letterLink?.click();
439
- await el.updateComplete;
440
-
441
- expect(el.selectedCreatorFilter).to.equal('C');
442
- });
443
- });
@@ -1,55 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { TextOverlay } from '../src/tiles/overlay/text-overlay';
4
-
5
- import '../src/tiles/overlay/text-overlay';
6
-
7
- describe('Text Overlay component', () => {
8
- it('should render initial component', async () => {
9
- const el = await fixture<TextOverlay>(html`<text-overlay></text-overlay>`);
10
-
11
- const overlay = el.shadowRoot?.querySelector('.overlay');
12
- const noPreview = el.shadowRoot?.querySelector('.no-preview');
13
- const iconOverlay = el.shadowRoot?.querySelector('.icon-overlay');
14
- const textOverlay = el.shadowRoot?.querySelector('.text-overlay');
15
-
16
- expect(overlay).to.exist;
17
- expect(noPreview).to.exist;
18
- expect(iconOverlay).to.exist;
19
- expect(textOverlay).to.exist;
20
- });
21
-
22
- it('should render component with login-required type', async () => {
23
- const el = await fixture<TextOverlay>(html`
24
- <text-overlay .type=${'login-required'}></text-overlay>
25
- `);
26
-
27
- const iconOverlay = el.shadowRoot?.querySelector('.icon-overlay');
28
- const textOverlay = el.shadowRoot?.querySelector('.text-overlay');
29
-
30
- const svgTitle = el.shadowRoot
31
- ?.querySelector('svg')
32
- ?.querySelector('title')?.textContent;
33
-
34
- expect(iconOverlay).to.exist;
35
- expect(svgTitle).to.equal('Log in to view this item');
36
- expect(textOverlay?.textContent).to.equal('Log in to view this item');
37
- });
38
-
39
- it('should render component with content-warning type', async () => {
40
- const el = await fixture<TextOverlay>(html`
41
- <text-overlay .type=${'content-warning'}></text-overlay>
42
- `);
43
-
44
- const iconOverlay = el.shadowRoot?.querySelector('.icon-overlay');
45
- const textOverlay = el.shadowRoot?.querySelector('.text-overlay');
46
-
47
- const svgTitle = el.shadowRoot
48
- ?.querySelector('svg')
49
- ?.querySelector('title')?.textContent;
50
-
51
- expect(iconOverlay).to.exist;
52
- expect(svgTitle).to.equal('Content may be inappropriate');
53
- expect(textOverlay?.textContent).to.equal('Content may be inappropriate');
54
- });
55
- });
@@ -1,85 +0,0 @@
1
- import { expect, fixture } from '@open-wc/testing';
2
- import { html } from 'lit';
3
- import type { TextSnippetBlock } from '../src/tiles/text-snippet-block';
4
- import '../src/tiles/text-snippet-block';
5
-
6
- describe('TextSnippetBlock component', () => {
7
- it('should render initial component', async () => {
8
- const el = await fixture<TextSnippetBlock>(
9
- html`<text-snippet-block></text-snippet-block>`,
10
- );
11
-
12
- // No content if no snippets
13
- expect(el.shadowRoot?.children.length).to.equal(0);
14
-
15
- // Content appears if there are snippets
16
- el.snippets = ['text'];
17
- await el.updateComplete;
18
- const container = el.shadowRoot?.querySelector('.container');
19
- expect(container).to.exist;
20
- });
21
-
22
- it('should render marked snippets', async () => {
23
- const snippets = [
24
- 'some {{{snippet}}} text',
25
- 'some {{{other}}} {{{snippet}}} text',
26
- ];
27
-
28
- const el = await fixture<TextSnippetBlock>(
29
- html`<text-snippet-block .snippets=${snippets}></text-snippet-block>`,
30
- );
31
-
32
- const container = el.shadowRoot?.querySelector('.snippet-view');
33
-
34
- // Has the correct number of snippets and highlights
35
- expect(container?.children.length).to.equal(snippets.length);
36
- expect(container?.querySelectorAll('mark').length).to.equal(3);
37
- });
38
-
39
- it('should render marked snippets containing newlines', async () => {
40
- const snippets = [
41
- 'some {{{snippet}}} text',
42
- 'some {{{other}}} {{{snippet\n text}}}',
43
- ];
44
-
45
- const el = await fixture<TextSnippetBlock>(
46
- html`<text-snippet-block .snippets=${snippets}></text-snippet-block>`,
47
- );
48
-
49
- const container = el.shadowRoot?.querySelector('.snippet-view');
50
-
51
- // Has the correct number of snippets and highlights
52
- expect(container?.children.length).to.equal(snippets.length);
53
- expect(container?.querySelectorAll('mark').length).to.equal(3);
54
- });
55
-
56
- it('should render correctly in grid mode', async () => {
57
- const el = await fixture<TextSnippetBlock>(
58
- html`<text-snippet-block
59
- viewsize="grid"
60
- .snippets=${['text']}
61
- ></text-snippet-block>`,
62
- );
63
-
64
- const container = el.shadowRoot?.querySelector('.snippet-view');
65
-
66
- // Applies the right container classes
67
- expect(container?.classList.contains('grid')).to.be.true;
68
- expect(container?.classList.contains('list')).to.be.false;
69
- });
70
-
71
- it('should render correctly in list mode', async () => {
72
- const el = await fixture<TextSnippetBlock>(
73
- html`<text-snippet-block
74
- viewsize="list"
75
- .snippets=${['text']}
76
- ></text-snippet-block>`,
77
- );
78
-
79
- const container = el.shadowRoot?.querySelector('.snippet-view');
80
-
81
- // Applies the right container classes
82
- expect(container?.classList.contains('list')).to.be.true;
83
- expect(container?.classList.contains('grid')).to.be.false;
84
- });
85
- });