@internetarchive/collection-browser 1.14.17-beta.5 → 1.14.18-alpha.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.
- package/.editorconfig +29 -29
- package/.husky/pre-commit +4 -4
- package/LICENSE +661 -661
- package/README.md +83 -83
- package/dist/index.d.ts +12 -11
- package/dist/index.js +12 -11
- package/dist/index.js.map +1 -1
- package/dist/src/app-root.d.ts +83 -83
- package/dist/src/app-root.js +438 -489
- package/dist/src/app-root.js.map +1 -1
- package/dist/src/assets/img/icons/arrow-left.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-left.js +2 -2
- package/dist/src/assets/img/icons/arrow-right.d.ts +2 -2
- package/dist/src/assets/img/icons/arrow-right.js +2 -2
- package/dist/src/assets/img/icons/chevron.d.ts +2 -2
- package/dist/src/assets/img/icons/chevron.js +2 -2
- package/dist/src/assets/img/icons/contract.d.ts +2 -2
- package/dist/src/assets/img/icons/contract.js +2 -2
- package/dist/src/assets/img/icons/empty-query.d.ts +2 -2
- package/dist/src/assets/img/icons/empty-query.js +2 -2
- package/dist/src/assets/img/icons/expand.d.ts +2 -2
- package/dist/src/assets/img/icons/expand.js +2 -2
- package/dist/src/assets/img/icons/eye-closed.d.ts +2 -2
- package/dist/src/assets/img/icons/eye-closed.js +2 -2
- package/dist/src/assets/img/icons/eye.d.ts +2 -2
- package/dist/src/assets/img/icons/eye.js +2 -2
- package/dist/src/assets/img/icons/favorite-filled.d.ts +1 -1
- package/dist/src/assets/img/icons/favorite-filled.js +2 -2
- package/dist/src/assets/img/icons/login-required.d.ts +1 -1
- package/dist/src/assets/img/icons/login-required.js +2 -2
- package/dist/src/assets/img/icons/mediatype/account.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/account.js +2 -2
- package/dist/src/assets/img/icons/mediatype/audio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/audio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/collection.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/collection.js +2 -2
- package/dist/src/assets/img/icons/mediatype/data.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/data.js +2 -2
- package/dist/src/assets/img/icons/mediatype/etree.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/etree.js +2 -2
- package/dist/src/assets/img/icons/mediatype/film.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/film.js +2 -2
- package/dist/src/assets/img/icons/mediatype/images.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/images.js +2 -2
- package/dist/src/assets/img/icons/mediatype/radio.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/radio.js +2 -2
- package/dist/src/assets/img/icons/mediatype/search.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/search.js +2 -2
- package/dist/src/assets/img/icons/mediatype/software.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/software.js +2 -2
- package/dist/src/assets/img/icons/mediatype/texts.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/texts.js +2 -2
- package/dist/src/assets/img/icons/mediatype/tv.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/tv.js +2 -2
- package/dist/src/assets/img/icons/mediatype/video.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/video.js +2 -2
- package/dist/src/assets/img/icons/mediatype/web.d.ts +1 -1
- package/dist/src/assets/img/icons/mediatype/web.js +2 -2
- package/dist/src/assets/img/icons/null-result.d.ts +2 -2
- package/dist/src/assets/img/icons/null-result.js +2 -2
- package/dist/src/assets/img/icons/restricted.d.ts +1 -1
- package/dist/src/assets/img/icons/restricted.js +2 -2
- package/dist/src/assets/img/icons/reviews.d.ts +1 -1
- package/dist/src/assets/img/icons/reviews.js +2 -2
- package/dist/src/assets/img/icons/upload.d.ts +1 -1
- package/dist/src/assets/img/icons/upload.js +2 -2
- package/dist/src/assets/img/icons/views.d.ts +1 -1
- package/dist/src/assets/img/icons/views.js +2 -2
- package/dist/src/circular-activity-indicator.d.ts +5 -5
- package/dist/src/circular-activity-indicator.js +17 -17
- package/dist/src/collection-browser.d.ts +384 -406
- package/dist/src/collection-browser.js +1342 -1363
- package/dist/src/collection-browser.js.map +1 -1
- package/dist/src/collection-facets/facet-row.d.ts +30 -30
- package/dist/src/collection-facets/facet-row.js +114 -114
- package/dist/src/collection-facets/facet-tombstone-row.d.ts +5 -5
- package/dist/src/collection-facets/facet-tombstone-row.js +15 -15
- package/dist/src/collection-facets/facets-template.d.ts +17 -17
- package/dist/src/collection-facets/facets-template.js +114 -114
- package/dist/src/collection-facets/more-facets-content.d.ts +70 -70
- package/dist/src/collection-facets/more-facets-content.js +354 -369
- package/dist/src/collection-facets/more-facets-content.js.map +1 -1
- package/dist/src/collection-facets/more-facets-pagination.d.ts +36 -36
- package/dist/src/collection-facets/more-facets-pagination.js +196 -196
- package/dist/src/collection-facets/toggle-switch.d.ts +41 -41
- package/dist/src/collection-facets/toggle-switch.js +94 -94
- package/dist/src/collection-facets.d.ts +103 -103
- package/dist/src/collection-facets.js +513 -510
- package/dist/src/collection-facets.js.map +1 -1
- package/dist/src/data-source/collection-browser-data-source-interface.d.ts +217 -0
- package/dist/src/data-source/collection-browser-data-source-interface.js +2 -0
- package/dist/src/data-source/collection-browser-data-source-interface.js.map +1 -0
- package/dist/src/data-source/collection-browser-data-source.d.ts +352 -434
- package/dist/src/data-source/collection-browser-data-source.js +911 -800
- package/dist/src/data-source/collection-browser-data-source.js.map +1 -1
- package/dist/src/data-source/collection-browser-query-state.d.ts +43 -0
- package/dist/src/data-source/collection-browser-query-state.js +2 -0
- package/dist/src/data-source/collection-browser-query-state.js.map +1 -0
- package/dist/src/data-source/models.d.ts +28 -62
- package/dist/src/data-source/models.js +8 -1
- package/dist/src/data-source/models.js.map +1 -1
- package/dist/src/empty-placeholder.d.ts +23 -23
- package/dist/src/empty-placeholder.js +74 -74
- package/dist/src/expanded-date-picker.d.ts +43 -43
- package/dist/src/expanded-date-picker.js +109 -109
- package/dist/src/language-code-handler/language-code-handler.d.ts +37 -37
- package/dist/src/language-code-handler/language-code-handler.js +26 -26
- package/dist/src/language-code-handler/language-code-mapping.d.ts +1 -1
- package/dist/src/language-code-handler/language-code-mapping.js +562 -562
- package/dist/src/manage/manage-bar.d.ts +26 -26
- package/dist/src/manage/manage-bar.js +53 -53
- package/dist/src/manage/manage-bar.js.map +1 -1
- package/dist/src/mediatype/mediatype-config.d.ts +3 -3
- package/dist/src/mediatype/mediatype-config.js +91 -91
- package/dist/src/models.d.ts +197 -180
- package/dist/src/models.js +380 -269
- package/dist/src/models.js.map +1 -1
- package/dist/src/restoration-state-handler.d.ts +70 -70
- package/dist/src/restoration-state-handler.js +355 -355
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.d.ts +6 -6
- package/dist/src/sort-filter-bar/alpha-bar-tooltip.js +24 -24
- package/dist/src/sort-filter-bar/alpha-bar.d.ts +21 -21
- package/dist/src/sort-filter-bar/alpha-bar.js +128 -128
- package/dist/src/sort-filter-bar/img/compact.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/compact.js +2 -2
- package/dist/src/sort-filter-bar/img/list.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/list.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-disabled.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-down.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-down.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-toggle-up.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-toggle-up.js +2 -2
- package/dist/src/sort-filter-bar/img/sort-triangle.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/sort-triangle.js +2 -2
- package/dist/src/sort-filter-bar/img/tile.d.ts +1 -1
- package/dist/src/sort-filter-bar/img/tile.js +2 -2
- package/dist/src/sort-filter-bar/sort-filter-bar.d.ts +210 -210
- package/dist/src/sort-filter-bar/sort-filter-bar.js +653 -652
- package/dist/src/sort-filter-bar/sort-filter-bar.js.map +1 -1
- package/dist/src/styles/item-image-styles.d.ts +8 -8
- package/dist/src/styles/item-image-styles.js +9 -9
- package/dist/src/styles/sr-only.d.ts +1 -1
- package/dist/src/styles/sr-only.js +2 -2
- package/dist/src/tiles/base-tile-component.d.ts +19 -19
- package/dist/src/tiles/base-tile-component.js +63 -63
- package/dist/src/tiles/collection-browser-loading-tile.d.ts +5 -5
- package/dist/src/tiles/collection-browser-loading-tile.js +15 -15
- package/dist/src/tiles/grid/account-tile.d.ts +18 -18
- package/dist/src/tiles/grid/account-tile.js +72 -72
- package/dist/src/tiles/grid/collection-tile.d.ts +15 -15
- package/dist/src/tiles/grid/collection-tile.js +80 -80
- package/dist/src/tiles/grid/item-tile.d.ts +28 -27
- package/dist/src/tiles/grid/item-tile.js +162 -135
- package/dist/src/tiles/grid/item-tile.js.map +1 -1
- package/dist/src/tiles/grid/search-tile.d.ts +10 -10
- package/dist/src/tiles/grid/search-tile.js +51 -51
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.d.ts +1 -1
- package/dist/src/tiles/grid/styles/tile-grid-shared-styles.js +8 -8
- package/dist/src/tiles/grid/tile-stats.d.ts +11 -11
- package/dist/src/tiles/grid/tile-stats.js +58 -53
- package/dist/src/tiles/grid/tile-stats.js.map +1 -1
- package/dist/src/tiles/hover/hover-pane-controller.d.ts +219 -219
- package/dist/src/tiles/hover/hover-pane-controller.js +352 -352
- package/dist/src/tiles/hover/tile-hover-pane.d.ts +15 -15
- package/dist/src/tiles/hover/tile-hover-pane.js +38 -38
- package/dist/src/tiles/image-block.d.ts +17 -17
- package/dist/src/tiles/image-block.js +73 -73
- package/dist/src/tiles/item-image.d.ts +39 -36
- package/dist/src/tiles/item-image.js +155 -127
- package/dist/src/tiles/item-image.js.map +1 -1
- package/dist/src/tiles/list/tile-list-compact-header.d.ts +6 -6
- package/dist/src/tiles/list/tile-list-compact-header.js +38 -38
- package/dist/src/tiles/list/tile-list-compact.d.ts +15 -15
- package/dist/src/tiles/list/tile-list-compact.js +115 -115
- package/dist/src/tiles/list/tile-list-compact.js.map +1 -1
- package/dist/src/tiles/list/tile-list.d.ts +47 -46
- package/dist/src/tiles/list/tile-list.js +327 -296
- package/dist/src/tiles/list/tile-list.js.map +1 -1
- package/dist/src/tiles/mediatype-icon.d.ts +9 -9
- package/dist/src/tiles/mediatype-icon.js +47 -47
- package/dist/src/tiles/overlay/icon-overlay.d.ts +10 -10
- package/dist/src/tiles/overlay/icon-overlay.js +40 -40
- package/dist/src/tiles/overlay/icon-text-overlay.d.ts +9 -9
- package/dist/src/tiles/overlay/icon-text-overlay.js +38 -38
- package/dist/src/tiles/overlay/text-overlay.d.ts +10 -10
- package/dist/src/tiles/overlay/text-overlay.js +42 -42
- package/dist/src/tiles/text-snippet-block.d.ts +27 -27
- package/dist/src/tiles/text-snippet-block.js +73 -73
- package/dist/src/tiles/tile-dispatcher.d.ts +64 -64
- package/dist/src/tiles/tile-dispatcher.js +232 -231
- package/dist/src/tiles/tile-dispatcher.js.map +1 -1
- package/dist/src/tiles/tile-display-value-provider.d.ts +47 -43
- package/dist/src/tiles/tile-display-value-provider.js +94 -80
- package/dist/src/tiles/tile-display-value-provider.js.map +1 -1
- package/dist/src/utils/analytics-events.d.ts +25 -25
- package/dist/src/utils/analytics-events.js +27 -27
- package/dist/src/utils/array-equals.d.ts +4 -4
- package/dist/src/utils/array-equals.js +10 -10
- package/dist/src/utils/collapse-repeated-quotes.d.ts +11 -0
- package/dist/src/utils/collapse-repeated-quotes.js +14 -0
- package/dist/src/utils/collapse-repeated-quotes.js.map +1 -0
- package/dist/src/utils/format-count.d.ts +7 -7
- package/dist/src/utils/format-count.js +76 -76
- package/dist/src/utils/format-date.d.ts +2 -2
- package/dist/src/utils/format-date.js +25 -25
- package/dist/src/utils/format-unit-size.d.ts +2 -2
- package/dist/src/utils/format-unit-size.js +33 -33
- package/dist/src/utils/local-date-from-utc.d.ts +9 -9
- package/dist/src/utils/local-date-from-utc.js +15 -15
- package/dist/src/utils/log.d.ts +7 -0
- package/dist/src/utils/log.js +16 -0
- package/dist/src/utils/log.js.map +1 -0
- package/dist/src/utils/resolve-mediatype.d.ts +8 -0
- package/dist/src/utils/resolve-mediatype.js +24 -0
- package/dist/src/utils/resolve-mediatype.js.map +1 -0
- package/dist/src/utils/sha1.d.ts +2 -2
- package/dist/src/utils/sha1.js +8 -8
- package/dist/test/collection-browser.test.d.ts +1 -1
- package/dist/test/collection-browser.test.js +1211 -1149
- package/dist/test/collection-browser.test.js.map +1 -1
- package/dist/test/collection-facets/facet-row.test.d.ts +1 -1
- package/dist/test/collection-facets/facet-row.test.js +203 -203
- package/dist/test/collection-facets/facets-template.test.d.ts +1 -1
- package/dist/test/collection-facets/facets-template.test.js +105 -105
- package/dist/test/collection-facets/more-facets-content.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-content.test.js +133 -133
- package/dist/test/collection-facets/more-facets-content.test.js.map +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.d.ts +1 -1
- package/dist/test/collection-facets/more-facets-pagination.test.js +117 -117
- package/dist/test/collection-facets/toggle-switch.test.d.ts +1 -1
- package/dist/test/collection-facets/toggle-switch.test.js +73 -73
- package/dist/test/collection-facets.test.d.ts +2 -2
- package/dist/test/collection-facets.test.js +653 -648
- package/dist/test/collection-facets.test.js.map +1 -1
- package/dist/test/data-source/collection-browser-data-source.test.d.ts +1 -0
- package/dist/test/data-source/collection-browser-data-source.test.js +80 -0
- package/dist/test/data-source/collection-browser-data-source.test.js.map +1 -0
- package/dist/test/empty-placeholder.test.d.ts +1 -1
- package/dist/test/empty-placeholder.test.js +63 -63
- package/dist/test/expanded-date-picker.test.d.ts +1 -1
- package/dist/test/expanded-date-picker.test.js +95 -95
- package/dist/test/icon-overlay.test.d.ts +1 -1
- package/dist/test/icon-overlay.test.js +24 -24
- package/dist/test/image-block.test.d.ts +1 -1
- package/dist/test/image-block.test.js +48 -48
- package/dist/test/item-image.test.d.ts +1 -1
- package/dist/test/item-image.test.js +85 -86
- package/dist/test/item-image.test.js.map +1 -1
- package/dist/test/manage/manage-bar.test.d.ts +1 -1
- package/dist/test/manage/manage-bar.test.js +72 -72
- package/dist/test/mediatype-config.test.d.ts +1 -1
- package/dist/test/mediatype-config.test.js +16 -16
- package/dist/test/mocks/mock-analytics-handler.d.ts +10 -10
- package/dist/test/mocks/mock-analytics-handler.js +15 -15
- package/dist/test/mocks/mock-search-responses.d.ts +24 -21
- package/dist/test/mocks/mock-search-responses.js +840 -709
- package/dist/test/mocks/mock-search-responses.js.map +1 -1
- package/dist/test/mocks/mock-search-service.d.ts +15 -15
- package/dist/test/mocks/mock-search-service.js +53 -50
- package/dist/test/mocks/mock-search-service.js.map +1 -1
- package/dist/test/restoration-state-handler.test.d.ts +1 -1
- package/dist/test/restoration-state-handler.test.js +270 -270
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar-tooltip.test.js +12 -12
- package/dist/test/sort-filter-bar/alpha-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/alpha-bar.test.js +73 -73
- package/dist/test/sort-filter-bar/sort-filter-bar.test.d.ts +1 -1
- package/dist/test/sort-filter-bar/sort-filter-bar.test.js +418 -418
- package/dist/test/text-overlay.test.d.ts +1 -1
- package/dist/test/text-overlay.test.js +48 -48
- package/dist/test/text-snippet-block.test.d.ts +1 -1
- package/dist/test/text-snippet-block.test.js +57 -57
- package/dist/test/tile-stats.test.d.ts +1 -1
- package/dist/test/tile-stats.test.js +95 -33
- package/dist/test/tile-stats.test.js.map +1 -1
- package/dist/test/tiles/grid/account-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/account-tile.test.js +76 -76
- package/dist/test/tiles/grid/collection-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/collection-tile.test.js +73 -73
- package/dist/test/tiles/grid/item-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/item-tile.test.js +298 -254
- package/dist/test/tiles/grid/item-tile.test.js.map +1 -1
- package/dist/test/tiles/grid/search-tile.test.d.ts +1 -1
- package/dist/test/tiles/grid/search-tile.test.js +51 -51
- package/dist/test/tiles/hover/hover-pane-controller.test.d.ts +1 -1
- package/dist/test/tiles/hover/hover-pane-controller.test.js +259 -258
- package/dist/test/tiles/hover/hover-pane-controller.test.js.map +1 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.d.ts +1 -1
- package/dist/test/tiles/hover/tile-hover-pane.test.js +13 -13
- package/dist/test/tiles/list/tile-list-compact.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list-compact.test.js +143 -143
- package/dist/test/tiles/list/tile-list.test.d.ts +1 -1
- package/dist/test/tiles/list/tile-list.test.js +283 -239
- package/dist/test/tiles/list/tile-list.test.js.map +1 -1
- package/dist/test/tiles/tile-dispatcher.test.d.ts +1 -1
- package/dist/test/tiles/tile-dispatcher.test.js +106 -94
- package/dist/test/tiles/tile-dispatcher.test.js.map +1 -1
- package/dist/test/tiles/tile-display-value-provider.test.d.ts +1 -1
- package/dist/test/tiles/tile-display-value-provider.test.js +141 -141
- package/dist/test/utils/array-equals.test.d.ts +1 -1
- package/dist/test/utils/array-equals.test.js +26 -26
- package/dist/test/utils/format-count.test.d.ts +1 -1
- package/dist/test/utils/format-count.test.js +23 -23
- package/dist/test/utils/format-date.test.d.ts +1 -1
- package/dist/test/utils/format-date.test.js +17 -17
- package/dist/test/utils/format-unit-size.test.d.ts +1 -1
- package/dist/test/utils/format-unit-size.test.js +17 -17
- package/dist/test/utils/local-date-from-utc.test.d.ts +1 -1
- package/dist/test/utils/local-date-from-utc.test.js +26 -26
- package/index.ts +3 -5
- package/local.archive.org.cert +86 -86
- package/local.archive.org.key +27 -27
- package/package.json +3 -4
- package/renovate.json +6 -6
- package/src/app-root.ts +30 -85
- package/src/collection-browser.ts +112 -139
- package/src/collection-facets/more-facets-content.ts +0 -19
- package/src/collection-facets.ts +6 -4
- package/src/data-source/collection-browser-data-source-interface.ts +272 -0
- package/src/data-source/collection-browser-data-source.ts +314 -379
- package/src/data-source/collection-browser-query-state.ts +54 -0
- package/src/data-source/models.ts +8 -45
- package/src/manage/manage-bar.ts +1 -1
- package/src/models.ts +164 -3
- package/src/sort-filter-bar/sort-filter-bar.ts +2 -1
- package/src/tiles/grid/item-tile.ts +36 -1
- package/src/tiles/grid/tile-stats.ts +12 -7
- package/src/tiles/item-image.ts +28 -0
- package/src/tiles/list/tile-list-compact.ts +1 -1
- package/src/tiles/list/tile-list.ts +43 -5
- package/src/tiles/tile-dispatcher.ts +2 -1
- package/src/tiles/tile-display-value-provider.ts +20 -2
- package/src/utils/collapse-repeated-quotes.ts +13 -0
- package/src/utils/log.ts +16 -0
- package/src/utils/resolve-mediatype.ts +26 -0
- package/test/collection-browser.test.ts +161 -50
- package/test/collection-facets/more-facets-content.test.ts +4 -2
- package/test/collection-facets.test.ts +5 -0
- package/test/data-source/collection-browser-data-source.test.ts +103 -0
- package/test/item-image.test.ts +34 -36
- package/test/mocks/mock-search-responses.ts +144 -0
- package/test/mocks/mock-search-service.ts +6 -0
- package/test/tile-stats.test.ts +104 -0
- package/test/tiles/grid/item-tile.test.ts +55 -0
- package/test/tiles/hover/hover-pane-controller.test.ts +19 -17
- package/test/tiles/list/tile-list.test.ts +55 -0
- package/test/tiles/tile-dispatcher.test.ts +13 -0
- package/tsconfig.json +21 -21
- package/web-dev-server.config.mjs +30 -30
- package/web-test-runner.config.mjs +41 -41
- package/types/sentry.d.ts +0 -1
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
import { __decorate } from "tslib";
|
|
2
|
-
import { css, html, nothing } from 'lit';
|
|
3
|
-
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
|
-
import { join } from 'lit/directives/join.js';
|
|
5
|
-
import { map } from 'lit/directives/map.js';
|
|
6
|
-
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
7
|
-
import { customElement, property, state } from 'lit/decorators.js';
|
|
8
|
-
import { msg } from '@lit/localize';
|
|
9
|
-
import DOMPurify from 'dompurify';
|
|
10
|
-
import { suppressedCollections } from '../../models';
|
|
11
|
-
import { BaseTileComponent } from '../base-tile-component';
|
|
12
|
-
import { formatCount } from '../../utils/format-count';
|
|
13
|
-
import { formatDate } from '../../utils/format-date';
|
|
14
|
-
import { isFirstMillisecondOfUTCYear } from '../../utils/local-date-from-utc';
|
|
15
|
-
import '../image-block';
|
|
16
|
-
import '../mediatype-icon';
|
|
17
|
-
let TileList = class TileList extends BaseTileComponent {
|
|
18
|
-
constructor() {
|
|
19
|
-
/*
|
|
20
|
-
* Reactive properties inherited from BaseTileComponent:
|
|
21
|
-
* - model?: TileModel;
|
|
22
|
-
* - currentWidth?: number;
|
|
23
|
-
* - currentHeight?: number;
|
|
24
|
-
* - baseNavigationUrl?: string;
|
|
25
|
-
* - baseImageUrl?: string;
|
|
26
|
-
* - collectionPagePath?: string;
|
|
27
|
-
* - sortParam: SortParam | null = null;
|
|
28
|
-
* - creatorFilter?: string;
|
|
29
|
-
* - mobileBreakpoint?: number;
|
|
30
|
-
* - loggedIn = false;
|
|
31
|
-
*/
|
|
32
|
-
super(...arguments);
|
|
33
|
-
this.collectionLinks = [];
|
|
34
|
-
}
|
|
35
|
-
render() {
|
|
1
|
+
import { __decorate } from "tslib";
|
|
2
|
+
import { css, html, nothing } from 'lit';
|
|
3
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
4
|
+
import { join } from 'lit/directives/join.js';
|
|
5
|
+
import { map } from 'lit/directives/map.js';
|
|
6
|
+
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
7
|
+
import { customElement, property, state } from 'lit/decorators.js';
|
|
8
|
+
import { msg } from '@lit/localize';
|
|
9
|
+
import DOMPurify from 'dompurify';
|
|
10
|
+
import { suppressedCollections } from '../../models';
|
|
11
|
+
import { BaseTileComponent } from '../base-tile-component';
|
|
12
|
+
import { formatCount } from '../../utils/format-count';
|
|
13
|
+
import { formatDate } from '../../utils/format-date';
|
|
14
|
+
import { isFirstMillisecondOfUTCYear } from '../../utils/local-date-from-utc';
|
|
15
|
+
import '../image-block';
|
|
16
|
+
import '../mediatype-icon';
|
|
17
|
+
let TileList = class TileList extends BaseTileComponent {
|
|
18
|
+
constructor() {
|
|
19
|
+
/*
|
|
20
|
+
* Reactive properties inherited from BaseTileComponent:
|
|
21
|
+
* - model?: TileModel;
|
|
22
|
+
* - currentWidth?: number;
|
|
23
|
+
* - currentHeight?: number;
|
|
24
|
+
* - baseNavigationUrl?: string;
|
|
25
|
+
* - baseImageUrl?: string;
|
|
26
|
+
* - collectionPagePath?: string;
|
|
27
|
+
* - sortParam: SortParam | null = null;
|
|
28
|
+
* - creatorFilter?: string;
|
|
29
|
+
* - mobileBreakpoint?: number;
|
|
30
|
+
* - loggedIn = false;
|
|
31
|
+
*/
|
|
32
|
+
super(...arguments);
|
|
33
|
+
this.collectionLinks = [];
|
|
34
|
+
}
|
|
35
|
+
render() {
|
|
36
36
|
return html `
|
|
37
37
|
<div id="list-line" class="${this.classSize}">
|
|
38
|
-
${this.classSize === 'mobile'
|
|
39
|
-
? this.mobileTemplate
|
|
38
|
+
${this.classSize === 'mobile'
|
|
39
|
+
? this.mobileTemplate
|
|
40
40
|
: this.desktopTemplate}
|
|
41
41
|
</div>
|
|
42
|
-
`;
|
|
43
|
-
}
|
|
44
|
-
/**
|
|
45
|
-
* Templates
|
|
46
|
-
*/
|
|
47
|
-
get mobileTemplate() {
|
|
42
|
+
`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Templates
|
|
46
|
+
*/
|
|
47
|
+
get mobileTemplate() {
|
|
48
48
|
return html `
|
|
49
49
|
<div id="list-line-top">
|
|
50
50
|
<div id="list-line-left">${this.imageBlockTemplate}</div>
|
|
@@ -56,9 +56,9 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
56
56
|
</div>
|
|
57
57
|
</div>
|
|
58
58
|
<div id="list-line-bottom">${this.detailsTemplate}</div>
|
|
59
|
-
`;
|
|
60
|
-
}
|
|
61
|
-
get desktopTemplate() {
|
|
59
|
+
`;
|
|
60
|
+
}
|
|
61
|
+
get desktopTemplate() {
|
|
62
62
|
return html `
|
|
63
63
|
<div id="list-line-left">${this.imageBlockTemplate}</div>
|
|
64
64
|
<div id="list-line-right">
|
|
@@ -68,13 +68,13 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
68
68
|
</div>
|
|
69
69
|
${this.detailsTemplate}
|
|
70
70
|
</div>
|
|
71
|
-
`;
|
|
72
|
-
}
|
|
73
|
-
get imageBlockTemplate() {
|
|
74
|
-
if (!this.model)
|
|
75
|
-
return nothing;
|
|
76
|
-
const isCollection = this.model.mediatype === 'collection';
|
|
77
|
-
const href = this.displayValueProvider.itemPageUrl(this.model.identifier, isCollection);
|
|
71
|
+
`;
|
|
72
|
+
}
|
|
73
|
+
get imageBlockTemplate() {
|
|
74
|
+
if (!this.model)
|
|
75
|
+
return nothing;
|
|
76
|
+
const isCollection = this.model.mediatype === 'collection';
|
|
77
|
+
const href = this.displayValueProvider.itemPageUrl(this.model.identifier, isCollection);
|
|
78
78
|
return html `<a href=${href}>
|
|
79
79
|
<image-block
|
|
80
80
|
.model=${this.model}
|
|
@@ -85,24 +85,25 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
85
85
|
.loggedIn=${this.loggedIn}
|
|
86
86
|
>
|
|
87
87
|
</image-block>
|
|
88
|
-
</a> `;
|
|
89
|
-
}
|
|
90
|
-
get detailsTemplate() {
|
|
88
|
+
</a> `;
|
|
89
|
+
}
|
|
90
|
+
get detailsTemplate() {
|
|
91
91
|
return html `
|
|
92
92
|
${this.itemLineTemplate} ${this.creatorTemplate}
|
|
93
93
|
<div id="dates-line">
|
|
94
94
|
${this.datePublishedTemplate} ${this.dateSortByTemplate}
|
|
95
|
+
${this.webArchivesCaptureDatesTemplate}
|
|
95
96
|
</div>
|
|
96
97
|
<div id="views-line">
|
|
97
98
|
${this.viewsTemplate} ${this.ratingTemplate} ${this.reviewsTemplate}
|
|
98
99
|
</div>
|
|
99
100
|
${this.topicsTemplate} ${this.collectionsTemplate}
|
|
100
101
|
${this.descriptionTemplate} ${this.textSnippetsTemplate}
|
|
101
|
-
`;
|
|
102
|
-
}
|
|
103
|
-
// Data templates
|
|
104
|
-
get iconRightTemplate() {
|
|
105
|
-
var _a, _b;
|
|
102
|
+
`;
|
|
103
|
+
}
|
|
104
|
+
// Data templates
|
|
105
|
+
get iconRightTemplate() {
|
|
106
|
+
var _a, _b;
|
|
106
107
|
return html `
|
|
107
108
|
<a id="icon-right" href=${this.mediatypeURL}>
|
|
108
109
|
<mediatype-icon
|
|
@@ -111,268 +112,284 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
111
112
|
>
|
|
112
113
|
</mediatype-icon>
|
|
113
114
|
</a>
|
|
114
|
-
`;
|
|
115
|
-
}
|
|
116
|
-
get titleTemplate() {
|
|
117
|
-
var _a, _b, _c;
|
|
118
|
-
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
|
|
119
|
-
return nothing;
|
|
120
|
-
}
|
|
121
|
-
// If the model has a server-specified href, use it
|
|
122
|
-
// Otherwise construct a details link using the identifier
|
|
123
|
-
return ((_b = this.model) === null || _b === void 0 ? void 0 : _b.href)
|
|
115
|
+
`;
|
|
116
|
+
}
|
|
117
|
+
get titleTemplate() {
|
|
118
|
+
var _a, _b, _c;
|
|
119
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.title)) {
|
|
120
|
+
return nothing;
|
|
121
|
+
}
|
|
122
|
+
// If the model has a server-specified href, use it
|
|
123
|
+
// Otherwise construct a details link using the identifier
|
|
124
|
+
return ((_b = this.model) === null || _b === void 0 ? void 0 : _b.href)
|
|
124
125
|
? html `<a href="${this.baseNavigationUrl}${this.model.href}"
|
|
125
126
|
>${(_c = this.model.title) !== null && _c !== void 0 ? _c : this.model.identifier}</a
|
|
126
|
-
>`
|
|
127
|
-
: this.detailsLink(this.model.identifier, this.model.title, this.model.mediatype === 'collection');
|
|
128
|
-
}
|
|
129
|
-
get itemLineTemplate() {
|
|
130
|
-
const source = this.sourceTemplate;
|
|
131
|
-
const volume = this.volumeTemplate;
|
|
132
|
-
const issue = this.issueTemplate;
|
|
133
|
-
if (!source && !volume && !issue) {
|
|
134
|
-
return nothing;
|
|
135
|
-
}
|
|
136
|
-
return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
|
|
137
|
-
}
|
|
138
|
-
get sourceTemplate() {
|
|
139
|
-
var _a;
|
|
140
|
-
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
|
|
141
|
-
return nothing;
|
|
142
|
-
}
|
|
127
|
+
>`
|
|
128
|
+
: this.detailsLink(this.model.identifier, this.model.title, this.model.mediatype === 'collection');
|
|
129
|
+
}
|
|
130
|
+
get itemLineTemplate() {
|
|
131
|
+
const source = this.sourceTemplate;
|
|
132
|
+
const volume = this.volumeTemplate;
|
|
133
|
+
const issue = this.issueTemplate;
|
|
134
|
+
if (!source && !volume && !issue) {
|
|
135
|
+
return nothing;
|
|
136
|
+
}
|
|
137
|
+
return html ` <div id="item-line">${source} ${volume} ${issue}</div> `;
|
|
138
|
+
}
|
|
139
|
+
get sourceTemplate() {
|
|
140
|
+
var _a;
|
|
141
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.source)) {
|
|
142
|
+
return nothing;
|
|
143
|
+
}
|
|
143
144
|
return html `
|
|
144
145
|
<div id="source" class="metadata">
|
|
145
146
|
${this.labelTemplate(msg('Source'))}
|
|
146
147
|
${this.searchLink('source', this.model.source)}
|
|
147
148
|
</div>
|
|
148
|
-
`;
|
|
149
|
-
}
|
|
150
|
-
get volumeTemplate() {
|
|
151
|
-
var _a;
|
|
152
|
-
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, msg('Volume'));
|
|
153
|
-
}
|
|
154
|
-
get issueTemplate() {
|
|
155
|
-
var _a;
|
|
156
|
-
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, msg('Issue'));
|
|
157
|
-
}
|
|
158
|
-
get creatorTemplate() {
|
|
159
|
-
var _a, _b, _c;
|
|
160
|
-
// "Archivist since" if account
|
|
161
|
-
if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
|
|
149
|
+
`;
|
|
150
|
+
}
|
|
151
|
+
get volumeTemplate() {
|
|
152
|
+
var _a;
|
|
153
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.volume, msg('Volume'));
|
|
154
|
+
}
|
|
155
|
+
get issueTemplate() {
|
|
156
|
+
var _a;
|
|
157
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.issue, msg('Issue'));
|
|
158
|
+
}
|
|
159
|
+
get creatorTemplate() {
|
|
160
|
+
var _a, _b, _c;
|
|
161
|
+
// "Archivist since" if account
|
|
162
|
+
if (((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype) === 'account') {
|
|
162
163
|
return html `
|
|
163
164
|
<div id="creator" class="metadata">
|
|
164
165
|
<span class="label"
|
|
165
166
|
>${(_b = this.displayValueProvider.accountLabel) !== null && _b !== void 0 ? _b : nothing}</span
|
|
166
167
|
>
|
|
167
168
|
</div>
|
|
168
|
-
`;
|
|
169
|
-
}
|
|
170
|
-
// "Creator" if not account tile
|
|
171
|
-
if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
|
|
172
|
-
return nothing;
|
|
173
|
-
}
|
|
169
|
+
`;
|
|
170
|
+
}
|
|
171
|
+
// "Creator" if not account tile
|
|
172
|
+
if (!((_c = this.model) === null || _c === void 0 ? void 0 : _c.creators) || this.model.creators.length === 0) {
|
|
173
|
+
return nothing;
|
|
174
|
+
}
|
|
174
175
|
return html `
|
|
175
176
|
<div id="creator" class="metadata">
|
|
176
177
|
${this.labelTemplate(msg('By'))}
|
|
177
178
|
${join(map(this.model.creators, id => this.searchLink('creator', id)), ', ')}
|
|
178
179
|
</div>
|
|
179
|
-
`;
|
|
180
|
-
}
|
|
181
|
-
get datePublishedTemplate() {
|
|
182
|
-
var _a;
|
|
183
|
-
// If we're showing a date published of Jan 1 at midnight, only show the year.
|
|
184
|
-
// This is because items with only a year for their publication date are normalized to
|
|
185
|
-
// Jan 1 at midnight timestamps in the search engine documents.
|
|
186
|
-
const date = (_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished;
|
|
187
|
-
let format = 'long';
|
|
188
|
-
if (isFirstMillisecondOfUTCYear(date)) {
|
|
189
|
-
format = 'year-only';
|
|
190
|
-
}
|
|
191
|
-
return this.metadataTemplate(formatDate(date, format), msg('Published'));
|
|
192
|
-
}
|
|
193
|
-
// Show date label/value when sorted by date type
|
|
194
|
-
// Except datePublished which is always shown
|
|
195
|
-
get dateSortByTemplate() {
|
|
196
|
-
if (this.sortParam &&
|
|
197
|
-
(this.sortParam.field === 'addeddate' ||
|
|
198
|
-
this.sortParam.field === 'reviewdate' ||
|
|
199
|
-
this.sortParam.field === 'publicdate')) {
|
|
200
|
-
return this.metadataTemplate(formatDate(this.date, 'long'), this.displayValueProvider.dateLabel);
|
|
201
|
-
}
|
|
202
|
-
return nothing;
|
|
203
|
-
}
|
|
204
|
-
get viewsTemplate() {
|
|
205
|
-
var _a, _b, _c, _d;
|
|
206
|
-
const viewCount = ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) === 'week'
|
|
207
|
-
? (_b = this.model) === null || _b === void 0 ? void 0 : _b.weeklyViewCount // weekly views
|
|
208
|
-
: (_c = this.model) === null || _c === void 0 ? void 0 : _c.viewCount; // all-time views
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
180
|
+
`;
|
|
181
|
+
}
|
|
182
|
+
get datePublishedTemplate() {
|
|
183
|
+
var _a;
|
|
184
|
+
// If we're showing a date published of Jan 1 at midnight, only show the year.
|
|
185
|
+
// This is because items with only a year for their publication date are normalized to
|
|
186
|
+
// Jan 1 at midnight timestamps in the search engine documents.
|
|
187
|
+
const date = (_a = this.model) === null || _a === void 0 ? void 0 : _a.datePublished;
|
|
188
|
+
let format = 'long';
|
|
189
|
+
if (isFirstMillisecondOfUTCYear(date)) {
|
|
190
|
+
format = 'year-only';
|
|
191
|
+
}
|
|
192
|
+
return this.metadataTemplate(formatDate(date, format), msg('Published'));
|
|
193
|
+
}
|
|
194
|
+
// Show date label/value when sorted by date type
|
|
195
|
+
// Except datePublished which is always shown
|
|
196
|
+
get dateSortByTemplate() {
|
|
197
|
+
if (this.sortParam &&
|
|
198
|
+
(this.sortParam.field === 'addeddate' ||
|
|
199
|
+
this.sortParam.field === 'reviewdate' ||
|
|
200
|
+
this.sortParam.field === 'publicdate')) {
|
|
201
|
+
return this.metadataTemplate(formatDate(this.date, 'long'), this.displayValueProvider.dateLabel);
|
|
202
|
+
}
|
|
203
|
+
return nothing;
|
|
204
|
+
}
|
|
205
|
+
get viewsTemplate() {
|
|
206
|
+
var _a, _b, _c, _d;
|
|
207
|
+
const viewCount = ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) === 'week'
|
|
208
|
+
? (_b = this.model) === null || _b === void 0 ? void 0 : _b.weeklyViewCount // weekly views
|
|
209
|
+
: (_c = this.model) === null || _c === void 0 ? void 0 : _c.viewCount; // all-time views
|
|
210
|
+
if (viewCount == null)
|
|
211
|
+
return nothing;
|
|
212
|
+
// when its a search-tile, we don't have any stats to show
|
|
213
|
+
if (((_d = this.model) === null || _d === void 0 ? void 0 : _d.mediatype) === 'search') {
|
|
214
|
+
return this.metadataTemplate('(Favorited search query)', '');
|
|
215
|
+
}
|
|
216
|
+
return this.metadataTemplate(`${formatCount(viewCount, this.formatSize)}`, msg('Views'));
|
|
217
|
+
}
|
|
218
|
+
get ratingTemplate() {
|
|
219
|
+
var _a;
|
|
220
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.averageRating, msg('Avg Rating'));
|
|
221
|
+
}
|
|
222
|
+
get reviewsTemplate() {
|
|
223
|
+
var _a;
|
|
224
|
+
return this.metadataTemplate((_a = this.model) === null || _a === void 0 ? void 0 : _a.commentCount, msg('Reviews'));
|
|
225
|
+
}
|
|
226
|
+
get topicsTemplate() {
|
|
227
|
+
var _a;
|
|
228
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.subjects) || this.model.subjects.length === 0) {
|
|
229
|
+
return nothing;
|
|
230
|
+
}
|
|
228
231
|
return html `
|
|
229
232
|
<div id="topics" class="metadata">
|
|
230
233
|
${this.labelTemplate(msg('Topics'))}
|
|
231
234
|
${join(map(this.model.subjects, id => this.searchLink('subject', id)), ', ')}
|
|
232
235
|
</div>
|
|
233
|
-
`;
|
|
234
|
-
}
|
|
235
|
-
get collectionsTemplate() {
|
|
236
|
-
if (!this.collectionLinks || this.collectionLinks.length === 0) {
|
|
237
|
-
return nothing;
|
|
238
|
-
}
|
|
236
|
+
`;
|
|
237
|
+
}
|
|
238
|
+
get collectionsTemplate() {
|
|
239
|
+
if (!this.collectionLinks || this.collectionLinks.length === 0) {
|
|
240
|
+
return nothing;
|
|
241
|
+
}
|
|
239
242
|
return html `
|
|
240
243
|
<div id="collections" class="metadata">
|
|
241
244
|
${this.labelTemplate(msg('Collections'))}
|
|
242
245
|
${join(this.collectionLinks, ', ')}
|
|
243
246
|
</div>
|
|
244
|
-
`;
|
|
245
|
-
}
|
|
246
|
-
get descriptionTemplate() {
|
|
247
|
-
var _a, _b, _c;
|
|
248
|
-
return this.metadataTemplate(
|
|
249
|
-
// Sanitize away any HTML tags and convert line breaks to spaces.
|
|
250
|
-
unsafeHTML(DOMPurify.sanitize((_c = (_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) === null || _b === void 0 ? void 0 : _b.replace(/\n/g, ' ')) !== null && _c !== void 0 ? _c : '')), '', 'description');
|
|
251
|
-
}
|
|
252
|
-
get textSnippetsTemplate() {
|
|
253
|
-
var _a;
|
|
254
|
-
if (!this.hasSnippets)
|
|
255
|
-
return nothing;
|
|
247
|
+
`;
|
|
248
|
+
}
|
|
249
|
+
get descriptionTemplate() {
|
|
250
|
+
var _a, _b, _c;
|
|
251
|
+
return this.metadataTemplate(
|
|
252
|
+
// Sanitize away any HTML tags and convert line breaks to spaces.
|
|
253
|
+
unsafeHTML(DOMPurify.sanitize((_c = (_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.description) === null || _b === void 0 ? void 0 : _b.replace(/\n/g, ' ')) !== null && _c !== void 0 ? _c : '')), '', 'description');
|
|
254
|
+
}
|
|
255
|
+
get textSnippetsTemplate() {
|
|
256
|
+
var _a;
|
|
257
|
+
if (!this.hasSnippets)
|
|
258
|
+
return nothing;
|
|
256
259
|
return html `<text-snippet-block
|
|
257
260
|
viewsize="list"
|
|
258
261
|
.snippets=${(_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets}
|
|
259
|
-
></text-snippet-block>`;
|
|
260
|
-
}
|
|
261
|
-
get hasSnippets() {
|
|
262
|
-
var _a, _b;
|
|
263
|
-
return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
262
|
+
></text-snippet-block>`;
|
|
263
|
+
}
|
|
264
|
+
get hasSnippets() {
|
|
265
|
+
var _a, _b;
|
|
266
|
+
return !!((_b = (_a = this.model) === null || _a === void 0 ? void 0 : _a.snippets) === null || _b === void 0 ? void 0 : _b.length);
|
|
267
|
+
}
|
|
268
|
+
get webArchivesCaptureDatesTemplate() {
|
|
269
|
+
var _a;
|
|
270
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.captureDates) || !this.model.title)
|
|
271
|
+
return nothing;
|
|
272
|
+
return html `
|
|
273
|
+
<ul class="capture-dates">
|
|
274
|
+
${map(this.model.captureDates, date => html `<li>
|
|
275
|
+
${this.displayValueProvider.webArchivesCaptureLink(this.model.title, date)}
|
|
276
|
+
</li>`)}
|
|
277
|
+
</ul>
|
|
278
|
+
`;
|
|
279
|
+
}
|
|
280
|
+
// Utility functions
|
|
281
|
+
// eslint-disable-next-line default-param-last
|
|
282
|
+
metadataTemplate(text, label = '', id) {
|
|
283
|
+
if (!text)
|
|
284
|
+
return nothing;
|
|
270
285
|
return html `
|
|
271
286
|
<div id=${ifDefined(id)} class="metadata">
|
|
272
287
|
${this.labelTemplate(label)} ${text}
|
|
273
288
|
</div>
|
|
274
|
-
`;
|
|
275
|
-
}
|
|
276
|
-
labelTemplate(label) {
|
|
277
|
-
return html ` ${label
|
|
278
|
-
? html `<span class="label">${label}: </span>`
|
|
279
|
-
: nothing}`;
|
|
280
|
-
}
|
|
281
|
-
searchLink(field, searchTerm) {
|
|
282
|
-
if (!field || !searchTerm) {
|
|
283
|
-
return nothing;
|
|
284
|
-
}
|
|
285
|
-
const query = encodeURIComponent(`${field}:"${searchTerm}"`);
|
|
286
|
-
// No whitespace after closing tag
|
|
287
|
-
// Note: single ' for href='' to wrap " in query var gets changed back by yarn format
|
|
288
|
-
/* eslint-disable lit/no-invalid-html */
|
|
289
|
+
`;
|
|
290
|
+
}
|
|
291
|
+
labelTemplate(label) {
|
|
292
|
+
return html ` ${label
|
|
293
|
+
? html `<span class="label">${label}: </span>`
|
|
294
|
+
: nothing}`;
|
|
295
|
+
}
|
|
296
|
+
searchLink(field, searchTerm) {
|
|
297
|
+
if (!field || !searchTerm) {
|
|
298
|
+
return nothing;
|
|
299
|
+
}
|
|
300
|
+
const query = encodeURIComponent(`${field}:"${searchTerm}"`);
|
|
301
|
+
// No whitespace after closing tag
|
|
302
|
+
// Note: single ' for href='' to wrap " in query var gets changed back by yarn format
|
|
303
|
+
/* eslint-disable lit/no-invalid-html */
|
|
289
304
|
return html `<a
|
|
290
305
|
href="${this.baseNavigationUrl}/search?query=${query}"
|
|
291
306
|
rel="nofollow"
|
|
292
307
|
>
|
|
293
308
|
${DOMPurify.sanitize(searchTerm)}</a
|
|
294
|
-
>`;
|
|
295
|
-
/* eslint-enable lit/no-invalid-html */
|
|
296
|
-
}
|
|
297
|
-
detailsLink(identifier, text, isCollection = false) {
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
case '
|
|
313
|
-
return
|
|
314
|
-
|
|
315
|
-
return
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
*
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
case '
|
|
352
|
-
return (
|
|
353
|
-
case '
|
|
354
|
-
return (
|
|
355
|
-
|
|
356
|
-
return (
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
309
|
+
>`;
|
|
310
|
+
/* eslint-enable lit/no-invalid-html */
|
|
311
|
+
}
|
|
312
|
+
detailsLink(identifier, text, isCollection = false) {
|
|
313
|
+
if (!identifier)
|
|
314
|
+
return nothing;
|
|
315
|
+
const linkText = text !== null && text !== void 0 ? text : identifier;
|
|
316
|
+
const linkHref = this.displayValueProvider.itemPageUrl(identifier, isCollection);
|
|
317
|
+
return html `<a href=${linkHref}> ${DOMPurify.sanitize(linkText)} </a>`;
|
|
318
|
+
}
|
|
319
|
+
/** The URL of this item's mediatype collection, if defined. */
|
|
320
|
+
get mediatypeURL() {
|
|
321
|
+
var _a;
|
|
322
|
+
// NB: baseNavigationUrl can be an empty string
|
|
323
|
+
if (this.baseNavigationUrl === undefined || !((_a = this.model) === null || _a === void 0 ? void 0 : _a.mediatype))
|
|
324
|
+
return nothing;
|
|
325
|
+
// Need special handling for certain mediatypes that don't have a top-level collection page
|
|
326
|
+
switch (this.model.mediatype) {
|
|
327
|
+
case 'collection':
|
|
328
|
+
return `${this.baseNavigationUrl}/search?query=mediatype:collection&sort=-downloads`;
|
|
329
|
+
case 'account':
|
|
330
|
+
return nothing;
|
|
331
|
+
default:
|
|
332
|
+
return this.displayValueProvider.itemPageUrl(this.model.mediatype, true);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
updated(changed) {
|
|
336
|
+
if (changed.has('model') || changed.has('collectionTitles')) {
|
|
337
|
+
this.buildCollectionLinks();
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
async buildCollectionLinks() {
|
|
341
|
+
var _a, _b, _c;
|
|
342
|
+
if (!((_a = this.model) === null || _a === void 0 ? void 0 : _a.collections) || this.model.collections.length === 0) {
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
// Note: quirk of Lit: need to replace collectionLinks array,
|
|
346
|
+
// otherwise it will not re-render. Can't simply alter the array.
|
|
347
|
+
this.collectionLinks = [];
|
|
348
|
+
const newCollectionLinks = [];
|
|
349
|
+
for (const collection of this.model.collections) {
|
|
350
|
+
// Don't include favorites or collections that are meant to be suppressed
|
|
351
|
+
if (!suppressedCollections[collection] &&
|
|
352
|
+
!collection.startsWith('fav-')) {
|
|
353
|
+
newCollectionLinks.push(this.detailsLink(collection, (_c = (_b = this.collectionTitles) === null || _b === void 0 ? void 0 : _b.get(collection)) !== null && _c !== void 0 ? _c : collection, true));
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
this.collectionLinks = newCollectionLinks;
|
|
357
|
+
}
|
|
358
|
+
/*
|
|
359
|
+
* TODO: fix field names to match model in src/collection-browser.ts
|
|
360
|
+
* private get dateSortSelector()
|
|
361
|
+
* @see src/models.ts
|
|
362
|
+
*/
|
|
363
|
+
get date() {
|
|
364
|
+
var _a, _b, _c, _d, _e;
|
|
365
|
+
switch ((_a = this.sortParam) === null || _a === void 0 ? void 0 : _a.field) {
|
|
366
|
+
case 'date':
|
|
367
|
+
return (_b = this.model) === null || _b === void 0 ? void 0 : _b.datePublished;
|
|
368
|
+
case 'reviewdate':
|
|
369
|
+
return (_c = this.model) === null || _c === void 0 ? void 0 : _c.dateReviewed;
|
|
370
|
+
case 'addeddate':
|
|
371
|
+
return (_d = this.model) === null || _d === void 0 ? void 0 : _d.dateAdded;
|
|
372
|
+
default:
|
|
373
|
+
return (_e = this.model) === null || _e === void 0 ? void 0 : _e.dateArchived; // publicdate
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
get classSize() {
|
|
377
|
+
if (this.mobileBreakpoint &&
|
|
378
|
+
this.currentWidth &&
|
|
379
|
+
this.currentWidth < this.mobileBreakpoint) {
|
|
380
|
+
return 'mobile';
|
|
381
|
+
}
|
|
382
|
+
return 'desktop';
|
|
383
|
+
}
|
|
384
|
+
get formatSize() {
|
|
385
|
+
if (this.mobileBreakpoint &&
|
|
386
|
+
this.currentWidth &&
|
|
387
|
+
this.currentWidth < this.mobileBreakpoint) {
|
|
388
|
+
return 'short';
|
|
389
|
+
}
|
|
390
|
+
return 'long';
|
|
391
|
+
}
|
|
392
|
+
static get styles() {
|
|
376
393
|
return css `
|
|
377
394
|
html {
|
|
378
395
|
font-size: unset;
|
|
@@ -543,17 +560,31 @@ let TileList = class TileList extends BaseTileComponent {
|
|
|
543
560
|
#views-line {
|
|
544
561
|
flex-wrap: wrap;
|
|
545
562
|
}
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
563
|
+
|
|
564
|
+
.capture-dates {
|
|
565
|
+
margin: 0;
|
|
566
|
+
padding: 0;
|
|
567
|
+
list-style-type: none;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.capture-dates a:link {
|
|
571
|
+
text-decoration: none;
|
|
572
|
+
color: var(--ia-theme-link-color, #4b64ff);
|
|
573
|
+
}
|
|
574
|
+
.capture-dates a:hover {
|
|
575
|
+
text-decoration: underline;
|
|
576
|
+
}
|
|
577
|
+
`;
|
|
578
|
+
}
|
|
579
|
+
};
|
|
580
|
+
__decorate([
|
|
581
|
+
property({ type: Object })
|
|
582
|
+
], TileList.prototype, "collectionTitles", void 0);
|
|
583
|
+
__decorate([
|
|
584
|
+
state()
|
|
585
|
+
], TileList.prototype, "collectionLinks", void 0);
|
|
586
|
+
TileList = __decorate([
|
|
587
|
+
customElement('tile-list')
|
|
588
|
+
], TileList);
|
|
589
|
+
export { TileList };
|
|
559
590
|
//# sourceMappingURL=tile-list.js.map
|