@internetarchive/collection-browser 0.2.11 → 0.2.12

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 (218) hide show
  1. package/package.json +2 -2
  2. package/renovate.json +6 -0
  3. package/src/assets/img/icons/login-required.ts +30 -0
  4. package/src/collection-browser.ts +15 -10
  5. package/src/styles/item-image-styles.ts +4 -3
  6. package/src/tiles/grid/item-tile.ts +22 -19
  7. package/src/tiles/image-block.ts +124 -0
  8. package/src/tiles/item-image.ts +3 -1
  9. package/src/tiles/list/tile-list-compact.ts +19 -56
  10. package/src/tiles/list/tile-list.ts +18 -54
  11. package/src/tiles/overlay/icon-overlay.ts +34 -0
  12. package/src/tiles/overlay/text-overlay.ts +48 -0
  13. package/src/tiles/tile-dispatcher.ts +13 -4
  14. package/test/icon-overlay.test.ts +41 -0
  15. package/test/item-image.test.ts +82 -0
  16. package/test/text-overlay.test.ts +57 -0
  17. package/test/tiles/grid/item-tile.test.ts +2 -2
  18. package/dist/index.d.ts +0 -9
  19. package/dist/index.js.map +0 -1
  20. package/dist/src/app-root.d.ts +0 -32
  21. package/dist/src/app-root.js +0 -285
  22. package/dist/src/app-root.js.map +0 -1
  23. package/dist/src/assets/img/icons/chevron.d.ts +0 -2
  24. package/dist/src/assets/img/icons/chevron.js +0 -4
  25. package/dist/src/assets/img/icons/chevron.js.map +0 -1
  26. package/dist/src/assets/img/icons/empty-query.d.ts +0 -2
  27. package/dist/src/assets/img/icons/empty-query.js +0 -5
  28. package/dist/src/assets/img/icons/empty-query.js.map +0 -1
  29. package/dist/src/assets/img/icons/eye-closed.d.ts +0 -2
  30. package/dist/src/assets/img/icons/eye-closed.js +0 -5
  31. package/dist/src/assets/img/icons/eye-closed.js.map +0 -1
  32. package/dist/src/assets/img/icons/eye.d.ts +0 -2
  33. package/dist/src/assets/img/icons/eye.js +0 -5
  34. package/dist/src/assets/img/icons/eye.js.map +0 -1
  35. package/dist/src/assets/img/icons/favorite-filled.d.ts +0 -1
  36. package/dist/src/assets/img/icons/favorite-filled.js +0 -11
  37. package/dist/src/assets/img/icons/favorite-filled.js.map +0 -1
  38. package/dist/src/assets/img/icons/mediatype/account.d.ts +0 -1
  39. package/dist/src/assets/img/icons/mediatype/account.js +0 -14
  40. package/dist/src/assets/img/icons/mediatype/account.js.map +0 -1
  41. package/dist/src/assets/img/icons/mediatype/audio.d.ts +0 -1
  42. package/dist/src/assets/img/icons/mediatype/audio.js +0 -14
  43. package/dist/src/assets/img/icons/mediatype/audio.js.map +0 -1
  44. package/dist/src/assets/img/icons/mediatype/collection.d.ts +0 -1
  45. package/dist/src/assets/img/icons/mediatype/collection.js +0 -12
  46. package/dist/src/assets/img/icons/mediatype/collection.js.map +0 -1
  47. package/dist/src/assets/img/icons/mediatype/data.d.ts +0 -1
  48. package/dist/src/assets/img/icons/mediatype/data.js +0 -15
  49. package/dist/src/assets/img/icons/mediatype/data.js.map +0 -1
  50. package/dist/src/assets/img/icons/mediatype/etree.d.ts +0 -1
  51. package/dist/src/assets/img/icons/mediatype/etree.js +0 -14
  52. package/dist/src/assets/img/icons/mediatype/etree.js.map +0 -1
  53. package/dist/src/assets/img/icons/mediatype/film.d.ts +0 -1
  54. package/dist/src/assets/img/icons/mediatype/film.js +0 -14
  55. package/dist/src/assets/img/icons/mediatype/film.js.map +0 -1
  56. package/dist/src/assets/img/icons/mediatype/images.d.ts +0 -1
  57. package/dist/src/assets/img/icons/mediatype/images.js +0 -13
  58. package/dist/src/assets/img/icons/mediatype/images.js.map +0 -1
  59. package/dist/src/assets/img/icons/mediatype/radio.d.ts +0 -1
  60. package/dist/src/assets/img/icons/mediatype/radio.js +0 -15
  61. package/dist/src/assets/img/icons/mediatype/radio.js.map +0 -1
  62. package/dist/src/assets/img/icons/mediatype/software.d.ts +0 -1
  63. package/dist/src/assets/img/icons/mediatype/software.js +0 -13
  64. package/dist/src/assets/img/icons/mediatype/software.js.map +0 -1
  65. package/dist/src/assets/img/icons/mediatype/texts.d.ts +0 -1
  66. package/dist/src/assets/img/icons/mediatype/texts.js +0 -13
  67. package/dist/src/assets/img/icons/mediatype/texts.js.map +0 -1
  68. package/dist/src/assets/img/icons/mediatype/tv.d.ts +0 -1
  69. package/dist/src/assets/img/icons/mediatype/tv.js +0 -14
  70. package/dist/src/assets/img/icons/mediatype/tv.js.map +0 -1
  71. package/dist/src/assets/img/icons/mediatype/video.d.ts +0 -1
  72. package/dist/src/assets/img/icons/mediatype/video.js +0 -14
  73. package/dist/src/assets/img/icons/mediatype/video.js.map +0 -1
  74. package/dist/src/assets/img/icons/mediatype/web.d.ts +0 -1
  75. package/dist/src/assets/img/icons/mediatype/web.js +0 -13
  76. package/dist/src/assets/img/icons/mediatype/web.js.map +0 -1
  77. package/dist/src/assets/img/icons/null-result.d.ts +0 -2
  78. package/dist/src/assets/img/icons/null-result.js +0 -5
  79. package/dist/src/assets/img/icons/null-result.js.map +0 -1
  80. package/dist/src/assets/img/icons/restricted.d.ts +0 -1
  81. package/dist/src/assets/img/icons/restricted.js +0 -29
  82. package/dist/src/assets/img/icons/restricted.js.map +0 -1
  83. package/dist/src/assets/img/icons/reviews.d.ts +0 -1
  84. package/dist/src/assets/img/icons/reviews.js +0 -11
  85. package/dist/src/assets/img/icons/reviews.js.map +0 -1
  86. package/dist/src/assets/img/icons/upload.d.ts +0 -1
  87. package/dist/src/assets/img/icons/upload.js +0 -12
  88. package/dist/src/assets/img/icons/upload.js.map +0 -1
  89. package/dist/src/assets/img/icons/views.d.ts +0 -1
  90. package/dist/src/assets/img/icons/views.js +0 -11
  91. package/dist/src/assets/img/icons/views.js.map +0 -1
  92. package/dist/src/circular-activity-indicator.d.ts +0 -5
  93. package/dist/src/circular-activity-indicator.js +0 -66
  94. package/dist/src/circular-activity-indicator.js.map +0 -1
  95. package/dist/src/collection-browser.d.ts +0 -214
  96. package/dist/src/collection-browser.js +0 -1236
  97. package/dist/src/collection-browser.js.map +0 -1
  98. package/dist/src/collection-facets.d.ts +0 -63
  99. package/dist/src/collection-facets.js +0 -560
  100. package/dist/src/collection-facets.js.map +0 -1
  101. package/dist/src/empty-placeholder.d.ts +0 -11
  102. package/dist/src/empty-placeholder.js +0 -83
  103. package/dist/src/empty-placeholder.js.map +0 -1
  104. package/dist/src/language-code-handler/language-code-handler.d.ts +0 -37
  105. package/dist/src/language-code-handler/language-code-handler.js +0 -27
  106. package/dist/src/language-code-handler/language-code-handler.js.map +0 -1
  107. package/dist/src/language-code-handler/language-code-mapping.d.ts +0 -1
  108. package/dist/src/language-code-handler/language-code-mapping.js +0 -563
  109. package/dist/src/language-code-handler/language-code-mapping.js.map +0 -1
  110. package/dist/src/mediatype/mediatype-config.d.ts +0 -3
  111. package/dist/src/mediatype/mediatype-config.js +0 -86
  112. package/dist/src/mediatype/mediatype-config.js.map +0 -1
  113. package/dist/src/models.d.ts +0 -84
  114. package/dist/src/models.js +0 -58
  115. package/dist/src/models.js.map +0 -1
  116. package/dist/src/restoration-state-handler.d.ts +0 -38
  117. package/dist/src/restoration-state-handler.js +0 -204
  118. package/dist/src/restoration-state-handler.js.map +0 -1
  119. package/dist/src/sort-filter-bar/alpha-bar.d.ts +0 -9
  120. package/dist/src/sort-filter-bar/alpha-bar.js +0 -98
  121. package/dist/src/sort-filter-bar/alpha-bar.js.map +0 -1
  122. package/dist/src/sort-filter-bar/img/compact.d.ts +0 -1
  123. package/dist/src/sort-filter-bar/img/compact.js +0 -5
  124. package/dist/src/sort-filter-bar/img/compact.js.map +0 -1
  125. package/dist/src/sort-filter-bar/img/list.d.ts +0 -1
  126. package/dist/src/sort-filter-bar/img/list.js +0 -5
  127. package/dist/src/sort-filter-bar/img/list.js.map +0 -1
  128. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +0 -1
  129. package/dist/src/sort-filter-bar/img/sort-triangle.js +0 -5
  130. package/dist/src/sort-filter-bar/img/sort-triangle.js.map +0 -1
  131. package/dist/src/sort-filter-bar/img/tile.d.ts +0 -1
  132. package/dist/src/sort-filter-bar/img/tile.js +0 -5
  133. package/dist/src/sort-filter-bar/img/tile.js.map +0 -1
  134. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +0 -85
  135. package/dist/src/sort-filter-bar/sort-filter-bar.js +0 -698
  136. package/dist/src/sort-filter-bar/sort-filter-bar.js.map +0 -1
  137. package/dist/src/styles/item-image-styles.d.ts +0 -8
  138. package/dist/src/styles/item-image-styles.js +0 -101
  139. package/dist/src/styles/item-image-styles.js.map +0 -1
  140. package/dist/src/tiles/collection-browser-loading-tile.d.ts +0 -5
  141. package/dist/src/tiles/collection-browser-loading-tile.js +0 -32
  142. package/dist/src/tiles/collection-browser-loading-tile.js.map +0 -1
  143. package/dist/src/tiles/grid/account-tile.d.ts +0 -8
  144. package/dist/src/tiles/grid/account-tile.js +0 -126
  145. package/dist/src/tiles/grid/account-tile.js.map +0 -1
  146. package/dist/src/tiles/grid/collection-tile.d.ts +0 -7
  147. package/dist/src/tiles/grid/collection-tile.js +0 -159
  148. package/dist/src/tiles/grid/collection-tile.js.map +0 -1
  149. package/dist/src/tiles/grid/item-tile.d.ts +0 -16
  150. package/dist/src/tiles/grid/item-tile.js +0 -174
  151. package/dist/src/tiles/grid/item-tile.js.map +0 -1
  152. package/dist/src/tiles/grid/tile-stats.d.ts +0 -10
  153. package/dist/src/tiles/grid/tile-stats.js +0 -134
  154. package/dist/src/tiles/grid/tile-stats.js.map +0 -1
  155. package/dist/src/tiles/item-image.d.ts +0 -31
  156. package/dist/src/tiles/item-image.js +0 -117
  157. package/dist/src/tiles/item-image.js.map +0 -1
  158. package/dist/src/tiles/item-tile-image.d.ts +0 -15
  159. package/dist/src/tiles/item-tile-image.js +0 -68
  160. package/dist/src/tiles/item-tile-image.js.map +0 -1
  161. package/dist/src/tiles/list/account-label.d.ts +0 -1
  162. package/dist/src/tiles/list/account-label.js +0 -7
  163. package/dist/src/tiles/list/account-label.js.map +0 -1
  164. package/dist/src/tiles/list/date-label.d.ts +0 -1
  165. package/dist/src/tiles/list/date-label.js +0 -13
  166. package/dist/src/tiles/list/date-label.js.map +0 -1
  167. package/dist/src/tiles/list/tile-list-compact-header.d.ts +0 -12
  168. package/dist/src/tiles/list/tile-list-compact-header.js +0 -84
  169. package/dist/src/tiles/list/tile-list-compact-header.js.map +0 -1
  170. package/dist/src/tiles/list/tile-list-compact.d.ts +0 -20
  171. package/dist/src/tiles/list/tile-list-compact.js +0 -215
  172. package/dist/src/tiles/list/tile-list-compact.js.map +0 -1
  173. package/dist/src/tiles/list/tile-list.d.ts +0 -47
  174. package/dist/src/tiles/list/tile-list.js +0 -492
  175. package/dist/src/tiles/list/tile-list.js.map +0 -1
  176. package/dist/src/tiles/mediatype-icon.d.ts +0 -9
  177. package/dist/src/tiles/mediatype-icon.js +0 -82
  178. package/dist/src/tiles/mediatype-icon.js.map +0 -1
  179. package/dist/src/tiles/tile-dispatcher.d.ts +0 -35
  180. package/dist/src/tiles/tile-dispatcher.js +0 -204
  181. package/dist/src/tiles/tile-dispatcher.js.map +0 -1
  182. package/dist/src/utils/format-count.d.ts +0 -7
  183. package/dist/src/utils/format-count.js +0 -76
  184. package/dist/src/utils/format-count.js.map +0 -1
  185. package/dist/src/utils/format-date.d.ts +0 -2
  186. package/dist/src/utils/format-date.js +0 -24
  187. package/dist/src/utils/format-date.js.map +0 -1
  188. package/dist/test/collection-browser.test.d.ts +0 -1
  189. package/dist/test/collection-browser.test.js +0 -47
  190. package/dist/test/collection-browser.test.js.map +0 -1
  191. package/dist/test/empty-placeholder.test.d.ts +0 -1
  192. package/dist/test/empty-placeholder.test.js +0 -34
  193. package/dist/test/empty-placeholder.test.js.map +0 -1
  194. package/dist/test/mediatype-config.test.d.ts +0 -1
  195. package/dist/test/mediatype-config.test.js +0 -17
  196. package/dist/test/mediatype-config.test.js.map +0 -1
  197. package/dist/test/mocks/mock-collection-name-cache.d.ts +0 -7
  198. package/dist/test/mocks/mock-collection-name-cache.js +0 -14
  199. package/dist/test/mocks/mock-collection-name-cache.js.map +0 -1
  200. package/dist/test/mocks/mock-search-responses.d.ts +0 -3
  201. package/dist/test/mocks/mock-search-responses.js +0 -32
  202. package/dist/test/mocks/mock-search-responses.js.map +0 -1
  203. package/dist/test/mocks/mock-search-service.d.ts +0 -8
  204. package/dist/test/mocks/mock-search-service.js +0 -16
  205. package/dist/test/mocks/mock-search-service.js.map +0 -1
  206. package/dist/test/tile-stats.test.d.ts +0 -1
  207. package/dist/test/tile-stats.test.js +0 -42
  208. package/dist/test/tile-stats.test.js.map +0 -1
  209. package/dist/test/tiles/grid/item-tile.test.d.ts +0 -1
  210. package/dist/test/tiles/grid/item-tile.test.js +0 -96
  211. package/dist/test/tiles/grid/item-tile.test.js.map +0 -1
  212. package/dist/test/utils/format-count.test.d.ts +0 -1
  213. package/dist/test/utils/format-count.test.js +0 -24
  214. package/dist/test/utils/format-count.test.js.map +0 -1
  215. package/dist/test/utils/format-date.test.d.ts +0 -1
  216. package/dist/test/utils/format-date.test.js +0 -18
  217. package/dist/test/utils/format-date.test.js.map +0 -1
  218. package/src/tiles/item-tile-image.ts +0 -61
