@internetarchive/collection-browser 0.3.0-alpha.5 → 0.3.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 (210) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +43 -42
  12. package/dist/src/app-root.js +301 -241
  13. package/dist/src/app-root.js.map +1 -1
  14. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  15. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  17. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  18. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  19. package/dist/src/assets/img/icons/chevron.js +2 -2
  20. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  21. package/dist/src/assets/img/icons/empty-query.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  29. package/dist/src/assets/img/icons/login-required.js +2 -2
  30. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  56. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  57. package/dist/src/assets/img/icons/null-result.js +2 -2
  58. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  59. package/dist/src/assets/img/icons/restricted.js +2 -2
  60. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  61. package/dist/src/assets/img/icons/reviews.js +2 -2
  62. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  63. package/dist/src/assets/img/icons/upload.js +2 -2
  64. package/dist/src/assets/img/icons/views.d.ts +1 -1
  65. package/dist/src/assets/img/icons/views.js +2 -2
  66. package/dist/src/circular-activity-indicator.d.ts +5 -5
  67. package/dist/src/circular-activity-indicator.js +17 -17
  68. package/dist/src/collection-browser.d.ts +234 -234
  69. package/dist/src/collection-browser.js +1026 -1026
  70. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  71. package/dist/src/collection-facets/facets-template.js +139 -131
  72. package/dist/src/collection-facets/facets-template.js.map +1 -1
  73. package/dist/src/collection-facets/facets-util.d.ts +10 -10
  74. package/dist/src/collection-facets/facets-util.js +19 -19
  75. package/dist/src/collection-facets/more-facets-content.d.ts +74 -84
  76. package/dist/src/collection-facets/more-facets-content.js +331 -352
  77. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  78. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  79. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  80. package/dist/src/collection-facets.d.ts +71 -71
  81. package/dist/src/collection-facets.js +330 -324
  82. package/dist/src/collection-facets.js.map +1 -1
  83. package/dist/src/empty-placeholder.d.ts +11 -11
  84. package/dist/src/empty-placeholder.js +42 -42
  85. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  86. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  87. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  88. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  89. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  90. package/dist/src/mediatype/mediatype-config.js +85 -85
  91. package/dist/src/models.d.ts +89 -89
  92. package/dist/src/models.js +85 -85
  93. package/dist/src/restoration-state-handler.d.ts +45 -38
  94. package/dist/src/restoration-state-handler.js +219 -202
  95. package/dist/src/restoration-state-handler.js.map +1 -1
  96. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  97. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  98. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  100. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/list.js +2 -2
  102. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  104. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  105. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  106. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  107. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  108. package/dist/src/styles/item-image-styles.d.ts +8 -8
  109. package/dist/src/styles/item-image-styles.js +9 -9
  110. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  111. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  112. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  113. package/dist/src/tiles/grid/account-tile.js +20 -20
  114. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  115. package/dist/src/tiles/grid/collection-tile.js +23 -23
  116. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  117. package/dist/src/tiles/grid/item-tile.js +87 -87
  118. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  119. package/dist/src/tiles/grid/tile-stats.js +35 -35
  120. package/dist/src/tiles/image-block.d.ts +17 -17
  121. package/dist/src/tiles/image-block.js +73 -73
  122. package/dist/src/tiles/item-image.d.ts +31 -31
  123. package/dist/src/tiles/item-image.js +103 -103
  124. package/dist/src/tiles/list/account-label.d.ts +1 -1
  125. package/dist/src/tiles/list/account-label.js +6 -6
  126. package/dist/src/tiles/list/date-label.d.ts +1 -1
  127. package/dist/src/tiles/list/date-label.js +12 -12
  128. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  129. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  130. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  131. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  132. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  133. package/dist/src/tiles/list/tile-list.js +263 -263
  134. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  135. package/dist/src/tiles/mediatype-icon.js +47 -47
  136. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  137. package/dist/src/tiles/overlay/icon-overlay.js +31 -31
  138. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  139. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  140. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  141. package/dist/src/tiles/text-snippet-block.js +81 -81
  142. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  143. package/dist/src/tiles/tile-dispatcher.js +128 -128
  144. package/dist/src/utils/analytics-events.d.ts +18 -18
  145. package/dist/src/utils/analytics-events.js +20 -20
  146. package/dist/src/utils/format-count.d.ts +7 -7
  147. package/dist/src/utils/format-count.js +75 -75
  148. package/dist/src/utils/format-date.d.ts +2 -2
  149. package/dist/src/utils/format-date.js +23 -23
  150. package/dist/test/collection-browser.test.d.ts +1 -1
  151. package/dist/test/collection-browser.test.js +316 -316
  152. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  153. package/dist/test/collection-facets/facets-template.test.js +62 -62
  154. package/dist/test/collection-facets/facets-util.test.d.ts +1 -1
  155. package/dist/test/collection-facets/facets-util.test.js +12 -12
  156. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  157. package/dist/test/collection-facets/more-facets-content.test.js +91 -91
  158. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  159. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  160. package/dist/test/collection-facets.test.d.ts +2 -2
  161. package/dist/test/collection-facets.test.js +182 -182
  162. package/dist/test/empty-placeholder.test.d.ts +1 -1
  163. package/dist/test/empty-placeholder.test.js +33 -33
  164. package/dist/test/icon-overlay.test.d.ts +1 -1
  165. package/dist/test/icon-overlay.test.js +24 -24
  166. package/dist/test/item-image.test.d.ts +1 -1
  167. package/dist/test/item-image.test.js +56 -56
  168. package/dist/test/mediatype-config.test.d.ts +1 -1
  169. package/dist/test/mediatype-config.test.js +16 -16
  170. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  171. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  172. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  173. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  174. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  175. package/dist/test/mocks/mock-search-responses.js +103 -103
  176. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  177. package/dist/test/mocks/mock-search-service.js +25 -25
  178. package/dist/test/restoration-state-handler.test.d.ts +1 -0
  179. package/dist/test/restoration-state-handler.test.js +118 -0
  180. package/dist/test/restoration-state-handler.test.js.map +1 -0
  181. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  182. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  183. package/dist/test/text-overlay.test.d.ts +1 -1
  184. package/dist/test/text-overlay.test.js +41 -41
  185. package/dist/test/text-snippet-block.test.d.ts +1 -1
  186. package/dist/test/text-snippet-block.test.js +57 -57
  187. package/dist/test/tile-stats.test.d.ts +1 -1
  188. package/dist/test/tile-stats.test.js +33 -33
  189. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  190. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  191. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  192. package/dist/test/tiles/list/tile-list.test.js +36 -36
  193. package/dist/test/utils/format-count.test.d.ts +1 -1
  194. package/dist/test/utils/format-count.test.js +23 -23
  195. package/dist/test/utils/format-date.test.d.ts +1 -1
  196. package/dist/test/utils/format-date.test.js +17 -17
  197. package/index.html +24 -24
  198. package/local.archive.org.cert +86 -86
  199. package/local.archive.org.key +27 -27
  200. package/package.json +115 -115
  201. package/renovate.json +6 -6
  202. package/src/app-root.ts +92 -31
  203. package/src/collection-facets/facets-template.ts +14 -6
  204. package/src/collection-facets/more-facets-content.ts +1 -25
  205. package/src/collection-facets.ts +9 -3
  206. package/src/restoration-state-handler.ts +45 -11
  207. package/test/restoration-state-handler.test.ts +176 -0
  208. package/tsconfig.json +21 -21
  209. package/web-dev-server.config.mjs +30 -30
  210. package/web-test-runner.config.mjs +41 -41
