viewer?.scrollToAsset(asset) ?? false} {timelineManager} {assetInteraction} bind:isShowDeleteConfirmation {onEscape} /> {#snippet skeleton({ segment })} {/snippet} {#snippet segment({ segment, onScrollCompensationMonthInDOM })} {#snippet content({ onAssetOpen, onAssetSelect, onAssetHover })} {#snippet content({ onDayGroupSelect, onDayGroupAssetSelect })} {#snippet thumbnail({ asset, position, dayGroup, groupIndex })} {@const isAssetSelectionCandidate = assetInteraction.hasSelectionCandidate(asset.id)} {@const isAssetSelected = assetInteraction.hasSelectedAsset(asset.id) || timelineManager.albumAssets.has(asset.id)} {@const isAssetDisabled = timelineManager.albumAssets.has(asset.id)} onAssetOpen(asset)} onSelect={() => onDayGroupAssetSelect(dayGroup, asset)} onMouseEvent={(isMouseOver) => { if (isMouseOver) { onAssetHover(asset); } else { onAssetHover(null); } }} selected={isAssetSelected} selectionCandidate={isAssetSelectionCandidate} disabled={isAssetDisabled} thumbnailWidth={position.width} thumbnailHeight={position.height} /> {/snippet} {/snippet} {/snippet} {/snippet} {#if $showAssetViewer} {/if}