@internetarchive/collection-browser 0.3.1-alpha.2 → 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 -1402
  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 +132 -130
  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 +350 -339
  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 -46
  93. package/dist/src/restoration-state-handler.js +220 -231
  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 +264 -263
  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 -75
  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 +385 -182
  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 -1526
  203. package/src/collection-facets/facets-template.ts +7 -5
  204. package/src/collection-facets/more-facets-content.ts +21 -10
  205. package/src/collection-facets.ts +569 -569
  206. package/src/models.ts +216 -216
  207. package/src/restoration-state-handler.ts +302 -314
  208. package/src/tiles/list/tile-list.ts +1 -0
  209. package/src/utils/format-count.ts +1 -0
  210. package/test/collection-browser.test.ts +490 -490
  211. package/test/collection-facets.test.ts +264 -1
  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,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,204 @@ 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
+ // eslint-disable-next-line default-param-last
245
+ metadataTemplate(text, label = '', id) {
246
+ if (!text)
247
+ return nothing;
247
248
  return html `
248
249
  <div id=${ifDefined(id)} class="metadata">
249
250
  ${this.labelTemplate(label)} ${text}
250
251
  </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
252
+ `;
253
+ }
254
+ labelTemplate(label) {
255
+ return html ` ${label
256
+ ? html `<span class="label">${label}: </span>`
257
+ : nothing}`;
258
+ }
259
+ searchLink(field, searchTerm) {
260
+ if (!field || !searchTerm) {
261
+ return nothing;
262
+ }
263
+ const query = encodeURIComponent(`${field}:"${searchTerm}"`);
264
+ // No whitespace after closing tag
265
+ // Note: single ' for href='' to wrap " in query var gets changed back by yarn format
266
+ // eslint-disable-next-line lit/no-invalid-html
266
267
  return html `<a href="${this.baseNavigationUrl}/search.php?query=${query}">
267
268
  ${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
269
+ >`;
270
+ }
271
+ detailsLink(identifier, text) {
272
+ const linkText = text !== null && text !== void 0 ? text : identifier;
273
+ // No whitespace after closing tag
274
+ // identifiers (all ASCII in their creation) should be safe to use in href, but sanitize anyway
274
275
  return html `<a
275
276
  href="${this.baseNavigationUrl}/details/${encodeURI(identifier)}"
276
277
  >${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() {
278
+ >`;
279
+ }
280
+ /*
281
+ * TODO: fix field names to match model in src/collection-browser.ts
282
+ * private get dateSortSelector()
283
+ * @see src/models.ts
284
+ */
285
+ get date() {
286
+ var _a, _b, _c, _d, _e;
287
+ switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
288
+ case 'date':
289
+ return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
290
+ case 'reviewdate':
291
+ return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
292
+ case 'addeddate':
293
+ return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
294
+ default:
295
+ return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
296
+ }
297
+ }
298
+ get classSize() {
299
+ if (this.mobileBreakpoint &&
300
+ this.currentWidth &&
301
+ this.currentWidth < this.mobileBreakpoint) {
302
+ return 'mobile';
303
+ }
304
+ return 'desktop';
305
+ }
306
+ get formatSize() {
307
+ if (this.mobileBreakpoint &&
308
+ this.currentWidth &&
309
+ this.currentWidth < this.mobileBreakpoint) {
310
+ return 'short';
311
+ }
312
+ return 'long';
313
+ }
314
+ static get styles() {
314
315
  return css `
315
316
  html {
316
317
  font-size: unset;
@@ -428,41 +429,41 @@ let TileList = class TileList extends LitElement {
428
429
  flex-direction: row;
429
430
  gap: 10px;
430
431
  }
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 };
432
+ `;
433
+ }
434
+ };
435
+ __decorate([
436
+ property({ type: Object })
437
+ ], TileList.prototype, "model", void 0);
438
+ __decorate([
439
+ property({ type: String })
440
+ ], TileList.prototype, "baseNavigationUrl", void 0);
441
+ __decorate([
442
+ property({ type: Object })
443
+ ], TileList.prototype, "collectionNameCache", void 0);
444
+ __decorate([
445
+ property({ type: Number })
446
+ ], TileList.prototype, "currentWidth", void 0);
447
+ __decorate([
448
+ property({ type: Number })
449
+ ], TileList.prototype, "currentHeight", void 0);
450
+ __decorate([
451
+ property({ type: Object })
452
+ ], TileList.prototype, "sortParam", void 0);
453
+ __decorate([
454
+ property({ type: Number })
455
+ ], TileList.prototype, "mobileBreakpoint", void 0);
456
+ __decorate([
457
+ state()
458
+ ], TileList.prototype, "collectionLinks", void 0);
459
+ __decorate([
460
+ property({ type: String })
461
+ ], TileList.prototype, "baseImageUrl", void 0);
462
+ __decorate([
463
+ property({ type: Boolean })
464
+ ], TileList.prototype, "loggedIn", void 0);
465
+ TileList = __decorate([
466
+ customElement('tile-list')
467
+ ], TileList);
468
+ export { TileList };
468
469
  //# sourceMappingURL=tile-list.js.map