@internetarchive/collection-browser 2.7.12 → 2.7.13

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 (318) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +13 -13
  6. package/dist/index.js +13 -13
  7. package/dist/src/app-root.d.ts +107 -107
  8. package/dist/src/app-root.js +531 -531
  9. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  10. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  11. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  13. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  14. package/dist/src/assets/img/icons/chevron.js +2 -2
  15. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  16. package/dist/src/assets/img/icons/contract.js +2 -2
  17. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  18. package/dist/src/assets/img/icons/empty-query.js +2 -2
  19. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  20. package/dist/src/assets/img/icons/expand.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  29. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  30. package/dist/src/assets/img/icons/filter.js +2 -2
  31. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  32. package/dist/src/assets/img/icons/login-required.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  59. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  60. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  61. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  62. package/dist/src/assets/img/icons/null-result.js +2 -2
  63. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  64. package/dist/src/assets/img/icons/restricted.js +2 -2
  65. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  66. package/dist/src/assets/img/icons/reviews.js +2 -2
  67. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  68. package/dist/src/assets/img/icons/upload.js +2 -2
  69. package/dist/src/assets/img/icons/views.d.ts +1 -1
  70. package/dist/src/assets/img/icons/views.js +2 -2
  71. package/dist/src/circular-activity-indicator.d.ts +5 -5
  72. package/dist/src/circular-activity-indicator.js +17 -17
  73. package/dist/src/collection-browser.d.ts +606 -606
  74. package/dist/src/collection-browser.js +1677 -1677
  75. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  76. package/dist/src/collection-facets/facet-row.js +118 -118
  77. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  78. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  79. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  80. package/dist/src/collection-facets/facets-template.js +44 -44
  81. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  82. package/dist/src/collection-facets/more-facets-content.js +407 -407
  83. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  84. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  85. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  86. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  87. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  88. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  89. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  90. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  91. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  92. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  93. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  94. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  95. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  96. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
  97. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  98. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  99. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  100. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  101. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  102. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  103. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  104. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  105. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  106. package/dist/src/collection-facets/toggle-switch.js +94 -94
  107. package/dist/src/collection-facets.d.ts +103 -103
  108. package/dist/src/collection-facets.js +522 -522
  109. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -245
  110. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  111. package/dist/src/data-source/collection-browser-data-source.d.ts +377 -377
  112. package/dist/src/data-source/collection-browser-data-source.js +1004 -1001
  113. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  114. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -44
  115. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  116. package/dist/src/data-source/models.d.ts +28 -28
  117. package/dist/src/data-source/models.js +8 -8
  118. package/dist/src/empty-placeholder.d.ts +23 -23
  119. package/dist/src/empty-placeholder.js +79 -79
  120. package/dist/src/expanded-date-picker.d.ts +43 -43
  121. package/dist/src/expanded-date-picker.js +109 -109
  122. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  123. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  124. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  125. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  126. package/dist/src/manage/manage-bar.d.ts +58 -58
  127. package/dist/src/manage/manage-bar.js +159 -159
  128. package/dist/src/manage/remove-items-modal-content.d.ts +9 -9
  129. package/dist/src/manage/remove-items-modal-content.js +34 -34
  130. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  131. package/dist/src/mediatype/mediatype-config.js +91 -91
  132. package/dist/src/models.d.ts +228 -228
  133. package/dist/src/models.js +401 -401
  134. package/dist/src/restoration-state-handler.d.ts +70 -70
  135. package/dist/src/restoration-state-handler.js +363 -363
  136. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  137. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  138. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  139. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  140. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  141. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  142. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  143. package/dist/src/sort-filter-bar/img/list.js +2 -2
  144. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  145. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  146. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  147. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  148. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  149. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  150. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  151. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  152. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  153. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  154. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  155. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
  156. package/dist/src/styles/ia-button.d.ts +2 -2
  157. package/dist/src/styles/ia-button.js +17 -17
  158. package/dist/src/styles/item-image-styles.d.ts +8 -8
  159. package/dist/src/styles/item-image-styles.js +9 -9
  160. package/dist/src/styles/sr-only.d.ts +1 -1
  161. package/dist/src/styles/sr-only.js +2 -2
  162. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  163. package/dist/src/tiles/base-tile-component.js +64 -64
  164. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  165. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  166. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  167. package/dist/src/tiles/grid/account-tile.js +72 -72
  168. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  169. package/dist/src/tiles/grid/collection-tile.js +80 -80
  170. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  171. package/dist/src/tiles/grid/item-tile.js +158 -158
  172. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  173. package/dist/src/tiles/grid/search-tile.js +51 -51
  174. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  175. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  176. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  177. package/dist/src/tiles/grid/tile-stats.js +53 -53
  178. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  179. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  180. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  181. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  182. package/dist/src/tiles/image-block.d.ts +18 -18
  183. package/dist/src/tiles/image-block.js +89 -89
  184. package/dist/src/tiles/item-image.d.ts +39 -39
  185. package/dist/src/tiles/item-image.js +154 -154
  186. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  187. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  188. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  189. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  190. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  191. package/dist/src/tiles/list/tile-list.js +323 -323
  192. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  193. package/dist/src/tiles/mediatype-icon.js +47 -47
  194. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  195. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  196. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  197. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  198. package/dist/src/tiles/review-block.d.ts +12 -12
  199. package/dist/src/tiles/review-block.js +56 -56
  200. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  201. package/dist/src/tiles/text-snippet-block.js +73 -73
  202. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  203. package/dist/src/tiles/tile-dispatcher.js +230 -230
  204. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  205. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  206. package/dist/src/utils/analytics-events.d.ts +28 -28
  207. package/dist/src/utils/analytics-events.js +30 -30
  208. package/dist/src/utils/array-equals.d.ts +4 -4
  209. package/dist/src/utils/array-equals.js +10 -10
  210. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  211. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  212. package/dist/src/utils/facet-utils.d.ts +83 -83
  213. package/dist/src/utils/facet-utils.js +145 -145
  214. package/dist/src/utils/format-count.d.ts +7 -7
  215. package/dist/src/utils/format-count.js +76 -76
  216. package/dist/src/utils/format-date.d.ts +2 -2
  217. package/dist/src/utils/format-date.js +27 -27
  218. package/dist/src/utils/format-unit-size.d.ts +2 -2
  219. package/dist/src/utils/format-unit-size.js +33 -33
  220. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  221. package/dist/src/utils/local-date-from-utc.js +15 -15
  222. package/dist/src/utils/log.d.ts +7 -7
  223. package/dist/src/utils/log.js +15 -15
  224. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  225. package/dist/src/utils/resolve-mediatype.js +23 -23
  226. package/dist/src/utils/sha1.d.ts +2 -2
  227. package/dist/src/utils/sha1.js +8 -8
  228. package/dist/test/collection-browser.test.d.ts +1 -1
  229. package/dist/test/collection-browser.test.js +1308 -1308
  230. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  231. package/dist/test/collection-facets/facet-row.test.js +227 -227
  232. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  233. package/dist/test/collection-facets/facets-template.test.js +91 -91
  234. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  235. package/dist/test/collection-facets/more-facets-content.test.js +141 -141
  236. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  237. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  238. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  239. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  240. package/dist/test/collection-facets.test.d.ts +2 -2
  241. package/dist/test/collection-facets.test.js +690 -690
  242. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  243. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  244. package/dist/test/empty-placeholder.test.d.ts +1 -1
  245. package/dist/test/empty-placeholder.test.js +63 -63
  246. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  247. package/dist/test/expanded-date-picker.test.js +95 -95
  248. package/dist/test/icon-overlay.test.d.ts +1 -1
  249. package/dist/test/icon-overlay.test.js +24 -24
  250. package/dist/test/image-block.test.d.ts +1 -1
  251. package/dist/test/image-block.test.js +107 -107
  252. package/dist/test/item-image.test.d.ts +1 -1
  253. package/dist/test/item-image.test.js +85 -85
  254. package/dist/test/manage/manage-bar.test.d.ts +2 -2
  255. package/dist/test/manage/manage-bar.test.js +100 -100
  256. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -1
  257. package/dist/test/manage/remove-items-modal-content.test.js +45 -45
  258. package/dist/test/mediatype-config.test.d.ts +1 -1
  259. package/dist/test/mediatype-config.test.js +16 -16
  260. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  261. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  262. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  263. package/dist/test/mocks/mock-search-responses.js +942 -942
  264. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  265. package/dist/test/mocks/mock-search-service.js +54 -54
  266. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  267. package/dist/test/restoration-state-handler.test.js +270 -270
  268. package/dist/test/review-block.test.d.ts +1 -1
  269. package/dist/test/review-block.test.js +44 -44
  270. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  271. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  272. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  273. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  274. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  275. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  276. package/dist/test/text-overlay.test.d.ts +1 -1
  277. package/dist/test/text-overlay.test.js +38 -38
  278. package/dist/test/text-snippet-block.test.d.ts +1 -1
  279. package/dist/test/text-snippet-block.test.js +57 -57
  280. package/dist/test/tile-stats.test.d.ts +1 -1
  281. package/dist/test/tile-stats.test.js +81 -81
  282. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  283. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  284. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  285. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  286. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  287. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  288. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  289. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  290. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  291. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  292. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  293. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  294. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  295. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  296. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  297. package/dist/test/tiles/list/tile-list.test.js +297 -297
  298. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  299. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  300. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  301. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  302. package/dist/test/utils/array-equals.test.d.ts +1 -1
  303. package/dist/test/utils/array-equals.test.js +26 -26
  304. package/dist/test/utils/format-count.test.d.ts +1 -1
  305. package/dist/test/utils/format-count.test.js +23 -23
  306. package/dist/test/utils/format-date.test.d.ts +1 -1
  307. package/dist/test/utils/format-date.test.js +30 -30
  308. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  309. package/dist/test/utils/format-unit-size.test.js +17 -17
  310. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  311. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  312. package/local.archive.org.cert +86 -86
  313. package/local.archive.org.key +27 -27
  314. package/package.json +1 -1
  315. package/renovate.json +6 -6
  316. package/src/data-source/collection-browser-data-source.ts +5 -1
  317. package/web-dev-server.config.mjs +30 -30
  318. package/web-test-runner.config.mjs +41 -41
