mirror of
https://github.com/Funkoala14/knowledgebase_law.git
synced 2025-06-09 05:58:15 +08:00
166 lines
4.6 KiB
TypeScript
166 lines
4.6 KiB
TypeScript
/**
|
||
* Component to render markdown.
|
||
*
|
||
* This is a synchronous component.
|
||
* When using async plugins,
|
||
* see {@linkcode MarkdownAsync} or {@linkcode MarkdownHooks}.
|
||
*
|
||
* @param {Readonly<Options>} options
|
||
* Props.
|
||
* @returns {ReactElement}
|
||
* React element.
|
||
*/
|
||
export function Markdown(options: Readonly<Options>): ReactElement;
|
||
/**
|
||
* Component to render markdown with support for async plugins
|
||
* through async/await.
|
||
*
|
||
* Components returning promises are supported on the server.
|
||
* For async support on the client,
|
||
* see {@linkcode MarkdownHooks}.
|
||
*
|
||
* @param {Readonly<Options>} options
|
||
* Props.
|
||
* @returns {Promise<ReactElement>}
|
||
* Promise to a React element.
|
||
*/
|
||
export function MarkdownAsync(options: Readonly<Options>): Promise<ReactElement>;
|
||
/**
|
||
* Component to render markdown with support for async plugins through hooks.
|
||
*
|
||
* This uses `useEffect` and `useState` hooks.
|
||
* Hooks run on the client and do not immediately render something.
|
||
* For async support on the server,
|
||
* see {@linkcode MarkdownAsync}.
|
||
*
|
||
* @param {Readonly<HooksOptions>} options
|
||
* Props.
|
||
* @returns {ReactNode}
|
||
* React node.
|
||
*/
|
||
export function MarkdownHooks(options: Readonly<HooksOptions>): ReactNode;
|
||
/**
|
||
* Make a URL safe.
|
||
*
|
||
* @satisfies {UrlTransform}
|
||
* @param {string} value
|
||
* URL.
|
||
* @returns {string}
|
||
* Safe URL.
|
||
*/
|
||
export function defaultUrlTransform(value: string): string;
|
||
/**
|
||
* Filter elements.
|
||
*/
|
||
export type AllowElement = (element: Readonly<Element>, index: number, parent: Readonly<Parents> | undefined) => boolean | null | undefined;
|
||
/**
|
||
* Extra fields we pass.
|
||
*/
|
||
export type ExtraProps = {
|
||
/**
|
||
* passed when `passNode` is on.
|
||
*/
|
||
node?: Element | undefined;
|
||
};
|
||
/**
|
||
* Map tag names to components.
|
||
*/
|
||
export type Components = { [Key in keyof JSX.IntrinsicElements]?: ComponentType<JSX.IntrinsicElements[Key] & ExtraProps> | keyof JSX.IntrinsicElements; };
|
||
/**
|
||
* Deprecation.
|
||
*/
|
||
export type Deprecation = {
|
||
/**
|
||
* Old field.
|
||
*/
|
||
from: string;
|
||
/**
|
||
* ID in readme.
|
||
*/
|
||
id: string;
|
||
/**
|
||
* New field.
|
||
*/
|
||
to?: keyof Options;
|
||
};
|
||
/**
|
||
* Configuration.
|
||
*/
|
||
export type Options = {
|
||
/**
|
||
* Filter elements (optional);
|
||
* `allowedElements` / `disallowedElements` is used first.
|
||
*/
|
||
allowElement?: AllowElement | null | undefined;
|
||
/**
|
||
* Tag names to allow (default: all tag names);
|
||
* cannot combine w/ `disallowedElements`.
|
||
*/
|
||
allowedElements?: ReadonlyArray<string> | null | undefined;
|
||
/**
|
||
* Markdown.
|
||
*/
|
||
children?: string | null | undefined;
|
||
/**
|
||
* Map tag names to components.
|
||
*/
|
||
components?: Components | null | undefined;
|
||
/**
|
||
* Tag names to disallow (default: `[]`);
|
||
* cannot combine w/ `allowedElements`.
|
||
*/
|
||
disallowedElements?: ReadonlyArray<string> | null | undefined;
|
||
/**
|
||
* List of rehype plugins to use.
|
||
*/
|
||
rehypePlugins?: PluggableList | null | undefined;
|
||
/**
|
||
* List of remark plugins to use.
|
||
*/
|
||
remarkPlugins?: PluggableList | null | undefined;
|
||
/**
|
||
* Options to pass through to `remark-rehype`.
|
||
*/
|
||
remarkRehypeOptions?: Readonly<RemarkRehypeOptions> | null | undefined;
|
||
/**
|
||
* Ignore HTML in markdown completely (default: `false`).
|
||
*/
|
||
skipHtml?: boolean | null | undefined;
|
||
/**
|
||
* Extract (unwrap) what’s in disallowed elements (default: `false`);
|
||
* normally when say `strong` is not allowed, it and it’s children are dropped,
|
||
* with `unwrapDisallowed` the element itself is replaced by its children.
|
||
*/
|
||
unwrapDisallowed?: boolean | null | undefined;
|
||
/**
|
||
* Change URLs (default: `defaultUrlTransform`)
|
||
*/
|
||
urlTransform?: UrlTransform | null | undefined;
|
||
};
|
||
/**
|
||
* Configuration specifically for {@linkcode MarkdownHooks}.
|
||
*/
|
||
export type HooksOptionsOnly = {
|
||
/**
|
||
* Content to render while the processor processing the markdown (optional).
|
||
*/
|
||
fallback?: ReactNode | null | undefined;
|
||
};
|
||
/**
|
||
* Configuration for {@linkcode MarkdownHooks};
|
||
* extends the regular {@linkcode Options} with a `fallback` prop.
|
||
*/
|
||
export type HooksOptions = Options & HooksOptionsOnly;
|
||
/**
|
||
* Transform all URLs.
|
||
*/
|
||
export type UrlTransform = (url: string, key: string, node: Readonly<Element>) => string | null | undefined;
|
||
import type { ReactElement } from 'react';
|
||
import type { ReactNode } from 'react';
|
||
import type { Element } from 'hast';
|
||
import type { Parents } from 'hast';
|
||
import type { JSX } from 'react';
|
||
import type { ComponentType } from 'react';
|
||
import type { PluggableList } from 'unified';
|
||
import type { Options as RemarkRehypeOptions } from 'remark-rehype';
|
||
//# sourceMappingURL=index.d.ts.map
|