@@ -43,6 +43,8 @@ export class TileDispatcher
43
43
 
44
44
  @property({ type: String }) baseImageUrl?: string;
45
45
 
46
+ @property({ type: Boolean }) loggedIn = false;
47
+
46
48
  render() {
47
49
  return html`
48
50
  <div id="container">
@@ -146,7 +148,8 @@ export class TileDispatcher
146
148
  .model=${model}
147
149
  .currentWidth=${currentWidth}
148
150
  .currentHeight=${currentHeight}
149
- ></account-tile>`;
151
+ >
152
+ </account-tile>`;
150
153
  default:
151
154
  return html`<item-tile
152
155
  .model=${model}
@@ -155,7 +158,9 @@ export class TileDispatcher
155
158
  .collectionNameCache=${this.collectionNameCache}
156
159
  .baseImageUrl=${this.baseImageUrl}
157
160
  .sortParam=${sortParam}
158
- ></item-tile>`;
161
+ .loggedIn=${this.loggedIn}
162
+ >
163
+ </item-tile>`;
159
164
  }
160
165
  case 'list-compact':
161
166
  return html`<tile-list-compact
@@ -166,7 +171,9 @@ export class TileDispatcher
166
171
  .sortParam=${sortParam}
167
172
  .mobileBreakpoint=${mobileBreakpoint}
168
173
  .baseImageUrl=${this.baseImageUrl}
169
- ></tile-list-compact>`;
174
+ .loggedIn=${this.loggedIn}
175
+ >
176
+ </tile-list-compact>`;
170
177
  case 'list-detail':
171
178
  return html`<tile-list
