@internetarchive/collection-browser 0.0.1-alpha.2 → 0.0.1-alpha.22

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 (183) hide show
  1. package/demo/app-root.ts +24 -158
  2. package/dist/demo/app-root.d.ts +2 -16
  3. package/dist/demo/app-root.js +23 -141
  4. package/dist/demo/app-root.js.map +1 -1
  5. package/dist/src/assets/img/icons/chevron.d.ts +2 -0
  6. package/dist/src/assets/img/icons/chevron.js +4 -0
  7. package/dist/src/assets/img/icons/chevron.js.map +1 -0
  8. package/dist/src/assets/img/icons/eye-closed.d.ts +2 -0
  9. package/dist/src/assets/img/icons/eye-closed.js +5 -0
  10. package/dist/src/assets/img/icons/eye-closed.js.map +1 -0
  11. package/dist/src/assets/img/icons/eye.d.ts +2 -0
  12. package/dist/src/assets/img/icons/eye.js +5 -0
  13. package/dist/src/assets/img/icons/eye.js.map +1 -0
  14. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -2
  15. package/dist/src/assets/img/icons/mediatype/account.js +5 -4
  16. package/dist/src/assets/img/icons/mediatype/account.js.map +1 -1
  17. package/dist/src/assets/img/icons/mediatype/audio.js +7 -4
  18. package/dist/src/assets/img/icons/mediatype/audio.js.map +1 -1
  19. package/dist/src/assets/img/icons/mediatype/collection.js +7 -4
  20. package/dist/src/assets/img/icons/mediatype/collection.js.map +1 -1
  21. package/dist/src/assets/img/icons/mediatype/etree.js +10 -5
  22. package/dist/src/assets/img/icons/mediatype/etree.js.map +1 -1
  23. package/dist/src/assets/img/icons/mediatype/film.js +2 -1
  24. package/dist/src/assets/img/icons/mediatype/film.js.map +1 -1
  25. package/dist/src/assets/img/icons/mediatype/images.js +9 -6
  26. package/dist/src/assets/img/icons/mediatype/images.js.map +1 -1
  27. package/dist/src/assets/img/icons/mediatype/software.js +9 -6
  28. package/dist/src/assets/img/icons/mediatype/software.js.map +1 -1
  29. package/dist/src/assets/img/icons/mediatype/texts.js +9 -6
  30. package/dist/src/assets/img/icons/mediatype/texts.js.map +1 -1
  31. package/dist/src/assets/img/icons/mediatype/tv.js +10 -5
  32. package/dist/src/assets/img/icons/mediatype/tv.js.map +1 -1
  33. package/dist/src/assets/img/icons/mediatype/video.js +10 -6
  34. package/dist/src/assets/img/icons/mediatype/video.js.map +1 -1
  35. package/dist/src/assets/img/icons/mediatype/web.js +9 -6
  36. package/dist/src/assets/img/icons/mediatype/web.js.map +1 -1
  37. package/dist/src/async-collection-name.d.ts +11 -0
  38. package/dist/src/async-collection-name.js +38 -0
  39. package/dist/src/async-collection-name.js.map +1 -0
  40. package/dist/src/collection-browser.d.ts +55 -17
  41. package/dist/src/collection-browser.js +466 -106
  42. package/dist/src/collection-browser.js.map +1 -1
  43. package/dist/src/collection-facets.d.ts +24 -5
  44. package/dist/src/collection-facets.js +300 -78
  45. package/dist/src/collection-facets.js.map +1 -1
  46. package/dist/src/collection-name-cache.d.ts +18 -0
  47. package/dist/src/collection-name-cache.js +89 -0
  48. package/dist/src/collection-name-cache.js.map +1 -0
  49. package/dist/src/mediatype-icon.js +10 -3
  50. package/dist/src/mediatype-icon.js.map +1 -1
  51. package/dist/src/models.d.ts +72 -14
  52. package/dist/src/models.js +57 -1
  53. package/dist/src/models.js.map +1 -1
  54. package/dist/src/restoration-state-handler.d.ts +37 -0
  55. package/dist/src/restoration-state-handler.js +177 -0
  56. package/dist/src/restoration-state-handler.js.map +1 -0
  57. package/dist/src/sort-filter-bar/alpha-bar.d.ts +1 -2
  58. package/dist/src/sort-filter-bar/alpha-bar.js +19 -9
  59. package/dist/src/sort-filter-bar/alpha-bar.js.map +1 -1
  60. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -0
  61. package/dist/src/sort-filter-bar/img/compact.js +5 -0
  62. package/dist/src/sort-filter-bar/img/compact.js.map +1 -0
  63. package/dist/src/sort-filter-bar/img/grid.d.ts +1 -0
  64. package/dist/src/sort-filter-bar/img/grid.js +5 -0
  65. package/dist/src/sort-filter-bar/img/grid.js.map +1 -0
  66. package/dist/src/sort-filter-bar/img/list.d.ts +1 -0
  67. package/dist/src/sort-filter-bar/img/list.js +5 -0
  68. package/dist/src/sort-filter-bar/img/list.js.map +1 -0
  69. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -0
  70. package/dist/src/sort-filter-bar/img/sort-triangle.js +5 -0
  71. package/dist/src/sort-filter-bar/img/sort-triangle.js.map +1 -0
  72. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -0
  73. package/dist/src/sort-filter-bar/img/tile.js +5 -0
  74. package/dist/src/sort-filter-bar/img/tile.js.map +1 -0
  75. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +65 -11
  76. package/dist/src/sort-filter-bar/sort-filter-bar.js +453 -142
  77. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
  78. package/dist/src/tiles/grid/collection-tile.js +1 -2
  79. package/dist/src/tiles/grid/collection-tile.js.map +1 -1
  80. package/dist/src/tiles/grid/item-tile.d.ts +4 -0
  81. package/dist/src/tiles/grid/item-tile.js +134 -45
  82. package/dist/src/tiles/grid/item-tile.js.map +1 -1
  83. package/dist/src/tiles/list/tile-list-compact-header.d.ts +11 -0
  84. package/dist/src/tiles/list/tile-list-compact-header.js +79 -0
  85. package/dist/src/tiles/list/tile-list-compact-header.js.map +1 -0
  86. package/dist/src/tiles/list/tile-list-compact.d.ts +1 -0
  87. package/dist/src/tiles/list/tile-list-compact.js +122 -31
  88. package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
  89. package/dist/src/tiles/list/tile-list-detail.d.ts +0 -10
  90. package/dist/src/tiles/list/tile-list-detail.js +6 -159
  91. package/dist/src/tiles/list/tile-list-detail.js.map +1 -1
  92. package/dist/src/tiles/list/tile-list.d.ts +19 -6
  93. package/dist/src/tiles/list/tile-list.js +240 -108
  94. package/dist/src/tiles/list/tile-list.js.map +1 -1
  95. package/dist/src/tiles/tile-dispatcher.d.ts +8 -1
  96. package/dist/src/tiles/tile-dispatcher.js +46 -11
  97. package/dist/src/tiles/tile-dispatcher.js.map +1 -1
  98. package/dist/src/utils/format-date.js +1 -2
  99. package/dist/src/utils/format-date.js.map +1 -1
  100. package/dist/test/{utils/format-string.test.d.ts → collection-name-cache.test.d.ts} +0 -0
  101. package/dist/test/collection-name-cache.test.js +158 -0
  102. package/dist/test/collection-name-cache.test.js.map +1 -0
  103. package/dist/test/mocks/mock-search-response.d.ts +5 -0
  104. package/dist/test/mocks/mock-search-response.js +62 -0
  105. package/dist/test/mocks/mock-search-response.js.map +1 -0
  106. package/dist/test/mocks/mock-search-service.d.ts +13 -0
  107. package/dist/test/mocks/mock-search-service.js +20 -0
  108. package/dist/test/mocks/mock-search-service.js.map +1 -0
  109. package/package.json +9 -4
  110. package/src/assets/img/icons/chevron.ts +4 -0
  111. package/src/assets/img/icons/eye-closed.ts +5 -0
  112. package/src/assets/img/icons/eye.ts +5 -0
  113. package/src/assets/img/icons/mediatype/account.ts +5 -4
  114. package/src/assets/img/icons/mediatype/audio.ts +7 -4
  115. package/src/assets/img/icons/mediatype/collection.ts +7 -4
  116. package/src/assets/img/icons/mediatype/etree.ts +10 -5
  117. package/src/assets/img/icons/mediatype/film.ts +2 -1
  118. package/src/assets/img/icons/mediatype/images.ts +9 -6
  119. package/src/assets/img/icons/mediatype/software.ts +9 -6
  120. package/src/assets/img/icons/mediatype/texts.ts +9 -6
  121. package/src/assets/img/icons/mediatype/tv.ts +10 -5
  122. package/src/assets/img/icons/mediatype/video.ts +10 -6
  123. package/src/assets/img/icons/mediatype/web.ts +9 -6
  124. package/src/collection-browser.ts +490 -105
  125. package/src/collection-facets.ts +325 -109
  126. package/src/mediatype-icon.ts +10 -3
  127. package/src/models.ts +139 -14
  128. package/src/restoration-state-handler.ts +234 -0
  129. package/src/sort-filter-bar/alpha-bar.ts +19 -9
  130. package/src/sort-filter-bar/img/compact.ts +5 -0
  131. package/src/sort-filter-bar/img/list.ts +5 -0
  132. package/src/sort-filter-bar/img/sort-triangle.ts +5 -0
  133. package/src/sort-filter-bar/img/tile.ts +5 -0
  134. package/src/sort-filter-bar/sort-filter-bar.ts +499 -149
  135. package/src/tiles/grid/collection-tile.ts +1 -2
  136. package/src/tiles/grid/item-tile.ts +138 -56
  137. package/src/tiles/list/tile-list-compact-header.ts +75 -0
  138. package/src/tiles/list/tile-list-compact.ts +209 -0
  139. package/src/tiles/list/tile-list.ts +261 -110
  140. package/src/tiles/tile-dispatcher.ts +51 -11
  141. package/src/utils/format-date.ts +1 -2
  142. package/dist/src/assets/img/icons/audio.d.ts +0 -1
  143. package/dist/src/assets/img/icons/audio.js +0 -9
  144. package/dist/src/assets/img/icons/audio.js.map +0 -1
  145. package/dist/src/assets/img/icons/collection.d.ts +0 -1
  146. package/dist/src/assets/img/icons/collection.js +0 -9
  147. package/dist/src/assets/img/icons/collection.js.map +0 -1
  148. package/dist/src/assets/img/icons/etree.d.ts +0 -1
  149. package/dist/src/assets/img/icons/etree.js +0 -9
  150. package/dist/src/assets/img/icons/etree.js.map +0 -1
  151. package/dist/src/assets/img/icons/images.d.ts +0 -1
  152. package/dist/src/assets/img/icons/images.js +0 -10
  153. package/dist/src/assets/img/icons/images.js.map +0 -1
  154. package/dist/src/assets/img/icons/mediatype/etree copy.d.ts +0 -1
  155. package/dist/src/assets/img/icons/mediatype/etree copy.js +0 -9
  156. package/dist/src/assets/img/icons/mediatype/etree copy.js.map +0 -1
  157. package/dist/src/assets/img/icons/mediatype/livemusic.d.ts +0 -1
  158. package/dist/src/assets/img/icons/mediatype/livemusic.js +0 -7
  159. package/dist/src/assets/img/icons/mediatype/livemusic.js.map +0 -1
  160. package/dist/src/assets/img/icons/mediatype/photos.d.ts +0 -1
  161. package/dist/src/assets/img/icons/mediatype/photos.js +0 -7
  162. package/dist/src/assets/img/icons/mediatype/photos.js.map +0 -1
  163. package/dist/src/assets/img/icons/software.d.ts +0 -1
  164. package/dist/src/assets/img/icons/software.js +0 -10
  165. package/dist/src/assets/img/icons/software.js.map +0 -1
  166. package/dist/src/assets/img/icons/texts.d.ts +0 -1
  167. package/dist/src/assets/img/icons/texts.js +0 -10
  168. package/dist/src/assets/img/icons/texts.js.map +0 -1
  169. package/dist/src/assets/img/icons/tv.d.ts +0 -1
  170. package/dist/src/assets/img/icons/tv.js +0 -9
  171. package/dist/src/assets/img/icons/tv.js.map +0 -1
  172. package/dist/src/assets/img/icons/video.d.ts +0 -1
  173. package/dist/src/assets/img/icons/video.js +0 -10
  174. package/dist/src/assets/img/icons/video.js.map +0 -1
  175. package/dist/src/assets/img/icons/web.d.ts +0 -1
  176. package/dist/src/assets/img/icons/web.js +0 -10
  177. package/dist/src/assets/img/icons/web.js.map +0 -1
  178. package/dist/src/utils/format-string.d.ts +0 -2
  179. package/dist/src/utils/format-string.js +0 -7
  180. package/dist/src/utils/format-string.js.map +0 -1
  181. package/dist/test/utils/format-string.test.js +0 -17
  182. package/dist/test/utils/format-string.test.js.map +0 -1
  183. package/src/assets/img/icons/mediatype/foo.svg +0 -5
