re-work reduceLinks

This commit is contained in:
Jon Staab
2025-02-11 08:53:31 -08:00
parent eb354b4330
commit 3977b2a2ac
2 changed files with 21 additions and 27 deletions
+20 -26
View File
@@ -436,40 +436,34 @@ export const truncate = (
} }
export const reduceLinks = (content: Parsed[]): Parsed[] => { export const reduceLinks = (content: Parsed[]): Parsed[] => {
let links: ParsedLinkValue[] = [] const result: Parsed[] = []
let newLine: ParsedNewline | null = null const buffer: ParsedLinkValue[] = []
let emptyText: ParsedText | null = null
const parsedContent = []
for (const parsed of content) { for (const parsed of content) {
if (isImage(parsed)) { const prev = last(result)
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)
if (newLine) { // If we have a link and we're in our own block, start a grid
parsedContent.push(newLine) if (isLink(parsed) && (!prev || isNewline(prev))) {
newLine = null buffer.push(parsed.value)
} else if (emptyText) { continue
parsedContent.push(emptyText)
emptyText = null
}
links = []
} else {
parsedContent.push(parsed)
} }
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) { if (buffer.length > 0) {
parsedContent.push({type: ParsedType.LinkGrid, value: {links}, raw: ""} as ParsedLinkGrid) result.push({type: ParsedType.LinkGrid, value: {links: buffer.splice(0)}, raw: ""})
} }
return parsedContent return result
} }
// Renderer // Renderer
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "@welshman/editor", "name": "@welshman/editor",
"version": "0.0.14", "version": "0.0.15",
"author": "hodlbod", "author": "hodlbod",
"license": "MIT", "license": "MIT",
"description": "A batteries-included nostr editor.", "description": "A batteries-included nostr editor.",