172
179
  .model=${model}
@@ -177,7 +184,9 @@ export class TileDispatcher
177
184
  .sortParam=${sortParam}
178
185
  .mobileBreakpoint=${mobileBreakpoint}
179
186
  .baseImageUrl=${this.baseImageUrl}
180
- ></tile-list>`;
187
+ .loggedIn=${this.loggedIn}
188
+ >
189
+ </tile-list>`;
181
190
  default:
182
191
  return nothing;
183
192
  }
@@ -0,0 +1,41 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import { IconOverlay } from '../src/tiles/overlay/icon-overlay';
5
+
6
+ import '../src/tiles/overlay/icon-overlay';
7
+
8
+ describe('Icon Overlay component', () => {
9
+ it('should render component if loggedIn required', async () => {
10
+ const el = await fixture<IconOverlay>(html`
11
+ <icon-overlay .loggedIn=${false} .loginRequired=${true}> </icon-overlay>
12
+ `);
13
+
14
+ const svgTitle = el.shadowRoot
15
+ ?.querySelector('svg')
16
+ ?.querySelector('title')?.textContent;
17
+ expect(svgTitle).to.equal('Log in to view this item');
18
+ });
19
+
20
+ it('should render component if content warning', async () => {
21
+ const el = await fixture<IconOverlay>(html`
22
+ <icon-overlay .loggedIn=${false} .loginRequired=${false}> </icon-overlay>
23
+ `);
24
+
25
+ const svgTitle = el.shadowRoot
26
+ ?.querySelector('svg')
27
+ ?.querySelector('title')?.textContent;
28
+ expect(svgTitle).to.equal('Content may be inappropriate');
29
+ });
30
+
31
+ it('should render component if content warning', async () => {
32
+ const el = await fixture<IconOverlay>(html`
33
+ <icon-overlay .loggedIn=${true} .loginRequired=${true}> </icon-overlay>
34
+ `);
35
+
36
+ const svgTitle = el.shadowRoot
37
+ ?.querySelector('svg')
38
+ ?.querySelector('title')?.textContent;
39
+ expect(svgTitle).to.equal('Content may be inappropriate');
40
+ });
41
+ });
@@ -0,0 +1,82 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+
5
+ import { TileModel } from '../src/models';
6
+ import { ItemImage } from '../src/tiles/item-image';
7
+
8
+ import '../src/tiles/item-image';
9
+
10
+ const baseImageUrl = 'https://archive.org';
11
+ const testBookModel: TileModel = {
12
+ collections: [],
13
+ commentCount: 0,
14
+ creators: [],
15
+ favCount: 0,
16
+ identifier: '18730130BloomfieldRecordCompleteIssue',
17
+ itemCount: 0,
18
+ mediatype: 'texts',
19
+ subjects: [],
20
+ title: 'Sample Waveform',
21
+ viewCount: 0,
22
+ loginRequired: false,
23
+ contentWarning: false,
24
+ };
25
+
26
+ const testAudioModel: TileModel = {
27
+ collections: [],
28
+ commentCount: 0,
29
+ creators: [],
30
+ favCount: 0,
31
+ identifier: 'dwd2015-01-24',
32
+ itemCount: 0,
33
+ mediatype: 'audio',
34
+ subjects: [],
35
+ title: 'Sample Waveform',
36
+ viewCount: 0,
37
+ loginRequired: false,
38
+ contentWarning: false,
39
+ };
40
+
41
+ describe('ItemImage component', () => {
42
+ it('should render initial component', async () => {
43
+ const el = await fixture<ItemImage>(html`
44
+ <item-image
45
+ .isListTile=${false}
46
+ .isCompactTile=${false}
47
+ .model=${testBookModel}
48
+ .baseImageUrl=${baseImageUrl}
49
+ >
50
+ </item-image>
51
+ `);
52
+
53
+ const dropShadow = el.shadowRoot?.querySelector('.drop-shadow');
54
+ const imgClassName = dropShadow?.querySelector('img')?.className;
55
+
56
+ expect(dropShadow).to.exist;
57
+ expect(imgClassName).to.eql(' contain ');
58
+ });
59
+
60
+ it('should render component if mediatype is waveform', async () => {
61
+ const el = await fixture<ItemImage>(html`
62
+ <item-image
63
+ .isListTile=${false}
64
+ .isCompactTile=${false}
65
+ .model=${testAudioModel}
66
+ .baseImageUrl=${baseImageUrl}
67
+ >
68
+ </item-image>
69
+ `);
70
+
71
+ const dropShadow = el.shadowRoot?.querySelector('.drop-shadow');
72
+ const image = dropShadow?.querySelector('img');
73
+ expect(dropShadow).to.exist;
74
+ expect(image).to.exist;
75
+
76
+ // simulate image onLoad event check if image className is waveform
77
+ setTimeout(() => {
78
+ const imgClassName = image?.className;
79
+ expect(imgClassName).to.eql(' waveform ');
80
+ }, 1000);
81
+ });
82
+ });
@@ -0,0 +1,57 @@
1
+ /* eslint-disable import/no-duplicates */
2
+ import { expect, fixture } from '@open-wc/testing';
3
+ import { html } from 'lit';
4
+ import { TextOverlay } from '../src/tiles/overlay/text-overlay';
5
+
6
+ import '../src/tiles/overlay/text-overlay';
7
+
8
+ describe('Text Overlay component', () => {
9
+ it('should render initial component', async () => {
10
+ const el = await fixture<TextOverlay>(html`<text-overlay></text-overlay>`);
11
+
12
+ const overlay = el.shadowRoot?.querySelector('.overlay');
13
+ const noPreview = el.shadowRoot?.querySelector('.no-preview');
14
+
15
+ expect(overlay).to.exist;
16
+ expect(noPreview).to.exist;
17
+ });
18
+
19
+ it('should render component if loggedIn required', async () => {
20
+ const el = await fixture<TextOverlay>(html`
21
+ <text-overlay .loggedIn=${false} .loginRequired=${true}> </text-overlay>
22
+ `);
23
+
24
+ const overlay = el.shadowRoot?.querySelector('.overlay');
25
+ const noPreview = el.shadowRoot?.querySelector('.no-preview');
26
+
27
+ expect(overlay).to.exist;
28
+ expect(noPreview).to.exist;
29
+ expect(noPreview?.textContent).to.equal('Log in\nto view this item');
30
+ });
31
+
32
+ it('should render component if content warning', async () => {
33
+ const el = await fixture<TextOverlay>(html`
34
+ <text-overlay .loggedIn=${false} .loginRequired=${false}> </text-overlay>
35
+ `);
36
+
37
+ const overlay = el.shadowRoot?.querySelector('.overlay');
38
+ const noPreview = el.shadowRoot?.querySelector('.no-preview');
39
+
40
+ expect(overlay).to.exist;
41
+ expect(noPreview).to.exist;
42
+ expect(noPreview?.textContent).to.equal('Content may be inappropriate');
43
+ });
44
+
45
+ it('should render component if content warning', async () => {
46
+ const el = await fixture<TextOverlay>(html`
47
+ <text-overlay .loggedIn=${true} .loginRequired=${true}> </text-overlay>
48
+ `);
49
+
50
+ const overlay = el.shadowRoot?.querySelector('.overlay');
51
+ const noPreview = el.shadowRoot?.querySelector('.no-preview');
52
+
53
+ expect(overlay).to.exist;
54
+ expect(noPreview).to.exist;
55
+ expect(noPreview?.textContent).to.equal('Content may be inappropriate');
56
+ });
57
+ });
@@ -10,11 +10,11 @@ describe('Item Tile', () => {
10
10
  const el = await fixture<ItemTile>(html`<item-tile></item-tile>`);
11
11
 
12
12
  const itemInfo = el.shadowRoot?.querySelector('.item-info');
13
- const itemImage = el.shadowRoot?.querySelector('item-image');
14
13
  const itemTitle = el.shadowRoot?.querySelector('#title');
14
+ const imageBlock = el.shadowRoot?.querySelector('image-block');
15
15
 
16
16
  expect(itemInfo).to.exist;
17
- expect(itemImage).to.exist;
17
+ expect(imageBlock).to.exist;
18
18
  expect(itemTitle).to.exist;
19
19
  });
