{#each grid as date (date.toISOString())}
{WEEKDAYS[(date.getDay() + 6) % 7]}
{date.getDate()}
{/each}
{t('cal.allDay')}
{#each grid as date (date.toISOString())}
onDragOver(e, date)}
ondragleave={() => (over = null)}
ondrop={(e) => onDropAllDay(e, date)}
>
{#each untimedOn(date) as item (item.kind + item.ref.id)}
{#if item.kind === 'event'}
{@render eventChip(item.ref, date, 'event')}
{:else}
{@render taskChip(item.ref, 'chip')}
{/if}
{/each}
{/each}
{#each Array(hours.count) as _, i}
{clock((hours.from + i) * 60)}
{/each}
{#each grid as date (date.toISOString())}
onDragOver(e, date)}
ondragleave={() => (over = null)}
ondrop={(e) => onDropAt(e, date)}
>
{#each Array(hours.count) as _, i}
{/each}
{#each packed(timedOn(date)) as item (item.kind + item.ref.id)}
{#if item.kind === 'event'}
{@render eventChip(item.ref, date, 'tevent', place(item))}
{:else}
{@render taskChip(item.ref, 'tevent task', place(item), clock(item.from), date)}
{/if}
{/each}
{/each}