UNPKG

@web-atoms/core

Version:
96 lines 4.34 kB
import { App } from "../App"; import { IAnyInstanceType, IDisposable, INotifyPropertyChanged, PathList } from "../core/types"; import type { AtomControl } from "../web/controls/AtomControl"; import { AtomDisposableList } from "./AtomDisposableList"; import { ObjectProperty } from "./AtomWatcher"; import { IValueConverter } from "./IValueConverter"; import XNode, { IElementAttributes, isControl, isFactorySymbol } from "./XNode"; export declare abstract class AtomComponent implements INotifyPropertyChanged { readonly app: App; static readonly [isControl] = true; static readonly [isFactorySymbol] = true; readonly disposables: AtomDisposableList; readonly element: HTMLElement; data: any; viewModel: any; localViewModel: any; creator: any; protected pendingInits: Array<() => void>; private mInvalidated; private mPendingPromises; abstract get parent(): AtomControl; /** Do not ever use, only available as intellisense feature for * vs code editor. */ get vsProps(): { [k in keyof this]?: this[k]; } | IElementAttributes; private readonly eventHandlers; private readonly bindings; constructor(app: App, element?: HTMLElement); abstract atomParent(e: HTMLElement): AtomControl; bind(element: HTMLElement, 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: HTMLElement, name?: string): void; bindEvent(element: HTMLElement, name?: string, method?: EventListenerOrEventListenerObject, key?: string, capture?: boolean | AddEventListenerOptions): IDisposable; unbindEvent(element: HTMLElement, 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: HTMLElement, name: string, value: any): void; setLocalValue(element: HTMLElement, name: string, value: any): void; dispose(e?: HTMLElement): void; abstract append(element: HTMLElement | AtomControl): AtomControl; 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 extractControlProperties(x: XNode, name?: string | Function): {}; protected create(): void; protected preCreate(): void; protected setElementValue(element: HTMLElement, name: string, value: any): void; protected resolve<TService>(c: TService, selfName?: string | (() => any)): IAnyInstanceType<TService>; protected pushInit(): void; protected abstract createNode(app: any, e: any, iterator: any, creator: any): any; protected abstract toTemplate(app: any, iterator: any, creator: any): any; protected abstract get factory(): any; } export declare class PropertyBinding implements IDisposable { private target; readonly element: HTMLElement; readonly name: string; private twoWays; private source; path: ObjectProperty[][]; private watcher; private twoWaysDisposable; private isTwoWaySetup; private isRunning; private fromSourceToTarget; private fromTargetToSource; private disposed; constructor(target: AtomControl | any, element: HTMLElement, 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