{ if (isTyping()) return; const text = event.clipboardData?.getData('text/plain'); const link = validateLink(text, false); if (!link) return; addLink(link); }} /> { if (cardDef.type === 'image') { const input = document.getElementById('image-input') as HTMLInputElement; if (input) { input.click(); return; } } else if (cardDef.type === 'video') { const input = document.getElementById('video-input') as HTMLInputElement; if (input) { input.click(); return; } } else { newCard(cardDef.type); } }} onlink={(url, cardDef) => { addLink(url, cardDef); }} /> {#if showingMobileView}
{/if} {#if newItem.modal && newItem.item} { saveNewItem(); }} bind:item={newItem.item} oncancel={async () => { newItem = {}; await tick(); cleanupDialogArtifacts(); }} /> {/if}

Mobile Editing

Mobile editing is currently experimental. For the best experience, use a desktop browser.

{#if !getHideProfileSection(data)} {/if}
{ selectedCardId = null; }} onfiledrop={handleFileDrop} > {#each items as item, i (item.id)} { items = items.filter((it) => it !== item); compactItems(items, false); compactItems(items, true); onLayoutChanged(); }} onsetsize={(newW: number, newH: number) => { if (isMobile) { item.mobileW = newW; item.mobileH = newH; } else { item.w = newW; item.h = newH; } fixCollisions(items, item, isMobile); onLayoutChanged(); }} > {/each}
{ showCardCommand = true; }} {selectedCard} {isMobile} {isCoarse} ondeselect={() => { selectedCardId = null; }} ondelete={() => { if (selectedCard) { items = items.filter((it) => it.id !== selectedCardId); compactItems(items, false); compactItems(items, true); onLayoutChanged(); selectedCardId = null; } }} onsetsize={(w: number, h: number) => { if (selectedCard) { if (isMobile) { selectedCard.mobileW = w; selectedCard.mobileH = h; } else { selectedCard.w = w; selectedCard.h = h; } fixCollisions(items, selectedCard, isMobile); onLayoutChanged(); } }} /> {#if dev}
editedOn: {editedOn} { if (e.key === 'Enter') copyPageFrom(); }} />
{/if}