/** * Copyright (c) 2017 The xterm.js authors. All rights reserved. * @license MIT */ import { Terminal, ITerminalAddon, IMarker, IBufferRange } from '@xterm/xterm'; declare module '@xterm/addon-serialize' { /** * An xterm.js addon that enables serialization of terminal contents. */ export class SerializeAddon implements ITerminalAddon { constructor(); /** * Activates the addon. * @param terminal The terminal the addon is being loaded in. */ public activate(terminal: Terminal): void; /** * Serializes terminal rows into a string that can be written back to the terminal to restore * the state. The cursor will also be positioned to the correct cell. When restoring a terminal * it is best to do before `Terminal.open` is called to avoid wasting CPU cycles rendering * incomplete frames. * * It's recommended that you write the serialized data into a terminal of the same size in which * it originated from and then resize it after if needed. * * @param options Custom options to allow control over what gets serialized. */ public serialize(options?: ISerializeOptions): string; /** * Serializes terminal content as HTML, which can be written to the clipboard using the * `text/html` mimetype. For applications that support it, the pasted text should then retain * its colors/styles. * * @param options Custom options to allow control over what gets serialized. */ public serializeAsHTML(options?: Partial): string; /** * Disposes the addon. */ public dispose(): void; } export interface ISerializeOptions { /** * The row range to serialize. The an explicit range is specified, the cursor will get its final * repositioning. */ range?: ISerializeRange; /** * The number of rows in the scrollback buffer to serialize, starting from the bottom of the * scrollback buffer. When not specified, all available rows in the scrollback buffer will be * serialized. This will be ignored if {@link range} is specified. */ scrollback?: number; /** * Whether to exclude the terminal modes from the serialization. False by default. */ excludeModes?: boolean; /** * Whether to exclude the alt buffer from the serialization. False by default. */ excludeAltBuffer?: boolean; } export interface IHTMLSerializeOptions { /** * The number of rows in the scrollback buffer to serialize, starting from the bottom of the * scrollback buffer. When not specified, all available rows in the scrollback buffer will be * serialized. This setting is ignored if {@link IHTMLSerializeOptions.onlySelection} is true. */ scrollback: number; /** * Whether to only serialize the selection. If false, the whole active buffer is serialized in HTML. * False by default. */ onlySelection: boolean; /** * Whether to include the global background of the terminal. False by default. */ includeGlobalBackground: boolean; /** * The range to serialize. This is prioritized over {@link onlySelection}. */ range?: ISerializeBufferRange; } export interface ISerializeBufferRange { startLine: number; endLine: number; startCol: number; } export interface ISerializeRange { /** * The line to start serializing (inclusive). */ start: IMarker | number; /** * The line to end serializing (inclusive). */ end: IMarker | number; } }