@internetarchive/collection-browser 2.7.7 → 2.7.8-alpha1

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 (338) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +13 -13
  6. package/dist/index.js +13 -13
  7. package/dist/src/app-root.d.ts +107 -99
  8. package/dist/src/app-root.js +539 -505
  9. package/dist/src/app-root.js.map +1 -1
  10. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  11. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  13. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  14. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  15. package/dist/src/assets/img/icons/chevron.js +2 -2
  16. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  17. package/dist/src/assets/img/icons/contract.js +2 -2
  18. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  19. package/dist/src/assets/img/icons/empty-query.js +2 -2
  20. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  21. package/dist/src/assets/img/icons/expand.js +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  23. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  24. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  25. package/dist/src/assets/img/icons/eye.js +2 -2
  26. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  27. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  28. package/dist/src/assets/img/icons/favorite-unfilled.d.ts +1 -1
  29. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  30. package/dist/src/assets/img/icons/filter.d.ts +2 -2
  31. package/dist/src/assets/img/icons/filter.js +2 -2
  32. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  33. package/dist/src/assets/img/icons/login-required.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  56. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  57. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  58. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  59. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  60. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  61. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  62. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  63. package/dist/src/assets/img/icons/null-result.js +2 -2
  64. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  65. package/dist/src/assets/img/icons/restricted.js +2 -2
  66. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  67. package/dist/src/assets/img/icons/reviews.js +2 -2
  68. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  69. package/dist/src/assets/img/icons/upload.js +2 -2
  70. package/dist/src/assets/img/icons/views.d.ts +1 -1
  71. package/dist/src/assets/img/icons/views.js +2 -2
  72. package/dist/src/circular-activity-indicator.d.ts +5 -5
  73. package/dist/src/circular-activity-indicator.js +17 -17
  74. package/dist/src/collection-browser.d.ts +602 -582
  75. package/dist/src/collection-browser.js +1671 -1629
  76. package/dist/src/collection-browser.js.map +1 -1
  77. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  78. package/dist/src/collection-facets/facet-row.js +118 -118
  79. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  80. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  81. package/dist/src/collection-facets/facets-template.d.ts +13 -13
  82. package/dist/src/collection-facets/facets-template.js +44 -44
  83. package/dist/src/collection-facets/more-facets-content.d.ts +106 -106
  84. package/dist/src/collection-facets/more-facets-content.js +407 -407
  85. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  86. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  87. package/dist/src/collection-facets/smart-facets/dedupe.d.ts +10 -10
  88. package/dist/src/collection-facets/smart-facets/dedupe.js +33 -33
  89. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.d.ts +5 -5
  90. package/dist/src/collection-facets/smart-facets/heuristics/browser-language-heuristic.js +23 -23
  91. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.d.ts +5 -5
  92. package/dist/src/collection-facets/smart-facets/heuristics/query-keywords-heuristic.js +44 -44
  93. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.d.ts +5 -5
  94. package/dist/src/collection-facets/smart-facets/heuristics/wikidata-heuristic.js +172 -172
  95. package/dist/src/collection-facets/smart-facets/models.d.ts +26 -26
  96. package/dist/src/collection-facets/smart-facets/models.js +1 -1
  97. package/dist/src/collection-facets/smart-facets/smart-facet-bar.d.ts +31 -31
  98. package/dist/src/collection-facets/smart-facets/smart-facet-bar.js +240 -240
  99. package/dist/src/collection-facets/smart-facets/smart-facet-button.d.ts +11 -11
  100. package/dist/src/collection-facets/smart-facets/smart-facet-button.js +86 -86
  101. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.d.ts +16 -16
  102. package/dist/src/collection-facets/smart-facets/smart-facet-dropdown.js +100 -100
  103. package/dist/src/collection-facets/smart-facets/smart-facet-equals.d.ts +2 -2
  104. package/dist/src/collection-facets/smart-facets/smart-facet-equals.js +12 -12
  105. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.d.ts +5 -5
  106. package/dist/src/collection-facets/smart-facets/smart-facet-heuristics.js +15 -15
  107. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  108. package/dist/src/collection-facets/toggle-switch.js +94 -94
  109. package/dist/src/collection-facets.d.ts +103 -103
  110. package/dist/src/collection-facets.js +522 -522
  111. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +245 -241
  112. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  113. package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -1
  114. package/dist/src/data-source/collection-browser-data-source.d.ts +377 -373
  115. package/dist/src/data-source/collection-browser-data-source.js +995 -982
  116. package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
  117. package/dist/src/data-source/collection-browser-query-state.d.ts +44 -43
  118. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  119. package/dist/src/data-source/collection-browser-query-state.js.map +1 -1
  120. package/dist/src/data-source/models.d.ts +28 -28
  121. package/dist/src/data-source/models.js +8 -8
  122. package/dist/src/empty-placeholder.d.ts +23 -23
  123. package/dist/src/empty-placeholder.js +79 -79
  124. package/dist/src/expanded-date-picker.d.ts +43 -43
  125. package/dist/src/expanded-date-picker.js +109 -109
  126. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  127. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  128. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  129. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  130. package/dist/src/manage/manage-bar.d.ts +58 -35
  131. package/dist/src/manage/manage-bar.js +174 -80
  132. package/dist/src/manage/manage-bar.js.map +1 -1
  133. package/dist/src/manage/remove-items-modal-content.d.ts +9 -0
  134. package/dist/src/manage/remove-items-modal-content.js +104 -0
  135. package/dist/src/manage/remove-items-modal-content.js.map +1 -0
  136. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  137. package/dist/src/mediatype/mediatype-config.js +91 -91
  138. package/dist/src/models.d.ts +228 -219
  139. package/dist/src/models.js +401 -401
  140. package/dist/src/models.js.map +1 -1
  141. package/dist/src/restoration-state-handler.d.ts +70 -70
  142. package/dist/src/restoration-state-handler.js +363 -363
  143. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  144. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  145. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  146. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  147. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  148. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  149. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  150. package/dist/src/sort-filter-bar/img/list.js +2 -2
  151. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  152. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  153. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  154. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  155. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  156. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  157. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  158. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  159. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  160. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  161. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +223 -223
  162. package/dist/src/sort-filter-bar/sort-filter-bar.js +697 -697
  163. package/dist/src/styles/ia-button.d.ts +2 -2
  164. package/dist/src/styles/ia-button.js +17 -17
  165. package/dist/src/styles/item-image-styles.d.ts +8 -8
  166. package/dist/src/styles/item-image-styles.js +9 -9
  167. package/dist/src/styles/sr-only.d.ts +1 -1
  168. package/dist/src/styles/sr-only.js +2 -2
  169. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  170. package/dist/src/tiles/base-tile-component.js +64 -64
  171. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  172. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  173. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  174. package/dist/src/tiles/grid/account-tile.js +72 -72
  175. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  176. package/dist/src/tiles/grid/collection-tile.js +80 -80
  177. package/dist/src/tiles/grid/item-tile.d.ts +34 -34
  178. package/dist/src/tiles/grid/item-tile.js +158 -158
  179. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  180. package/dist/src/tiles/grid/search-tile.js +51 -51
  181. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  182. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  183. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  184. package/dist/src/tiles/grid/tile-stats.js +53 -53
  185. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  186. package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
  187. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -18
  188. package/dist/src/tiles/hover/tile-hover-pane.js +69 -69
  189. package/dist/src/tiles/image-block.d.ts +18 -18
  190. package/dist/src/tiles/image-block.js +89 -89
  191. package/dist/src/tiles/item-image.d.ts +39 -39
  192. package/dist/src/tiles/item-image.js +154 -154
  193. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  194. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  195. package/dist/src/tiles/list/tile-list-compact.d.ts +19 -19
  196. package/dist/src/tiles/list/tile-list-compact.js +122 -122
  197. package/dist/src/tiles/list/tile-list.d.ts +54 -54
  198. package/dist/src/tiles/list/tile-list.js +323 -323
  199. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  200. package/dist/src/tiles/mediatype-icon.js +47 -47
  201. package/dist/src/tiles/overlay/icon-overlay.d.ts +8 -8
  202. package/dist/src/tiles/overlay/icon-overlay.js +25 -25
  203. package/dist/src/tiles/overlay/text-overlay.d.ts +9 -9
  204. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  205. package/dist/src/tiles/review-block.d.ts +12 -12
  206. package/dist/src/tiles/review-block.js +56 -56
  207. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  208. package/dist/src/tiles/text-snippet-block.js +73 -73
  209. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  210. package/dist/src/tiles/tile-dispatcher.js +230 -230
  211. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  212. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  213. package/dist/src/utils/analytics-events.d.ts +28 -28
  214. package/dist/src/utils/analytics-events.js +30 -30
  215. package/dist/src/utils/array-equals.d.ts +4 -4
  216. package/dist/src/utils/array-equals.js +10 -10
  217. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  218. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  219. package/dist/src/utils/facet-utils.d.ts +83 -83
  220. package/dist/src/utils/facet-utils.js +145 -145
  221. package/dist/src/utils/format-count.d.ts +7 -7
  222. package/dist/src/utils/format-count.js +76 -76
  223. package/dist/src/utils/format-date.d.ts +2 -2
  224. package/dist/src/utils/format-date.js +27 -27
  225. package/dist/src/utils/format-unit-size.d.ts +2 -2
  226. package/dist/src/utils/format-unit-size.js +33 -33
  227. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  228. package/dist/src/utils/local-date-from-utc.js +15 -15
  229. package/dist/src/utils/log.d.ts +7 -7
  230. package/dist/src/utils/log.js +15 -15
  231. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  232. package/dist/src/utils/resolve-mediatype.js +23 -23
  233. package/dist/src/utils/sha1.d.ts +2 -2
  234. package/dist/src/utils/sha1.js +8 -8
  235. package/dist/test/collection-browser.test.d.ts +1 -1
  236. package/dist/test/collection-browser.test.js +1309 -1293
  237. package/dist/test/collection-browser.test.js.map +1 -1
  238. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  239. package/dist/test/collection-facets/facet-row.test.js +227 -227
  240. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  241. package/dist/test/collection-facets/facets-template.test.js +91 -91
  242. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  243. package/dist/test/collection-facets/more-facets-content.test.js +141 -141
  244. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  245. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  246. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  247. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  248. package/dist/test/collection-facets.test.d.ts +2 -2
  249. package/dist/test/collection-facets.test.js +690 -690
  250. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  251. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  252. package/dist/test/empty-placeholder.test.d.ts +1 -1
  253. package/dist/test/empty-placeholder.test.js +63 -63
  254. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  255. package/dist/test/expanded-date-picker.test.js +95 -95
  256. package/dist/test/icon-overlay.test.d.ts +1 -1
  257. package/dist/test/icon-overlay.test.js +24 -24
  258. package/dist/test/image-block.test.d.ts +1 -1
  259. package/dist/test/image-block.test.js +107 -107
  260. package/dist/test/item-image.test.d.ts +1 -1
  261. package/dist/test/item-image.test.js +85 -85
  262. package/dist/test/manage/manage-bar.test.d.ts +2 -1
  263. package/dist/test/manage/manage-bar.test.js +106 -91
  264. package/dist/test/manage/manage-bar.test.js.map +1 -1
  265. package/dist/test/manage/remove-items-modal-content.test.d.ts +1 -0
  266. package/dist/test/manage/remove-items-modal-content.test.js +66 -0
  267. package/dist/test/manage/remove-items-modal-content.test.js.map +1 -0
  268. package/dist/test/mediatype-config.test.d.ts +1 -1
  269. package/dist/test/mediatype-config.test.js +16 -16
  270. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  271. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  272. package/dist/test/mocks/mock-search-responses.d.ts +25 -25
  273. package/dist/test/mocks/mock-search-responses.js +942 -942
  274. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  275. package/dist/test/mocks/mock-search-service.js +54 -54
  276. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  277. package/dist/test/restoration-state-handler.test.js +270 -270
  278. package/dist/test/review-block.test.d.ts +1 -1
  279. package/dist/test/review-block.test.js +44 -44
  280. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  281. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  282. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  283. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  284. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  285. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  286. package/dist/test/text-overlay.test.d.ts +1 -1
  287. package/dist/test/text-overlay.test.js +38 -38
  288. package/dist/test/text-snippet-block.test.d.ts +1 -1
  289. package/dist/test/text-snippet-block.test.js +57 -57
  290. package/dist/test/tile-stats.test.d.ts +1 -1
  291. package/dist/test/tile-stats.test.js +81 -81
  292. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  293. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  294. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  295. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  296. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  297. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  298. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  299. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  300. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  301. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  302. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  303. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -56
  304. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  305. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  306. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  307. package/dist/test/tiles/list/tile-list.test.js +297 -297
  308. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  309. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  310. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  311. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  312. package/dist/test/utils/array-equals.test.d.ts +1 -1
  313. package/dist/test/utils/array-equals.test.js +26 -26
  314. package/dist/test/utils/format-count.test.d.ts +1 -1
  315. package/dist/test/utils/format-count.test.js +23 -23
  316. package/dist/test/utils/format-date.test.d.ts +1 -1
  317. package/dist/test/utils/format-date.test.js +30 -30
  318. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  319. package/dist/test/utils/format-unit-size.test.js +17 -17
  320. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  321. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  322. package/local.archive.org.cert +86 -86
  323. package/local.archive.org.key +27 -27
  324. package/package.json +1 -1
  325. package/renovate.json +6 -6
  326. package/src/app-root.ts +38 -4
  327. package/src/collection-browser.ts +66 -17
  328. package/src/data-source/collection-browser-data-source-interface.ts +5 -0
  329. package/src/data-source/collection-browser-data-source.ts +14 -0
  330. package/src/data-source/collection-browser-query-state.ts +1 -0
  331. package/src/manage/manage-bar.ts +120 -24
  332. package/src/manage/remove-items-modal-content.ts +102 -0
  333. package/src/models.ts +10 -0
  334. package/test/collection-browser.test.ts +23 -0
  335. package/test/manage/manage-bar.test.ts +41 -18
  336. package/test/manage/remove-items-modal-content.test.ts +82 -0
  337. package/web-dev-server.config.mjs +30 -30
  338. package/web-test-runner.config.mjs +41 -41
