{#each filterIntersecting(monthGroup.dayGroups) as dayGroup, groupIndex (dayGroup.day)} {@const absoluteWidth = dayGroup.left}
{ isMouseOverGroup = true; assetMouseEventHandler(dayGroup.groupTitle, null); }} onmouseleave={() => { isMouseOverGroup = false; assetMouseEventHandler(dayGroup.groupTitle, null); }} >
{#if !singleSelect}
handleSelectGroup(dayGroup.groupTitle, assetsSnapshot(dayGroup.getAssets()))} onkeydown={() => handleSelectGroup(dayGroup.groupTitle, assetsSnapshot(dayGroup.getAssets()))} > {#if assetInteraction.selectedGroup.has(dayGroup.groupTitle)} {:else} {/if}
{/if} {dayGroup.groupTitle}
{#each filterIntersecting(dayGroup.viewerAssets) as viewerAsset (viewerAsset.id)} {@const position = viewerAsset.position!} {@const asset = viewerAsset.asset!}
{ if (typeof onThumbnailClick === 'function') { onThumbnailClick(asset, timelineManager, dayGroup, _onClick); } else { _onClick(timelineManager, dayGroup.getAssets(), dayGroup.groupTitle, asset); } }} onSelect={(asset) => assetSelectHandler(timelineManager, asset, dayGroup.getAssets(), dayGroup.groupTitle)} onMouseEvent={() => assetMouseEventHandler(dayGroup.groupTitle, assetSnapshot(asset))} selected={assetInteraction.hasSelectedAsset(asset.id) || dayGroup.monthGroup.timelineManager.albumAssets.has(asset.id)} selectionCandidate={assetInteraction.hasSelectionCandidate(asset.id)} disabled={dayGroup.monthGroup.timelineManager.albumAssets.has(asset.id)} thumbnailWidth={position.width} thumbnailHeight={position.height} /> {#if customLayout} {@render customLayout(asset)} {/if}
{/each}
{/each}