{#if !asset.isTrashed && $user}
{/if}
{#if asset.isOffline}
{/if}
{#if asset.livePhotoVideoId}
{@render motionPhoto?.()}
{/if}
{#if asset.type === AssetTypeEnum.Image}
1 ? mdiMagnifyMinusOutline : mdiMagnifyPlusOutline}
title={$t('zoom_image')}
onclick={onZoomImage}
/>
{/if}
{#if canCopyImageToClipboard() && asset.type === AssetTypeEnum.Image}
onCopyImage?.()} />
{/if}
{#if !isOwner && showDownloadButton}
{/if}
{#if showDetailButton}
{/if}
{#if isOwner}
{/if}
{#if isOwner}
{#if showSlideshow}
{/if}
{#if showDownloadButton}
{/if}
{#if asset.isTrashed}
{:else}
{/if}
{#if isOwner}
{#if stack}
{/if}
{#if album}
{/if}
{#if person}
{/if}
{#if asset.type === AssetTypeEnum.Image}
{/if}
openFileUploadDialog({ multiple: false, assetId: asset.id })}
text={$t('replace_with_upload')}
/>
{#if !asset.isArchived && !asset.isTrashed}
goto(`${AppRoute.PHOTOS}?at=${stack?.primaryAssetId ?? asset.id}`)}
text={$t('view_in_timeline')}
/>
{/if}
onRunJob(AssetJobName.RefreshFaces)}
text={$getAssetJobName(AssetJobName.RefreshFaces)}
/>
onRunJob(AssetJobName.RefreshMetadata)}
text={$getAssetJobName(AssetJobName.RefreshMetadata)}
/>
onRunJob(AssetJobName.RegenerateThumbnail)}
text={$getAssetJobName(AssetJobName.RegenerateThumbnail)}
/>
{#if asset.type === AssetTypeEnum.Video}
onRunJob(AssetJobName.TranscodeVideo)}
text={$getAssetJobName(AssetJobName.TranscodeVideo)}
/>
{/if}
{/if}
{/if}