From d62c424a102082b66790dbf2020739fc502f8178 Mon Sep 17 00:00:00 2001 From: Silberengel Date: Sat, 5 Apr 2025 16:14:29 +0200 Subject: [PATCH] Handle discrete headings --- src/lib/components/Preview.svelte | 74 +++++++++++++++++++++---------- src/lib/parser.ts | 15 +++++++ 2 files changed, 66 insertions(+), 23 deletions(-) diff --git a/src/lib/components/Preview.svelte b/src/lib/components/Preview.svelte index f7dfe03..0a1ffdb 100644 --- a/src/lib/components/Preview.svelte +++ b/src/lib/components/Preview.svelte @@ -150,30 +150,58 @@ {#snippet sectionHeading(title: string, depth: number)} - {#if depth === 0} -

- {title} -

- {:else if depth === 1} -

- {title} -

- {:else if depth === 2} -

- {title} -

- {:else if depth === 3} -

- {title} -

- {:else if depth === 4} -
- {title} -
+ {#if $pharosInstance.isFloatingTitle(rootId)} + {#if depth === 0} +

+ {title} +

+ {:else if depth === 1} +

+ {title} +

+ {:else if depth === 2} +

+ {title} +

+ {:else if depth === 3} +

+ {title} +

+ {:else if depth === 4} +
+ {title} +
+ {:else} +
+ {title} +
+ {/if} {:else} -
- {title} -
+ {#if depth === 0} +

+ {title} +

+ {:else if depth === 1} +

+ {title} +

+ {:else if depth === 2} +

+ {title} +

+ {:else if depth === 3} +

+ {title} +

+ {:else if depth === 4} +
+ {title} +
+ {:else} +
+ {title} +
+ {/if} {/if} {/snippet} diff --git a/src/lib/parser.ts b/src/lib/parser.ts index b9f9545..273c8a3 100644 --- a/src/lib/parser.ts +++ b/src/lib/parser.ts @@ -270,6 +270,21 @@ export default class Pharos { return block.convert(); } + /** + * Checks if the node with the given ID is a floating title (discrete header). + * @param id The ID of the node to check. + * @returns True if the node is a floating title, false otherwise. + */ + isFloatingTitle(id: string): boolean { + const normalizedId = this.normalizeId(id); + if (!normalizedId || !this.nodes.has(normalizedId)) { + return false; + } + + const context = this.eventToContextMap.get(normalizedId); + return context === 'floating_title'; + } + /** * Updates the `content` field of a Nostr event in-place. * @param dTag The d tag of the event to update.