@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
@@ -1 +0,0 @@
1
- {"version":3,"file":"sort-filter-bar.js","sourceRoot":"","sources":["../../../src/sort-filter-bar/sort-filter-bar.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n LitElement,\n html,\n css,\n nothing,\n PropertyValues,\n TemplateResult,\n} from 'lit';\nimport { customElement, property, query, state } from 'lit/decorators.js';\nimport {\n SharedResizeObserverInterface,\n SharedResizeObserverResizeHandlerInterface,\n} from '@internetarchive/shared-resize-observer';\nimport {\n CollectionDisplayMode,\n SortField,\n SortFieldDisplayName,\n} from '../models';\nimport './alpha-bar';\n\nimport { sortIcon } from './img/sort-triangle';\nimport { tileIcon } from './img/tile';\nimport { listIcon } from './img/list';\nimport { compactIcon } from './img/compact';\n\ntype AlphaSelector = 'creator' | 'title';\n\n@customElement('sort-filter-bar')\nexport class SortFilterBar\n extends LitElement\n implements SharedResizeObserverResizeHandlerInterface\n{\n @property({ type: String }) displayMode?: CollectionDisplayMode;\n\n @property({ type: String }) sortDirection: 'asc' | 'desc' | null = null;\n\n @property({ type: String }) selectedSort: SortField = SortField.relevance;\n\n @property({ type: String }) selectedTitleFilter: string | null = null;\n\n @property({ type: String }) selectedCreatorFilter: string | null = null;\n\n @property({ type: Boolean }) showRelevance: boolean = true;\n\n @property({ type: Object }) resizeObserver?: SharedResizeObserverInterface;\n\n @state() alphaSelectorVisible: AlphaSelector | null = null;\n\n @state() dateSortSelectorVisible = false;\n\n @state() desktopSelectorBarWidth = 0;\n\n @state() selectorBarContainerWidth = 0;\n\n @state() hoveringOverDateSortOptions = false;\n\n @query('#desktop-sort-selector')\n private desktopSortSelector!: HTMLUListElement;\n\n @query('#sort-selector-container')\n private sortSelectorContainer!: HTMLDivElement;\n\n render() {\n return html`\n <div id=\"container\">\n <div id=\"sort-bar\">\n <div id=\"sort-direction-container\">\n ${this.sortDirectionSelectorTemplate}\n </div>\n\n <div id=\"sort-selector-container\">\n ${this.mobileSortSelectorTemplate}\n ${this.desktopSortSelectorTemplate}\n </div>\n\n <div id=\"display-style-selector\">${this.displayOptionTemplate}</div>\n </div>\n\n ${this.dateSortSelectorVisible && !this.mobileSelectorVisible\n ? this.dateSortSelector\n : nothing}\n ${this.alphaBarTemplate}\n\n <div id=\"bottom-shadow\"></div>\n </div>\n `;\n }\n\n updated(changed: PropertyValues) {\n if (changed.has('displayMode')) {\n this.displayModeChanged();\n }\n\n if (changed.has('selectedSort') && this.sortDirection === null) {\n this.sortDirection = 'desc';\n }\n\n if (changed.has('selectedTitleFilter') && this.selectedTitleFilter) {\n this.alphaSelectorVisible = 'title';\n }\n\n if (changed.has('selectedCreatorFilter') && this.selectedCreatorFilter) {\n this.alphaSelectorVisible = 'creator';\n }\n\n if (changed.has('dateSortSelectorVisible')) {\n this.setupEscapeListeners();\n }\n\n if (changed.has('resizeObserver')) {\n const oldObserver = changed.get(\n 'resizeObserver'\n ) as SharedResizeObserverInterface;\n if (oldObserver) this.disconnectResizeObserver(oldObserver);\n this.setupResizeObserver();\n }\n }\n\n private setupEscapeListeners() {\n if (this.dateSortSelectorVisible) {\n document.addEventListener(\n 'keydown',\n this.boundDateSelectorEscapeListener\n );\n } else {\n document.removeEventListener(\n 'keydown',\n this.boundDateSelectorEscapeListener\n );\n }\n }\n\n private boundDateSelectorEscapeListener = (e: KeyboardEvent) => {\n if (e.key === 'Escape') {\n this.dateSortSelectorVisible = false;\n }\n };\n\n disconnectedCallback(): void {\n if (this.resizeObserver) {\n this.disconnectResizeObserver(this.resizeObserver);\n }\n }\n\n private disconnectResizeObserver(\n resizeObserver: SharedResizeObserverInterface\n ) {\n resizeObserver.removeObserver({\n target: this.sortSelectorContainer,\n handler: this,\n });\n\n resizeObserver.removeObserver({\n target: this.desktopSortSelector,\n handler: this,\n });\n }\n\n private setupResizeObserver() {\n if (!this.resizeObserver) return;\n this.resizeObserver.addObserver({\n target: this.sortSelectorContainer,\n handler: this,\n });\n\n this.resizeObserver.addObserver({\n target: this.desktopSortSelector,\n handler: this,\n });\n }\n\n private get mobileSelectorVisible() {\n return this.selectorBarContainerWidth - 10 < this.desktopSelectorBarWidth;\n }\n\n private get alphaBarTemplate(): TemplateResult | typeof nothing {\n if (!['title', 'creator'].includes(this.selectedSort)) return nothing;\n\n if (this.alphaSelectorVisible === null) {\n if (this.selectedSort === 'creator') return this.creatorSelectorBar;\n if (this.selectedSort === 'title') return this.titleSelectorBar;\n } else {\n return this.alphaSelectorVisible === 'creator'\n ? this.creatorSelectorBar\n : this.titleSelectorBar;\n }\n\n return nothing;\n }\n\n handleResize(entry: ResizeObserverEntry): void {\n if (entry.target === this.desktopSortSelector) {\n this.desktopSelectorBarWidth = entry.contentRect.width;\n } else if (entry.target === this.sortSelectorContainer) {\n this.selectorBarContainerWidth = entry.contentRect.width;\n }\n }\n\n private get sortDirectionSelectorTemplate() {\n return html`\n <div id=\"sort-direction-selector\">\n <button\n id=\"sort-ascending-btn\"\n class=\"sort-button ${this.sortDirection === 'asc' ? 'selected' : ''}\"\n ?disabled=${this.selectedSort === 'relevance'}\n @click=${() => {\n this.setSortDirections('asc');\n }}\n >\n ${sortIcon}\n </button>\n <button\n id=\"sort-descending-btn\"\n class=\"sort-button ${this.sortDirection === 'desc' ? 'selected' : ''}\"\n ?disabled=${this.selectedSort === 'relevance'}\n @click=${() => {\n this.setSortDirections('desc');\n }}\n >\n ${sortIcon}\n </button>\n </div>\n `;\n }\n\n private get desktopSortSelectorTemplate() {\n return html`\n <ul\n id=\"desktop-sort-selector\"\n class=${this.mobileSelectorVisible ? 'hidden' : 'visible'}\n >\n <li id=\"sort-by-text\">Sort By</li>\n <li>\n ${this.showRelevance\n ? this.getSortDisplayOption(SortField.relevance)\n : nothing}\n </li>\n <li>${this.getSortDisplayOption(SortField.views)}</li>\n <li>\n ${this.getSortDisplayOption(SortField.title, {\n clickEvent: () => {\n this.alphaSelectorVisible = 'title';\n this.selectedCreatorFilter = null;\n this.dateSortSelectorVisible = false;\n this.setSelectedSort(SortField.title);\n this.emitCreatorLetterChangedEvent();\n },\n })}\n </li>\n <li>\n ${this.getSortDisplayOption(SortField.date, {\n clickEvent: () => {\n if (!this.dateOptionSelected)\n this.setSelectedSort(SortField.date);\n this.dateSortSelectorVisible = !this.dateSortSelectorVisible;\n this.alphaSelectorVisible = null;\n this.selectedTitleFilter = null;\n this.selectedCreatorFilter = null;\n this.emitTitleLetterChangedEvent();\n this.emitCreatorLetterChangedEvent();\n },\n displayName: html`${this.dateSortField}`,\n isSelected: () => this.dateOptionSelected,\n })}\n </li>\n <li>\n ${this.getSortDisplayOption(SortField.creator, {\n clickEvent: () => {\n this.alphaSelectorVisible = 'creator';\n this.selectedTitleFilter = null;\n this.dateSortSelectorVisible = false;\n this.setSelectedSort(SortField.creator);\n this.emitTitleLetterChangedEvent();\n },\n })}\n </li>\n </ul>\n `;\n }\n\n /**\n * This generates each of the sort option links.\n *\n * It manages the display value and the selected state of the option.\n *\n * @param sortField\n * @param options {\n * additionalClickEvent?: () => void; If this is provided, it will also be called when the option is clicked.\n * displayName?: TemplateResult; The name to display for the option. Defaults to the sortField display name.\n * isSelected?: () => boolean; A function that returns true if the option is selected. Defaults to the selectedSort === sortField.\n * }\n * @returns\n */\n private getSortDisplayOption(\n sortField: SortField,\n options?: {\n clickEvent?: (e: Event) => void;\n isSelected?: () => boolean;\n displayName?: TemplateResult;\n }\n ): TemplateResult {\n const isSelected =\n options?.isSelected ?? (() => this.selectedSort === sortField);\n const displayName = options?.displayName ?? SortFieldDisplayName[sortField];\n return html`\n <a\n href=\"#\"\n @click=${(e: Event) => {\n e.preventDefault();\n if (options?.clickEvent) {\n options.clickEvent(e);\n } else {\n this.alphaSelectorVisible = null;\n this.dateSortSelectorVisible = false;\n this.selectedTitleFilter = null;\n this.selectedCreatorFilter = null;\n this.setSelectedSort(sortField);\n this.emitTitleLetterChangedEvent();\n this.emitCreatorLetterChangedEvent();\n }\n }}\n class=${isSelected() ? 'selected' : ''}\n >\n ${displayName}\n </a>\n `;\n }\n\n private get mobileSortSelectorTemplate() {\n return html`\n <select\n id=\"mobile-sort-selector\"\n @change=${this.mobileSortChanged}\n class=${this.mobileSelectorVisible ? 'visible' : 'hidden'}\n >\n ${Object.keys(SortField).map(\n field => html`\n <option value=\"${field}\" ?selected=${this.selectedSort === field}>\n ${SortFieldDisplayName[field as SortField]}\n </option>\n `\n )}\n </select>\n `;\n }\n\n private mobileSortChanged(e: Event) {\n const target = e.target as HTMLSelectElement;\n this.setSelectedSort(target.value as SortField);\n }\n\n private get displayOptionTemplate() {\n return html`\n <ul>\n <li>\n <button\n id=\"grid-button\"\n @click=${() => {\n this.displayMode = 'grid';\n }}\n class=${this.displayMode === 'grid' ? 'active' : ''}\n title=\"Tile view\"\n >\n ${tileIcon}\n </button>\n </li>\n <li>\n <button\n id=\"grid-button\"\n @click=${() => {\n this.displayMode = 'list-detail';\n }}\n class=${this.displayMode === 'list-detail' ? 'active' : ''}\n title=\"List view\"\n >\n ${listIcon}\n </button>\n </li>\n <li>\n <button\n id=\"list-button\"\n @click=${() => {\n this.displayMode = 'list-compact';\n }}\n class=${this.displayMode === 'list-compact' ? 'active' : ''}\n title=\"Compact list view\"\n >\n ${compactIcon}\n </button>\n </li>\n </ul>\n `;\n }\n\n private get dateSortSelector() {\n return html`\n <div\n id=\"date-sort-selector-backdrop\"\n @keyup=${() => {\n this.dateSortSelectorVisible = false;\n }}\n @click=${() => {\n this.dateSortSelectorVisible = false;\n }}\n ></div>\n <div id=\"date-sort-selector\">\n <ul>\n <li>${this.getDateSortButton(SortField.datearchived)}</li>\n <li>${this.getDateSortButton(SortField.date)}</li>\n <li>${this.getDateSortButton(SortField.datereviewed)}</li>\n <li>${this.getDateSortButton(SortField.dateadded)}</li>\n </ul>\n </div>\n `;\n }\n\n private getDateSortButton(sortField: SortField) {\n return html`\n <button\n @click=${() => {\n this.selectDateSort(sortField);\n }}\n class=${this.selectedSort === sortField ? 'selected' : ''}\n >\n ${SortFieldDisplayName[sortField]}\n </button>\n `;\n }\n\n private selectDateSort(sortField: SortField) {\n this.dateSortSelectorVisible = false;\n this.setSelectedSort(sortField);\n }\n\n private setSortDirections(sortDirection: 'asc' | 'desc') {\n this.sortDirection = sortDirection;\n this.emitSortChangedEvent();\n }\n\n private setSelectedSort(sort: SortField) {\n this.selectedSort = sort;\n this.emitSortChangedEvent();\n }\n\n /**\n * There are four date sort options.\n *\n * This checks to see if the current sort is one of them.\n *\n * @readonly\n * @private\n * @type {boolean}\n * @memberof SortFilterBar\n */\n private get dateOptionSelected(): boolean {\n const dateSortFields: SortField[] = [\n SortField.datearchived,\n SortField.date,\n SortField.datereviewed,\n SortField.dateadded,\n ];\n return dateSortFields.includes(this.selectedSort);\n }\n\n /**\n * The display name of the current date field\n *\n * @readonly\n * @private\n * @type {string}\n * @memberof SortFilterBar\n */\n private get dateSortField(): string {\n const defaultSort = SortFieldDisplayName[SortField.date];\n const name = this.dateOptionSelected\n ? SortFieldDisplayName[this.selectedSort] ?? defaultSort\n : defaultSort;\n return name;\n }\n\n private get titleSelectorBar() {\n return html` <alpha-bar\n .selectedLetter=${this.selectedTitleFilter}\n @letterChanged=${this.titleLetterChanged}\n ></alpha-bar>`;\n }\n\n private get creatorSelectorBar() {\n return html` <alpha-bar\n .selectedLetter=${this.selectedCreatorFilter}\n @letterChanged=${this.creatorLetterChanged}\n ></alpha-bar>`;\n }\n\n private titleLetterChanged(\n e: CustomEvent<{ selectedLetter: string | undefined }>\n ) {\n this.selectedTitleFilter = e.detail.selectedLetter ?? null;\n this.emitTitleLetterChangedEvent();\n }\n\n private creatorLetterChanged(\n e: CustomEvent<{ selectedLetter: string | undefined }>\n ) {\n this.selectedCreatorFilter = e.detail.selectedLetter ?? null;\n this.emitCreatorLetterChangedEvent();\n }\n\n private emitTitleLetterChangedEvent() {\n const event = new CustomEvent<{ selectedLetter: string | null }>(\n 'titleLetterChanged',\n {\n detail: { selectedLetter: this.selectedTitleFilter },\n }\n );\n this.dispatchEvent(event);\n }\n\n private emitCreatorLetterChangedEvent() {\n const event = new CustomEvent<{ selectedLetter: string | null }>(\n 'creatorLetterChanged',\n {\n detail: { selectedLetter: this.selectedCreatorFilter },\n }\n );\n this.dispatchEvent(event);\n }\n\n private displayModeChanged() {\n const event = new CustomEvent('displayModeChanged', {\n detail: { displayMode: this.displayMode },\n });\n this.dispatchEvent(event);\n }\n\n private emitSortChangedEvent() {\n const event = new CustomEvent<{\n selectedSort: SortField;\n sortDirection: 'asc' | 'desc' | null;\n }>('sortChanged', {\n detail: {\n selectedSort: this.selectedSort,\n sortDirection: this.sortDirection,\n },\n });\n this.dispatchEvent(event);\n }\n\n static styles = css`\n #container {\n position: relative;\n }\n\n #sort-bar {\n display: flex;\n justify-content: space-between;\n border: 1px solid rgb(232, 232, 232);\n align-items: center;\n padding: 0.5rem 1.5rem;\n }\n\n #sort-direction-container {\n flex: 0;\n }\n\n #sort-by-text {\n text-transform: uppercase;\n }\n\n #bottom-shadow {\n height: 1px;\n width: 100%;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);\n background-color: #bbb;\n }\n\n ul {\n list-style: none;\n display: flex;\n margin: 0;\n padding: 0;\n align-items: center;\n }\n\n li {\n padding: 0;\n }\n\n .sort-button {\n background: none;\n color: inherit;\n border: none;\n padding: 0;\n cursor: pointer;\n outline: inherit;\n width: 12px;\n height: 12px;\n opacity: 0.5;\n }\n\n .sort-button.selected {\n opacity: 1;\n }\n\n .sort-button:disabled {\n opacity: 0.25;\n cursor: default;\n }\n\n #date-sort-selector {\n position: absolute;\n left: 150px;\n top: 45px;\n\n z-index: 1;\n padding: 1rem;\n background-color: white;\n border-radius: 2.5rem;\n border: 1px solid #404142;\n }\n\n #date-sort-selector button {\n background: none;\n border-radius: 15px;\n color: #404142;\n border: none;\n appearance: none;\n cursor: pointer;\n -webkit-appearance: none;\n font-size: 1.4rem;\n font-weight: 400;\n padding: 0.5rem 1.2rem;\n }\n\n #date-sort-selector button.selected {\n background-color: #404142;\n color: white;\n }\n\n #show-details {\n text-transform: uppercase;\n cursor: pointer;\n display: flex;\n }\n\n #show-details input {\n margin-right: 0.5rem;\n flex: 0 0 12px;\n }\n\n #sort-descending-btn {\n transform: rotate(180deg);\n }\n\n #sort-direction-selector {\n display: flex;\n flex-direction: column;\n gap: 3px;\n margin-right: 1rem;\n }\n\n #sort-selector-container {\n flex: 1;\n }\n\n /*\n we move the desktop sort selector offscreen instead of display: none\n because we need to observe the width of it vs its container to determine\n if it's wide enough to display the desktop version and if you displY: none,\n the width becomes 0\n */\n #desktop-sort-selector.hidden {\n position: absolute;\n top: -9999px;\n left: -9999px;\n }\n\n #mobile-sort-selector.hidden {\n display: none;\n }\n\n #date-sort-selector-backdrop {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n z-index: 1;\n background-color: rgba(255, 255, 255, 0.5);\n }\n\n #desktop-sort-selector {\n display: inline-flex;\n }\n\n #desktop-sort-selector li {\n display: flex;\n align-items: center;\n }\n\n #desktop-sort-selector li a {\n text-decoration: none;\n text-transform: uppercase;\n font-size: 1.4rem;\n color: #333;\n line-height: 2.5;\n }\n\n #desktop-sort-selector li a.selected {\n font-weight: bold;\n }\n\n #desktop-sort-selector li::after {\n content: '•';\n padding-left: 1rem;\n padding-right: 1rem;\n }\n\n #desktop-sort-selector li:first-child::after {\n content: '';\n }\n\n #desktop-sort-selector li:last-child::after {\n content: '';\n }\n\n #display-style-selector {\n flex: 0;\n }\n\n #display-style-selector button {\n background: none;\n color: inherit;\n border: none;\n appearance: none;\n cursor: pointer;\n -webkit-appearance: none;\n opacity: 0.5;\n }\n\n #display-style-selector button.active {\n opacity: 1;\n }\n\n #display-style-selector button svg {\n width: 24px;\n height: 24px;\n }\n `;\n}\n"]}
@@ -1,8 +0,0 @@
1
- /**
2
- * Base item-image styles
3
- */
4
- export declare const baseItemImageStyles: import("lit").CSSResult;
5
- /**
6
- * Waveform styles
7
- */
8
- export declare const waveformGradientStyles: import("lit").CSSResult;
@@ -1,101 +0,0 @@
1
- import { css } from 'lit';
2
- /**
3
- * Base item-image styles
4
- */
5
- export const baseItemImageStyles = css `
6
- .drop-shadow {
7
- filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8));
8
- overflow: hidden;
9
- height: 100%;
10
- }
11
-
12
- .list-box {
13
- width: 100%;
14
- height: 100%;
15
- overflow: hidden;
16
- box-sizing: border-box;
17
- display: flex;
18
- position: relative;
19
- }
20
-
21
- .contain {
22
- object-fit: contain;
23
- }
24
-
25
- .cover {
26
- object-fit: cover;
27
- }
28
-
29
- .blur {
30
- filter: blur(15px);
31
- width: 100%;
32
- transform: scale(1.1);
33
- }
34
- `;
35
- /**
36
- * Waveform styles
37
- */
38
- export const waveformGradientStyles = css `
39
- .waveform {
40
- mix-blend-mode: screen;
41
- position: relative;
42
- height: 62.5%;
43
- top: 50%;
44
- transform: translateY(-50%);
45
- }
46
-
47
- .waveform-grad0 {
48
- background: linear-gradient(
49
- hsl(340, 80%, 55%),
50
- hsl(0, 80%, 33%) 35%,
51
- hsl(0, 80%, 22%) 70%,
52
- hsl(0, 0%, 0%)
53
- );
54
- }
55
-
56
- .waveform-grad1 {
57
- background: linear-gradient(
58
- hsl(300, 80%, 55%),
59
- hsl(330, 80%, 33%) 35%,
60
- hsl(330, 80%, 22%) 70%,
61
- hsl(0, 0%, 0%)
62
- );
63
- }
64
-
65
- .waveform-grad2 {
66
- background: linear-gradient(
67
- hsl(200, 80%, 55%),
68
- hsl(230, 80%, 33%) 35%,
69
- hsl(230, 80%, 22%) 70%,
70
- hsl(0, 0%, 0%)
71
- );
72
- }
73
-
74
- .waveform-grad3 {
75
- background: linear-gradient(
76
- hsl(160, 80%, 55%),
77
- hsl(190, 80%, 33%) 35%,
78
- hsl(190, 80%, 22%) 70%,
79
- hsl(0, 0%, 0%)
80
- );
81
- }
82
-
83
- .waveform-grad4 {
84
- background: linear-gradient(
85
- hsl(250, 80%, 55%),
86
- hsl(280, 80%, 33%) 35%,
87
- hsl(280, 80%, 22%) 70%,
88
- hsl(0, 0%, 0%)
89
- );
90
- }
91
-
92
- .waveform-grad5 {
93
- background: linear-gradient(
94
- hsl(280, 80%, 55%),
95
- hsl(310, 80%, 33%) 35%,
96
- hsl(310, 80%, 22%) 70%,
97
- hsl(0, 0%, 0%)
98
- );
99
- }
100
- `;
101
- //# sourceMappingURL=item-image-styles.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"item-image-styles.js","sourceRoot":"","sources":["../../../src/styles/item-image-styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8DxC,CAAC","sourcesContent":["import { css } from 'lit';\n\n/**\n * Base item-image styles\n */\nexport const baseItemImageStyles = css`\n .drop-shadow {\n filter: drop-shadow(1px 1px 2px rgba(0, 0, 0, 0.8));\n overflow: hidden;\n height: 100%;\n }\n\n .list-box {\n width: 100%;\n height: 100%;\n overflow: hidden;\n box-sizing: border-box;\n display: flex;\n position: relative;\n }\n\n .contain {\n object-fit: contain;\n }\n\n .cover {\n object-fit: cover;\n }\n\n .blur {\n filter: blur(15px);\n width: 100%;\n transform: scale(1.1);\n }\n`;\n\n/**\n * Waveform styles\n */\nexport const waveformGradientStyles = css`\n .waveform {\n mix-blend-mode: screen;\n position: relative;\n height: 62.5%;\n top: 50%;\n transform: translateY(-50%);\n }\n\n .waveform-grad0 {\n background: linear-gradient(\n hsl(340, 80%, 55%),\n hsl(0, 80%, 33%) 35%,\n hsl(0, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad1 {\n background: linear-gradient(\n hsl(300, 80%, 55%),\n hsl(330, 80%, 33%) 35%,\n hsl(330, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad2 {\n background: linear-gradient(\n hsl(200, 80%, 55%),\n hsl(230, 80%, 33%) 35%,\n hsl(230, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad3 {\n background: linear-gradient(\n hsl(160, 80%, 55%),\n hsl(190, 80%, 33%) 35%,\n hsl(190, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad4 {\n background: linear-gradient(\n hsl(250, 80%, 55%),\n hsl(280, 80%, 33%) 35%,\n hsl(280, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n\n .waveform-grad5 {\n background: linear-gradient(\n hsl(280, 80%, 55%),\n hsl(310, 80%, 33%) 35%,\n hsl(310, 80%, 22%) 70%,\n hsl(0, 0%, 0%)\n );\n }\n`;\n"]}
@@ -1,5 +0,0 @@
1
- import { LitElement } from 'lit';
2
- export declare class CollectionBrowserLoadingTile extends LitElement {
3
- render(): import("lit-html").TemplateResult<1>;
4
- static get styles(): import("lit").CSSResult;
5
- }
@@ -1,32 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement } from 'lit/decorators.js';
4
- let CollectionBrowserLoadingTile = class CollectionBrowserLoadingTile extends LitElement {
5
- render() {
6
- return html ` <div id="container"></div> `;
7
- }
8
- static get styles() {
9
- return css `
10
- :host {
11
- display: block;
12
- height: 100%;
13
- }
14
-
15
- #container {
16
- background: linear-gradient(
17
- to right,
18
- rgba(25, 69, 154, 0.1),
19
- rgb(105, 161, 234, 0.2)
20
- );
21
- background-size: 100% 100%;
22
- display: block;
23
- height: 100%;
24
- }
25
- `;
26
- }
27
- };
28
- CollectionBrowserLoadingTile = __decorate([
29
- customElement('collection-browser-loading-tile')
30
- ], CollectionBrowserLoadingTile);
31
- export { CollectionBrowserLoadingTile };
32
- //# sourceMappingURL=collection-browser-loading-tile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection-browser-loading-tile.js","sourceRoot":"","sources":["../../../src/tiles/collection-browser-loading-tile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGlD,IAAa,4BAA4B,GAAzC,MAAa,4BAA6B,SAAQ,UAAU;IAC1D,MAAM;QACJ,OAAO,IAAI,CAAA,8BAA8B,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;KAgBT,CAAC;IACJ,CAAC;CACF,CAAA;AAxBY,4BAA4B;IADxC,aAAa,CAAC,iCAAiC,CAAC;GACpC,4BAA4B,CAwBxC;SAxBY,4BAA4B","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement } from 'lit/decorators.js';\n\n@customElement('collection-browser-loading-tile')\nexport class CollectionBrowserLoadingTile extends LitElement {\n render() {\n return html` <div id=\"container\"></div> `;\n }\n\n static get styles() {\n return css`\n :host {\n display: block;\n height: 100%;\n }\n\n #container {\n background: linear-gradient(\n to right,\n rgba(25, 69, 154, 0.1),\n rgb(105, 161, 234, 0.2)\n );\n background-size: 100% 100%;\n display: block;\n height: 100%;\n }\n `;\n }\n}\n"]}
@@ -1,8 +0,0 @@
1
- import { LitElement } from 'lit';
2
- import { TileModel } from '../../models';
3
- import './tile-stats';
4
- export declare class AccountTile extends LitElement {
5
- model?: TileModel;
6
- render(): import("lit-html").TemplateResult<1>;
7
- static get styles(): import("lit").CSSResult;
8
- }
@@ -1,126 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { css, html, LitElement } from 'lit';
3
- import { customElement, property } from 'lit/decorators.js';
4
- import './tile-stats';
5
- let AccountTile = class AccountTile extends LitElement {
6
- render() {
7
- var _a, _b, _c, _d, _e, _f, _g, _h;
8
- return html `
9
- <div class="account-tile-main">
10
- <div id="title">
11
- <h1 class="truncated">${(_a = this.model) === null || _a === void 0 ? void 0 : _a.identifier}</h1>
12
- </div>
13
-
14
- <div class="account-info">
15
- <div id="avatar-info">
16
- <img
17
- id="avatar"
18
- alt="patron-avatar"
19
- src="https://archive.org/services/img/${(_b = this.model) === null || _b === void 0 ? void 0 : _b.identifier}"
20
- />
21
- </div>
22
-
23
- <span id="archivist-since">
24
- Archivist since ${(_d = (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateAdded) === null || _d === void 0 ? void 0 : _d.getFullYear()}
25
- </span>
26
- </div>
27
-
28
- <tile-stats
29
- .mediatype=${(_e = this.model) === null || _e === void 0 ? void 0 : _e.mediatype}
30
- .itemCount=${(_f = this.model) === null || _f === void 0 ? void 0 : _f.itemCount}
31
- .favCount=${(_g = this.model) === null || _g === void 0 ? void 0 : _g.favCount}
32
- .commentCount=${(_h = this.model) === null || _h === void 0 ? void 0 : _h.commentCount}
33
- >
34
- </tile-stats>
35
- </div>
36
- `;
37
- }
38
- static get styles() {
39
- return css `
40
- h1 {
41
- color: black;
42
- font-size: 16px;
43
- margin: 0;
44
- }
45
-
46
- span {
47
- font-size: 14px;
48
- color: #2c2c2c;
49
- margin: 0px;
50
- }
51
-
52
- .account-tile-main {
53
- background-color: #fcf5e6;
54
- border: 1px #2c2c2c;
55
- border-radius: 4px;
56
- box-shadow: 1px 1px 2px 0px;
57
- height: 100%;
58
- display: flex;
59
- flex-direction: column;
60
- text-align: center;
61
- width: 100%;
62
- }
63
-
64
- .account-info {
65
- flex-grow: 1;
66
- }
67
-
68
- #title {
69
- padding: 5px 5px 0px 5px;
70
- flex-shrink: 0;
71
- height: 40px;
72
- }
73
-
74
- .account-tile-main:hover > #title > .truncated {
75
- text-decoration: underline;
76
- }
77
-
78
- /** this is a workaround for Safari 15 where the hover effects are not working */
79
- #title:hover > .truncated {
80
- text-decoration: underline;
81
- }
82
-
83
- #avatar-info {
84
- margin-top: 5px;
85
- margin-bottom: 5px;
86
- display: flex;
87
- align-items: center;
88
- justify-content: center;
89
- }
90
-
91
- #avatar {
92
- background-position: 50% 50%;
93
- border-radius: 50%;
94
- width: 160px;
95
- height: 160px;
96
- box-shadow: 1px 1px 2px #888888;
97
- }
98
-
99
- #archivist-since {
100
- margin-bottom: 5px;
101
- height: 40px;
102
- }
103
-
104
- .truncated {
105
- flex: 1;
106
- min-width: 0; /* Important for long words! */
107
- -webkit-line-clamp: 2;
108
- text-overflow: ellipsis;
109
- overflow: hidden;
110
- display: -webkit-box;
111
- -webkit-box-orient: vertical;
112
- word-wrap: break-word;
113
- line-height: 2rem;
114
- text-align: center;
115
- }
116
- `;
117
- }
118
- };
119
- __decorate([
120
- property({ type: Object })
121
- ], AccountTile.prototype, "model", void 0);
122
- AccountTile = __decorate([
123
- customElement('account-tile')
124
- ], AccountTile);
125
- export { AccountTile };
126
- //# sourceMappingURL=account-tile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"account-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/account-tile.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,cAAc,CAAC;AAGtB,IAAa,WAAW,GAAxB,MAAa,WAAY,SAAQ,UAAU;IAGzC,MAAM;;QACJ,OAAO,IAAI,CAAA;;;kCAGmB,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;;;;sDAQF,MAAA,IAAI,CAAC,KAAK,0CAAE,UAAU;;;;;8BAK9C,MAAA,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,0CAAE,WAAW,EAAE;;;;;uBAK3C,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;uBACrB,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS;sBACtB,MAAA,IAAI,CAAC,KAAK,0CAAE,QAAQ;0BAChB,MAAA,IAAI,CAAC,KAAK,0CAAE,YAAY;;;;KAI7C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA6ET,CAAC;IACJ,CAAC;CACF,CAAA;AAlH6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;0CAAmB;AADnC,WAAW;IADvB,aAAa,CAAC,cAAc,CAAC;GACjB,WAAW,CAmHvB;SAnHY,WAAW","sourcesContent":["import { css, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { TileModel } from '../../models';\n\nimport './tile-stats';\n\n@customElement('account-tile')\nexport class AccountTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <div class=\"account-tile-main\">\n <div id=\"title\">\n <h1 class=\"truncated\">${this.model?.identifier}</h1>\n </div>\n\n <div class=\"account-info\">\n <div id=\"avatar-info\">\n <img\n id=\"avatar\"\n alt=\"patron-avatar\"\n src=\"https://archive.org/services/img/${this.model?.identifier}\"\n />\n </div>\n\n <span id=\"archivist-since\">\n Archivist since ${this.model?.dateAdded?.getFullYear()}\n </span>\n </div>\n\n <tile-stats\n .mediatype=${this.model?.mediatype}\n .itemCount=${this.model?.itemCount}\n .favCount=${this.model?.favCount}\n .commentCount=${this.model?.commentCount}\n >\n </tile-stats>\n </div>\n `;\n }\n\n static get styles() {\n return css`\n h1 {\n color: black;\n font-size: 16px;\n margin: 0;\n }\n\n span {\n font-size: 14px;\n color: #2c2c2c;\n margin: 0px;\n }\n\n .account-tile-main {\n background-color: #fcf5e6;\n border: 1px #2c2c2c;\n border-radius: 4px;\n box-shadow: 1px 1px 2px 0px;\n height: 100%;\n display: flex;\n flex-direction: column;\n text-align: center;\n width: 100%;\n }\n\n .account-info {\n flex-grow: 1;\n }\n\n #title {\n padding: 5px 5px 0px 5px;\n flex-shrink: 0;\n height: 40px;\n }\n\n .account-tile-main:hover > #title > .truncated {\n text-decoration: underline;\n }\n\n /** this is a workaround for Safari 15 where the hover effects are not working */\n #title:hover > .truncated {\n text-decoration: underline;\n }\n\n #avatar-info {\n margin-top: 5px;\n margin-bottom: 5px;\n display: flex;\n align-items: center;\n justify-content: center;\n }\n\n #avatar {\n background-position: 50% 50%;\n border-radius: 50%;\n width: 160px;\n height: 160px;\n box-shadow: 1px 1px 2px #888888;\n }\n\n #archivist-since {\n margin-bottom: 5px;\n height: 40px;\n }\n\n .truncated {\n flex: 1;\n min-width: 0; /* Important for long words! */\n -webkit-line-clamp: 2;\n text-overflow: ellipsis;\n overflow: hidden;\n display: -webkit-box;\n -webkit-box-orient: vertical;\n word-wrap: break-word;\n line-height: 2rem;\n text-align: center;\n }\n `;\n }\n}\n"]}
@@ -1,7 +0,0 @@
1
- import { CSSResultGroup, LitElement } from 'lit';
2
- import { TileModel } from '../../models';
3
- export declare class CollectionTile extends LitElement {
4
- model?: TileModel;
5
- render(): import("lit-html").TemplateResult<1>;
6
- static get styles(): CSSResultGroup;
7
- }
@@ -1,159 +0,0 @@
1
- import { __decorate } from "tslib";
2
- import { msg } from '@lit/localize';
3
- import { css, html, LitElement } from 'lit';
4
- import { customElement, property } from 'lit/decorators.js';
5
- import { collectionIcon } from '../../assets/img/icons/mediatype/collection';
6
- let CollectionTile = class CollectionTile extends LitElement {
7
- render() {
8
- var _a, _b, _c;
9
- return html `
10
- <div id="container">
11
- <div id="collection-image-title">
12
- <div id="collection-title">${(_a = this.model) === null || _a === void 0 ? void 0 : _a.title}</div>
13
- <div id="collection-image-container">
14
- <div
15
- id="collection-image"
16
- style="background-image:url('https://archive.org/services/img/${(_b = this
17
- .model) === null || _b === void 0 ? void 0 : _b.identifier}')"
18
- ></div>
19
- </div>
20
- </div>
21
- <div id="item-count-container">
22
- <div id="item-count-image-container">${collectionIcon}</div>
23
- <div id="item-count-stacked-text">
24
- <div id="item-count">${(_c = this.model) === null || _c === void 0 ? void 0 : _c.itemCount.toLocaleString()}</div>
25
- <div id="items-text">${msg('items')}</div>
26
- </div>
27
- </div>
28
- </div>
29
- `;
30
- }
31
- static get styles() {
32
- const cornerRadiusCss = css `var(--collectionTileCornerRadius, 4px)`;
33
- return css `
34
- #collection-image-container {
35
- display: flex;
36
- justify-content: center;
37
- flex: 1;
38
- }
39
-
40
- #collection-image {
41
- width: 16rem;
42
- height: 16rem;
43
- border-radius: 0.8rem;
44
- overflow: hidden;
45
- box-shadow: 1px 1px 2px 0px;
46
- object-fit: cover;
47
- background-position: center;
48
- background-size: cover;
49
- }
50
-
51
- #item-count-image-container svg {
52
- filter: invert(100%);
53
- }
54
-
55
- #collection-image-title {
56
- background-color: #666;
57
- border: 1px solid #2c2c2c;
58
- padding: 0.5rem;
59
- border-top-left-radius: ${cornerRadiusCss};
60
- border-top-right-radius: ${cornerRadiusCss};
61
- display: flex;
62
- flex-direction: column;
63
- flex: 1;
64
- }
65
-
66
- #collection-title {
67
- font-weight: bold;
68
- color: #fff;
69
- font-size: 1.6rem;
70
- text-align: center;
71
- margin-bottom: 0.5rem;
72
- overflow: hidden;
73
- text-overflow: ellipsis;
74
- display: -webkit-box;
75
- -webkit-line-clamp: 2;
76
- -webkit-box-orient: vertical;
77
- line-height: 2rem;
78
- height: 4rem;
79
- }
80
-
81
- #container {
82
- box-shadow: 1px 1px 2px 0px;
83
- border-radius: ${cornerRadiusCss};
84
- height: 100%;
85
- display: flex;
86
- flex-direction: column;
87
- }
88
-
89
- #container:hover > #collection-image-title > #collection-title {
90
- text-decoration: underline;
91
- }
92
-
93
- /* this is a workaround for Safari 15 where the hover effects are not working */
94
- #collection-image-title:hover > #collection-title {
95
- text-decoration: underline;
96
- }
97
-
98
- #container:hover > #collection-image-title {
99
- background-color: #757575;
100
- }
101
-
102
- #item-count-container {
103
- background-color: #444;
104
- border-bottom: 1px solid #2c2c2c;
105
- border-left: 1px solid #2c2c2c;
106
- border-right: 1px solid #2c2c2c;
107
- border-bottom-left-radius: ${cornerRadiusCss};
108
- border-bottom-right-radius: ${cornerRadiusCss};
109
- display: flex;
110
- padding: 0rem 0.5rem;
111
- height: 5.5rem;
112
- align-items: center;
113
- }
114
-
115
- #item-count-image-container {
116
- margin-right: 0.5rem;
117
- }
118
-
119
- #item-count-stacked-text {
120
- display: flex;
121
- align-items: baseline;
122
- color: #fff;
123
- }
124
- #item-count-image-container svg {
125
- height: 2.5rem;
126
- align-items: baseline;
127
- }
128
-
129
- #container:hover > #item-count-container {
130
- background-color: #575757;
131
- }
132
-
133
- #item-count {
134
- font-size: 1.4rem;
135
- font-weight: bold;
136
- }
137
-
138
- #item-count-image {
139
- width: 3rem;
140
- height: 3rem;
141
- margin-right: 1rem;
142
- }
143
-
144
- #items-text {
145
- font-size: 1.4rem;
146
- font-weight: bold;
147
- margin-left: 0.5rem;
148
- }
149
- `;
150
- }
151
- };
152
- __decorate([
153
- property({ type: Object })
154
- ], CollectionTile.prototype, "model", void 0);
155
- CollectionTile = __decorate([
156
- customElement('collection-tile')
157
- ], CollectionTile);
158
- export { CollectionTile };
159
- //# sourceMappingURL=collection-tile.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"collection-tile.js","sourceRoot":"","sources":["../../../../src/tiles/grid/collection-tile.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,GAAG,EAAkB,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAI7E,IAAa,cAAc,GAA3B,MAAa,cAAe,SAAQ,UAAU;IAG5C,MAAM;;QACJ,OAAO,IAAI,CAAA;;;uCAGwB,MAAA,IAAI,CAAC,KAAK,0CAAE,KAAK;;;;8EAIsB,MAAA,IAAI;aACjE,KAAK,0CAAE,UAAU;;;;;iDAKe,cAAc;;mCAE5B,MAAA,IAAI,CAAC,KAAK,0CAAE,SAAS,CAAC,cAAc,EAAE;mCACtC,GAAG,CAAC,OAAO,CAAC;;;;KAI1C,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,MAAM;QACf,MAAM,eAAe,GAAG,GAAG,CAAA,wCAAwC,CAAC;QAEpE,OAAO,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;kCA0BoB,eAAe;mCACd,eAAe;;;;;;;;;;;;;;;;;;;;;;;yBAuBzB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;qCAwBH,eAAe;sCACd,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAyChD,CAAC;IACJ,CAAC;CACF,CAAA;AAnJ6B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;6CAAmB;AADnC,cAAc;IAD1B,aAAa,CAAC,iBAAiB,CAAC;GACpB,cAAc,CAoJ1B;SApJY,cAAc","sourcesContent":["import { msg } from '@lit/localize';\nimport { css, CSSResultGroup, html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\nimport { collectionIcon } from '../../assets/img/icons/mediatype/collection';\nimport { TileModel } from '../../models';\n\n@customElement('collection-tile')\nexport class CollectionTile extends LitElement {\n @property({ type: Object }) model?: TileModel;\n\n render() {\n return html`\n <div id=\"container\">\n <div id=\"collection-image-title\">\n <div id=\"collection-title\">${this.model?.title}</div>\n <div id=\"collection-image-container\">\n <div\n id=\"collection-image\"\n style=\"background-image:url('https://archive.org/services/img/${this\n .model?.identifier}')\"\n ></div>\n </div>\n </div>\n <div id=\"item-count-container\">\n <div id=\"item-count-image-container\">${collectionIcon}</div>\n <div id=\"item-count-stacked-text\">\n <div id=\"item-count\">${this.model?.itemCount.toLocaleString()}</div>\n <div id=\"items-text\">${msg('items')}</div>\n </div>\n </div>\n </div>\n `;\n }\n\n static get styles(): CSSResultGroup {\n const cornerRadiusCss = css`var(--collectionTileCornerRadius, 4px)`;\n\n return css`\n #collection-image-container {\n display: flex;\n justify-content: center;\n flex: 1;\n }\n\n #collection-image {\n width: 16rem;\n height: 16rem;\n border-radius: 0.8rem;\n overflow: hidden;\n box-shadow: 1px 1px 2px 0px;\n object-fit: cover;\n background-position: center;\n background-size: cover;\n }\n\n #item-count-image-container svg {\n filter: invert(100%);\n }\n\n #collection-image-title {\n background-color: #666;\n border: 1px solid #2c2c2c;\n padding: 0.5rem;\n border-top-left-radius: ${cornerRadiusCss};\n border-top-right-radius: ${cornerRadiusCss};\n display: flex;\n flex-direction: column;\n flex: 1;\n }\n\n #collection-title {\n font-weight: bold;\n color: #fff;\n font-size: 1.6rem;\n text-align: center;\n margin-bottom: 0.5rem;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n line-height: 2rem;\n height: 4rem;\n }\n\n #container {\n box-shadow: 1px 1px 2px 0px;\n border-radius: ${cornerRadiusCss};\n height: 100%;\n display: flex;\n flex-direction: column;\n }\n\n #container:hover > #collection-image-title > #collection-title {\n text-decoration: underline;\n }\n\n /* this is a workaround for Safari 15 where the hover effects are not working */\n #collection-image-title:hover > #collection-title {\n text-decoration: underline;\n }\n\n #container:hover > #collection-image-title {\n background-color: #757575;\n }\n\n #item-count-container {\n background-color: #444;\n border-bottom: 1px solid #2c2c2c;\n border-left: 1px solid #2c2c2c;\n border-right: 1px solid #2c2c2c;\n border-bottom-left-radius: ${cornerRadiusCss};\n border-bottom-right-radius: ${cornerRadiusCss};\n display: flex;\n padding: 0rem 0.5rem;\n height: 5.5rem;\n align-items: center;\n }\n\n #item-count-image-container {\n margin-right: 0.5rem;\n }\n\n #item-count-stacked-text {\n display: flex;\n align-items: baseline;\n color: #fff;\n }\n #item-count-image-container svg {\n height: 2.5rem;\n align-items: baseline;\n }\n\n #container:hover > #item-count-container {\n background-color: #575757;\n }\n\n #item-count {\n font-size: 1.4rem;\n font-weight: bold;\n }\n\n #item-count-image {\n width: 3rem;\n height: 3rem;\n margin-right: 1rem;\n }\n\n #items-text {\n font-size: 1.4rem;\n font-weight: bold;\n margin-left: 0.5rem;\n }\n `;\n }\n}\n"]}
@@ -1,16 +0,0 @@
1
- import { CSSResultGroup, LitElement } from 'lit';
2
- import { SortParam } from '@internetarchive/search-service';
3
- import { TileModel } from '../../models';
4
- import '../mediatype-icon';
5
- import '../item-image';
6
- import './tile-stats';
7
- export declare class ItemTile extends LitElement {
8
- model?: TileModel;
9
- baseImageUrl?: string;
10
- sortParam?: SortParam;
11
- render(): import("lit-html").TemplateResult<1>;
12
- private get doesSortedByDate();
13
- private get sortedDateInfoTemplate();
14
- private get creatorTemplate();
15
- static get styles(): CSSResultGroup;
16
- }