@internetarchive/collection-browser 0.3.3-alpha.4 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (216) 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 -44
  12. package/dist/src/app-root.js +233 -242
  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 +247 -247
  69. package/dist/src/collection-browser.js +1055 -1073
  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/more-facets-content.d.ts +76 -74
  74. package/dist/src/collection-facets/more-facets-content.js +349 -330
  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 +75 -73
  79. package/dist/src/collection-facets.js +370 -359
  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/restoration-state-handler.d.ts +45 -46
  92. package/dist/src/restoration-state-handler.js +220 -230
  93. package/dist/src/restoration-state-handler.js.map +1 -1
  94. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  95. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  96. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  97. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  98. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/list.js +2 -2
  100. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  102. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  103. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  104. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  105. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  106. package/dist/src/styles/item-image-styles.d.ts +8 -8
  107. package/dist/src/styles/item-image-styles.js +9 -9
  108. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  109. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  110. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  111. package/dist/src/tiles/grid/account-tile.js +20 -20
  112. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  113. package/dist/src/tiles/grid/collection-tile.js +23 -23
  114. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  115. package/dist/src/tiles/grid/item-tile.js +87 -87
  116. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  117. package/dist/src/tiles/grid/tile-stats.js +35 -35
  118. package/dist/src/tiles/image-block.d.ts +17 -17
  119. package/dist/src/tiles/image-block.js +69 -69
  120. package/dist/src/tiles/item-image.d.ts +31 -31
  121. package/dist/src/tiles/item-image.js +103 -103
  122. package/dist/src/tiles/list/account-label.d.ts +1 -1
  123. package/dist/src/tiles/list/account-label.js +6 -6
  124. package/dist/src/tiles/list/date-label.d.ts +1 -1
  125. package/dist/src/tiles/list/date-label.js +12 -12
  126. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  127. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  128. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  129. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  130. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  131. package/dist/src/tiles/list/tile-list.js +264 -264
  132. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  133. package/dist/src/tiles/mediatype-icon.js +47 -47
  134. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  135. package/dist/src/tiles/overlay/icon-overlay.js +30 -30
  136. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  137. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  138. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  139. package/dist/src/tiles/text-snippet-block.js +81 -81
  140. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  141. package/dist/src/tiles/tile-dispatcher.js +128 -128
  142. package/dist/src/utils/analytics-events.d.ts +22 -18
  143. package/dist/src/utils/analytics-events.js +24 -20
  144. package/dist/src/utils/analytics-events.js.map +1 -1
  145. package/dist/src/utils/format-count.d.ts +7 -7
  146. package/dist/src/utils/format-count.js +76 -76
  147. package/dist/src/utils/format-date.d.ts +2 -2
  148. package/dist/src/utils/format-date.js +23 -23
  149. package/dist/test/collection-browser.test.d.ts +1 -1
  150. package/dist/test/collection-browser.test.js +330 -356
  151. package/dist/test/collection-browser.test.js.map +1 -1
  152. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  153. package/dist/test/collection-facets/facets-template.test.js +62 -62
  154. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  155. package/dist/test/collection-facets/more-facets-content.test.js +117 -92
  156. package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
  157. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  158. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  159. package/dist/test/collection-facets.test.d.ts +2 -2
  160. package/dist/test/collection-facets.test.js +471 -421
  161. package/dist/test/collection-facets.test.js.map +1 -1
  162. package/dist/test/empty-placeholder.test.d.ts +1 -1
  163. package/dist/test/empty-placeholder.test.js +33 -33
  164. package/dist/test/icon-overlay.test.d.ts +1 -1
  165. package/dist/test/icon-overlay.test.js +24 -24
  166. package/dist/test/image-block.test.d.ts +1 -1
  167. package/dist/test/image-block.test.js +48 -48
  168. package/dist/test/item-image.test.d.ts +1 -1
  169. package/dist/test/item-image.test.js +56 -56
  170. package/dist/test/mediatype-config.test.d.ts +1 -1
  171. package/dist/test/mediatype-config.test.js +16 -16
  172. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  173. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  174. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  175. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  176. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  177. package/dist/test/mocks/mock-search-responses.js +103 -103
  178. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  179. package/dist/test/mocks/mock-search-service.js +25 -25
  180. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  181. package/dist/test/restoration-state-handler.test.js +117 -117
  182. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  183. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  184. package/dist/test/text-overlay.test.d.ts +1 -1
  185. package/dist/test/text-overlay.test.js +41 -41
  186. package/dist/test/text-snippet-block.test.d.ts +1 -1
  187. package/dist/test/text-snippet-block.test.js +57 -57
  188. package/dist/test/tile-stats.test.d.ts +1 -1
  189. package/dist/test/tile-stats.test.js +33 -33
  190. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  191. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  192. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  193. package/dist/test/tiles/list/tile-list-compact.test.js +26 -26
  194. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  195. package/dist/test/tiles/list/tile-list.test.js +36 -36
  196. package/dist/test/utils/format-count.test.d.ts +1 -1
  197. package/dist/test/utils/format-count.test.js +23 -23
  198. package/dist/test/utils/format-date.test.d.ts +1 -1
  199. package/dist/test/utils/format-date.test.js +17 -17
  200. package/index.html +24 -24
  201. package/local.archive.org.cert +86 -86
  202. package/local.archive.org.key +27 -27
  203. package/package.json +115 -115
  204. package/renovate.json +6 -6
  205. package/src/app-root.ts +1 -12
  206. package/src/collection-browser.ts +7 -43
  207. package/src/collection-facets/more-facets-content.ts +27 -3
  208. package/src/collection-facets.ts +16 -1
  209. package/src/restoration-state-handler.ts +1 -19
  210. package/src/utils/analytics-events.ts +4 -0
  211. package/test/collection-browser.test.ts +2 -31
  212. package/test/collection-facets/more-facets-content.test.ts +42 -10
  213. package/test/collection-facets.test.ts +62 -1
  214. package/tsconfig.json +21 -21
  215. package/web-dev-server.config.mjs +30 -30
  216. 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}
