@internetarchive/collection-browser 0.3.2 → 0.3.3-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 (206) 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 +44 -43
  12. package/dist/src/app-root.js +242 -233
  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 +1067 -1077
  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 +74 -74
  74. package/dist/src/collection-facets/more-facets-content.js +330 -330
  75. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  76. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  77. package/dist/src/collection-facets.d.ts +73 -73
  78. package/dist/src/collection-facets.js +359 -359
  79. package/dist/src/empty-placeholder.d.ts +11 -11
  80. package/dist/src/empty-placeholder.js +42 -42
  81. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  82. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  83. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  84. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  85. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  86. package/dist/src/mediatype/mediatype-config.js +85 -85
  87. package/dist/src/models.d.ts +97 -97
  88. package/dist/src/models.js +100 -100
  89. package/dist/src/restoration-state-handler.d.ts +46 -45
  90. package/dist/src/restoration-state-handler.js +230 -220
  91. package/dist/src/restoration-state-handler.js.map +1 -1
  92. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  93. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  94. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  95. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  96. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  97. package/dist/src/sort-filter-bar/img/list.js +2 -2
  98. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  99. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  100. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  101. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  102. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  103. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  104. package/dist/src/styles/item-image-styles.d.ts +8 -8
  105. package/dist/src/styles/item-image-styles.js +9 -9
  106. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  107. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  108. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  109. package/dist/src/tiles/grid/account-tile.js +20 -20
  110. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  111. package/dist/src/tiles/grid/collection-tile.js +23 -23
  112. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  113. package/dist/src/tiles/grid/item-tile.js +87 -87
  114. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  115. package/dist/src/tiles/grid/tile-stats.js +35 -35
  116. package/dist/src/tiles/image-block.d.ts +17 -17
  117. package/dist/src/tiles/image-block.js +69 -69
  118. package/dist/src/tiles/item-image.d.ts +31 -31
  119. package/dist/src/tiles/item-image.js +103 -103
  120. package/dist/src/tiles/list/account-label.d.ts +1 -1
  121. package/dist/src/tiles/list/account-label.js +6 -6
  122. package/dist/src/tiles/list/date-label.d.ts +1 -1
  123. package/dist/src/tiles/list/date-label.js +12 -12
  124. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  125. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  126. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  127. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  128. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  129. package/dist/src/tiles/list/tile-list.js +264 -264
  130. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  131. package/dist/src/tiles/mediatype-icon.js +47 -47
  132. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  133. package/dist/src/tiles/overlay/icon-overlay.js +30 -30
  134. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  135. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  136. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  137. package/dist/src/tiles/text-snippet-block.js +81 -81
  138. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  139. package/dist/src/tiles/tile-dispatcher.js +128 -128
  140. package/dist/src/utils/analytics-events.d.ts +18 -18
  141. package/dist/src/utils/analytics-events.js +20 -20
  142. package/dist/src/utils/format-count.d.ts +7 -7
  143. package/dist/src/utils/format-count.js +76 -76
  144. package/dist/src/utils/format-date.d.ts +2 -2
  145. package/dist/src/utils/format-date.js +23 -23
  146. package/dist/test/collection-browser.test.d.ts +1 -1
  147. package/dist/test/collection-browser.test.js +356 -330
  148. package/dist/test/collection-browser.test.js.map +1 -1
  149. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  150. package/dist/test/collection-facets/facets-template.test.js +62 -62
  151. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  152. package/dist/test/collection-facets/more-facets-content.test.js +91 -91
  153. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  154. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  155. package/dist/test/collection-facets.test.d.ts +2 -2
  156. package/dist/test/collection-facets.test.js +421 -421
  157. package/dist/test/empty-placeholder.test.d.ts +1 -1
  158. package/dist/test/empty-placeholder.test.js +33 -33
  159. package/dist/test/icon-overlay.test.d.ts +1 -1
  160. package/dist/test/icon-overlay.test.js +24 -24
  161. package/dist/test/image-block.test.d.ts +1 -1
  162. package/dist/test/image-block.test.js +48 -48
  163. package/dist/test/item-image.test.d.ts +1 -1
  164. package/dist/test/item-image.test.js +56 -56
  165. package/dist/test/mediatype-config.test.d.ts +1 -1
  166. package/dist/test/mediatype-config.test.js +16 -16
  167. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  168. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  169. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  170. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  171. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  172. package/dist/test/mocks/mock-search-responses.js +103 -103
  173. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  174. package/dist/test/mocks/mock-search-service.js +25 -25
  175. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  176. package/dist/test/restoration-state-handler.test.js +117 -117
  177. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  178. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  179. package/dist/test/text-overlay.test.d.ts +1 -1
  180. package/dist/test/text-overlay.test.js +41 -41
  181. package/dist/test/text-snippet-block.test.d.ts +1 -1
  182. package/dist/test/text-snippet-block.test.js +57 -57
  183. package/dist/test/tile-stats.test.d.ts +1 -1
  184. package/dist/test/tile-stats.test.js +33 -33
  185. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  186. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  187. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  188. package/dist/test/tiles/list/tile-list-compact.test.js +26 -26
  189. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  190. package/dist/test/tiles/list/tile-list.test.js +36 -36
  191. package/dist/test/utils/format-count.test.d.ts +1 -1
  192. package/dist/test/utils/format-count.test.js +23 -23
  193. package/dist/test/utils/format-date.test.d.ts +1 -1
  194. package/dist/test/utils/format-date.test.js +17 -17
  195. package/index.html +24 -24
  196. package/local.archive.org.cert +86 -86
  197. package/local.archive.org.key +27 -27
  198. package/package.json +115 -115
  199. package/renovate.json +6 -6
  200. package/src/app-root.ts +12 -1
  201. package/src/collection-browser.ts +26 -21
  202. package/src/restoration-state-handler.ts +19 -1
  203. package/test/collection-browser.test.ts +31 -2
  204. package/tsconfig.json +21 -21
  205. package/web-dev-server.config.mjs +30 -30
  206. 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
+ }