From 3977b2a2acf0e90b1f535a8df4c0858f574b6e57 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Tue, 11 Feb 2025 08:53:31 -0800 Subject: [PATCH] re-work reduceLinks --- packages/content/src/index.ts | 46 +++++++++++++++-------------------- packages/editor/package.json | 2 +- 2 files changed, 21 insertions(+), 27 deletions(-) diff --git a/packages/content/src/index.ts b/packages/content/src/index.ts index 20767cc..e4ec611 100644 --- a/packages/content/src/index.ts +++ b/packages/content/src/index.ts @@ -436,40 +436,34 @@ export const truncate = ( } export const reduceLinks = (content: Parsed[]): Parsed[] => { - let links: ParsedLinkValue[] = [] - let newLine: ParsedNewline | null = null - let emptyText: ParsedText | null = null - const parsedContent = [] + const result: Parsed[] = [] + const buffer: ParsedLinkValue[] = [] for (const parsed of content) { - if (isImage(parsed)) { - links.push(parsed.value) - } else if (links.length && isNewline(parsed)) { - newLine = parsed - } else if (links.length && isText(parsed) && !parsed.value.trim()) { - emptyText = parsed - } else if (links.length) { - parsedContent.push({type: ParsedType.LinkGrid, value: {links}, raw: ""} as ParsedLinkGrid) + const prev = last(result) - if (newLine) { - parsedContent.push(newLine) - newLine = null - } else if (emptyText) { - parsedContent.push(emptyText) - emptyText = null - } - - links = [] - } else { - parsedContent.push(parsed) + // If we have a link and we're in our own block, start a grid + if (isLink(parsed) && (!prev || isNewline(prev))) { + buffer.push(parsed.value) + continue } + + if (isNewline(parsed) && buffer.length > 0) { + continue + } + + if (buffer.length > 0) { + result.push({type: ParsedType.LinkGrid, value: {links: buffer.splice(0)}, raw: ""}) + } + + result.push(parsed) } - if (links.length) { - parsedContent.push({type: ParsedType.LinkGrid, value: {links}, raw: ""} as ParsedLinkGrid) + if (buffer.length > 0) { + result.push({type: ParsedType.LinkGrid, value: {links: buffer.splice(0)}, raw: ""}) } - return parsedContent + return result } // Renderer diff --git a/packages/editor/package.json b/packages/editor/package.json index eaf2047..84136ab 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@welshman/editor", - "version": "0.0.14", + "version": "0.0.15", "author": "hodlbod", "license": "MIT", "description": "A batteries-included nostr editor.",