@web-atoms/core-docs
Version:
100 lines • 4.02 kB
TypeScript
import { App } from "../App";
import { IAnyInstanceType, IAtomElement, IDisposable, INotifyPropertyChanged, PathList } from "../core/types";
import { AtomDisposableList } from "./AtomDisposableList";
import { ObjectProperty } from "./AtomWatcher";
import { IValueConverter } from "./IValueConverter";
import XNode from "./XNode";
export interface IAtomComponent<T> {
element: T;
data: any;
viewModel: any;
localViewModel: any;
app: App;
setLocalValue(e: T, name: string, value: any): void;
hasProperty(name: string): any;
runAfterInit(f: () => void): void;
}
export declare abstract class AtomComponent<T extends IAtomElement, TC extends IAtomComponent<T>> implements IAtomComponent<IAtomElement>, INotifyPropertyChanged {
readonly app: App;
static readonly isControl = true;
readonly disposables: AtomDisposableList;
readonly element: T;
data: any;
viewModel: any;
localViewModel: any;
protected pendingInits: Array<() => void>;
private mInvalidated;
private mPendingPromises;
abstract get parent(): TC;
/** Do not ever use, only available as intellisense feature for
* vs code editor.
*/
get vsProps(): {
[k in keyof this]?: any;
} | {
[k: string]: any;
} | {};
private readonly eventHandlers;
private readonly bindings;
constructor(app: App, element?: T);
abstract atomParent(e: T): TC;
bind(element: T, name: string, path: PathList[], twoWays?: boolean | string[], valueFunc?: (...v: any[]) => any, source?: any): IDisposable;
/**
* Remove all bindings associated with given element and optional name
* @param element T
* @param name string
*/
unbind(element: T, name?: string): void;
bindEvent(element: T, name?: string, method?: EventListenerOrEventListenerObject, key?: string): IDisposable;
unbindEvent(element: T, name?: string, method?: EventListenerOrEventListenerObject, key?: string): void;
/**
* Control checks if property is declared on the control or not.
* Since TypeScript no longer creates enumerable properties, we have
* to inspect name and PropertyMap which is generated by `@BindableProperty`
* or the value is not set to undefined.
* @param name name of Property
*/
hasProperty(name: string): boolean;
/**
* Use this method if you want to set attribute on HTMLElement immediately but
* defer atom control property
* @param element HTMLElement
* @param name string
* @param value any
*/
setPrimitiveValue(element: T, name: string, value: any): void;
setLocalValue(element: T, name: string, value: any): void;
dispose(e?: T): void;
abstract append(element: T | TC): TC;
onPropertyChanged(name: string): void;
beginEdit(): IDisposable;
invalidate(): void;
onUpdateUI(): void;
runAfterInit(f: () => void): void;
registerDisposable(d: IDisposable): IDisposable;
protected render(node: XNode, e?: any, creator?: any): void;
protected create(): void;
protected preCreate(): void;
protected setElementValue(element: T, name: string, value: any): void;
protected resolve<TService>(c: TService, selfName?: string | (() => any)): IAnyInstanceType<TService>;
}
export declare class PropertyBinding<T extends IAtomElement> implements IDisposable {
private target;
readonly element: T;
readonly name: string;
private twoWays;
private source;
path: ObjectProperty[][];
private watcher;
private twoWaysDisposable;
private isTwoWaySetup;
private updaterOnce;
private fromSourceToTarget;
private fromTargetToSource;
private disposed;
constructor(target: IAtomComponent<T> | any, element: T, name: string, path: PathList[], twoWays: boolean | string[], valueFunc: ((...v: any[]) => any) | IValueConverter, source: any);
setupTwoWayBinding(): void;
setInverseValue(value: any): void;
dispose(): void;
}
//# sourceMappingURL=AtomComponent.d.ts.map