@internetarchive/collection-browser 2.3.0 → 2.4.0

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 (299) hide show
  1. package/.editorconfig +29 -29
  2. package/.husky/pre-commit +4 -4
  3. package/LICENSE +661 -661
  4. package/README.md +83 -83
  5. package/dist/index.d.ts +12 -12
  6. package/dist/index.js +12 -12
  7. package/dist/src/app-root.d.ts +91 -91
  8. package/dist/src/app-root.js +487 -487
  9. package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
  10. package/dist/src/assets/img/icons/arrow-left.js +2 -2
  11. package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
  12. package/dist/src/assets/img/icons/arrow-right.js +2 -2
  13. package/dist/src/assets/img/icons/chevron.d.ts +2 -2
  14. package/dist/src/assets/img/icons/chevron.js +2 -2
  15. package/dist/src/assets/img/icons/contract.d.ts +2 -2
  16. package/dist/src/assets/img/icons/contract.js +2 -2
  17. package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
  18. package/dist/src/assets/img/icons/empty-query.js +2 -2
  19. package/dist/src/assets/img/icons/expand.d.ts +2 -2
  20. package/dist/src/assets/img/icons/expand.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/favorite-unfilled.d.ts +1 -1
  28. package/dist/src/assets/img/icons/favorite-unfilled.js +2 -2
  29. package/dist/src/assets/img/icons/login-required.d.ts +1 -1
  30. package/dist/src/assets/img/icons/login-required.js +2 -2
  31. package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
  32. package/dist/src/assets/img/icons/mediatype/account.js +2 -2
  33. package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
  34. package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
  35. package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
  36. package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
  37. package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
  38. package/dist/src/assets/img/icons/mediatype/data.js +2 -2
  39. package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
  40. package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
  41. package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
  42. package/dist/src/assets/img/icons/mediatype/film.js +2 -2
  43. package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
  44. package/dist/src/assets/img/icons/mediatype/images.js +2 -2
  45. package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
  46. package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
  47. package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
  48. package/dist/src/assets/img/icons/mediatype/search.js +2 -2
  49. package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
  50. package/dist/src/assets/img/icons/mediatype/software.js +2 -2
  51. package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
  52. package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
  53. package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
  54. package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
  55. package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
  56. package/dist/src/assets/img/icons/mediatype/video.js +2 -2
  57. package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
  58. package/dist/src/assets/img/icons/mediatype/web.js +2 -2
  59. package/dist/src/assets/img/icons/null-result.d.ts +2 -2
  60. package/dist/src/assets/img/icons/null-result.js +2 -2
  61. package/dist/src/assets/img/icons/restricted.d.ts +1 -1
  62. package/dist/src/assets/img/icons/restricted.js +2 -2
  63. package/dist/src/assets/img/icons/reviews.d.ts +1 -1
  64. package/dist/src/assets/img/icons/reviews.js +2 -2
  65. package/dist/src/assets/img/icons/upload.d.ts +1 -1
  66. package/dist/src/assets/img/icons/upload.js +2 -2
  67. package/dist/src/assets/img/icons/views.d.ts +1 -1
  68. package/dist/src/assets/img/icons/views.js +2 -2
  69. package/dist/src/circular-activity-indicator.d.ts +5 -5
  70. package/dist/src/circular-activity-indicator.js +17 -17
  71. package/dist/src/collection-browser.d.ts +466 -466
  72. package/dist/src/collection-browser.js +1475 -1475
  73. package/dist/src/collection-facets/facet-row.d.ts +30 -30
  74. package/dist/src/collection-facets/facet-row.js +114 -114
  75. package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
  76. package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
  77. package/dist/src/collection-facets/facets-template.d.ts +17 -17
  78. package/dist/src/collection-facets/facets-template.js +114 -114
  79. package/dist/src/collection-facets/more-facets-content.d.ts +74 -74
  80. package/dist/src/collection-facets/more-facets-content.js +360 -360
  81. package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
  82. package/dist/src/collection-facets/more-facets-pagination.js +196 -196
  83. package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
  84. package/dist/src/collection-facets/toggle-switch.js +94 -94
  85. package/dist/src/collection-facets.d.ts +103 -103
  86. package/dist/src/collection-facets.js +510 -510
  87. package/dist/src/data-source/collection-browser-data-source-interface.d.ts +241 -241
  88. package/dist/src/data-source/collection-browser-data-source-interface.js +1 -1
  89. package/dist/src/data-source/collection-browser-data-source.d.ts +378 -378
  90. package/dist/src/data-source/collection-browser-data-source.js +985 -985
  91. package/dist/src/data-source/collection-browser-query-state.d.ts +43 -43
  92. package/dist/src/data-source/collection-browser-query-state.js +1 -1
  93. package/dist/src/data-source/models.d.ts +28 -28
  94. package/dist/src/data-source/models.js +8 -8
  95. package/dist/src/empty-placeholder.d.ts +23 -23
  96. package/dist/src/empty-placeholder.js +74 -74
  97. package/dist/src/expanded-date-picker.d.ts +43 -43
  98. package/dist/src/expanded-date-picker.js +109 -109
  99. package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
  100. package/dist/src/language-code-handler/language-code-handler.js +26 -26
  101. package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
  102. package/dist/src/language-code-handler/language-code-mapping.js +562 -562
  103. package/dist/src/manage/manage-bar.d.ts +30 -30
  104. package/dist/src/manage/manage-bar.js +61 -61
  105. package/dist/src/mediatype/mediatype-config.d.ts +3 -3
  106. package/dist/src/mediatype/mediatype-config.js +91 -91
  107. package/dist/src/models.d.ts +209 -209
  108. package/dist/src/models.js +381 -381
  109. package/dist/src/restoration-state-handler.d.ts +70 -70
  110. package/dist/src/restoration-state-handler.js +357 -357
  111. package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
  112. package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
  113. package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
  114. package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
  115. package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
  116. package/dist/src/sort-filter-bar/img/compact.js +2 -2
  117. package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
  118. package/dist/src/sort-filter-bar/img/list.js +2 -2
  119. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
  120. package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
  121. package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
  122. package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
  123. package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
  124. package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
  125. package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
  126. package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
  127. package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
  128. package/dist/src/sort-filter-bar/img/tile.js +2 -2
  129. package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +222 -222
  130. package/dist/src/sort-filter-bar/sort-filter-bar.js +696 -696
  131. package/dist/src/styles/ia-button.d.ts +2 -2
  132. package/dist/src/styles/ia-button.js +16 -16
  133. package/dist/src/styles/item-image-styles.d.ts +8 -8
  134. package/dist/src/styles/item-image-styles.js +9 -9
  135. package/dist/src/styles/sr-only.d.ts +1 -1
  136. package/dist/src/styles/sr-only.js +2 -2
  137. package/dist/src/tiles/base-tile-component.d.ts +19 -19
  138. package/dist/src/tiles/base-tile-component.js +63 -63
  139. package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
  140. package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
  141. package/dist/src/tiles/grid/account-tile.d.ts +18 -18
  142. package/dist/src/tiles/grid/account-tile.js +72 -72
  143. package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
  144. package/dist/src/tiles/grid/collection-tile.js +80 -80
  145. package/dist/src/tiles/grid/item-tile.d.ts +30 -30
  146. package/dist/src/tiles/grid/item-tile.js +149 -149
  147. package/dist/src/tiles/grid/search-tile.d.ts +10 -10
  148. package/dist/src/tiles/grid/search-tile.js +51 -51
  149. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
  150. package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
  151. package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
  152. package/dist/src/tiles/grid/tile-stats.js +53 -53
  153. package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
  154. package/dist/src/tiles/hover/hover-pane-controller.js +354 -352
  155. package/dist/src/tiles/hover/hover-pane-controller.js.map +1 -1
  156. package/dist/src/tiles/hover/tile-hover-pane.d.ts +18 -15
  157. package/dist/src/tiles/hover/tile-hover-pane.js +127 -47
  158. package/dist/src/tiles/hover/tile-hover-pane.js.map +1 -1
  159. package/dist/src/tiles/image-block.d.ts +17 -17
  160. package/dist/src/tiles/image-block.js +74 -74
  161. package/dist/src/tiles/image-block.js.map +1 -1
  162. package/dist/src/tiles/item-image.d.ts +39 -39
  163. package/dist/src/tiles/item-image.js +154 -154
  164. package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
  165. package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
  166. package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
  167. package/dist/src/tiles/list/tile-list-compact.js +114 -114
  168. package/dist/src/tiles/list/tile-list.d.ts +50 -50
  169. package/dist/src/tiles/list/tile-list.js +315 -315
  170. package/dist/src/tiles/mediatype-icon.d.ts +9 -9
  171. package/dist/src/tiles/mediatype-icon.js +47 -47
  172. package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
  173. package/dist/src/tiles/overlay/icon-overlay.js +40 -40
  174. package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
  175. package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
  176. package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
  177. package/dist/src/tiles/overlay/text-overlay.js +42 -42
  178. package/dist/src/tiles/review-block.d.ts +12 -12
  179. package/dist/src/tiles/review-block.js +56 -56
  180. package/dist/src/tiles/text-snippet-block.d.ts +27 -27
  181. package/dist/src/tiles/text-snippet-block.js +73 -73
  182. package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
  183. package/dist/src/tiles/tile-dispatcher.js +229 -229
  184. package/dist/src/tiles/tile-display-value-provider.d.ts +47 -47
  185. package/dist/src/tiles/tile-display-value-provider.js +94 -94
  186. package/dist/src/utils/analytics-events.d.ts +28 -28
  187. package/dist/src/utils/analytics-events.js +30 -30
  188. package/dist/src/utils/array-equals.d.ts +4 -4
  189. package/dist/src/utils/array-equals.js +10 -10
  190. package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -11
  191. package/dist/src/utils/collapse-repeated-quotes.js +13 -13
  192. package/dist/src/utils/format-count.d.ts +7 -7
  193. package/dist/src/utils/format-count.js +76 -76
  194. package/dist/src/utils/format-date.d.ts +2 -2
  195. package/dist/src/utils/format-date.js +25 -25
  196. package/dist/src/utils/format-unit-size.d.ts +2 -2
  197. package/dist/src/utils/format-unit-size.js +33 -33
  198. package/dist/src/utils/local-date-from-utc.d.ts +9 -9
  199. package/dist/src/utils/local-date-from-utc.js +15 -15
  200. package/dist/src/utils/log.d.ts +7 -7
  201. package/dist/src/utils/log.js +15 -15
  202. package/dist/src/utils/resolve-mediatype.d.ts +8 -8
  203. package/dist/src/utils/resolve-mediatype.js +23 -23
  204. package/dist/src/utils/sha1.d.ts +2 -2
  205. package/dist/src/utils/sha1.js +8 -8
  206. package/dist/test/collection-browser.test.d.ts +1 -1
  207. package/dist/test/collection-browser.test.js +1293 -1293
  208. package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
  209. package/dist/test/collection-facets/facet-row.test.js +203 -203
  210. package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
  211. package/dist/test/collection-facets/facets-template.test.js +105 -105
  212. package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
  213. package/dist/test/collection-facets/more-facets-content.test.js +139 -139
  214. package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
  215. package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
  216. package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
  217. package/dist/test/collection-facets/toggle-switch.test.js +73 -73
  218. package/dist/test/collection-facets.test.d.ts +2 -2
  219. package/dist/test/collection-facets.test.js +652 -652
  220. package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -1
  221. package/dist/test/data-source/collection-browser-data-source.test.js +89 -89
  222. package/dist/test/empty-placeholder.test.d.ts +1 -1
  223. package/dist/test/empty-placeholder.test.js +63 -63
  224. package/dist/test/expanded-date-picker.test.d.ts +1 -1
  225. package/dist/test/expanded-date-picker.test.js +95 -95
  226. package/dist/test/icon-overlay.test.d.ts +1 -1
  227. package/dist/test/icon-overlay.test.js +24 -24
  228. package/dist/test/image-block.test.d.ts +1 -1
  229. package/dist/test/image-block.test.js +48 -48
  230. package/dist/test/item-image.test.d.ts +1 -1
  231. package/dist/test/item-image.test.js +85 -85
  232. package/dist/test/manage/manage-bar.test.d.ts +1 -1
  233. package/dist/test/manage/manage-bar.test.js +81 -81
  234. package/dist/test/mediatype-config.test.d.ts +1 -1
  235. package/dist/test/mediatype-config.test.js +16 -16
  236. package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
  237. package/dist/test/mocks/mock-analytics-handler.js +15 -15
  238. package/dist/test/mocks/mock-search-responses.d.ts +24 -24
  239. package/dist/test/mocks/mock-search-responses.js +860 -860
  240. package/dist/test/mocks/mock-search-service.d.ts +15 -15
  241. package/dist/test/mocks/mock-search-service.js +53 -53
  242. package/dist/test/restoration-state-handler.test.d.ts +1 -1
  243. package/dist/test/restoration-state-handler.test.js +270 -270
  244. package/dist/test/review-block.test.d.ts +1 -1
  245. package/dist/test/review-block.test.js +44 -44
  246. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
  247. package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
  248. package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
  249. package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
  250. package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
  251. package/dist/test/sort-filter-bar/sort-filter-bar.test.js +426 -426
  252. package/dist/test/text-overlay.test.d.ts +1 -1
  253. package/dist/test/text-overlay.test.js +48 -48
  254. package/dist/test/text-snippet-block.test.d.ts +1 -1
  255. package/dist/test/text-snippet-block.test.js +57 -57
  256. package/dist/test/tile-stats.test.d.ts +1 -1
  257. package/dist/test/tile-stats.test.js +81 -81
  258. package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
  259. package/dist/test/tiles/grid/account-tile.test.js +76 -76
  260. package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
  261. package/dist/test/tiles/grid/collection-tile.test.js +73 -73
  262. package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
  263. package/dist/test/tiles/grid/item-tile.test.js +312 -312
  264. package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
  265. package/dist/test/tiles/grid/search-tile.test.js +51 -51
  266. package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
  267. package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -259
  268. package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
  269. package/dist/test/tiles/hover/tile-hover-pane.test.js +56 -13
  270. package/dist/test/tiles/hover/tile-hover-pane.test.js.map +1 -1
  271. package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
  272. package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
  273. package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
  274. package/dist/test/tiles/list/tile-list.test.js +297 -297
  275. package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
  276. package/dist/test/tiles/tile-dispatcher.test.js +100 -100
  277. package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
  278. package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
  279. package/dist/test/utils/array-equals.test.d.ts +1 -1
  280. package/dist/test/utils/array-equals.test.js +26 -26
  281. package/dist/test/utils/format-count.test.d.ts +1 -1
  282. package/dist/test/utils/format-count.test.js +23 -23
  283. package/dist/test/utils/format-date.test.d.ts +1 -1
  284. package/dist/test/utils/format-date.test.js +17 -17
  285. package/dist/test/utils/format-unit-size.test.d.ts +1 -1
  286. package/dist/test/utils/format-unit-size.test.js +17 -17
  287. package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
  288. package/dist/test/utils/local-date-from-utc.test.js +26 -26
  289. package/local.archive.org.cert +86 -86
  290. package/local.archive.org.key +27 -27
  291. package/package.json +1 -1
  292. package/renovate.json +6 -6
  293. package/src/tiles/hover/hover-pane-controller.ts +2 -0
  294. package/src/tiles/hover/tile-hover-pane.ts +100 -11
  295. package/src/tiles/image-block.ts +1 -1
  296. package/test/tiles/hover/tile-hover-pane.test.ts +61 -0
  297. package/tsconfig.json +21 -21
  298. package/web-dev-server.config.mjs +30 -30
  299. package/web-test-runner.config.mjs +41 -41