@@ -89,9 +89,9 @@ let TileList = class TileList extends LitElement {
89
89
  .loggedIn=${this.loggedIn}
90
90
  >
91
91
  </image-block>
92
- `;
93
- }
94
- get detailsTemplate() {
92
+ `;
93
+ }
94
+ get detailsTemplate() {
95
95
  return html `
96
96
  ${this.itemLineTemplate} ${this.creatorTemplate}
97
97
  <div id="dates-line">
@@ -102,11 +102,11 @@ let TileList = class TileList extends LitElement {
102
102
  </div>
103
103
  ${this.topicsTemplate} ${this.collectionsTemplate}
104
104
  ${this.descriptionTemplate} ${this.textSnippetsTemplate}
105
- `;
106
- }
107
- // Data templates
108
- get iconRightTemplate() {
109
- var _a, _b;
105
+ `;
106
+ }
107
+ // Data templates
108
+ get iconRightTemplate() {
109
+ var _a, _b;
110
110
  return html `
111
111
  <div id="icon-right">
112
112
  <mediatype-icon
@@ -115,204 +115,204 @@ let TileList = class TileList extends LitElement {
115
115
  >
116
116
  </mediatype-icon>
117
117
  </div>
118
- `;
119
- }
120
- get titleTemplate() {
121
- var _a;
122
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
123
- return nothing;
124
- }
125
- return html ` ${this.detailsLink(this.model.identifier, this.model.title)} `;
126
- }
127
- get itemLineTemplate() {
128
- const source = this.sourceTemplate;
129
- const volume = this.volumeTemplate;
130
- const issue = this.issueTemplate;
131
- if (!source && !volume && !issue) {
132
- return nothing;
133
- }
134
- return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
135
- }
136
- get sourceTemplate() {
137
- var _a;
138
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
139
- return nothing;
140
- }
118
+ `;
119
+ }
120
+ get titleTemplate() {
121
+ var _a;
122
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
123
+ return nothing;
124
+ }
125
+ return html ` ${this.detailsLink(this.model.identifier, this.model.title)} `;
126
+ }
127
+ get itemLineTemplate() {
128
+ const source = this.sourceTemplate;
129
+ const volume = this.volumeTemplate;
130
+ const issue = this.issueTemplate;
131
+ if (!source && !volume && !issue) {
132
+ return nothing;
133
+ }
134
+ return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
135
+ }
136
+ get sourceTemplate() {
137
+ var _a;
138
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
139
+ return nothing;
140
+ }
141
141
  return html `
142
142
  <div id="source" class="metadata">
143
143
  ${this.labelTemplate('Source')}
144
144
  ${this.searchLink('source', this.model.source)}
145
145
  </div>
146
- `;
147
- }
148
- get volumeTemplate() {
149
- var _a;
150
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, 'Volume');
151
- }
152
- get issueTemplate() {
153
- var _a;
154
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, 'Issue');
155
- }
156
- get creatorTemplate() {
157
- var _a, _b, _c;
158
- // "Achivist since" if account
159
- if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
146
+ `;
147
+ }
148
+ get volumeTemplate() {
149
+ var _a;
150
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, 'Volume');
151
+ }
152
+ get issueTemplate() {
153
+ var _a;
154
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, 'Issue');
155
+ }
156
+ get creatorTemplate() {
157
+ var _a, _b, _c;
158
+ // "Achivist since" if account
159
+ if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
160
160
  return html `
161
161
  <div id="creator" class="metadata">
162
162
  <span class="label"> ${accountLabel((_b = this.model) === null || _b === void 0 ? void 0 : _b.dateAdded)} </span>
163
163
  </div>
164
- `;
165
- }
166
- // "Creator" if not account tile
167
- if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
168
- return nothing;
169
- }
164
+ `;
165
+ }
166
+ // "Creator" if not account tile
167
+ if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
168
+ return nothing;
169
+ }
170
170
  return html `
171
171
  <div id="creator" class="metadata">
172
172
  ${this.labelTemplate('By')}
173
173
  ${join(map(this.model.creators, id => this.searchLink('creator', id)), html `, `)}
174
174
  </div>
175
- `;
176
- }
177
- get datePublishedTemplate() {
178
- var _a;
179
- return this.metadataTemplate(formatDate((_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished, 'long'), 'Published');
180
- }
181
- // Show date label/value when sorted by date type
182
- // Except datePublished which is always shown
183
- get dateSortByTemplate() {
184
- if (this.sortParam &&
185
- (this.sortParam.field === 'addeddate' ||
186
- this.sortParam.field === 'reviewdate' ||
187
- this.sortParam.field === 'publicdate')) {
188
- return this.metadataTemplate(formatDate(this.date, 'long'), dateLabel(this.sortParam.field));
189
- }
190
- return nothing;
191
- }
192
- get viewsTemplate() {
193
- var _a, _b;
194
- 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');
195
- }
196
- get ratingTemplate() {
197
- var _a;
198
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, 'Avg Rating');
199
- }
200
- get reviewsTemplate() {
201
- var _a;
202
- return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, 'Reviews');
203
- }
204
- get topicsTemplate() {
205
- var _a;
206
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
207
- return nothing;
208
- }
175
+ `;
176
+ }
177
+ get datePublishedTemplate() {
178
+ var _a;
179
+ return this.metadataTemplate(formatDate((_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished, 'long'), 'Published');
180
+ }
181
+ // Show date label/value when sorted by date type
182
+ // Except datePublished which is always shown
183
+ get dateSortByTemplate() {
184
+ if (this.sortParam &&
185
+ (this.sortParam.field === 'addeddate' ||
186
+ this.sortParam.field === 'reviewdate' ||
187
+ this.sortParam.field === 'publicdate')) {
188
+ return this.metadataTemplate(formatDate(this.date, 'long'), dateLabel(this.sortParam.field));
189
+ }
190
+ return nothing;
191
+ }
192
+ get viewsTemplate() {
193
+ var _a, _b;
194
+ 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');
195
+ }
196
+ get ratingTemplate() {
197
+ var _a;
198
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, 'Avg Rating');
199
+ }
200
+ get reviewsTemplate() {
201
+ var _a;
202
+ return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, 'Reviews');
203
+ }
204
+ get topicsTemplate() {
205
+ var _a;
206
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
207
+ return nothing;
208
+ }
209
209
  return html `