@@ -1,27 +1,27 @@
1
- -----BEGIN RSA PRIVATE KEY-----
2
- MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
3
- DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
4
- 9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
5
- pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
6
- HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
7
- s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
8
- BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
9
- 0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
10
- PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
11
- fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
12
- dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
13
- MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
14
- sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
15
- foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
16
- o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
17
- 9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
18
- Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
19
- Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
20
- sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
21
- Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
22
- 49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
23
- ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
24
- WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
25
- wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
26
- g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
27
- -----END RSA PRIVATE KEY-----
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAqVTKNP+LMgI5l2G99RJcStCHLtZCY3LqtJCVzErvWmYJnx0I
3
+ DbL0LrNVWZwPdzce16Nctz2BhPxVryDnPL2eKyue0ZWdFJBwfJl48d1CK/2HuQnw
4
+ 9lDHkEHe4u7doEpN3iBq6BuBf9kXDfXyodyJ2OmJnP9Atw67FtvR4GdfJN47uBi4
5
+ pt3VJooqpPIDsagVIzHJZd6bWrDwT+938Yt7kZWgYb4fZCnGLiwDG/CRlrar+xG3
6
+ HEG8Q24bbyiIQL2oRyiepGQx4KVy2wnLsJ561dB/FRV11NZ4QcmhVHNIGU9ylaEx
7
+ s0yBQRND2ZuM0C4pCaJZaxVtXJMiA/Vy8Ea+ZQIDAQABAoIBAAQgUdEazQyJ61da
8
+ BWP8b41PKYwlonaD7V47C7tvtAdy5xcegPy8eKDOs+y8FdBk4naEv5Sjhg10jK34
9
+ 0kmzoTASHwuiZrKClosivkS+jIc/5VfH+zw1WbeVM1Y6VeI7DUy1Y4WGbhBsfNhV
10
+ PvVcx2smvbi6q5wKWtrCvomGW1YtngNBXJBPDWXysaVZdpF+6iWtw0RjWxbKEeMb
11
+ fjZ2sxl7h1EkTXxQR9pfl9WVgl6vRRXp1o+N71M14jp5t95xCyf49YzeEuZmc1Fc
12
+ dD77LNGcxr3kpkcQH5FdDP/spla+lR+JKb78FVqhEdPP3WcJ1qcrAstG2npAfKpj
13
+ MD9AhsECgYEA3BddOjeK9epaGbTZRKgmIOSgGEHo8WbVHqBHhyQKAb8kFVEPn+Hl
14
+ sq2EEQZf0ZJ/HhlVBc0Gj4/2PI8vj1Lzh+QWJnFu+XN/doOm5X62Ctz13qC5oWJp
15
+ foQ9HXcg4GAXhm/o3KUIntLrUwoi/UW8YOSRFXS8RSJtuh1rI5P2jjECgYEAxPVP
16
+ o/9+12Fc2ujdm8cQ1tB1Ab9Z73/vloG/xit0uMp89OqXUHEmtud/WzaIQvNxdaWi
17
+ 9/BqAG9Oml51T3cuYPxNDkSmtd2fieq9Nh17dw8zYGMk0cSYeecgvCJOrRIJnebW
18
+ Glyt8vzBb3eD6FzhZoVNOVYareainSP1cwl5YnUCgYAsr2m0OjayeyRT983tDJ7B
19
+ Kun+QtOCv7ghgbVEEOMfO6md0llzwq+aOXSI6Fxn9nBssgP7K4dbeoUqAoBLfzIG
20
+ sx50K6+2YebNLymhirp3NimNS+CkjZCRqVOnOdqo85mTKAGFWtSHOpegwnwcJB59
21
+ Jar3Sj43YygYE4T/Mjlq4QKBgQC8zUcdt2J4xl1Df6xHkuiic0tmdG6a9jHOPex+
22
+ 49NM/NYR1Ptd4kmxVXKxFjJCs6jUlQYG1NBYQFrCAcBEf8PWtqSLA+YnOh6gD4R3
23
+ ZoWfGNQwFnoKF4HugU/Q6LYwk7TiR5B/zs30urQWzSOGT9rF8wyW5OJIR2kkZ373
24
+ WmKgrQKBgGaw32CMejz3wBpzOAXsYJcMsVfNCMD4bJ2EbXhYuY8HB8IEEv6wqMsp
25
+ wtXIgHJubfIiA3MlVsfaUkRdtHMHbN+Us1oynu6nByLhYlAMKpOsJFzPVHHwGB/1
26
+ g3WtzfFk5eOoZltJBm5K41zjS7lyr1t05648pT6niy9snu6LaF94
27
+ -----END RSA PRIVATE KEY-----
package/package.json CHANGED
@@ -1,115 +1,115 @@
1
- {
2
- "name": "@internetarchive/collection-browser",
3
- "description": "The Internet Archive Collection Browser.",
4
- "license": "AGPL-3.0-only",
5
- "author": "Internet Archive",
6
- "version": "0.3.0-alpha.5",
7
- "main": "dist/index.js",
8
- "module": "dist/index.js",
9
- "scripts": {
10
- "start": "yarn run prepare && tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds\"",
11
- "prepare:ghpages": "rimraf ghpages && yarn run prepare && vite build",
12
- "prepare": "rimraf dist && tsc && husky install",
13
- "lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
14
- "format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
15
- "circular": "madge --circular --extensions ts .",
16
- "test": "tsc && yarn run lint && yarn run circular && wtr --coverage",
17
- "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"",
18
- "deploy": "yarn run deploy:run -e $(git branch --show-current)",
19
- "deploy:run": "yarn run prepare:ghpages && touch ghpages/.nojekyll && yarn run deploy:gh",
20
- "deploy:gh": "gh-pages -t -d ghpages -m \"Build for $(git log --pretty=format:\"%h %an %ai %s\" -n1) [skip ci]\"",
21
- "typecheck": "yarn tsc --noEmit"
22
- },
23
- "types": "dist/index.d.ts",
24
- "dependencies": {
25
- "@internetarchive/analytics-manager": "^0.1.2",
26
- "@internetarchive/collection-name-cache": "^0.2.0",
27
- "@internetarchive/feature-feedback": "^0.1.4",
28
- "@internetarchive/field-parsers": "^0.1.3",
29
- "@internetarchive/histogram-date-range": "^0.1.7",
30
- "@internetarchive/ia-activity-indicator": "^0.0.3",
31
- "@internetarchive/infinite-scroller": "^0.1.3",
32
- "@internetarchive/local-cache": "^0.2.1",
33
- "@internetarchive/modal-manager": "^0.2.7",
34
- "@internetarchive/search-service": "^0.4.0",
35
- "@internetarchive/shared-resize-observer": "^0.2.0",
36
- "@lit/localize": "^0.11.2",
37
- "dompurify": "^2.3.6",
38
- "eslint-plugin-lit": "^1.6.1",
39
- "lit": "^2.2.2",
40
- "typescript-cookie": "^1.0.3"
41
- },
42
- "devDependencies": {
43
- "@internetarchive/result-type": "^0.0.1",
44
- "@open-wc/eslint-config": "^8.0.2",
45
- "@open-wc/testing": "^3.0.3",
46
- "@types/dompurify": "^2.3.3",
47
- "@typescript-eslint/eslint-plugin": "^5.3.1",
48
- "@typescript-eslint/parser": "^5.3.1",
49
- "@web/dev-server": "^0.1.28",
50
- "@web/test-runner": "^0.13.22",
51
- "concurrently": "^6.3.0",
52
- "eslint": "^8.2.0",
53
- "eslint-config-prettier": "^8.3.0",
54
- "eslint-plugin-html": "^7.1.0",
55
- "eslint-plugin-import": "^2.25.3",
56
- "eslint-plugin-lit-a11y": "^2.2.0",
57
- "eslint-plugin-no-only-tests": "^3.0.0",
58
- "eslint-plugin-wc": "^1.3.2",
59
- "gh-pages": "^4.0.0",
60
- "husky": "^7.0.0",
61
- "madge": "^5.0.1",
62
- "prettier": "^2.4.1",
63
- "rimraf": "^3.0.2",
64
- "sinon": "^12.0.1",
65
- "tslib": "^2.3.1",
66
- "typescript": "^4.4.4",
67
- "vite": "^2.9.9"
68
- },
69
- "publishConfig": {
70
- "access": "public"
71
- },
72
- "eslintConfig": {
73
- "parser": "@typescript-eslint/parser",
74
- "extends": [
75
- "@open-wc",
76
- "prettier"
77
- ],
78
- "plugins": [
79
- "@typescript-eslint"
80
- ],
81
- "rules": {
82
- "no-unused-vars": "off",
83
- "@typescript-eslint/no-unused-vars": [
84
- "error"
85
- ],
86
- "no-shadow": "off",
87
- "@typescript-eslint/no-shadow": [
88
- "error"
89
- ],
90
- "class-methods-use-this": "off",
91
- "import/no-unresolved": "off",
92
- "import/extensions": [
93
- "off",
94
- "ignorePackages",
95
- {
96
- "js": "never",
97
- "ts": "never"
98
- }
99
- ],
100
- "no-unsafe-optional-chaining": "warn",
101
- "default-param-last": "warn"
102
- }
103
- },
104
- "prettier": {
105
- "singleQuote": true,
106
- "arrowParens": "avoid"
107
- },
108
- "lint-staged": {
109
- "*.ts": [
110
- "eslint --fix",
111
- "prettier --write",
112
- "git add"
113
- ]
114
- }
115
- }
1
+ {
2
+ "name": "@internetarchive/collection-browser",
3
+ "description": "The Internet Archive Collection Browser.",
4
+ "license": "AGPL-3.0-only",
5
+ "author": "Internet Archive",
6
+ "version": "0.3.0",
7
+ "main": "dist/index.js",
8
+ "module": "dist/index.js",
9
+ "scripts": {
10
+ "start": "yarn run prepare && tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wds\"",
11
+ "prepare:ghpages": "rimraf ghpages && yarn run prepare && vite build",
12
+ "prepare": "rimraf dist && tsc && husky install",
13
+ "lint": "eslint --ext .ts,.html . --ignore-path .gitignore && prettier \"**/*.ts\" --check --ignore-path .gitignore",
14
+ "format": "eslint --ext .ts,.html . --fix --ignore-path .gitignore && prettier \"**/*.ts\" --write --ignore-path .gitignore",
15
+ "circular": "madge --circular --extensions ts .",
16
+ "test": "tsc && yarn run lint && yarn run circular && wtr --coverage",
17
+ "test:watch": "tsc && concurrently -k -r \"tsc --watch --preserveWatchOutput\" \"wtr --watch\"",
18
+ "deploy": "yarn run deploy:run -e $(git branch --show-current)",
19
+ "deploy:run": "yarn run prepare:ghpages && touch ghpages/.nojekyll && yarn run deploy:gh",
20
+ "deploy:gh": "gh-pages -t -d ghpages -m \"Build for $(git log --pretty=format:\"%h %an %ai %s\" -n1) [skip ci]\"",
21
+ "typecheck": "yarn tsc --noEmit"
22
+ },
23
+ "types": "dist/index.d.ts",
24
+ "dependencies": {
25
+ "@internetarchive/analytics-manager": "^0.1.2",
26
+ "@internetarchive/collection-name-cache": "^0.2.1-alpha.1",
27
+ "@internetarchive/feature-feedback": "^0.1.4",
28
+ "@internetarchive/field-parsers": "^0.1.3",
29
+ "@internetarchive/histogram-date-range": "^0.1.7",
30
+ "@internetarchive/ia-activity-indicator": "^0.0.3",
31
+ "@internetarchive/infinite-scroller": "^0.1.3",
32
+ "@internetarchive/local-cache": "^0.2.1",
33
+ "@internetarchive/modal-manager": "^0.2.7",
34
+ "@internetarchive/search-service": "^0.4.1-alpha.1",
35
+ "@internetarchive/shared-resize-observer": "^0.2.0",
36
+ "@lit/localize": "^0.11.2",
37
+ "dompurify": "^2.3.6",
38
+ "eslint-plugin-lit": "^1.6.1",
39
+ "lit": "^2.2.2",
40
+ "typescript-cookie": "^1.0.3"
41
+ },
42
+ "devDependencies": {
43
+ "@internetarchive/result-type": "^0.0.1",
44
+ "@open-wc/eslint-config": "^8.0.2",
45
+ "@open-wc/testing": "^3.0.3",
46
+ "@types/dompurify": "^2.3.3",
47
+ "@typescript-eslint/eslint-plugin": "^5.3.1",
48
+ "@typescript-eslint/parser": "^5.3.1",
49
+ "@web/dev-server": "^0.1.28",
50
+ "@web/test-runner": "^0.13.22",
51
+ "concurrently": "^6.3.0",
52
+ "eslint": "^8.2.0",
53
+ "eslint-config-prettier": "^8.3.0",
54
+ "eslint-plugin-html": "^7.1.0",
55
+ "eslint-plugin-import": "^2.25.3",
56
+ "eslint-plugin-lit-a11y": "^2.2.0",
57
+ "eslint-plugin-no-only-tests": "^3.0.0",
58
+ "eslint-plugin-wc": "^1.3.2",
59
+ "gh-pages": "^4.0.0",
60
+ "husky": "^7.0.0",
61
+ "madge": "^5.0.1",
62
+ "prettier": "^2.4.1",
63
+ "rimraf": "^3.0.2",
64
+ "sinon": "^12.0.1",
65
+ "tslib": "^2.3.1",
66
+ "typescript": "^4.4.4",
67
+ "vite": "^2.9.9"
68
+ },
69
+ "publishConfig": {
70
+ "access": "public"
71
+ },
72
+ "eslintConfig": {
73
+ "parser": "@typescript-eslint/parser",
74
+ "extends": [
75
+ "@open-wc",
76
+ "prettier"
77
+ ],
78
+ "plugins": [
79
+ "@typescript-eslint"
80
+ ],
81
+ "rules": {
82
+ "no-unused-vars": "off",
83
+ "@typescript-eslint/no-unused-vars": [
84
+ "error"
85
+ ],
86
+ "no-shadow": "off",
87
+ "@typescript-eslint/no-shadow": [
88
+ "error"
89
+ ],
90
+ "class-methods-use-this": "off",
91
+ "import/no-unresolved": "off",
92
+ "import/extensions": [
93
+ "off",
94
+ "ignorePackages",
95
+ {
96
+ "js": "never",
97
+ "ts": "never"
98
+ }
99
+ ],
100
+ "no-unsafe-optional-chaining": "warn",
101
+ "default-param-last": "warn"
102
+ }
103
+ },
104
+ "prettier": {
105
+ "singleQuote": true,
106
+ "arrowParens": "avoid"
107
+ },
108
+ "lint-staged": {
109
+ "*.ts": [
110
+ "eslint --fix",
111
+ "prettier --write",
112
+ "git add"
113
+ ]
114
+ }
115
+ }
package/renovate.json CHANGED
@@ -1,6 +1,6 @@
1
- {
2
- "extends": [
3
- "config:base",
4
- ":preserveSemverRanges"
5
- ]
6
- }
1
+ {
2
+ "extends": [
3
+ "config:base",
4
+ ":preserveSemverRanges"
5
+ ]
6
+ }
package/src/app-root.ts CHANGED
@@ -1,3 +1,4 @@
1
+ /* eslint-disable no-console */
1
2
  import {
2
3
  AnalyticsEvent,
3
4
  AnalyticsManager,
@@ -103,36 +104,20 @@ export class AppRoot extends LitElement {
103
104
  render() {
104
105
  return html`
105
106
  <div id="dev-tools">
106
- <form @submit=${this.searchPressed}>
107
- Query:
108
- <input
109
- type="text"
110
- id="base-query-field"
111
- .value=${this.searchQuery ?? ''}
112
- />
113
- <input type="submit" value="Search" />
114
- </form>
115
-
116
- <form @submit=${this.changePagePressed}>
117
- Page: <input type="number" value="1" id="page-number-input" />
118
- <input type="submit" value="Go" />
119
- </form>
120
-
121
- <div id="last-event">
122
- <button
123
- @click=${() => {
124
- const details = this.shadowRoot?.getElementById(
125
- 'latest-event-details'
126
- );
127
- details?.classList.toggle('hidden');
128
- }}
129
- >
130
- Last Event Captured
131
- </button>
132
- <pre id="latest-event-details" class="hidden">
133
- ${JSON.stringify(this.latestAction, null, 2)}
134
- </pre
135
- >
107
+ <div id="search-and-page-inputs">
108
+ <form @submit=${this.searchPressed}>
109
+ Query:
110
+ <input
111
+ type="text"
112
+ id="base-query-field"
113
+ .value=${this.searchQuery ?? ''}
114
+ />
115
+ <input type="submit" value="Search" />
116
+ </form>
117
+ <form @submit=${this.changePagePressed}>
118
+ Page: <input type="number" value="1" id="page-number-input" />
119
+ <input type="submit" value="Go" />
120
+ </form>
136
121
  </div>
137
122
 
138
123
  <div id="search-types">
@@ -156,7 +141,39 @@ export class AppRoot extends LitElement {
156
141
  <label for="fulltext-search">Full text</label>
157
142
  </div>
158
143
 
159
- <div id="cell-controls">
144
+ <div id="toggle-controls">
145
+ <button
146
+ @click=${() => {
147
+ const details =
148
+ this.shadowRoot?.getElementById('cell-size-control');
149
+ details?.classList.toggle('hidden');
150
+ const rowGapControls =
151
+ this.shadowRoot?.getElementById('cell-gap-control');
152
+ rowGapControls?.classList.toggle('hidden');
153
+ }}
154
+ >
155
+ Toggle Cell Controls
156
+ </button>
157
+ <button
158
+ @click=${() => {
159
+ const details = this.shadowRoot?.getElementById(
160
+ 'latest-event-details'
161
+ );
162
+ details?.classList.toggle('hidden');
163
+ }}
164
+ >
165
+ Last Event Captured
166
+ </button>
167
+ </div>
168
+
169
+ <div id="last-event">
170
+ <pre id="latest-event-details" class="hidden">
171
+ ${JSON.stringify(this.latestAction, null, 2)}
172
+ </pre
173
+ >
174
+ </div>
175
+
176
+ <div id="cell-controls" class="hidden">
160
177
  <div id="cell-size-control">
161
178
  <div>
162
179
  <label for="cell-width-slider">Minimum cell width:</label>
@@ -192,6 +209,16 @@ export class AppRoot extends LitElement {
192
209
  @click=${this.outlineChanged}
193
210
  />
194
211
  </div>
212
+ <div>
213
+ <label for="show-facet-group-outline-check"
214
+ >Show Facet Group Outlines:</label
215
+ >
216
+ <input
217
+ type="checkbox"
218
+ id="show-facet-group-outline-check"
219
+ @click=${this.toggleFacetGroupOutline}
220
+ />
221
+ </div>
195
222
  <div>
196
223
  <label for="simulate-login">Simulate Login:</label>
197
224
  <input
@@ -297,6 +324,17 @@ export class AppRoot extends LitElement {
297
324
  }
298
325
  }
299
326
 
327
+ private toggleFacetGroupOutline(e: Event) {
328
+ const target = e.target as HTMLInputElement;
329
+ if (target.checked) {
330
+ this.collectionBrowser.classList.add('showFacetGroupOutlines');
331
+ this.modalManager.classList.add('showFacetGroupOutlines');
332
+ } else {
333
+ this.collectionBrowser.classList.remove('showFacetGroupOutlines');
334
+ this.modalManager.classList.remove('showFacetGroupOutlines');
335
+ }
336
+ }
337
+
300
338
  private async snippetsChanged(e: Event) {
301
339
  const target = e.target as HTMLInputElement;
302
340
  if (target.checked) {
@@ -430,6 +468,12 @@ export class AppRoot extends LitElement {
430
468
  margin-top: 20rem;
431
469
  }
432
470
 
471
+ modal-manager.showFacetGroupOutlines,
472
+ collection-browser.showFacetGroupOutlines {
473
+ --facet-row-border-top: 1px solid red;
474
+ --facet-row-border-bottom: 1px solid blue;
475
+ }
476
+
433
477
  #base-query-field {
434
478
  width: 300px;
435
479
  }
@@ -443,6 +487,11 @@ export class AppRoot extends LitElement {
443
487
  backdrop-filter: blur(10px);
444
488
  padding: 0.5rem 1rem;
445
489
  border: 1px solid black;
490
+ font-size: 1.4rem;
491
+ }
492
+
493
+ #dev-tools > * {
494
+ display: flex;
446
495
  }
447
496
 
448
497
  #cell-controls {
@@ -467,5 +516,17 @@ export class AppRoot extends LitElement {
467
516
  .hidden {
468
517
  display: none;
469
518
  }
519
+
520
+ #toggle-controls {
521
+ background-color: lightskyblue;
522
+ padding: 5px;
523
+ margin: 5px auto;
524
+ }
525
+
526
+ #search-types {
527
+ margin: 5px auto;
528
+ background-color: aliceblue;
529
+ font-size: 1.6rem;
530
+ }
470
531
  `;
471
532
  }
@@ -198,9 +198,6 @@ export class FacetsTemplate extends LitElement {
198
198
  column-width: 25rem;
199
199
  column-gap: 15px;
200
200
  }
201
- .facets-on-page .select-facet-checkbox {
202
- margin-left: 0;
203
- }
204
201
  async-collection-name {
205
202
  display: contents;
206
203
  }
@@ -215,20 +212,31 @@ export class FacetsTemplate extends LitElement {
215
212
  }
216
213
  .facet-checkbox {
217
214
  margin: 0 5px 0 0;
218
- display: inline-block;
219
- align-items: baseline;
215
+ display: flex;
216
+ height: 15px;
217
+ }
218
+ .facet-checkbox input:first-child {
219
+ margin-right: 5px;
220
+ }
221
+ .facet-checkbox input {
222
+ height: 15px;
223
+ width: 15px;
224
+ margin: 0;
220
225
  }
221
226
  .facet-row {
222
227
  display: flex;
223
228
  font-weight: 500;
224
229
  font-size: 1.2rem;
230
+ margin: 2.5px auto;
231
+ height: auto;
232
+ border-top: var(--facet-row-border-top, 1px solid transparent);
233
+ border-bottom: var(--facet-row-border-bottom, 1px solid transparent);
225
234
  }
226
235
  .facet-info-display {
227
236
  display: flex;
228
237
  flex: 1 1 0%;
229
238
  cursor: pointer;
230
239
  flex-wrap: wrap;
231
- align-content: center;
232
240
  }
233
241
  .facet-title {
234
242
  word-break: break-word;
@@ -312,30 +312,6 @@ export class MoreFacetsContent extends LitElement {
312
312
  this.collectionNameCache?.preloadIdentifiers(collectionIdsArray);
313
313
  }
314
314
 
315
- /**
316
- * sort the facets on modal
317
- * - alpha sort perform in ascending order
318
- * - count/frequency sort perform in descending order
319
- *
320
- * @param facetBucket as Bucket[]
321
- *
322
- * @return sortedFacetBucket as Bucket
323
- */
324
- private sortedFacets(facetBucket: Bucket[]) {
325
- let sortedFacetBucket = facetBucket;
326
- if (this.sortedBy === 'alpha') {
327
- // sort by alphabetic in ascending order. eg. a,b,c,...
328
- sortedFacetBucket = facetBucket?.sort((a, b) => (a.key > b.key ? 1 : -1));
329
- } else {
330
- // sort by frequency/count in descending order. eg 100,99,98,...
331
- sortedFacetBucket = facetBucket?.sort((a, b) =>
332
- a.doc_count < b.doc_count ? 1 : -1
333
- );
334
- }
335
-
336
- return sortedFacetBucket;
337
- }
338
-
339
315
  private get getMoreFacetsTemplate(): TemplateResult {
340
316
  return html`
341
317
  <facets-template
@@ -462,7 +438,7 @@ export class MoreFacetsContent extends LitElement {
462
438
  }
463
439
  .scrollable-content {
464
440
  overflow-y: auto;
465
- max-height: 65vh;
441
+ max-height: 60vh;
466
442
  }
467
443
  .facets-content {
468
444
  font-size: 1.2rem;
@@ -8,7 +8,7 @@ import {
8
8
  TemplateResult,
9
9
  } from 'lit';
10
10
  import { customElement, property, state } from 'lit/decorators.js';
11
- import type {
11
+ import {
12
12
  Aggregation,
13
13
  Bucket,
14
14
  SearchServiceInterface,
@@ -374,9 +374,15 @@ export class CollectionFacets extends LitElement {
374
374
  private searchMoreFacetsLink(
375
375
  facetGroup: FacetGroup
376
376
  ): TemplateResult | typeof nothing {
377
- // don't render More... link if the number of facets < this.allowedFacetCount
378
- if (Object.keys(facetGroup.buckets).length < this.allowedFacetCount)
377
+ // Don't render More... links for FTS searches
378
+ if (this.searchType === SearchType.FULLTEXT) {
379
379
  return nothing;
380
+ }
381
+
382
+ // Don't render More... link if the number of facets < this.allowedFacetCount
383
+ if (Object.keys(facetGroup.buckets).length < this.allowedFacetCount) {
384
+ return nothing;
385
+ }
380
386
 
381
387
  return html`<button
382
388
  class="more-link"