@internetarchive/collection-browser 0.2.22 → 0.3.0-alpha.2

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 (220) 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 +42 -39
  12. package/dist/src/app-root.js +236 -203
  13. package/dist/src/app-root.js.map +1 -1
  14. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  15. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  16. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  17. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  18. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  19. package/dist/src/assets/img/icons/chevron.js +2 -2
  20. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  21. package/dist/src/assets/img/icons/empty-query.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/login-required.d.ts +1 -1
  29. package/dist/src/assets/img/icons/login-required.js +2 -2
  30. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  31. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  32. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  33. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  34. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  35. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  36. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  37. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  38. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  39. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  40. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  41. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  42. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  43. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  44. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  45. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  46. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  47. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  48. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  49. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  50. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  51. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  52. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  53. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  54. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  55. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  56. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  57. package/dist/src/assets/img/icons/null-result.js +2 -2
  58. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  59. package/dist/src/assets/img/icons/restricted.js +2 -2
  60. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  61. package/dist/src/assets/img/icons/reviews.js +2 -2
  62. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  63. package/dist/src/assets/img/icons/upload.js +2 -2
  64. package/dist/src/assets/img/icons/views.d.ts +1 -1
  65. package/dist/src/assets/img/icons/views.js +2 -2
  66. package/dist/src/circular-activity-indicator.d.ts +5 -5
  67. package/dist/src/circular-activity-indicator.js +17 -17
  68. package/dist/src/collection-browser.d.ts +235 -233
  69. package/dist/src/collection-browser.js +1032 -1046
  70. package/dist/src/collection-browser.js.map +1 -1
  71. package/dist/src/collection-facets/facets-template.d.ts +16 -16
  72. package/dist/src/collection-facets/facets-template.js +125 -125
  73. package/dist/src/collection-facets/facets-util.d.ts +10 -10
  74. package/dist/src/collection-facets/facets-util.js +19 -19
  75. package/dist/src/collection-facets/more-facets-content.d.ts +84 -83
  76. package/dist/src/collection-facets/more-facets-content.js +353 -351
  77. package/dist/src/collection-facets/more-facets-content.js.map +1 -1
  78. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  79. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  80. package/dist/src/collection-facets.d.ts +71 -79
  81. package/dist/src/collection-facets.js +325 -338
  82. package/dist/src/collection-facets.js.map +1 -1
  83. package/dist/src/empty-placeholder.d.ts +11 -11
  84. package/dist/src/empty-placeholder.js +42 -42
  85. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  86. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  87. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  88. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  89. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  90. package/dist/src/mediatype/mediatype-config.js +85 -85
  91. package/dist/src/models.d.ts +90 -89
  92. package/dist/src/models.js +85 -85
  93. package/dist/src/models.js.map +1 -1
  94. package/dist/src/restoration-state-handler.d.ts +38 -38
  95. package/dist/src/restoration-state-handler.js +202 -202
  96. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  97. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  98. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  100. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/list.js +2 -2
  102. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  104. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  105. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  106. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  107. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  108. package/dist/src/styles/item-image-styles.d.ts +8 -8
  109. package/dist/src/styles/item-image-styles.js +9 -9
  110. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  111. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  112. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  113. package/dist/src/tiles/grid/account-tile.js +20 -20
  114. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  115. package/dist/src/tiles/grid/collection-tile.js +23 -23
  116. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  117. package/dist/src/tiles/grid/item-tile.js +87 -87
  118. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  119. package/dist/src/tiles/grid/tile-stats.js +35 -35
  120. package/dist/src/tiles/image-block.d.ts +17 -17
  121. package/dist/src/tiles/image-block.js +73 -73
  122. package/dist/src/tiles/item-image.d.ts +31 -31
  123. package/dist/src/tiles/item-image.js +103 -103
  124. package/dist/src/tiles/list/account-label.d.ts +1 -1
  125. package/dist/src/tiles/list/account-label.js +6 -6
  126. package/dist/src/tiles/list/date-label.d.ts +1 -1
  127. package/dist/src/tiles/list/date-label.js +12 -12
  128. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  129. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  130. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  131. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  132. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  133. package/dist/src/tiles/list/tile-list.js +263 -263
  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/text-snippet-block.js.map +1 -1
  143. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  144. package/dist/src/tiles/tile-dispatcher.js +128 -128
  145. package/dist/src/utils/analytics-events.d.ts +18 -18
  146. package/dist/src/utils/analytics-events.js +20 -20
  147. package/dist/src/utils/format-count.d.ts +7 -7
  148. package/dist/src/utils/format-count.js +75 -75
  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 +328 -200
  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/facets-util.test.d.ts +1 -1
  157. package/dist/test/collection-facets/facets-util.test.js +12 -12
  158. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  159. package/dist/test/collection-facets/more-facets-content.test.js +92 -91
  160. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  161. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  162. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  163. package/dist/test/collection-facets.test.d.ts +2 -2
  164. package/dist/test/collection-facets.test.js +182 -181
  165. package/dist/test/collection-facets.test.js.map +1 -1
  166. package/dist/test/empty-placeholder.test.d.ts +1 -1
  167. package/dist/test/empty-placeholder.test.js +33 -33
  168. package/dist/test/icon-overlay.test.d.ts +1 -1
  169. package/dist/test/icon-overlay.test.js +24 -24
  170. package/dist/test/item-image.test.d.ts +1 -1
  171. package/dist/test/item-image.test.js +56 -56
  172. package/dist/test/mediatype-config.test.d.ts +1 -1
  173. package/dist/test/mediatype-config.test.js +16 -16
  174. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  175. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  176. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  177. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  178. package/dist/test/mocks/mock-search-responses.d.ts +5 -4
  179. package/dist/test/mocks/mock-search-responses.js +103 -57
  180. package/dist/test/mocks/mock-search-responses.js.map +1 -1
  181. package/dist/test/mocks/mock-search-service.d.ts +13 -8
  182. package/dist/test/mocks/mock-search-service.js +25 -19
  183. package/dist/test/mocks/mock-search-service.js.map +1 -1
  184. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  185. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  186. package/dist/test/text-overlay.test.d.ts +1 -1
  187. package/dist/test/text-overlay.test.js +41 -41
  188. package/dist/test/text-snippet-block.test.d.ts +1 -1
  189. package/dist/test/text-snippet-block.test.js +57 -45
  190. package/dist/test/text-snippet-block.test.js.map +1 -1
  191. package/dist/test/tile-stats.test.d.ts +1 -1
  192. package/dist/test/tile-stats.test.js +33 -33
  193. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  194. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  195. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  196. package/dist/test/tiles/list/tile-list.test.js +36 -36
  197. package/dist/test/utils/format-count.test.d.ts +1 -1
  198. package/dist/test/utils/format-count.test.js +23 -23
  199. package/dist/test/utils/format-date.test.d.ts +1 -1
  200. package/dist/test/utils/format-date.test.js +17 -17
  201. package/index.html +24 -24
  202. package/local.archive.org.cert +86 -86
  203. package/local.archive.org.key +27 -27
  204. package/package.json +115 -115
  205. package/renovate.json +6 -6
  206. package/src/app-root.ts +49 -11
  207. package/src/collection-browser.ts +76 -86
  208. package/src/collection-facets/more-facets-content.ts +35 -27
  209. package/src/collection-facets.ts +9 -26
  210. package/src/models.ts +2 -0
  211. package/src/tiles/text-snippet-block.ts +1 -1
  212. package/test/collection-browser.test.ts +192 -0
  213. package/test/collection-facets/more-facets-content.test.ts +5 -5
  214. package/test/collection-facets.test.ts +16 -15
  215. package/test/mocks/mock-search-responses.ts +83 -34
  216. package/test/mocks/mock-search-service.ts +27 -17
  217. package/test/text-snippet-block.test.ts +17 -0
  218. package/tsconfig.json +21 -21
  219. package/web-dev-server.config.mjs +30 -30
  220. package/web-test-runner.config.mjs +41 -41
