UNPKG

2.4 kBTypeScriptView Raw
1import MarkdownIt from 'markdown-it';
2import { default as MarkdownItToken } from 'markdown-it/lib/token.mjs';
3import { default as MarkdownItState} from 'markdown-it/lib/rules_core/state_core.mjs';
4
5declare namespace anchor {
6 export type Token = MarkdownItToken
7 export type State = MarkdownItState
8 export type RenderHref = (slug: string, state: State) => string;
9 export type RenderAttrs = (slug: string, state: State) => Record<string, string | number>;
10
11 export interface PermalinkOptions {
12 class?: string,
13 symbol?: string,
14 renderHref?: RenderHref,
15 renderAttrs?: RenderAttrs
16 }
17
18 export interface HeaderLinkPermalinkOptions extends PermalinkOptions {
19 safariReaderFix?: boolean;
20 }
21
22 export interface LinkAfterHeaderPermalinkOptions extends PermalinkOptions {
23 style?: 'visually-hidden' | 'aria-label' | 'aria-describedby' | 'aria-labelledby',
24 assistiveText?: (title: string) => string,
25 visuallyHiddenClass?: string,
26 space?: boolean | string,
27 placement?: 'before' | 'after'
28 wrapper?: [string, string] | null
29 }
30
31 export interface LinkInsideHeaderPermalinkOptions extends PermalinkOptions {
32 space?: boolean | string,
33 placement?: 'before' | 'after',
34 ariaHidden?: boolean
35 }
36
37 export interface AriaHiddenPermalinkOptions extends PermalinkOptions {
38 space?: boolean | string,
39 placement?: 'before' | 'after'
40 }
41
42 export type PermalinkGenerator = (slug: string, opts: PermalinkOptions, state: State, index: number) => void;
43
44 export interface AnchorInfo {
45 slug: string;
46 title: string;
47 }
48
49 export interface AnchorOptions {
50 level?: number | number[];
51
52 slugify?(str: string): string;
53 slugifyWithState?(str: string, state: State): string;
54 getTokensText?(tokens: Token[]): string;
55
56 uniqueSlugStartIndex?: number;
57 permalink?: PermalinkGenerator;
58
59 callback?(token: Token, anchor_info: AnchorInfo): void;
60
61 tabIndex?: number | false;
62 }
63
64 export const permalink: {
65 headerLink: (opts?: HeaderLinkPermalinkOptions) => PermalinkGenerator
66 linkAfterHeader: (opts?: LinkAfterHeaderPermalinkOptions) => PermalinkGenerator
67 linkInsideHeader: (opts?: LinkInsideHeaderPermalinkOptions) => PermalinkGenerator
68 ariaHidden: (opts?: AriaHiddenPermalinkOptions) => PermalinkGenerator
69 };
70}
71
72declare function anchor(md: MarkdownIt, opts?: anchor.AnchorOptions): void;
73
74export default anchor;