@@ -1,30 +1,43 @@
1
1
  import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
2
+ import { css, html, LitElement, nothing } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
+ import DOMPurify from 'dompurify';
4
5
  import { formatCount } from '../../utils/format-count';
5
6
  import { formatDate } from '../../utils/format-date';
6
7
  import '../../mediatype-icon';
7
- /*
8
- at 750 creator, title trimmed
9
- at 530
10
- */
11
8
  let TileListCompact = class TileListCompact extends LitElement {
12
9
  render() {
13
- var _a, _b, _c, _d, _e;
10
+ var _a, _b, _c, _d, _e, _f, _g;
14
11
  return html `
15
- <div id="list-compact" class="${this.classSize}">
12
+ <div id="list-line" class="${this.classSize}">
13
+ <div id="thumb">${this.imageTemplate}</div>
14
+ <div id="title">${DOMPurify.sanitize((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.title) !== null && _b !== void 0 ? _b : '')}</div>
15
+ <div id="date">${formatDate(this.date, this.formatSize)}</div>
16
+ <div id="creator">${DOMPurify.sanitize((_d = (_c = this.model) === null || _c === void 0 ? void 0 : _c.creator) !== null && _d !== void 0 ? _d : '')}</div>
16
17
  <div id="views">
17
- ${formatCount((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.viewCount) !== null && _b !== void 0 ? _b : 0, this.formatSize)}
18
+ ${formatCount((_f = (_e = this.model) === null || _e === void 0 ? void 0 : _e.viewCount) !== null && _f !== void 0 ? _f : 0, this.formatSize)}
18
19
  </div>
19
- <div id="title">${(_c = this.model) === null || _c === void 0 ? void 0 : _c.title}</div>
20
- <div id="date">${formatDate(this.date, this.formatSize)}</div>
21
- <div id="creator">${(_d = this.model) === null || _d === void 0 ? void 0 : _d.creator}</div>
22
20
  <div id="icon">
23
- <mediatype-icon .mediatype=${(_e = this.model) === null || _e === void 0 ? void 0 : _e.mediatype}></mediatype-icon>
21
+ <mediatype-icon
22
+ .mediatype=${(_g = this.model) === null || _g === void 0 ? void 0 : _g.mediatype}
23
+ style="--iconHeight: 20px; --iconWidth: 20px;"
24
+ >
25
+ </mediatype-icon>
24
26
  </div>
25
27
  </div>
26
28
  `;
27
29
  }
30
+ get imageTemplate() {
31
+ var _a, _b;
32
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier)) {
33
+ return nothing;
34
+ }
35
+ return html ` <img
36
+ src="${this.baseNavigationUrl}/services/img/${this.model.identifier}"
37
+ alt="${this.model.identifier}"
38
+ class="${(_b = this.model) === null || _b === void 0 ? void 0 : _b.mediatype}"
39
+ />`;
40
+ }
28
41
  /*
29
42
  * TODO: fix field names to match model in src/collection-browser.ts
30
43
  * private get dateSortSelector()
@@ -53,31 +66,51 @@ let TileListCompact = class TileListCompact extends LitElement {
53
66
  }
54
67
  static get styles() {
55
68
  return css `
56
- .mobile div {
57
- font-size: 11px;
69
+ html {
70
+ font-size: unset;
58
71
  }
59
- .desktop div {
72
+
73
+ div {
60
74
  font-size: 14px;
61
75
  }
62
76
 
63
- #list-compact {
64
- display: grid;
65
- column-gap: 10px;
66
- line-height: 1.42857143;
67
- border-top: 1px solid #ddd !important;
68
- padding-top: 5px;
69
- align-items: center;
77
+ /* fields */
78
+
79
+ #thumb {
80
+ padding-left: 6px;
70
81
  }
