UNPKG

@web-atoms/core-docs

Version:
100 lines 4.02 kB
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