210
210
  <div id="topics" class="metadata">
211
211
  ${this.labelTemplate('Topics')}
212
212
  ${join(map(this.model.subjects, id => this.searchLink('subject', id)), html `, `)}
213
213
  </div>
214
- `;
215
- }
216
- get collectionsTemplate() {
217
- if (!this.collectionLinks || this.collectionLinks.length === 0) {
218
- return nothing;
219
- }
214
+ `;
215
+ }
216
+ get collectionsTemplate() {
217
+ if (!this.collectionLinks || this.collectionLinks.length === 0) {
218
+ return nothing;
219
+ }
220
220
  return html `
221
221
  <div id="collections" class="metadata">
222
222
  ${this.labelTemplate('Collections')}
223
223
  ${join(this.collectionLinks, html `, `)}
224
224
  </div>
225
- `;
226
- }
227
- get descriptionTemplate() {
228
- var _a, _b;
229
- return this.metadataTemplate(DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ''), '', 'description');
230
- }
231
- get textSnippetsTemplate() {
232
- var _a;
233
- if (!this.hasSnippets)
234
- return nothing;
225
+ `;
226
+ }
227
+ get descriptionTemplate() {
228
+ var _a, _b;
229
+ return this.metadataTemplate(DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) !== null && _b !== void 0 ? _b : ''), '', 'description');
230
+ }
231
+ get textSnippetsTemplate() {
232
+ var _a;
233
+ if (!this.hasSnippets)
234
+ return nothing;
235
235
  return html `<text-snippet-block
236
236
  viewsize="list"
237
237
  .snippets=${(_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets}
238
- ></text-snippet-block>`;
239
- }
240
- get hasSnippets() {
241
- var _a, _b;
242
- return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
243
- }
244
- // Utility functions
245
- // eslint-disable-next-line default-param-last
246
- metadataTemplate(text, label = '', id) {
247
- if (!text)
248
- return nothing;
238
+ ></text-snippet-block>`;
239
+ }
240
+ get hasSnippets() {
241
+ var _a, _b;
242
+ return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
243
+ }
244
+ // Utility functions
245
+ // eslint-disable-next-line default-param-last
246
+ metadataTemplate(text, label = '', id) {
247
+ if (!text)
248
+ return nothing;
249
249
  return html `
250
250
  <div id=${ifDefined(id)} class="metadata">
251
251
  ${this.labelTemplate(label)} ${text}
252
252
  </div>
253
- `;
254
- }
255
- labelTemplate(label) {
256
- return html ` ${label
257
- ? html `<span class="label">${label}: </span>`
258
- : nothing}`;
259
- }
260
- searchLink(field, searchTerm) {
261
- if (!field || !searchTerm) {
262
- return nothing;
263
- }
264
- const query = encodeURIComponent(`${field}:"${searchTerm}"`);
265
- // No whitespace after closing tag
266
- // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
267
- // eslint-disable-next-line lit/no-invalid-html
253
+ `;
254
+ }
255
+ labelTemplate(label) {
256
+ return html ` ${label
257
+ ? html `<span class="label">${label}: </span>`
258
+ : nothing}`;
259
+ }
260
+ searchLink(field, searchTerm) {
261
+ if (!field || !searchTerm) {
262
+ return nothing;
263
+ }
264
+ const query = encodeURIComponent(`${field}:"${searchTerm}"`);
265
+ // No whitespace after closing tag
266
+ // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
267
+ // eslint-disable-next-line lit/no-invalid-html
268
268
  return html `<a href="${this.baseNavigationUrl}/search.php?query=${query}">
269
269
  ${DOMPurify.sanitize(searchTerm)}</a
270
- >`;
271
- }
272
- detailsLink(identifier, text) {
273
- const linkText = text !== null && text !== void 0 ? text : identifier;
274
- // No whitespace after closing tag
275
- // identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
270
+ >`;
271
+ }
272
+ detailsLink(identifier, text) {
273
+ const linkText = text !== null && text !== void 0 ? text : identifier;
274
+ // No whitespace after closing tag
275
+ // identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
276
276
  return html `<a
277
277
  href="${this.baseNavigationUrl}/details/${encodeURI(identifier)}"
278
278
  >${DOMPurify.sanitize(linkText)}</a
279
- >`;
280
- }
281
- /*
282
- * TODO: fix field names to match model in src/collection-browser.ts
283
- * private get dateSortSelector()
284
- * @see src/models.ts
285
- */
286
- get date() {
287
- var _a, _b, _c, _d, _e;
288
- switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
289
- case 'date':
290
- return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
291
- case 'reviewdate':
292
- return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
293
- case 'addeddate':
294
- return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
295
- default:
296
- return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
297
- }
298
- }
299
- get classSize() {
300
- if (this.mobileBreakpoint &&
301
- this.currentWidth &&
302
- this.currentWidth < this.mobileBreakpoint) {
303
- return 'mobile';
304
- }
305
- return 'desktop';
306
- }
307
- get formatSize() {
308
- if (this.mobileBreakpoint &&
309
- this.currentWidth &&
310
- this.currentWidth < this.mobileBreakpoint) {
311
- return 'short';
312
- }
313
- return 'long';
314
- }
315
- static get styles() {
279
+ >`;
280
+ }
281
+ /*
282
+ * TODO: fix field names to match model in src/collection-browser.ts
283
+ * private get dateSortSelector()
284
+ * @see src/models.ts
285
+ */
286
+ get date() {
287
+ var _a, _b, _c, _d, _e;
288
+ switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
289
+ case 'date':
290
+ return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
291
+ case 'reviewdate':
292
+ return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
293
+ case 'addeddate':
294
+ return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
295
+ default:
296
+ return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
297
+ }
298
+ }
299
+ get classSize() {
300
+ if (this.mobileBreakpoint &&
301
+ this.currentWidth &&
302
+ this.currentWidth < this.mobileBreakpoint) {
303
+ return 'mobile';
304
+ }
305
+ return 'desktop';
306
+ }
307
+ get formatSize() {
308
+ if (this.mobileBreakpoint &&
309
+ this.currentWidth &&
310
+ this.currentWidth < this.mobileBreakpoint) {
311
+ return 'short';
312
+ }
313
+ return 'long';
314
+ }
315
+ static get styles() {
316
316
  return css `
317
317
  html {
318
318
  font-size: unset;
@@ -430,41 +430,41 @@ let TileList = class TileList extends LitElement {
430
430
  flex-direction: row;
431
431
  gap: 10px;
432
432
  }
433
- `;
434
- }
435
- };
436
- __decorate([
437
- property({ type: Object })
438
- ], TileList.prototype, "model", void 0);
439
- __decorate([
440
- property({ type: String })
441
- ], TileList.prototype, "baseNavigationUrl", void 0);
442
- __decorate([
443
- property({ type: Object })
444
- ], TileList.prototype, "collectionNameCache", void 0);
445
- __decorate([
446
- property({ type: Number })
447
- ], TileList.prototype, "currentWidth", void 0);
448
- __decorate([
449
- property({ type: Number })
450
- ], TileList.prototype, "currentHeight", void 0);
451
- __decorate([
452
- property({ type: Object })
453
- ], TileList.prototype, "sortParam", void 0);
454
- __decorate([
455
- property({ type: Number })
456
- ], TileList.prototype, "mobileBreakpoint", void 0);
457
- __decorate([
458
- state()
459
- ], TileList.prototype, "collectionLinks", void 0);
460
- __decorate([
461
- property({ type: String })
462
- ], TileList.prototype, "baseImageUrl", void 0);
463
- __decorate([
464
- property({ type: Boolean })
465
- ], TileList.prototype, "loggedIn", void 0);
466
- TileList = __decorate([
467
- customElement('tile-list')
468
- ], TileList);
469
- export { TileList };
433
+ `;
434
+ }
435
+ };
436
+ __decorate([
437
+ property({ type: Object })
438
+ ], TileList.prototype, "model", void 0);
439
+ __decorate([
440
+ property({ type: String })
441
+ ], TileList.prototype, "baseNavigationUrl", void 0);
442
+ __decorate([
443
+ property({ type: Object })
444
+ ], TileList.prototype, "collectionNameCache", void 0);
445
+ __decorate([
446
+ property({ type: Number })
447
+ ], TileList.prototype, "currentWidth", void 0);
448
+ __decorate([
449
+ property({ type: Number })
450
+ ], TileList.prototype, "currentHeight", void 0);
451
+ __decorate([
452
+ property({ type: Object })
453
+ ], TileList.prototype, "sortParam", void 0);
454
+ __decorate([
455
+ property({ type: Number })
456
+ ], TileList.prototype, "mobileBreakpoint", void 0);
457
+ __decorate([
458
+ state()
459
+ ], TileList.prototype, "collectionLinks", void 0);
460
+ __decorate([
461
+ property({ type: String })
462
+ ], TileList.prototype, "baseImageUrl", void 0);
463
+ __decorate([
464
+ property({ type: Boolean })
465
+ ], TileList.prototype, "loggedIn", void 0);
466
+ TileList = __decorate([
467
+ customElement('tile-list')
468
+ ], TileList);
469
+ export { TileList };
470
470
  //# 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
+ }