20
20
 
package/dist/index.d.ts DELETED
@@ -1,9 +0,0 @@
1
- export { CollectionBrowser } from './src/collection-browser';
2
- export { SortFilterBar } from './src/sort-filter-bar/sort-filter-bar';
3
- export { CollectionDisplayMode } from './src/models';
4
- export { CollectionBrowserLoadingTile } from './src/tiles/collection-browser-loading-tile';
5
- export { CollectionTile } from './src/tiles/grid/collection-tile';
6
- export { AccountTile } from './src/tiles/grid/account-tile';
7
- export { ItemTile } from './src/tiles/grid/item-tile';
8
- export { TileList } from './src/tiles/list/tile-list';
9
- export { TileListCompact } from './src/tiles/list/tile-list-compact';
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC","sourcesContent":["export { CollectionBrowser } from './src/collection-browser';\nexport { SortFilterBar } from './src/sort-filter-bar/sort-filter-bar';\nexport { CollectionDisplayMode } from './src/models';\nexport { CollectionBrowserLoadingTile } from './src/tiles/collection-browser-loading-tile';\nexport { CollectionTile } from './src/tiles/grid/collection-tile';\nexport { AccountTile } from './src/tiles/grid/account-tile';\nexport { ItemTile } from './src/tiles/grid/item-tile';\nexport { TileList } from './src/tiles/list/tile-list';\nexport { TileListCompact } from './src/tiles/list/tile-list-compact';\n"]}
@@ -1,32 +0,0 @@
1
- import { LitElement, PropertyValues } from 'lit';
2
- import '../src/collection-browser';
3
- export declare class AppRoot extends LitElement {
4
- private searchService;
5
- private resizeObserver;
6
- private localCache;
7
- private collectionNameCache;
8
- private currentPage?;
9
- private searchQuery?;
10
- private cellWidth;
11
- private cellHeight;
12
- private rowGap;
13
- private colGap;
14
- private loggedIn;
15
- private baseQueryField;
16
- private pageNumberInput;
17
- private collectionBrowser;
18
- private searchPressed;
19
- private changePagePressed;
20
- protected updated(changed: PropertyValues): void;
21
- private queryUpdated;
22
- render(): import("lit-html").TemplateResult<1>;
23
- private baseQueryChanged;
24
- private loginChanged;
25
- private outlineChanged;
26
- private rowGapChanged;
27
- private colGapChanged;
28
- private widthChanged;
29
- private heightChanged;
30
- private visiblePageChanged;
31
- static styles: import("lit").CSSResult;
32
- }
@@ -1,285 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { SearchService } from '@internetarchive/search-service';
3
- import { LocalCache } from '@internetarchive/local-cache';
4
- import { html, css, LitElement } from 'lit';
5
- import { customElement, query, state } from 'lit/decorators.js';
6
- import { SharedResizeObserver } from '@internetarchive/shared-resize-observer';
7
- import { CollectionNameCache } from '@internetarchive/collection-name-cache';
8
- import '../src/collection-browser';
9
- let AppRoot = class AppRoot extends LitElement {
10
- constructor() {
11
- super(...arguments);
12
- this.searchService = SearchService.default;
13
- this.resizeObserver = new SharedResizeObserver();
14
- this.localCache = new LocalCache();
15
- this.collectionNameCache = new CollectionNameCache({
16
- searchService: this.searchService,
17
- localCache: this.localCache,
18
- });
19
- this.cellWidth = 18;
20
- this.cellHeight = 29;
21
- this.rowGap = 1.7;
22
- this.colGap = 1.7;
23
- this.loggedIn = false;
24
- }
25
- searchPressed(e) {
26
- var _a, _b;
27
- e.preventDefault();
28
- this.searchQuery = this.baseQueryField.value;
29
- if (((_a = this.currentPage) !== null && _a !== void 0 ? _a : 1) > 1) {
30
- this.collectionBrowser.goToPage((_b = this.currentPage) !== null && _b !== void 0 ? _b : 1);
31
- }
32
- }
33
- changePagePressed(e) {
34
- e.preventDefault();
35
- this.currentPage = this.pageNumberInput.valueAsNumber;
36
- this.collectionBrowser.goToPage(this.currentPage);
37
- }
38
- updated(changed) {
39
- if (changed.has('currentPage') && this.currentPage) {
40
- this.pageNumberInput.value = this.currentPage.toString();
41
- }
42
- if (changed.has('searchQuery')) {
43
- this.queryUpdated();
44
- }
45
- }
46
- queryUpdated() {
47
- this.collectionBrowser.baseQuery = this.searchQuery;
48
- }
49
- render() {
50
- var _a;
51
- return html `
52
- <div id="dev-tools">
53
- <form @submit=${this.searchPressed}>
54
- Query:
55
- <input
56
- type="text"
57
- id="base-query-field"
58
- .value=${(_a = this.searchQuery) !== null && _a !== void 0 ? _a : ''}
59
- />
60
- <input type="submit" value="Search" />
61
- </form>
62
-
63
- <form @submit=${this.changePagePressed}>
64
- Page: <input type="number" value="1" id="page-number-input" />
65
- <input type="submit" value="Go" />
66
- </form>
67
-
68
- <div id="cell-controls">
69
- <div id="cell-size-control">
70
- <div>
71
- <label for="cell-width-slider">Minimum cell width:</label>
72
- <input
73
- type="range"
74
- min="10"
75
- max="100"
76
- value="18"
77
- step="0.1"
78
- id="cell-width-slider"
79
- @input=${this.widthChanged}
80
- />
81
- <span>${this.cellWidth}rem</span>
82
- </div>
83
- <div>
84
- <label for="cell-height-slider">Cell height:</label>
85
- <input
86
- type="range"
87
- min="10"
88
- max="100"
89
- value="29"
90
- step="0.1"
91
- id="cell-height-slider"
92
- @input=${this.heightChanged}
93
- />
94
- <span>${this.cellHeight}rem</span>
95
- </div>
96
- <div>
97
- <label for="show-outline-check">Show outlines:</label>
98
- <input
99
- type="checkbox"
100
- id="show-outline-check"
101
- @click=${this.outlineChanged}
102
- />
103
- </div>
104
- <div>
105
- <label for="simulate-login">Simulate Login:</label>
106
- <input
107
- type="checkbox"
108
- id="simulate-login"
109
- @click=${this.loginChanged}
110
- />
111
- </div>
112
- </div>
113
- <div id="cell-gap-control">
114
- <div>
115
- <label for="cell-row-gap-slider">Row gap:</label>
116
- <input
117
- type="range"
118
- min="0"
119
- max="5"
120
- value="1.7"
121
- step="0.1"
122
- id="cell-row-gap-slider"
123
- @input=${this.rowGapChanged}
124
- />
125
- <span>${this.rowGap}rem</span>
126
- </div>
127
- <div>
128
- <label for="cell-col-gap-slider">Col gap:</label>
129
- <input
130
- type="range"
131
- min="0"
132
- max="5"
133
- value="1.7"
134
- step="0.1"
135
- id="cell-col-gap-slider"
136
- @input=${this.colGapChanged}
137
- />
138
- <span>${this.colGap}rem</span>
139
- </div>
140
- </div>
141
- </div>
142
- </div>
143
-
144
- <div id="collection-browser-container">
145
- <collection-browser
146
- .baseNavigationUrl=${'https://archive.org'}
147
- .baseImageUrl=${'https://archive.org'}
148
- .searchService=${this.searchService}
149
- .resizeObserver=${this.resizeObserver}
150
- .collectionNameCache=${this.collectionNameCache}
151
- .showHistogramDatePicker=${true}
152
- .loggedIn=${this.loggedIn}
153
- @visiblePageChanged=${this.visiblePageChanged}
154
- @baseQueryChanged=${this.baseQueryChanged}
155
- >
156
- </collection-browser>
157
- </div>
158
- `;
159
- }
160
- baseQueryChanged(e) {
161
- this.searchQuery = e.detail.baseQuery;
162
- }
163
- loginChanged(e) {
164
- const target = e.target;
165
- if (target.checked) {
166
- this.loggedIn = true;
167
- }
168
- else {
169
- this.loggedIn = false;
170
- }
171
- }
172
- outlineChanged(e) {
173
- const target = e.target;
174
- if (target.checked) {
175
- this.collectionBrowser.style.setProperty('--infiniteScrollerCellOutline', '1px solid #33D1FF');
176
- }
177
- else {
178
- this.collectionBrowser.style.removeProperty('--infiniteScrollerCellOutline');
179
- }
180
- }
181
- rowGapChanged(e) {
182
- const input = e.target;
183
- this.rowGap = parseFloat(input.value);
184
- this.collectionBrowser.style.setProperty('--collectionBrowserRowGap', `${input.value}rem`);
185
- }
186
- colGapChanged(e) {
187
- const input = e.target;
188
- this.colGap = parseFloat(input.value);
189
- this.collectionBrowser.style.setProperty('--collectionBrowserColGap', `${input.value}rem`);
190
- }
191
- widthChanged(e) {
192
- const input = e.target;
193
- this.cellWidth = parseFloat(input.value);
194
- this.collectionBrowser.style.setProperty('--collectionBrowserCellMinWidth', `${input.value}rem`);
195
- }
196
- heightChanged(e) {
197
- const input = e.target;
198
- this.cellHeight = parseFloat(input.value);
199
- this.collectionBrowser.style.setProperty('--collectionBrowserCellMinHeight', `${input.value}rem`);
200
- this.collectionBrowser.style.setProperty('--collectionBrowserCellMaxHeight', `${input.value}rem`);
201
- }
202
- visiblePageChanged(e) {
203
- const { pageNumber } = e.detail;
204
- if (pageNumber === this.currentPage)
205
- return;
206
- this.currentPage = pageNumber;
207
- }
208
- };
209
- AppRoot.styles = css `
210
- :host {
211
- display: block;
212
- }
213
-
214
- input,
215
- button {
216
- font-size: 1.6rem;
217
- }
218
-
219
- collection-browser {
220
- margin-top: 30rem;
221
- }
222
-
223
- #base-query-field {
224
- width: 300px;
225
- }
226
-
227
- #dev-tools {
228
- position: fixed;
229
- top: 0;
230
- left: 0;
231
- z-index: 10;
232
- -webkit-backdrop-filter: blur(10px);
233
- backdrop-filter: blur(10px);
234
- padding: 0.5rem 1rem;
235
- border: 1px solid black;
236
- }
237
-
238
- #cell-controls {
239
- display: flex;
240
- }
241
-
242
- #cell-controls label {
243
- display: inline-block;
244
- width: 10rem;
245
- }
246
-
247
- #cell-gap-control {
248
- margin-left: 1rem;
249
- }
250
- `;
251
- __decorate([
252
- state()
253
- ], AppRoot.prototype, "currentPage", void 0);
254
- __decorate([
255
- state()
256
- ], AppRoot.prototype, "searchQuery", void 0);
257
- __decorate([
258
- state()
259
- ], AppRoot.prototype, "cellWidth", void 0);
260
- __decorate([
261
- state()
262
- ], AppRoot.prototype, "cellHeight", void 0);
263
- __decorate([
264
- state()
265
- ], AppRoot.prototype, "rowGap", void 0);
266
- __decorate([
267
- state()
268
- ], AppRoot.prototype, "colGap", void 0);
269
- __decorate([
270
- state()
271
- ], AppRoot.prototype, "loggedIn", void 0);
272
- __decorate([
273
- query('#base-query-field')
274
- ], AppRoot.prototype, "baseQueryField", void 0);
275
- __decorate([
276
- query('#page-number-input')
277
- ], AppRoot.prototype, "pageNumberInput", void 0);
278
- __decorate([
279
- query('collection-browser')
280
- ], AppRoot.prototype, "collectionBrowser", void 0);
281
- AppRoot = __decorate([
282
- customElement('app-root')
283
- ], AppRoot);
284
- export { AppRoot };
285
- //# sourceMappingURL=app-root.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"app-root.js","sourceRoot":"","sources":["../../src/app-root.ts"],"names":[],"mappings":"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","sourcesContent":["import { SearchService } from '@internetarchive/search-service';\nimport { LocalCache } from '@internetarchive/local-cache';\nimport { html, css, LitElement, PropertyValues } from 'lit';\nimport { customElement, query, state } from 'lit/decorators.js';\nimport { SharedResizeObserver } from '@internetarchive/shared-resize-observer';\nimport { CollectionNameCache } from '@internetarchive/collection-name-cache';\nimport type { CollectionBrowser } from '../src/collection-browser';\nimport '../src/collection-browser';\n\n@customElement('app-root')\nexport class AppRoot extends LitElement {\n private searchService = SearchService.default;\n\n private resizeObserver = new SharedResizeObserver();\n\n private localCache = new LocalCache();\n\n private collectionNameCache = new CollectionNameCache({\n searchService: this.searchService,\n localCache: this.localCache,\n });\n\n @state() private currentPage?: number;\n\n @state() private searchQuery?: string;\n\n @state() private cellWidth: number = 18;\n\n @state() private cellHeight: number = 29;\n\n @state() private rowGap: number = 1.7;\n\n @state() private colGap: number = 1.7;\n\n @state() private loggedIn: boolean = false;\n\n @query('#base-query-field') private baseQueryField!: HTMLInputElement;\n\n @query('#page-number-input') private pageNumberInput!: HTMLInputElement;\n\n @query('collection-browser') private collectionBrowser!: CollectionBrowser;\n\n private searchPressed(e: Event) {\n e.preventDefault();\n this.searchQuery = this.baseQueryField.value;\n if ((this.currentPage ?? 1) > 1) {\n this.collectionBrowser.goToPage(this.currentPage ?? 1);\n }\n }\n\n private changePagePressed(e: Event) {\n e.preventDefault();\n this.currentPage = this.pageNumberInput.valueAsNumber;\n this.collectionBrowser.goToPage(this.currentPage);\n }\n\n protected updated(changed: PropertyValues): void {\n if (changed.has('currentPage') && this.currentPage) {\n this.pageNumberInput.value = this.currentPage.toString();\n }\n\n if (changed.has('searchQuery')) {\n this.queryUpdated();\n }\n }\n\n private queryUpdated() {\n this.collectionBrowser.baseQuery = this.searchQuery;\n }\n\n render() {\n return html`\n <div id=\"dev-tools\">\n <form @submit=${this.searchPressed}>\n Query:\n <input\n type=\"text\"\n id=\"base-query-field\"\n .value=${this.searchQuery ?? ''}\n />\n <input type=\"submit\" value=\"Search\" />\n </form>\n\n <form @submit=${this.changePagePressed}>\n Page: <input type=\"number\" value=\"1\" id=\"page-number-input\" />\n <input type=\"submit\" value=\"Go\" />\n </form>\n\n <div id=\"cell-controls\">\n <div id=\"cell-size-control\">\n <div>\n <label for=\"cell-width-slider\">Minimum cell width:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"18\"\n step=\"0.1\"\n id=\"cell-width-slider\"\n @input=${this.widthChanged}\n />\n <span>${this.cellWidth}rem</span>\n </div>\n <div>\n <label for=\"cell-height-slider\">Cell height:</label>\n <input\n type=\"range\"\n min=\"10\"\n max=\"100\"\n value=\"29\"\n step=\"0.1\"\n id=\"cell-height-slider\"\n @input=${this.heightChanged}\n />\n <span>${this.cellHeight}rem</span>\n </div>\n <div>\n <label for=\"show-outline-check\">Show outlines:</label>\n <input\n type=\"checkbox\"\n id=\"show-outline-check\"\n @click=${this.outlineChanged}\n />\n </div>\n <div>\n <label for=\"simulate-login\">Simulate Login:</label>\n <input\n type=\"checkbox\"\n id=\"simulate-login\"\n @click=${this.loginChanged}\n />\n </div>\n </div>\n <div id=\"cell-gap-control\">\n <div>\n <label for=\"cell-row-gap-slider\">Row gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-row-gap-slider\"\n @input=${this.rowGapChanged}\n />\n <span>${this.rowGap}rem</span>\n </div>\n <div>\n <label for=\"cell-col-gap-slider\">Col gap:</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"5\"\n value=\"1.7\"\n step=\"0.1\"\n id=\"cell-col-gap-slider\"\n @input=${this.colGapChanged}\n />\n <span>${this.colGap}rem</span>\n </div>\n </div>\n </div>\n </div>\n\n <div id=\"collection-browser-container\">\n <collection-browser\n .baseNavigationUrl=${'https://archive.org'}\n .baseImageUrl=${'https://archive.org'}\n .searchService=${this.searchService}\n .resizeObserver=${this.resizeObserver}\n .collectionNameCache=${this.collectionNameCache}\n .showHistogramDatePicker=${true}\n .loggedIn=${this.loggedIn}\n @visiblePageChanged=${this.visiblePageChanged}\n @baseQueryChanged=${this.baseQueryChanged}\n >\n </collection-browser>\n </div>\n `;\n }\n\n private baseQueryChanged(e: CustomEvent<{ baseQuery?: string }>) {\n this.searchQuery = e.detail.baseQuery;\n }\n\n private loginChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.loggedIn = true;\n } else {\n this.loggedIn = false;\n }\n }\n\n private outlineChanged(e: Event) {\n const target = e.target as HTMLInputElement;\n if (target.checked) {\n this.collectionBrowser.style.setProperty(\n '--infiniteScrollerCellOutline',\n '1px solid #33D1FF'\n );\n } else {\n this.collectionBrowser.style.removeProperty(\n '--infiniteScrollerCellOutline'\n );\n }\n }\n\n private rowGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.rowGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserRowGap',\n `${input.value}rem`\n );\n }\n\n private colGapChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.colGap = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserColGap',\n `${input.value}rem`\n );\n }\n\n private widthChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellWidth = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinWidth',\n `${input.value}rem`\n );\n }\n\n private heightChanged(e: Event) {\n const input = e.target as HTMLInputElement;\n this.cellHeight = parseFloat(input.value);\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMinHeight',\n `${input.value}rem`\n );\n this.collectionBrowser.style.setProperty(\n '--collectionBrowserCellMaxHeight',\n `${input.value}rem`\n );\n }\n\n private visiblePageChanged(e: CustomEvent<{ pageNumber: number }>) {\n const { pageNumber } = e.detail;\n if (pageNumber === this.currentPage) return;\n this.currentPage = pageNumber;\n }\n\n static styles = css`\n :host {\n display: block;\n }\n\n input,\n button {\n font-size: 1.6rem;\n }\n\n collection-browser {\n margin-top: 30rem;\n }\n\n #base-query-field {\n width: 300px;\n }\n\n #dev-tools {\n position: fixed;\n top: 0;\n left: 0;\n z-index: 10;\n -webkit-backdrop-filter: blur(10px);\n backdrop-filter: blur(10px);\n padding: 0.5rem 1rem;\n border: 1px solid black;\n }\n\n #cell-controls {\n display: flex;\n }\n\n #cell-controls label {\n display: inline-block;\n width: 10rem;\n }\n\n #cell-gap-control {\n margin-left: 1rem;\n }\n `;\n}\n"]}
@@ -1,2 +0,0 @@
1
- declare const _default: import("lit-html").TemplateResult<2>;
2
- export default _default;
@@ -1,4 +0,0 @@
1
- import { svg } from 'lit';
2
- export default svg `<svg viewBox="0 0 100 100" xmlns="http://www.w3.org/2000/svg"><path d="m79.8883285 50.0035012.1116715-.1085359-43.1159942-46.61088155c-2.401537-2.18938917-4.6902018-3.28408375-6.8659943-3.28408375s-4.1642651.63837733-5.9654178 1.91513199c-1.8011528 1.27675467-3.1520173 2.97248092-4.0525937 5.08717877l39.4020173 42.99768924-39.4020173 42.9976892c.9005764 2.1146979 2.2514409 3.8104241 4.0525937 5.0871788 1.8011527 1.2767547 3.7896253 1.915132 5.9654178 1.915132 2.1013449 0 4.3900096-1.0573489 6.8659943-3.1720468l43.1159942-46.7194174z"/></svg>
3
- `;
4
- //# sourceMappingURL=chevron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"chevron.js","sourceRoot":"","sources":["../../../../../src/assets/img/icons/chevron.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,eAAe,GAAG,CAAA;CACjB,CAAC","sourcesContent":["import { svg } from 'lit';\n\nexport default svg`<svg viewBox=\"0 0 100 100\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"m79.8883285 50.0035012.1116715-.1085359-43.1159942-46.61088155c-2.401537-2.18938917-4.6902018-3.28408375-6.8659943-3.28408375s-4.1642651.63837733-5.9654178 1.91513199c-1.8011528 1.27675467-3.1520173 2.97248092-4.0525937 5.08717877l39.4020173 42.99768924-39.4020173 42.9976892c.9005764 2.1146979 2.2514409 3.8104241 4.0525937 5.0871788 1.8011527 1.2767547 3.7896253 1.915132 5.9654178 1.915132 2.1013449 0 4.3900096-1.0573489 6.8659943-3.1720468l43.1159942-46.7194174z\"/></svg>\n`;\n"]}
@@ -1,2 +0,0 @@
1
- declare const _default: import("lit-html").TemplateResult<2>;
2
- export default _default;