返回 reveal.js
index.ts
根目录 / plugin / highlight / index.ts
1 import type { HLJSApi } from 'highlight.js';
2 import type { RevealPlugin } from 'reveal.js';
3
4 // @ts-expect-error The runtime implementation remains in JS during the migration.
5 import HighlightImplementation from './plugin.js';
6
7 export interface HighlightLine {
8 start?: number;
9 end?: number;
10 }
11
12 export interface HighlightLineNumbersOptions {
13 singleLine?: boolean;
14 startFrom?: number;
15 }
16
17 export interface HighlightJsApi extends HLJSApi {
18 initLineNumbersOnLoad(options?: HighlightLineNumbersOptions): void;
19 lineNumbersBlock(element: HTMLElement, options?: HighlightLineNumbersOptions): void;
20 lineNumbersValue(code: string, options?: HighlightLineNumbersOptions): string | undefined;
21 }
22
23 export interface HighlightScrollState {
24 currentBlock?: HTMLElement;
25 animationFrameID?: number;
26 }
27
28 export interface HighlightLineBounds {
29 top: number;
30 bottom: number;
31 }
32
33 export type HighlightLineStep = HighlightLine[];
34
35 export interface HighlightPlugin extends RevealPlugin {
36 id: 'highlight';
37 HIGHLIGHT_STEP_DELIMITER: '|';
38 HIGHLIGHT_LINE_DELIMITER: ',';
39 HIGHLIGHT_LINE_RANGE_DELIMITER: '-';
40 hljs: HighlightJsApi;
41 highlightBlock(block: HTMLElement): void;
42 scrollHighlightedLineIntoView(
43 block: HTMLElement,
44 scrollState: HighlightScrollState,
45 skipAnimation?: boolean
46 ): void;
47 easeInOutQuart(t: number): number;
48 getHighlightedLineBounds(block: HTMLElement): HighlightLineBounds;
49 highlightLines(block: HTMLElement, linesToHighlight?: string): void;
50 deserializeHighlightSteps(highlightSteps: string): HighlightLineStep[];
51 serializeHighlightSteps(highlightSteps: HighlightLineStep[]): string;
52 }
53
54 const Highlight = HighlightImplementation as () => HighlightPlugin;
55
56 export default Highlight;
57
57 lines TYPESCRIPT