@internetarchive/collection-browser 1.14.9-alpha.2 → 1.14.9

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 (272) 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 +9 -9
  6. package/dist/index.js +9 -9
  7. package/dist/src/app-root.d.ts +72 -72
  8. package/dist/src/app-root.js +347 -347
  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/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +2 -2
  29. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  57. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  58. package/dist/src/assets/img/icons/null-result.js +2 -2
  59. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  60. package/dist/src/assets/img/icons/restricted.js +2 -2
  61. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  62. package/dist/src/assets/img/icons/reviews.js +2 -2
  63. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  64. package/dist/src/assets/img/icons/upload.js +2 -2
  65. package/dist/src/assets/img/icons/views.d.ts +1 -1
  66. package/dist/src/assets/img/icons/views.js +2 -2
  67. package/dist/src/circular-activity-indicator.d.ts +5 -5
  68. package/dist/src/circular-activity-indicator.js +17 -17
  69. package/dist/src/collection-browser.d.ts +533 -533
  70. package/dist/src/collection-browser.js +1891 -1893
  71. package/dist/src/collection-browser.js.map +1 -1
  72. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  73. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  74. package/dist/src/collection-facets/facets-template.d.ts +20 -20
  75. package/dist/src/collection-facets/facets-template.js +152 -152
  76. package/dist/src/collection-facets/more-facets-content.d.ts +77 -77
  77. package/dist/src/collection-facets/more-facets-content.js +359 -359
  78. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  79. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  80. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  81. package/dist/src/collection-facets/toggle-switch.js +94 -94
  82. package/dist/src/collection-facets.d.ts +104 -104
  83. package/dist/src/collection-facets.js +506 -506
  84. package/dist/src/empty-placeholder.d.ts +23 -23
  85. package/dist/src/empty-placeholder.js +74 -74
  86. package/dist/src/expanded-date-picker.d.ts +43 -43
  87. package/dist/src/expanded-date-picker.js +109 -109
  88. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  89. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  90. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  91. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  92. package/dist/src/manage/manage-bar.d.ts +26 -26
  93. package/dist/src/manage/manage-bar.js +53 -53
  94. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  95. package/dist/src/mediatype/mediatype-config.js +91 -91
  96. package/dist/src/models.d.ts +164 -164
  97. package/dist/src/models.js +269 -269
  98. package/dist/src/restoration-state-handler.d.ts +70 -70
  99. package/dist/src/restoration-state-handler.js +355 -355
  100. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  101. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  102. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  103. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  104. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  105. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  106. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  107. package/dist/src/sort-filter-bar/img/list.js +2 -2
  108. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  109. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  110. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  111. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  112. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  113. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  114. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  115. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  116. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  117. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  118. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +208 -208
  119. package/dist/src/sort-filter-bar/sort-filter-bar.js +637 -637
  120. package/dist/src/styles/item-image-styles.d.ts +8 -8
  121. package/dist/src/styles/item-image-styles.js +9 -9
  122. package/dist/src/styles/sr-only.d.ts +1 -1
  123. package/dist/src/styles/sr-only.js +2 -2
  124. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  125. package/dist/src/tiles/base-tile-component.js +63 -63
  126. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  127. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  128. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  129. package/dist/src/tiles/grid/account-tile.js +72 -72
  130. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  131. package/dist/src/tiles/grid/collection-tile.js +80 -80
  132. package/dist/src/tiles/grid/item-tile.d.ts +27 -27
  133. package/dist/src/tiles/grid/item-tile.js +134 -134
  134. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  135. package/dist/src/tiles/grid/search-tile.js +51 -51
  136. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  137. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  138. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  139. package/dist/src/tiles/grid/tile-stats.js +48 -48
  140. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  141. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  142. package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
  143. package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
  144. package/dist/src/tiles/image-block.d.ts +17 -17
  145. package/dist/src/tiles/image-block.js +73 -73
  146. package/dist/src/tiles/item-image.d.ts +36 -36
  147. package/dist/src/tiles/item-image.js +127 -127
  148. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  149. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  150. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  151. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  152. package/dist/src/tiles/list/tile-list.d.ts +46 -46
  153. package/dist/src/tiles/list/tile-list.js +302 -302
  154. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  155. package/dist/src/tiles/mediatype-icon.js +47 -47
  156. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  157. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  158. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  159. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  160. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  161. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  162. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  163. package/dist/src/tiles/text-snippet-block.js +73 -73
  164. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  165. package/dist/src/tiles/tile-dispatcher.js +231 -231
  166. package/dist/src/tiles/tile-display-value-provider.d.ts +43 -43
  167. package/dist/src/tiles/tile-display-value-provider.js +80 -80
  168. package/dist/src/utils/analytics-events.d.ts +25 -25
  169. package/dist/src/utils/analytics-events.js +27 -27
  170. package/dist/src/utils/array-equals.d.ts +4 -4
  171. package/dist/src/utils/array-equals.js +10 -10
  172. package/dist/src/utils/format-count.d.ts +7 -7
  173. package/dist/src/utils/format-count.js +76 -76
  174. package/dist/src/utils/format-date.d.ts +2 -2
  175. package/dist/src/utils/format-date.js +25 -25
  176. package/dist/src/utils/format-unit-size.d.ts +2 -2
  177. package/dist/src/utils/format-unit-size.js +33 -33
  178. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  179. package/dist/src/utils/local-date-from-utc.js +15 -15
  180. package/dist/src/utils/sha1.d.ts +2 -2
  181. package/dist/src/utils/sha1.js +8 -8
  182. package/dist/test/collection-browser.test.d.ts +1 -1
  183. package/dist/test/collection-browser.test.js +1098 -1098
  184. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  185. package/dist/test/collection-facets/facets-template.test.js +134 -134
  186. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  187. package/dist/test/collection-facets/more-facets-content.test.js +133 -133
  188. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  189. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  190. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  191. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  192. package/dist/test/collection-facets.test.d.ts +2 -2
  193. package/dist/test/collection-facets.test.js +682 -682
  194. package/dist/test/empty-placeholder.test.d.ts +1 -1
  195. package/dist/test/empty-placeholder.test.js +63 -63
  196. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  197. package/dist/test/expanded-date-picker.test.js +95 -95
  198. package/dist/test/icon-overlay.test.d.ts +1 -1
  199. package/dist/test/icon-overlay.test.js +24 -24
  200. package/dist/test/image-block.test.d.ts +1 -1
  201. package/dist/test/image-block.test.js +48 -48
  202. package/dist/test/item-image.test.d.ts +1 -1
  203. package/dist/test/item-image.test.js +86 -86
  204. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  205. package/dist/test/manage/manage-bar.test.js +72 -72
  206. package/dist/test/mediatype-config.test.d.ts +1 -1
  207. package/dist/test/mediatype-config.test.js +16 -16
  208. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  209. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  210. package/dist/test/mocks/mock-collection-name-cache.d.ts +9 -9
  211. package/dist/test/mocks/mock-collection-name-cache.js +17 -17
  212. package/dist/test/mocks/mock-search-responses.d.ts +21 -21
  213. package/dist/test/mocks/mock-search-responses.js +709 -709
  214. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  215. package/dist/test/mocks/mock-search-service.js +50 -50
  216. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  217. package/dist/test/restoration-state-handler.test.js +270 -270
  218. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  219. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  220. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  221. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  222. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  223. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +378 -378
  224. package/dist/test/text-overlay.test.d.ts +1 -1
  225. package/dist/test/text-overlay.test.js +48 -48
  226. package/dist/test/text-snippet-block.test.d.ts +1 -1
  227. package/dist/test/text-snippet-block.test.js +57 -57
  228. package/dist/test/tile-stats.test.d.ts +1 -1
  229. package/dist/test/tile-stats.test.js +33 -33
  230. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  231. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  232. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  233. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  234. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  235. package/dist/test/tiles/grid/item-tile.test.js +254 -254
  236. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  237. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  238. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  239. package/dist/test/tiles/hover/hover-pane-controller.test.js +258 -258
  240. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  241. package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
  242. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  243. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  244. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  245. package/dist/test/tiles/list/tile-list.test.js +242 -242
  246. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  247. package/dist/test/tiles/tile-dispatcher.test.js +94 -94
  248. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  249. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  250. package/dist/test/utils/array-equals.test.d.ts +1 -1
  251. package/dist/test/utils/array-equals.test.js +26 -26
  252. package/dist/test/utils/format-count.test.d.ts +1 -1
  253. package/dist/test/utils/format-count.test.js +23 -23
  254. package/dist/test/utils/format-date.test.d.ts +1 -1
  255. package/dist/test/utils/format-date.test.js +17 -17
  256. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  257. package/dist/test/utils/format-unit-size.test.js +17 -17
  258. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  259. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  260. package/local.archive.org.cert +86 -86
  261. package/local.archive.org.key +27 -27
  262. package/package.json +1 -1
  263. package/renovate.json +6 -6
  264. package/src/collection-browser.ts +5 -4
  265. package/tsconfig.json +21 -21
  266. package/types/sentry.d.ts +1 -0
  267. package/web-dev-server.config.mjs +30 -30
  268. package/web-test-runner.config.mjs +41 -41
  269. package/dist/src/selected-facets.d.ts +0 -67
  270. package/dist/src/selected-facets.js +0 -149
  271. package/dist/src/selected-facets.js.map +0 -1
  272. package/src/selected-facets.ts +0 -216
