@internetarchive/collection-browser 0.3.1-alpha.3 → 0.3.1

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 (214) hide show
  1. package/.editorconfig +29 -29
  2. package/.github/workflows/ci.yml +26 -26
  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/LICENSE +661 -661
  8. package/README.md +83 -83
  9. package/dist/index.d.ts +9 -9
  10. package/dist/index.js +9 -9
  11. package/dist/src/app-root.d.ts +43 -43
  12. package/dist/src/app-root.js +233 -233
  13. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  14. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  15. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  17. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  18. package/dist/src/assets/img/icons/chevron.js +2 -2
  19. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  20. package/dist/src/assets/img/icons/empty-query.js +2 -2
  21. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
  22. package/dist/src/assets/img/icons/eye-closed.js +2 -2
  23. package/dist/src/assets/img/icons/eye.d.ts +2 -2
  24. package/dist/src/assets/img/icons/eye.js +2 -2
  25. package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
  26. package/dist/src/assets/img/icons/favorite-filled.js +2 -2
  27. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  28. package/dist/src/assets/img/icons/login-required.js +2 -2
  29. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  30. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  55. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  56. package/dist/src/assets/img/icons/null-result.js +2 -2
  57. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  58. package/dist/src/assets/img/icons/restricted.js +2 -2
  59. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  60. package/dist/src/assets/img/icons/reviews.js +2 -2
  61. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  62. package/dist/src/assets/img/icons/upload.js +2 -2
  63. package/dist/src/assets/img/icons/views.d.ts +1 -1
  64. package/dist/src/assets/img/icons/views.js +2 -2
  65. package/dist/src/circular-activity-indicator.d.ts +5 -5
  66. package/dist/src/circular-activity-indicator.js +17 -17
  67. package/dist/src/collection-browser.d.ts +236 -236
  68. package/dist/src/collection-browser.js +1406 -1406
  69. package/dist/src/collection-browser.js.map +1 -1
  70. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  71. package/dist/src/collection-facets/facets-template.js +275 -275
  72. package/dist/src/collection-facets/facets-template.js.map +1 -1
  73. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  74. package/dist/src/collection-facets/more-facets-content.js +464 -464
  75. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  76. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  77. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  78. package/dist/src/collection-facets.d.ts +71 -71
  79. package/dist/src/collection-facets.js +496 -496
  80. package/dist/src/collection-facets.js.map +1 -1
  81. package/dist/src/empty-placeholder.d.ts +11 -11
  82. package/dist/src/empty-placeholder.js +42 -42
  83. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  84. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  85. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  86. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  87. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  88. package/dist/src/mediatype/mediatype-config.js +85 -85
  89. package/dist/src/models.d.ts +97 -97
  90. package/dist/src/models.js +100 -100
  91. package/dist/src/models.js.map +1 -1
  92. package/dist/src/restoration-state-handler.d.ts +45 -45
  93. package/dist/src/restoration-state-handler.js +220 -220
  94. package/dist/src/restoration-state-handler.js.map +1 -1
  95. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  96. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  97. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  99. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/list.js +2 -2
  101. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  102. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  103. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  104. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  105. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  106. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  107. package/dist/src/styles/item-image-styles.d.ts +8 -8
  108. package/dist/src/styles/item-image-styles.js +9 -9
  109. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  110. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  111. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  112. package/dist/src/tiles/grid/account-tile.js +20 -20
  113. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  114. package/dist/src/tiles/grid/collection-tile.js +23 -23
  115. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  116. package/dist/src/tiles/grid/item-tile.js +87 -87
  117. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  118. package/dist/src/tiles/grid/tile-stats.js +35 -35
  119. package/dist/src/tiles/image-block.d.ts +17 -17
  120. package/dist/src/tiles/image-block.js +73 -73
  121. package/dist/src/tiles/item-image.d.ts +31 -31
  122. package/dist/src/tiles/item-image.js +103 -103
  123. package/dist/src/tiles/list/account-label.d.ts +1 -1
  124. package/dist/src/tiles/list/account-label.js +6 -6
  125. package/dist/src/tiles/list/date-label.d.ts +1 -1
  126. package/dist/src/tiles/list/date-label.js +12 -12
  127. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  128. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  129. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  130. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  131. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  132. package/dist/src/tiles/list/tile-list.js +468 -468
  133. package/dist/src/tiles/list/tile-list.js.map +1 -1
  134. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  135. package/dist/src/tiles/mediatype-icon.js +47 -47
  136. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  137. package/dist/src/tiles/overlay/icon-overlay.js +31 -31
  138. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  139. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  140. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  141. package/dist/src/tiles/text-snippet-block.js +81 -81
  142. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  143. package/dist/src/tiles/tile-dispatcher.js +128 -128
  144. package/dist/src/utils/analytics-events.d.ts +18 -18
  145. package/dist/src/utils/analytics-events.js +20 -20
  146. package/dist/src/utils/format-count.d.ts +7 -7
  147. package/dist/src/utils/format-count.js +76 -76
  148. package/dist/src/utils/format-count.js.map +1 -1
  149. package/dist/src/utils/format-date.d.ts +2 -2
  150. package/dist/src/utils/format-date.js +23 -23
  151. package/dist/test/collection-browser.test.d.ts +1 -1
  152. package/dist/test/collection-browser.test.js +344 -344
  153. package/dist/test/collection-browser.test.js.map +1 -1
  154. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  155. package/dist/test/collection-facets/facets-template.test.js +62 -62
  156. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  157. package/dist/test/collection-facets/more-facets-content.test.js +91 -91
  158. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  159. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  160. package/dist/test/collection-facets.test.d.ts +2 -2
  161. package/dist/test/collection-facets.test.js +387 -387
  162. package/dist/test/collection-facets.test.js.map +1 -1
  163. package/dist/test/empty-placeholder.test.d.ts +1 -1
  164. package/dist/test/empty-placeholder.test.js +33 -33
  165. package/dist/test/icon-overlay.test.d.ts +1 -1
  166. package/dist/test/icon-overlay.test.js +24 -24
  167. package/dist/test/item-image.test.d.ts +1 -1
  168. package/dist/test/item-image.test.js +56 -56
  169. package/dist/test/mediatype-config.test.d.ts +1 -1
  170. package/dist/test/mediatype-config.test.js +16 -16
  171. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  172. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  173. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  174. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  175. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  176. package/dist/test/mocks/mock-search-responses.js +103 -103
  177. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  178. package/dist/test/mocks/mock-search-service.js +25 -25
  179. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  180. package/dist/test/restoration-state-handler.test.js +117 -117
  181. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  182. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  183. package/dist/test/text-overlay.test.d.ts +1 -1
  184. package/dist/test/text-overlay.test.js +41 -41
  185. package/dist/test/text-snippet-block.test.d.ts +1 -1
  186. package/dist/test/text-snippet-block.test.js +57 -57
  187. package/dist/test/tile-stats.test.d.ts +1 -1
  188. package/dist/test/tile-stats.test.js +33 -33
  189. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  190. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  191. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  192. package/dist/test/tiles/list/tile-list.test.js +36 -36
  193. package/dist/test/utils/format-count.test.d.ts +1 -1
  194. package/dist/test/utils/format-count.test.js +23 -23
  195. package/dist/test/utils/format-date.test.d.ts +1 -1
  196. package/dist/test/utils/format-date.test.js +17 -17
  197. package/index.html +24 -24
  198. package/local.archive.org.cert +86 -86
  199. package/local.archive.org.key +27 -27
  200. package/package.json +115 -115
  201. package/renovate.json +6 -6
  202. package/src/collection-browser.ts +1530 -1530
  203. package/src/collection-facets/facets-template.ts +294 -294
  204. package/src/collection-facets/more-facets-content.ts +518 -518
  205. package/src/collection-facets.ts +569 -569
  206. package/src/models.ts +216 -216
  207. package/src/restoration-state-handler.ts +302 -302
  208. package/src/tiles/list/tile-list.ts +509 -509
  209. package/src/utils/format-count.ts +96 -96
  210. package/test/collection-browser.test.ts +490 -490
  211. package/test/collection-facets.test.ts +510 -510
  212. package/tsconfig.json +21 -21
  213. package/web-dev-server.config.mjs +30 -30
  214. package/web-test-runner.config.mjs +41 -41
