UNPKG

solid-markdown

Version:
111 lines (106 loc) 3.99 kB
import { Component, JSX } from 'solid-js'; import { PluggableList } from 'unified'; import { Position } from 'unist'; import { ElementContent, Text, Element, Root } from 'hast'; interface SolidMarkdownProps { node: Element; children: Component[]; /** * Passed when `options.rawSourcePos` is given */ sourcePosition?: Position; /** * Passed when `options.includeElementIndex` is given */ index?: number; /** * Passed when `options.includeElementIndex` is given */ siblingCount?: number; } type NormalComponents = { [TagName in keyof JSX.IntrinsicElements]: keyof JSX.IntrinsicElements | Component<JSX.IntrinsicElements[TagName] & SolidMarkdownProps>; }; type TransformLink = (href: string, children: ElementContent[], title?: string) => string; type TransformImage = (src: string, alt: string, title?: string) => string; type TransformLinkTargetType = "_self" | "_blank" | "_parent" | "_top" | (string & {}); type TransformLinkTarget = (href: string, children: ElementContent[], title?: string) => TransformLinkTargetType | undefined; type SolidMarkdownNames = keyof JSX.IntrinsicElements; type CodeComponent = Component<JSX.IntrinsicElements["code"] & SolidMarkdownProps & { inline?: boolean; }>; type HeadingComponent = Component<JSX.IntrinsicElements["h1"] & SolidMarkdownProps & { level: number; }>; type LiComponent = Component<JSX.IntrinsicElements["li"] & SolidMarkdownProps & { checked: boolean | null; index: number; ordered: boolean; }>; type OrderedListComponent = Component<JSX.IntrinsicElements["ol"] & SolidMarkdownProps & { depth: number; ordered: true; }>; type TableCellComponent = Component<JSX.IntrinsicElements["table"] & SolidMarkdownProps & { style?: Record<string, unknown>; isHeader: boolean; }>; type TableRowComponent = Component<JSX.IntrinsicElements["tr"] & SolidMarkdownProps & { isHeader: boolean; }>; type UnorderedListComponent = Component<JSX.IntrinsicElements["ul"] & SolidMarkdownProps & { depth: number; ordered: false; }>; type SpecialComponents = { code: CodeComponent | SolidMarkdownNames; h1: HeadingComponent | SolidMarkdownNames; h2: HeadingComponent | SolidMarkdownNames; h3: HeadingComponent | SolidMarkdownNames; h4: HeadingComponent | SolidMarkdownNames; h5: HeadingComponent | SolidMarkdownNames; h6: HeadingComponent | SolidMarkdownNames; li: LiComponent | SolidMarkdownNames; ol: OrderedListComponent | SolidMarkdownNames; td: TableCellComponent | SolidMarkdownNames; th: TableCellComponent | SolidMarkdownNames; tr: TableRowComponent | SolidMarkdownNames; ul: UnorderedListComponent | SolidMarkdownNames; }; type Components = Omit<Partial<Omit<NormalComponents, keyof SpecialComponents>> & Partial<SpecialComponents>, "text"> & { text?: Component<{ node: Text; }>; }; type Options$1 = { sourcePos: boolean; rawSourcePos: boolean; skipHtml: boolean; includeElementIndex: boolean; transformLinkUri: null | false | TransformLink; transformImageUri?: TransformImage; linkTarget: TransformLinkTargetType | TransformLinkTarget; components: Components; }; type AllowElement = (element: Element, index: number, parent: Element | Root) => boolean | undefined; type Options = { allowedElements?: string[]; disallowedElements?: string[]; allowElement?: AllowElement; unwrapDisallowed: boolean; }; type CoreOptions = { children: string; renderingStrategy: "memo" | "reconcile"; }; type PluginOptions = { remarkPlugins: PluggableList; rehypePlugins: PluggableList; }; type LayoutOptions = { class: string; }; type SolidMarkdownOptions = CoreOptions & PluginOptions & LayoutOptions & Options & Options$1; type SolidMarkdownComponents = Options$1["components"]; declare const SolidMarkdown: Component<Partial<SolidMarkdownOptions>>; export { SolidMarkdown, SolidMarkdownComponents, SolidMarkdownOptions };