@@ -1,67 +0,0 @@
1
- import { type FacetBucket, type FacetGroup, type FacetOption, type FacetValue } from './models';
2
- /**
3
- * A record of all the facet buckets for a particular facet type, indexed by their bucket key
4
- */
5
- export declare type FacetBucketsRecord = Record<FacetValue, FacetBucket>;
6
- declare type SelectedFacetsModel = Record<FacetOption, FacetBucketsRecord>;
7
- /**
8
- * A class to hold, query, and manipulate state about selected/hidden facets.
9
- */
10
- export declare class SelectedFacets implements SelectedFacetsModel {
11
- readonly collection: FacetBucketsRecord;
12
- readonly creator: FacetBucketsRecord;
13
- readonly language: FacetBucketsRecord;
14
- readonly lending: FacetBucketsRecord;
15
- readonly mediatype: FacetBucketsRecord;
16
- readonly subject: FacetBucketsRecord;
17
- readonly year: FacetBucketsRecord;
18
- constructor(initValues?: Partial<SelectedFacetsModel>);
19
- /**
20
- * Executes the given function on every facet bucket within the current SelectedFacets object.
21
- * @param fn The function to execute for each facet bucket
22
- */
23
- forEach(fn: (bucket: FacetBucket, bucketKey: FacetValue, facetType: FacetOption) => unknown): void;
24
- /**
25
- * Executes the given function on every facet type within the current SelectedFacets object.
26
- * Similar to `SelectedFacets.forEach`, but operating on the full set of buckets for each type
27
- * (rather than individual buckets).
28
- * @param fn The function to execute for each facet type
29
- */
30
- forEachFacetType(fn: (buckets: FacetBucketsRecord, facetType: FacetOption) => unknown): void;
31
- /**
32
- * Like `Array.some`, returns whether the given predicate function returns true for
33
- * any of the facet buckets contained in this object.
34
- * @param predicate Function returning a boolean for each bucket
35
- * @returns Whether any of the facet buckets satisfy the predicate
36
- */
37
- some(predicate: (bucket: FacetBucket, bucketKey: FacetValue, facetType: FacetOption) => boolean): boolean;
38
- /**
39
- * Like `Array.every`, returns whether the given predicate function returns true for
40
- * *all* of the facet buckets contained in this object.
41
- * @param predicate Function returning a boolean for each bucket
42
- * @returns Whether all of the facet buckets satisfy the predicate
43
- */
44
- every(predicate: (bucket: FacetBucket, bucketKey: FacetValue, facetType: FacetOption) => boolean): boolean;
45
- /**
46
- * Returns a new SelectedFacets object deeply cloned from this one (same contents).
47
- */
48
- clone(): SelectedFacets;
49
- /**
50
- * Returns a new SelectedFacets object cloned from this one with all of the given `otherFacets`
51
- * applied overtop. Facets from this object will be overwritten by those in `otherFacets`
52
- * that have the same facet type and bucket key.
53
- *
54
- * @param otherFacets The other SelectedFacets object to merge into this one.
55
- */
56
- merge(otherFacets?: SelectedFacets): SelectedFacets;
57
- /**
58
- * Returns a new SelectedFacets object with facet buckets normalized, such that any
59
- * buckets with a state of 'none' are removed entirely.
60
- */
61
- normalize(): SelectedFacets;
62
- /**
63
- * Converts this SelectedFacets object into an array of equivalent FacetGroups.
64
- */
65
- toFacetGroups(): FacetGroup[];
66
- }
67
- export {};
@@ -1,149 +0,0 @@
1
- import { facetTitles, lendingFacetDisplayNames, } from './models';
2
- const VALID_FACET_OPTIONS = new Set([
3
- 'collection',
4
- 'creator',
5
- 'language',
6
- 'lending',
7
- 'mediatype',
8
- 'subject',
9
- 'year',
10
- ]);
11
- /**
12
- * A class to hold, query, and manipulate state about selected/hidden facets.
13
- */
14
- export class SelectedFacets {
15
- constructor(initValues) {
16
- this.collection = {};
17
- this.creator = {};
18
- this.language = {};
19
- this.lending = {};
20
- this.mediatype = {};
21
- this.subject = {};
22
- this.year = {};
23
- if (initValues) {
24
- for (const [facetType, buckets] of Object.entries(initValues)) {
25
- if (VALID_FACET_OPTIONS.has(facetType)) {
26
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
27
- this[facetType][bucketKey] = { ...bucket };
28
- }
29
- }
30
- }
31
- }
32
- }
33
- /**
34
- * Executes the given function on every facet bucket within the current SelectedFacets object.
35
- * @param fn The function to execute for each facet bucket
36
- */
37
- forEach(fn) {
38
- for (const [facetType, buckets] of Object.entries(this)) {
39
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
40
- fn(bucket, bucketKey, facetType);
41
- }
42
- }
43
- }
44
- /**
45
- * Executes the given function on every facet type within the current SelectedFacets object.
46
- * Similar to `SelectedFacets.forEach`, but operating on the full set of buckets for each type
47
- * (rather than individual buckets).
48
- * @param fn The function to execute for each facet type
49
- */
50
- forEachFacetType(fn) {
51
- for (const [facetType, buckets] of Object.entries(this)) {
52
- fn(buckets, facetType);
53
- }
54
- }
55
- /**
56
- * Like `Array.some`, returns whether the given predicate function returns true for
57
- * any of the facet buckets contained in this object.
58
- * @param predicate Function returning a boolean for each bucket
59
- * @returns Whether any of the facet buckets satisfy the predicate
60
- */
61
- some(predicate) {
62
- for (const [facetType, buckets] of Object.entries(this)) {
63
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
64
- if (predicate(bucket, bucketKey, facetType))
65
- return true;
66
- }
67
- }
68
- return false;
69
- }
70
- /**
71
- * Like `Array.every`, returns whether the given predicate function returns true for
72
- * *all* of the facet buckets contained in this object.
73
- * @param predicate Function returning a boolean for each bucket
74
- * @returns Whether all of the facet buckets satisfy the predicate
75
- */
76
- every(predicate) {
77
- for (const [facetType, buckets] of Object.entries(this)) {
78
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
79
- if (!predicate(bucket, bucketKey, facetType))
80
- return false;
81
- }
82
- }
83
- return true;
84
- }
85
- /**
86
- * Returns a new SelectedFacets object deeply cloned from this one (same contents).
87
- */
88
- clone() {
89
- return new SelectedFacets(this);
90
- }
91
- /**
92
- * Returns a new SelectedFacets object cloned from this one with all of the given `otherFacets`
93
- * applied overtop. Facets from this object will be overwritten by those in `otherFacets`
94
- * that have the same facet type and bucket key.
95
- *
96
- * @param otherFacets The other SelectedFacets object to merge into this one.
97
- */
98
- merge(otherFacets) {
99
- const merged = this.clone();
100
- otherFacets === null || otherFacets === void 0 ? void 0 : otherFacets.forEach((bucket, bucketKey, facetType) => {
101
- merged[facetType][bucketKey] = { ...bucket };
102
- });
103
- return merged;
104
- }
105
- /**
106
- * Returns a new SelectedFacets object with facet buckets normalized, such that any
107
- * buckets with a state of 'none' are removed entirely.
108
- */
109
- normalize() {
110
- const normalized = this.clone();
111
- normalized.forEach((bucket, bucketKey, facetType) => {
112
- if (bucket.state === 'none') {
113
- delete normalized[facetType][bucketKey];
114
- }
115
- });
116
- return normalized;
117
- }
118
- /**
119
- * Converts this SelectedFacets object into an array of equivalent FacetGroups.
120
- */
121
- toFacetGroups() {
122
- const facetGroups = {};
123
- this.forEach((bucket, bucketKey, facetType) => {
124
- var _a;
125
- const title = facetTitles[facetType];
126
- let displayText = bucketKey;
127
- // For lending facets, convert the key to a more readable format
128
- if (facetType === 'lending') {
129
- displayText =
130
- (_a = lendingFacetDisplayNames[bucketKey]) !== null && _a !== void 0 ? _a : bucketKey;
131
- }
132
- if (!facetGroups[facetType]) {
133
- facetGroups[facetType] = {
134
- title,
135
- key: facetType,
136
- buckets: [],
137
- };
138
- }
139
- facetGroups[facetType].buckets.push({
140
- displayText,
141
- key: bucketKey,
142
- count: bucket.count,
143
- state: bucket.state,
144
- });
145
- });
146
- return Object.values(facetGroups);
147
- }
148
- }
149
- //# sourceMappingURL=selected-facets.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"selected-facets.js","sourceRoot":"","sources":["../../src/selected-facets.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n facetTitles,\n type FacetBucket,\n type FacetGroup,\n type FacetOption,\n type FacetValue,\n lendingFacetDisplayNames,\n LendingFacetKey,\n} from './models';\n\n/**\n * A record of all the facet buckets for a particular facet type, indexed by their bucket key\n */\nexport type FacetBucketsRecord = Record<FacetValue, FacetBucket>;\n\n// Implementing this model ensures that every facet type is accounted for\ntype SelectedFacetsModel = Record<FacetOption, FacetBucketsRecord>;\n\nconst VALID_FACET_OPTIONS: Set<FacetOption> = new Set([\n 'collection',\n 'creator',\n 'language',\n 'lending',\n 'mediatype',\n 'subject',\n 'year',\n]);\n\n/**\n * A class to hold, query, and manipulate state about selected/hidden facets.\n */\nexport class SelectedFacets implements SelectedFacetsModel {\n readonly collection: FacetBucketsRecord = {};\n\n readonly creator: FacetBucketsRecord = {};\n\n readonly language: FacetBucketsRecord = {};\n\n readonly lending: FacetBucketsRecord = {};\n\n readonly mediatype: FacetBucketsRecord = {};\n\n readonly subject: FacetBucketsRecord = {};\n\n readonly year: FacetBucketsRecord = {};\n\n constructor(initValues?: Partial<SelectedFacetsModel>) {\n if (initValues) {\n for (const [facetType, buckets] of Object.entries(initValues)) {\n if (VALID_FACET_OPTIONS.has(facetType as FacetOption)) {\n for (const [bucketKey, bucket] of Object.entries(buckets)) {\n this[facetType as FacetOption][bucketKey] = { ...bucket };\n }\n }\n }\n }\n }\n\n /**\n * Executes the given function on every facet bucket within the current SelectedFacets object.\n * @param fn The function to execute for each facet bucket\n */\n forEach(\n fn: (\n bucket: FacetBucket,\n bucketKey: FacetValue,\n facetType: FacetOption\n ) => unknown\n ): void {\n for (const [facetType, buckets] of Object.entries(\n this as SelectedFacetsModel\n )) {\n for (const [bucketKey, bucket] of Object.entries(buckets)) {\n fn(bucket, bucketKey, facetType as FacetOption);\n }\n }\n }\n\n /**\n * Executes the given function on every facet type within the current SelectedFacets object.\n * Similar to `SelectedFacets.forEach`, but operating on the full set of buckets for each type\n * (rather than individual buckets).\n * @param fn The function to execute for each facet type\n */\n forEachFacetType(\n fn: (buckets: FacetBucketsRecord, facetType: FacetOption) => unknown\n ): void {\n for (const [facetType, buckets] of Object.entries(\n this as SelectedFacetsModel\n )) {\n fn(buckets, facetType as FacetOption);\n }\n }\n\n /**\n * Like `Array.some`, returns whether the given predicate function returns true for\n * any of the facet buckets contained in this object.\n * @param predicate Function returning a boolean for each bucket\n * @returns Whether any of the facet buckets satisfy the predicate\n */\n some(\n predicate: (\n bucket: FacetBucket,\n bucketKey: FacetValue,\n facetType: FacetOption\n ) => boolean\n ): boolean {\n for (const [facetType, buckets] of Object.entries(\n this as SelectedFacetsModel\n )) {\n for (const [bucketKey, bucket] of Object.entries(buckets)) {\n if (predicate(bucket, bucketKey, facetType as FacetOption)) return true;\n }\n }\n\n return false;\n }\n\n /**\n * Like `Array.every`, returns whether the given predicate function returns true for\n * *all* of the facet buckets contained in this object.\n * @param predicate Function returning a boolean for each bucket\n * @returns Whether all of the facet buckets satisfy the predicate\n */\n every(\n predicate: (\n bucket: FacetBucket,\n bucketKey: FacetValue,\n facetType: FacetOption\n ) => boolean\n ): boolean {\n for (const [facetType, buckets] of Object.entries(\n this as SelectedFacetsModel\n )) {\n for (const [bucketKey, bucket] of Object.entries(buckets)) {\n if (!predicate(bucket, bucketKey, facetType as FacetOption))\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Returns a new SelectedFacets object deeply cloned from this one (same contents).\n */\n clone(): SelectedFacets {\n return new SelectedFacets(this);\n }\n\n /**\n * Returns a new SelectedFacets object cloned from this one with all of the given `otherFacets`\n * applied overtop. Facets from this object will be overwritten by those in `otherFacets`\n * that have the same facet type and bucket key.\n *\n * @param otherFacets The other SelectedFacets object to merge into this one.\n */\n merge(otherFacets?: SelectedFacets): SelectedFacets {\n const merged = this.clone();\n otherFacets?.forEach((bucket, bucketKey, facetType) => {\n merged[facetType][bucketKey] = { ...bucket };\n });\n\n return merged;\n }\n\n /**\n * Returns a new SelectedFacets object with facet buckets normalized, such that any\n * buckets with a state of 'none' are removed entirely.\n */\n normalize(): SelectedFacets {\n const normalized = this.clone();\n normalized.forEach((bucket, bucketKey, facetType) => {\n if (bucket.state === 'none') {\n delete normalized[facetType][bucketKey];\n }\n });\n\n return normalized;\n }\n\n /**\n * Converts this SelectedFacets object into an array of equivalent FacetGroups.\n */\n toFacetGroups(): FacetGroup[] {\n const facetGroups: Record<string, FacetGroup> = {};\n\n this.forEach((bucket, bucketKey, facetType) => {\n const title = facetTitles[facetType];\n let displayText = bucketKey;\n\n // For lending facets, convert the key to a more readable format\n if (facetType === 'lending') {\n displayText =\n lendingFacetDisplayNames[bucketKey as LendingFacetKey] ?? bucketKey;\n }\n\n if (!facetGroups[facetType]) {\n facetGroups[facetType] = {\n title,\n key: facetType,\n buckets: [],\n };\n }\n\n facetGroups[facetType].buckets.push({\n displayText,\n key: bucketKey,\n count: bucket.count,\n state: bucket.state,\n });\n });\n\n return Object.values(facetGroups);\n }\n}\n"]}
@@ -1,216 +0,0 @@
1
- import {
2
- facetTitles,
3
- type FacetBucket,
4
- type FacetGroup,
5
- type FacetOption,
6
- type FacetValue,
7
- lendingFacetDisplayNames,
8
- LendingFacetKey,
9
- } from './models';
10
-
11
- /**
12
- * A record of all the facet buckets for a particular facet type, indexed by their bucket key
13
- */
14
- export type FacetBucketsRecord = Record<FacetValue, FacetBucket>;
15
-
16
- // Implementing this model ensures that every facet type is accounted for
17
- type SelectedFacetsModel = Record<FacetOption, FacetBucketsRecord>;
18
-
19
- const VALID_FACET_OPTIONS: Set<FacetOption> = new Set([
20
- 'collection',
21
- 'creator',
22
- 'language',
23
- 'lending',
24
- 'mediatype',
25
- 'subject',
26
- 'year',
27
- ]);
28
-
29
- /**
30
- * A class to hold, query, and manipulate state about selected/hidden facets.
31
- */
32
- export class SelectedFacets implements SelectedFacetsModel {
33
- readonly collection: FacetBucketsRecord = {};
34
-
35
- readonly creator: FacetBucketsRecord = {};
36
-
37
- readonly language: FacetBucketsRecord = {};
38
-
39
- readonly lending: FacetBucketsRecord = {};
40
-
41
- readonly mediatype: FacetBucketsRecord = {};
42
-
43
- readonly subject: FacetBucketsRecord = {};
44
-
45
- readonly year: FacetBucketsRecord = {};
46
-
47
- constructor(initValues?: Partial<SelectedFacetsModel>) {
48
- if (initValues) {
49
- for (const [facetType, buckets] of Object.entries(initValues)) {
50
- if (VALID_FACET_OPTIONS.has(facetType as FacetOption)) {
51
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
52
- this[facetType as FacetOption][bucketKey] = { ...bucket };
53
- }
54
- }
55
- }
56
- }
57
- }
58
-
59
- /**
60
- * Executes the given function on every facet bucket within the current SelectedFacets object.
61
- * @param fn The function to execute for each facet bucket
62
- */
63
- forEach(
64
- fn: (
65
- bucket: FacetBucket,
66
- bucketKey: FacetValue,
67
- facetType: FacetOption
68
- ) => unknown
69
- ): void {
70
- for (const [facetType, buckets] of Object.entries(
71
- this as SelectedFacetsModel
72
- )) {
73
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
74
- fn(bucket, bucketKey, facetType as FacetOption);
75
- }
76
- }
77
- }
78
-
79
- /**
80
- * Executes the given function on every facet type within the current SelectedFacets object.
81
- * Similar to `SelectedFacets.forEach`, but operating on the full set of buckets for each type
82
- * (rather than individual buckets).
83
- * @param fn The function to execute for each facet type
84
- */
85
- forEachFacetType(
86
- fn: (buckets: FacetBucketsRecord, facetType: FacetOption) => unknown
87
- ): void {
88
- for (const [facetType, buckets] of Object.entries(
89
- this as SelectedFacetsModel
90
- )) {
91
- fn(buckets, facetType as FacetOption);
92
- }
93
- }
94
-
95
- /**
96
- * Like `Array.some`, returns whether the given predicate function returns true for
97
- * any of the facet buckets contained in this object.
98
- * @param predicate Function returning a boolean for each bucket
99
- * @returns Whether any of the facet buckets satisfy the predicate
100
- */
101
- some(
102
- predicate: (
103
- bucket: FacetBucket,
104
- bucketKey: FacetValue,
105
- facetType: FacetOption
106
- ) => boolean
107
- ): boolean {
108
- for (const [facetType, buckets] of Object.entries(
109
- this as SelectedFacetsModel
110
- )) {
111
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
112
- if (predicate(bucket, bucketKey, facetType as FacetOption)) return true;
113
- }
114
- }
115
-
116
- return false;
117
- }
118
-
119
- /**
120
- * Like `Array.every`, returns whether the given predicate function returns true for
121
- * *all* of the facet buckets contained in this object.
122
- * @param predicate Function returning a boolean for each bucket
123
- * @returns Whether all of the facet buckets satisfy the predicate
124
- */
125
- every(
126
- predicate: (
127
- bucket: FacetBucket,
128
- bucketKey: FacetValue,
129
- facetType: FacetOption
130
- ) => boolean
131
- ): boolean {
132
- for (const [facetType, buckets] of Object.entries(
133
- this as SelectedFacetsModel
134
- )) {
135
- for (const [bucketKey, bucket] of Object.entries(buckets)) {
136
- if (!predicate(bucket, bucketKey, facetType as FacetOption))
137
- return false;
138
- }
139
- }
140
-
141
- return true;
142
- }
143
-
144
- /**
145
- * Returns a new SelectedFacets object deeply cloned from this one (same contents).
146
- */
147
- clone(): SelectedFacets {
148
- return new SelectedFacets(this);
149
- }
150
-
151
- /**
152
- * Returns a new SelectedFacets object cloned from this one with all of the given `otherFacets`
153
- * applied overtop. Facets from this object will be overwritten by those in `otherFacets`
154
- * that have the same facet type and bucket key.
155
- *
156
- * @param otherFacets The other SelectedFacets object to merge into this one.
157
- */
158
- merge(otherFacets?: SelectedFacets): SelectedFacets {
159
- const merged = this.clone();
160
- otherFacets?.forEach((bucket, bucketKey, facetType) => {
161
- merged[facetType][bucketKey] = { ...bucket };
162
- });
163
-
164
- return merged;
165
- }
166
-
167
- /**
168
- * Returns a new SelectedFacets object with facet buckets normalized, such that any
169
- * buckets with a state of 'none' are removed entirely.
170
- */
171
- normalize(): SelectedFacets {
172
- const normalized = this.clone();
173
- normalized.forEach((bucket, bucketKey, facetType) => {
174
- if (bucket.state === 'none') {
175
- delete normalized[facetType][bucketKey];
176
- }
177
- });
178
-
179
- return normalized;
180
- }
181
-
182
- /**
183
- * Converts this SelectedFacets object into an array of equivalent FacetGroups.
184
- */
185
- toFacetGroups(): FacetGroup[] {
186
- const facetGroups: Record<string, FacetGroup> = {};
187
-
188
- this.forEach((bucket, bucketKey, facetType) => {
189
- const title = facetTitles[facetType];
190
- let displayText = bucketKey;
191
-
192
- // For lending facets, convert the key to a more readable format
193
- if (facetType === 'lending') {
194
- displayText =
195
- lendingFacetDisplayNames[bucketKey as LendingFacetKey] ?? bucketKey;
196
- }
197
-
198
- if (!facetGroups[facetType]) {
199
- facetGroups[facetType] = {
200
- title,
201
- key: facetType,
202
- buckets: [],
203
- };
204
- }
205
-
206
- facetGroups[facetType].buckets.push({
207
- displayText,
208
- key: bucketKey,
209
- count: bucket.count,
210
- state: bucket.state,
211
- });
212
- });
213
-
214
- return Object.values(facetGroups);
215
- }
216
- }