@@ -1,58 +1,58 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement, nothing, } from 'lit';
3
- import { ifDefined } from 'lit/directives/if-defined.js';
4
- import { join } from 'lit/directives/join.js';
5
- import { map } from 'lit/directives/map.js';
6
- import { customElement, property, state } from 'lit/decorators.js';
7
- import DOMPurify from 'dompurify';
8
- import { dateLabel } from './date-label';
9
- import { accountLabel } from './account-label';
10
- import { formatCount } from '../../utils/format-count';
11
- import { formatDate } from '../../utils/format-date';
12
- import '../image-block';
13
- import '../mediatype-icon';
14
- let TileList = class TileList extends LitElement {
15
- constructor() {
16
- super(...arguments);
17
- this.sortParam = null;
18
- this.collectionLinks = [];
19
- this.loggedIn = false;
20
- }
21
- updated(changed) {
22
- if (changed.has('model')) {
23
- this.fetchCollectionNames();
24
- }
25
- }
26
- async fetchCollectionNames() {
27
- var _a, _b;
28
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.collections) ||
29
- this.model.collections.length === 0 ||
30
- !this.collectionNameCache) {
31
- return;
32
- }
33
- // Note: quirk of Lit: need to replace collectionLinks array,
34
- // otherwise it will not re-render. Can't simply alter the array.
35
- this.collectionLinks = [];
36
- const newCollellectionLinks = [];
37
- const promises = [];
38
- for (const collection of this.model.collections) {
39
- promises.push((_b = this.collectionNameCache) === null || _b === void 0 ? void 0 : _b.collectionNameFor(collection).then(name => {
40
- newCollellectionLinks.push(this.detailsLink(collection, name !== null && name !== void 0 ? name : collection));
41
- }));
42
- }
43
- await Promise.all(promises);
44
- this.collectionLinks = newCollellectionLinks;
45
- }
46
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement, nothing, } from 'lit';
3
+ import { ifDefined } from 'lit/directives/if-defined.js';
4
+ import { join } from 'lit/directives/join.js';
5
+ import { map } from 'lit/directives/map.js';
6
+ import { customElement, property, state } from 'lit/decorators.js';
7
+ import DOMPurify from 'dompurify';
8
+ import { dateLabel } from './date-label';
9
+ import { accountLabel } from './account-label';
10
+ import { formatCount } from '../../utils/format-count';
11
+ import { formatDate } from '../../utils/format-date';
12
+ import '../image-block';
13
+ import '../mediatype-icon';
14
+ let TileList = class TileList extends LitElement {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.sortParam = null;
18
+ this.collectionLinks = [];
19
+ this.loggedIn = false;
20
+ }
21
+ updated(changed) {
22
+ if (changed.has('model')) {
23
+ this.fetchCollectionNames();
24
+ }
25
+ }
26
+ async fetchCollectionNames() {
27
+ var _a, _b;
28
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.collections) ||
29
+ this.model.collections.length === 0 ||
30
+ !this.collectionNameCache) {
31
+ return;
32
+ }
33
+ // Note: quirk of Lit: need to replace collectionLinks array,
34
+ // otherwise it will not re-render. Can't simply alter the array.
35
+ this.collectionLinks = [];
36
+ const newCollellectionLinks = [];
37
+ const promises = [];
38
+ for (const collection of this.model.collections) {
39
+ promises.push((_b = this.collectionNameCache) === null || _b === void 0 ? void 0 : _b.collectionNameFor(collection).then(name => {
40
+ newCollellectionLinks.push(this.detailsLink(collection, name !== null && name !== void 0 ? name : collection));
41
+ }));
42
+ }
43
+ await Promise.all(promises);
44
+ this.collectionLinks = newCollellectionLinks;
45
+ }
46
+ render() {
47
47
  return html `
48
48
  <div id="list-line" class="${this.classSize}">
49
- ${this.classSize === 'mobile'
50
- ? this.mobileTemplate
49
+ ${this.classSize === 'mobile'
50
+ ? this.mobileTemplate
51
51
  : this.desktopTemplate}
52
52
  </div>
53
- `;
54
- }
55
- get mobileTemplate() {
53
+ `;
54
+ }
55
+ get mobileTemplate() {
56
56
  return html `
57
57
  <div id="list-line-top">
58
58
  <div id="list-line-left">${this.imageBlockTemplate}</div>
@@ -64,9 +64,9 @@ let TileList = class TileList extends LitElement {
64
64
  </div>
65
65
  </div>
66
66
  <div id="list-line-bottom">${this.detailsTemplate}</div>
67
- `;
68
- }
69
- get desktopTemplate() {
67
+ `;
68
+ }
69
+ get desktopTemplate() {
70
70
  return html `
71
71
  <div id="list-line-left">${this.imageBlockTemplate}</div>
72
72
  <div id="list-line-right">
@@ -76,9 +76,9 @@ let TileList = class TileList extends LitElement {
76
76
  </div>
77
77
  ${this.detailsTemplate}
78
78
  </div>
79
- `;
80
- }
81
- get imageBlockTemplate() {
79
+ `;
80
+ }
81
+ get imageBlockTemplate() {
82
82
  return html `
83
83
  <image-block
84
84
  .model=${this.model}
@@ -88,9 +88,9 @@ let TileList = class TileList extends LitElement {
88
88
  .viewSize=${this.classSize}
89
89
  >
90
90
  </image-block>
91
- `;
92
- }
93
- get detailsTemplate() {
91
+ `;
92
+ }
93
+ get detailsTemplate() {
94
94
  return html `
95
95
  ${this.itemLineTemplate} ${this.creatorTemplate}
96
96
  <div id="dates-line">
@@ -101,11 +101,11 @@ let TileList = class TileList extends LitElement {
101
101
  </div>
102
102
  ${this.topicsTemplate} ${this.collectionsTemplate}
103
103
  ${this.descriptionTemplate} ${this.textSnippetsTemplate}
104
- `;
105
- }
106
- // Data templates
107
- get iconRightTemplate() {
108
- var _a, _b;
104
+ `;
105
+ }
106
+ // Data templates
107
+ get iconRightTemplate() {
108
+ var _a, _b;
109
109
  return html `
110
110
  <div id="icon-right">
111
111
  <mediatype-icon
@@ -114,203 +114,203 @@ let TileList = class TileList extends LitElement {
114
114
  >
115
115
  </mediatype-icon>
116
116
  </div>
117
- `;
118
- }
119
- get titleTemplate() {
120
- var _a;
121
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
122
- return nothing;
123
- }
124
- return html ` ${this.detailsLink(this.model.identifier, this.model.title)} `;
125
- }
126
- get itemLineTemplate() {
127
- const source = this.sourceTemplate;
128
- const volume = this.volumeTemplate;
129
- const issue = this.issueTemplate;
130
- if (!source && !volume && !issue) {
131
- return nothing;
132
- }
133
- return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
134
- }
135
- get sourceTemplate() {
136
- var _a;
137
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
138
- return nothing;
139
- }
117
+ `;
118
+ }
119
+ get titleTemplate() {
120
+ var _a;
121
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
122
+ return nothing;
123
+ }
124
+ return html ` ${this.detailsLink(this.model.identifier, this.model.title)} `;
125
+ }
126
+ get itemLineTemplate() {
127
+ const source = this.sourceTemplate;
128
+ const volume = this.volumeTemplate;
129
+ const issue = this.issueTemplate;
130
+ if (!source && !volume && !issue) {
131
+ return nothing;
132
+ }
133
+ return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
134
+ }
135
+ get sourceTemplate() {
136
+ var _a;
137
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
138
+ return nothing;
139
+ }
140
140
  return html `
141
141
  <div id="source" class="metadata">
142
142
  ${this.labelTemplate('Source')}
143
143
  ${this.searchLink('source', this.model.source)}
144
144
  </div>
145
- `;
146
- }
147
- get volumeTemplate() {
148
- var _a;
149
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, 'Volume');
150
- }
151
- get issueTemplate() {
152
- var _a;
153
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, 'Issue');
154
- }
155
- get creatorTemplate() {
156
- var _a, _b, _c;
157
- // "Achivist since" if account
158
- if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
145
+ `;
146
+ }
147
+ get volumeTemplate() {
148
+ var _a;
149
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, 'Volume');
150
+ }
151
+ get issueTemplate() {
152
+ var _a;
153
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, 'Issue');
154
+ }
155
+ get creatorTemplate() {
156
+ var _a, _b, _c;
157
+ // "Achivist since" if account
158
+ if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
159
159
  return html `
160
160
  <div id="creator" class="metadata">
161
161
  <span class="label"> ${accountLabel((_b = this.model) === null || _b === void 0 ? void 0 : _b.dateAdded)} </span>
162
162
  </div>
163
- `;
164
- }
165
- // "Creator" if not account tile
166
- if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
167
- return nothing;
168
- }
163
+ `;
164
+ }
165
+ // "Creator" if not account tile
166
+ if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
167
+ return nothing;
168
+ }
169
169
  return html `
170
170
  <div id="creator" class="metadata">
171
171
  ${this.labelTemplate('By')}
172
172
  ${join(map(this.model.creators, id => this.searchLink('creator', id)), html `, `)}
173
173
  </div>
174
- `;
175
- }
176
- get datePublishedTemplate() {
177
- var _a;
178
- return this.metadataTemplate(formatDate((_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished, 'long'), 'Published');
179
- }
180
- // Show date label/value when sorted by date type
181
- // Except datePublished which is always shown
182
- get dateSortByTemplate() {
183
- if (this.sortParam &&
184
- (this.sortParam.field === 'addeddate' ||
185
- this.sortParam.field === 'reviewdate' ||
186
- this.sortParam.field === 'publicdate')) {
187
- return this.metadataTemplate(formatDate(this.date, 'long'), dateLabel(this.sortParam.field));
188
- }
189
- return nothing;
190
- }
191
- get viewsTemplate() {
192
- var _a, _b;
193
- return this.metadataTemplate(`${formatCount((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.viewCount) !== null && _b !== void 0 ? _b : 0, this.formatSize)}`, 'Views');
194
- }
195
- get ratingTemplate() {
196
- var _a;
197
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, 'Avg Rating');
198
- }
199
- get reviewsTemplate() {
200
- var _a;
201
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, 'Reviews');
202
- }
203
- get topicsTemplate() {
204
- var _a;
205
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
206
- return nothing;
207
- }
174
+ `;
175
+ }
176
+ get datePublishedTemplate() {
177
+ var _a;
178
+ return this.metadataTemplate(formatDate((_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished, 'long'), 'Published');
179
+ }
180
+ // Show date label/value when sorted by date type
181
+ // Except datePublished which is always shown
182
+ get dateSortByTemplate() {
183
+ if (this.sortParam &&
184
+ (this.sortParam.field === 'addeddate' ||
185
+ this.sortParam.field === 'reviewdate' ||
186
+ this.sortParam.field === 'publicdate')) {
187
+ return this.metadataTemplate(formatDate(this.date, 'long'), dateLabel(this.sortParam.field));
188
+ }
189
+ return nothing;
190
+ }
191
+ get viewsTemplate() {
192
+ var _a, _b;
193
+ return this.metadataTemplate(`${formatCount((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.viewCount) !== null && _b !== void 0 ? _b : 0, this.formatSize)}`, 'Views');
194
+ }
195
+ get ratingTemplate() {
196
+ var _a;
197
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, 'Avg Rating');
198
+ }
199
+ get reviewsTemplate() {
200
+ var _a;
201
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, 'Reviews');
202
+ }
203
+ get topicsTemplate() {
204
+ var _a;
205
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
206
+ return nothing;
207
+ }
208
208
  return html `
