@internetarchive/collection-browser 0.2.12 → 0.2.14

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 (245) hide show
  1. package/dist/index.d.ts +9 -0
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -0
  4. package/dist/src/app-root.d.ts +32 -0
  5. package/dist/src/app-root.js +285 -0
  6. package/dist/src/app-root.js.map +1 -0
  7. package/dist/src/assets/img/icons/chevron.d.ts +2 -0
  8. package/dist/src/assets/img/icons/chevron.js +4 -0
  9. package/dist/src/assets/img/icons/chevron.js.map +1 -0
  10. package/dist/src/assets/img/icons/empty-query.d.ts +2 -0
  11. package/dist/src/assets/img/icons/empty-query.js +5 -0
  12. package/dist/src/assets/img/icons/empty-query.js.map +1 -0
  13. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
  14. package/dist/src/assets/img/icons/eye-closed.js +5 -0
  15. package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
  16. package/dist/src/assets/img/icons/eye.d.ts +2 -0
  17. package/dist/src/assets/img/icons/eye.js +5 -0
  18. package/dist/src/assets/img/icons/eye.js.map +1 -0
  19. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -0
  20. package/dist/src/assets/img/icons/favorite-filled.js +11 -0
  21. package/dist/src/assets/img/icons/favorite-filled.js.map +1 -0
  22. package/dist/src/assets/img/icons/login-required.d.ts +1 -0
  23. package/dist/src/assets/img/icons/login-required.js +30 -0
  24. package/dist/src/assets/img/icons/login-required.js.map +1 -0
  25. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -0
  26. package/dist/src/assets/img/icons/mediatype/account.js +14 -0
  27. package/dist/src/assets/img/icons/mediatype/account.js.map +1 -0
  28. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -0
  29. package/dist/src/assets/img/icons/mediatype/audio.js +14 -0
  30. package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -0
  31. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -0
  32. package/dist/src/assets/img/icons/mediatype/collection.js +12 -0
  33. package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -0
  34. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -0
  35. package/dist/src/assets/img/icons/mediatype/data.js +15 -0
  36. package/dist/src/assets/img/icons/mediatype/data.js.map +1 -0
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -0
  38. package/dist/src/assets/img/icons/mediatype/etree.js +14 -0
  39. package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -0
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -0
  41. package/dist/src/assets/img/icons/mediatype/film.js +14 -0
  42. package/dist/src/assets/img/icons/mediatype/film.js.map +1 -0
  43. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -0
  44. package/dist/src/assets/img/icons/mediatype/images.js +13 -0
  45. package/dist/src/assets/img/icons/mediatype/images.js.map +1 -0
  46. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -0
  47. package/dist/src/assets/img/icons/mediatype/radio.js +15 -0
  48. package/dist/src/assets/img/icons/mediatype/radio.js.map +1 -0
  49. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -0
  50. package/dist/src/assets/img/icons/mediatype/software.js +13 -0
  51. package/dist/src/assets/img/icons/mediatype/software.js.map +1 -0
  52. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -0
  53. package/dist/src/assets/img/icons/mediatype/texts.js +13 -0
  54. package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -0
  55. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -0
  56. package/dist/src/assets/img/icons/mediatype/tv.js +14 -0
  57. package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -0
  58. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -0
  59. package/dist/src/assets/img/icons/mediatype/video.js +14 -0
  60. package/dist/src/assets/img/icons/mediatype/video.js.map +1 -0
  61. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -0
  62. package/dist/src/assets/img/icons/mediatype/web.js +13 -0
  63. package/dist/src/assets/img/icons/mediatype/web.js.map +1 -0
  64. package/dist/src/assets/img/icons/null-result.d.ts +2 -0
  65. package/dist/src/assets/img/icons/null-result.js +5 -0
  66. package/dist/src/assets/img/icons/null-result.js.map +1 -0
  67. package/dist/src/assets/img/icons/restricted.d.ts +1 -0
  68. package/dist/src/assets/img/icons/restricted.js +29 -0
  69. package/dist/src/assets/img/icons/restricted.js.map +1 -0
  70. package/dist/src/assets/img/icons/reviews.d.ts +1 -0
  71. package/dist/src/assets/img/icons/reviews.js +11 -0
  72. package/dist/src/assets/img/icons/reviews.js.map +1 -0
  73. package/dist/src/assets/img/icons/upload.d.ts +1 -0
  74. package/dist/src/assets/img/icons/upload.js +12 -0
  75. package/dist/src/assets/img/icons/upload.js.map +1 -0
  76. package/dist/src/assets/img/icons/views.d.ts +1 -0
  77. package/dist/src/assets/img/icons/views.js +11 -0
  78. package/dist/src/assets/img/icons/views.js.map +1 -0
  79. package/dist/src/circular-activity-indicator.d.ts +5 -0
  80. package/dist/src/circular-activity-indicator.js +66 -0
  81. package/dist/src/circular-activity-indicator.js.map +1 -0
  82. package/dist/src/collection-browser.d.ts +214 -0
  83. package/dist/src/collection-browser.js +1241 -0
  84. package/dist/src/collection-browser.js.map +1 -0
  85. package/dist/src/collection-facets.d.ts +63 -0
  86. package/dist/src/collection-facets.js +560 -0
  87. package/dist/src/collection-facets.js.map +1 -0
  88. package/dist/src/empty-placeholder.d.ts +11 -0
  89. package/dist/src/empty-placeholder.js +83 -0
  90. package/dist/src/empty-placeholder.js.map +1 -0
  91. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -0
  92. package/dist/src/language-code-handler/language-code-handler.js +27 -0
  93. package/dist/src/language-code-handler/language-code-handler.js.map +1 -0
  94. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -0
  95. package/dist/src/language-code-handler/language-code-mapping.js +563 -0
  96. package/dist/src/language-code-handler/language-code-mapping.js.map +1 -0
  97. package/dist/src/mediatype/mediatype-config.d.ts +3 -0
  98. package/dist/src/mediatype/mediatype-config.js +86 -0
  99. package/dist/src/mediatype/mediatype-config.js.map +1 -0
  100. package/dist/src/models.d.ts +84 -0
  101. package/dist/src/models.js +58 -0
  102. package/dist/src/models.js.map +1 -0
  103. package/dist/src/restoration-state-handler.d.ts +38 -0
  104. package/dist/src/restoration-state-handler.js +204 -0
  105. package/dist/src/restoration-state-handler.js.map +1 -0
  106. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -0
  107. package/dist/src/sort-filter-bar/alpha-bar.js +98 -0
  108. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -0
  109. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
  110. package/dist/src/sort-filter-bar/img/compact.js +5 -0
  111. package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
  112. package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
  113. package/dist/src/sort-filter-bar/img/list.js +5 -0
  114. package/dist/src/sort-filter-bar/img/list.js.map +1 -0
  115. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
  116. package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
  117. package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
  118. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
  119. package/dist/src/sort-filter-bar/img/tile.js +5 -0
  120. package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
  121. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +85 -0
  122. package/dist/src/sort-filter-bar/sort-filter-bar.js +698 -0
  123. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -0
  124. package/dist/src/styles/item-image-styles.d.ts +8 -0
  125. package/dist/src/styles/item-image-styles.js +102 -0
  126. package/dist/src/styles/item-image-styles.js.map +1 -0
  127. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -0
  128. package/dist/src/tiles/collection-browser-loading-tile.js +32 -0
  129. package/dist/src/tiles/collection-browser-loading-tile.js.map +1 -0
  130. package/dist/src/tiles/grid/account-tile.d.ts +8 -0
  131. package/dist/src/tiles/grid/account-tile.js +126 -0
  132. package/dist/src/tiles/grid/account-tile.js.map +1 -0
  133. package/dist/src/tiles/grid/collection-tile.d.ts +7 -0
  134. package/dist/src/tiles/grid/collection-tile.js +159 -0
  135. package/dist/src/tiles/grid/collection-tile.js.map +1 -0
  136. package/dist/src/tiles/grid/item-tile.d.ts +21 -0
  137. package/dist/src/tiles/grid/item-tile.js +183 -0
  138. package/dist/src/tiles/grid/item-tile.js.map +1 -0
  139. package/dist/src/tiles/grid/tile-stats.d.ts +10 -0
  140. package/dist/src/tiles/grid/tile-stats.js +134 -0
  141. package/dist/src/tiles/grid/tile-stats.js.map +1 -0
  142. package/dist/src/tiles/image-block.d.ts +17 -0
  143. package/dist/src/tiles/image-block.js +136 -0
  144. package/dist/src/tiles/image-block.js.map +1 -0
  145. package/dist/src/tiles/item-image.d.ts +31 -0
  146. package/dist/src/tiles/item-image.js +118 -0
  147. package/dist/src/tiles/item-image.js.map +1 -0
  148. package/dist/src/tiles/list/account-label.d.ts +1 -0
  149. package/dist/src/tiles/list/account-label.js +7 -0
  150. package/dist/src/tiles/list/account-label.js.map +1 -0
  151. package/dist/src/tiles/list/date-label.d.ts +1 -0
  152. package/dist/src/tiles/list/date-label.js +13 -0
  153. package/dist/src/tiles/list/date-label.js.map +1 -0
  154. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -0
  155. package/dist/src/tiles/list/tile-list-compact-header.js +84 -0
  156. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
  157. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -0
  158. package/dist/src/tiles/list/tile-list-compact.js +180 -0
  159. package/dist/src/tiles/list/tile-list-compact.js.map +1 -0
  160. package/dist/src/tiles/list/tile-list.d.ts +48 -0
  161. package/dist/src/tiles/list/tile-list.js +455 -0
  162. package/dist/src/tiles/list/tile-list.js.map +1 -0
  163. package/dist/src/tiles/mediatype-icon.d.ts +9 -0
  164. package/dist/src/tiles/mediatype-icon.js +82 -0
  165. package/dist/src/tiles/mediatype-icon.js.map +1 -0
  166. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -0
  167. package/dist/src/tiles/overlay/icon-overlay.js +43 -0
  168. package/dist/src/tiles/overlay/icon-overlay.js.map +1 -0
  169. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -0
  170. package/dist/src/tiles/overlay/text-overlay.js +57 -0
  171. package/dist/src/tiles/overlay/text-overlay.js.map +1 -0
  172. package/dist/src/tiles/tile-dispatcher.d.ts +36 -0
  173. package/dist/src/tiles/tile-dispatcher.js +215 -0
  174. package/dist/src/tiles/tile-dispatcher.js.map +1 -0
  175. package/dist/src/utils/format-count.d.ts +7 -0
  176. package/dist/src/utils/format-count.js +76 -0
  177. package/dist/src/utils/format-count.js.map +1 -0
  178. package/dist/src/utils/format-date.d.ts +2 -0
  179. package/dist/src/utils/format-date.js +24 -0
  180. package/dist/src/utils/format-date.js.map +1 -0
  181. package/dist/test/collection-browser.test.d.ts +1 -0
  182. package/dist/test/collection-browser.test.js +47 -0
  183. package/dist/test/collection-browser.test.js.map +1 -0
  184. package/dist/test/empty-placeholder.test.d.ts +1 -0
  185. package/dist/test/empty-placeholder.test.js +34 -0
  186. package/dist/test/empty-placeholder.test.js.map +1 -0
  187. package/dist/test/icon-overlay.test.d.ts +1 -0
  188. package/dist/test/icon-overlay.test.js +31 -0
  189. package/dist/test/icon-overlay.test.js.map +1 -0
  190. package/dist/test/item-image.test.d.ts +1 -0
  191. package/dist/test/item-image.test.js +73 -0
  192. package/dist/test/item-image.test.js.map +1 -0
  193. package/dist/test/mediatype-config.test.d.ts +1 -0
  194. package/dist/test/mediatype-config.test.js +17 -0
  195. package/dist/test/mediatype-config.test.js.map +1 -0
  196. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -0
  197. package/dist/test/mocks/mock-collection-name-cache.js +14 -0
  198. package/dist/test/mocks/mock-collection-name-cache.js.map +1 -0
  199. package/dist/test/mocks/mock-search-responses.d.ts +3 -0
  200. package/dist/test/mocks/mock-search-responses.js +32 -0
  201. package/dist/test/mocks/mock-search-responses.js.map +1 -0
  202. package/dist/test/mocks/mock-search-service.d.ts +8 -0
  203. package/dist/test/mocks/mock-search-service.js +16 -0
  204. package/dist/test/mocks/mock-search-service.js.map +1 -0
  205. package/dist/test/text-overlay.test.d.ts +1 -0
  206. package/dist/test/text-overlay.test.js +48 -0
  207. package/dist/test/text-overlay.test.js.map +1 -0
  208. package/dist/test/tile-stats.test.d.ts +1 -0
  209. package/dist/test/tile-stats.test.js +42 -0
  210. package/dist/test/tile-stats.test.js.map +1 -0
  211. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -0
  212. package/dist/test/tiles/grid/item-tile.test.js +96 -0
  213. package/dist/test/tiles/grid/item-tile.test.js.map +1 -0
  214. package/dist/test/utils/format-count.test.d.ts +1 -0
  215. package/dist/test/utils/format-count.test.js +24 -0
  216. package/dist/test/utils/format-count.test.js.map +1 -0
  217. package/dist/test/utils/format-date.test.d.ts +1 -0
  218. package/dist/test/utils/format-date.test.js +18 -0
  219. package/dist/test/utils/format-date.test.js.map +1 -0
  220. package/package.json +3 -2
  221. package/src/collection-browser.ts +2 -2
  222. package/src/collection-facets.ts +3 -3
  223. package/src/restoration-state-handler.ts +1 -1
  224. package/src/sort-filter-bar/sort-filter-bar.ts +1 -1
  225. package/src/tiles/grid/account-tile.ts +1 -1
  226. package/src/tiles/grid/collection-tile.ts +1 -1
  227. package/src/tiles/grid/item-tile.ts +2 -2
  228. package/src/tiles/image-block.ts +1 -1
  229. package/src/tiles/item-image.ts +1 -1
  230. package/src/tiles/list/tile-list-compact-header.ts +2 -2
  231. package/src/tiles/list/tile-list-compact.ts +2 -2
  232. package/src/tiles/list/tile-list.ts +4 -4
  233. package/src/tiles/tile-dispatcher.ts +2 -2
  234. package/test/collection-browser.test.ts +1 -1
  235. package/test/empty-placeholder.test.ts +2 -1
  236. package/test/icon-overlay.test.ts +1 -1
  237. package/test/item-image.test.ts +2 -2
  238. package/test/mocks/mock-collection-name-cache.ts +1 -1
  239. package/test/mocks/mock-search-responses.ts +1 -1
  240. package/test/mocks/mock-search-service.ts +2 -2
  241. package/test/text-overlay.test.ts +1 -1
  242. package/test/tile-stats.test.ts +1 -1
  243. package/test/tiles/grid/item-tile.test.ts +1 -1
  244. package/tsconfig.json +3 -2
  245. package/types/dompurify.d.ts +1 -0
