{#each filterIntersecting(monthGroup.dayGroups) as dayGroup, groupIndex (dayGroup.day)} {@const absoluteWidth = dayGroup.left} { isMouseOverGroup = true; hoveredDayGroup = dayGroup.groupTitle; }} onmouseleave={() => { isMouseOverGroup = false; hoveredDayGroup = null; }} > {#if !singleSelect && ((hoveredDayGroup === dayGroup.groupTitle && isMouseOverGroup) || isDayGroupSelected(dayGroup))} onDayGroupSelect(dayGroup, assetsSnapshot(dayGroup.getAssets()))} onkeydown={() => onDayGroupSelect(dayGroup, assetsSnapshot(dayGroup.getAssets()))} > {#if isDayGroupSelected(dayGroup)} {:else} {/if} {/if} {dayGroup.groupTitle} {#each filterIntersecting(dayGroup.viewerAssets) as viewerAsset (viewerAsset.id)} {@const position = viewerAsset.position!} {@const asset = viewerAsset.asset!} onAssetOpen?.(dayGroup, assetSnapshot(asset))} onSelect={() => onAssetSelect(dayGroup, assetSnapshot(asset))} onMouseEvent={() => onHover(dayGroup, assetSnapshot(asset))} selected={isAssetSelected(asset)} selectionCandidate={isAssetSelectionCandidate(asset)} disabled={isAssetDisabled(asset)} thumbnailWidth={position.width} thumbnailHeight={position.height} /> {#if customThumbnailLayout} {@render customThumbnailLayout(asset)} {/if} {/each} {/each}