209
209
  <div id="topics" class="metadata">
210
210
  ${this.labelTemplate('Topics')}
211
211
  ${join(map(this.model.subjects, id => this.searchLink('subject', id)), html `, `)}
212
212
  </div>
213
- `;
214
- }
215
- get collectionsTemplate() {
216
- if (!this.collectionLinks || this.collectionLinks.length === 0) {
217
- return nothing;
218
- }
213
+ `;
214
+ }
215
+ get collectionsTemplate() {
216
+ if (!this.collectionLinks || this.collectionLinks.length === 0) {
217
+ return nothing;
218
+ }
219
219
  return html `
220
220
  <div id="collections" class="metadata">
221
221
  ${this.labelTemplate('Collections')}
222
222
  ${join(this.collectionLinks, html `, `)}
223
223
  </div>
224
- `;
225
- }
226
- get descriptionTemplate() {
227
- var _a, _b;
228
- return this.metadataTemplate(DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ''), '', 'description');
229
- }
230
- get textSnippetsTemplate() {
231
- var _a;
232
- if (!this.hasSnippets)
233
- return nothing;
224
+ `;
225
+ }
226
+ get descriptionTemplate() {
227
+ var _a, _b;
228
+ return this.metadataTemplate(DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ''), '', 'description');
229
+ }
230
+ get textSnippetsTemplate() {
231
+ var _a;
232
+ if (!this.hasSnippets)
233
+ return nothing;
234
234
  return html `<text-snippet-block
235
235
  viewsize="list"
236
236
  .snippets=${(_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets}
237
- ></text-snippet-block>`;
238
- }
239
- get hasSnippets() {
240
- var _a, _b;
241
- return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
242
- }
243
- // Utility functions
244
- metadataTemplate(text, label = '', id) {
245
- if (!text)
246
- return nothing;
237
+ ></text-snippet-block>`;
238
+ }
239
+ get hasSnippets() {
240
+ var _a, _b;
241
+ return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
242
+ }
243
+ // Utility functions
244
+ metadataTemplate(text, label = '', id) {
245
+ if (!text)
246
+ return nothing;
247
247
  return html `
248
248
  <div id=${ifDefined(id)} class="metadata">
249
249
  ${this.labelTemplate(label)} ${text}
250
250
  </div>
251
- `;
252
- }
253
- labelTemplate(label) {
254
- return html ` ${label
255
- ? html `<span class="label">${label}: </span>`
256
- : nothing}`;
257
- }
258
- searchLink(field, searchTerm) {
259
- if (!field || !searchTerm) {
260
- return nothing;
261
- }
262
- const query = encodeURIComponent(`${field}:"${searchTerm}"`);
263
- // No whitespace after closing tag
264
- // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
265
- // eslint-disable-next-line lit/no-invalid-html
251
+ `;
252
+ }
253
+ labelTemplate(label) {
254
+ return html ` ${label
255
+ ? html `<span class="label">${label}: </span>`
256
+ : nothing}`;
257
+ }
258
+ searchLink(field, searchTerm) {
259
+ if (!field || !searchTerm) {
260
+ return nothing;
261
+ }
262
+ const query = encodeURIComponent(`${field}:"${searchTerm}"`);
263
+ // No whitespace after closing tag
264
+ // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
265
+ // eslint-disable-next-line lit/no-invalid-html
266
266
  return html `<a href="${this.baseNavigationUrl}/search.php?query=${query}">
267
267
  ${DOMPurify.sanitize(searchTerm)}</a
268
- >`;
269
- }
270
- detailsLink(identifier, text) {
271
- const linkText = text !== null && text !== void 0 ? text : identifier;
272
- // No whitespace after closing tag
273
- // identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
268
+ >`;
269
+ }
270
+ detailsLink(identifier, text) {
271
+ const linkText = text !== null && text !== void 0 ? text : identifier;
272
+ // No whitespace after closing tag
273
+ // identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
274
274
  return html `<a
275
275
  href="${this.baseNavigationUrl}/details/${encodeURI(identifier)}"
276
276
  >${DOMPurify.sanitize(linkText)}</a
277
- >`;
278
- }
279
- /*
280
- * TODO: fix field names to match model in src/collection-browser.ts
281
- * private get dateSortSelector()
282
- * @see src/models.ts
283
- */
284
- get date() {
285
- var _a, _b, _c, _d, _e;
286
- switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
287
- case 'date':
288
- return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
289
- case 'reviewdate':
290
- return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
291
- case 'addeddate':
292
- return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
293
- default:
294
- return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
295
- }
296
- }
297
- get classSize() {
298
- if (this.mobileBreakpoint &&
299
- this.currentWidth &&
300
- this.currentWidth < this.mobileBreakpoint) {
301
- return 'mobile';
302
- }
303
- return 'desktop';
304
- }
305
- get formatSize() {
306
- if (this.mobileBreakpoint &&
307
- this.currentWidth &&
308
- this.currentWidth < this.mobileBreakpoint) {
309
- return 'short';
310
- }
311
- return 'long';
312
- }
313
- static get styles() {
277
+ >`;
278
+ }
279
+ /*
280
+ * TODO: fix field names to match model in src/collection-browser.ts
281
+ * private get dateSortSelector()
282
+ * @see src/models.ts
283
+ */
284
+ get date() {
285
+ var _a, _b, _c, _d, _e;
286
+ switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
287
+ case 'date':
288
+ return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
289
+ case 'reviewdate':
290
+ return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
291
+ case 'addeddate':
292
+ return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
293
+ default:
294
+ return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
295
+ }
296
+ }
297
+ get classSize() {
298
+ if (this.mobileBreakpoint &&
299
+ this.currentWidth &&
300
+ this.currentWidth < this.mobileBreakpoint) {
301
+ return 'mobile';
302
+ }
303
+ return 'desktop';
304
+ }
305
+ get formatSize() {
306
+ if (this.mobileBreakpoint &&
307
+ this.currentWidth &&
308
+ this.currentWidth < this.mobileBreakpoint) {
309
+ return 'short';
310
+ }
311
+ return 'long';
312
+ }
313
+ static get styles() {
314
314
  return css `
315
315
  html {
316
316
  font-size: unset;
@@ -428,41 +428,41 @@ let TileList = class TileList extends LitElement {
428
428
  flex-direction: row;
429
429
  gap: 10px;
430
430
  }
431
- `;
432
- }
433
- };
434
- __decorate([
435
- property({ type: Object })
436
- ], TileList.prototype, "model", void 0);
437
- __decorate([
438
- property({ type: String })
439
- ], TileList.prototype, "baseNavigationUrl", void 0);
440
- __decorate([
441
- property({ type: Object })
442
- ], TileList.prototype, "collectionNameCache", void 0);
443
- __decorate([
444
- property({ type: Number })
445
- ], TileList.prototype, "currentWidth", void 0);
446
- __decorate([
447
- property({ type: Number })
448
- ], TileList.prototype, "currentHeight", void 0);
449
- __decorate([
450
- property({ type: Object })
451
- ], TileList.prototype, "sortParam", void 0);
452
- __decorate([
453
- property({ type: Number })
454
- ], TileList.prototype, "mobileBreakpoint", void 0);
455
- __decorate([
456
- state()
457
- ], TileList.prototype, "collectionLinks", void 0);
458
- __decorate([
459
- property({ type: String })
460
- ], TileList.prototype, "baseImageUrl", void 0);
461
- __decorate([
462
- property({ type: Boolean })
463
- ], TileList.prototype, "loggedIn", void 0);
464
- TileList = __decorate([
465
- customElement('tile-list')
466
- ], TileList);
467
- export { TileList };
431
+ `;
432
+ }
433
+ };
434
+ __decorate([
435
+ property({ type: Object })
436
+ ], TileList.prototype, "model", void 0);
437
+ __decorate([
438
+ property({ type: String })
439
+ ], TileList.prototype, "baseNavigationUrl", void 0);
440
+ __decorate([
441
+ property({ type: Object })
442
+ ], TileList.prototype, "collectionNameCache", void 0);
443
+ __decorate([
444
+ property({ type: Number })
445
+ ], TileList.prototype, "currentWidth", void 0);
446
+ __decorate([
447
+ property({ type: Number })
448
+ ], TileList.prototype, "currentHeight", void 0);
449
+ __decorate([
450
+ property({ type: Object })
451
+ ], TileList.prototype, "sortParam", void 0);
452
+ __decorate([
453
+ property({ type: Number })
454
+ ], TileList.prototype, "mobileBreakpoint", void 0);
455
+ __decorate([
456
+ state()
457
+ ], TileList.prototype, "collectionLinks", void 0);
458
+ __decorate([
459
+ property({ type: String })
460
+ ], TileList.prototype, "baseImageUrl", void 0);
461
+ __decorate([
462
+ property({ type: Boolean })
463
+ ], TileList.prototype, "loggedIn", void 0);
464
+ TileList = __decorate([
465
+ customElement('tile-list')
466
+ ], TileList);
467
+ export { TileList };
468
468
  //# sourceMappingURL=tile-list.js.map
@@ -1,9 +1,9 @@
1
- import { CSSResultGroup, LitElement } from 'lit';
2
- export declare class MediatypeIcon extends LitElement {
3
- mediatype: string | undefined;
4
- collections: string[] | undefined;
5
- showText: boolean;
6
- private get displayMediatype();
7
- render(): import("lit-html").TemplateResult<1>;
8
- static get styles(): CSSResultGroup;
9
- }
1
+ import { CSSResultGroup, LitElement } from 'lit';
2
+ export declare class MediatypeIcon extends LitElement {
3
+ mediatype: string | undefined;
4
+ collections: string[] | undefined;
5
+ showText: boolean;
6
+ private get displayMediatype();
7
+ render(): import("lit-html").TemplateResult<1>;
8
+ static get styles(): CSSResultGroup;
9
+ }