@@ -1,80 +1,80 @@
1
- import { __decorate } from "tslib";
2
- /* eslint-disable import/no-duplicates */
3
- import { css, html, LitElement, nothing, } from 'lit';
4
- import { customElement, property, state } from 'lit/decorators.js';
5
- import { map } from 'lit/directives/map.js';
6
- import { ref } from 'lit/directives/ref.js';
7
- import { msg } from '@lit/localize';
8
- import { classMap } from 'lit/directives/class-map.js';
9
- import '@internetarchive/histogram-date-range';
10
- import '@internetarchive/feature-feedback';
11
- import { ModalConfig, } from '@internetarchive/modal-manager';
12
- import chevronIcon from './assets/img/icons/chevron';
13
- import expandIcon from './assets/img/icons/expand';
14
- import { facetDisplayOrder, facetTitles, lendingFacetDisplayNames, lendingFacetKeysVisibility, suppressedCollections, defaultFacetSort, } from './models';
15
- import './collection-facets/more-facets-content';
16
- import './collection-facets/facets-template';
17
- import './collection-facets/facet-tombstone-row';
18
- import './expanded-date-picker';
19
- import { analyticsActions, analyticsCategories, } from './utils/analytics-events';
20
- import { srOnlyStyle } from './styles/sr-only';
21
- import { ExpandedDatePicker } from './expanded-date-picker';
22
- import { sortBucketsBySelectionState, updateSelectedFacetBucket, } from './utils/facet-utils';
23
- let CollectionFacets = class CollectionFacets extends LitElement {
24
- constructor() {
25
- super(...arguments);
26
- this.moreLinksVisible = true;
27
- this.facetsLoading = false;
28
- this.fullYearAggregationLoading = false;
29
- this.collapsableFacets = false;
30
- this.showHistogramDatePicker = false;
31
- this.allowExpandingDatePicker = false;
32
- this.parentCollections = [];
33
- this.collectionPagePath = '/details/';
34
- this.isManageView = false;
35
- this.openFacets = {
36
- subject: false,
37
- lending: false,
38
- mediatype: false,
39
- language: false,
40
- creator: false,
41
- collection: false,
42
- year: false,
43
- };
44
- /**
45
- * Maximum # of facet buckets to render per facet group
46
- */
47
- this.allowedFacetCount = 6;
48
- this.handleExpandedDatePickerClosed = () => {
49
- var _a;
50
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('expanded-date-picker');
51
- };
52
- /**
53
- * Dispatches a `histogramDateRangeUpdated` event with the date range copied from the
54
- * input event.
55
- *
56
- * Arrow function to ensure `this` is always bound to the current component.
57
- */
58
- this.histogramDateRangeUpdated = (e) => {
59
- const { minDate, maxDate } = e.detail;
60
- const event = new CustomEvent('histogramDateRangeUpdated', {
61
- detail: { minDate, maxDate },
62
- });
63
- this.dispatchEvent(event);
64
- };
65
- }
66
- render() {
67
- const containerClasses = classMap({
68
- loading: this.facetsLoading,
69
- managing: this.isManageView,
70
- });
71
- // Added data-testid for Playwright testing
72
- // Using facet-group class and aria-labels is not ideal for Playwright locator
73
- const datePickerLabelId = 'date-picker-label';
1
+ import { __decorate } from "tslib";
2
+ /* eslint-disable import/no-duplicates */
3
+ import { css, html, LitElement, nothing, } from 'lit';
4
+ import { customElement, property, state } from 'lit/decorators.js';
5
+ import { map } from 'lit/directives/map.js';
6
+ import { ref } from 'lit/directives/ref.js';
7
+ import { msg } from '@lit/localize';
8
+ import { classMap } from 'lit/directives/class-map.js';
9
+ import '@internetarchive/histogram-date-range';
10
+ import '@internetarchive/feature-feedback';
11
+ import { ModalConfig, } from '@internetarchive/modal-manager';
12
+ import chevronIcon from './assets/img/icons/chevron';
13
+ import expandIcon from './assets/img/icons/expand';
14
+ import { facetDisplayOrder, facetTitles, lendingFacetDisplayNames, lendingFacetKeysVisibility, suppressedCollections, defaultFacetSort, } from './models';
15
+ import './collection-facets/more-facets-content';
16
+ import './collection-facets/facets-template';
17
+ import './collection-facets/facet-tombstone-row';
18
+ import './expanded-date-picker';
19
+ import { analyticsActions, analyticsCategories, } from './utils/analytics-events';
20
+ import { srOnlyStyle } from './styles/sr-only';
21
+ import { ExpandedDatePicker } from './expanded-date-picker';
22
+ import { sortBucketsBySelectionState, updateSelectedFacetBucket, } from './utils/facet-utils';
23
+ let CollectionFacets = class CollectionFacets extends LitElement {
24
+ constructor() {
25
+ super(...arguments);
26
+ this.moreLinksVisible = true;
27
+ this.facetsLoading = false;
28
+ this.fullYearAggregationLoading = false;
29
+ this.collapsableFacets = false;
30
+ this.showHistogramDatePicker = false;
31
+ this.allowExpandingDatePicker = false;
32
+ this.parentCollections = [];
33
+ this.collectionPagePath = '/details/';
34
+ this.isManageView = false;
35
+ this.openFacets = {
36
+ subject: false,
37
+ lending: false,
38
+ mediatype: false,
39
+ language: false,
40
+ creator: false,
41
+ collection: false,
42
+ year: false,
43
+ };
44
+ /**
45
+ * Maximum # of facet buckets to render per facet group
46
+ */
47
+ this.allowedFacetCount = 6;
48
+ this.handleExpandedDatePickerClosed = () => {
49
+ var _a;
50
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('expanded-date-picker');
51
+ };
52
+ /**
53
+ * Dispatches a `histogramDateRangeUpdated` event with the date range copied from the
54
+ * input event.
55
+ *
56
+ * Arrow function to ensure `this` is always bound to the current component.
57
+ */
58
+ this.histogramDateRangeUpdated = (e) => {
59
+ const { minDate, maxDate } = e.detail;
60
+ const event = new CustomEvent('histogramDateRangeUpdated', {
61
+ detail: { minDate, maxDate },
62
+ });
63
+ this.dispatchEvent(event);
64
+ };
65
+ }
66
+ render() {
67
+ const containerClasses = classMap({
68
+ loading: this.facetsLoading,
69
+ managing: this.isManageView,
70
+ });
71
+ // Added data-testid for Playwright testing
72
+ // Using facet-group class and aria-labels is not ideal for Playwright locator
73
+ const datePickerLabelId = 'date-picker-label';
74
74
  return html `
75
75
  <div id="container" class=${containerClasses}>
76
- ${this.showHistogramDatePicker &&
77
- (this.fullYearsHistogramAggregation || this.fullYearAggregationLoading)
76
+ ${this.showHistogramDatePicker &&
77
+ (this.fullYearsHistogramAggregation || this.fullYearAggregationLoading)
78
78
  ? html `
79
79
  <section
80
80
  class="facet-group"
@@ -87,21 +87,21 @@ let CollectionFacets = class CollectionFacets extends LitElement {
87
87
  </h3>
88
88
  ${this.histogramTemplate}
89
89
  </section>
90
- `
90
+ `
91
91
  : nothing}
92
92
  ${this.collectionPartOfTemplate}
93
93
  ${this.mergedFacets.map(facetGroup => this.getFacetGroupTemplate(facetGroup))}
94
94
  </div>
95
- `;
96
- }
97
- get collectionPartOfTemplate() {
98
- var _a;
99
- // We only display the "Part Of" section on collection pages
100
- if (!((_a = this.parentCollections) === null || _a === void 0 ? void 0 : _a.length))
101
- return nothing;
102
- // Added data-testid for Playwright testing
103
- // Using className and aria-labels is not ideal for Playwright locator
104
- const headingId = 'partof-heading';
95
+ `;
96
+ }
97
+ get collectionPartOfTemplate() {
98
+ var _a;
99
+ // We only display the "Part Of" section on collection pages
100
+ if (!((_a = this.parentCollections) === null || _a === void 0 ? void 0 : _a.length))
101
+ return nothing;
102
+ // Added data-testid for Playwright testing
103
+ // Using className and aria-labels is not ideal for Playwright locator
104
+ const headingId = 'partof-heading';
105
105
  return html `
106
106
  <section
107
107
  class="facet-group partof-collections"
@@ -112,9 +112,9 @@ let CollectionFacets = class CollectionFacets extends LitElement {
112
112
  <h3 id=${headingId}>${msg('Part Of')}</h3>
113
113
  </div>
114
114
  <ul>
115
- ${map(this.parentCollections, collxn => {
116
- var _a, _b;
117
- const collectionURL = `${this.baseNavigationUrl}${this.collectionPagePath}${collxn}`;
115
+ ${map(this.parentCollections, collxn => {
116
+ var _a, _b;
117
+ const collectionURL = `${this.baseNavigationUrl}${this.collectionPagePath}${collxn}`;
118
118
  return html ` <li>
119
119
  <a
120
120
  href=${collectionURL}
@@ -123,44 +123,44 @@ let CollectionFacets = class CollectionFacets extends LitElement {
123
123
  >
124
124
  ${(_b = (_a = this.collectionTitles) === null || _a === void 0 ? void 0 : _a.get(collxn)) !== null && _b !== void 0 ? _b : collxn}
125
125
  </a>
126
- </li>`;
126
+ </li>`;
127
127
  })}
128
128
  </ul>
129
129
  </section>
130
- `;
131
- }
132
- partOfCollectionClicked(e) {
133
- var _a;
134
- (_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
135
- category: analyticsCategories.default,
136
- action: analyticsActions.partOfCollectionClicked,
137
- label: e.target.dataset.id,
138
- });
139
- }
140
- /**
141
- * Opens a modal dialog containing an enlarged version of the date picker.
142
- */
143
- showDatePickerModal() {
144
- var _a, _b, _c;
145
- const { fullYearsHistogramAggregation } = this;
146
- const minDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.first_bucket_key;
147
- const maxDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.last_bucket_key;
148
- const buckets = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.buckets;
149
- // Because the modal manager does not clear its DOM content after being closed,
150
- // it may try to render the exact same date picker template when it is reopened.
151
- // And because it isn't actually a descendent of this collection-facets component,
152
- // changes to the template defined here may not trigger a reactive update to the date
153
- // picker, resulting in it displaying a stale date range.
154
- // This ref callback ensures that every time the date picker modal is opened, it will
155
- // always propagate the most recent date range into the date picker regardless of
156
- // whether Lit thinks the update is necessary.
157
- const expandedDatePickerChanged = (elmt) => {
158
- if (elmt && elmt instanceof ExpandedDatePicker) {
159
- const expandedDatePicker = elmt;
160
- expandedDatePicker.minSelectedDate = this.minSelectedDate;
161
- expandedDatePicker.maxSelectedDate = this.maxSelectedDate;
162
- }
163
- };
130
+ `;
131
+ }
132
+ partOfCollectionClicked(e) {
133
+ var _a;
134
+ (_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
135
+ category: analyticsCategories.default,
136
+ action: analyticsActions.partOfCollectionClicked,
137
+ label: e.target.dataset.id,
138
+ });
139
+ }
140
+ /**
141
+ * Opens a modal dialog containing an enlarged version of the date picker.
142
+ */
143
+ showDatePickerModal() {
144
+ var _a, _b, _c;
145
+ const { fullYearsHistogramAggregation } = this;
146
+ const minDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.first_bucket_key;
147
+ const maxDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.last_bucket_key;
148
+ const buckets = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.buckets;
149
+ // Because the modal manager does not clear its DOM content after being closed,
150
+ // it may try to render the exact same date picker template when it is reopened.
151
+ // And because it isn't actually a descendent of this collection-facets component,
152
+ // changes to the template defined here may not trigger a reactive update to the date
153
+ // picker, resulting in it displaying a stale date range.
154
+ // This ref callback ensures that every time the date picker modal is opened, it will
155
+ // always propagate the most recent date range into the date picker regardless of
156
+ // whether Lit thinks the update is necessary.
157
+ const expandedDatePickerChanged = (elmt) => {
158
+ if (elmt && elmt instanceof ExpandedDatePicker) {
159
+ const expandedDatePicker = elmt;
160
+ expandedDatePicker.minSelectedDate = this.minSelectedDate;
161
+ expandedDatePicker.maxSelectedDate = this.maxSelectedDate;
162
+ }
163
+ };
164
164
  const customModalContent = html `
165
165
  <expanded-date-picker
166
166
  ${ref(expandedDatePickerChanged)}
@@ -174,60 +174,60 @@ let CollectionFacets = class CollectionFacets extends LitElement {
174
174
  @histogramDateRangeApplied=${this.histogramDateRangeUpdated}
175
175
  @modalClosed=${this.handleExpandedDatePickerClosed}
176
176
  ></expanded-date-picker>
177
- `;
178
- const config = new ModalConfig({
179
- bodyColor: '#fff',
180
- headerColor: '#194880',
181
- showHeaderLogo: false,
182
- closeOnBackdropClick: true,
183
- title: html `Select a date range`,
184
- });
185
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('expanded-date-picker');
186
- (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
187
- config,
188
- customModalContent,
189
- userClosedModalCallback: this.handleExpandedDatePickerClosed,
190
- });
191
- (_c = this.analyticsHandler) === null || _c === void 0 ? void 0 : _c.sendEvent({
192
- category: analyticsCategories.default,
193
- action: analyticsActions.histogramExpanded,
194
- label: window.location.href,
195
- });
196
- }
197
- updated(changed) {
198
- if (changed.has('selectedFacets')) {
199
- this.dispatchFacetsChangedEvent();
200
- }
201
- }
202
- // TODO: want to fire analytics?
203
- dispatchFacetsChangedEvent() {
204
- const event = new CustomEvent('facetsChanged', {
205
- detail: this.selectedFacets,
206
- });
207
- this.dispatchEvent(event);
208
- }
209
- /**
210
- * Template for the "Expand" button to show the date picker modal, or
211
- * `nothing` if that button should currently not be shown.
212
- */
213
- get expandDatePickerBtnTemplate() {
214
- return this.allowExpandingDatePicker && !this.facetsLoading
177
+ `;
178
+ const config = new ModalConfig({
179
+ bodyColor: '#fff',
180
+ headerColor: '#194880',
181
+ showHeaderLogo: false,
182
+ closeOnBackdropClick: true,
183
+ title: html `Select a date range`,
184
+ });
185
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('expanded-date-picker');
186
+ (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
187
+ config,
188
+ customModalContent,
189
+ userClosedModalCallback: this.handleExpandedDatePickerClosed,
190
+ });
191
+ (_c = this.analyticsHandler) === null || _c === void 0 ? void 0 : _c.sendEvent({
192
+ category: analyticsCategories.default,
193
+ action: analyticsActions.histogramExpanded,
194
+ label: window.location.href,
195
+ });
196
+ }
197
+ updated(changed) {
198
+ if (changed.has('selectedFacets')) {
199
+ this.dispatchFacetsChangedEvent();
200
+ }
201
+ }
202
+ // TODO: want to fire analytics?
203
+ dispatchFacetsChangedEvent() {
204
+ const event = new CustomEvent('facetsChanged', {
205
+ detail: this.selectedFacets,
206
+ });
207
+ this.dispatchEvent(event);
208
+ }
209
+ /**
210
+ * Template for the "Expand" button to show the date picker modal, or
211
+ * `nothing` if that button should currently not be shown.
212
+ */
213
+ get expandDatePickerBtnTemplate() {
214
+ return this.allowExpandingDatePicker && !this.facetsLoading
215
215
  ? html `<button
216
216
  class="expand-date-picker-btn"
217
217
  aria-hidden="true"
218
218
  @click=${this.showDatePickerModal}
219
219
  >
220
220
  ${expandIcon}
221
- </button>`
222
- : nothing;
223
- }
224
- get histogramTemplate() {
225
- var _a, _b;
226
- const { fullYearsHistogramAggregation } = this;
227
- const minDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.first_bucket_key;
228
- const maxDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.last_bucket_key;
229
- return this.fullYearAggregationLoading
230
- ? html `<div class="histogram-loading-indicator">&hellip;</div>` // Ellipsis block
221
+ </button>`
222
+ : nothing;
223
+ }
224
+ get histogramTemplate() {
225
+ var _a, _b;
226
+ const { fullYearsHistogramAggregation } = this;
227
+ const minDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.first_bucket_key;
228
+ const maxDate = fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.last_bucket_key;
229
+ return this.fullYearAggregationLoading
230
+ ? html `<div class="histogram-loading-indicator">&hellip;</div>` // Ellipsis block
231
231
  : html `
232
232
  <histogram-date-range
233
233
  .minDate=${minDate}
@@ -236,185 +236,185 @@ let CollectionFacets = class CollectionFacets extends LitElement {
236
236
  .maxSelectedDate=${(_b = this.maxSelectedDate) !== null && _b !== void 0 ? _b : maxDate}
237
237
  .updateDelay=${100}
238
238
  missingDataMessage="..."
239
- .width=${this.collapsableFacets && this.contentWidth
240
- ? this.contentWidth
239
+ .width=${this.collapsableFacets && this.contentWidth
240
+ ? this.contentWidth
241
241
  : 180}
242
242
  .bins=${fullYearsHistogramAggregation === null || fullYearsHistogramAggregation === void 0 ? void 0 : fullYearsHistogramAggregation.buckets}
243
243
  @histogramDateRangeUpdated=${this.histogramDateRangeUpdated}
244
244
  ></histogram-date-range>
245
- `;
246
- }
247
- /**
248
- * Combines the selected facets with the aggregations to create a single list of facets
249
- */
250
- get mergedFacets() {
251
- const facetGroups = [];
252
- facetDisplayOrder.forEach(facetKey => {
253
- var _a, _b;
254
- const selectedFacetGroup = this.selectedFacetGroups.find(group => group.key === facetKey);
255
- const aggregateFacetGroup = this.aggregationFacetGroups.find(group => group.key === facetKey);
256
- // if the user selected a facet, but it's not in the aggregation, we add it as-is
257
- if (selectedFacetGroup && !aggregateFacetGroup) {
258
- facetGroups.push(selectedFacetGroup);
259
- return;
260
- }
261
- // if we don't have an aggregate facet group, don't add this to the list
262
- if (!aggregateFacetGroup)
263
- return;
264
- // start with either the selected group if we have one, or the aggregate group
265
- const facetGroup = selectedFacetGroup !== null && selectedFacetGroup !== void 0 ? selectedFacetGroup : aggregateFacetGroup;
266
- // attach the counts to the selected buckets
267
- let bucketsWithCount = (_a = selectedFacetGroup === null || selectedFacetGroup === void 0 ? void 0 : selectedFacetGroup.buckets.map(bucket => {
268
- const selectedBucket = aggregateFacetGroup.buckets.find(b => b.key === bucket.key);
269
- return selectedBucket
270
- ? {
271
- ...bucket,
272
- count: selectedBucket.count,
273
- }
274
- : bucket;
275
- })) !== null && _a !== void 0 ? _a : [];
276
- // append any additional buckets that were not selected
277
- aggregateFacetGroup.buckets.forEach(bucket => {
278
- const existingBucket = bucketsWithCount.find(b => b.key === bucket.key);
279
- if (existingBucket)
280
- return;
281
- bucketsWithCount.push(bucket);
282
- });
283
- /**
284
- * render limited facet items on page facet area
285
- *
286
- * - by-default we are showing 6 items
287
- * - additionally want to show all items (selected/suppressed) in page facet area
288
- */
289
- let allowedFacetCount = (_b = Object.keys((selectedFacetGroup === null || selectedFacetGroup === void 0 ? void 0 : selectedFacetGroup.buckets) || [])) === null || _b === void 0 ? void 0 : _b.length;
290
- if (allowedFacetCount < this.allowedFacetCount) {
291
- allowedFacetCount = this.allowedFacetCount; // splice start index from 0th
292
- }
293
- // For lending facets, only include a specific subset of buckets
294
- if (facetKey === 'lending') {
295
- bucketsWithCount = bucketsWithCount.filter(bucket => lendingFacetKeysVisibility[bucket.key]);
296
- }
297
- // Sort the FacetBuckets so that selected and hidden buckets come before the rest
298
- sortBucketsBySelectionState(bucketsWithCount);
299
- // For mediatype facets, ensure the collection bucket is always shown if present
300
- if (facetKey === 'mediatype') {
301
- const collectionIndex = bucketsWithCount.findIndex(bucket => bucket.key === 'collection');
302
- if (collectionIndex >= allowedFacetCount) {
303
- const [collectionBucket] = bucketsWithCount.splice(collectionIndex, 1);
304
- // If we're showing lots of selected facets, ensure we're not cutting off the last one
305
- if (allowedFacetCount > this.allowedFacetCount) {
306
- allowedFacetCount += 1;
307
- }
308
- bucketsWithCount.splice(allowedFacetCount - 1, 0, collectionBucket);
309
- }
310
- }
311
- // slice off how many items we want to show in page facet area
312
- facetGroup.buckets = bucketsWithCount.slice(0, allowedFacetCount);
313
- facetGroups.push(facetGroup);
314
- });
315
- return facetGroups;
316
- }
317
- /**
318
- * Converts the selected facets to a `FacetGroup` array,
319
- * which is easier to work with
320
- */
321
- get selectedFacetGroups() {
322
- if (!this.selectedFacets)
323
- return [];
324
- const facetGroups = Object.entries(this.selectedFacets).map(([key, selectedFacets]) => {
325
- const option = key;
326
- const title = facetTitles[option];
327
- const buckets = Object.entries(selectedFacets).map(([value, facetData]) => {
328
- var _a;
329
- let displayText = value;
330
- // for lending facets, convert the key to a readable format
331
- if (option === 'lending') {
332
- displayText =
333
- (_a = lendingFacetDisplayNames[value]) !== null && _a !== void 0 ? _a : value;
334
- }
335
- return {
336
- displayText,
337
- key: value,
338
- count: facetData.count,
339
- state: facetData.state,
340
- };
341
- });
342
- return {
343
- title,
344
- key: option,
345
- buckets,
346
- };
347
- });
348
- return facetGroups;
349
- }
350
- /**
351
- * Converts the raw `aggregations` to `FacetGroups`, which are easier to use
352
- */
353
- get aggregationFacetGroups() {
354
- var _a;
355
- const facetGroups = [];
356
- Object.entries((_a = this.aggregations) !== null && _a !== void 0 ? _a : []).forEach(([key, aggregation]) => {
357
- // the year_histogram data is in a different format so can't be handled here
358
- if (key === 'year_histogram')
359
- return;
360
- const option = key;
361
- const title = facetTitles[option];
362
- if (!title)
363
- return;
364
- let castedBuckets = aggregation.getSortedBuckets(defaultFacetSort[option]);
365
- if (option === 'collection') {
366
- // we are not showing fav- collections or certain deemphasized collections in facets
367
- castedBuckets = castedBuckets === null || castedBuckets === void 0 ? void 0 : castedBuckets.filter(bucket => {
368
- var _a;
369
- const bucketKey = (_a = bucket === null || bucket === void 0 ? void 0 : bucket.key) === null || _a === void 0 ? void 0 : _a.toString();
370
- return (!suppressedCollections[bucketKey] && !(bucketKey === null || bucketKey === void 0 ? void 0 : bucketKey.startsWith('fav-')));
371
- });
372
- }
373
- const facetBuckets = castedBuckets.map(bucket => {
374
- var _a;
375
- const bucketKey = bucket.key;
376
- let displayText = `${bucket.key}`;
377
- // for lending facets, convert the bucket key to a readable format
378
- if (option === 'lending') {
379
- displayText =
380
- (_a = lendingFacetDisplayNames[bucket.key]) !== null && _a !== void 0 ? _a : `${bucket.key}`;
381
- }
382
- return {
383
- displayText,
384
- key: `${bucketKey}`,
385
- count: bucket.doc_count,
386
- state: 'none',
387
- };
388
- });
389
- const group = {
390
- title,
391
- key: option,
392
- buckets: facetBuckets,
393
- };
394
- facetGroups.push(group);
395
- });
396
- return facetGroups;
397
- }
398
- /**
399
- * Generate the template for a facet group with a header and the collapsible
400
- * chevron for the mobile view
401
- */
402
- getFacetGroupTemplate(facetGroup) {
403
- if (!this.facetsLoading && facetGroup.buckets.length === 0)
404
- return nothing;
405
- const { key } = facetGroup;
406
- const isOpen = this.openFacets[key];
245
+ `;
246
+ }
247
+ /**
248
+ * Combines the selected facets with the aggregations to create a single list of facets
249
+ */
250
+ get mergedFacets() {
251
+ const facetGroups = [];
252
+ facetDisplayOrder.forEach(facetKey => {
253
+ var _a, _b;
254
+ const selectedFacetGroup = this.selectedFacetGroups.find(group => group.key === facetKey);
255
+ const aggregateFacetGroup = this.aggregationFacetGroups.find(group => group.key === facetKey);
256
+ // if the user selected a facet, but it's not in the aggregation, we add it as-is
257
+ if (selectedFacetGroup && !aggregateFacetGroup) {
258
+ facetGroups.push(selectedFacetGroup);
259
+ return;
260
+ }
261
+ // if we don't have an aggregate facet group, don't add this to the list
262
+ if (!aggregateFacetGroup)
263
+ return;
264
+ // start with either the selected group if we have one, or the aggregate group
265
+ const facetGroup = selectedFacetGroup !== null && selectedFacetGroup !== void 0 ? selectedFacetGroup : aggregateFacetGroup;
266
+ // attach the counts to the selected buckets
267
+ let bucketsWithCount = (_a = selectedFacetGroup === null || selectedFacetGroup === void 0 ? void 0 : selectedFacetGroup.buckets.map(bucket => {
268
+ const selectedBucket = aggregateFacetGroup.buckets.find(b => b.key === bucket.key);
269
+ return selectedBucket
270
+ ? {
271
+ ...bucket,
272
+ count: selectedBucket.count,
273
+ }
274
+ : bucket;
275
+ })) !== null && _a !== void 0 ? _a : [];
276
+ // append any additional buckets that were not selected
277
+ aggregateFacetGroup.buckets.forEach(bucket => {
278
+ const existingBucket = bucketsWithCount.find(b => b.key === bucket.key);
279
+ if (existingBucket)
280
+ return;
281
+ bucketsWithCount.push(bucket);
282
+ });
283
+ /**
284
+ * render limited facet items on page facet area
285
+ *
286
+ * - by-default we are showing 6 items
287
+ * - additionally want to show all items (selected/suppressed) in page facet area
288
+ */
289
+ let allowedFacetCount = (_b = Object.keys((selectedFacetGroup === null || selectedFacetGroup === void 0 ? void 0 : selectedFacetGroup.buckets) || [])) === null || _b === void 0 ? void 0 : _b.length;
290
+ if (allowedFacetCount < this.allowedFacetCount) {
291
+ allowedFacetCount = this.allowedFacetCount; // splice start index from 0th
292
+ }
293
+ // For lending facets, only include a specific subset of buckets
294
+ if (facetKey === 'lending') {
295
+ bucketsWithCount = bucketsWithCount.filter(bucket => lendingFacetKeysVisibility[bucket.key]);
296
+ }
297
+ // Sort the FacetBuckets so that selected and hidden buckets come before the rest
298
+ sortBucketsBySelectionState(bucketsWithCount);
299
+ // For mediatype facets, ensure the collection bucket is always shown if present
300
+ if (facetKey === 'mediatype') {
301
+ const collectionIndex = bucketsWithCount.findIndex(bucket => bucket.key === 'collection');
302
+ if (collectionIndex >= allowedFacetCount) {
303
+ const [collectionBucket] = bucketsWithCount.splice(collectionIndex, 1);
304
+ // If we're showing lots of selected facets, ensure we're not cutting off the last one
305
+ if (allowedFacetCount > this.allowedFacetCount) {
306
+ allowedFacetCount += 1;
307
+ }
308
+ bucketsWithCount.splice(allowedFacetCount - 1, 0, collectionBucket);
309
+ }
310
+ }
311
+ // slice off how many items we want to show in page facet area
312
+ facetGroup.buckets = bucketsWithCount.slice(0, allowedFacetCount);
313
+ facetGroups.push(facetGroup);
314
+ });
315
+ return facetGroups;
316
+ }
317
+ /**
318
+ * Converts the selected facets to a `FacetGroup` array,
319
+ * which is easier to work with
320
+ */
321
+ get selectedFacetGroups() {
322
+ if (!this.selectedFacets)
323
+ return [];
324
+ const facetGroups = Object.entries(this.selectedFacets).map(([key, selectedFacets]) => {
325
+ const option = key;
326
+ const title = facetTitles[option];
327
+ const buckets = Object.entries(selectedFacets).map(([value, facetData]) => {
328
+ var _a;
329
+ let displayText = value;
330
+ // for lending facets, convert the key to a readable format
331
+ if (option === 'lending') {
332
+ displayText =
333
+ (_a = lendingFacetDisplayNames[value]) !== null && _a !== void 0 ? _a : value;
334
+ }
335
+ return {
336
+ displayText,
337
+ key: value,
338
+ count: facetData.count,
339
+ state: facetData.state,
340
+ };
341
+ });
342
+ return {
343
+ title,
344
+ key: option,
345
+ buckets,
346
+ };
347
+ });
348
+ return facetGroups;
349
+ }
350
+ /**
351
+ * Converts the raw `aggregations` to `FacetGroups`, which are easier to use
352
+ */
353
+ get aggregationFacetGroups() {
354
+ var _a;
355
+ const facetGroups = [];
356
+ Object.entries((_a = this.aggregations) !== null && _a !== void 0 ? _a : []).forEach(([key, aggregation]) => {
357
+ // the year_histogram data is in a different format so can't be handled here
358
+ if (key === 'year_histogram')
359
+ return;
360
+ const option = key;
361
+ const title = facetTitles[option];
362
+ if (!title)
363
+ return;
364
+ let castedBuckets = aggregation.getSortedBuckets(defaultFacetSort[option]);
365
+ if (option === 'collection') {
366
+ // we are not showing fav- collections or certain deemphasized collections in facets
367
+ castedBuckets = castedBuckets === null || castedBuckets === void 0 ? void 0 : castedBuckets.filter(bucket => {
368
+ var _a;
369
+ const bucketKey = (_a = bucket === null || bucket === void 0 ? void 0 : bucket.key) === null || _a === void 0 ? void 0 : _a.toString();
370
+ return (!suppressedCollections[bucketKey] && !(bucketKey === null || bucketKey === void 0 ? void 0 : bucketKey.startsWith('fav-')));
371
+ });
372
+ }
373
+ const facetBuckets = castedBuckets.map(bucket => {
374
+ var _a;
375
+ const bucketKey = bucket.key;
376
+ let displayText = `${bucket.key}`;
377
+ // for lending facets, convert the bucket key to a readable format
378
+ if (option === 'lending') {
379
+ displayText =
380
+ (_a = lendingFacetDisplayNames[bucket.key]) !== null && _a !== void 0 ? _a : `${bucket.key}`;
381
+ }
382
+ return {
383
+ displayText,
384
+ key: `${bucketKey}`,
385
+ count: bucket.doc_count,
386
+ state: 'none',
387
+ };
388
+ });
389
+ const group = {
390
+ title,
391
+ key: option,
392
+ buckets: facetBuckets,
393
+ };
394
+ facetGroups.push(group);
395
+ });
396
+ return facetGroups;
397
+ }
398
+ /**
399
+ * Generate the template for a facet group with a header and the collapsible
400
+ * chevron for the mobile view
401
+ */
402
+ getFacetGroupTemplate(facetGroup) {
403
+ if (!this.facetsLoading && facetGroup.buckets.length === 0)
404
+ return nothing;
405
+ const { key } = facetGroup;
406
+ const isOpen = this.openFacets[key];
407
407
  const collapser = html `
408
408
  <span class="collapser ${isOpen ? 'open' : ''}"> ${chevronIcon} </span>
409
- `;
410
- const toggleCollapsed = () => {
411
- const newOpenFacets = { ...this.openFacets };
412
- newOpenFacets[key] = !isOpen;
413
- this.openFacets = newOpenFacets;
414
- };
415
- // Added data-testid for Playwright testing
416
- // Using className and aria-labels is not ideal for Playwright locator
417
- const headerId = `facet-group-header-label-${facetGroup.key}`;
409
+ `;
410
+ const toggleCollapsed = () => {
411
+ const newOpenFacets = { ...this.openFacets };
412
+ newOpenFacets[key] = !isOpen;
413
+ this.openFacets = newOpenFacets;
414
+ };
415
+ // Added data-testid for Playwright testing
416
+ // Using className and aria-labels is not ideal for Playwright locator
417
+ const headerId = `facet-group-header-label-${facetGroup.key}`;
418
418
  return html `
419
419
  <section
420
420
  class="facet-group ${this.collapsableFacets ? 'mobile' : ''}"
@@ -435,63 +435,63 @@ let CollectionFacets = class CollectionFacets extends LitElement {
435
435
  class="facet-group-content ${isOpen ? 'open' : ''}"
436
436
  data-testid="facet-group-content-${facetGroup.key}"
437
437
  >
438
- ${this.facetsLoading
439
- ? this.getTombstoneFacetGroupTemplate()
438
+ ${this.facetsLoading
439
+ ? this.getTombstoneFacetGroupTemplate()
440
440
  : html `
441
441
  ${this.getFacetTemplate(facetGroup)}
442
442
  ${this.searchMoreFacetsLink(facetGroup)}
443
443
  `}
444
444
  </div>
445
445
  </section>
446
- `;
447
- }
448
- getTombstoneFacetGroupTemplate() {
449
- // Render five tombstone rows
446
+ `;
447
+ }
448
+ getTombstoneFacetGroupTemplate() {
449
+ // Render five tombstone rows
450
450
  return html `
451
451
  ${map(Array(5).fill(null), () => html `<facet-tombstone-row></facet-tombstone-row>`)}
452
- `;
453
- }
454
- /**
455
- * Generate the More... link button just below the facets group
456
- *
457
- * TODO: want to fire analytics?
458
- */
459
- searchMoreFacetsLink(facetGroup) {
460
- // Don't render More... links for FTS searches
461
- if (!this.moreLinksVisible) {
462
- return nothing;
463
- }
464
- // Don't render More... links for lending facets
465
- if (facetGroup.key === 'lending') {
466
- return nothing;
467
- }
468
- // Don't render More... link if the number of facets < this.allowedFacetCount
469
- if (Object.keys(facetGroup.buckets).length < this.allowedFacetCount) {
470
- return nothing;
471
- }
472
- // We sort years in numeric order by default, rather than bucket count
473
- const facetSort = defaultFacetSort[facetGroup.key];
474
- // Added data-testid for Playwright testing
475
- // Using the className is not ideal for Playwright locator
452
+ `;
453
+ }
454
+ /**
455
+ * Generate the More... link button just below the facets group
456
+ *
457
+ * TODO: want to fire analytics?
458
+ */
459
+ searchMoreFacetsLink(facetGroup) {
460
+ // Don't render More... links for FTS searches
461
+ if (!this.moreLinksVisible) {
462
+ return nothing;
463
+ }
464
+ // Don't render More... links for lending facets
465
+ if (facetGroup.key === 'lending') {
466
+ return nothing;
467
+ }
468
+ // Don't render More... link if the number of facets < this.allowedFacetCount
469
+ if (Object.keys(facetGroup.buckets).length < this.allowedFacetCount) {
470
+ return nothing;
471
+ }
472
+ // We sort years in numeric order by default, rather than bucket count
473
+ const facetSort = defaultFacetSort[facetGroup.key];
474
+ // Added data-testid for Playwright testing
475
+ // Using the className is not ideal for Playwright locator
476
476
  return html `<button
477
477
  class="more-link"
478
- @click=${() => {
479
- var _a;
480
- this.showMoreFacetsModal(facetGroup, facetSort);
481
- (_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
482
- category: analyticsCategories.default,
483
- action: analyticsActions.showMoreFacetsModal,
484
- label: facetGroup.key,
485
- });
486
- this.dispatchEvent(new CustomEvent('showMoreFacets', { detail: facetGroup.key }));
478
+ @click=${() => {
479
+ var _a;
480
+ this.showMoreFacetsModal(facetGroup, facetSort);
481
+ (_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
482
+ category: analyticsCategories.default,
483
+ action: analyticsActions.showMoreFacetsModal,
484
+ label: facetGroup.key,
485
+ });
486
+ this.dispatchEvent(new CustomEvent('showMoreFacets', { detail: facetGroup.key }));
487
487
  }}
488
488
  data-testid="more-link-btn"
489
489
  >
490
490
  More...
491
- </button>`;
492
- }
493
- async showMoreFacetsModal(facetGroup, sortedBy) {
494
- var _a, _b;
491
+ </button>`;
492
+ }
493
+ async showMoreFacetsModal(facetGroup, sortedBy) {
494
+ var _a, _b;
495
495
  const customModalContent = html `
496
496
  <more-facets-content
497
497
  .analyticsHandler=${this.analyticsHandler}
@@ -505,59 +505,59 @@ let CollectionFacets = class CollectionFacets extends LitElement {
505
505
  .collectionTitles=${this.collectionTitles}
506
506
  .selectedFacets=${this.selectedFacets}
507
507
  .sortedBy=${sortedBy}
508
- @facetsChanged=${(e) => {
509
- const event = new CustomEvent('facetsChanged', {
510
- detail: e.detail,
511
- bubbles: true,
512
- composed: true,
513
- });
514
- this.dispatchEvent(event);
508
+ @facetsChanged=${(e) => {
509
+ const event = new CustomEvent('facetsChanged', {
510
+ detail: e.detail,
511
+ bubbles: true,
512
+ composed: true,
513
+ });
514
+ this.dispatchEvent(event);
515
515
  }}
516
516
  >
517
517
  </more-facets-content>
518
- `;
519
- const config = new ModalConfig({
520
- bodyColor: '#fff',
521
- headerColor: '#194880',
522
- showHeaderLogo: false,
523
- closeOnBackdropClick: true,
524
- title: html `Select filters`,
525
- });
526
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('more-search-facets');
527
- (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
528
- config,
529
- customModalContent,
530
- userClosedModalCallback: () => {
531
- var _a;
532
- (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('more-search-facets');
533
- },
534
- });
535
- }
536
- /**
537
- * Generate the list template for each bucket in a facet group
538
- */
539
- getFacetTemplate(facetGroup) {
518
+ `;
519
+ const config = new ModalConfig({
520
+ bodyColor: '#fff',
521
+ headerColor: '#194880',
522
+ showHeaderLogo: false,
523
+ closeOnBackdropClick: true,
524
+ title: html `Select filters`,
525
+ });
526
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.add('more-search-facets');
527
+ (_b = this.modalManager) === null || _b === void 0 ? void 0 : _b.showModal({
528
+ config,
529
+ customModalContent,
530
+ userClosedModalCallback: () => {
531
+ var _a;
532
+ (_a = this.modalManager) === null || _a === void 0 ? void 0 : _a.classList.remove('more-search-facets');
533
+ },
534
+ });
535
+ }
536
+ /**
537
+ * Generate the list template for each bucket in a facet group
538
+ */
539
+ getFacetTemplate(facetGroup) {
540
540
  return html `
541
541
  <facets-template
542
542
  .collectionPagePath=${this.collectionPagePath}
543
543
  .facetGroup=${facetGroup}
544
544
  .selectedFacets=${this.selectedFacets}
545
545
  .collectionTitles=${this.collectionTitles}
546
- @facetClick=${(e) => {
547
- this.selectedFacets = updateSelectedFacetBucket(this.selectedFacets, facetGroup.key, e.detail.bucket, true);
548
- const event = new CustomEvent('facetsChanged', {
549
- detail: this.selectedFacets,
550
- bubbles: true,
551
- composed: true,
552
- });
553
- this.dispatchEvent(event);
546
+ @facetClick=${(e) => {
547
+ this.selectedFacets = updateSelectedFacetBucket(this.selectedFacets, facetGroup.key, e.detail.bucket, true);
548
+ const event = new CustomEvent('facetsChanged', {
549
+ detail: this.selectedFacets,
550
+ bubbles: true,
551
+ composed: true,
552
+ });
553
+ this.dispatchEvent(event);
554
554
  }}
555
555
  ></facets-template>
556
- `;
557
- }
558
- static get styles() {
559
- return [
560
- srOnlyStyle,
556
+ `;
557
+ }
558
+ static get styles() {
559
+ return [
560
+ srOnlyStyle,
561
561
  css `
562
562
  a:link {
563
563
  text-decoration: none;
@@ -676,96 +676,96 @@ let CollectionFacets = class CollectionFacets extends LitElement {
676
676
  height: 15px;
677
677
  cursor: pointer;
678
678
  }
679
- `,
680
- ];
681
- }
682
- };
683
- __decorate([
684
- property({ type: Object })
685
- ], CollectionFacets.prototype, "searchService", void 0);
686
- __decorate([
687
- property({ type: String })
688
- ], CollectionFacets.prototype, "searchType", void 0);
689
- __decorate([
690
- property({ type: Object })
691
- ], CollectionFacets.prototype, "aggregations", void 0);
692
- __decorate([
693
- property({ type: Object })
694
- ], CollectionFacets.prototype, "fullYearsHistogramAggregation", void 0);
695
- __decorate([
696
- property({ type: String })
697
- ], CollectionFacets.prototype, "minSelectedDate", void 0);
698
- __decorate([
699
- property({ type: String })
700
- ], CollectionFacets.prototype, "maxSelectedDate", void 0);
701
- __decorate([
702
- property({ type: Boolean })
703
- ], CollectionFacets.prototype, "moreLinksVisible", void 0);
704
- __decorate([
705
- property({ type: Boolean })
706
- ], CollectionFacets.prototype, "facetsLoading", void 0);
707
- __decorate([
708
- property({ type: Boolean })
709
- ], CollectionFacets.prototype, "fullYearAggregationLoading", void 0);
710
- __decorate([
711
- property({ type: Object })
712
- ], CollectionFacets.prototype, "selectedFacets", void 0);
713
- __decorate([
714
- property({ type: Boolean })
715
- ], CollectionFacets.prototype, "collapsableFacets", void 0);
716
- __decorate([
717
- property({ type: Number })
718
- ], CollectionFacets.prototype, "contentWidth", void 0);
719
- __decorate([
720
- property({ type: Boolean })
721
- ], CollectionFacets.prototype, "showHistogramDatePicker", void 0);
722
- __decorate([
723
- property({ type: Boolean })
724
- ], CollectionFacets.prototype, "allowExpandingDatePicker", void 0);
725
- __decorate([
726
- property({ type: String })
727
- ], CollectionFacets.prototype, "query", void 0);
728
- __decorate([
729
- property({ type: Object })
730
- ], CollectionFacets.prototype, "pageSpecifierParams", void 0);
731
- __decorate([
732
- property({ type: Array })
733
- ], CollectionFacets.prototype, "parentCollections", void 0);
734
- __decorate([
735
- property({ type: Object })
736
- ], CollectionFacets.prototype, "filterMap", void 0);
737
- __decorate([
738
- property({ type: String })
739
- ], CollectionFacets.prototype, "baseNavigationUrl", void 0);
740
- __decorate([
741
- property({ type: String })
742
- ], CollectionFacets.prototype, "collectionPagePath", void 0);
743
- __decorate([
744
- property({ type: Boolean })
745
- ], CollectionFacets.prototype, "isManageView", void 0);
746
- __decorate([
747
- property({ type: Object, attribute: false })
748
- ], CollectionFacets.prototype, "modalManager", void 0);
749
- __decorate([
750
- property({ type: Object, attribute: false })
751
- ], CollectionFacets.prototype, "resizeObserver", void 0);
752
- __decorate([
753
- property({ type: Object, attribute: false })
754
- ], CollectionFacets.prototype, "featureFeedbackService", void 0);
755
- __decorate([
756
- property({ type: Object, attribute: false })
757
- ], CollectionFacets.prototype, "recaptchaManager", void 0);
758
- __decorate([
759
- property({ type: Object, attribute: false })
760
- ], CollectionFacets.prototype, "analyticsHandler", void 0);
761
- __decorate([
762
- property({ type: Object, attribute: false })
763
- ], CollectionFacets.prototype, "collectionTitles", void 0);
764
- __decorate([
765
- state()
766
- ], CollectionFacets.prototype, "openFacets", void 0);
767
- CollectionFacets = __decorate([
768
- customElement('collection-facets')
769
- ], CollectionFacets);
770
- export { CollectionFacets };
679
+ `,
680
+ ];
681
+ }
682
+ };
683
+ __decorate([
684
+ property({ type: Object })
685
+ ], CollectionFacets.prototype, "searchService", void 0);
686
+ __decorate([
687
+ property({ type: String })
688
+ ], CollectionFacets.prototype, "searchType", void 0);
689
+ __decorate([
690
+ property({ type: Object })
691
+ ], CollectionFacets.prototype, "aggregations", void 0);
692
+ __decorate([
693
+ property({ type: Object })
694
+ ], CollectionFacets.prototype, "fullYearsHistogramAggregation", void 0);
695
+ __decorate([
696
+ property({ type: String })
697
+ ], CollectionFacets.prototype, "minSelectedDate", void 0);
698
+ __decorate([
699
+ property({ type: String })
700
+ ], CollectionFacets.prototype, "maxSelectedDate", void 0);
701
+ __decorate([
702
+ property({ type: Boolean })
703
+ ], CollectionFacets.prototype, "moreLinksVisible", void 0);
704
+ __decorate([
705
+ property({ type: Boolean })
706
+ ], CollectionFacets.prototype, "facetsLoading", void 0);
707
+ __decorate([
708
+ property({ type: Boolean })
709
+ ], CollectionFacets.prototype, "fullYearAggregationLoading", void 0);
710
+ __decorate([
711
+ property({ type: Object })
712
+ ], CollectionFacets.prototype, "selectedFacets", void 0);
713
+ __decorate([
714
+ property({ type: Boolean })
715
+ ], CollectionFacets.prototype, "collapsableFacets", void 0);
716
+ __decorate([
717
+ property({ type: Number })
718
+ ], CollectionFacets.prototype, "contentWidth", void 0);
719
+ __decorate([
720
+ property({ type: Boolean })
721
+ ], CollectionFacets.prototype, "showHistogramDatePicker", void 0);
722
+ __decorate([
723
+ property({ type: Boolean })
724
+ ], CollectionFacets.prototype, "allowExpandingDatePicker", void 0);
725
+ __decorate([
726
+ property({ type: String })
727
+ ], CollectionFacets.prototype, "query", void 0);
728
+ __decorate([
729
+ property({ type: Object })
730
+ ], CollectionFacets.prototype, "pageSpecifierParams", void 0);
731
+ __decorate([
732
+ property({ type: Array })
733
+ ], CollectionFacets.prototype, "parentCollections", void 0);
734
+ __decorate([
735
+ property({ type: Object })
736
+ ], CollectionFacets.prototype, "filterMap", void 0);
737
+ __decorate([
738
+ property({ type: String })
739
+ ], CollectionFacets.prototype, "baseNavigationUrl", void 0);
740
+ __decorate([
741
+ property({ type: String })
742
+ ], CollectionFacets.prototype, "collectionPagePath", void 0);
743
+ __decorate([
744
+ property({ type: Boolean })
745
+ ], CollectionFacets.prototype, "isManageView", void 0);
746
+ __decorate([
747
+ property({ type: Object, attribute: false })
748
+ ], CollectionFacets.prototype, "modalManager", void 0);
749
+ __decorate([
750
+ property({ type: Object, attribute: false })
751
+ ], CollectionFacets.prototype, "resizeObserver", void 0);
752
+ __decorate([
753
+ property({ type: Object, attribute: false })
754
+ ], CollectionFacets.prototype, "featureFeedbackService", void 0);
755
+ __decorate([
756
+ property({ type: Object, attribute: false })
757
+ ], CollectionFacets.prototype, "recaptchaManager", void 0);
758
+ __decorate([
759
+ property({ type: Object, attribute: false })
760
+ ], CollectionFacets.prototype, "analyticsHandler", void 0);
761
+ __decorate([
762
+ property({ type: Object, attribute: false })
763
+ ], CollectionFacets.prototype, "collectionTitles", void 0);
764
+ __decorate([
765
+ state()
766
+ ], CollectionFacets.prototype, "openFacets", void 0);
767
+ CollectionFacets = __decorate([
768
+ customElement('collection-facets')
769
+ ], CollectionFacets);
770
+ export { CollectionFacets };
771
771
  //# sourceMappingURL=collection-facets.js.map