@internetarchive/collection-browser 0.3.1 → 0.3.2-alpha.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 (198) 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 +242 -236
  68. package/dist/src/collection-browser.js +1070 -1065
  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 +125 -125
  72. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  73. package/dist/src/collection-facets/more-facets-content.js +330 -330
  74. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  75. package/dist/src/collection-facets/more-facets-pagination.js +192 -192
  76. package/dist/src/collection-facets.d.ts +73 -71
  77. package/dist/src/collection-facets.js +368 -357
  78. package/dist/src/collection-facets.js.map +1 -1
  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 +45 -45
  90. package/dist/src/restoration-state-handler.js +220 -220
  91. package/dist/src/sort-filter-bar/alpha-bar.d.ts +9 -9
  92. package/dist/src/sort-filter-bar/alpha-bar.js +41 -41
  93. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  94. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  95. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  96. package/dist/src/sort-filter-bar/img/list.js +2 -2
  97. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  98. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  99. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  100. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  101. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +107 -107
  102. package/dist/src/sort-filter-bar/sort-filter-bar.js +423 -423
  103. package/dist/src/styles/item-image-styles.d.ts +8 -8
  104. package/dist/src/styles/item-image-styles.js +9 -9
  105. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  106. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  107. package/dist/src/tiles/grid/account-tile.d.ts +8 -8
  108. package/dist/src/tiles/grid/account-tile.js +20 -20
  109. package/dist/src/tiles/grid/collection-tile.d.ts +7 -7
  110. package/dist/src/tiles/grid/collection-tile.js +23 -23
  111. package/dist/src/tiles/grid/item-tile.d.ts +24 -24
  112. package/dist/src/tiles/grid/item-tile.js +87 -87
  113. package/dist/src/tiles/grid/tile-stats.d.ts +10 -10
  114. package/dist/src/tiles/grid/tile-stats.js +35 -35
  115. package/dist/src/tiles/image-block.d.ts +17 -17
  116. package/dist/src/tiles/image-block.js +73 -73
  117. package/dist/src/tiles/item-image.d.ts +31 -31
  118. package/dist/src/tiles/item-image.js +103 -103
  119. package/dist/src/tiles/list/account-label.d.ts +1 -1
  120. package/dist/src/tiles/list/account-label.js +6 -6
  121. package/dist/src/tiles/list/date-label.d.ts +1 -1
  122. package/dist/src/tiles/list/date-label.js +12 -12
  123. package/dist/src/tiles/list/tile-list-compact-header.d.ts +12 -12
  124. package/dist/src/tiles/list/tile-list-compact-header.js +41 -41
  125. package/dist/src/tiles/list/tile-list-compact.d.ts +20 -20
  126. package/dist/src/tiles/list/tile-list-compact.js +87 -87
  127. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  128. package/dist/src/tiles/list/tile-list.js +264 -264
  129. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  130. package/dist/src/tiles/mediatype-icon.js +47 -47
  131. package/dist/src/tiles/overlay/icon-overlay.d.ts +7 -7
  132. package/dist/src/tiles/overlay/icon-overlay.js +31 -31
  133. package/dist/src/tiles/overlay/text-overlay.d.ts +8 -8
  134. package/dist/src/tiles/overlay/text-overlay.js +31 -31
  135. package/dist/src/tiles/text-snippet-block.d.ts +29 -29
  136. package/dist/src/tiles/text-snippet-block.js +81 -81
  137. package/dist/src/tiles/tile-dispatcher.d.ts +36 -36
  138. package/dist/src/tiles/tile-dispatcher.js +128 -128
  139. package/dist/src/utils/analytics-events.d.ts +18 -18
  140. package/dist/src/utils/analytics-events.js +20 -20
  141. package/dist/src/utils/format-count.d.ts +7 -7
  142. package/dist/src/utils/format-count.js +76 -76
  143. package/dist/src/utils/format-date.d.ts +2 -2
  144. package/dist/src/utils/format-date.js +23 -23
  145. package/dist/test/collection-browser.test.d.ts +1 -1
  146. package/dist/test/collection-browser.test.js +318 -318
  147. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  148. package/dist/test/collection-facets/facets-template.test.js +62 -62
  149. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  150. package/dist/test/collection-facets/more-facets-content.test.js +91 -91
  151. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  152. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  153. package/dist/test/collection-facets.test.d.ts +2 -2
  154. package/dist/test/collection-facets.test.js +385 -385
  155. package/dist/test/empty-placeholder.test.d.ts +1 -1
  156. package/dist/test/empty-placeholder.test.js +33 -33
  157. package/dist/test/icon-overlay.test.d.ts +1 -1
  158. package/dist/test/icon-overlay.test.js +24 -24
  159. package/dist/test/item-image.test.d.ts +1 -1
  160. package/dist/test/item-image.test.js +56 -56
  161. package/dist/test/mediatype-config.test.d.ts +1 -1
  162. package/dist/test/mediatype-config.test.js +16 -16
  163. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  164. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  165. package/dist/test/mocks/mock-collection-name-cache.d.ts +7 -7
  166. package/dist/test/mocks/mock-collection-name-cache.js +13 -13
  167. package/dist/test/mocks/mock-search-responses.d.ts +5 -5
  168. package/dist/test/mocks/mock-search-responses.js +103 -103
  169. package/dist/test/mocks/mock-search-service.d.ts +13 -13
  170. package/dist/test/mocks/mock-search-service.js +25 -25
  171. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  172. package/dist/test/restoration-state-handler.test.js +117 -117
  173. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  174. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +113 -113
  175. package/dist/test/text-overlay.test.d.ts +1 -1
  176. package/dist/test/text-overlay.test.js +41 -41
  177. package/dist/test/text-snippet-block.test.d.ts +1 -1
  178. package/dist/test/text-snippet-block.test.js +57 -57
  179. package/dist/test/tile-stats.test.d.ts +1 -1
  180. package/dist/test/tile-stats.test.js +33 -33
  181. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  182. package/dist/test/tiles/grid/item-tile.test.js +107 -107
  183. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  184. package/dist/test/tiles/list/tile-list.test.js +36 -36
  185. package/dist/test/utils/format-count.test.d.ts +1 -1
  186. package/dist/test/utils/format-count.test.js +23 -23
  187. package/dist/test/utils/format-date.test.d.ts +1 -1
  188. package/dist/test/utils/format-date.test.js +17 -17
  189. package/index.html +24 -24
  190. package/local.archive.org.cert +86 -86
  191. package/local.archive.org.key +27 -27
  192. package/package.json +115 -115
  193. package/renovate.json +6 -6
  194. package/src/collection-browser.ts +9 -0
  195. package/src/collection-facets.ts +21 -8
  196. package/tsconfig.json +21 -21
  197. package/web-dev-server.config.mjs +30 -30
  198. 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,204 +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
- // eslint-disable-next-line default-param-last
245
- metadataTemplate(text, label = '', id) {
246
- if (!text)
247
- 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;
248
248
  return html `
249
249
  <div id=${ifDefined(id)} class="metadata">
250
250
  ${this.labelTemplate(label)} ${text}
251
251
  </div>
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
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
267
267
  return html `<a href="${this.baseNavigationUrl}/search.php?query=${query}">
268
268
  ${DOMPurify.sanitize(searchTerm)}</a
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
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
275
275
  return html `<a
276
276
  href="${this.baseNavigationUrl}/details/${encodeURI(identifier)}"
277
277
  >${DOMPurify.sanitize(linkText)}</a
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() {
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() {
315
315
  return css `
316
316
  html {
317
317
  font-size: unset;
@@ -429,41 +429,41 @@ let TileList = class TileList extends LitElement {
429
429
  flex-direction: row;
430
430
  gap: 10px;
431
431
  }
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 };
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 };
469
469
  //# 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
+ }