import { Event } from 'vs/base/common/event'; import { DisposableStore, IDisposable } from 'vs/base/common/lifecycle'; import { BaseObservable, IObservable, IObserver, IReader, ITransaction } from 'vs/base/common/observableInternal/base'; import { DebugNameData, IDebugNameData, DebugOwner } from 'vs/base/common/observableInternal/debugName'; import { IValueWithChangeEvent } from '../event'; import { EqualityComparer } from 'vs/base/common/equals'; /** * Represents an efficient observable whose value never changes. */ export declare function constObservable(value: T): IObservable; export declare function observableFromPromise(promise: Promise): IObservable<{ value?: T; }>; export declare function observableFromEvent(owner: DebugOwner, event: Event, getValue: (args: TArgs | undefined) => T): IObservable; export declare function observableFromEvent(event: Event, getValue: (args: TArgs | undefined) => T): IObservable; export declare function observableFromEventOpts(options: IDebugNameData & { equalsFn?: EqualityComparer; }, event: Event, getValue: (args: TArgs | undefined) => T): IObservable; export declare class FromEventObservable extends BaseObservable { private readonly _debugNameData; private readonly event; readonly _getValue: (args: TArgs | undefined) => T; private readonly _getTransaction; private readonly _equalityComparator; static globalTransaction: ITransaction | undefined; private value; private hasValue; private subscription; constructor(_debugNameData: DebugNameData, event: Event, _getValue: (args: TArgs | undefined) => T, _getTransaction: () => ITransaction | undefined, _equalityComparator: EqualityComparer); private getDebugName; get debugName(): string; protected onFirstObserverAdded(): void; private readonly handleEvent; protected onLastObserverRemoved(): void; get(): T; } export declare namespace observableFromEvent { const Observer: typeof FromEventObservable; function batchEventsGlobally(tx: ITransaction, fn: () => void): void; } export declare function observableSignalFromEvent(debugName: string, event: Event): IObservable; /** * Creates a signal that can be triggered to invalidate observers. * Signals don't have a value - when they are triggered they indicate a change. * However, signals can carry a delta that is passed to observers. */ export declare function observableSignal(debugName: string): IObservableSignal; export declare function observableSignal(owner: object): IObservableSignal; export interface IObservableSignal extends IObservable { trigger(tx: ITransaction | undefined, change: TChange): void; } /** * @deprecated Use `debouncedObservable2` instead. */ export declare function debouncedObservable(observable: IObservable, debounceMs: number, disposableStore: DisposableStore): IObservable; /** * Creates an observable that debounces the input observable. */ export declare function debouncedObservable2(observable: IObservable, debounceMs: number): IObservable; export declare function wasEventTriggeredRecently(event: Event, timeoutMs: number, disposableStore: DisposableStore): IObservable; /** * This makes sure the observable is being observed and keeps its cache alive. */ export declare function keepObserved(observable: IObservable): IDisposable; /** * This converts the given observable into an autorun. */ export declare function recomputeInitiallyAndOnChange(observable: IObservable, handleValue?: (value: T) => void): IDisposable; export declare class KeepAliveObserver implements IObserver { private readonly _forceRecompute; private readonly _handleValue; private _counter; constructor(_forceRecompute: boolean, _handleValue: ((value: any) => void) | undefined); beginUpdate(observable: IObservable): void; endUpdate(observable: IObservable): void; handlePossibleChange(observable: IObservable): void; handleChange(observable: IObservable, change: TChange): void; } export declare function derivedObservableWithCache(owner: DebugOwner, computeFn: (reader: IReader, lastValue: T | undefined) => T): IObservable; export declare function derivedObservableWithWritableCache(owner: object, computeFn: (reader: IReader, lastValue: T | undefined) => T): IObservable & { clearCache(transaction: ITransaction): void; setCache(newValue: T | undefined, tx: ITransaction | undefined): void; }; /** * When the items array changes, referential equal items are not mapped again. */ export declare function mapObservableArrayCached(owner: DebugOwner, items: IObservable, map: (input: TIn, store: DisposableStore) => TOut, keySelector?: (input: TIn) => TKey): IObservable; export declare class ValueWithChangeEventFromObservable implements IValueWithChangeEvent { readonly observable: IObservable; constructor(observable: IObservable); get onDidChange(): Event; get value(): T; } export declare function observableFromValueWithChangeEvent(owner: DebugOwner, value: IValueWithChangeEvent): IObservable; /** * Creates an observable that has the latest changed value of the given observables. * Initially (and when not observed), it has the value of the last observable. * When observed and any of the observables change, it has the value of the last changed observable. * If multiple observables change in the same transaction, the last observable wins. */ export declare function latestChangedValue[]>(owner: DebugOwner, observables: T): IObservable>; //# sourceMappingURL=utils.d.ts.map