mirror of
https://github.com/immich-app/immich.git
synced 2026-05-22 15:02:32 -04:00
8764a1894b
* feat(web): adaptive progressive image loading for photo viewer Replace ImageManager with a new AdaptiveImageLoader that progressively loads images through quality tiers (thumbnail → preview → original). New components and utilities: - AdaptiveImage: layered image renderer with thumbhash, thumbnail, preview, and original layers with visibility managed by load state - AdaptiveImageLoader: state machine driving the quality progression with per-quality callbacks and error handling - ImageLayer/Image: low-level image elements with load/error lifecycle - PreloadManager: preloads adjacent assets for instant navigation - AlphaBackground/DelayedLoadingSpinner: loading state UI Zoom is handled via a derived CSS transform applied to the content wrapper in AdaptiveImage, with the zoom library (zoomTarget: null) only tracking state without manipulating the DOM directly. Also adds scaleToCover to container-utils and getAssetUrls to utils. * fix: don't partially render images in firefox * add passive loading indicator to asset-viewer --------- Co-authored-by: Alex <alex.tran1502@gmail.com>
21 lines
389 B
Svelte
21 lines
389 B
Svelte
<script lang="ts">
|
|
import { LoadingSpinner } from '@immich/ui';
|
|
</script>
|
|
|
|
<div class="delayed-spinner absolute flex h-full items-center justify-center">
|
|
<LoadingSpinner />
|
|
</div>
|
|
|
|
<style>
|
|
@keyframes delayedVisibility {
|
|
to {
|
|
visibility: visible;
|
|
}
|
|
}
|
|
|
|
.delayed-spinner {
|
|
visibility: hidden;
|
|
animation: 0s linear 0.4s forwards delayedVisibility;
|
|
}
|
|
</style>
|