30 lines
1016 B
TypeScript
30 lines
1016 B
TypeScript
export type NativeElement = { type: 'native'; [key: string]: any };
|
|
|
|
/**
|
|
|
|
> Abstract class that is root most base class for all widgets and layouts in the NodeGui World.
|
|
|
|
**This class is used to add core properties to all widgets, layouts etc in NodeGui world.
|
|
Currently it helps us maintain references to the native C++ instance of the widget or layout.
|
|
It also helps in preventing gc of child elements of a layout or widget**
|
|
|
|
`Component` is an abstract class and hence no instances of the same should be created.
|
|
It exists so that we can add core functionalities to all widgets and layouts easily. This is an internal class.
|
|
|
|
Its the root base class in NodeGui world.
|
|
|
|
*/
|
|
|
|
export abstract class Component {
|
|
nodeChildren: Set<Component>;
|
|
nodeParent?: Component;
|
|
constructor() {
|
|
this.nodeChildren = new Set<Component>();
|
|
}
|
|
setNodeParent(parent?: Component): void {
|
|
this.nodeParent = parent;
|
|
parent?.nodeChildren.add(this);
|
|
}
|
|
abstract native: NativeElement;
|
|
}
|