@@ -1,96 +1,96 @@
1
- /*
2
- * Replaces Petabox www/common/Util::number_format()
3
- * For positive numbers only.
4
- */
5
- import { msg, str } from '@lit/localize';
6
-
7
- export type NumberFormat =
8
- | 'short' // 1.2 [K | thousand]
9
- | 'long'; // 1,200 [No label for numbers < 1,000,000]
10
- export type LabelFormat =
11
- | 'short' // [1.2]K
12
- | 'long'; // [1.2] thousand
13
- type Divisor = 1_000_000_000 | 1_000_000 | 1_000 | 1;
14
-
15
- /**
16
- * Return the magnitude of a number.
17
- */
18
- function magnitude(number: number, numberFormat: NumberFormat): Divisor {
19
- let divisor: Divisor = 1;
20
- if (number >= 1_000_000_000) {
21
- divisor = 1_000_000_000;
22
- } else if (number >= 1_000_000) {
23
- divisor = 1_000_000;
24
- } else if (number >= 1_000 && numberFormat === 'short') {
25
- divisor = 1_000;
26
- }
27
- return divisor;
28
- }
29
-
30
- /**
31
- * Round a number given passed magnitude.
32
- * Significant digits of value less than 10 get a decimal.
33
- */
34
- // eslint-disable-next-line default-param-last
35
- function round(number: number = 0, divisor: Divisor): number {
36
- const result = number / divisor;
37
- const roundToOne = result < 10;
38
- let rounded: number = 0;
39
- if (roundToOne) {
40
- rounded = Math.round((result + Number.EPSILON) * 10) / 10;
41
- } else {
42
- rounded = Math.round(result);
43
- }
44
- return rounded;
45
- }
46
-
47
- /**
48
- * Return a label for a number and format.
49
- */
50
- function labelize(
51
- rounded: number,
52
- divisor: Divisor,
53
- format: LabelFormat,
54
- locale: string
55
- ): string {
56
- switch (divisor) {
57
- case 1_000_000_000:
58
- if (format === 'short') {
59
- return msg(str`${rounded}B`);
60
- }
61
- return msg(str`${rounded} billion`);
62
- case 1_000_000:
63
- if (format === 'short') {
64
- return msg(str`${rounded}M`);
65
- }
66
- return msg(str`${rounded} million`);
67
- case 1_000:
68
- if (format === 'short') {
69
- return msg(str`${rounded}K`);
70
- }
71
- return msg(str`${rounded} thousand`);
72
-
73
- default:
74
- return new Intl.NumberFormat(locale).format(rounded);
75
- }
76
- }
77
-
78
- /**
79
- * Format a "count" number into short "icon" or longer text string.
80
- * For positive numbers only.
81
- */
82
- export function formatCount(
83
- count: number | undefined,
84
- numberFormat: NumberFormat = 'long',
85
- labelFormat: LabelFormat = 'short',
86
- locale: string = 'en-US'
87
- ): string {
88
- // Return blank if undefined
89
- const number = count ?? -1;
90
- if (number < 0) {
91
- return '';
92
- }
93
- const divisor = magnitude(number, numberFormat);
94
- const rounded = round(number, divisor);
95
- return labelize(rounded, divisor, labelFormat, locale);
96
- }
1
+ /*
2
+ * Replaces Petabox www/common/Util::number_format()
3
+ * For positive numbers only.
4
+ */
5
+ import { msg, str } from '@lit/localize';
6
+
7
+ export type NumberFormat =
8
+ | 'short' // 1.2 [K | thousand]
9
+ | 'long'; // 1,200 [No label for numbers < 1,000,000]
10
+ export type LabelFormat =
11
+ | 'short' // [1.2]K
12
+ | 'long'; // [1.2] thousand
13
+ type Divisor = 1_000_000_000 | 1_000_000 | 1_000 | 1;
14
+
15
+ /**
16
+ * Return the magnitude of a number.
17
+ */
18
+ function magnitude(number: number, numberFormat: NumberFormat): Divisor {
19
+ let divisor: Divisor = 1;
20
+ if (number >= 1_000_000_000) {
21
+ divisor = 1_000_000_000;
22
+ } else if (number >= 1_000_000) {
23
+ divisor = 1_000_000;
24
+ } else if (number >= 1_000 && numberFormat === 'short') {
25
+ divisor = 1_000;
26
+ }
27
+ return divisor;
28
+ }
29
+
30
+ /**
31
+ * Round a number given passed magnitude.
32
+ * Significant digits of value less than 10 get a decimal.
33
+ */
34
+ // eslint-disable-next-line default-param-last
35
+ function round(number: number = 0, divisor: Divisor): number {
36
+ const result = number / divisor;
37
+ const roundToOne = result < 10;
38
+ let rounded: number = 0;
39
+ if (roundToOne) {
40
+ rounded = Math.round((result + Number.EPSILON) * 10) / 10;
41
+ } else {
42
+ rounded = Math.round(result);
43
+ }
44
+ return rounded;
45
+ }
46
+
47
+ /**
48
+ * Return a label for a number and format.
49
+ */
50
+ function labelize(
51
+ rounded: number,
52
+ divisor: Divisor,
53
+ format: LabelFormat,
54
+ locale: string
55
+ ): string {
56
+ switch (divisor) {
57
+ case 1_000_000_000:
58
+ if (format === 'short') {
59
+ return msg(str`${rounded}B`);
60
+ }
61
+ return msg(str`${rounded} billion`);
62
+ case 1_000_000:
63
+ if (format === 'short') {
64
+ return msg(str`${rounded}M`);
65
+ }
66
+ return msg(str`${rounded} million`);
67
+ case 1_000:
68
+ if (format === 'short') {
69
+ return msg(str`${rounded}K`);
70
+ }
71
+ return msg(str`${rounded} thousand`);
72
+
73
+ default:
74
+ return new Intl.NumberFormat(locale).format(rounded);
75
+ }
76
+ }
77
+
78
+ /**
79
+ * Format a "count" number into short "icon" or longer text string.
80
+ * For positive numbers only.
81
+ */
82
+ export function formatCount(
83
+ count: number | undefined,
84
+ numberFormat: NumberFormat = 'long',
85
+ labelFormat: LabelFormat = 'short',
86
+ locale: string = 'en-US'
87
+ ): string {
88
+ // Return blank if undefined
89
+ const number = count ?? -1;
90
+ if (number < 0) {
91
+ return '';
92
+ }
93
+ const divisor = magnitude(number, numberFormat);
94
+ const rounded = round(number, divisor);
95
+ return labelize(rounded, divisor, labelFormat, locale);
96
+ }