@@ -1,68 +1,68 @@
1
- var EmptyPlaceholder_1;
2
- import { __decorate } from "tslib";
3
- import { css, html, LitElement, nothing, } from 'lit';
4
- import { customElement, property } from 'lit/decorators.js';
5
- import { choose } from 'lit/directives/choose.js';
6
- import { msg } from '@lit/localize';
7
- import emptyQueryIcon from './assets/img/icons/empty-query';
8
- import nullResultIcon from './assets/img/icons/null-result';
9
- let EmptyPlaceholder = EmptyPlaceholder_1 = class EmptyPlaceholder extends LitElement {
10
- constructor() {
11
- super(...arguments);
12
- this.placeholderType = null;
13
- this.detailMessage = '';
14
- }
15
- render() {
16
- return this.placeholderType ? html `${this.placeholderTemplate}` : nothing;
17
- }
18
- get placeholderTemplate() {
1
+ var EmptyPlaceholder_1;
2
+ import { __decorate } from "tslib";
3
+ import { css, html, LitElement, nothing, } from 'lit';
4
+ import { customElement, property } from 'lit/decorators.js';
5
+ import { choose } from 'lit/directives/choose.js';
6
+ import { msg } from '@lit/localize';
7
+ import emptyQueryIcon from './assets/img/icons/empty-query';
8
+ import nullResultIcon from './assets/img/icons/null-result';
9
+ let EmptyPlaceholder = EmptyPlaceholder_1 = class EmptyPlaceholder extends LitElement {
10
+ constructor() {
11
+ super(...arguments);
12
+ this.placeholderType = null;
13
+ this.detailMessage = '';
14
+ }
15
+ render() {
16
+ return this.placeholderType ? html `${this.placeholderTemplate}` : nothing;
17
+ }
18
+ get placeholderTemplate() {
19
19
  return html `
20
20
  <div
21
- class="placeholder ${this.placeholderType} ${this.isMobileView
22
- ? 'mobile'
21
+ class="placeholder ${this.placeholderType} ${this.isMobileView
22
+ ? 'mobile'
23
23
  : 'desktop'}"
24
24
  >
25
- ${choose(this.placeholderType, [
26
- ['empty-query', () => this.emptyQueryTemplate],
27
- ['empty-collection', () => this.emptyCollectionTemplate],
28
- ['no-results', () => this.noResultsTemplate],
29
- ['query-error', () => this.queryErrorTemplate],
30
- ['collection-error', () => this.collectionErrorTemplate],
25
+ ${choose(this.placeholderType, [
26
+ ['empty-query', () => this.emptyQueryTemplate],
27
+ ['empty-collection', () => this.emptyCollectionTemplate],
28
+ ['no-results', () => this.noResultsTemplate],
29
+ ['query-error', () => this.queryErrorTemplate],
30
+ ['collection-error', () => this.collectionErrorTemplate],
31
31
  ])}
32
32
  </div>
33
- `;
34
- }
35
- get emptyQueryTemplate() {
36
- // Added data-testid for Playwright testing
33
+ `;
34
+ }
35
+ get emptyQueryTemplate() {
36
+ // Added data-testid for Playwright testing
37
37
  return html `
38
38
  <h2 class="title" data-testid="empty-query-text-msg">
39
39
  ${EmptyPlaceholder_1.MESSAGE_EMPTY_QUERY}
40
40
  </h2>
41
41
  <div>${emptyQueryIcon}</div>
42
- `;
43
- }
44
- get emptyCollectionTemplate() {
45
- // Added data-testid for Playwright testing
42
+ `;
43
+ }
44
+ get emptyCollectionTemplate() {
45
+ // Added data-testid for Playwright testing
46
46
  return html `
47
47
  <h2 class="title" data-testid="empty-collection-text-msg">
48
48
  ${EmptyPlaceholder_1.MESSAGE_NO_VIEWABLE_MEMBERS}
49
49
  </h2>
50
50
  <div>${nullResultIcon}</div>
51
- `;
52
- }
53
- get noResultsTemplate() {
54
- // Added data-testid for Playwright testing
51
+ `;
52
+ }
53
+ get noResultsTemplate() {
54
+ // Added data-testid for Playwright testing
55
55
  return html `
56
56
  <h2 class="title" data-testid="empty-results-text-msg">
57
- ${this.isCollection
58
- ? EmptyPlaceholder_1.MESSAGE_NO_COLLECTION_RESULTS
57
+ ${this.isCollection
58
+ ? EmptyPlaceholder_1.MESSAGE_NO_COLLECTION_RESULTS
59
59
  : EmptyPlaceholder_1.MESSAGE_NO_SEARCH_RESULTS}
60
60
  </h2>
61
61
  <div>${nullResultIcon}</div>
62
- `;
63
- }
64
- get queryErrorTemplate() {
65
- // Added data-testid for Playwright testing
62
+ `;
63
+ }
64
+ get queryErrorTemplate() {
65
+ // Added data-testid for Playwright testing
66
66
  return html `
67
67
  <h2 class="title" data-testid="error-query-text-msg">
68
68
  ${EmptyPlaceholder_1.MESSAGE_QUERY_ERROR}
@@ -71,10 +71,10 @@ let EmptyPlaceholder = EmptyPlaceholder_1 = class EmptyPlaceholder extends LitEl
71
71
  <p class="error-details">
72
72
  ${EmptyPlaceholder_1.QUERY_ERROR_DETAILS_MESSAGE} ${this.detailMessage}
73
73
  </p>
74
- `;
75
- }
76
- get collectionErrorTemplate() {
77
- // Added data-testid for Playwright testing
74
+ `;
75
+ }
76
+ get collectionErrorTemplate() {
77
+ // Added data-testid for Playwright testing
78
78
  return html `
79
79
  <h2 class="title" data-testid="error-collection-text-msg">
80
80
  ${EmptyPlaceholder_1.MESSAGE_COLLECTION_ERROR}
@@ -83,9 +83,9 @@ let EmptyPlaceholder = EmptyPlaceholder_1 = class EmptyPlaceholder extends LitEl
83
83
  <p class="error-details">
84
84
  ${EmptyPlaceholder_1.QUERY_ERROR_DETAILS_MESSAGE} ${this.detailMessage}
85
85
  </p>
86
- `;
87
- }
88
- static get styles() {
86
+ `;
87
+ }
88
+ static get styles() {
89
89
  return css `
90
90
  :host {
91
91
  text-align: center;
@@ -126,41 +126,41 @@ let EmptyPlaceholder = EmptyPlaceholder_1 = class EmptyPlaceholder extends LitEl
126
126
  font-size: 1.2rem;
127
127
  word-break: break-word;
128
128
  }
129
- `;
130
- }
131
- };
132
- EmptyPlaceholder.MESSAGE_EMPTY_QUERY = msg('To begin searching, enter a search term in the box above and hit "Go".');
133
- EmptyPlaceholder.MESSAGE_NO_SEARCH_RESULTS = msg('Your search did not match any items in the Archive. ' +
134
- 'Try different keywords or a more general search.');
135
- EmptyPlaceholder.MESSAGE_NO_COLLECTION_RESULTS = msg('Your search did not match any items in this collection. ' +
136
- 'Try different keywords or a more general search.');
137
- EmptyPlaceholder.MESSAGE_NO_VIEWABLE_MEMBERS = msg('This collection contains no viewable items.');
129
+ `;
130
+ }
131
+ };
132
+ EmptyPlaceholder.MESSAGE_EMPTY_QUERY = msg('To begin searching, enter a search term in the box above and hit "Go".');
133
+ EmptyPlaceholder.MESSAGE_NO_SEARCH_RESULTS = msg('Your search did not match any items in the Archive. ' +
134
+ 'Try different keywords or a more general search.');
135
+ EmptyPlaceholder.MESSAGE_NO_COLLECTION_RESULTS = msg('Your search did not match any items in this collection. ' +
136
+ 'Try different keywords or a more general search.');
137
+ EmptyPlaceholder.MESSAGE_NO_VIEWABLE_MEMBERS = msg('This collection contains no viewable items.');
138
138
  EmptyPlaceholder.MESSAGE_QUERY_ERROR = msg(html `The search engine
139
139
  encountered an error, which might be related to your search query.
140
140
  <a
141
141
  href="https://help.archive.org/help/search-building-powerful-complex-queries/"
142
142
  >
143
143
  Tips for constructing search queries.
144
- </a> `);
144
+ </a> `);
145
145
  EmptyPlaceholder.MESSAGE_COLLECTION_ERROR = msg(html `The search engine
146
146
  encountered an error while loading this collection. If the problem persists,
147
147
  please let us know at
148
- <a href="mailto:info@archive.org">info@archive.org</a>.`);
149
- EmptyPlaceholder.QUERY_ERROR_DETAILS_MESSAGE = msg('Error details:');
150
- __decorate([
151
- property({ type: String })
152
- ], EmptyPlaceholder.prototype, "placeholderType", void 0);
153
- __decorate([
154
- property({ type: Boolean })
155
- ], EmptyPlaceholder.prototype, "isMobileView", void 0);
156
- __decorate([
157
- property({ type: Boolean })
158
- ], EmptyPlaceholder.prototype, "isCollection", void 0);
159
- __decorate([
160
- property({ type: String })
161
- ], EmptyPlaceholder.prototype, "detailMessage", void 0);
162
- EmptyPlaceholder = EmptyPlaceholder_1 = __decorate([
163
- customElement('empty-placeholder')
164
- ], EmptyPlaceholder);
165
- export { EmptyPlaceholder };
148
+ <a href="mailto:info@archive.org">info@archive.org</a>.`);
149
+ EmptyPlaceholder.QUERY_ERROR_DETAILS_MESSAGE = msg('Error details:');
150
+ __decorate([
151
+ property({ type: String })
152
+ ], EmptyPlaceholder.prototype, "placeholderType", void 0);
153
+ __decorate([
154
+ property({ type: Boolean })
155
+ ], EmptyPlaceholder.prototype, "isMobileView", void 0);
156
+ __decorate([
157
+ property({ type: Boolean })
158
+ ], EmptyPlaceholder.prototype, "isCollection", void 0);
159
+ __decorate([
160
+ property({ type: String })
161
+ ], EmptyPlaceholder.prototype, "detailMessage", void 0);
162
+ EmptyPlaceholder = EmptyPlaceholder_1 = __decorate([
163
+ customElement('empty-placeholder')
164
+ ], EmptyPlaceholder);
165
+ export { EmptyPlaceholder };
166
166
  //# sourceMappingURL=empty-placeholder.js.map
@@ -1,43 +1,43 @@
1
- import { LitElement, CSSResultGroup, TemplateResult } from 'lit';
2
- import type { ModalManagerInterface } from '@internetarchive/modal-manager';
3
- import type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';
4
- export declare class ExpandedDatePicker extends LitElement {
5
- minDate?: string;
6
- maxDate?: string;
7
- minSelectedDate?: string;
8
- maxSelectedDate?: string;
9
- buckets?: number[];
10
- modalManager?: ModalManagerInterface;
11
- analyticsHandler?: AnalyticsManagerInterface;
12
- render(): TemplateResult;
13
- connectedCallback(): void;
14
- disconnectedCallback(): void;
15
- /**
16
- * Add an event listener to close the date picker modal when the Esc key is pressed
17
- */
18
- private setupEscapeListener;
19
- /**
20
- * Remove the Esc key listener that was previously added
21
- */
22
- private removeEscapeListener;
23
- /**
24
- * Closes the modal dialog if the given event is pressing the Esc key.
25
- * Arrow function to ensure `this` remains bound to the current component.
26
- */
27
- private boundEscapeListener;
28
- /**
29
- * When the histogram is updated, keep track of the newly selected date range.
30
- * We don't commit to the new range until the apply button is clicked.
31
- */
32
- private histogramDateRangeUpdated;
33
- /**
34
- * When the Apply button is clicked, emit the current date range and close the modal.
35
- */
36
- private applyBtnClicked;
37
- /**
38
- * Closes the modal associated with this component (if it exists) and dispatches a
39
- * modalClosed event.
40
- */
41
- private closeModal;
42
- static get styles(): CSSResultGroup;
43
- }
1
+ import { LitElement, CSSResultGroup, TemplateResult } from 'lit';
2
+ import type { ModalManagerInterface } from '@internetarchive/modal-manager';
3
+ import type { AnalyticsManagerInterface } from '@internetarchive/analytics-manager';
4
+ export declare class ExpandedDatePicker extends LitElement {
5
+ minDate?: string;
6
+ maxDate?: string;
7
+ minSelectedDate?: string;
8
+ maxSelectedDate?: string;
9
+ buckets?: number[];
10
+ modalManager?: ModalManagerInterface;
11
+ analyticsHandler?: AnalyticsManagerInterface;
12
+ render(): TemplateResult;
13
+ connectedCallback(): void;
14
+ disconnectedCallback(): void;
15
+ /**
16
+ * Add an event listener to close the date picker modal when the Esc key is pressed
17
+ */
18
+ private setupEscapeListener;
19
+ /**
20
+ * Remove the Esc key listener that was previously added
21
+ */
22
+ private removeEscapeListener;
23
+ /**
24
+ * Closes the modal dialog if the given event is pressing the Esc key.
25
+ * Arrow function to ensure `this` remains bound to the current component.
26
+ */
27
+ private boundEscapeListener;
28
+ /**
29
+ * When the histogram is updated, keep track of the newly selected date range.
30
+ * We don't commit to the new range until the apply button is clicked.
31
+ */
32
+ private histogramDateRangeUpdated;
33
+ /**
34
+ * When the Apply button is clicked, emit the current date range and close the modal.
35
+ */
36
+ private applyBtnClicked;
37
+ /**
38
+ * Closes the modal associated with this component (if it exists) and dispatches a
39
+ * modalClosed event.
40
+ */
41
+ private closeModal;
42
+ static get styles(): CSSResultGroup;
43
+ }
@@ -1,22 +1,22 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import { analyticsActions, analyticsCategories, } from './utils/analytics-events';
5
- let ExpandedDatePicker = class ExpandedDatePicker extends LitElement {
6
- constructor() {
7
- super(...arguments);
8
- /**
9
- * Closes the modal dialog if the given event is pressing the Esc key.
10
- * Arrow function to ensure `this` remains bound to the current component.
11
- */
12
- this.boundEscapeListener = (e) => {
13
- if (e.key === 'Escape') {
14
- this.closeModal();
15
- }
16
- };
17
- }
18
- render() {
19
- var _a, _b;
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { analyticsActions, analyticsCategories, } from './utils/analytics-events';
5
+ let ExpandedDatePicker = class ExpandedDatePicker extends LitElement {
6
+ constructor() {
7
+ super(...arguments);
8
+ /**
9
+ * Closes the modal dialog if the given event is pressing the Esc key.
10
+ * Arrow function to ensure `this` remains bound to the current component.
11
+ */
12
+ this.boundEscapeListener = (e) => {
13
+ if (e.key === 'Escape') {
14
+ this.closeModal();
15
+ }
16
+ };
17
+ }
18
+ render() {
19
+ var _a, _b;
20
20
  return html `
21
21
  <div id="container">
22
22
  <histogram-date-range
@@ -42,68 +42,68 @@ let ExpandedDatePicker = class ExpandedDatePicker extends LitElement {
42
42
  </button>
43
43
  </histogram-date-range>
44
44
  </div>
45
- `;
46
- }
47
- connectedCallback() {
48
- var _a;
49
- (_a = super.connectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
50
- this.setupEscapeListener();
51
- }
52
- disconnectedCallback() {
53
- var _a;
54
- (_a = super.disconnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
55
- this.removeEscapeListener();
56
- }
57
- /**
58
- * Add an event listener to close the date picker modal when the Esc key is pressed
59
- */
60
- setupEscapeListener() {
61
- document.addEventListener('keydown', this.boundEscapeListener);
62
- }
63
- /**
64
- * Remove the Esc key listener that was previously added
65
- */
66
- removeEscapeListener() {
67
- document.removeEventListener('keydown', this.boundEscapeListener);
68
- }
69
- /**
70
- * When the histogram is updated, keep track of the newly selected date range.
71
- * We don't commit to the new range until the apply button is clicked.
72
- */
73
- histogramDateRangeUpdated(e) {
74
- this.minSelectedDate = e.detail.minDate;
75
- this.maxSelectedDate = e.detail.maxDate;
76
- }
77
- /**
78
- * When the Apply button is clicked, emit the current date range and close the modal.
79
- */
80
- applyBtnClicked() {
81
- var _a;
82
- const event = new CustomEvent('histogramDateRangeApplied', {
83
- detail: {
84
- minDate: this.minSelectedDate,
85
- maxDate: this.maxSelectedDate,
86
- },
87
- });
88
- this.dispatchEvent(event);
89
- this.closeModal();
90
- (_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
91
- category: analyticsCategories.default,
92
- action: analyticsActions.histogramChangedFromModal,
93
- label: window.location.href,
94
- });
95
- }
96
- /**
97
- * Closes the modal associated with this component (if it exists) and dispatches a
98
- * modalClosed event.
99
- */
100
- closeModal() {
101
- if (this.modalManager) {
102
- this.modalManager.closeModal();
103
- this.dispatchEvent(new CustomEvent('modalClosed'));
104
- }
105
- }
106
- static get styles() {
45
+ `;
46
+ }
47
+ connectedCallback() {
48
+ var _a;
49
+ (_a = super.connectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
50
+ this.setupEscapeListener();
51
+ }
52
+ disconnectedCallback() {
53
+ var _a;
54
+ (_a = super.disconnectedCallback) === null || _a === void 0 ? void 0 : _a.call(this);
55
+ this.removeEscapeListener();
56
+ }
57
+ /**
58
+ * Add an event listener to close the date picker modal when the Esc key is pressed
59
+ */
60
+ setupEscapeListener() {
61
+ document.addEventListener('keydown', this.boundEscapeListener);
62
+ }
63
+ /**
64
+ * Remove the Esc key listener that was previously added
65
+ */
66
+ removeEscapeListener() {
67
+ document.removeEventListener('keydown', this.boundEscapeListener);
68
+ }
69
+ /**
70
+ * When the histogram is updated, keep track of the newly selected date range.
71
+ * We don't commit to the new range until the apply button is clicked.
72
+ */
73
+ histogramDateRangeUpdated(e) {
74
+ this.minSelectedDate = e.detail.minDate;
75
+ this.maxSelectedDate = e.detail.maxDate;
76
+ }
77
+ /**
78
+ * When the Apply button is clicked, emit the current date range and close the modal.
79
+ */
80
+ applyBtnClicked() {
81
+ var _a;
82
+ const event = new CustomEvent('histogramDateRangeApplied', {
83
+ detail: {
84
+ minDate: this.minSelectedDate,
85
+ maxDate: this.maxSelectedDate,
86
+ },
87
+ });
88
+ this.dispatchEvent(event);
89
+ this.closeModal();
90
+ (_a = this.analyticsHandler) === null || _a === void 0 ? void 0 : _a.sendEvent({
91
+ category: analyticsCategories.default,
92
+ action: analyticsActions.histogramChangedFromModal,
93
+ label: window.location.href,
94
+ });
95
+ }
96
+ /**
97
+ * Closes the modal associated with this component (if it exists) and dispatches a
98
+ * modalClosed event.
99
+ */
100
+ closeModal() {
101
+ if (this.modalManager) {
102
+ this.modalManager.closeModal();
103
+ this.dispatchEvent(new CustomEvent('modalClosed'));
104
+ }
105
+ }
106
+ static get styles() {
107
107
  return css `
108
108
  #container {
109
109
  display: flex;
@@ -126,32 +126,32 @@ let ExpandedDatePicker = class ExpandedDatePicker extends LitElement {
126
126
  color: white;
127
127
  cursor: pointer;
128
128
  }
129
- `;
130
- }
131
- };
132
- __decorate([
133
- property({ type: String })
134
- ], ExpandedDatePicker.prototype, "minDate", void 0);
135
- __decorate([
136
- property({ type: String })
137
- ], ExpandedDatePicker.prototype, "maxDate", void 0);
138
- __decorate([
139
- property({ type: String })
140
- ], ExpandedDatePicker.prototype, "minSelectedDate", void 0);
141
- __decorate([
142
- property({ type: String })
143
- ], ExpandedDatePicker.prototype, "maxSelectedDate", void 0);
144
- __decorate([
145
- property({ type: Array })
146
- ], ExpandedDatePicker.prototype, "buckets", void 0);
147
- __decorate([
148
- property({ type: Object, attribute: false })
149
- ], ExpandedDatePicker.prototype, "modalManager", void 0);
150
- __decorate([
151
- property({ type: Object, attribute: false })
152
- ], ExpandedDatePicker.prototype, "analyticsHandler", void 0);
153
- ExpandedDatePicker = __decorate([
154
- customElement('expanded-date-picker')
155
- ], ExpandedDatePicker);
156
- export { ExpandedDatePicker };
129
+ `;
130
+ }
131
+ };
132
+ __decorate([
133
+ property({ type: String })
134
+ ], ExpandedDatePicker.prototype, "minDate", void 0);
135
+ __decorate([
136
+ property({ type: String })
137
+ ], ExpandedDatePicker.prototype, "maxDate", void 0);
138
+ __decorate([
139
+ property({ type: String })
140
+ ], ExpandedDatePicker.prototype, "minSelectedDate", void 0);
141
+ __decorate([
142
+ property({ type: String })
143
+ ], ExpandedDatePicker.prototype, "maxSelectedDate", void 0);
144
+ __decorate([
145
+ property({ type: Array })
146
+ ], ExpandedDatePicker.prototype, "buckets", void 0);
147
+ __decorate([
148
+ property({ type: Object, attribute: false })
149
+ ], ExpandedDatePicker.prototype, "modalManager", void 0);
150
+ __decorate([
151
+ property({ type: Object, attribute: false })
152
+ ], ExpandedDatePicker.prototype, "analyticsHandler", void 0);
153
+ ExpandedDatePicker = __decorate([
154
+ customElement('expanded-date-picker')
155
+ ], ExpandedDatePicker);
156
+ export { ExpandedDatePicker };
157
157
  //# sourceMappingURL=expanded-date-picker.js.map
@@ -1,37 +1,37 @@
1
- export interface LanguageCodeHandlerInterface {
2
- /**
3
- * This takes a list of codes in the format `en-us|en|en-gb` and
4
- * returns the first language code in the list.
5
- *
6
- * The codes in the string should always represent the same language name.
7
- * eg `en-us`, `en-gb`, and `en` should always be "English"
8
- *
9
- * @param languageCodes
10
- */
11
- getLanguageNameFromCodeString(languageCodes: string): string;
12
- /**
13
- * This creates a serialized string of language codes for the given language.
14
- *
15
- * eg. `English` becomes `en-us|en|en-gb|.....`
16
- *
17
- * @param languageName
18
- */
19
- getCodeStringFromLanguageName(languageName: string): string;
20
- /**
21
- * Get an array of langauge codes from a serialized string.
22
- *
23
- * eg. `en-us|en|en-gb` becomes `['en-us', 'en', 'en-gb']`
24
- *
25
- * @param languageCodes
26
- */
27
- getCodeArrayFromCodeString(languageCodes: string): string[];
28
- }
29
- export declare class LanguageCodeHandler implements LanguageCodeHandlerInterface {
30
- private delimeter;
31
- /** @inheritdoc */
32
- getLanguageNameFromCodeString(languageCodes: string): string;
33
- /** @inheritdoc */
34
- getCodeStringFromLanguageName(languageName: string): string;
35
- /** @inheritdoc */
36
- getCodeArrayFromCodeString(languageCodes: string): string[];
37
- }
1
+ export interface LanguageCodeHandlerInterface {
2
+ /**
3
+ * This takes a list of codes in the format `en-us|en|en-gb` and
4
+ * returns the first language code in the list.
5
+ *
6
+ * The codes in the string should always represent the same language name.
7
+ * eg `en-us`, `en-gb`, and `en` should always be "English"
8
+ *
9
+ * @param languageCodes
10
+ */
11
+ getLanguageNameFromCodeString(languageCodes: string): string;
12
+ /**
13
+ * This creates a serialized string of language codes for the given language.
14
+ *
15
+ * eg. `English` becomes `en-us|en|en-gb|.....`
16
+ *
17
+ * @param languageName
18
+ */
19
+ getCodeStringFromLanguageName(languageName: string): string;
20
+ /**
21
+ * Get an array of langauge codes from a serialized string.
22
+ *
23
+ * eg. `en-us|en|en-gb` becomes `['en-us', 'en', 'en-gb']`
24
+ *
25
+ * @param languageCodes
26
+ */
27
+ getCodeArrayFromCodeString(languageCodes: string): string[];
28
+ }
29
+ export declare class LanguageCodeHandler implements LanguageCodeHandlerInterface {
30
+ private delimeter;
31
+ /** @inheritdoc */
32
+ getLanguageNameFromCodeString(languageCodes: string): string;
33
+ /** @inheritdoc */
34
+ getCodeStringFromLanguageName(languageName: string): string;
35
+ /** @inheritdoc */
36
+ getCodeArrayFromCodeString(languageCodes: string): string[];
37
+ }
@@ -1,27 +1,27 @@
1
- import { codeToLanguageMap } from './language-code-mapping';
2
- export class LanguageCodeHandler {
3
- constructor() {
4
- this.delimeter = '|';
5
- }
6
- /** @inheritdoc */
7
- getLanguageNameFromCodeString(languageCodes) {
8
- const split = this.getCodeArrayFromCodeString(languageCodes);
9
- if (split.length === 0)
10
- return '';
11
- const languageCode = split[0];
12
- const languageName = codeToLanguageMap[languageCode];
13
- return languageName !== null && languageName !== void 0 ? languageName : languageCodes;
14
- }
15
- /** @inheritdoc */
16
- getCodeStringFromLanguageName(languageName) {
17
- const languageCodes = Object.keys(codeToLanguageMap).filter(code => codeToLanguageMap[code] === languageName);
18
- const stringifiedCodes = languageCodes === null || languageCodes === void 0 ? void 0 : languageCodes.join(this.delimeter);
19
- return stringifiedCodes;
20
- }
21
- /** @inheritdoc */
22
- getCodeArrayFromCodeString(languageCodes) {
23
- const split = languageCodes.split(this.delimeter);
24
- return split;
25
- }
26
- }
1
+ import { codeToLanguageMap } from './language-code-mapping';
2
+ export class LanguageCodeHandler {
3
+ constructor() {
4
+ this.delimeter = '|';
5
+ }
6
+ /** @inheritdoc */
7
+ getLanguageNameFromCodeString(languageCodes) {
8
+ const split = this.getCodeArrayFromCodeString(languageCodes);
9
+ if (split.length === 0)
10
+ return '';
11
+ const languageCode = split[0];
12
+ const languageName = codeToLanguageMap[languageCode];
13
+ return languageName !== null && languageName !== void 0 ? languageName : languageCodes;
14
+ }
15
+ /** @inheritdoc */
16
+ getCodeStringFromLanguageName(languageName) {
17
+ const languageCodes = Object.keys(codeToLanguageMap).filter(code => codeToLanguageMap[code] === languageName);
18
+ const stringifiedCodes = languageCodes === null || languageCodes === void 0 ? void 0 : languageCodes.join(this.delimeter);
19
+ return stringifiedCodes;
20
+ }
21
+ /** @inheritdoc */
22
+ getCodeArrayFromCodeString(languageCodes) {
23
+ const split = languageCodes.split(this.delimeter);
24
+ return split;
25
+ }
26
+ }
27
27
  //# sourceMappingURL=language-code-handler.js.map
@@ -1 +1 @@
1
- export declare const codeToLanguageMap: Record<string, string>;
1
+ export declare const codeToLanguageMap: Record<string, string>;