@@ -1 +1 @@
1
- {"version":3,"file":"image-block.js","sourceRoot":"","sources":["../../../src/tiles/image-block.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, CSSResultGroup, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js';\n\nimport type { TileModel } from '../models';\n\nimport './overlay/icon-overlay';\nimport './overlay/text-overlay';\n\n@customElement('image-block')\nexport class ImageBlock extends LitElement {\n @property({ type: String }) baseImageUrl?: string;\n\n @property({ type: Boolean }) isCompactTile = false;\n\n @property({ type: Boolean }) isListTile = false;\n\n @property({ type: Boolean }) loggedIn = false;\n\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) viewSize: string = 'desktop';\n\n render() {\n if (!this.model?.identifier) return nothing;\n\n return html`\n <div class=${classMap(this.baseClass)}>\n <item-image\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}\n .isListTile=${this.isListTile}\n .isCompactTile=${this.isCompactTile}\n .loggedIn=${this.loggedIn}\n style=\"--imgHeight: 100%; --imgWidth: 100%\"\n >\n </item-image>\n ${this.textOverlayTemplate} ${this.iconOverlayTemplate}\n </div>\n `;\n }\n\n private get baseClass(): ClassInfo {\n return {\n list: this.isListTile && !this.isCompactTile,\n 'list-compact': this.isListTile && this.isCompactTile,\n collection: this.model?.mediatype === 'collection', // fill the image in container\n [this.viewSize]: true,\n 'search-image': this.model?.mediatype === 'search',\n };\n }\n\n private get iconOverlayTemplate() {\n if (!this.isListTile) return nothing;\n\n if (!this.model?.loginRequired && !this.model?.contentWarning)\n return nothing;\n\n return html`\n <icon-overlay\n .loggedIn=${this.loggedIn}\n .loginRequired=${this.model?.loginRequired}\n .isCompactTile=${this.isCompactTile}\n >\n </icon-overlay>\n `;\n }\n\n private get textOverlayTemplate() {\n if (this.isListTile) return nothing;\n\n if (!this.model?.loginRequired && !this.model?.contentWarning)\n return nothing;\n\n return html`\n <text-overlay\n .loggedIn=${this.loggedIn}\n .loginRequired=${this.model?.loginRequired}\n ?iconRequired=${true}\n >\n </text-overlay>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const imageBlockBackgroundColor = css`var(--imageBlockBackgroundColor, #f1f1f4)`;\n\n return css`\n div {\n display: flex;\n justify-content: center;\n position: relative;\n background-color: ${imageBlockBackgroundColor};\n border-radius: 4px;\n }\n\n .grid {\n height: var(--imgBlockHeight, 16rem);\n flex: 1;\n position: initial;\n padding: 5px;\n border-radius: 4px 4px 0 0;\n }\n\n .collection.grid,\n .grid.search-image {\n display: block;\n }\n\n /** tile-list view */\n .list {\n border-radius: 0;\n background-color: var(--imageBlockListBackgroundColor, #ebebee);\n box-shadow: 1px 1px 2px rgb(0, 0, 0, 0.2);\n }\n\n .list.desktop {\n width: 100px;\n max-width: 100%;\n height: 100px;\n max-width: 100%;\n display: inline-block;\n position: relative;\n text-align: center;\n }\n\n .list.mobile {\n width: 90px;\n height: 90px;\n }\n\n /** tile-list-compact view */\n .list-compact {\n display: block;\n text-align: center;\n }\n\n .list-compact.desktop {\n width: 45px;\n height: 45px;\n }\n\n .list-compact.mobile {\n width: 30px;\n height: 30px;\n }\n `;\n }\n}\n"]}
1
+ {"version":3,"file":"image-block.js","sourceRoot":"","sources":["../../../src/tiles/image-block.ts"],"names":[],"mappings":"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","sourcesContent":["import { css, CSSResultGroup, html, LitElement, nothing } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { ClassInfo, classMap } from 'lit/directives/class-map.js';\n\nimport type { TileModel } from '../models';\n\nimport './overlay/icon-overlay';\nimport './overlay/text-overlay';\n\n@customElement('image-block')\nexport class ImageBlock extends LitElement {\n @property({ type: String }) baseImageUrl?: string;\n\n @property({ type: Boolean }) isCompactTile = false;\n\n @property({ type: Boolean }) isListTile = false;\n\n @property({ type: Boolean }) loggedIn = false;\n\n @property({ type: Object }) model?: TileModel;\n\n @property({ type: String }) viewSize: string = 'desktop';\n\n render() {\n if (!this.model?.identifier) return nothing;\n\n return html`\n <div class=${classMap(this.baseClass)}>\n <item-image\n .model=${this.model}\n .baseImageUrl=${this.baseImageUrl}\n .isListTile=${this.isListTile}\n .isCompactTile=${this.isCompactTile}\n .loggedIn=${this.loggedIn}\n style=\"--imgHeight: 100%; --imgWidth: 100%\"\n >\n </item-image>\n ${this.textOverlayTemplate} ${this.iconOverlayTemplate}\n </div>\n `;\n }\n\n private get baseClass(): ClassInfo {\n return {\n list: this.isListTile && !this.isCompactTile,\n 'list-compact': this.isListTile && this.isCompactTile,\n collection: this.model?.mediatype === 'collection', // fill the image in container\n [this.viewSize]: true,\n 'search-image': this.model?.mediatype === 'search',\n };\n }\n\n private get iconOverlayTemplate() {\n if (!this.isListTile) return nothing;\n\n if (!this.model?.loginRequired && !this.model?.contentWarning)\n return nothing;\n\n return html`\n <icon-overlay\n .loggedIn=${this.loggedIn}\n .loginRequired=${this.model?.loginRequired}\n .isCompactTile=${this.isCompactTile}\n >\n </icon-overlay>\n `;\n }\n\n private get textOverlayTemplate() {\n if (this.isListTile) return nothing;\n\n if (!this.model?.loginRequired && !this.model?.contentWarning)\n return nothing;\n\n return html`\n <text-overlay\n .loggedIn=${this.loggedIn}\n .loginRequired=${this.model?.loginRequired}\n ?iconRequired=${true}\n >\n </text-overlay>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const imageBlockBackgroundColor = css`var(--imageBlockBackgroundColor, #f1f1f4)`;\n\n return css`\n div {\n display: flex;\n justify-content: center;\n position: relative;\n background-color: ${imageBlockBackgroundColor};\n border-radius: 4px;\n }\n\n .grid {\n height: var(--imgBlockHeight, 16rem);\n flex: 1;\n position: initial;\n padding: 5px;\n border-radius: 4px 4px 0 0;\n }\n\n .collection.grid,\n .grid.search-image {\n display: block;\n }\n\n /** tile-list view */\n .list {\n border-radius: 0;\n background-color: var(--imageBlockListBackgroundColor, #ebebee);\n box-shadow: 1px 1px 2px rgb(0, 0, 0, 0.2);\n }\n\n .list.desktop {\n width: 100px;\n max-width: 100%;\n height: 100px;\n max-width: 100%;\n display: inline-block;\n position: relative;\n text-align: center;\n }\n\n .list.mobile {\n width: var(--image-width, 90px);\n height: 90px;\n }\n\n /** tile-list-compact view */\n .list-compact {\n display: block;\n text-align: center;\n }\n\n .list-compact.desktop {\n width: 45px;\n height: 45px;\n }\n\n .list-compact.mobile {\n width: 30px;\n height: 30px;\n }\n `;\n }\n}\n"]}
@@ -1,39 +1,39 @@
1
- import { CSSResultGroup, LitElement } from 'lit';
2
- import type { TileModel } from '../models';
3
- export declare class ItemImage extends LitElement {
4
- model?: TileModel;
5
- baseImageUrl?: string;
6
- isListTile: boolean;
7
- isCompactTile: boolean;
8
- loggedIn: boolean;
9
- private isWaveform;
10
- private isNotFound;
11
- private baseImage;
12
- render(): import("lit-html").TemplateResult<1>;
13
- private get imageTemplate();
14
- /**
15
- * Helpers
16
- */
17
- private get imageSrc();
18
- private get notFoundSrc();
19
- private get hashBasedGradient();
20
- private hashStrToInt;
21
- /**
22
- * Classes
23
- */
24
- private get itemBaseClass();
25
- private get itemImageClass();
26
- /**
27
- * Helper function to determine if account tile image
28
- */
29
- private get isAccountImage();
30
- /**
31
- * Event listener sets isWaveform true if image is waveform
32
- */
33
- private onLoad;
34
- private onError;
35
- /**
36
- * CSS
37
- */
38
- static get styles(): CSSResultGroup;
39
- }
1
+ import { CSSResultGroup, LitElement } from 'lit';
2
+ import type { TileModel } from '../models';
3
+ export declare class ItemImage extends LitElement {
4
+ model?: TileModel;
5
+ baseImageUrl?: string;
6
+ isListTile: boolean;
7
+ isCompactTile: boolean;
8
+ loggedIn: boolean;
9
+ private isWaveform;
10
+ private isNotFound;
11
+ private baseImage;
12
+ render(): import("lit-html").TemplateResult<1>;
13
+ private get imageTemplate();
14
+ /**
15
+ * Helpers
16
+ */
17
+ private get imageSrc();
18
+ private get notFoundSrc();
19
+ private get hashBasedGradient();
20
+ private hashStrToInt;
21
+ /**
22
+ * Classes
23
+ */
24
+ private get itemBaseClass();
25
+ private get itemImageClass();
26
+ /**
27
+ * Helper function to determine if account tile image
28
+ */
29
+ private get isAccountImage();
30
+ /**
31
+ * Event listener sets isWaveform true if image is waveform
32
+ */
33
+ private onLoad;
34
+ private onError;
35
+ /**
36
+ * CSS
37
+ */
38
+ static get styles(): CSSResultGroup;
39
+ }
@@ -1,28 +1,28 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement, nothing } from 'lit';
3
- import { customElement, property, query, state } from 'lit/decorators.js';
4
- import { classMap } from 'lit/directives/class-map.js';
5
- import { baseItemImageStyles, waveformGradientStyles, } from '../styles/item-image-styles';
6
- import { searchIcon } from '../assets/img/icons/mediatype/search';
7
- let ItemImage = class ItemImage extends LitElement {
8
- constructor() {
9
- super(...arguments);
10
- this.isListTile = false;
11
- this.isCompactTile = false;
12
- this.loggedIn = false;
13
- this.isWaveform = false;
14
- this.isNotFound = false;
15
- }
16
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { css, html, LitElement, nothing } from 'lit';
3
+ import { customElement, property, query, state } from 'lit/decorators.js';
4
+ import { classMap } from 'lit/directives/class-map.js';
5
+ import { baseItemImageStyles, waveformGradientStyles, } from '../styles/item-image-styles';
6
+ import { searchIcon } from '../assets/img/icons/mediatype/search';
7
+ let ItemImage = class ItemImage extends LitElement {
8
+ constructor() {
9
+ super(...arguments);
10
+ this.isListTile = false;
11
+ this.isCompactTile = false;
12
+ this.loggedIn = false;
13
+ this.isWaveform = false;
14
+ this.isNotFound = false;
15
+ }
16
+ render() {
17
17
  return html `
18
18
  <div class=${classMap(this.itemBaseClass)}>${this.imageTemplate}</div>
19
- `;
20
- }
21
- get imageTemplate() {
22
- var _a;
23
- if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'search') {
24
- return html `${searchIcon}`;
25
- }
19
+ `;
20
+ }
21
+ get imageTemplate() {
22
+ var _a;
23
+ if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'search') {
24
+ return html `${searchIcon}`;
25
+ }
26
26
  return html `
27
27
  <img
28
28
  class=${classMap(this.itemImageClass)}
@@ -31,105 +31,105 @@ let ItemImage = class ItemImage extends LitElement {
31
31
  @load=${this.onLoad}
32
32
  @error=${this.onError}
33
33
  />
34
- `;
35
- }
36
- /**
37
- * Helpers
38
- */
39
- get imageSrc() {
40
- var _a, _b;
41
- if (this.isNotFound)
42
- return this.notFoundSrc;
43
- // Use the correct image for web capture tiles, if possible
44
- if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.captureDates) && this.model.identifier) {
45
- try {
46
- const url = new URL(this.model.identifier);
47
- const domain = encodeURIComponent(url.hostname);
48
- return this.baseImageUrl
49
- ? `https://web.archive.org/thumb/${domain}?generate=1`
50
- : nothing;
51
- }
52
- catch (err) {
53
- return `${this.baseImageUrl}/images/notfound.png`;
54
- }
55
- }
56
- // Don't try to load invalid image URLs
57
- return this.baseImageUrl && ((_b = this.model) === null || _b === void 0 ? void 0 : _b.identifier)
58
- ? `${this.baseImageUrl}/services/img/${this.model.identifier}`
59
- : nothing;
60
- }
61
- get notFoundSrc() {
62
- return this.baseImageUrl
63
- ? `${this.baseImageUrl}/images/notfound.png`
64
- : nothing;
65
- }
66
- get hashBasedGradient() {
67
- var _a;
68
- if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier)) {
69
- return 'waveform-grad0';
70
- }
71
- const gradient = this.hashStrToInt(this.model.identifier) % 6; // returns 0-5
72
- return `waveform-grad${gradient}`;
73
- }
74
- hashStrToInt(str) {
75
- return str
76
- .split('')
77
- .reduce((acc, char) => acc + char.charCodeAt(0), 0);
78
- }
79
- /**
80
- * Classes
81
- */
82
- get itemBaseClass() {
83
- var _a;
84
- return {
85
- 'drop-shadow': true,
86
- 'list-box': this.isListTile,
87
- 'search-image': ((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'search',
88
- [this.hashBasedGradient]: this.isWaveform,
89
- };
90
- }
91
- get itemImageClass() {
92
- var _a, _b, _c;
93
- const toBlur = ((_a = this.model) === null || _a === void 0 ? void 0 : _a.contentWarning) || ((_b = this.model) === null || _b === void 0 ? void 0 : _b.loginRequired);
94
- return {
95
- contain: !this.isCompactTile && !this.isWaveform,
96
- cover: this.isCompactTile,
97
- blur: toBlur || false,
98
- waveform: this.isWaveform,
99
- 'account-image': this.isAccountImage,
100
- 'collection-image': ((_c = this.model) === null || _c === void 0 ? void 0 : _c.mediatype) === 'collection', // for collection tile image
101
- };
102
- }
103
- /**
104
- * Helper function to determine if account tile image
105
- */
106
- get isAccountImage() {
107
- var _a;
108
- return (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account' &&
109
- !this.isCompactTile &&
110
- !this.isListTile);
111
- }
112
- /**
113
- * Event listener sets isWaveform true if image is waveform
114
- */
115
- onLoad() {
116
- var _a, _b;
117
- if ((((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'audio' ||
118
- ((_b = this.model) === null || _b === void 0 ? void 0 : _b.mediatype) === 'etree') &&
119
- this.baseImage.naturalWidth / this.baseImage.naturalHeight === 4) {
120
- this.isWaveform = true;
121
- }
122
- }
123
- onError() {
124
- this.isNotFound = true;
125
- }
126
- /**
127
- * CSS
128
- */
129
- static get styles() {
130
- return [
131
- baseItemImageStyles,
132
- waveformGradientStyles,
34
+ `;
35
+ }
36
+ /**
37
+ * Helpers
38
+ */
39
+ get imageSrc() {
40
+ var _a, _b;
41
+ if (this.isNotFound)
42
+ return this.notFoundSrc;
43
+ // Use the correct image for web capture tiles, if possible
44
+ if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.captureDates) && this.model.identifier) {
45
+ try {
46
+ const url = new URL(this.model.identifier);
47
+ const domain = encodeURIComponent(url.hostname);
48
+ return this.baseImageUrl
49
+ ? `https://web.archive.org/thumb/${domain}?generate=1`
50
+ : nothing;
51
+ }
52
+ catch (err) {
53
+ return `${this.baseImageUrl}/images/notfound.png`;
54
+ }
55
+ }
56
+ // Don't try to load invalid image URLs
57
+ return this.baseImageUrl && ((_b = this.model) === null || _b === void 0 ? void 0 : _b.identifier)
58
+ ? `${this.baseImageUrl}/services/img/${this.model.identifier}`
59
+ : nothing;
60
+ }
61
+ get notFoundSrc() {
62
+ return this.baseImageUrl
63
+ ? `${this.baseImageUrl}/images/notfound.png`
64
+ : nothing;
65
+ }
66
+ get hashBasedGradient() {
67
+ var _a;
68
+ if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier)) {
69
+ return 'waveform-grad0';
70
+ }
71
+ const gradient = this.hashStrToInt(this.model.identifier) % 6; // returns 0-5
72
+ return `waveform-grad${gradient}`;
73
+ }
74
+ hashStrToInt(str) {
75
+ return str
76
+ .split('')
77
+ .reduce((acc, char) => acc + char.charCodeAt(0), 0);
78
+ }
79
+ /**
80
+ * Classes
81
+ */
82
+ get itemBaseClass() {
83
+ var _a;
84
+ return {
85
+ 'drop-shadow': true,
86
+ 'list-box': this.isListTile,
87
+ 'search-image': ((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'search',
88
+ [this.hashBasedGradient]: this.isWaveform,
89
+ };
90
+ }
91
+ get itemImageClass() {
92
+ var _a, _b, _c;
93
+ const toBlur = ((_a = this.model) === null || _a === void 0 ? void 0 : _a.contentWarning) || ((_b = this.model) === null || _b === void 0 ? void 0 : _b.loginRequired);
94
+ return {
95
+ contain: !this.isCompactTile && !this.isWaveform,
96
+ cover: this.isCompactTile,
97
+ blur: toBlur || false,
98
+ waveform: this.isWaveform,
99
+ 'account-image': this.isAccountImage,
100
+ 'collection-image': ((_c = this.model) === null || _c === void 0 ? void 0 : _c.mediatype) === 'collection', // for collection tile image
101
+ };
102
+ }
103
+ /**
104
+ * Helper function to determine if account tile image
105
+ */
106
+ get isAccountImage() {
107
+ var _a;
108
+ return (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account' &&
109
+ !this.isCompactTile &&
110
+ !this.isListTile);
111
+ }
112
+ /**
113
+ * Event listener sets isWaveform true if image is waveform
114
+ */
115
+ onLoad() {
116
+ var _a, _b;
117
+ if ((((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'audio' ||
118
+ ((_b = this.model) === null || _b === void 0 ? void 0 : _b.mediatype) === 'etree') &&
119
+ this.baseImage.naturalWidth / this.baseImage.naturalHeight === 4) {
120
+ this.isWaveform = true;
121
+ }
122
+ }
123
+ onError() {
124
+ this.isNotFound = true;
125
+ }
126
+ /**
127
+ * CSS
128
+ */
129
+ static get styles() {
130
+ return [
131
+ baseItemImageStyles,
132
+ waveformGradientStyles,
133
133
  css `
134
134
  img {
135
135
  height: var(--imgHeight, 16rem);
@@ -148,36 +148,36 @@ let ItemImage = class ItemImage extends LitElement {
148
148
  height: 10rem;
149
149
  width: 10rem;
150
150
  }
151
- `,
152
- ];
153
- }
154
- };
155
- __decorate([
156
- property({ type: Object })
157
- ], ItemImage.prototype, "model", void 0);
158
- __decorate([
159
- property({ type: String })
160
- ], ItemImage.prototype, "baseImageUrl", void 0);
161
- __decorate([
162
- property({ type: Boolean })
163
- ], ItemImage.prototype, "isListTile", void 0);
164
- __decorate([
165
- property({ type: Boolean })
166
- ], ItemImage.prototype, "isCompactTile", void 0);
167
- __decorate([
168
- property({ type: Boolean })
169
- ], ItemImage.prototype, "loggedIn", void 0);
170
- __decorate([
171
- state()
172
- ], ItemImage.prototype, "isWaveform", void 0);
173
- __decorate([
174
- state()
175
- ], ItemImage.prototype, "isNotFound", void 0);
176
- __decorate([
177
- query('img')
178
- ], ItemImage.prototype, "baseImage", void 0);
179
- ItemImage = __decorate([
180
- customElement('item-image')
181
- ], ItemImage);
182
- export { ItemImage };
151
+ `,
152
+ ];
153
+ }
154
+ };
155
+ __decorate([
156
+ property({ type: Object })
157
+ ], ItemImage.prototype, "model", void 0);
158
+ __decorate([
159
+ property({ type: String })
160
+ ], ItemImage.prototype, "baseImageUrl", void 0);
161
+ __decorate([
162
+ property({ type: Boolean })
163
+ ], ItemImage.prototype, "isListTile", void 0);
164
+ __decorate([
165
+ property({ type: Boolean })
166
+ ], ItemImage.prototype, "isCompactTile", void 0);
167
+ __decorate([
168
+ property({ type: Boolean })
169
+ ], ItemImage.prototype, "loggedIn", void 0);
170
+ __decorate([
171
+ state()
172
+ ], ItemImage.prototype, "isWaveform", void 0);
173
+ __decorate([
174
+ state()
175
+ ], ItemImage.prototype, "isNotFound", void 0);
176
+ __decorate([
177
+ query('img')
178
+ ], ItemImage.prototype, "baseImage", void 0);
179
+ ItemImage = __decorate([
180
+ customElement('item-image')
181
+ ], ItemImage);
182
+ export { ItemImage };
183
183
  //# sourceMappingURL=item-image.js.map
@@ -1,6 +1,6 @@
1
- import { BaseTileComponent } from '../base-tile-component';
2
- export declare class TileListCompactHeader extends BaseTileComponent {
3
- render(): import("lit-html").TemplateResult<1>;
4
- private get classSize();
5
- static get styles(): import("lit").CSSResult;
6
- }
1
+ import { BaseTileComponent } from '../base-tile-component';
2
+ export declare class TileListCompactHeader extends BaseTileComponent {
3
+ render(): import("lit-html").TemplateResult<1>;
4
+ private get classSize();
5
+ static get styles(): import("lit").CSSResult;
6
+ }
@@ -1,23 +1,23 @@
1
- import { __decorate } from "tslib";
2
- import { css, html } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- import { msg } from '@lit/localize';
5
- import { BaseTileComponent } from '../base-tile-component';
6
- let TileListCompactHeader = class TileListCompactHeader extends BaseTileComponent {
7
- /*
8
- * Reactive properties inherited from BaseTileComponent:
9
- * - model?: TileModel;
10
- * - currentWidth?: number;
11
- * - currentHeight?: number;
12
- * - baseNavigationUrl?: string;
13
- * - baseImageUrl?: string;
14
- * - collectionPagePath?: string;
15
- * - sortParam: SortParam | null = null;
16
- * - creatorFilter?: string;
17
- * - mobileBreakpoint?: number;
18
- * - loggedIn = false;
19
- */
20
- render() {
1
+ import { __decorate } from "tslib";
2
+ import { css, html } from 'lit';
3
+ import { customElement } from 'lit/decorators.js';
4
+ import { msg } from '@lit/localize';
5
+ import { BaseTileComponent } from '../base-tile-component';
6
+ let TileListCompactHeader = class TileListCompactHeader extends BaseTileComponent {
7
+ /*
8
+ * Reactive properties inherited from BaseTileComponent:
9
+ * - model?: TileModel;
10
+ * - currentWidth?: number;
11
+ * - currentHeight?: number;
12
+ * - baseNavigationUrl?: string;
13
+ * - baseImageUrl?: string;
14
+ * - collectionPagePath?: string;
15
+ * - sortParam: SortParam | null = null;
16
+ * - creatorFilter?: string;
17
+ * - mobileBreakpoint?: number;
18
+ * - loggedIn = false;
19
+ */
20
+ render() {
21
21
  return html `
22
22
  <div id="list-line-header" class="${this.classSize}">
23
23
  <div id="thumb"></div>
@@ -27,17 +27,17 @@ let TileListCompactHeader = class TileListCompactHeader extends BaseTileComponen
27
27
  <div id="icon">${msg('Type')}</div>
28
28
  <div id="views">${msg('Views')}</div>
29
29
  </div>
30
- `;
31
- }
32
- get classSize() {
33
- if (this.mobileBreakpoint &&
34
- this.currentWidth &&
35
- this.currentWidth < this.mobileBreakpoint) {
36
- return 'mobile';
37
- }
38
- return 'desktop';
39
- }
40
- static get styles() {
30
+ `;
31
+ }
32
+ get classSize() {
33
+ if (this.mobileBreakpoint &&
34
+ this.currentWidth &&
35
+ this.currentWidth < this.mobileBreakpoint) {
36
+ return 'mobile';
37
+ }
38
+ return 'desktop';
39
+ }
40
+ static get styles() {
41
41
  return css `
42
42
  html {
43
43
  font-size: unset;
@@ -72,11 +72,11 @@ let TileListCompactHeader = class TileListCompactHeader extends BaseTileComponen
72
72
  #list-line-header.desktop {
73
73
  grid-template-columns: 51px 3fr 2fr 95px 30px 60px;
74
74
  }
75
- `;
76
- }
77
- };
78
- TileListCompactHeader = __decorate([
79
- customElement('tile-list-compact-header')
80
- ], TileListCompactHeader);
81
- export { TileListCompactHeader };
75
+ `;
76
+ }
77
+ };
78
+ TileListCompactHeader = __decorate([
79
+ customElement('tile-list-compact-header')
80
+ ], TileListCompactHeader);
81
+ export { TileListCompactHeader };
82
82
  //# sourceMappingURL=tile-list-compact-header.js.map
@@ -1,15 +1,15 @@
1
- import { BaseTileComponent } from '../base-tile-component';
2
- import '../image-block';
3
- import '../mediatype-icon';
4
- export declare class TileListCompact extends BaseTileComponent {
5
- render(): import("lit-html").TemplateResult<1>;
6
- private get href();
7
- private get creator();
8
- private get date();
9
- private get views();
10
- private get classSize();
11
- private get dateFormatSize();
12
- private get formatSize();
13
- private get isSortedByDate();
14
- static get styles(): import("lit").CSSResult;
15
- }
1
+ import { BaseTileComponent } from '../base-tile-component';
2
+ import '../image-block';
3
+ import '../mediatype-icon';
4
+ export declare class TileListCompact extends BaseTileComponent {
5
+ render(): import("lit-html").TemplateResult<1>;
6
+ private get href();
7
+ private get creator();
8
+ private get date();
9
+ private get views();
10
+ private get classSize();
11
+ private get dateFormatSize();
12
+ private get formatSize();
13
+ private get isSortedByDate();
14
+ static get styles(): import("lit").CSSResult;
15
+ }