pangu
Version:
Opinionated paranoid text spacing: automatically inserts whitespace between CJK (Chinese, Japanese, Korean) and ANS (alphabetical letters, numerical digits and symbols)
57 lines • 2.01 kB
TypeScript
import { Pangu } from '../shared/index.js';
import { DomWalker } from './dom/dom-walker.js';
import { VisibilityDetector } from './dom/visibility-detector.js';
import { TaskQueue, TaskScheduler, type TaskSchedulerConfig } from './scheduling/task-scheduler.js';
export interface AutoSpacePageConfig {
pageDelayMs?: number;
nodeDelayMs?: number;
nodeMaxWaitMs?: number;
}
interface UnsettledTextNode {
node: Text;
unspaced: string;
}
export interface SettledTextNode extends UnsettledTextNode {
settled: string;
}
export interface LateFix {
node: Text;
settled: string;
data: string;
}
export declare class BrowserPangu extends Pangu {
private static readonly trailingWhitespace;
private static readonly leadingWhitespace;
private static readonly maxSyncTextNodes;
private autoSpacePageObserver;
private lastWrittenData;
private lateFixedTextNodes;
readonly taskScheduler: TaskScheduler;
readonly visibilityDetector: VisibilityDetector;
onTextNodesSettled: ((settledTextNodes: SettledTextNode[]) => void) | null;
autoSpacePage({ pageDelayMs, nodeDelayMs, nodeMaxWaitMs }?: AutoSpacePageConfig): void;
spacePage(): void;
spaceNode(node: Node): void;
stopAutoSpacePage(): void;
applyLateFixes(lateFixes: readonly LateFix[]): void;
private isGridOrFlexContainer;
private spaceTextNodes;
private holdsLateFix;
private emitTextNodesSettled;
private applyTextNodeSpacing;
private spaceNodeSync;
private withNeighborTextNodes;
private hasSpacedTextInSubtree;
private insertPanguElement;
private findPreviousElementLastChar;
private scanBetweenTextNodes;
private isPrecedingNodeHidden;
private isNodeHidden;
private schedule;
private setupAutoSpacePageObserver;
}
export declare const pangu: BrowserPangu;
export { DomWalker, TaskQueue, TaskScheduler, VisibilityDetector };
export type { TaskSchedulerConfig };
export default pangu;
//# sourceMappingURL=index.d.ts.map