dockview
Version:
Zero dependency layout manager supporting tabs, grids and splitviews with ReactJS support
36 lines (35 loc) • 1.41 kB
TypeScript
import * as React from 'react';
import { IDisposable } from '../lifecycle';
import { IFrameworkPart } from '../panel/types';
export interface ReactPortalStore {
addPortal: (portal: React.ReactPortal) => IDisposable;
}
export declare const ReactPartContext: React.Context<{}>;
export declare class ReactPart<P extends object, C extends object = {}> implements IFrameworkPart {
private readonly parent;
private readonly portalStore;
private readonly component;
private readonly parameters;
private readonly context?;
private componentInstance?;
private ref?;
private disposed;
constructor(parent: HTMLElement, portalStore: ReactPortalStore, component: React.FunctionComponent<P>, parameters: P, context?: C | undefined);
update(props: {
[index: string]: any;
}): void;
private createPortal;
dispose(): void;
}
declare type PortalLifecycleHook = () => [
React.ReactPortal[],
(portal: React.ReactPortal) => IDisposable
];
/**
* A React Hook that returns an array of portals to be rendered by the user of this hook
* and a disposable function to add a portal. Calling dispose removes this portal from the
* portal array
*/
export declare const usePortalsLifecycle: PortalLifecycleHook;
export declare function isReactElement(element: any | React.ReactElement): element is React.ReactElement;
export {};