@internetarchive/collection-browser 3.3.2 → 3.3.3

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 (532) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +27 -27
  3. package/.github/workflows/gh-pages-main.yml +39 -39
  4. package/.github/workflows/npm-publish.yml +39 -39
  5. package/.github/workflows/pr-preview.yml +38 -38
  6. package/.husky/pre-commit +4 -4
  7. package/.prettierignore +1 -1
  8. package/LICENSE +661 -661
  9. package/README.md +83 -83
  10. package/dist/index.d.ts +16 -0
  11. package/dist/index.js.map +1 -0
  12. package/dist/src/app-root.d.ts +105 -0
  13. package/dist/src/app-root.js +1076 -0
  14. package/dist/src/app-root.js.map +1 -0
  15. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -0
  16. package/dist/src/assets/img/icons/arrow-left.js +10 -0
  17. package/dist/src/assets/img/icons/arrow-left.js.map +1 -0
  18. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -0
  19. package/dist/src/assets/img/icons/arrow-right.js +10 -0
  20. package/dist/src/assets/img/icons/arrow-right.js.map +1 -0
  21. package/dist/src/assets/img/icons/chevron.d.ts +2 -0
  22. package/dist/src/assets/img/icons/chevron.js +4 -0
  23. package/dist/src/assets/img/icons/chevron.js.map +1 -0
  24. package/dist/src/assets/img/icons/close-circle-dark.d.ts +2 -0
  25. package/dist/src/assets/img/icons/close-circle-dark.js +5 -0
  26. package/dist/src/assets/img/icons/close-circle-dark.js.map +1 -0
  27. package/dist/src/assets/img/icons/contract.d.ts +2 -0
  28. package/dist/src/assets/img/icons/contract.js +9 -0
  29. package/dist/src/assets/img/icons/contract.js.map +1 -0
  30. package/dist/src/assets/img/icons/empty-query.d.ts +2 -0
  31. package/dist/src/assets/img/icons/empty-query.js +5 -0
  32. package/dist/src/assets/img/icons/empty-query.js.map +1 -0
  33. package/dist/src/assets/img/icons/expand.d.ts +2 -0
  34. package/dist/src/assets/img/icons/expand.js +9 -0
  35. package/dist/src/assets/img/icons/expand.js.map +1 -0
  36. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
  37. package/dist/src/assets/img/icons/eye-closed.js +5 -0
  38. package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
  39. package/dist/src/assets/img/icons/eye.d.ts +2 -0
  40. package/dist/src/assets/img/icons/eye.js +5 -0
  41. package/dist/src/assets/img/icons/eye.js.map +1 -0
  42. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -0
  43. package/dist/src/assets/img/icons/favorite-filled.js +10 -0
  44. package/dist/src/assets/img/icons/favorite-filled.js.map +1 -0
  45. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -0
  46. package/dist/src/assets/img/icons/favorite-unfilled.js +9 -0
  47. package/dist/src/assets/img/icons/favorite-unfilled.js.map +1 -0
  48. package/dist/src/assets/img/icons/filter.d.ts +2 -0
  49. package/dist/src/assets/img/icons/filter.js +10 -0
  50. package/dist/src/assets/img/icons/filter.js.map +1 -0
  51. package/dist/src/assets/img/icons/login-required.d.ts +1 -0
  52. package/dist/src/assets/img/icons/login-required.js +18 -0
  53. package/dist/src/assets/img/icons/login-required.js.map +1 -0
  54. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -0
  55. package/dist/src/assets/img/icons/mediatype/account.js +14 -0
  56. package/dist/src/assets/img/icons/mediatype/account.js.map +1 -0
  57. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -0
  58. package/dist/src/assets/img/icons/mediatype/audio.js +14 -0
  59. package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -0
  60. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -0
  61. package/dist/src/assets/img/icons/mediatype/collection.js +12 -0
  62. package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -0
  63. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -0
  64. package/dist/src/assets/img/icons/mediatype/data.js +15 -0
  65. package/dist/src/assets/img/icons/mediatype/data.js.map +1 -0
  66. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -0
  67. package/dist/src/assets/img/icons/mediatype/etree.js +14 -0
  68. package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -0
  69. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -0
  70. package/dist/src/assets/img/icons/mediatype/film.js +14 -0
  71. package/dist/src/assets/img/icons/mediatype/film.js.map +1 -0
  72. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -0
  73. package/dist/src/assets/img/icons/mediatype/images.js +13 -0
  74. package/dist/src/assets/img/icons/mediatype/images.js.map +1 -0
  75. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -0
  76. package/dist/src/assets/img/icons/mediatype/radio.js +15 -0
  77. package/dist/src/assets/img/icons/mediatype/radio.js.map +1 -0
  78. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -0
  79. package/dist/src/assets/img/icons/mediatype/search.js +14 -0
  80. package/dist/src/assets/img/icons/mediatype/search.js.map +1 -0
  81. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -0
  82. package/dist/src/assets/img/icons/mediatype/software.js +13 -0
  83. package/dist/src/assets/img/icons/mediatype/software.js.map +1 -0
  84. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -0
  85. package/dist/src/assets/img/icons/mediatype/texts.js +13 -0
  86. package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -0
  87. package/dist/src/assets/img/icons/mediatype/tv-commercial.d.ts +1 -0
  88. package/dist/src/assets/img/icons/mediatype/tv-commercial.js +12 -0
  89. package/dist/src/assets/img/icons/mediatype/tv-commercial.js.map +1 -0
  90. package/dist/src/assets/img/icons/mediatype/tv-fact-check.d.ts +1 -0
  91. package/dist/src/assets/img/icons/mediatype/tv-fact-check.js +12 -0
  92. package/dist/src/assets/img/icons/mediatype/tv-fact-check.js.map +1 -0
  93. package/dist/src/assets/img/icons/mediatype/tv-quote.d.ts +1 -0
  94. package/dist/src/assets/img/icons/mediatype/tv-quote.js +12 -0
  95. package/dist/src/assets/img/icons/mediatype/tv-quote.js.map +1 -0
  96. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -0
  97. package/dist/src/assets/img/icons/mediatype/tv.js +14 -0
  98. package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -0
  99. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -0
  100. package/dist/src/assets/img/icons/mediatype/video.js +14 -0
  101. package/dist/src/assets/img/icons/mediatype/video.js.map +1 -0
  102. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -0
  103. package/dist/src/assets/img/icons/mediatype/web.js +13 -0
  104. package/dist/src/assets/img/icons/mediatype/web.js.map +1 -0
  105. package/dist/src/assets/img/icons/null-result.d.ts +2 -0
  106. package/dist/src/assets/img/icons/null-result.js +5 -0
  107. package/dist/src/assets/img/icons/null-result.js.map +1 -0
  108. package/dist/src/assets/img/icons/quote.d.ts +1 -0
  109. package/dist/src/assets/img/icons/quote.js +7 -0
  110. package/dist/src/assets/img/icons/quote.js.map +1 -0
  111. package/dist/src/assets/img/icons/restricted.d.ts +1 -0
  112. package/dist/src/assets/img/icons/restricted.js +13 -0
  113. package/dist/src/assets/img/icons/restricted.js.map +1 -0
  114. package/dist/src/assets/img/icons/reviews.d.ts +1 -0
  115. package/dist/src/assets/img/icons/reviews.js +11 -0
  116. package/dist/src/assets/img/icons/reviews.js.map +1 -0
  117. package/dist/src/assets/img/icons/upload.d.ts +1 -0
  118. package/dist/src/assets/img/icons/upload.js +12 -0
  119. package/dist/src/assets/img/icons/upload.js.map +1 -0
  120. package/dist/src/assets/img/icons/views.d.ts +1 -0
  121. package/dist/src/assets/img/icons/views.js +11 -0
  122. package/dist/src/assets/img/icons/views.js.map +1 -0
  123. package/dist/src/circular-activity-indicator.d.ts +5 -0
  124. package/dist/src/circular-activity-indicator.js +66 -0
  125. package/dist/src/circular-activity-indicator.js.map +1 -0
  126. package/dist/src/collection-browser.d.ts +684 -0
  127. package/dist/src/collection-browser.js +2567 -0
  128. package/dist/src/collection-browser.js.map +1 -0
  129. package/dist/src/collection-facets/facet-row.d.ts +30 -0
  130. package/dist/src/collection-facets/facet-row.js +265 -0
  131. package/dist/src/collection-facets/facet-row.js.map +1 -0
  132. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -0
  133. package/dist/src/collection-facets/facet-tombstone-row.js +43 -0
  134. package/dist/src/collection-facets/facet-tombstone-row.js.map +1 -0
  135. package/dist/src/collection-facets/facets-template.d.ts +13 -0
  136. package/dist/src/collection-facets/facets-template.js +68 -0
  137. package/dist/src/collection-facets/facets-template.js.map +1 -0
  138. package/dist/src/collection-facets/models.d.ts +9 -0
  139. package/dist/src/collection-facets/models.js +10 -0
  140. package/dist/src/collection-facets/models.js.map +1 -0
  141. package/dist/src/collection-facets/more-facets-content.d.ts +109 -0
  142. package/dist/src/collection-facets/more-facets-content.js +547 -0
  143. package/dist/src/collection-facets/more-facets-content.js.map +1 -0
  144. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -0
  145. package/dist/src/collection-facets/more-facets-pagination.js +264 -0
  146. package/dist/src/collection-facets/more-facets-pagination.js.map +1 -0
  147. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -0
  148. package/dist/src/collection-facets/smart-facets/dedupe.js +35 -0
  149. package/dist/src/collection-facets/smart-facets/dedupe.js.map +1 -0
  150. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.d.ts +5 -0
  151. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js +24 -0
  152. package/dist/src/collection-facets/smart-facets/heuristics/browser-language/browser-language-heuristic.js.map +1 -0
  153. package/dist/src/collection-facets/smart-facets/heuristics/index.d.ts +3 -0
  154. package/dist/src/collection-facets/smart-facets/heuristics/index.js +4 -0
  155. package/dist/src/collection-facets/smart-facets/heuristics/index.js.map +1 -0
  156. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.d.ts +4 -0
  157. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js +14 -0
  158. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-heuristic.js.map +1 -0
  159. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.d.ts +6 -0
  160. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js +68 -0
  161. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords/query-keywords-map.js.map +1 -0
  162. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.d.ts +9 -0
  163. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js +69 -0
  164. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-entity-map.js.map +1 -0
  165. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.d.ts +21 -0
  166. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js +76 -0
  167. package/dist/src/collection-facets/smart-facets/heuristics/wikidata/wikidata-heuristic.js.map +1 -0
  168. package/dist/src/collection-facets/smart-facets/models.d.ts +30 -0
  169. package/dist/src/collection-facets/smart-facets/models.js +2 -0
  170. package/dist/src/collection-facets/smart-facets/models.js.map +1 -0
  171. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +54 -0
  172. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +383 -0
  173. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js.map +1 -0
  174. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -0
  175. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +133 -0
  176. package/dist/src/collection-facets/smart-facets/smart-facet-button.js.map +1 -0
  177. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +28 -0
  178. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +172 -0
  179. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js.map +1 -0
  180. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -0
  181. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +13 -0
  182. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js.map +1 -0
  183. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -0
  184. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +18 -0
  185. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js.map +1 -0
  186. package/dist/src/collection-facets/toggle-switch.d.ts +41 -0
  187. package/dist/src/collection-facets/toggle-switch.js +174 -0
  188. package/dist/src/collection-facets/toggle-switch.js.map +1 -0
  189. package/dist/src/collection-facets.d.ts +113 -0
  190. package/dist/src/collection-facets.js +872 -0
  191. package/dist/src/collection-facets.js.map +1 -0
  192. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +261 -0
  193. package/dist/src/data-source/collection-browser-data-source-interface.js +2 -0
  194. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -0
  195. package/dist/src/data-source/collection-browser-data-source.d.ts +400 -0
  196. package/dist/src/data-source/collection-browser-data-source.js +1103 -0
  197. package/dist/src/data-source/collection-browser-data-source.js.map +1 -0
  198. package/dist/src/data-source/collection-browser-query-state.d.ts +49 -0
  199. package/dist/src/data-source/collection-browser-query-state.js +2 -0
  200. package/dist/src/data-source/collection-browser-query-state.js.map +1 -0
  201. package/dist/src/data-source/models.d.ts +32 -0
  202. package/dist/src/data-source/models.js +9 -0
  203. package/dist/src/data-source/models.js.map +1 -0
  204. package/dist/src/empty-placeholder.d.ts +23 -0
  205. package/dist/src/empty-placeholder.js +165 -0
  206. package/dist/src/empty-placeholder.js.map +1 -0
  207. package/dist/src/expanded-date-picker.d.ts +50 -0
  208. package/dist/src/expanded-date-picker.js +182 -0
  209. package/dist/src/expanded-date-picker.js.map +1 -0
  210. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -0
  211. package/dist/src/language-code-handler/language-code-handler.js +27 -0
  212. package/dist/src/language-code-handler/language-code-handler.js.map +1 -0
  213. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -0
  214. package/dist/src/language-code-handler/language-code-mapping.js +563 -0
  215. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -0
  216. package/dist/src/manage/manage-bar.d.ts +58 -0
  217. package/dist/src/manage/manage-bar.js +237 -0
  218. package/dist/src/manage/manage-bar.js.map +1 -0
  219. package/dist/src/manage/remove-items-modal-content.d.ts +9 -0
  220. package/dist/src/manage/remove-items-modal-content.js +104 -0
  221. package/dist/src/manage/remove-items-modal-content.js.map +1 -0
  222. package/dist/src/mediatype/mediatype-config.d.ts +11 -0
  223. package/dist/src/mediatype/mediatype-config.js +116 -0
  224. package/dist/src/mediatype/mediatype-config.js.map +1 -0
  225. package/dist/src/models.d.ts +302 -0
  226. package/dist/src/models.js +511 -0
  227. package/dist/src/models.js.map +1 -0
  228. package/dist/src/restoration-state-handler.d.ts +75 -0
  229. package/dist/src/restoration-state-handler.js +403 -0
  230. package/dist/src/restoration-state-handler.js.map +1 -0
  231. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -0
  232. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +60 -0
  233. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js.map +1 -0
  234. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -0
  235. package/dist/src/sort-filter-bar/alpha-bar.js +241 -0
  236. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -0
  237. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
  238. package/dist/src/sort-filter-bar/img/compact.js +5 -0
  239. package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
  240. package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
  241. package/dist/src/sort-filter-bar/img/list.js +5 -0
  242. package/dist/src/sort-filter-bar/img/list.js.map +1 -0
  243. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -0
  244. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +15 -0
  245. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js.map +1 -0
  246. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -0
  247. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +17 -0
  248. package/dist/src/sort-filter-bar/img/sort-toggle-down.js.map +1 -0
  249. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -0
  250. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +17 -0
  251. package/dist/src/sort-filter-bar/img/sort-toggle-up.js.map +1 -0
  252. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
  253. package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
  254. package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
  255. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
  256. package/dist/src/sort-filter-bar/img/tile.js +5 -0
  257. package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
  258. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +278 -0
  259. package/dist/src/sort-filter-bar/sort-filter-bar.js +1161 -0
  260. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -0
  261. package/dist/src/styles/ia-button.d.ts +2 -0
  262. package/dist/src/styles/ia-button.js +134 -0
  263. package/dist/src/styles/ia-button.js.map +1 -0
  264. package/dist/src/styles/item-image-styles.d.ts +8 -0
  265. package/dist/src/styles/item-image-styles.js +123 -0
  266. package/dist/src/styles/item-image-styles.js.map +1 -0
  267. package/dist/src/styles/sr-only.d.ts +1 -0
  268. package/dist/src/styles/sr-only.js +18 -0
  269. package/dist/src/styles/sr-only.js.map +1 -0
  270. package/dist/src/tiles/base-tile-component.d.ts +27 -0
  271. package/dist/src/tiles/base-tile-component.js +82 -0
  272. package/dist/src/tiles/base-tile-component.js.map +1 -0
  273. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -0
  274. package/dist/src/tiles/collection-browser-loading-tile.js +29 -0
  275. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -0
  276. package/dist/src/tiles/grid/account-tile.d.ts +18 -0
  277. package/dist/src/tiles/grid/account-tile.js +111 -0
  278. package/dist/src/tiles/grid/account-tile.js.map +1 -0
  279. package/dist/src/tiles/grid/collection-tile.d.ts +15 -0
  280. package/dist/src/tiles/grid/collection-tile.js +160 -0
  281. package/dist/src/tiles/grid/collection-tile.js.map +1 -0
  282. package/dist/src/tiles/grid/item-tile.d.ts +41 -0
  283. package/dist/src/tiles/grid/item-tile.js +321 -0
  284. package/dist/src/tiles/grid/item-tile.js.map +1 -0
  285. package/dist/src/tiles/grid/search-tile.d.ts +10 -0
  286. package/dist/src/tiles/grid/search-tile.js +95 -0
  287. package/dist/src/tiles/grid/search-tile.js.map +1 -0
  288. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -0
  289. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +128 -0
  290. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js.map +1 -0
  291. package/dist/src/tiles/grid/tile-stats.d.ts +58 -0
  292. package/dist/src/tiles/grid/tile-stats.js +204 -0
  293. package/dist/src/tiles/grid/tile-stats.js.map +1 -0
  294. package/dist/src/tiles/hover/hover-pane-controller.d.ts +228 -0
  295. package/dist/src/tiles/hover/hover-pane-controller.js +446 -0
  296. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -0
  297. package/dist/src/tiles/hover/tile-hover-pane.d.ts +20 -0
  298. package/dist/src/tiles/hover/tile-hover-pane.js +185 -0
  299. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -0
  300. package/dist/src/tiles/image-block.d.ts +19 -0
  301. package/dist/src/tiles/image-block.js +175 -0
  302. package/dist/src/tiles/image-block.js.map +1 -0
  303. package/dist/src/tiles/item-image.d.ts +40 -0
  304. package/dist/src/tiles/item-image.js +191 -0
  305. package/dist/src/tiles/item-image.js.map +1 -0
  306. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -0
  307. package/dist/src/tiles/list/tile-list-compact-header.js +85 -0
  308. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
  309. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -0
  310. package/dist/src/tiles/list/tile-list-compact.js +223 -0
  311. package/dist/src/tiles/list/tile-list-compact.js.map +1 -0
  312. package/dist/src/tiles/list/tile-list.d.ts +54 -0
  313. package/dist/src/tiles/list/tile-list.js +621 -0
  314. package/dist/src/tiles/list/tile-list.js.map +1 -0
  315. package/dist/src/tiles/models.d.ts +1 -0
  316. package/dist/src/tiles/models.js +2 -0
  317. package/dist/src/tiles/models.js.map +1 -0
  318. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -0
  319. package/dist/src/tiles/overlay/icon-overlay.js +55 -0
  320. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -0
  321. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -0
  322. package/dist/src/tiles/overlay/text-overlay.js +74 -0
  323. package/dist/src/tiles/overlay/text-overlay.js.map +1 -0
  324. package/dist/src/tiles/review-block.d.ts +12 -0
  325. package/dist/src/tiles/review-block.js +134 -0
  326. package/dist/src/tiles/review-block.js.map +1 -0
  327. package/dist/src/tiles/text-snippet-block.d.ts +27 -0
  328. package/dist/src/tiles/text-snippet-block.js +132 -0
  329. package/dist/src/tiles/text-snippet-block.js.map +1 -0
  330. package/dist/src/tiles/tile-dispatcher.d.ts +71 -0
  331. package/dist/src/tiles/tile-dispatcher.js +472 -0
  332. package/dist/src/tiles/tile-dispatcher.js.map +1 -0
  333. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -0
  334. package/dist/src/tiles/tile-display-value-provider.js +95 -0
  335. package/dist/src/tiles/tile-display-value-provider.js.map +1 -0
  336. package/dist/src/tiles/tile-mediatype-icon.d.ts +27 -0
  337. package/dist/src/tiles/tile-mediatype-icon.js +130 -0
  338. package/dist/src/tiles/tile-mediatype-icon.js.map +1 -0
  339. package/dist/src/utils/analytics-events.d.ts +28 -0
  340. package/dist/src/utils/analytics-events.js +31 -0
  341. package/dist/src/utils/analytics-events.js.map +1 -0
  342. package/dist/src/utils/array-equals.d.ts +4 -0
  343. package/dist/src/utils/array-equals.js +11 -0
  344. package/dist/src/utils/array-equals.js.map +1 -0
  345. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -0
  346. package/dist/src/utils/collapse-repeated-quotes.js +14 -0
  347. package/dist/src/utils/collapse-repeated-quotes.js.map +1 -0
  348. package/dist/src/utils/facet-utils.d.ts +83 -0
  349. package/dist/src/utils/facet-utils.js +152 -0
  350. package/dist/src/utils/facet-utils.js.map +1 -0
  351. package/dist/src/utils/format-count.d.ts +7 -0
  352. package/dist/src/utils/format-count.js +76 -0
  353. package/dist/src/utils/format-count.js.map +1 -0
  354. package/dist/src/utils/format-date.d.ts +16 -0
  355. package/dist/src/utils/format-date.js +33 -0
  356. package/dist/src/utils/format-date.js.map +1 -0
  357. package/dist/src/utils/format-unit-size.d.ts +2 -0
  358. package/dist/src/utils/format-unit-size.js +34 -0
  359. package/dist/src/utils/format-unit-size.js.map +1 -0
  360. package/dist/src/utils/local-date-from-utc.d.ts +9 -0
  361. package/dist/src/utils/local-date-from-utc.js +16 -0
  362. package/dist/src/utils/local-date-from-utc.js.map +1 -0
  363. package/dist/src/utils/log.d.ts +7 -0
  364. package/dist/src/utils/log.js +14 -0
  365. package/dist/src/utils/log.js.map +1 -0
  366. package/dist/src/utils/resolve-mediatype.d.ts +8 -0
  367. package/dist/src/utils/resolve-mediatype.js +24 -0
  368. package/dist/src/utils/resolve-mediatype.js.map +1 -0
  369. package/dist/src/utils/sha1.d.ts +2 -0
  370. package/dist/src/utils/sha1.js +9 -0
  371. package/dist/src/utils/sha1.js.map +1 -0
  372. package/dist/test/collection-browser.test.d.ts +1 -0
  373. package/dist/test/collection-browser.test.js +1711 -0
  374. package/dist/test/collection-browser.test.js.map +1 -0
  375. package/dist/test/collection-facets/facet-row.test.d.ts +1 -0
  376. package/dist/test/collection-facets/facet-row.test.js +274 -0
  377. package/dist/test/collection-facets/facet-row.test.js.map +1 -0
  378. package/dist/test/collection-facets/facets-template.test.d.ts +1 -0
  379. package/dist/test/collection-facets/facets-template.test.js +101 -0
  380. package/dist/test/collection-facets/facets-template.test.js.map +1 -0
  381. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -0
  382. package/dist/test/collection-facets/more-facets-content.test.js +169 -0
  383. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -0
  384. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -0
  385. package/dist/test/collection-facets/more-facets-pagination.test.js +132 -0
  386. package/dist/test/collection-facets/more-facets-pagination.test.js.map +1 -0
  387. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -0
  388. package/dist/test/collection-facets/toggle-switch.test.js +96 -0
  389. package/dist/test/collection-facets/toggle-switch.test.js.map +1 -0
  390. package/dist/test/collection-facets.test.d.ts +2 -0
  391. package/dist/test/collection-facets.test.js +745 -0
  392. package/dist/test/collection-facets.test.js.map +1 -0
  393. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -0
  394. package/dist/test/data-source/collection-browser-data-source.test.js +102 -0
  395. package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -0
  396. package/dist/test/empty-placeholder.test.d.ts +1 -0
  397. package/dist/test/empty-placeholder.test.js +63 -0
  398. package/dist/test/empty-placeholder.test.js.map +1 -0
  399. package/dist/test/expanded-date-picker.test.d.ts +1 -0
  400. package/dist/test/expanded-date-picker.test.js +130 -0
  401. package/dist/test/expanded-date-picker.test.js.map +1 -0
  402. package/dist/test/icon-overlay.test.d.ts +1 -0
  403. package/dist/test/icon-overlay.test.js +30 -0
  404. package/dist/test/icon-overlay.test.js.map +1 -0
  405. package/dist/test/image-block.test.d.ts +1 -0
  406. package/dist/test/image-block.test.js +218 -0
  407. package/dist/test/image-block.test.js.map +1 -0
  408. package/dist/test/item-image.test.d.ts +1 -0
  409. package/dist/test/item-image.test.js +196 -0
  410. package/dist/test/item-image.test.js.map +1 -0
  411. package/dist/test/manage/manage-bar.test.d.ts +2 -0
  412. package/dist/test/manage/manage-bar.test.js +106 -0
  413. package/dist/test/manage/manage-bar.test.js.map +1 -0
  414. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -0
  415. package/dist/test/manage/remove-items-modal-content.test.js +65 -0
  416. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -0
  417. package/dist/test/mediatype-config.test.d.ts +1 -0
  418. package/dist/test/mediatype-config.test.js +11 -0
  419. package/dist/test/mediatype-config.test.js.map +1 -0
  420. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -0
  421. package/dist/test/mocks/mock-analytics-handler.js +16 -0
  422. package/dist/test/mocks/mock-analytics-handler.js.map +1 -0
  423. package/dist/test/mocks/mock-search-responses.d.ts +31 -0
  424. package/dist/test/mocks/mock-search-responses.js +1241 -0
  425. package/dist/test/mocks/mock-search-responses.js.map +1 -0
  426. package/dist/test/mocks/mock-search-service.d.ts +16 -0
  427. package/dist/test/mocks/mock-search-service.js +65 -0
  428. package/dist/test/mocks/mock-search-service.js.map +1 -0
  429. package/dist/test/restoration-state-handler.test.d.ts +1 -0
  430. package/dist/test/restoration-state-handler.test.js +375 -0
  431. package/dist/test/restoration-state-handler.test.js.map +1 -0
  432. package/dist/test/review-block.test.d.ts +1 -0
  433. package/dist/test/review-block.test.js +48 -0
  434. package/dist/test/review-block.test.js.map +1 -0
  435. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -0
  436. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +13 -0
  437. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js.map +1 -0
  438. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -0
  439. package/dist/test/sort-filter-bar/alpha-bar.test.js +74 -0
  440. package/dist/test/sort-filter-bar/alpha-bar.test.js.map +1 -0
  441. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -0
  442. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +609 -0
  443. package/dist/test/sort-filter-bar/sort-filter-bar.test.js.map +1 -0
  444. package/dist/test/text-overlay.test.d.ts +1 -0
  445. package/dist/test/text-overlay.test.js +42 -0
  446. package/dist/test/text-overlay.test.js.map +1 -0
  447. package/dist/test/text-snippet-block.test.d.ts +1 -0
  448. package/dist/test/text-snippet-block.test.js +63 -0
  449. package/dist/test/text-snippet-block.test.js.map +1 -0
  450. package/dist/test/tile-stats.test.d.ts +1 -0
  451. package/dist/test/tile-stats.test.js +128 -0
  452. package/dist/test/tile-stats.test.js.map +1 -0
  453. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -0
  454. package/dist/test/tiles/grid/account-tile.test.js +96 -0
  455. package/dist/test/tiles/grid/account-tile.test.js.map +1 -0
  456. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -0
  457. package/dist/test/tiles/grid/collection-tile.test.js +96 -0
  458. package/dist/test/tiles/grid/collection-tile.test.js.map +1 -0
  459. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -0
  460. package/dist/test/tiles/grid/item-tile.test.js +427 -0
  461. package/dist/test/tiles/grid/item-tile.test.js.map +1 -0
  462. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -0
  463. package/dist/test/tiles/grid/search-tile.test.js +66 -0
  464. package/dist/test/tiles/grid/search-tile.test.js.map +1 -0
  465. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -0
  466. package/dist/test/tiles/hover/hover-pane-controller.test.js +329 -0
  467. package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -0
  468. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -0
  469. package/dist/test/tiles/hover/tile-hover-pane.test.js +57 -0
  470. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -0
  471. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -0
  472. package/dist/test/tiles/list/tile-list-compact.test.js +251 -0
  473. package/dist/test/tiles/list/tile-list-compact.test.js.map +1 -0
  474. package/dist/test/tiles/list/tile-list.test.d.ts +1 -0
  475. package/dist/test/tiles/list/tile-list.test.js +469 -0
  476. package/dist/test/tiles/list/tile-list.test.js.map +1 -0
  477. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -0
  478. package/dist/test/tiles/tile-dispatcher.test.js +231 -0
  479. package/dist/test/tiles/tile-dispatcher.test.js.map +1 -0
  480. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -0
  481. package/dist/test/tiles/tile-display-value-provider.test.js +142 -0
  482. package/dist/test/tiles/tile-display-value-provider.test.js.map +1 -0
  483. package/dist/test/tiles/tile-mediatype-icon.test.d.ts +1 -0
  484. package/dist/test/tiles/tile-mediatype-icon.test.js +145 -0
  485. package/dist/test/tiles/tile-mediatype-icon.test.js.map +1 -0
  486. package/dist/test/utils/array-equals.test.d.ts +1 -0
  487. package/dist/test/utils/array-equals.test.js +27 -0
  488. package/dist/test/utils/array-equals.test.js.map +1 -0
  489. package/dist/test/utils/format-count.test.d.ts +1 -0
  490. package/dist/test/utils/format-count.test.js +24 -0
  491. package/dist/test/utils/format-count.test.js.map +1 -0
  492. package/dist/test/utils/format-date.test.d.ts +1 -0
  493. package/dist/test/utils/format-date.test.js +61 -0
  494. package/dist/test/utils/format-date.test.js.map +1 -0
  495. package/dist/test/utils/format-unit-size.test.d.ts +1 -0
  496. package/dist/test/utils/format-unit-size.test.js +18 -0
  497. package/dist/test/utils/format-unit-size.test.js.map +1 -0
  498. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -0
  499. package/dist/test/utils/local-date-from-utc.test.js +27 -0
  500. package/dist/test/utils/local-date-from-utc.test.js.map +1 -0
  501. package/eslint.config.mjs +53 -53
  502. package/index.html +24 -24
  503. package/local.archive.org.cert +86 -86
  504. package/local.archive.org.key +27 -27
  505. package/package.json +118 -117
  506. package/renovate.json +6 -6
  507. package/src/collection-browser.ts +2829 -2829
  508. package/src/collection-facets/more-facets-content.ts +639 -639
  509. package/src/collection-facets.ts +994 -995
  510. package/src/data-source/collection-browser-data-source.ts +1401 -1401
  511. package/src/data-source/collection-browser-query-state.ts +65 -65
  512. package/src/data-source/models.ts +43 -43
  513. package/src/tiles/base-tile-component.ts +65 -65
  514. package/src/tiles/grid/account-tile.ts +113 -113
  515. package/src/tiles/grid/collection-tile.ts +163 -163
  516. package/src/tiles/grid/item-tile.ts +340 -340
  517. package/src/tiles/hover/hover-pane-controller.ts +613 -517
  518. package/src/tiles/hover/tile-hover-pane.ts +184 -180
  519. package/src/tiles/list/tile-list-compact.ts +239 -239
  520. package/src/tiles/list/tile-list.ts +700 -700
  521. package/src/tiles/tile-dispatcher.ts +517 -490
  522. package/src/utils/format-date.ts +62 -62
  523. package/test/collection-browser.test.ts +2403 -2403
  524. package/test/tiles/grid/item-tile.test.ts +520 -520
  525. package/test/tiles/hover/hover-pane-controller.test.ts +418 -353
  526. package/test/tiles/list/tile-list-compact.test.ts +282 -282
  527. package/test/tiles/list/tile-list.test.ts +552 -552
  528. package/test/tiles/tile-dispatcher.test.ts +283 -187
  529. package/test/utils/format-date.test.ts +89 -89
  530. package/tsconfig.json +20 -20
  531. package/web-dev-server.config.mjs +30 -30
  532. package/web-test-runner.config.mjs +41 -41
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facet-utils.js","sourceRoot":"","sources":["../../../src/utils/facet-utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { AggregationSortType } from '@internetarchive/search-service';\nimport {\n FacetOption,\n getDefaultSelectedFacets,\n type FacetBucket,\n type SelectedFacets,\n} from '../models';\n\n// This file contains several helper functions designed to make working immutably\n// with SelectedFacet objects and FacetGroups cleaner & easier.\n\n/**\n * Calls the given function for each FacetBucket specified in the given SelectedFacets\n * object. The function is always called with the facet type, bucket key, bucket object,\n * and the given SelectedFacets object.\n *\n * @param selectedFacets The SelectedFacets object whose buckets should be iterated over\n * @param fn The function to apply to each facet bucket.\n *\n * @example\n * forEachFacetBucket(\n * myFacets,\n * (facetType, bucketKey, bucket) => {\n * if (facetType === 'collection' && bucket.state === 'hidden') {\n * console.log(`Excluding any results in the ${bucketKey} collection`);\n * }\n * }\n * );\n */\nexport function forEachFacetBucket(\n selectedFacets: SelectedFacets | undefined,\n fn: (\n facetType: FacetOption,\n bucketKey: string,\n bucket: FacetBucket,\n selectedFacets: SelectedFacets,\n ) => unknown,\n): void {\n if (!selectedFacets) return;\n for (const [facetType, facetBuckets] of Object.entries(selectedFacets)) {\n for (const [bucketKey, bucket] of Object.entries(facetBuckets)) {\n fn(facetType as FacetOption, bucketKey, bucket, selectedFacets);\n }\n }\n}\n\n/**\n * Returns a new SelectedFacets object having only the specified bucket changed to\n * reflect its new provided value. The bucket key is determined from the provided\n * `bucket` itself.\n * @param selectedFacets The SelectedFacets object to produce an updated clone of\n * @param facetType The type of facet to be modified (e.g., 'mediatype', 'subject', ...)\n * @param bucket The new bucket that should be present on the result\n * @param omitNoneState If set to true, the returned object will omit the given\n * bucket entirely if it is updated to state `'none'`. Default is false, which leaves\n * the `'none'` state in place.\n */\nexport function updateSelectedFacetBucket(\n selectedFacets: SelectedFacets | undefined,\n facetType: FacetOption,\n bucket: FacetBucket,\n omitNoneState = false,\n): SelectedFacets {\n const defaultedSelectedFacets = selectedFacets ?? getDefaultSelectedFacets();\n const newFacets: SelectedFacets = {\n ...defaultedSelectedFacets,\n [facetType]: {\n ...defaultedSelectedFacets[facetType],\n [bucket.key]: bucket,\n },\n };\n\n if (omitNoneState && bucket.state === 'none') {\n delete newFacets[facetType]?.[bucket.key];\n }\n\n return newFacets;\n}\n\n/**\n * Creates a clone of the given SelectedFacets object.\n *\n * Note that the underlying FacetBucket objects are not deep-cloned -- they will\n * be references to the same objects as in the input. However, the objects\n * containing the FacetBuckets for each FacetOption are created anew.\n *\n * If the provided argument is undefined, returns an empty SelectedFacets object.\n *\n * @param selectedFacets The SelectedFacets object to be cloned\n */\nexport function cloneSelectedFacets(\n selectedFacets: SelectedFacets | undefined,\n): SelectedFacets {\n const cloneResult = getDefaultSelectedFacets();\n forEachFacetBucket(selectedFacets, (facetType, bucketKey, bucket) => {\n if (!cloneResult[facetType]) cloneResult[facetType] = {};\n cloneResult[facetType][bucketKey] = bucket;\n });\n return cloneResult;\n}\n\n/**\n * Creates a new SelectedFacets object representing a merge of the `source` facets object\n * into the `destination` facets object. Any facets existing in `source` take precedence\n * over those in `destination` in the event of conflicts.\n *\n * The resulting SelectedFacets object is normalized to omit any facet buckets whose\n * state is `'none'` in the merged result. Consequently, any facets buckets with state\n * `'none'` in `source` will always be absent from the end result. Likewise, any facet\n * buckets with state `'none'` in `destination` will be absent _unless_ they are also\n * present in `source` with a state of `'selected'` or `'hidden'` (in which case `source`\n * takes precedence as usual).\n *\n * @param source The source of the new facets to merge in. Any facet buckets existing in\n * this `source` object will take precedence over those in `destination` having the same\n * key, if they exist in both. Any facet buckets that are _not_ present in `source` will\n * remain unmodified from their state in `destination`, if they are present there at all.\n * @param destination The destination onto which facets should be merged. Note that this\n * object is _not_ re-used for the return value, but it is conceptually the \"existing base\"\n * onto which the source facets are merged.\n */\nexport function mergeSelectedFacets(\n destination: SelectedFacets | undefined,\n source: SelectedFacets | undefined,\n): SelectedFacets {\n const mergeResult = cloneSelectedFacets(destination);\n forEachFacetBucket(source, (facetType, bucketKey, bucket) => {\n if (!mergeResult[facetType]) mergeResult[facetType] = {};\n mergeResult[facetType][bucketKey] = bucket;\n });\n\n // Normalize any 'none' states on the result (from either source or destination)\n forEachFacetBucket(mergeResult, (facetType, bucketKey, bucket) => {\n if (bucket.state === 'none') {\n delete mergeResult[facetType]?.[bucketKey];\n }\n });\n\n return mergeResult;\n}\n\n/**\n * Defines the order of states in which to display SelectedFacets buckets\n */\nconst BUCKET_STATE_ORDER = ['selected', 'hidden', 'none'];\n\n/**\n * Sorts the provided FacetBuckets so that:\n * - Any selected items come first\n * - Any hidden items come after all the selected items\n * - Any unselected / unhidden items come last\n *\n * Within each of the above groups, the buckets will be sorted according to\n * the provided sort type, or by their bucket count by default.\n *\n * The sort is performed in-place using `Array.sort`, so the return value is\n * a reference to the same array that was passed in, only sorted.\n *\n * @param buckets The array of facet buckets to sort\n * @param sort (Optional) How buckets within each state group should be sorted.\n * Defaults to `AggregationSortType.COUNT` (i.e., descending by bucket count).\n */\nexport function sortBucketsBySelectionState(\n buckets: FacetBucket[],\n sort = AggregationSortType.COUNT,\n) {\n return buckets.sort((a, b) => {\n const aStateIndex = BUCKET_STATE_ORDER.indexOf(a.state);\n const bStateIndex = BUCKET_STATE_ORDER.indexOf(b.state);\n const stateDiff = aStateIndex - bStateIndex; // Sort bucket states primarily in the order defined by BUCKET_STATE_ORDER\n\n let secondaryDiff;\n if (sort === AggregationSortType.ALPHABETICAL) {\n secondaryDiff = a.key.localeCompare(b.key); // Ascending alphabetically by bucket key\n } else if (sort === AggregationSortType.NUMERIC) {\n secondaryDiff = Number(b.key) - Number(a.key); // Descending numerically by bucket key\n } else {\n secondaryDiff = b.count - a.count; // Descending by bucket count\n }\n\n return stateDiff || secondaryDiff; // Primary sort on state, secondary sort on the given sort type (defaulting to descending count)\n });\n}\n"]}
@@ -0,0 +1,7 @@
1
+ export type NumberFormat = 'short' | 'long';
2
+ export type LabelFormat = 'short' | 'long';
3
+ /**
4
+ * Format a "count" number into short "icon" or longer text string.
5
+ * For positive numbers only.
6
+ */
7
+ export declare function formatCount(count: number | undefined, numberFormat?: NumberFormat, labelFormat?: LabelFormat, locale?: string): string;
@@ -0,0 +1,76 @@
1
+ /*
2
+ * Replaces Petabox www/common/Util::number_format()
3
+ * For positive numbers only.
4
+ */
5
+ import { msg, str } from '@lit/localize';
6
+ /**
7
+ * Return the magnitude of a number.
8
+ */
9
+ function magnitude(number, numberFormat) {
10
+ let divisor = 1;
11
+ if (number >= 1000000000) {
12
+ divisor = 1000000000;
13
+ }
14
+ else if (number >= 1000000) {
15
+ divisor = 1000000;
16
+ }
17
+ else if (number >= 1000 && numberFormat === 'short') {
18
+ divisor = 1000;
19
+ }
20
+ return divisor;
21
+ }
22
+ /**
23
+ * Round a number given passed magnitude.
24
+ * Significant digits of value less than 10 get a decimal.
25
+ */
26
+ function round(number = 0, divisor) {
27
+ const result = number / divisor;
28
+ const roundToOne = result < 10;
29
+ let rounded = 0;
30
+ if (roundToOne) {
31
+ rounded = Math.round((result + Number.EPSILON) * 10) / 10;
32
+ }
33
+ else {
34
+ rounded = Math.round(result);
35
+ }
36
+ return rounded;
37
+ }
38
+ /**
39
+ * Return a label for a number and format.
40
+ */
41
+ function labelize(rounded, divisor, format, locale) {
42
+ switch (divisor) {
43
+ case 1000000000:
44
+ if (format === 'short') {
45
+ return msg(str `${rounded}B`);
46
+ }
47
+ return msg(str `${rounded} billion`);
48
+ case 1000000:
49
+ if (format === 'short') {
50
+ return msg(str `${rounded}M`);
51
+ }
52
+ return msg(str `${rounded} million`);
53
+ case 1000:
54
+ if (format === 'short') {
55
+ return msg(str `${rounded}K`);
56
+ }
57
+ return msg(str `${rounded} thousand`);
58
+ default:
59
+ return new Intl.NumberFormat(locale).format(rounded);
60
+ }
61
+ }
62
+ /**
63
+ * Format a "count" number into short "icon" or longer text string.
64
+ * For positive numbers only.
65
+ */
66
+ export function formatCount(count, numberFormat = 'long', labelFormat = 'short', locale = 'en-US') {
67
+ // Return blank if undefined
68
+ const number = count !== null && count !== void 0 ? count : -1;
69
+ if (number < 0) {
70
+ return '';
71
+ }
72
+ const divisor = magnitude(number, numberFormat);
73
+ const rounded = round(number, divisor);
74
+ return labelize(rounded, divisor, labelFormat, locale);
75
+ }
76
+ //# sourceMappingURL=format-count.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-count.js","sourceRoot":"","sources":["../../../src/utils/format-count.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAUzC;;GAEG;AACH,SAAS,SAAS,CAAC,MAAc,EAAE,YAA0B;IAC3D,IAAI,OAAO,GAAY,CAAC,CAAC;IACzB,IAAI,MAAM,IAAI,UAAa,EAAE,CAAC;QAC5B,OAAO,GAAG,UAAa,CAAC;IAC1B,CAAC;SAAM,IAAI,MAAM,IAAI,OAAS,EAAE,CAAC;QAC/B,OAAO,GAAG,OAAS,CAAC;IACtB,CAAC;SAAM,IAAI,MAAM,IAAI,IAAK,IAAI,YAAY,KAAK,OAAO,EAAE,CAAC;QACvD,OAAO,GAAG,IAAK,CAAC;IAClB,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,SAAiB,CAAC,EAAE,OAAgB;IACjD,MAAM,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAChC,MAAM,UAAU,GAAG,MAAM,GAAG,EAAE,CAAC;IAC/B,IAAI,OAAO,GAAW,CAAC,CAAC;IACxB,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CACf,OAAe,EACf,OAAgB,EAChB,MAAmB,EACnB,MAAc;IAEd,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAa;YAChB,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,UAAU,CAAC,CAAC;QACtC,KAAK,OAAS;YACZ,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,UAAU,CAAC,CAAC;QACtC,KAAK,IAAK;YACR,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,GAAG,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,GAAG,CAAC,GAAG,CAAA,GAAG,OAAO,WAAW,CAAC,CAAC;QAEvC;YACE,OAAO,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CACzB,KAAyB,EACzB,eAA6B,MAAM,EACnC,cAA2B,OAAO,EAClC,SAAiB,OAAO;IAExB,4BAA4B;IAC5B,MAAM,MAAM,GAAG,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,CAAC,CAAC,CAAC;IAC3B,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,OAAO,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC","sourcesContent":["/*\n * Replaces Petabox www/common/Util::number_format()\n * For positive numbers only.\n */\nimport { msg, str } from '@lit/localize';\n\nexport type NumberFormat =\n | 'short' // 1.2 [K | thousand]\n | 'long'; // 1,200 [No label for numbers < 1,000,000]\nexport type LabelFormat =\n | 'short' // [1.2]K\n | 'long'; // [1.2] thousand\ntype Divisor = 1_000_000_000 | 1_000_000 | 1_000 | 1;\n\n/**\n * Return the magnitude of a number.\n */\nfunction magnitude(number: number, numberFormat: NumberFormat): Divisor {\n let divisor: Divisor = 1;\n if (number >= 1_000_000_000) {\n divisor = 1_000_000_000;\n } else if (number >= 1_000_000) {\n divisor = 1_000_000;\n } else if (number >= 1_000 && numberFormat === 'short') {\n divisor = 1_000;\n }\n return divisor;\n}\n\n/**\n * Round a number given passed magnitude.\n * Significant digits of value less than 10 get a decimal.\n */\nfunction round(number: number = 0, divisor: Divisor): number {\n const result = number / divisor;\n const roundToOne = result < 10;\n let rounded: number = 0;\n if (roundToOne) {\n rounded = Math.round((result + Number.EPSILON) * 10) / 10;\n } else {\n rounded = Math.round(result);\n }\n return rounded;\n}\n\n/**\n * Return a label for a number and format.\n */\nfunction labelize(\n rounded: number,\n divisor: Divisor,\n format: LabelFormat,\n locale: string,\n): string {\n switch (divisor) {\n case 1_000_000_000:\n if (format === 'short') {\n return msg(str`${rounded}B`);\n }\n return msg(str`${rounded} billion`);\n case 1_000_000:\n if (format === 'short') {\n return msg(str`${rounded}M`);\n }\n return msg(str`${rounded} million`);\n case 1_000:\n if (format === 'short') {\n return msg(str`${rounded}K`);\n }\n return msg(str`${rounded} thousand`);\n\n default:\n return new Intl.NumberFormat(locale).format(rounded);\n }\n}\n\n/**\n * Format a \"count\" number into short \"icon\" or longer text string.\n * For positive numbers only.\n */\nexport function formatCount(\n count: number | undefined,\n numberFormat: NumberFormat = 'long',\n labelFormat: LabelFormat = 'short',\n locale: string = 'en-US',\n): string {\n // Return blank if undefined\n const number = count ?? -1;\n if (number < 0) {\n return '';\n }\n const divisor = magnitude(number, numberFormat);\n const rounded = round(number, divisor);\n return labelize(rounded, divisor, labelFormat, locale);\n}\n"]}
@@ -0,0 +1,16 @@
1
+ export type DateFormat = 'year-only' | 'short' | 'long';
2
+ /**
3
+ * Extra options accepted by the `formatDate` function
4
+ */
5
+ export type FormatDateOptions = {
6
+ /**
7
+ * Which locale to format the date string for (default `'en-US'`)
8
+ */
9
+ locale?: string;
10
+ /**
11
+ * Whether to display the date in the browser's local time zone.
12
+ * Default is `false`, displaying the dates in UTC.
13
+ */
14
+ useLocalTime?: boolean;
15
+ };
16
+ export declare function formatDate(date: Date | undefined, format?: DateFormat, { locale, useLocalTime }?: FormatDateOptions): string;
@@ -0,0 +1,33 @@
1
+ export function formatDate(date, format = 'short', { locale = 'en-US', useLocalTime = false } = {}) {
2
+ // Return blank if undefined
3
+ if (!date)
4
+ return '';
5
+ // The dates provided by the backend are assumed to already be with respect to UTC,
6
+ // and by default we specify that they should be rendered as such. If the
7
+ // `useLocalTime` option was set, we omit the UTC time zone from our format options
8
+ // so that the browser's local time zone is used instead.
9
+ const options = useLocalTime
10
+ ? {}
11
+ : { timeZone: 'UTC' };
12
+ switch (format) {
13
+ case 'year-only':
14
+ // If we're only using the year, ensure we output the correct UTC year and not
15
+ // the local year. If the local timezone is used, we can get strange off-by-one
16
+ // errors due to quirks of timezone handling for older years.
17
+ return `${date.getUTCFullYear()}`;
18
+ case 'short':
19
+ options.month = 'short';
20
+ options.year = 'numeric';
21
+ break;
22
+ case 'long':
23
+ options.year = 'numeric';
24
+ options.month = 'short';
25
+ options.day = '2-digit';
26
+ break;
27
+ default:
28
+ break;
29
+ }
30
+ const dateFormatter = new Intl.DateTimeFormat(locale, options);
31
+ return dateFormatter.format(date);
32
+ }
33
+ //# sourceMappingURL=format-date.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-date.js","sourceRoot":"","sources":["../../../src/utils/format-date.ts"],"names":[],"mappings":"AAwBA,MAAM,UAAU,UAAU,CACxB,IAAsB,EACtB,SAAqB,OAAO,EAC5B,EAAE,MAAM,GAAG,OAAO,EAAE,YAAY,GAAG,KAAK,KAAwB,EAAE;IAElE,4BAA4B;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,mFAAmF;IACnF,yEAAyE;IACzE,mFAAmF;IACnF,yDAAyD;IACzD,MAAM,OAAO,GAA+B,YAAY;QACtD,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;IAExB,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,WAAW;YACd,8EAA8E;YAC9E,+EAA+E;YAC/E,6DAA6D;YAC7D,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;QACpC,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;YACxB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YACzB,MAAM;QACR,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;YACxB,OAAO,CAAC,GAAG,GAAG,SAAS,CAAC;YACxB,MAAM;QACR;YACE,MAAM;IACV,CAAC;IAED,MAAM,aAAa,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/D,OAAO,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC","sourcesContent":["/*\r\n * Display date\r\n * Override browser timezone to always display same date as in data\r\n */\r\nexport type DateFormat =\r\n | 'year-only' // 2020\r\n | 'short' // Dec 2020\r\n | 'long'; // Dec 20, 2020\r\n\r\n/**\r\n * Extra options accepted by the `formatDate` function\r\n */\r\nexport type FormatDateOptions = {\r\n /**\r\n * Which locale to format the date string for (default `'en-US'`)\r\n */\r\n locale?: string;\r\n /**\r\n * Whether to display the date in the browser's local time zone.\r\n * Default is `false`, displaying the dates in UTC.\r\n */\r\n useLocalTime?: boolean;\r\n};\r\n\r\nexport function formatDate(\r\n date: Date | undefined,\r\n format: DateFormat = 'short',\r\n { locale = 'en-US', useLocalTime = false }: FormatDateOptions = {},\r\n): string {\r\n // Return blank if undefined\r\n if (!date) return '';\r\n\r\n // The dates provided by the backend are assumed to already be with respect to UTC,\r\n // and by default we specify that they should be rendered as such. If the\r\n // `useLocalTime` option was set, we omit the UTC time zone from our format options\r\n // so that the browser's local time zone is used instead.\r\n const options: Intl.DateTimeFormatOptions = useLocalTime\r\n ? {}\r\n : { timeZone: 'UTC' };\r\n\r\n switch (format) {\r\n case 'year-only':\r\n // If we're only using the year, ensure we output the correct UTC year and not\r\n // the local year. If the local timezone is used, we can get strange off-by-one\r\n // errors due to quirks of timezone handling for older years.\r\n return `${date.getUTCFullYear()}`;\r\n case 'short':\r\n options.month = 'short';\r\n options.year = 'numeric';\r\n break;\r\n case 'long':\r\n options.year = 'numeric';\r\n options.month = 'short';\r\n options.day = '2-digit';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n const dateFormatter = new Intl.DateTimeFormat(locale, options);\r\n return dateFormatter.format(date);\r\n}\r\n"]}
@@ -0,0 +1,2 @@
1
+ import { nothing } from 'lit';
2
+ export declare function formatUnitSize(size: number | undefined, nDecimals: number, separator?: string): string | typeof nothing;
@@ -0,0 +1,34 @@
1
+ /*
2
+ * Replaces Petabox www/common/Util::humanSize()
3
+ */
4
+ import { nothing } from 'lit';
5
+ var unitSizes;
6
+ (function (unitSizes) {
7
+ unitSizes[unitSizes["bytes"] = 0] = "bytes";
8
+ unitSizes[unitSizes["kilobytes"] = 1] = "kilobytes";
9
+ unitSizes[unitSizes["megabytes"] = 2] = "megabytes";
10
+ unitSizes[unitSizes["gigabytes"] = 3] = "gigabytes";
11
+ unitSizes[unitSizes["terabytes"] = 4] = "terabytes";
12
+ unitSizes[unitSizes["petabytes"] = 5] = "petabytes";
13
+ unitSizes[unitSizes["exabytes"] = 6] = "exabytes";
14
+ unitSizes[unitSizes["zettabytes"] = 7] = "zettabytes";
15
+ unitSizes[unitSizes["yottabytes"] = 8] = "yottabytes";
16
+ })(unitSizes || (unitSizes = {}));
17
+ export function formatUnitSize(size, nDecimals, separator = ' ') {
18
+ let itemSize = size;
19
+ if (itemSize === undefined)
20
+ return nothing; // early return.
21
+ let unitIndex = 0;
22
+ // convert byte to highest possible unit
23
+ while (itemSize > 1024) {
24
+ itemSize /= 1024;
25
+ unitIndex += 1;
26
+ }
27
+ const magnitude = 10 ** nDecimals;
28
+ itemSize = Math.round(itemSize * magnitude) / magnitude;
29
+ let unitText = unitSizes[unitIndex];
30
+ // convert plural to singular.
31
+ unitText = itemSize === 1 ? unitText.slice(0, -1) : unitText;
32
+ return `${itemSize.toLocaleString() + separator + unitText}`;
33
+ }
34
+ //# sourceMappingURL=format-unit-size.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-unit-size.js","sourceRoot":"","sources":["../../../src/utils/format-unit-size.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAE9B,IAAK,SAUJ;AAVD,WAAK,SAAS;IACZ,2CAAO,CAAA;IACP,mDAAW,CAAA;IACX,mDAAW,CAAA;IACX,mDAAW,CAAA;IACX,mDAAW,CAAA;IACX,mDAAW,CAAA;IACX,iDAAU,CAAA;IACV,qDAAY,CAAA;IACZ,qDAAY,CAAA;AACd,CAAC,EAVI,SAAS,KAAT,SAAS,QAUb;AAED,MAAM,UAAU,cAAc,CAC5B,IAAwB,EACxB,SAAiB,EACjB,YAAoB,GAAG;IAEvB,IAAI,QAAQ,GAAG,IAAI,CAAC;IACpB,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC,CAAC,gBAAgB;IAE5D,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,wCAAwC;IACxC,OAAO,QAAQ,GAAG,IAAI,EAAE,CAAC;QACvB,QAAQ,IAAI,IAAI,CAAC;QACjB,SAAS,IAAI,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,SAAS,GAAG,EAAE,IAAI,SAAS,CAAC;IAClC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,SAAS,CAAC;IAExD,IAAI,QAAQ,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAEpC,8BAA8B;IAC9B,QAAQ,GAAG,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IAE7D,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,GAAG,SAAS,GAAG,QAAQ,EAAE,CAAC;AAC/D,CAAC","sourcesContent":["/*\n * Replaces Petabox www/common/Util::humanSize()\n */\nimport { nothing } from 'lit';\n\nenum unitSizes {\n 'bytes',\n 'kilobytes',\n 'megabytes',\n 'gigabytes',\n 'terabytes',\n 'petabytes',\n 'exabytes',\n 'zettabytes',\n 'yottabytes',\n}\n\nexport function formatUnitSize(\n size: number | undefined,\n nDecimals: number,\n separator: string = ' ',\n) {\n let itemSize = size;\n if (itemSize === undefined) return nothing; // early return.\n\n let unitIndex = 0;\n\n // convert byte to highest possible unit\n while (itemSize > 1024) {\n itemSize /= 1024;\n unitIndex += 1;\n }\n\n const magnitude = 10 ** nDecimals;\n itemSize = Math.round(itemSize * magnitude) / magnitude;\n\n let unitText = unitSizes[unitIndex];\n\n // convert plural to singular.\n unitText = itemSize === 1 ? unitText.slice(0, -1) : unitText;\n\n return `${itemSize.toLocaleString() + separator + unitText}`;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Converts a given UTC date into the equivalent local-timestamp one.
3
+ */
4
+ export declare function localDateFromUTC(date: Date): Date;
5
+ /**
6
+ * Returns whether a given UTC date corresponds to the first
7
+ * millisecond of the year (e.g., Jan 1 at exactly midnight).
8
+ */
9
+ export declare function isFirstMillisecondOfUTCYear(date?: Date): boolean;
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Converts a given UTC date into the equivalent local-timestamp one.
3
+ */
4
+ export function localDateFromUTC(date) {
5
+ return new Date(date.getTime() - date.getTimezoneOffset() * 1000 * 60);
6
+ }
7
+ /**
8
+ * Returns whether a given UTC date corresponds to the first
9
+ * millisecond of the year (e.g., Jan 1 at exactly midnight).
10
+ */
11
+ export function isFirstMillisecondOfUTCYear(date) {
12
+ if (!date)
13
+ return false;
14
+ return date.toISOString().endsWith('-01-01T00:00:00.000Z');
15
+ }
16
+ //# sourceMappingURL=local-date-from-utc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-date-from-utc.js","sourceRoot":"","sources":["../../../src/utils/local-date-from-utc.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAU;IACzC,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,iBAAiB,EAAE,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,IAAW;IACrD,IAAI,CAAC,IAAI;QAAE,OAAO,KAAK,CAAC;IACxB,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAC;AAC7D,CAAC","sourcesContent":["/**\n * Converts a given UTC date into the equivalent local-timestamp one.\n */\nexport function localDateFromUTC(date: Date): Date {\n return new Date(date.getTime() - date.getTimezoneOffset() * 1000 * 60);\n}\n\n/**\n * Returns whether a given UTC date corresponds to the first\n * millisecond of the year (e.g., Jan 1 at exactly midnight).\n */\nexport function isFirstMillisecondOfUTCYear(date?: Date): boolean {\n if (!date) return false;\n return date.toISOString().endsWith('-01-01T00:00:00.000Z');\n}\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * console.log() utility -- production ignores 'log()' JS calls; dev invokes 'console.log()'
3
+ */
4
+ export declare const log: {
5
+ (...data: any[]): void;
6
+ (message?: any, ...optionalParams: any[]): void;
7
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * console.log() utility -- production ignores 'log()' JS calls; dev invokes 'console.log()'
3
+ */
4
+ export const log = window.location &&
5
+ (window.location.hostname === 'localhost' ||
6
+ window.location.host.match(/^(www|cat)-[a-z0-9]+\.archive\.org$/) ||
7
+ window.location.host.match(/\.code\.archive\.org$/) ||
8
+ window.location.host.match(/\.dev\.archive\.org$/) ||
9
+ window.location.host.match(/^ia-petabox-/) ||
10
+ window.location.host.match(/^local\.archive\.org/) ||
11
+ window.location.host.match(/^internetarchive\.github\.io$/))
12
+ ? console.log.bind(console) // convenient, no? Stateless function
13
+ : () => { };
14
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../../src/utils/log.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,GAAG,GACd,MAAM,CAAC,QAAQ;IACf,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,WAAW;QACvC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,qCAAqC,CAAC;QACjE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC;QACnD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC;QAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC5D,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,sCAAsC;IAClE,CAAC,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC","sourcesContent":["/**\n * console.log() utility -- production ignores 'log()' JS calls; dev invokes 'console.log()'\n */\nexport const log =\n window.location &&\n (window.location.hostname === 'localhost' ||\n window.location.host.match(/^(www|cat)-[a-z0-9]+\\.archive\\.org$/) ||\n window.location.host.match(/\\.code\\.archive\\.org$/) ||\n window.location.host.match(/\\.dev\\.archive\\.org$/) ||\n window.location.host.match(/^ia-petabox-/) ||\n window.location.host.match(/^local\\.archive\\.org/) ||\n window.location.host.match(/^internetarchive\\.github\\.io$/))\n ? console.log.bind(console) // convenient, no? Stateless function\n : () => {};\n"]}
@@ -0,0 +1,8 @@
1
+ import type { MediaType } from '@internetarchive/field-parsers';
2
+ import type { SearchResult } from '@internetarchive/search-service';
3
+ /**
4
+ * Returns the mediatype string for the given search result, taking into account
5
+ * the special `favorited_search` hit type.
6
+ * @param result The search result to extract a mediatype from
7
+ */
8
+ export declare function resolveMediatype(result: SearchResult): MediaType;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Returns the mediatype string for the given search result, taking into account
3
+ * the special `favorited_search` hit type.
4
+ * @param result The search result to extract a mediatype from
5
+ */
6
+ export function resolveMediatype(result) {
7
+ var _a, _b, _c;
8
+ /**
9
+ * hit_type == 'favorited_search' is basically a new hit_type
10
+ * - we are getting from PPS.
11
+ * - which gives response for fav- collection
12
+ * - having favorited items like account/collection/item etc..
13
+ * - as user can also favorite a search result (a search page)
14
+ * - so we need to have response (having fav- items and fav- search results)
15
+ *
16
+ * if backend hit_type == 'favorited_search'
17
+ * - let's assume a "search" as new mediatype
18
+ */
19
+ if (((_a = result === null || result === void 0 ? void 0 : result.rawMetadata) === null || _a === void 0 ? void 0 : _a.hit_type) === 'favorited_search') {
20
+ return 'search';
21
+ }
22
+ return (_c = (_b = result.mediatype) === null || _b === void 0 ? void 0 : _b.value) !== null && _c !== void 0 ? _c : 'data';
23
+ }
24
+ //# sourceMappingURL=resolve-mediatype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve-mediatype.js","sourceRoot":"","sources":["../../../src/utils/resolve-mediatype.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAoB;;IACnD;;;;;;;;;;OAUG;IACH,IAAI,CAAA,MAAA,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,WAAW,0CAAE,QAAQ,MAAK,kBAAkB,EAAE,CAAC;QACzD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,MAAA,MAAA,MAAM,CAAC,SAAS,0CAAE,KAAK,mCAAI,MAAM,CAAC;AAC3C,CAAC","sourcesContent":["import type { MediaType } from '@internetarchive/field-parsers';\nimport type { SearchResult } from '@internetarchive/search-service';\n\n/**\n * Returns the mediatype string for the given search result, taking into account\n * the special `favorited_search` hit type.\n * @param result The search result to extract a mediatype from\n */\nexport function resolveMediatype(result: SearchResult): MediaType {\n /**\n * hit_type == 'favorited_search' is basically a new hit_type\n * - we are getting from PPS.\n * - which gives response for fav- collection\n * - having favorited items like account/collection/item etc..\n * - as user can also favorite a search result (a search page)\n * - so we need to have response (having fav- items and fav- search results)\n *\n * if backend hit_type == 'favorited_search'\n * - let's assume a \"search\" as new mediatype\n */\n if (result?.rawMetadata?.hit_type === 'favorited_search') {\n return 'search';\n }\n\n return result.mediatype?.value ?? 'data';\n}\n"]}
@@ -0,0 +1,2 @@
1
+ /** Returns (asynchronously) the hex-encoded SHA-1 hash of the input string */
2
+ export declare function sha1(input: string): Promise<string>;
@@ -0,0 +1,9 @@
1
+ const encoder = new TextEncoder();
2
+ /** Returns (asynchronously) the hex-encoded SHA-1 hash of the input string */
3
+ export async function sha1(input) {
4
+ const hashBuffer = await crypto.subtle.digest('SHA-1', encoder.encode(input));
5
+ return [...new Uint8Array(hashBuffer)]
6
+ .map(byte => byte.toString(16).padStart(2, '0'))
7
+ .join('');
8
+ }
9
+ //# sourceMappingURL=sha1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sha1.js","sourceRoot":"","sources":["../../../src/utils/sha1.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;AAElC,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAa;IACtC,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC;SACnC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC/C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC","sourcesContent":["const encoder = new TextEncoder();\n\n/** Returns (asynchronously) the hex-encoded SHA-1 hash of the input string */\nexport async function sha1(input: string): Promise<string> {\n const hashBuffer = await crypto.subtle.digest('SHA-1', encoder.encode(input));\n return [...new Uint8Array(hashBuffer)]\n .map(byte => byte.toString(16).padStart(2, '0'))\n .join('');\n}\n"]}
@@ -0,0 +1 @@
1
+ import '../src/collection-browser';