@@ -0,0 +1,83 @@
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement, nothing } from 'lit';
3
+ import { customElement, property } from 'lit/decorators.js';
4
+ import { choose } from 'lit/directives/choose.js';
5
+ import emptyQueryIcon from './assets/img/icons/empty-query';
6
+ import nullResultIcon from './assets/img/icons/null-result';
7
+ let EmptyPlaceholder = class EmptyPlaceholder extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.placeholderType = null;
11
+ }
12
+ render() {
13
+ return this.placeholderType ? html `${this.placeholderTemplate}` : nothing;
14
+ }
15
+ get placeholderTemplate() {
16
+ return html `
17
+ <div
18
+ class="placeholder ${this.placeholderType} ${this.isMobileView
19
+ ? 'mobile'
20
+ : 'desktop'}"
21
+ >
22
+ ${choose(this.placeholderType, [
23
+ ['empty-query', () => this.emptyQueryTemplate],
24
+ ['null-result', () => this.nullResultTemplate],
25
+ ])}
26
+ </div>
27
+ `;
28
+ }
29
+ get emptyQueryTemplate() {
30
+ return html `
31
+ <h2 class="title">
32
+ To begin searching, enter a search term in the box above and hit "Go".
33
+ </h2>
34
+ <div>${emptyQueryIcon}</div>
35
+ `;
36
+ }
37
+ get nullResultTemplate() {
38
+ return html `
39
+ <h2 class="title">
40
+ Your search did not match any items in the Archive. Try different
41
+ keywords or a more general search.
42
+ </h2>
43
+ <div>${nullResultIcon}</div>
44
+ `;
45
+ }
46
+ static get styles() {
47
+ return css `
48
+ :host {
49
+ text-align: center;
50
+ width: 100%;
51
+ }
52
+
53
+ .placeholder {
54
+ display: block;
55
+ }
56
+
57
+ .desktop svg {
58
+ max-height: 40rem;
59
+ }
60
+ .desktop .title {
61
+ margin: 4rem 0;
62
+ }
63
+
64
+ .mobile svg {
65
+ max-height: 20rem;
66
+ }
67
+ .mobile .title {
68
+ margin: 2rem 0.5;
69
+ }
70
+ `;
71
+ }
72
+ };
73
+ __decorate([
74
+ property({ type: String })
75
+ ], EmptyPlaceholder.prototype, "placeholderType", void 0);
76
+ __decorate([
77
+ property({ type: Boolean })
78
+ ], EmptyPlaceholder.prototype, "isMobileView", void 0);
79
+ EmptyPlaceholder = __decorate([
80
+ customElement('empty-placeholder')
81
+ ], EmptyPlaceholder);
82
+ export { EmptyPlaceholder };
83
+ //# sourceMappingURL=empty-placeholder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"empty-placeholder.js","sourceRoot":"","sources":["../../src/empty-placeholder.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAkB,OAAO,EAAE,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAElD,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAC5D,OAAO,cAAc,MAAM,gCAAgC,CAAC;AAI5D,IAAa,gBAAgB,GAA7B,MAAa,gBAAiB,SAAQ,UAAU;IAAhD;;QAC8B,oBAAe,GAAoB,IAAI,CAAC;IAoEtE,CAAC;IAhEC,MAAM;QACJ,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAA,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5E,CAAC;IAED,IAAY,mBAAmB;QAC7B,OAAO,IAAI,CAAA;;6BAEc,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,YAAY;YAC5D,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,SAAS;;UAEX,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;YAC7B,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;YAC9C,CAAC,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC;SAC/C,CAAC;;KAEL,CAAC;IACJ,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAA;;;;aAIF,cAAc;KACtB,CAAC;IACJ,CAAC;IAED,IAAY,kBAAkB;QAC5B,OAAO,IAAI,CAAA;;;;;aAKF,cAAc;KACtB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;KAuBT,CAAC;IACJ,CAAC;CACF,CAAA;AApE6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yDAAyC;AAEvC;IAA5B,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;sDAAsB;AAHvC,gBAAgB;IAD5B,aAAa,CAAC,mBAAmB,CAAC;GACtB,gBAAgB,CAqE5B;SArEY,gBAAgB","sourcesContent":["import { css, html, LitElement, CSSResultGroup, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { choose } from 'lit/directives/choose.js';\n\nimport emptyQueryIcon from './assets/img/icons/empty-query';\nimport nullResultIcon from './assets/img/icons/null-result';\n\nexport type PlaceholderType = 'empty-query' | 'null-result' | null;\n@customElement('empty-placeholder')\nexport class EmptyPlaceholder extends LitElement {\n @property({ type: String }) placeholderType: PlaceholderType = null;\n\n @property({ type: Boolean }) isMobileView?: false;\n\n render() {\n return this.placeholderType ? html`${this.placeholderTemplate}` : nothing;\n }\n\n private get placeholderTemplate() {\n return html`\n <div\n class=\"placeholder ${this.placeholderType} ${this.isMobileView\n ? 'mobile'\n : 'desktop'}\"\n >\n ${choose(this.placeholderType, [\n ['empty-query', () => this.emptyQueryTemplate],\n ['null-result', () => this.nullResultTemplate],\n ])}\n </div>\n `;\n }\n\n private get emptyQueryTemplate() {\n return html`\n <h2 class=\"title\">\n To begin searching, enter a search term in the box above and hit \"Go\".\n </h2>\n <div>${emptyQueryIcon}</div>\n `;\n }\n\n private get nullResultTemplate() {\n return html`\n <h2 class=\"title\">\n Your search did not match any items in the Archive. Try different\n keywords or a more general search.\n </h2>\n <div>${nullResultIcon}</div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n return css`\n :host {\n text-align: center;\n width: 100%;\n }\n\n .placeholder {\n display: block;\n }\n\n .desktop svg {\n max-height: 40rem;\n }\n .desktop .title {\n margin: 4rem 0;\n }\n\n .mobile svg {\n max-height: 20rem;\n }\n .mobile .title {\n margin: 2rem 0.5;\n }\n `;\n }\n}\n"]}
@@ -0,0 +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
+ }
@@ -0,0 +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
+ }
27
+ //# sourceMappingURL=language-code-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"language-code-handler.js","sourceRoot":"","sources":["../../../src/language-code-handler/language-code-handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAqC5D,MAAM,OAAO,mBAAmB;IAAhC;QACU,cAAS,GAAG,GAAG,CAAC;IAyB1B,CAAC;IAvBC,kBAAkB;IAClB,6BAA6B,CAAC,aAAqB;QACjD,MAAM,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,YAAY,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QACrD,OAAO,YAAY,aAAZ,YAAY,cAAZ,YAAY,GAAI,aAAa,CAAC;IACvC,CAAC;IAED,kBAAkB;IAClB,6BAA6B,CAAC,YAAoB;QAChD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACzD,IAAI,CAAC,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,YAAY,CACjD,CAAC;QACF,MAAM,gBAAgB,GAAG,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC7D,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAED,kBAAkB;IAClB,0BAA0B,CAAC,aAAqB;QAC9C,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC;IACf,CAAC;CACF","sourcesContent":["import { codeToLanguageMap } from './language-code-mapping';\n\n// To serialize the list of potential language codes, we store\n// the string in the format `en-us|en|en-gb` with `|` being the separator.\n// This allows us to generate a query of `language:(en-us OR en OR en-gb)`\n// when we deserialize the string.\nexport interface LanguageCodeHandlerInterface {\n /**\n * This takes a list of codes in the format `en-us|en|en-gb` and\n * returns the first language code in the list.\n *\n * The codes in the string should always represent the same language name.\n * eg `en-us`, `en-gb`, and `en` should always be \"English\"\n *\n * @param languageCodes\n */\n getLanguageNameFromCodeString(languageCodes: string): string;\n\n /**\n * This creates a serialized string of language codes for the given language.\n *\n * eg. `English` becomes `en-us|en|en-gb|.....`\n *\n * @param languageName\n */\n getCodeStringFromLanguageName(languageName: string): string;\n\n /**\n * Get an array of langauge codes from a serialized string.\n *\n * eg. `en-us|en|en-gb` becomes `['en-us', 'en', 'en-gb']`\n *\n * @param languageCodes\n */\n getCodeArrayFromCodeString(languageCodes: string): string[];\n}\n\nexport class LanguageCodeHandler implements LanguageCodeHandlerInterface {\n private delimeter = '|';\n\n /** @inheritdoc */\n getLanguageNameFromCodeString(languageCodes: string): string {\n const split = this.getCodeArrayFromCodeString(languageCodes);\n if (split.length === 0) return '';\n const languageCode = split[0];\n const languageName = codeToLanguageMap[languageCode];\n return languageName ?? languageCodes;\n }\n\n /** @inheritdoc */\n getCodeStringFromLanguageName(languageName: string): string {\n const languageCodes = Object.keys(codeToLanguageMap).filter(\n code => codeToLanguageMap[code] === languageName\n );\n const stringifiedCodes = languageCodes?.join(this.delimeter);\n return stringifiedCodes;\n }\n\n /** @inheritdoc */\n getCodeArrayFromCodeString(languageCodes: string): string[] {\n const split = languageCodes.split(this.delimeter);\n return split;\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare const codeToLanguageMap: Record<string, string>;