@incremark/vue
Vue 3 integration library.
Installation
bash
pnpm add @incremark/core @incremark/vueComposables
useIncremark
Core composable that creates and manages parser instance.
ts
function useIncremark(options?: UseIncremarkOptions): UseIncremarkReturnParameters
ts
interface UseIncremarkOptions extends ParserOptions {}Inherits from @incremark/core's ParserOptions.
Return Values
ts
interface UseIncremarkReturn {
/** Collected complete Markdown string */
markdown: Ref<string>
/** Completed block list */
completedBlocks: ShallowRef<ParsedBlock[]>
/** Pending block list */
pendingBlocks: ShallowRef<ParsedBlock[]>
/** Current complete AST */
ast: ComputedRef<Root>
/** All blocks (completed + pending), with stable IDs */
blocks: ComputedRef<Array<ParsedBlock & { stableId: string }>>
/** Loading state */
isLoading: Ref<boolean>
/** Append content */
append: (chunk: string) => IncrementalUpdate
/** Complete parsing */
finalize: () => IncrementalUpdate
/** Force abort */
abort: () => IncrementalUpdate
/** Reset parser */
reset: () => void
/** Render complete Markdown at once */
render: (content: string) => IncrementalUpdate
/** Parser instance */
parser: IncremarkParser
}useDevTools
DevTools composable, one line to enable developer tools.
ts
function useDevTools(
incremark: UseIncremarkReturn,
options?: UseDevToolsOptions
): IncremarkDevToolsParameters
incremark- Return value fromuseIncremarkoptions- DevTools configuration options
ts
interface UseDevToolsOptions {
/** Initially open */
open?: boolean
/** Position */
position?: 'bottom-right' | 'bottom-left' | 'top-right' | 'top-left'
/** Theme */
theme?: 'dark' | 'light'
}Components
Incremark
Main rendering component.
vue
<Incremark
:blocks="blocks"
:components="customComponents"
:show-block-status="true"
/>Props
| Prop | Type | Default | Description |
|---|---|---|---|
blocks | Array<ParsedBlock & { stableId: string }> | Required | Blocks to render |
components | Record<string, Component> | {} | Custom component mapping |
showBlockStatus | boolean | true | Show block status border |
IncremarkRenderer
Single block rendering component.
vue
<IncremarkRenderer :node="block.node" :components="customComponents" />Props
| Prop | Type | Default | Description |
|---|---|---|---|
node | RootContent | Required | AST node |
components | Record<string, Component> | {} | Custom component mapping |
Built-in Rendering Components
Can be imported individually:
IncremarkHeading- HeadingIncremarkParagraph- ParagraphIncremarkCode- Code blockIncremarkList- ListIncremarkTable- TableIncremarkBlockquote- BlockquoteIncremarkThematicBreak- Thematic breakIncremarkMath- Math formulaIncremarkInline- Inline contentIncremarkDefault- Default/unknown type
Usage Example
vue
<script setup>
import {
useIncremark,
useDevTools,
Incremark
} from '@incremark/vue'
const incremark = useIncremark({ gfm: true })
const { blocks, append, finalize, reset } = incremark
useDevTools(incremark)
async function handleStream(stream) {
reset()
for await (const chunk of stream) {
append(chunk)
}
finalize()
}
</script>
<template>
<Incremark :blocks="blocks" />
</template>