re-work reduceLinks
This commit is contained in:
@@ -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,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.",
|
||||||
|
|||||||
Reference in New Issue
Block a user