71
82
 
72
- #list-compact.mobile {
73
- grid-template-columns: 33px 3fr 30px 2fr 29.5px;
83
+ #thumb img {
84
+ object-fit: cover;
85
+ display: block;
74
86
  }
75
- #list-compact.desktop {
76
- grid-template-columns: 60px 3fr 90px 2fr 29.5px;
87
+
88
+ .mobile #thumb img {
89
+ width: 30px;
90
+ height: 30px;
77
91
  }
78
92
 
79
- #list-compact:hover #title {
80
- text-decoration: underline;
93
+ .desktop #thumb img {
94
+ width: 45px;
95
+ height: 45px;
96
+ }
97
+
98
+ #thumb img.collection {
99
+ border-radius: 8px;
100
+ -webkit-border-radius: 8px;
101
+ -moz-border-radius: 8px;
102
+ }
103
+
104
+ .mobile #thumb img.account {
105
+ border-radius: 15px;
106
+ -webkit-border-radius: 15px;
107
+ -moz-border-radius: 15px;
108
+ }
109
+
110
+ .desktop #thumb img.account {
111
+ border-radius: 22.5px;
112
+ -webkit-border-radius: 22.5px;
113
+ -moz-border-radius: 22.5px;
81
114
  }
82
115
 
83
116
  #title {
