Browse Source

Handle discrete headings

master
Silberengel 11 months ago
parent
commit
d62c424a10
  1. 74
      src/lib/components/Preview.svelte
  2. 15
      src/lib/parser.ts

74
src/lib/components/Preview.svelte

@ -150,30 +150,58 @@
</script> </script>
{#snippet sectionHeading(title: string, depth: number)} {#snippet sectionHeading(title: string, depth: number)}
{#if depth === 0} {#if $pharosInstance.isFloatingTitle(rootId)}
<h1 class='h-leather'> {#if depth === 0}
{title} <h1 class='discrete'>
</h1> {title}
{:else if depth === 1} </h1>
<h2 class='h-leather'> {:else if depth === 1}
{title} <h2 class='discrete'>
</h2> {title}
{:else if depth === 2} </h2>
<h3 class='h-leather'> {:else if depth === 2}
{title} <h3 class='discrete'>
</h3> {title}
{:else if depth === 3} </h3>
<h4 class='h-leather'> {:else if depth === 3}
{title} <h4 class='discrete'>
</h4> {title}
{:else if depth === 4} </h4>
<h5 class='h-leather'> {:else if depth === 4}
{title} <h5 class='discrete'>
</h5> {title}
</h5>
{:else}
<h6 class='discrete'>
{title}
</h6>
{/if}
{:else} {:else}
<h6 class='h-leather'> {#if depth === 0}
{title} <h1 class='h-leather'>
</h6> {title}
</h1>
{:else if depth === 1}
<h2 class='h-leather'>
{title}
</h2>
{:else if depth === 2}
<h3 class='h-leather'>
{title}
</h3>
{:else if depth === 3}
<h4 class='h-leather'>
{title}
</h4>
{:else if depth === 4}
<h5 class='h-leather'>
{title}
</h5>
{:else}
<h6 class='h-leather'>
{title}
</h6>
{/if}
{/if} {/if}
{/snippet} {/snippet}

15
src/lib/parser.ts

@ -270,6 +270,21 @@ export default class Pharos {
return block.convert(); 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. * Updates the `content` field of a Nostr event in-place.
* @param dTag The d tag of the event to update. * @param dTag The d tag of the event to update.

Loading…
Cancel
Save