import { IDisposable } from '@phosphor/disposable'; import { ISignal } from '@phosphor/signaling'; /** * A string which can be observed for changes. */ export interface IObservableString extends IDisposable { /** * A signal emitted when the string has changed. */ readonly changed: ISignal; /** * The value of the string. */ text: string; /** * Insert a substring. * * @param index - The starting index. * * @param text - The substring to insert. */ insert(index: number, text: string): void; /** * Remove a substring. * * @param start - The starting index. * * @param end - The ending index. */ remove(start: number, end: number): void; /** * Set the ObservableString to an empty string. */ clear(): void; /** * Dispose of the resources held by the string. */ dispose(): void; } /** * A concrete implementation of [[IObservableString]] */ export declare class ObservableString implements IObservableString { /** * Construct a new observable string. */ constructor(initialText?: string); /** * A signal emitted when the string has changed. */ readonly changed: ISignal; /** * Get the value of the string. */ /** * Set the value of the string. */ text: string; /** * Insert a substring. * * @param index - The starting index. * * @param text - The substring to insert. */ insert(index: number, text: string): void; /** * Remove a substring. * * @param start - The starting index. * * @param end - The ending index. */ remove(start: number, end: number): void; /** * Set the ObservableString to an empty string. */ clear(): void; /** * Test whether the string has been disposed. */ readonly isDisposed: boolean; /** * Dispose of the resources held by the string. */ dispose(): void; private _text; private _isDisposed; private _changed; } /** * The namespace for `ObservableVector` class statics. */ export declare namespace ObservableString { /** * The change types which occur on an observable string. */ type ChangeType = 'insert' | 'remove' | 'set'; /** * The changed args object which is emitted by an observable string. */ interface IChangedArgs { /** * The type of change undergone by the list. */ type: ChangeType; /** * The starting index of the change. */ start: number; /** * The end index of the change. */ end: number; /** * The value of the change. * * ### Notes * If `ChangeType` is `set`, then * this is the new value of the string. * * If `ChangeType` is `insert` this is * the value of the inserted string. * * If `ChangeType` is remove this is the * value of the removed substring. */ value: string; } }