@@ -92,14 +125,72 @@ let TileListCompact = class TileListCompact extends LitElement {
92
125
  white-space: nowrap;
93
126
  }
94
127
 
95
- #views,
96
- #date {
128
+ #views {
97
129
  text-align: right;
98
- color: #767676;
99
130
  }
131
+
132
+ .mobile #views {
133
+ display: none;
134
+ }
135
+
100
136
  #icon {
137
+ height: 20px;
101
138
  padding-right: 6px;
102
139
  }
140
+
141
+ .mobile #icon {
142
+ height: 14px;
143
+ }
144
+
145
+ .desktop #icon {
146
+ height: 20px;
147
+ }
148
+
149
+ /* list-line */
150
+
151
+ #list-line {
152
+ display: grid;
153
+ column-gap: 10px;
154
+ border-top: 1px solid #ddd;
155
+ align-items: center;
156
+ line-height: 20px;
157
+ }
158
+
159
+ #list-line.mobile {
160
+ grid-template-columns: 30px 3fr 29px 2fr 19px;
161
+ padding-top: 2px;
162
+ padding-bottom: 2px;
163
+ }
164
+
165
+ #list-line.desktop {
166
+ grid-template-columns: 51px 3fr 100px 2fr 60px 26px;
167
+ padding-top: 5px;
168
+ padding-bottom: 5px;
169
+ }
170
+
171
+ /*
172
+ #title {
173
+ flex-grow: 3;
174
+ flex-shrink: 3;
175
+ flex-basis: 0;
176
+ }
177
+
178
+ #creator {
179
+ flex-grow: 2;
180
+ flex-shrink: 2;
181
+ flex-basis: 0;
182
+ }
183
+
184
+ #date {
185
+ flex-grow: 1;
186
+ flex-shrink: 1;
187
+ flex-basis: 0;
188
+ }
189
+ */
190
+
191
+ #list-line:hover #title {
192
+ text-decoration: underline;
193
+ }
103
194
  `;
104
195
  }
105
196
  };
@@ -1 +1 @@
1
- {"version":3,"file":"tile-list-compact.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-compact.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAc,MAAM,yBAAyB,CAAC;AACjE,OAAO,sBAAsB,CAAC;AAE9B;;;EAGE;AAGF,IAAa,eAAe,GAA5B,MAAa,eAAgB,SAAQ,UAAU;IAW7C,MAAM;;QACJ,OAAO,IAAI,CAAA;sCACuB,IAAI,CAAC,SAAS;;YAExC,WAAW,CAAC,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,mCAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;;0BAE1C,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;yBAClB,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;4BACnC,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO;;uCAER,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;;;KAGvD,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,IAAY,IAAI;;QACd,QAAQ,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,EAAE;YAC7B,KAAK,MAAM;gBACT,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAC;YACnC,KAAK,YAAY;gBACf,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC;YAClC,KAAK,WAAW;gBACd,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,CAAC;YAC/B;gBACE,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,CAAC,aAAa;SACjD;IACH,CAAC;IAED,IAAY,SAAS;;QACnB,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IAED,IAAY,UAAU;;QACpB,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAgDT,CAAC;IACJ,CAAC;CACF,CAAA;AAvG6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;8CAAmB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0DAA4B;AAE3B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDAAuB;AAEtB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;sDAAwB;AAEvB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;kDAAuB;AATvC,eAAe;IAD3B,aAAa,CAAC,mBAAmB,CAAC;GACtB,eAAe,CAwG3B;SAxGY,eAAe","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { SortParam } from '@internetarchive/search-service';\nimport { TileModel } from '../../models';\nimport { formatCount, NumberFormat } from '../../utils/format-count';\nimport { formatDate, DateFormat } from '../../utils/format-date';\nimport '../../mediatype-icon';\n\n/*\nat 750 creator, title trimmed\nat 530\n*/\n\n@customElement('tile-list-compact')\nexport class TileListCompact extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseNavigationUrl?: string;\n\n @property({ type: Number }) currentWidth?: number;\n\n @property({ type: Number }) currentHeight?: number;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n render() {\n return html`\n <div id=\"list-compact\" class=\"${this.classSize}\">\n <div id=\"views\">\n ${formatCount(this.model?.viewCount ?? 0, this.formatSize)}\n </div>\n <div id=\"title\">${this.model?.title}</div>\n <div id=\"date\">${formatDate(this.date, this.formatSize)}</div>\n <div id=\"creator\">${this.model?.creator}</div>\n <div id=\"icon\">\n <mediatype-icon .mediatype=${this.model?.mediatype}></mediatype-icon>\n </div>\n </div>\n `;\n }\n\n /*\n * TODO: fix field names to match model in src/collection-browser.ts\n * private get dateSortSelector()\n * @see src/models.ts\n */\n private get date(): Date | undefined {\n switch (this.sortParam?.field) {\n case 'date':\n return this.model?.datePublished;\n case 'reviewdate':\n return this.model?.dateReviewed;\n case 'addeddate':\n return this.model?.dateAdded;\n default:\n return this.model?.dateArchived; // publicdate\n }\n }\n\n private get classSize(): string {\n return (this.currentWidth ?? 531) < 530 ? 'mobile' : 'desktop';\n }\n\n private get formatSize(): DateFormat | NumberFormat {\n return (this.currentWidth ?? 531) < 530 ? 'short' : 'long';\n }\n\n static get styles() {\n return css`\n .mobile div {\n font-size: 11px;\n }\n .desktop div {\n font-size: 14px;\n }\n\n #list-compact {\n display: grid;\n column-gap: 10px;\n line-height: 1.42857143;\n border-top: 1px solid #ddd !important;\n padding-top: 5px;\n align-items: center;\n }\n\n #list-compact.mobile {\n grid-template-columns: 33px 3fr 30px 2fr 29.5px;\n }\n #list-compact.desktop {\n grid-template-columns: 60px 3fr 90px 2fr 29.5px;\n }\n\n #list-compact:hover #title {\n text-decoration: underline;\n }\n\n #title {\n color: #4b64ff;\n text-decoration: none;\n }\n\n #title,\n #creator {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n #views,\n #date {\n text-align: right;\n color: #767676;\n }\n #icon {\n padding-right: 6px;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"tile-list-compact.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-compact.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { SortParam } from '@internetarchive/search-service';\nimport DOMPurify from 'dompurify';\nimport { TileModel } from '../../models';\nimport { formatCount, NumberFormat } from '../../utils/format-count';\nimport { formatDate, DateFormat } from '../../utils/format-date';\nimport '../../mediatype-icon';\n\n@customElement('tile-list-compact')\nexport class TileListCompact extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseNavigationUrl?: string;\n\n @property({ type: Number }) currentWidth?: number;\n\n @property({ type: Number }) currentHeight?: number;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n render() {\n return html`\n <div id=\"list-line\" class=\"${this.classSize}\">\n <div id=\"thumb\">${this.imageTemplate}</div>\n <div id=\"title\">${DOMPurify.sanitize(this.model?.title ?? '')}</div>\n <div id=\"date\">${formatDate(this.date, this.formatSize)}</div>\n <div id=\"creator\">${DOMPurify.sanitize(this.model?.creator ?? '')}</div>\n <div id=\"views\">\n ${formatCount(this.model?.viewCount ?? 0, this.formatSize)}\n </div>\n <div id=\"icon\">\n <mediatype-icon\n .mediatype=${this.model?.mediatype}\n style=\"--iconHeight: 20px; --iconWidth: 20px;\"\n >\n </mediatype-icon>\n </div>\n </div>\n `;\n }\n\n private get imageTemplate() {\n if (!this.model?.identifier) {\n return nothing;\n }\n return html` <img\n src=\"${this.baseNavigationUrl}/services/img/${this.model.identifier}\"\n alt=\"${this.model.identifier}\"\n class=\"${this.model?.mediatype}\"\n />`;\n }\n\n /*\n * TODO: fix field names to match model in src/collection-browser.ts\n * private get dateSortSelector()\n * @see src/models.ts\n */\n private get date(): Date | undefined {\n switch (this.sortParam?.field) {\n case 'date':\n return this.model?.datePublished;\n case 'reviewdate':\n return this.model?.dateReviewed;\n case 'addeddate':\n return this.model?.dateAdded;\n default:\n return this.model?.dateArchived; // publicdate\n }\n }\n\n private get classSize(): string {\n return (this.currentWidth ?? 531) < 530 ? 'mobile' : 'desktop';\n }\n\n private get formatSize(): DateFormat | NumberFormat {\n return (this.currentWidth ?? 531) < 530 ? 'short' : 'long';\n }\n\n static get styles() {\n return css`\n html {\n font-size: unset;\n }\n\n div {\n font-size: 14px;\n }\n\n /* fields */\n\n #thumb {\n padding-left: 6px;\n }\n\n #thumb img {\n object-fit: cover;\n display: block;\n }\n\n .mobile #thumb img {\n width: 30px;\n height: 30px;\n }\n\n .desktop #thumb img {\n width: 45px;\n height: 45px;\n }\n\n #thumb img.collection {\n border-radius: 8px;\n -webkit-border-radius: 8px;\n -moz-border-radius: 8px;\n }\n\n .mobile #thumb img.account {\n border-radius: 15px;\n -webkit-border-radius: 15px;\n -moz-border-radius: 15px;\n }\n\n .desktop #thumb img.account {\n border-radius: 22.5px;\n -webkit-border-radius: 22.5px;\n -moz-border-radius: 22.5px;\n }\n\n #title {\n color: #4b64ff;\n text-decoration: none;\n }\n\n #title,\n #creator {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n #views {\n text-align: right;\n }\n\n .mobile #views {\n display: none;\n }\n\n #icon {\n height: 20px;\n padding-right: 6px;\n }\n\n .mobile #icon {\n height: 14px;\n }\n\n .desktop #icon {\n height: 20px;\n }\n\n /* list-line */\n\n #list-line {\n display: grid;\n column-gap: 10px;\n border-top: 1px solid #ddd;\n align-items: center;\n line-height: 20px;\n }\n\n #list-line.mobile {\n grid-template-columns: 30px 3fr 29px 2fr 19px;\n padding-top: 2px;\n padding-bottom: 2px;\n }\n\n #list-line.desktop {\n grid-template-columns: 51px 3fr 100px 2fr 60px 26px;\n padding-top: 5px;\n padding-bottom: 5px;\n }\n\n /*\n #title {\n flex-grow: 3;\n flex-shrink: 3;\n flex-basis: 0;\n }\n\n #creator {\n flex-grow: 2;\n flex-shrink: 2;\n flex-basis: 0;\n }\n\n #date {\n flex-grow: 1;\n flex-shrink: 1;\n flex-basis: 0;\n }\n */\n\n #list-line:hover #title {\n text-decoration: underline;\n }\n `;\n }\n}\n"]}
@@ -1,17 +1,7 @@
1
1
  import { LitElement } from 'lit';
2
- import { SortParam } from '@internetarchive/search-service';
3
2
  import { TileModel } from '../../models';
4
- import '../../mediatype-icon';
5
3
  export declare class TileListDetail extends LitElement {
6
4
  model?: TileModel;
7
- baseNavigationUrl?: string;
8
- currentWidth?: number;
9
- currentHeight?: number;
10
- sortParam?: SortParam;
11
5
  render(): import("lit-html").TemplateResult<1>;
12
- private description;
13
- private get date();
14
- private get classSize();
15
- private get formatSize();
16
6
  static get styles(): import("lit").CSSResult;
17
7
  }
@@ -1,160 +1,19 @@
1
1
  import { __decorate } from "tslib";
2
2
  import { css, html, LitElement } from 'lit';
3
3
  import { customElement, property } from 'lit/decorators.js';
4
- import { formatCount } from '../../utils/format-count';
5
- import { formatDate } from '../../utils/format-date';
6
- import '../../mediatype-icon';
7
- /*
8
- at 750 creator, title trimmed
9
- at 530
10
- */
11
4
  let TileListDetail = class TileListDetail extends LitElement {
12
5
  render() {
13
- var _a, _b, _c, _d, _e;
6
+ var _a, _b, _c, _d;
14
7
  return html `
15
- <div id="list-detail-1" class="${this.classSize}">
16
- <div id="views">
17
- ${formatCount((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.viewCount) !== null && _b !== void 0 ? _b : 0, this.formatSize)}
18
- </div>
19
- <div id="title">${(_c = this.model) === null || _c === void 0 ? void 0 : _c.title}</div>
20
- <div id="date">${formatDate(this.date, this.formatSize)}</div>
21
- <div id="creator">${(_d = this.model) === null || _d === void 0 ? void 0 : _d.creator}</div>
22
- <div id="icon">
23
- <mediatype-icon .mediatype=${(_e = this.model) === null || _e === void 0 ? void 0 : _e.mediatype}></mediatype-icon>
24
- </div>
25
- </div>
26
- <div id="list-detail-2" class="${this.classSize}">
27
- <div></div>
28
- <div id="details">${this.description()}</div>
29
- <div></div>
30
- </div>
8
+ <h1>${(_a = this.model) === null || _a === void 0 ? void 0 : _a.title}</h1>
9
+ <h2>${(_c = (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished) === null || _c === void 0 ? void 0 : _c.toDateString()}</h2>
10
+ <p>${(_d = this.model) === null || _d === void 0 ? void 0 : _d.description}</p>
31
11
  `;
32
12
  }
33
- description() {
34
- var _a, _b;
35
- if ((_a = this.model) === null || _a === void 0 ? void 0 : _a.description) {
36
- return html `
37
- <div id="description">
38
- <div id="description">${(_b = this.model) === null || _b === void 0 ? void 0 : _b.description}</div>
39
- </div>
40
- `;
41
- }
42
- return html ``;
43
- }
44
- /*
45
- * TODO: fix field names to match model in src/collection-browser.ts
46
- * private get dateSortSelector()
47
- * @see src/models.ts
48
- */
49
- get date() {
50
- var _a, _b, _c, _d, _e;
51
- switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
52
- case 'date':
53
- return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
54
- case 'reviewdate':
55
- return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
56
- case 'addeddate':
57
- return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
58
- default:
59
- return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
60
- }
61
- }
62
- get classSize() {
63
- var _a;
64
- return ((_a = this.currentWidth) !== null && _a !== void 0 ? _a : 531) < 530 ? 'mobile' : 'desktop';
65
- }
66
- get formatSize() {
67
- var _a;
68
- return ((_a = this.currentWidth) !== null && _a !== void 0 ? _a : 531) < 530 ? 'short' : 'long';
69
- }
70
13
  static get styles() {
71
14
  return css `
72
- .mobile div {
73
- font-size: 11px;
74
- }
75
- .desktop div {
76
- font-size: 14px;
77
- }
78
-
79
- #list-detail-1 {
80
- display: grid;
81
- column-gap: 10px;
82
- line-height: 1.42857143;
83
- border-top: 1px solid #ddd !important;
84
- padding-top: 5px;
85
- align-items: center;
86
- }
87
-
88
- #list-detail-1.mobile {
89
- grid-template-columns: 33px 3fr 30px 2fr 29.5px;
90
- }
91
- #list-detail-1.desktop {
92
- grid-template-columns: 60px 3fr 90px 2fr 29.5px;
93
- }
94
-
95
- #list-detail-1:hover #title {
96
- text-decoration: underline;
97
- }
98
-
99
- #list-detail-2 {
100
- display: grid;
101
- column-gap: 10px;
102
- line-height: 1.42857143;
103
- align-items: center;
104
- }
105
-
106
- #list-detail-2.mobile {
107
- grid-template-columns: 33px auto 29.5px;
108
- }
109
-
110
- #list-detail-2.desktop {
111
- grid-template-columns: 60px auto 29.5px;
112
- }
113
-
114
- #title {
115
- color: #4b64ff;
116
- text-decoration: none;
117
- }
118
-
119
- /*
120
- #details {
121
- /*
122
- max-height:3rem;
123
- overflow:hidden;
124
- }
125
- */
126
- #description {
127
- overflow: hidden;
128
- font-size: 12px;
129
- overflow-y: ellipsis;
130
- -webkit-line-clamp: 2;
131
- -webkit-box-orient: vertical;
132
- display: -webkit-box;
133
- word-break: break-word;
134
- -webkit-line-clamp: 3; /* number of lines to show */
135
- line-clamp: 3;
136
- -webkit-box-orient: vertical;
137
- text-align: left;
138
- }
139
-
140
- #title,
141
- #creator #description {
142
- text-overflow: ellipsis;
143
- overflow: hidden;
144
- white-space: nowrap;
145
- }
146
-
147
- #views,
148
- #date {
149
- text-align: right;
150
- }
151
-
152
- #views,
153
- #details {
154
- color: #767676;
155
- }
156
- #icon {
157
- padding-right: 6px;
15
+ h1 {
16
+ margin-top: 0;
158
17
  }
159
18
  `;
160
19
  }
@@ -162,18 +21,6 @@ let TileListDetail = class TileListDetail extends LitElement {
162
21
  __decorate([
163
22
  property({ type: Object })
164
23
  ], TileListDetail.prototype, "model", void 0);
165
- __decorate([
166
- property({ type: String })
167
- ], TileListDetail.prototype, "baseNavigationUrl", void 0);
168
- __decorate([
169
- property({ type: Number })
170
- ], TileListDetail.prototype, "currentWidth", void 0);
171
- __decorate([
172
- property({ type: Number })
173
- ], TileListDetail.prototype, "currentHeight", void 0);
174
- __decorate([
175
- property({ type: Object })
176
- ], TileListDetail.prototype, "sortParam", void 0);
177
24
  TileListDetail = __decorate([
178
25
  customElement('tile-list-detail')
179
26
  ], TileListDetail);
@@ -1 +1 @@
1
- {"version":3,"file":"tile-list-detail.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-detail.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,WAAW,EAAgB,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAc,MAAM,yBAAyB,CAAC;AACjE,OAAO,sBAAsB,CAAC;AAE9B;;;EAGE;AAGF,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAW5C,MAAM;;QACJ,OAAO,IAAI,CAAA;uCACwB,IAAI,CAAC,SAAS;;YAEzC,WAAW,CAAC,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,mCAAI,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC;;0BAE1C,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;yBAClB,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC;4BACnC,MAAA,IAAI,CAAC,KAAK,0CAAE,OAAO;;uCAER,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;;;uCAGrB,IAAI,CAAC,SAAS;;4BAEzB,IAAI,CAAC,WAAW,EAAE;;;KAGzC,CAAC;IACJ,CAAC;IAEO,WAAW;;QACjB,IAAI,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW,EAAE;YAC3B,OAAO,IAAI,CAAA;;kCAEiB,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW;;OAElD,CAAC;SACH;QACD,OAAO,IAAI,CAAA,EAAE,CAAC;IAChB,CAAC;IAED;;;;OAIG;IACH,IAAY,IAAI;;QACd,QAAQ,MAAA,IAAI,CAAC,SAAS,0CAAE,KAAK,EAAE;YAC7B,KAAK,MAAM;gBACT,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,CAAC;YACnC,KAAK,YAAY;gBACf,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC;YAClC,KAAK,WAAW;gBACd,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,CAAC;YAC/B;gBACE,OAAO,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY,CAAC,CAAC,aAAa;SACjD;IACH,CAAC;IAED,IAAY,SAAS;;QACnB,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,CAAC;IAED,IAAY,UAAU;;QACpB,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,mCAAI,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwFT,CAAC;IACJ,CAAC;CACF,CAAA;AA/J6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAmB;AAElB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;yDAA4B;AAE3B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;oDAAuB;AAEtB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;qDAAwB;AAEvB;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;iDAAuB;AATvC,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAgK1B;SAhKY,cAAc","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { SortParam } from '@internetarchive/search-service';\nimport { TileModel } from '../../models';\nimport { formatCount, NumberFormat } from '../../utils/format-count';\nimport { formatDate, DateFormat } from '../../utils/format-date';\nimport '../../mediatype-icon';\n\n/*\nat 750 creator, title trimmed\nat 530\n*/\n\n@customElement('tile-list-detail')\nexport class TileListDetail extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) baseNavigationUrl?: string;\n\n @property({ type: Number }) currentWidth?: number;\n\n @property({ type: Number }) currentHeight?: number;\n\n @property({ type: Object }) sortParam?: SortParam;\n\n render() {\n return html`\n <div id=\"list-detail-1\" class=\"${this.classSize}\">\n <div id=\"views\">\n ${formatCount(this.model?.viewCount ?? 0, this.formatSize)}\n </div>\n <div id=\"title\">${this.model?.title}</div>\n <div id=\"date\">${formatDate(this.date, this.formatSize)}</div>\n <div id=\"creator\">${this.model?.creator}</div>\n <div id=\"icon\">\n <mediatype-icon .mediatype=${this.model?.mediatype}></mediatype-icon>\n </div>\n </div>\n <div id=\"list-detail-2\" class=\"${this.classSize}\">\n <div></div>\n <div id=\"details\">${this.description()}</div>\n <div></div>\n </div>\n `;\n }\n\n private description() {\n if (this.model?.description) {\n return html`\n <div id=\"description\">\n <div id=\"description\">${this.model?.description}</div>\n </div>\n `;\n }\n return html``;\n }\n\n /*\n * TODO: fix field names to match model in src/collection-browser.ts\n * private get dateSortSelector()\n * @see src/models.ts\n */\n private get date(): Date | undefined {\n switch (this.sortParam?.field) {\n case 'date':\n return this.model?.datePublished;\n case 'reviewdate':\n return this.model?.dateReviewed;\n case 'addeddate':\n return this.model?.dateAdded;\n default:\n return this.model?.dateArchived; // publicdate\n }\n }\n\n private get classSize(): string {\n return (this.currentWidth ?? 531) < 530 ? 'mobile' : 'desktop';\n }\n\n private get formatSize(): DateFormat | NumberFormat {\n return (this.currentWidth ?? 531) < 530 ? 'short' : 'long';\n }\n\n static get styles() {\n return css`\n .mobile div {\n font-size: 11px;\n }\n .desktop div {\n font-size: 14px;\n }\n\n #list-detail-1 {\n display: grid;\n column-gap: 10px;\n line-height: 1.42857143;\n border-top: 1px solid #ddd !important;\n padding-top: 5px;\n align-items: center;\n }\n\n #list-detail-1.mobile {\n grid-template-columns: 33px 3fr 30px 2fr 29.5px;\n }\n #list-detail-1.desktop {\n grid-template-columns: 60px 3fr 90px 2fr 29.5px;\n }\n\n #list-detail-1:hover #title {\n text-decoration: underline;\n }\n\n #list-detail-2 {\n display: grid;\n column-gap: 10px;\n line-height: 1.42857143;\n align-items: center;\n }\n\n #list-detail-2.mobile {\n grid-template-columns: 33px auto 29.5px;\n }\n\n #list-detail-2.desktop {\n grid-template-columns: 60px auto 29.5px;\n }\n\n #title {\n color: #4b64ff;\n text-decoration: none;\n }\n\n /*\n #details {\n /*\n max-height:3rem;\n overflow:hidden;\n }\n*/\n #description {\n overflow: hidden;\n font-size: 12px;\n overflow-y: ellipsis;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n display: -webkit-box;\n word-break: break-word;\n -webkit-line-clamp: 3; /* number of lines to show */\n line-clamp: 3;\n -webkit-box-orient: vertical;\n text-align: left;\n }\n\n #title,\n #creator #description {\n text-overflow: ellipsis;\n overflow: hidden;\n white-space: nowrap;\n }\n\n #views,\n #date {\n text-align: right;\n }\n\n #views,\n #details {\n color: #767676;\n }\n #icon {\n padding-right: 6px;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"tile-list-detail.js","sourceRoot":"","sources":["../../../../src/tiles/list/tile-list-detail.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAI5D,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAG5C,MAAM;;QACJ,OAAO,IAAI,CAAA;YACH,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;YACjB,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,aAAa,0CAAE,YAAY,EAAE;WAC1C,MAAA,IAAI,CAAC,KAAK,0CAAE,WAAW;KAC7B,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;KAIT,CAAC;IACJ,CAAC;CACF,CAAA;AAjB6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAmB;AADnC,cAAc;IAD1B,aAAa,CAAC,kBAAkB,CAAC;GACrB,cAAc,CAkB1B;SAlBY,cAAc","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TileModel } from '../../models';\n\n@customElement('tile-list-detail')\nexport class TileListDetail extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <h1>${this.model?.title}</h1>\n <h2>${this.model?.datePublished?.toDateString()}</h2>\n <p>${this.model?.description}</p>\n `;\n }\n\n static get styles() {\n return css`\n h1 {\n margin-top: 0;\n }\n `;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { LitElement } from 'lit';
2
2
  import { SortParam } from '@internetarchive/search-service';
3
- import { CollectionDisplayMode, TileModel } from '../../models';
3
+ import { TileModel } from '../../models';
4
4
  import '../../mediatype-icon';
5
5
  export declare class TileList extends LitElement {
6
6
  model?: TileModel;
@@ -8,12 +8,25 @@ export declare class TileList extends LitElement {
8
8
  currentWidth?: number;
9
9
  currentHeight?: number;
10
10
  sortParam?: SortParam;
11
- displayMode: CollectionDisplayMode;
12
11
  render(): import("lit-html").TemplateResult<1>;
13
- private detail;
14
- private description;
15
- private topic;
16
- private source;
12
+ private get imgTemplate();
13
+ private get iconLeftTemplate();
14
+ private get titleTemplate();
15
+ private get itemLineTemplate();
16
+ private get volumeTemplate();
17
+ private get issueTemplate();
18
+ private get sourceTemplate();
19
+ private get creatorTemplate();
20
+ private get viewsTemplate();
21
+ private get ratingTemplate();
22
+ private get reviewsTemplate();
23
+ private get topicsTemplate();
24
+ private get collectionsTemplate();
25
+ private get descriptionTemplate();
26
+ private metadataTemplate;
27
+ private labelTemplate;
28
+ private searchLink;
29
+ private detailsLink;
17
30
  private get date();
18
31
  private get classSize();
19
32
  private get formatSize();