///
declare module "babylonjs-node-editor/blockTools" {
import { DiscardBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/discardBlock';
import { BonesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/bonesBlock';
import { InstancesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/instancesBlock';
import { MorphTargetsBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/morphTargetsBlock';
import { ImageProcessingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/imageProcessingBlock';
import { ColorMergerBlock } from 'babylonjs/Materials/Node/Blocks/colorMergerBlock';
import { VectorMergerBlock } from 'babylonjs/Materials/Node/Blocks/vectorMergerBlock';
import { ColorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/colorSplitterBlock';
import { VectorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/vectorSplitterBlock';
import { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
import { ReflectionTextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/reflectionTextureBlock';
import { LightBlock } from 'babylonjs/Materials/Node/Blocks/Dual/lightBlock';
import { FogBlock } from 'babylonjs/Materials/Node/Blocks/Dual/fogBlock';
import { VertexOutputBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/vertexOutputBlock';
import { FragmentOutputBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragmentOutputBlock';
import { NormalizeBlock } from 'babylonjs/Materials/Node/Blocks/normalizeBlock';
import { AddBlock } from 'babylonjs/Materials/Node/Blocks/addBlock';
import { ModBlock } from 'babylonjs/Materials/Node/Blocks/modBlock';
import { ScaleBlock } from 'babylonjs/Materials/Node/Blocks/scaleBlock';
import { TrigonometryBlock } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
import { CrossBlock } from 'babylonjs/Materials/Node/Blocks/crossBlock';
import { DotBlock } from 'babylonjs/Materials/Node/Blocks/dotBlock';
import { MultiplyBlock } from 'babylonjs/Materials/Node/Blocks/multiplyBlock';
import { TransformBlock } from 'babylonjs/Materials/Node/Blocks/transformBlock';
import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/Enums/nodeMaterialBlockConnectionPointTypes';
import { FresnelBlock } from 'babylonjs/Materials/Node/Blocks/fresnelBlock';
import { LerpBlock } from 'babylonjs/Materials/Node/Blocks/lerpBlock';
import { NLerpBlock } from 'babylonjs/Materials/Node/Blocks/nLerpBlock';
import { DivideBlock } from 'babylonjs/Materials/Node/Blocks/divideBlock';
import { SubtractBlock } from 'babylonjs/Materials/Node/Blocks/subtractBlock';
import { StepBlock } from 'babylonjs/Materials/Node/Blocks/stepBlock';
import { SmoothStepBlock } from 'babylonjs/Materials/Node/Blocks/smoothStepBlock';
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
import { OneMinusBlock } from 'babylonjs/Materials/Node/Blocks/oneMinusBlock';
import { ViewDirectionBlock } from 'babylonjs/Materials/Node/Blocks/viewDirectionBlock';
import { LightInformationBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/lightInformationBlock';
import { MaxBlock } from 'babylonjs/Materials/Node/Blocks/maxBlock';
import { MinBlock } from 'babylonjs/Materials/Node/Blocks/minBlock';
import { PerturbNormalBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/perturbNormalBlock';
import { LengthBlock } from 'babylonjs/Materials/Node/Blocks/lengthBlock';
import { DistanceBlock } from 'babylonjs/Materials/Node/Blocks/distanceBlock';
import { FrontFacingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/frontFacingBlock';
import { NegateBlock } from 'babylonjs/Materials/Node/Blocks/negateBlock';
import { PowBlock } from 'babylonjs/Materials/Node/Blocks/powBlock';
import { Scene } from 'babylonjs/scene';
import { RandomNumberBlock } from 'babylonjs/Materials/Node/Blocks/randomNumberBlock';
import { ReplaceColorBlock } from 'babylonjs/Materials/Node/Blocks/replaceColorBlock';
import { PosterizeBlock } from 'babylonjs/Materials/Node/Blocks/posterizeBlock';
import { ArcTan2Block } from 'babylonjs/Materials/Node/Blocks/arcTan2Block';
import { ReciprocalBlock } from 'babylonjs/Materials/Node/Blocks/reciprocalBlock';
import { GradientBlock } from 'babylonjs/Materials/Node/Blocks/gradientBlock';
import { WaveBlock } from 'babylonjs/Materials/Node/Blocks/waveBlock';
import { NodeMaterial } from 'babylonjs/Materials/Node/nodeMaterial';
import { WorleyNoise3DBlock } from 'babylonjs/Materials/Node/Blocks/worleyNoise3DBlock';
import { SimplexPerlin3DBlock } from 'babylonjs/Materials/Node/Blocks/simplexPerlin3DBlock';
import { NormalBlendBlock } from 'babylonjs/Materials/Node/Blocks/normalBlendBlock';
import { Rotate2dBlock } from 'babylonjs/Materials/Node/Blocks/rotate2dBlock';
import { DerivativeBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/derivativeBlock';
import { RefractBlock } from 'babylonjs/Materials/Node/Blocks/refractBlock';
import { ReflectBlock } from 'babylonjs/Materials/Node/Blocks/reflectBlock';
import { DesaturateBlock } from 'babylonjs/Materials/Node/Blocks/desaturateBlock';
import { PBRMetallicRoughnessBlock } from 'babylonjs/Materials/Node/Blocks/PBR/pbrMetallicRoughnessBlock';
import { SheenBlock } from 'babylonjs/Materials/Node/Blocks/PBR/sheenBlock';
import { AmbientOcclusionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/ambientOcclusionBlock';
import { ReflectivityBlock } from 'babylonjs/Materials/Node/Blocks/PBR/reflectivityBlock';
import { AnisotropyBlock } from 'babylonjs/Materials/Node/Blocks/PBR/anisotropyBlock';
import { ReflectionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/reflectionBlock';
import { ClearCoatBlock } from 'babylonjs/Materials/Node/Blocks/PBR/clearCoatBlock';
import { RefractionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/refractionBlock';
import { SubSurfaceBlock } from 'babylonjs/Materials/Node/Blocks/PBR/subSurfaceBlock';
import { CurrentScreenBlock } from 'babylonjs/Materials/Node/Blocks/Dual/currentScreenBlock';
import { ParticleTextureBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleTextureBlock';
import { ParticleRampGradientBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleRampGradientBlock';
import { ParticleBlendMultiplyBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleBlendMultiplyBlock';
import { FragCoordBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragCoordBlock';
import { ScreenSizeBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/screenSizeBlock';
export class BlockTools {
static GetBlockFromString(data: string, scene: Scene, nodeMaterial: NodeMaterial): DesaturateBlock | RefractBlock | ReflectBlock | DerivativeBlock | Rotate2dBlock | NormalBlendBlock | WorleyNoise3DBlock | SimplexPerlin3DBlock | BonesBlock | InstancesBlock | MorphTargetsBlock | DiscardBlock | ImageProcessingBlock | ColorMergerBlock | VectorMergerBlock | ColorSplitterBlock | VectorSplitterBlock | TextureBlock | ReflectionTextureBlock | LightBlock | FogBlock | VertexOutputBlock | FragmentOutputBlock | AddBlock | ClampBlock | ScaleBlock | CrossBlock | DotBlock | PowBlock | MultiplyBlock | TransformBlock | TrigonometryBlock | RemapBlock | NormalizeBlock | FresnelBlock | LerpBlock | NLerpBlock | DivideBlock | SubtractBlock | ModBlock | StepBlock | SmoothStepBlock | OneMinusBlock | ReciprocalBlock | ViewDirectionBlock | LightInformationBlock | MaxBlock | MinBlock | LengthBlock | DistanceBlock | NegateBlock | PerturbNormalBlock | RandomNumberBlock | ReplaceColorBlock | PosterizeBlock | ArcTan2Block | GradientBlock | FrontFacingBlock | WaveBlock | InputBlock | PBRMetallicRoughnessBlock | SheenBlock | AmbientOcclusionBlock | ReflectivityBlock | AnisotropyBlock | ReflectionBlock | ClearCoatBlock | RefractionBlock | SubSurfaceBlock | CurrentScreenBlock | ParticleTextureBlock | ParticleRampGradientBlock | ParticleBlendMultiplyBlock | FragCoordBlock | ScreenSizeBlock | null;
static GetColorFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): string;
static GetConnectionNodeTypeFromString(type: string): NodeMaterialBlockConnectionPointTypes.Float | NodeMaterialBlockConnectionPointTypes.Vector2 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Matrix | NodeMaterialBlockConnectionPointTypes.AutoDetect;
static GetStringFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
}
}
declare module "babylonjs-node-editor/components/log/logComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface ILogComponentProps {
globalState: GlobalState;
}
export class LogEntry {
message: string;
isError: boolean;
constructor(message: string, isError: boolean);
}
export class LogComponent extends React.Component {
constructor(props: ILogComponentProps);
componentDidMount(): void;
componentDidUpdate(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/preview/previewType" {
export enum PreviewType {
Sphere = 0,
Box = 1,
Torus = 2,
Cylinder = 3,
Plane = 4,
ShaderBall = 5,
DefaultParticleSystem = 6,
Bubbles = 7,
Smoke = 8,
Rain = 9,
Explosion = 10,
Fire = 11,
Custom = 12
}
}
declare module "babylonjs-node-editor/diagram/display/displayManager" {
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export interface IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
getBackgroundColor(block: NodeMaterialBlock): string;
getHeaderText(block: NodeMaterialBlock): string;
}
}
declare module "babylonjs-node-editor/nodeLocationInfo" {
export interface INodeLocationInfo {
blockId: number;
x: number;
y: number;
}
export interface IFrameData {
x: number;
y: number;
width: number;
height: number;
color: number[];
name: string;
isCollapsed: boolean;
blocks: number[];
comments: string;
}
export interface IEditorData {
locations: INodeLocationInfo[];
x: number;
y: number;
zoom: number;
frames?: IFrameData[];
map?: {
[key: number]: number;
};
}
}
declare module "babylonjs-node-editor/serializationTools" {
import { NodeMaterial } from 'babylonjs/Materials/Node/nodeMaterial';
import { GlobalState } from "babylonjs-node-editor/globalState";
import { Nullable } from 'babylonjs/types';
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
export class SerializationTools {
static UpdateLocations(material: NodeMaterial, globalState: GlobalState, frame?: Nullable): void;
static Serialize(material: NodeMaterial, globalState: GlobalState, frame?: Nullable): string;
static Deserialize(serializationObject: any, globalState: GlobalState): void;
static AddFrameToMaterial(serializationObject: any, globalState: GlobalState, currentMaterial: NodeMaterial): void;
}
}
declare module "babylonjs-node-editor/stringTools" {
import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/Enums/nodeMaterialBlockConnectionPointTypes';
export class StringTools {
private static _SaveAs;
private static _Click;
/**
* Gets the base math type of node material block connection point.
* @param type Type to parse.
*/
static GetBaseType(type: NodeMaterialBlockConnectionPointTypes): string;
/**
* Download a string into a file that will be saved locally by the browser
* @param content defines the string to download locally as a file
*/
static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
}
}
declare module "babylonjs-node-editor/diagram/frameNodePort" {
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { FramePortPosition } from "babylonjs-node-editor/diagram/graphFrame";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { Observable } from 'babylonjs/Misc/observable';
import { Nullable } from 'babylonjs/types';
import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
export class FrameNodePort extends NodePort {
connectionPoint: NodeMaterialConnectionPoint;
node: GraphNode;
private _parentFrameId;
private _isInput;
private _framePortPosition;
private _framePortId;
private _onFramePortPositionChangedObservable;
get parentFrameId(): number;
get onFramePortPositionChangedObservable(): Observable;
get isInput(): boolean;
get framePortId(): number;
get framePortPosition(): FramePortPosition;
set framePortPosition(position: FramePortPosition);
constructor(portContainer: HTMLElement, connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number);
static CreateFrameNodePortElement(connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: Nullable, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number): FrameNodePort;
}
}
declare module "babylonjs-node-editor/diagram/graphFrame" {
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { GraphCanvasComponent } from "babylonjs-node-editor/diagram/graphCanvas";
import { Nullable } from 'babylonjs/types';
import { Observable } from 'babylonjs/Misc/observable';
import { IFrameData } from "babylonjs-node-editor/nodeLocationInfo";
import { Color3 } from 'babylonjs/Maths/math.color';
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
export enum FramePortPosition {
Top = 0,
Middle = 1,
Bottom = 2
}
export class GraphFrame {
private readonly CollapsedWidth;
private static _FrameCounter;
private static _FramePortCounter;
private _name;
private _color;
private _x;
private _y;
private _gridAlignedX;
private _gridAlignedY;
private _width;
private _height;
element: HTMLDivElement;
private _borderElement;
private _headerElement;
private _headerTextElement;
private _headerCollapseElement;
private _headerCloseElement;
private _commentsElement;
private _portContainer;
private _outputPortContainer;
private _inputPortContainer;
private _nodes;
private _ownerCanvas;
private _mouseStartPointX;
private _mouseStartPointY;
private _onSelectionChangedObserver;
private _onGraphNodeRemovalObserver;
private _onExposePortOnFrameObserver;
private _onNodeLinkDisposedObservers;
private _isCollapsed;
private _frameInPorts;
private _frameOutPorts;
private _controlledPorts;
private _id;
private _comments;
private _frameIsResizing;
private _resizingDirection;
private _minFrameHeight;
private _minFrameWidth;
private mouseXLimit;
onExpandStateChanged: Observable;
private readonly CloseSVG;
private readonly ExpandSVG;
private readonly CollapseSVG;
get id(): number;
get isCollapsed(): boolean;
private _createInputPort;
private _markFramePortPositions;
private _createFramePorts;
private _redrawFramePorts;
set isCollapsed(value: boolean);
get nodes(): GraphNode[];
get ports(): FrameNodePort[];
get name(): string;
set name(value: string);
get color(): Color3;
set color(value: Color3);
get x(): number;
set x(value: number);
get y(): number;
set y(value: number);
get width(): number;
set width(value: number);
get height(): number;
set height(value: number);
get comments(): string;
set comments(comments: string);
constructor(candidate: Nullable, canvas: GraphCanvasComponent, doNotCaptureNodes?: boolean);
refresh(): void;
addNode(node: GraphNode): void;
removeNode(node: GraphNode): void;
syncNode(node: GraphNode): void;
cleanAccumulation(): void;
private _onDown;
move(newX: number, newY: number, align?: boolean): void;
private _onUp;
private _moveFrame;
private _onMove;
moveFramePortUp(nodePort: FrameNodePort): void;
private _movePortUp;
moveFramePortDown(nodePort: FrameNodePort): void;
private _movePortDown;
private initResizing;
private cleanUpResizing;
private updateMinHeightWithComments;
private _isResizingTop;
private _isResizingRight;
private _isResizingBottom;
private _isResizingLeft;
private _onRightHandlePointerDown;
private _onRightHandlePointerMove;
private _moveRightHandle;
private _onRightHandlePointerUp;
private _onBottomHandlePointerDown;
private _onBottomHandlePointerMove;
private _moveBottomHandle;
private _onBottomHandlePointerUp;
private _onLeftHandlePointerDown;
private _onLeftHandlePointerMove;
private _moveLeftHandle;
private _onLeftHandlePointerUp;
private _onTopHandlePointerDown;
private _onTopHandlePointerMove;
private _moveTopHandle;
private _onTopHandlePointerUp;
private _onTopRightHandlePointerDown;
private _onTopRightHandlePointerMove;
private _moveTopRightHandle;
private _onTopRightHandlePointerUp;
private _onBottomRightHandlePointerDown;
private _onBottomRightHandlePointerMove;
private _moveBottomRightHandle;
private _onBottomRightHandlePointerUp;
private _onBottomLeftHandlePointerDown;
private _onBottomLeftHandlePointerMove;
private _moveBottomLeftHandle;
private _onBottomLeftHandlePointerUp;
private _onTopLeftHandlePointerDown;
private _onTopLeftHandlePointerMove;
private _moveTopLeftHandle;
private _onTopLeftHandlePointerUp;
private _expandLeft;
private _expandTop;
private _expandRight;
private _expandBottom;
dispose(): void;
serialize(): IFrameData;
export(): void;
static Parse(serializationData: IFrameData, canvas: GraphCanvasComponent, map?: {
[key: number]: number;
}): GraphFrame;
}
}
declare module "babylonjs-node-editor/diagram/nodePort" {
import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
import { GlobalState } from "babylonjs-node-editor/globalState";
import { Nullable } from 'babylonjs/types';
import { Observer } from 'babylonjs/Misc/observable';
import { Vector2 } from 'babylonjs/Maths/math.vector';
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { NodeLink } from "babylonjs-node-editor/diagram/nodeLink";
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
import { FramePortData } from "babylonjs-node-editor/diagram/graphCanvas";
export class NodePort {
connectionPoint: NodeMaterialConnectionPoint;
node: GraphNode;
protected _element: HTMLDivElement;
protected _img: HTMLImageElement;
protected _globalState: GlobalState;
protected _portLabelElement: Element;
protected _onCandidateLinkMovedObserver: Nullable>>;
protected _onSelectionChangedObserver: Nullable>>;
protected _exposedOnFrame: boolean;
delegatedPort: Nullable;
get element(): HTMLDivElement;
get portName(): string;
set portName(newName: string);
get disabled(): boolean;
hasLabel(): boolean;
get exposedOnFrame(): boolean;
set exposedOnFrame(value: boolean);
private _isConnectedToNodeOutsideOfFrame;
refresh(): void;
constructor(portContainer: HTMLElement, connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState);
dispose(): void;
static CreatePortElement(connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: Nullable, globalState: GlobalState): NodePort;
}
}
declare module "babylonjs-node-editor/diagram/nodeLink" {
import { GraphCanvasComponent } from "babylonjs-node-editor/diagram/graphCanvas";
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
import { Observable } from 'babylonjs/Misc/observable';
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
export class NodeLink {
private _graphCanvas;
private _portA;
private _portB?;
private _nodeA;
private _nodeB?;
private _path;
private _selectionPath;
private _onSelectionChangedObserver;
private _isVisible;
onDisposedObservable: Observable;
get isVisible(): boolean;
set isVisible(value: boolean);
get portA(): FrameNodePort | NodePort;
get portB(): FrameNodePort | NodePort | undefined;
get nodeA(): GraphNode;
get nodeB(): GraphNode | undefined;
update(endX?: number, endY?: number, straight?: boolean): void;
constructor(graphCanvas: GraphCanvasComponent, portA: NodePort, nodeA: GraphNode, portB?: NodePort, nodeB?: GraphNode);
onClick(): void;
dispose(): void;
}
}
declare module "babylonjs-node-editor/diagram/graphCanvas" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { Nullable } from 'babylonjs/types';
import { NodeLink } from "babylonjs-node-editor/diagram/nodeLink";
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
import { IEditorData, IFrameData } from "babylonjs-node-editor/nodeLocationInfo";
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
export interface IGraphCanvasComponentProps {
globalState: GlobalState;
}
export type FramePortData = {
frame: GraphFrame;
port: FrameNodePort;
};
export const isFramePortData: (variableToCheck: any) => variableToCheck is FramePortData;
export class GraphCanvasComponent extends React.Component {
private readonly MinZoom;
private readonly MaxZoom;
private _hostCanvas;
private _graphCanvas;
private _selectionContainer;
private _frameContainer;
private _svgCanvas;
private _rootContainer;
private _nodes;
private _links;
private _mouseStartPointX;
private _mouseStartPointY;
private _dropPointX;
private _dropPointY;
private _selectionStartX;
private _selectionStartY;
private _candidateLinkedHasMoved;
private _x;
private _y;
private _zoom;
private _selectedNodes;
private _selectedLink;
private _selectedPort;
private _candidateLink;
private _candidatePort;
private _gridSize;
private _selectionBox;
private _selectedFrame;
private _frameCandidate;
private _frames;
private _altKeyIsPressed;
private _ctrlKeyIsPressed;
private _oldY;
_frameIsMoving: boolean;
_isLoading: boolean;
get gridSize(): number;
set gridSize(value: number);
get globalState(): GlobalState;
get nodes(): GraphNode[];
get links(): NodeLink[];
get frames(): GraphFrame[];
get zoom(): number;
set zoom(value: number);
get x(): number;
set x(value: number);
get y(): number;
set y(value: number);
get selectedNodes(): GraphNode[];
get selectedLink(): Nullable;
get selectedFrame(): Nullable;
get selectedPort(): Nullable;
get canvasContainer(): HTMLDivElement;
get hostCanvas(): HTMLDivElement;
get svgCanvas(): HTMLElement;
get selectionContainer(): HTMLDivElement;
get frameContainer(): HTMLDivElement;
constructor(props: IGraphCanvasComponentProps);
getGridPosition(position: number, useCeil?: boolean): number;
getGridPositionCeil(position: number): number;
updateTransform(): void;
onKeyUp(): void;
findNodeFromBlock(block: NodeMaterialBlock): GraphNode;
reset(): void;
connectPorts(pointA: NodeMaterialConnectionPoint, pointB: NodeMaterialConnectionPoint): void;
removeLink(link: NodeLink): void;
appendBlock(block: NodeMaterialBlock): GraphNode;
distributeGraph(): void;
componentDidMount(): void;
onMove(evt: React.PointerEvent): void;
onDown(evt: React.PointerEvent): void;
onUp(evt: React.PointerEvent): void;
onWheel(evt: React.WheelEvent): void;
zoomToFit(): void;
processCandidatePort(): void;
processEditorData(editorData: IEditorData): void;
addFrame(frameData: IFrameData): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/propertyChangedEvent" {
export class PropertyChangedEvent {
object: any;
property: string;
value: any;
initialValue: any;
}
}
declare module "babylonjs-node-editor/sharedComponents/floatLineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IFloatLineComponentProps {
label: string;
target: any;
propertyName: string;
onChange?: (newValue: number) => void;
isInteger?: boolean;
onPropertyChangedObservable?: Observable;
additionalClass?: string;
step?: string;
digits?: number;
globalState: GlobalState;
}
export class FloatLineComponent extends React.Component {
private _localChange;
private _store;
constructor(props: IFloatLineComponentProps);
shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
value: string;
}): boolean;
raiseOnPropertyChanged(newValue: number, previousValue: number): void;
updateValue(valueString: string): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/floatPropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IFloatPropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class FloatPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/sliderLineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
interface ISliderLineComponentProps {
label: string;
target?: any;
propertyName?: string;
minimum: number;
maximum: number;
step: number;
directValue?: number;
useEuler?: boolean;
onChange?: (value: number) => void;
onInput?: (value: number) => void;
onPropertyChangedObservable?: Observable;
decimalCount?: number;
}
export class SliderLineComponent extends React.Component {
private _localChange;
constructor(props: ISliderLineComponentProps);
shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
value: number;
}): boolean;
onChange(newValueString: any): void;
onInput(newValueString: any): void;
prepareDataToRead(value: number): number;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/numericInputComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface INumericInputComponentProps {
label: string;
value: number;
step?: number;
onChange: (value: number) => void;
globalState: GlobalState;
}
export class NumericInputComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: INumericInputComponentProps);
shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
value: string;
}): boolean;
updateValue(evt: any): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/vector2LineComponent" {
import * as React from "react";
import { Vector2 } from "babylonjs/Maths/math.vector";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IVector2LineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newvalue: Vector2) => void;
onPropertyChangedObservable?: Observable;
globalState: GlobalState;
}
export class Vector2LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector2LineComponentProps);
shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
isExpanded: boolean;
value: Vector2;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: Vector2): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/vector2PropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IVector2PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class Vector2PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/colorPickerComponent" {
import * as React from "react";
import { Color4, Color3 } from 'babylonjs/Maths/math.color';
import { GlobalState } from "babylonjs-node-editor/globalState";
export interface IColorPickerComponentProps {
value: Color4 | Color3;
onColorChanged: (newOne: string) => void;
globalState: GlobalState;
disableAlpha?: boolean;
}
interface IColorPickerComponentState {
pickerEnabled: boolean;
color: {
r: number;
g: number;
b: number;
a?: number;
};
hex: string;
}
export class ColorPickerLineComponent extends React.Component {
private _floatRef;
private _floatHostRef;
constructor(props: IColorPickerComponentProps);
syncPositions(): void;
shouldComponentUpdate(nextProps: IColorPickerComponentProps, nextState: IColorPickerComponentState): boolean;
componentDidUpdate(): void;
componentDidMount(): void;
setPickerState(enabled: boolean): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/color3LineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { Color3 } from "babylonjs/Maths/math.color";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
export interface IColor3LineComponentProps {
label: string;
target: any;
propertyName: string;
onPropertyChangedObservable?: Observable;
onChange?: () => void;
globalState: GlobalState;
}
export class Color3LineComponent extends React.Component {
private _localChange;
constructor(props: IColor3LineComponentProps);
shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
color: Color3;
}): boolean;
onChange(newValue: string): void;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: Color3): void;
updateStateR(value: number): void;
updateStateG(value: number): void;
updateStateB(value: number): void;
copyToClipboard(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/color3PropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IColor3PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class Color3PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/vector3LineComponent" {
import * as React from "react";
import { Vector3 } from "babylonjs/Maths/math.vector";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IVector3LineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newvalue: Vector3) => void;
onPropertyChangedObservable?: Observable;
globalState: GlobalState;
}
export class Vector3LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector3LineComponentProps);
shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
isExpanded: boolean;
value: Vector3;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: Vector3): void;
updateVector3(): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
updateStateZ(value: number): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/vector3PropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IVector3PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class Vector3PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/vector4LineComponent" {
import * as React from "react";
import { Vector4 } from "babylonjs/Maths/math.vector";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IVector4LineComponentProps {
label: string;
target?: any;
propertyName?: string;
value?: Vector4;
step?: number;
onChange?: (newvalue: Vector4) => void;
onPropertyChangedObservable?: Observable;
globalState: GlobalState;
}
export class Vector4LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector4LineComponentProps);
shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: {
isExpanded: boolean;
value: Vector4;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: Vector4): void;
updateVector4(): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
updateStateZ(value: number): void;
updateStateW(value: number): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/vector4PropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IVector4PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class Vector4PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/optionsLineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
class ListLineOption {
label: string;
value: number | string;
}
interface IOptionsLineComponentProps {
label: string;
target: any;
className?: string;
propertyName?: string;
options: ListLineOption[];
noDirectUpdate?: boolean;
onSelect?: (value: number | string) => void;
onPropertyChangedObservable?: Observable;
valuesAreStrings?: boolean;
defaultIfNull?: number;
getSelection?: (target: any) => number;
}
export class OptionsLineComponent extends React.Component {
private _localChange;
private _getValue;
constructor(props: IOptionsLineComponentProps);
setValue(value: string | number): void;
shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
value: number;
}): boolean;
raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
updateValue(valueString: string): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/matrixLineComponent" {
import * as React from "react";
import { Vector3, Matrix, Vector4 } from "babylonjs/Maths/math.vector";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IMatrixLineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newValue: Matrix) => void;
onModeChange?: (mode: number) => void;
onPropertyChangedObservable?: Observable;
mode?: number;
globalState: GlobalState;
}
export class MatrixLineComponent extends React.Component {
private _localChange;
constructor(props: IMatrixLineComponentProps);
shouldComponentUpdate(nextProps: IMatrixLineComponentProps, nextState: {
value: Matrix;
mode: number;
angle: number;
}): boolean;
raiseOnPropertyChanged(previousValue: Vector3): void;
updateMatrix(): void;
updateRow(value: Vector4, row: number): void;
updateBasedOnMode(value: number): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/matrixPropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IMatrixPropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class MatrixPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/lineContainerComponent" {
import * as React from "react";
interface ILineContainerComponentProps {
title: string;
children: any[] | any;
closed?: boolean;
}
export class LineContainerComponent extends React.Component {
constructor(props: ILineContainerComponentProps);
switchExpandedState(): void;
renderHeader(): JSX.Element;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/propertyComponentProps" {
import { GlobalState } from "babylonjs-node-editor/globalState";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export interface IPropertyComponentProps {
globalState: GlobalState;
block: NodeMaterialBlock;
}
}
declare module "babylonjs-node-editor/sharedComponents/textInputLineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface ITextInputLineComponentProps {
label: string;
globalState: GlobalState;
target?: any;
propertyName?: string;
value?: string;
onChange?: (value: string) => void;
onPropertyChangedObservable?: Observable;
}
export class TextInputLineComponent extends React.Component {
private _localChange;
constructor(props: ITextInputLineComponentProps);
shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
value: string;
}): boolean;
raiseOnPropertyChanged(newValue: string, previousValue: string): void;
updateValue(value: string, raisePropertyChanged: boolean): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/textLineComponent" {
import * as React from "react";
interface ITextLineComponentProps {
label: string;
value: string;
color?: string;
underline?: boolean;
onLink?: () => void;
}
export class TextLineComponent extends React.Component {
constructor(props: ITextLineComponentProps);
onLink(): void;
renderContent(): JSX.Element;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/checkBoxLineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
export interface ICheckBoxLineComponentProps {
label: string;
target?: any;
propertyName?: string;
isSelected?: () => boolean;
onSelect?: (value: boolean) => void;
onValueChanged?: () => void;
onPropertyChangedObservable?: Observable;
disabled?: boolean;
}
export class CheckBoxLineComponent extends React.Component {
private static _UniqueIdSeed;
private _uniqueId;
private _localChange;
constructor(props: ICheckBoxLineComponentProps);
shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
isSelected: boolean;
isDisabled: boolean;
}): boolean;
onChange(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/genericNodePropertyComponent" {
import * as React from "react";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class GenericPropertyComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
export class GeneralPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
export class GenericPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(notifiers?: {
"rebuild"?: boolean;
"update"?: boolean;
}): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/color4LineComponent" {
import * as React from "react";
import { Observable } from "babylonjs/Misc/observable";
import { Color4 } from "babylonjs/Maths/math.color";
import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
import { GlobalState } from "babylonjs-node-editor/globalState";
export interface IColor4LineComponentProps {
label: string;
target: any;
propertyName: string;
onPropertyChangedObservable?: Observable;
onChange?: () => void;
globalState: GlobalState;
}
export class Color4LineComponent extends React.Component {
private _localChange;
constructor(props: IColor4LineComponentProps);
shouldComponentUpdate(nextProps: IColor4LineComponentProps, nextState: {
color: Color4;
}): boolean;
onChange(newValue: string): void;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: Color4): void;
updateStateR(value: number): void;
updateStateG(value: number): void;
updateStateB(value: number): void;
updateStateA(value: number): void;
copyToClipboard(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/properties/color4PropertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
interface IColor4PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: InputBlock;
}
export class Color4PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/inputNodePropertyComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class InputPropertyTabComponent extends React.Component {
private onValueChangedObserver;
constructor(props: IPropertyComponentProps);
componentDidMount(): void;
componentWillUnmount(): void;
renderValue(globalState: GlobalState): JSX.Element | null;
setDefaultValue(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/transformNodePropertyComponent" {
import * as React from "react";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class TransformPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/gradientStepComponent" {
import * as React from 'react';
import { GlobalState } from "babylonjs-node-editor/globalState";
import { GradientBlockColorStep } from 'babylonjs/Materials/Node/Blocks/gradientBlock';
interface IGradientStepComponentProps {
globalState: GlobalState;
step: GradientBlockColorStep;
lineIndex: number;
onDelete: () => void;
onUpdateStep: () => void;
onCheckForReOrder: () => void;
}
export class GradientStepComponent extends React.Component {
constructor(props: IGradientStepComponentProps);
updateColor(color: string): void;
updateStep(gradient: number): void;
onPointerUp(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/buttonLineComponent" {
import * as React from "react";
export interface IButtonLineComponentProps {
label: string;
onClick: () => void;
}
export class ButtonLineComponent extends React.Component {
constructor(props: IButtonLineComponentProps);
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/gradientNodePropertyComponent" {
import * as React from "react";
import { GradientBlockColorStep } from 'babylonjs/Materials/Node/Blocks/gradientBlock';
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class GradientPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(): void;
deleteStep(step: GradientBlockColorStep): void;
addNewStep(): void;
checkForReOrder(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/lightPropertyTabComponent" {
import * as React from "react";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class LightPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/lightInformationPropertyTabComponent" {
import * as React from "react";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class LightInformationPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/fileButtonLineComponent" {
import * as React from "react";
interface IFileButtonLineComponentProps {
label: string;
onClick: (file: File) => void;
accept: string;
uploadName?: string;
}
export class FileButtonLineComponent extends React.Component {
private uploadRef;
constructor(props: IFileButtonLineComponentProps);
onChange(evt: any): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/texturePropertyTabComponent" {
import * as React from "react";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
import { ReflectionTextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/reflectionTextureBlock';
import { ReflectionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/reflectionBlock';
import { RefractionBlock } from 'babylonjs/Materials/Node/Blocks/PBR/refractionBlock';
import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
import { CurrentScreenBlock } from 'babylonjs/Materials/Node/Blocks/Dual/currentScreenBlock';
import { ParticleTextureBlock } from 'babylonjs/Materials/Node/Blocks/Particle/particleTextureBlock';
type ReflectionTexture = ReflectionTextureBlock | ReflectionBlock | RefractionBlock;
type AnyTexture = TextureBlock | ReflectionTexture | CurrentScreenBlock | ParticleTextureBlock;
export class TexturePropertyTabComponent extends React.Component {
get textureBlock(): AnyTexture;
constructor(props: IPropertyComponentProps);
UNSAFE_componentWillUpdate(nextProps: IPropertyComponentProps, nextState: {
isEmbedded: boolean;
loadAsCubeTexture: boolean;
}): void;
private _generateRandomForCache;
updateAfterTextureLoad(): void;
removeTexture(): void;
_prepareTexture(): void;
/**
* Replaces the texture of the node
* @param file the file of the texture to use
*/
replaceTexture(file: File): void;
replaceTextureWithUrl(url: string): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/trigonometryNodePropertyComponent" {
import * as React from "react";
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class TrigonometryPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/propertyLedger" {
import { ComponentClass } from 'react';
import { IPropertyComponentProps } from "babylonjs-node-editor/diagram/properties/propertyComponentProps";
export class PropertyLedger {
static RegisteredControls: {
[key: string]: ComponentClass;
};
}
}
declare module "babylonjs-node-editor/diagram/display/inputDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class InputDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): "" | "constant" | "inspector";
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/display/outputDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class OutputDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/display/clampDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class ClampDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/display/gradientDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class GradientDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/display/remapDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class RemapDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
private _extractInputValue;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/display/trigonometryDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class TrigonometryDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/sharedComponents/textureLineComponent" {
import * as React from "react";
import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
interface ITextureLineComponentProps {
texture: BaseTexture;
width: number;
height: number;
globalState?: any;
hideChannelSelect?: boolean;
}
export interface ITextureLineComponentState {
displayRed: boolean;
displayGreen: boolean;
displayBlue: boolean;
displayAlpha: boolean;
face: number;
}
export class TextureLineComponent extends React.Component {
private canvasRef;
constructor(props: ITextureLineComponentProps);
shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
displayRed: boolean;
displayGreen: boolean;
displayBlue: boolean;
displayAlpha: boolean;
face: number;
}): boolean;
componentDidMount(): void;
componentDidUpdate(): void;
updatePreview(): void;
static UpdatePreview(previewCanvas: HTMLCanvasElement, texture: BaseTexture, width: number, options: ITextureLineComponentState, onReady?: () => void, globalState?: any): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/display/textureDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class TextureDisplayManager implements IDisplayManager {
private _previewCanvas;
private _previewImage;
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/display/discardDisplayManager" {
import { IDisplayManager } from "babylonjs-node-editor/diagram/display/displayManager";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
export class DiscardDisplayManager implements IDisplayManager {
getHeaderClass(block: NodeMaterialBlock): string;
shouldDisplayPortLabels(block: NodeMaterialBlock): boolean;
getHeaderText(block: NodeMaterialBlock): string;
getBackgroundColor(block: NodeMaterialBlock): string;
updatePreviewContent(block: NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module "babylonjs-node-editor/diagram/displayLedger" {
export class DisplayLedger {
static RegisteredControls: {
[key: string]: any;
};
}
}
declare module "babylonjs-node-editor/diagram/graphNode" {
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
import { GlobalState } from "babylonjs-node-editor/globalState";
import { Nullable } from 'babylonjs/types';
import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
import { GraphCanvasComponent } from "babylonjs-node-editor/diagram/graphCanvas";
import { NodeLink } from "babylonjs-node-editor/diagram/nodeLink";
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
export class GraphNode {
block: NodeMaterialBlock;
private _visual;
private _header;
private _connections;
private _inputsContainer;
private _outputsContainer;
private _content;
private _comments;
private _inputPorts;
private _outputPorts;
private _links;
private _x;
private _y;
private _gridAlignedX;
private _gridAlignedY;
private _mouseStartPointX;
private _mouseStartPointY;
private _globalState;
private _onSelectionChangedObserver;
private _onSelectionBoxMovedObserver;
private _onFrameCreatedObserver;
private _onUpdateRequiredObserver;
private _ownerCanvas;
private _isSelected;
private _displayManager;
private _isVisible;
private _enclosingFrameId;
get isVisible(): boolean;
set isVisible(value: boolean);
private _upateNodePortNames;
get outputPorts(): NodePort[];
get inputPorts(): NodePort[];
get links(): NodeLink[];
get gridAlignedX(): number;
get gridAlignedY(): number;
get x(): number;
set x(value: number);
get y(): number;
set y(value: number);
get width(): number;
get height(): number;
get id(): number;
get name(): string;
get isSelected(): boolean;
get enclosingFrameId(): number;
set enclosingFrameId(value: number);
set isSelected(value: boolean);
constructor(block: NodeMaterialBlock, globalState: GlobalState);
isOverlappingFrame(frame: GraphFrame): boolean;
getPortForConnectionPoint(point: NodeMaterialConnectionPoint): Nullable;
getLinksForConnectionPoint(point: NodeMaterialConnectionPoint): NodeLink[];
private _refreshFrames;
_refreshLinks(): void;
refresh(): void;
private _onDown;
cleanAccumulation(useCeil?: boolean): void;
private _onUp;
private _onMove;
renderProperties(): Nullable;
appendVisual(root: HTMLDivElement, owner: GraphCanvasComponent): void;
dispose(): void;
}
}
declare module "babylonjs-node-editor/globalState" {
import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
import { Nullable } from "babylonjs/types";
import { Observable } from 'babylonjs/Misc/observable';
import { LogEntry } from "babylonjs-node-editor/components/log/logComponent";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
import { PreviewType } from "babylonjs-node-editor/components/preview/previewType";
import { Color4 } from 'babylonjs/Maths/math.color';
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { Vector2 } from 'babylonjs/Maths/math.vector';
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
import { NodeLink } from "babylonjs-node-editor/diagram/nodeLink";
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
import { FramePortData } from "babylonjs-node-editor/diagram/graphCanvas";
import { NodeMaterialModes } from 'babylonjs/Materials/Node/Enums/nodeMaterialModes';
export class GlobalState {
nodeMaterial: NodeMaterial;
hostElement: HTMLElement;
hostDocument: HTMLDocument;
hostWindow: Window;
onSelectionChangedObservable: Observable>;
onRebuildRequiredObservable: Observable;
onBuiltObservable: Observable;
onResetRequiredObservable: Observable;
onUpdateRequiredObservable: Observable;
onZoomToFitRequiredObservable: Observable;
onReOrganizedRequiredObservable: Observable;
onLogRequiredObservable: Observable;
onErrorMessageDialogRequiredObservable: Observable;
onIsLoadingChanged: Observable;
onPreviewCommandActivated: Observable;
onLightUpdated: Observable;
onPreviewBackgroundChanged: Observable;
onBackFaceCullingChanged: Observable;
onDepthPrePassChanged: Observable;
onAnimationCommandActivated: Observable;
onCandidateLinkMoved: Observable>;
onSelectionBoxMoved: Observable;
onFrameCreatedObservable: Observable;
onCandidatePortSelectedObservable: Observable>;
onImportFrameObservable: Observable;
onGraphNodeRemovalObservable: Observable;
onGetNodeFromBlock: (block: NodeMaterialBlock) => GraphNode;
onGridSizeChanged: Observable;
onExposePortOnFrameObservable: Observable;
previewType: PreviewType;
previewFile: File;
listOfCustomPreviewFiles: File[];
rotatePreview: boolean;
backgroundColor: Color4;
backFaceCulling: boolean;
depthPrePass: boolean;
blockKeyboardEvents: boolean;
hemisphericLight: boolean;
directionalLight0: boolean;
directionalLight1: boolean;
controlCamera: boolean;
storeEditorData: (serializationObject: any, frame?: Nullable) => void;
_mode: NodeMaterialModes;
/** Gets the mode */
get mode(): NodeMaterialModes;
/** Sets the mode */
set mode(m: NodeMaterialModes);
customSave?: {
label: string;
action: (data: string) => Promise;
};
constructor();
}
}
declare module "babylonjs-node-editor/sharedComponents/draggableLineComponent" {
import * as React from "react";
export interface IButtonLineComponentProps {
data: string;
tooltip: string;
}
export class DraggableLineComponent extends React.Component {
constructor(props: IButtonLineComponentProps);
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/nodeList/nodeListComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface INodeListComponentProps {
globalState: GlobalState;
}
export class NodeListComponent extends React.Component {
private _onResetRequiredObserver;
private static _Tooltips;
constructor(props: INodeListComponentProps);
componentWillUnmount(): void;
filterContent(filter: string): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/framePropertyComponent" {
import * as React from "react";
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
import { GlobalState } from "babylonjs-node-editor/globalState";
export interface IFramePropertyTabComponentProps {
globalState: GlobalState;
frame: GraphFrame;
}
export class FramePropertyTabComponent extends React.Component {
private onFrameExpandStateChangedObserver;
constructor(props: IFramePropertyTabComponentProps);
componentDidMount(): void;
componentWillUnmount(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/frameNodePortPropertyComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
export interface IFrameNodePortPropertyTabComponentProps {
globalState: GlobalState;
frameNodePort: FrameNodePort;
frame: GraphFrame;
}
export class FrameNodePortPropertyTabComponent extends React.Component {
private _onFramePortPositionChangedObserver;
private _onSelectionChangedObserver;
constructor(props: IFrameNodePortPropertyTabComponentProps);
componentWillUnmount(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/diagram/properties/nodePortPropertyComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
export interface IFrameNodePortPropertyTabComponentProps {
globalState: GlobalState;
nodePort: NodePort;
}
export class NodePortPropertyTabComponent extends React.Component {
private _onSelectionChangedObserver;
constructor(props: IFrameNodePortPropertyTabComponentProps);
componentWillUnmount(): void;
toggleExposeOnFrame(value: boolean): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/propertyTab/propertyTabComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { Nullable } from 'babylonjs/types';
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { GraphFrame } from "babylonjs-node-editor/diagram/graphFrame";
import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
import { FrameNodePort } from "babylonjs-node-editor/diagram/frameNodePort";
import { NodePort } from "babylonjs-node-editor/diagram/nodePort";
interface IPropertyTabComponentProps {
globalState: GlobalState;
}
interface IPropertyTabComponentState {
currentNode: Nullable;
currentFrame: Nullable;
currentFrameNodePort: Nullable;
currentNodePort: Nullable;
}
export class PropertyTabComponent extends React.Component {
private _onBuiltObserver;
private _modeSelect;
constructor(props: IPropertyTabComponentProps);
componentDidMount(): void;
componentWillUnmount(): void;
processInputBlockUpdate(ib: InputBlock): void;
renderInputBlock(block: InputBlock): JSX.Element | null;
load(file: File): void;
loadFrame(file: File): void;
save(): void;
customSave(): void;
saveToSnippetServer(): void;
loadFromSnippet(): void;
changeMode(value: any, force?: boolean, loadDefault?: boolean): boolean;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/portal" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IPortalProps {
globalState: GlobalState;
}
export class Portal extends React.Component {
render(): React.ReactPortal;
}
}
declare module "babylonjs-node-editor/sharedComponents/messageDialog" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IMessageDialogComponentProps {
globalState: GlobalState;
}
export class MessageDialogComponent extends React.Component {
constructor(props: IMessageDialogComponentProps);
render(): JSX.Element | null;
}
}
declare module "babylonjs-node-editor/components/preview/previewManager" {
import { GlobalState } from "babylonjs-node-editor/globalState";
export class PreviewManager {
private _nodeMaterial;
private _onBuildObserver;
private _onPreviewCommandActivatedObserver;
private _onAnimationCommandActivatedObserver;
private _onUpdateRequiredObserver;
private _onPreviewBackgroundChangedObserver;
private _onBackFaceCullingChangedObserver;
private _onDepthPrePassChangedObserver;
private _onLightUpdatedObserver;
private _engine;
private _scene;
private _meshes;
private _camera;
private _material;
private _globalState;
private _currentType;
private _lightParent;
private _postprocess;
private _particleSystem;
constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
private _handleAnimations;
private _prepareLights;
private _prepareScene;
private _refreshPreviewMesh;
private _loadParticleSystem;
private _forceCompilationAsync;
private _updatePreview;
dispose(): void;
}
}
declare module "babylonjs-node-editor/components/preview/previewMeshControlComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { PreviewType } from "babylonjs-node-editor/components/preview/previewType";
interface IPreviewMeshControlComponent {
globalState: GlobalState;
togglePreviewAreaComponent: () => void;
}
export class PreviewMeshControlComponent extends React.Component {
private colorInputRef;
private filePickerRef;
private _onResetRequiredObserver;
constructor(props: IPreviewMeshControlComponent);
componentWillUnmount(): void;
changeMeshType(newOne: PreviewType): void;
useCustomMesh(evt: any): void;
onPopUp(): void;
changeAnimation(): void;
changeBackground(value: string): void;
changeBackgroundClick(): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/components/preview/previewAreaComponent" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
interface IPreviewAreaComponentProps {
globalState: GlobalState;
width: number;
}
export class PreviewAreaComponent extends React.Component {
private _onIsLoadingChangedObserver;
private _onResetRequiredObserver;
constructor(props: IPreviewAreaComponentProps);
componentWillUnmount(): void;
changeBackFaceCulling(value: boolean): void;
changeDepthPrePass(value: boolean): void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/graphEditor" {
import * as React from "react";
import { GlobalState } from "babylonjs-node-editor/globalState";
import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
import { Nullable } from 'babylonjs/types';
import { IEditorData } from "babylonjs-node-editor/nodeLocationInfo";
import { GraphNode } from "babylonjs-node-editor/diagram/graphNode";
import { IInspectorOptions } from "babylonjs/Debug/debugLayer";
interface IGraphEditorProps {
globalState: GlobalState;
}
interface IGraphEditorState {
showPreviewPopUp: boolean;
}
interface IInternalPreviewAreaOptions extends IInspectorOptions {
popup: boolean;
original: boolean;
explorerWidth?: string;
inspectorWidth?: string;
embedHostWidth?: string;
}
export class GraphEditor extends React.Component {
private readonly NodeWidth;
private _graphCanvas;
private _startX;
private _moveInProgress;
private _leftWidth;
private _rightWidth;
private _blocks;
private _previewManager;
private _copiedNodes;
private _copiedFrame;
private _mouseLocationX;
private _mouseLocationY;
private _onWidgetKeyUpPointer;
private _previewHost;
private _popUpWindow;
/**
* Creates a node and recursivly creates its parent nodes from it's input
* @param nodeMaterialBlock
*/
createNodeFromObject(block: NodeMaterialBlock, recursion?: boolean): GraphNode;
addValueNode(type: string): GraphNode;
componentDidMount(): void;
componentWillUnmount(): void;
constructor(props: IGraphEditorProps);
reconnectNewNodes(nodeIndex: number, newNodes: GraphNode[], sourceNodes: GraphNode[], done: boolean[]): void;
pasteSelection(copiedNodes: GraphNode[], currentX: number, currentY: number, selectNew?: boolean): GraphNode[] | undefined;
zoomToFit(): void;
buildMaterial(): void;
build(): void;
loadGraph(): void;
showWaitScreen(): void;
hideWaitScreen(): void;
reOrganize(editorData?: Nullable, isImportingAFrame?: boolean): void;
onPointerDown(evt: React.PointerEvent): void;
onPointerUp(evt: React.PointerEvent): void;
resizeColumns(evt: React.PointerEvent, forLeft?: boolean): void;
buildColumnLayout(): string;
emitNewBlock(event: React.DragEvent): void;
handlePopUp: () => void;
handleClosingPopUp: () => void;
initiatePreviewArea: (canvas?: HTMLCanvasElement) => void;
createPopUp: () => void;
createPopupWindow: (title: string, windowVariableName: string, width?: number, height?: number) => Window | null;
copyStyles: (sourceDoc: HTMLDocument, targetDoc: HTMLDocument) => void;
createPreviewMeshControlHost: (options: IInternalPreviewAreaOptions, parentControl: HTMLElement | null) => void;
createPreviewHost: (options: IInternalPreviewAreaOptions, parentControl: HTMLElement | null) => void;
fixPopUpStyles: (document: Document) => void;
render(): JSX.Element;
}
}
declare module "babylonjs-node-editor/sharedComponents/popup" {
export class Popup {
static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
private static _CopyStyles;
}
}
declare module "babylonjs-node-editor/nodeEditor" {
import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
import { Observable } from 'babylonjs/Misc/observable';
/**
* Interface used to specify creation options for the node editor
*/
export interface INodeEditorOptions {
nodeMaterial: NodeMaterial;
hostElement?: HTMLElement;
customSave?: {
label: string;
action: (data: string) => Promise;
};
customLoadObservable?: Observable;
}
/**
* Class used to create a node editor
*/
export class NodeEditor {
private static _CurrentState;
/**
* Show the node editor
* @param options defines the options to use to configure the node editor
*/
static Show(options: INodeEditorOptions): void;
}
}
declare module "babylonjs-node-editor/index" {
export * from "babylonjs-node-editor/nodeEditor";
}
declare module "babylonjs-node-editor/legacy/legacy" {
export * from "babylonjs-node-editor/index";
}
declare module "babylonjs-node-editor" {
export * from "babylonjs-node-editor/legacy/legacy";
}
///
declare module NODEEDITOR {
export class BlockTools {
static GetBlockFromString(data: string, scene: BABYLON.Scene, nodeMaterial: BABYLON.NodeMaterial): BABYLON.DesaturateBlock | BABYLON.RefractBlock | BABYLON.ReflectBlock | BABYLON.DerivativeBlock | BABYLON.Rotate2dBlock | BABYLON.NormalBlendBlock | BABYLON.WorleyNoise3DBlock | BABYLON.SimplexPerlin3DBlock | BABYLON.BonesBlock | BABYLON.InstancesBlock | BABYLON.MorphTargetsBlock | BABYLON.DiscardBlock | BABYLON.ImageProcessingBlock | BABYLON.ColorMergerBlock | BABYLON.VectorMergerBlock | BABYLON.ColorSplitterBlock | BABYLON.VectorSplitterBlock | BABYLON.TextureBlock | BABYLON.ReflectionTextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.AddBlock | BABYLON.ClampBlock | BABYLON.ScaleBlock | BABYLON.CrossBlock | BABYLON.DotBlock | BABYLON.PowBlock | BABYLON.MultiplyBlock | BABYLON.TransformBlock | BABYLON.TrigonometryBlock | BABYLON.RemapBlock | BABYLON.NormalizeBlock | BABYLON.FresnelBlock | BABYLON.LerpBlock | BABYLON.NLerpBlock | BABYLON.DivideBlock | BABYLON.SubtractBlock | BABYLON.ModBlock | BABYLON.StepBlock | BABYLON.SmoothStepBlock | BABYLON.OneMinusBlock | BABYLON.ReciprocalBlock | BABYLON.ViewDirectionBlock | BABYLON.LightInformationBlock | BABYLON.MaxBlock | BABYLON.MinBlock | BABYLON.LengthBlock | BABYLON.DistanceBlock | BABYLON.NegateBlock | BABYLON.PerturbNormalBlock | BABYLON.RandomNumberBlock | BABYLON.ReplaceColorBlock | BABYLON.PosterizeBlock | BABYLON.ArcTan2Block | BABYLON.GradientBlock | BABYLON.FrontFacingBlock | BABYLON.WaveBlock | BABYLON.InputBlock | BABYLON.PBRMetallicRoughnessBlock | BABYLON.SheenBlock | BABYLON.AmbientOcclusionBlock | BABYLON.ReflectivityBlock | BABYLON.AnisotropyBlock | BABYLON.ReflectionBlock | BABYLON.ClearCoatBlock | BABYLON.RefractionBlock | BABYLON.SubSurfaceBlock | BABYLON.CurrentScreenBlock | BABYLON.ParticleTextureBlock | BABYLON.ParticleRampGradientBlock | BABYLON.ParticleBlendMultiplyBlock | BABYLON.FragCoordBlock | BABYLON.ScreenSizeBlock | null;
static GetColorFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
static GetConnectionNodeTypeFromString(type: string): BABYLON.NodeMaterialBlockConnectionPointTypes.Float | BABYLON.NodeMaterialBlockConnectionPointTypes.Vector2 | BABYLON.NodeMaterialBlockConnectionPointTypes.Vector3 | BABYLON.NodeMaterialBlockConnectionPointTypes.Vector4 | BABYLON.NodeMaterialBlockConnectionPointTypes.Color3 | BABYLON.NodeMaterialBlockConnectionPointTypes.Color4 | BABYLON.NodeMaterialBlockConnectionPointTypes.Matrix | BABYLON.NodeMaterialBlockConnectionPointTypes.AutoDetect;
static GetStringFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
}
}
declare module NODEEDITOR {
interface ILogComponentProps {
globalState: GlobalState;
}
export class LogEntry {
message: string;
isError: boolean;
constructor(message: string, isError: boolean);
}
export class LogComponent extends React.Component {
constructor(props: ILogComponentProps);
componentDidMount(): void;
componentDidUpdate(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export enum PreviewType {
Sphere = 0,
Box = 1,
Torus = 2,
Cylinder = 3,
Plane = 4,
ShaderBall = 5,
DefaultParticleSystem = 6,
Bubbles = 7,
Smoke = 8,
Rain = 9,
Explosion = 10,
Fire = 11,
Custom = 12
}
}
declare module NODEEDITOR {
export interface IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
}
}
declare module NODEEDITOR {
export interface INodeLocationInfo {
blockId: number;
x: number;
y: number;
}
export interface IFrameData {
x: number;
y: number;
width: number;
height: number;
color: number[];
name: string;
isCollapsed: boolean;
blocks: number[];
comments: string;
}
export interface IEditorData {
locations: INodeLocationInfo[];
x: number;
y: number;
zoom: number;
frames?: IFrameData[];
map?: {
[key: number]: number;
};
}
}
declare module NODEEDITOR {
export class SerializationTools {
static UpdateLocations(material: BABYLON.NodeMaterial, globalState: GlobalState, frame?: BABYLON.Nullable): void;
static Serialize(material: BABYLON.NodeMaterial, globalState: GlobalState, frame?: BABYLON.Nullable): string;
static Deserialize(serializationObject: any, globalState: GlobalState): void;
static AddFrameToMaterial(serializationObject: any, globalState: GlobalState, currentMaterial: BABYLON.NodeMaterial): void;
}
}
declare module NODEEDITOR {
export class StringTools {
private static _SaveAs;
private static _Click;
/**
* Gets the base math type of node material block connection point.
* @param type Type to parse.
*/
static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
/**
* Download a string into a file that will be saved locally by the browser
* @param content defines the string to download locally as a file
*/
static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
}
}
declare module NODEEDITOR {
export class FrameNodePort extends NodePort {
connectionPoint: BABYLON.NodeMaterialConnectionPoint;
node: GraphNode;
private _parentFrameId;
private _isInput;
private _framePortPosition;
private _framePortId;
private _onFramePortPositionChangedObservable;
get parentFrameId(): number;
get onFramePortPositionChangedObservable(): BABYLON.Observable;
get isInput(): boolean;
get framePortId(): number;
get framePortPosition(): FramePortPosition;
set framePortPosition(position: FramePortPosition);
constructor(portContainer: HTMLElement, connectionPoint: BABYLON.NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number);
static CreateFrameNodePortElement(connectionPoint: BABYLON.NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: BABYLON.Nullable, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number): FrameNodePort;
}
}
declare module NODEEDITOR {
export enum FramePortPosition {
Top = 0,
Middle = 1,
Bottom = 2
}
export class GraphFrame {
private readonly CollapsedWidth;
private static _FrameCounter;
private static _FramePortCounter;
private _name;
private _color;
private _x;
private _y;
private _gridAlignedX;
private _gridAlignedY;
private _width;
private _height;
element: HTMLDivElement;
private _borderElement;
private _headerElement;
private _headerTextElement;
private _headerCollapseElement;
private _headerCloseElement;
private _commentsElement;
private _portContainer;
private _outputPortContainer;
private _inputPortContainer;
private _nodes;
private _ownerCanvas;
private _mouseStartPointX;
private _mouseStartPointY;
private _onSelectionChangedObserver;
private _onGraphNodeRemovalObserver;
private _onExposePortOnFrameObserver;
private _onNodeLinkDisposedObservers;
private _isCollapsed;
private _frameInPorts;
private _frameOutPorts;
private _controlledPorts;
private _id;
private _comments;
private _frameIsResizing;
private _resizingDirection;
private _minFrameHeight;
private _minFrameWidth;
private mouseXLimit;
onExpandStateChanged: BABYLON.Observable;
private readonly CloseSVG;
private readonly ExpandSVG;
private readonly CollapseSVG;
get id(): number;
get isCollapsed(): boolean;
private _createInputPort;
private _markFramePortPositions;
private _createFramePorts;
private _redrawFramePorts;
set isCollapsed(value: boolean);
get nodes(): GraphNode[];
get ports(): FrameNodePort[];
get name(): string;
set name(value: string);
get color(): BABYLON.Color3;
set color(value: BABYLON.Color3);
get x(): number;
set x(value: number);
get y(): number;
set y(value: number);
get width(): number;
set width(value: number);
get height(): number;
set height(value: number);
get comments(): string;
set comments(comments: string);
constructor(candidate: BABYLON.Nullable, canvas: GraphCanvasComponent, doNotCaptureNodes?: boolean);
refresh(): void;
addNode(node: GraphNode): void;
removeNode(node: GraphNode): void;
syncNode(node: GraphNode): void;
cleanAccumulation(): void;
private _onDown;
move(newX: number, newY: number, align?: boolean): void;
private _onUp;
private _moveFrame;
private _onMove;
moveFramePortUp(nodePort: FrameNodePort): void;
private _movePortUp;
moveFramePortDown(nodePort: FrameNodePort): void;
private _movePortDown;
private initResizing;
private cleanUpResizing;
private updateMinHeightWithComments;
private _isResizingTop;
private _isResizingRight;
private _isResizingBottom;
private _isResizingLeft;
private _onRightHandlePointerDown;
private _onRightHandlePointerMove;
private _moveRightHandle;
private _onRightHandlePointerUp;
private _onBottomHandlePointerDown;
private _onBottomHandlePointerMove;
private _moveBottomHandle;
private _onBottomHandlePointerUp;
private _onLeftHandlePointerDown;
private _onLeftHandlePointerMove;
private _moveLeftHandle;
private _onLeftHandlePointerUp;
private _onTopHandlePointerDown;
private _onTopHandlePointerMove;
private _moveTopHandle;
private _onTopHandlePointerUp;
private _onTopRightHandlePointerDown;
private _onTopRightHandlePointerMove;
private _moveTopRightHandle;
private _onTopRightHandlePointerUp;
private _onBottomRightHandlePointerDown;
private _onBottomRightHandlePointerMove;
private _moveBottomRightHandle;
private _onBottomRightHandlePointerUp;
private _onBottomLeftHandlePointerDown;
private _onBottomLeftHandlePointerMove;
private _moveBottomLeftHandle;
private _onBottomLeftHandlePointerUp;
private _onTopLeftHandlePointerDown;
private _onTopLeftHandlePointerMove;
private _moveTopLeftHandle;
private _onTopLeftHandlePointerUp;
private _expandLeft;
private _expandTop;
private _expandRight;
private _expandBottom;
dispose(): void;
serialize(): IFrameData;
export(): void;
static Parse(serializationData: IFrameData, canvas: GraphCanvasComponent, map?: {
[key: number]: number;
}): GraphFrame;
}
}
declare module NODEEDITOR {
export class NodePort {
connectionPoint: BABYLON.NodeMaterialConnectionPoint;
node: GraphNode;
protected _element: HTMLDivElement;
protected _img: HTMLImageElement;
protected _globalState: GlobalState;
protected _portLabelElement: Element;
protected _onCandidateLinkMovedObserver: BABYLON.Nullable>>;
protected _onSelectionChangedObserver: BABYLON.Nullable>>;
protected _exposedOnFrame: boolean;
delegatedPort: BABYLON.Nullable;
get element(): HTMLDivElement;
get portName(): string;
set portName(newName: string);
get disabled(): boolean;
hasLabel(): boolean;
get exposedOnFrame(): boolean;
set exposedOnFrame(value: boolean);
private _isConnectedToNodeOutsideOfFrame;
refresh(): void;
constructor(portContainer: HTMLElement, connectionPoint: BABYLON.NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState);
dispose(): void;
static CreatePortElement(connectionPoint: BABYLON.NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: BABYLON.Nullable, globalState: GlobalState): NodePort;
}
}
declare module NODEEDITOR {
export class NodeLink {
private _graphCanvas;
private _portA;
private _portB?;
private _nodeA;
private _nodeB?;
private _path;
private _selectionPath;
private _onSelectionChangedObserver;
private _isVisible;
onDisposedObservable: BABYLON.Observable;
get isVisible(): boolean;
set isVisible(value: boolean);
get portA(): FrameNodePort | NodePort;
get portB(): FrameNodePort | NodePort | undefined;
get nodeA(): GraphNode;
get nodeB(): GraphNode | undefined;
update(endX?: number, endY?: number, straight?: boolean): void;
constructor(graphCanvas: GraphCanvasComponent, portA: NodePort, nodeA: GraphNode, portB?: NodePort, nodeB?: GraphNode);
onClick(): void;
dispose(): void;
}
}
declare module NODEEDITOR {
export interface IGraphCanvasComponentProps {
globalState: GlobalState;
}
export type FramePortData = {
frame: GraphFrame;
port: FrameNodePort;
};
export const isFramePortData: (variableToCheck: any) => variableToCheck is FramePortData;
export class GraphCanvasComponent extends React.Component {
private readonly MinZoom;
private readonly MaxZoom;
private _hostCanvas;
private _graphCanvas;
private _selectionContainer;
private _frameContainer;
private _svgCanvas;
private _rootContainer;
private _nodes;
private _links;
private _mouseStartPointX;
private _mouseStartPointY;
private _dropPointX;
private _dropPointY;
private _selectionStartX;
private _selectionStartY;
private _candidateLinkedHasMoved;
private _x;
private _y;
private _zoom;
private _selectedNodes;
private _selectedLink;
private _selectedPort;
private _candidateLink;
private _candidatePort;
private _gridSize;
private _selectionBox;
private _selectedFrame;
private _frameCandidate;
private _frames;
private _altKeyIsPressed;
private _ctrlKeyIsPressed;
private _oldY;
_frameIsMoving: boolean;
_isLoading: boolean;
get gridSize(): number;
set gridSize(value: number);
get globalState(): GlobalState;
get nodes(): GraphNode[];
get links(): NodeLink[];
get frames(): GraphFrame[];
get zoom(): number;
set zoom(value: number);
get x(): number;
set x(value: number);
get y(): number;
set y(value: number);
get selectedNodes(): GraphNode[];
get selectedLink(): BABYLON.Nullable;
get selectedFrame(): BABYLON.Nullable;
get selectedPort(): BABYLON.Nullable;
get canvasContainer(): HTMLDivElement;
get hostCanvas(): HTMLDivElement;
get svgCanvas(): HTMLElement;
get selectionContainer(): HTMLDivElement;
get frameContainer(): HTMLDivElement;
constructor(props: IGraphCanvasComponentProps);
getGridPosition(position: number, useCeil?: boolean): number;
getGridPositionCeil(position: number): number;
updateTransform(): void;
onKeyUp(): void;
findNodeFromBlock(block: BABYLON.NodeMaterialBlock): GraphNode;
reset(): void;
connectPorts(pointA: BABYLON.NodeMaterialConnectionPoint, pointB: BABYLON.NodeMaterialConnectionPoint): void;
removeLink(link: NodeLink): void;
appendBlock(block: BABYLON.NodeMaterialBlock): GraphNode;
distributeGraph(): void;
componentDidMount(): void;
onMove(evt: React.PointerEvent): void;
onDown(evt: React.PointerEvent): void;
onUp(evt: React.PointerEvent): void;
onWheel(evt: React.WheelEvent): void;
zoomToFit(): void;
processCandidatePort(): void;
processEditorData(editorData: IEditorData): void;
addFrame(frameData: IFrameData): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class PropertyChangedEvent {
object: any;
property: string;
value: any;
initialValue: any;
}
}
declare module NODEEDITOR {
interface IFloatLineComponentProps {
label: string;
target: any;
propertyName: string;
onChange?: (newValue: number) => void;
isInteger?: boolean;
onPropertyChangedObservable?: BABYLON.Observable;
additionalClass?: string;
step?: string;
digits?: number;
globalState: GlobalState;
}
export class FloatLineComponent extends React.Component {
private _localChange;
private _store;
constructor(props: IFloatLineComponentProps);
shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
value: string;
}): boolean;
raiseOnPropertyChanged(newValue: number, previousValue: number): void;
updateValue(valueString: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IFloatPropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class FloatPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface ISliderLineComponentProps {
label: string;
target?: any;
propertyName?: string;
minimum: number;
maximum: number;
step: number;
directValue?: number;
useEuler?: boolean;
onChange?: (value: number) => void;
onInput?: (value: number) => void;
onPropertyChangedObservable?: BABYLON.Observable;
decimalCount?: number;
}
export class SliderLineComponent extends React.Component {
private _localChange;
constructor(props: ISliderLineComponentProps);
shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
value: number;
}): boolean;
onChange(newValueString: any): void;
onInput(newValueString: any): void;
prepareDataToRead(value: number): number;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface INumericInputComponentProps {
label: string;
value: number;
step?: number;
onChange: (value: number) => void;
globalState: GlobalState;
}
export class NumericInputComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: INumericInputComponentProps);
shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
value: string;
}): boolean;
updateValue(evt: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector2LineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newvalue: BABYLON.Vector2) => void;
onPropertyChangedObservable?: BABYLON.Observable;
globalState: GlobalState;
}
export class Vector2LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector2LineComponentProps);
shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
isExpanded: boolean;
value: BABYLON.Vector2;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector2PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Vector2PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IColorPickerComponentProps {
value: BABYLON.Color4 | BABYLON.Color3;
onColorChanged: (newOne: string) => void;
globalState: GlobalState;
disableAlpha?: boolean;
}
interface IColorPickerComponentState {
pickerEnabled: boolean;
color: {
r: number;
g: number;
b: number;
a?: number;
};
hex: string;
}
export class ColorPickerLineComponent extends React.Component {
private _floatRef;
private _floatHostRef;
constructor(props: IColorPickerComponentProps);
syncPositions(): void;
shouldComponentUpdate(nextProps: IColorPickerComponentProps, nextState: IColorPickerComponentState): boolean;
componentDidUpdate(): void;
componentDidMount(): void;
setPickerState(enabled: boolean): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IColor3LineComponentProps {
label: string;
target: any;
propertyName: string;
onPropertyChangedObservable?: BABYLON.Observable;
onChange?: () => void;
globalState: GlobalState;
}
export class Color3LineComponent extends React.Component {
private _localChange;
constructor(props: IColor3LineComponentProps);
shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
color: BABYLON.Color3;
}): boolean;
onChange(newValue: string): void;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
updateStateR(value: number): void;
updateStateG(value: number): void;
updateStateB(value: number): void;
copyToClipboard(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IColor3PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Color3PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector3LineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newvalue: BABYLON.Vector3) => void;
onPropertyChangedObservable?: BABYLON.Observable;
globalState: GlobalState;
}
export class Vector3LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector3LineComponentProps);
shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
isExpanded: boolean;
value: BABYLON.Vector3;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
updateVector3(): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
updateStateZ(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector3PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Vector3PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector4LineComponentProps {
label: string;
target?: any;
propertyName?: string;
value?: BABYLON.Vector4;
step?: number;
onChange?: (newvalue: BABYLON.Vector4) => void;
onPropertyChangedObservable?: BABYLON.Observable;
globalState: GlobalState;
}
export class Vector4LineComponent extends React.Component {
static defaultProps: {
step: number;
};
private _localChange;
constructor(props: IVector4LineComponentProps);
shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: {
isExpanded: boolean;
value: BABYLON.Vector4;
}): boolean;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Vector4): void;
updateVector4(): void;
updateStateX(value: number): void;
updateStateY(value: number): void;
updateStateZ(value: number): void;
updateStateW(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IVector4PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Vector4PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
class ListLineOption {
label: string;
value: number | string;
}
interface IOptionsLineComponentProps {
label: string;
target: any;
className?: string;
propertyName?: string;
options: ListLineOption[];
noDirectUpdate?: boolean;
onSelect?: (value: number | string) => void;
onPropertyChangedObservable?: BABYLON.Observable;
valuesAreStrings?: boolean;
defaultIfNull?: number;
getSelection?: (target: any) => number;
}
export class OptionsLineComponent extends React.Component {
private _localChange;
private _getValue;
constructor(props: IOptionsLineComponentProps);
setValue(value: string | number): void;
shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
value: number;
}): boolean;
raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
updateValue(valueString: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IMatrixLineComponentProps {
label: string;
target: any;
propertyName: string;
step?: number;
onChange?: (newValue: BABYLON.Matrix) => void;
onModeChange?: (mode: number) => void;
onPropertyChangedObservable?: BABYLON.Observable;
mode?: number;
globalState: GlobalState;
}
export class MatrixLineComponent extends React.Component {
private _localChange;
constructor(props: IMatrixLineComponentProps);
shouldComponentUpdate(nextProps: IMatrixLineComponentProps, nextState: {
value: BABYLON.Matrix;
mode: number;
angle: number;
}): boolean;
raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
updateMatrix(): void;
updateRow(value: BABYLON.Vector4, row: number): void;
updateBasedOnMode(value: number): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IMatrixPropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class MatrixPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface ILineContainerComponentProps {
title: string;
children: any[] | any;
closed?: boolean;
}
export class LineContainerComponent extends React.Component {
constructor(props: ILineContainerComponentProps);
switchExpandedState(): void;
renderHeader(): JSX.Element;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IPropertyComponentProps {
globalState: GlobalState;
block: BABYLON.NodeMaterialBlock;
}
}
declare module NODEEDITOR {
interface ITextInputLineComponentProps {
label: string;
globalState: GlobalState;
target?: any;
propertyName?: string;
value?: string;
onChange?: (value: string) => void;
onPropertyChangedObservable?: BABYLON.Observable;
}
export class TextInputLineComponent extends React.Component {
private _localChange;
constructor(props: ITextInputLineComponentProps);
shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
value: string;
}): boolean;
raiseOnPropertyChanged(newValue: string, previousValue: string): void;
updateValue(value: string, raisePropertyChanged: boolean): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface ITextLineComponentProps {
label: string;
value: string;
color?: string;
underline?: boolean;
onLink?: () => void;
}
export class TextLineComponent extends React.Component {
constructor(props: ITextLineComponentProps);
onLink(): void;
renderContent(): JSX.Element;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface ICheckBoxLineComponentProps {
label: string;
target?: any;
propertyName?: string;
isSelected?: () => boolean;
onSelect?: (value: boolean) => void;
onValueChanged?: () => void;
onPropertyChangedObservable?: BABYLON.Observable;
disabled?: boolean;
}
export class CheckBoxLineComponent extends React.Component {
private static _UniqueIdSeed;
private _uniqueId;
private _localChange;
constructor(props: ICheckBoxLineComponentProps);
shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
isSelected: boolean;
isDisabled: boolean;
}): boolean;
onChange(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class GenericPropertyComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
export class GeneralPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
export class GenericPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(notifiers?: {
"rebuild"?: boolean;
"update"?: boolean;
}): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IColor4LineComponentProps {
label: string;
target: any;
propertyName: string;
onPropertyChangedObservable?: BABYLON.Observable;
onChange?: () => void;
globalState: GlobalState;
}
export class Color4LineComponent extends React.Component {
private _localChange;
constructor(props: IColor4LineComponentProps);
shouldComponentUpdate(nextProps: IColor4LineComponentProps, nextState: {
color: BABYLON.Color4;
}): boolean;
onChange(newValue: string): void;
switchExpandState(): void;
raiseOnPropertyChanged(previousValue: BABYLON.Color4): void;
updateStateR(value: number): void;
updateStateG(value: number): void;
updateStateB(value: number): void;
updateStateA(value: number): void;
copyToClipboard(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IColor4PropertyTabComponentProps {
globalState: GlobalState;
inputBlock: BABYLON.InputBlock;
}
export class Color4PropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class InputPropertyTabComponent extends React.Component {
private onValueChangedObserver;
constructor(props: IPropertyComponentProps);
componentDidMount(): void;
componentWillUnmount(): void;
renderValue(globalState: GlobalState): JSX.Element | null;
setDefaultValue(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TransformPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IGradientStepComponentProps {
globalState: GlobalState;
step: BABYLON.GradientBlockColorStep;
lineIndex: number;
onDelete: () => void;
onUpdateStep: () => void;
onCheckForReOrder: () => void;
}
export class GradientStepComponent extends React.Component {
constructor(props: IGradientStepComponentProps);
updateColor(color: string): void;
updateStep(gradient: number): void;
onPointerUp(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IButtonLineComponentProps {
label: string;
onClick: () => void;
}
export class ButtonLineComponent extends React.Component {
constructor(props: IButtonLineComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class GradientPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
forceRebuild(): void;
deleteStep(step: BABYLON.GradientBlockColorStep): void;
addNewStep(): void;
checkForReOrder(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class LightPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class LightInformationPropertyTabComponent extends React.Component {
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IFileButtonLineComponentProps {
label: string;
onClick: (file: File) => void;
accept: string;
uploadName?: string;
}
export class FileButtonLineComponent extends React.Component {
private uploadRef;
constructor(props: IFileButtonLineComponentProps);
onChange(evt: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
type ReflectionTexture = BABYLON.ReflectionTextureBlock | BABYLON.ReflectionBlock | BABYLON.RefractionBlock;
type AnyTexture = BABYLON.TextureBlock | ReflectionTexture | BABYLON.CurrentScreenBlock | BABYLON.ParticleTextureBlock;
export class TexturePropertyTabComponent extends React.Component {
get textureBlock(): AnyTexture;
constructor(props: IPropertyComponentProps);
UNSAFE_componentWillUpdate(nextProps: IPropertyComponentProps, nextState: {
isEmbedded: boolean;
loadAsCubeTexture: boolean;
}): void;
private _generateRandomForCache;
updateAfterTextureLoad(): void;
removeTexture(): void;
_prepareTexture(): void;
/**
* Replaces the texture of the node
* @param file the file of the texture to use
*/
replaceTexture(file: File): void;
replaceTextureWithUrl(url: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TrigonometryPropertyTabComponent extends React.Component {
constructor(props: IPropertyComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class PropertyLedger {
static RegisteredControls: {
[key: string]: React.ComponentClass;
};
}
}
declare module NODEEDITOR {
export class InputDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): "" | "constant" | "inspector";
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class OutputDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class ClampDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class GradientDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class RemapDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
private _extractInputValue;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class TrigonometryDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
interface ITextureLineComponentProps {
texture: BABYLON.BaseTexture;
width: number;
height: number;
globalState?: any;
hideChannelSelect?: boolean;
}
export interface ITextureLineComponentState {
displayRed: boolean;
displayGreen: boolean;
displayBlue: boolean;
displayAlpha: boolean;
face: number;
}
export class TextureLineComponent extends React.Component {
private canvasRef;
constructor(props: ITextureLineComponentProps);
shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
displayRed: boolean;
displayGreen: boolean;
displayBlue: boolean;
displayAlpha: boolean;
face: number;
}): boolean;
componentDidMount(): void;
componentDidUpdate(): void;
updatePreview(): void;
static UpdatePreview(previewCanvas: HTMLCanvasElement, texture: BABYLON.BaseTexture, width: number, options: ITextureLineComponentState, onReady?: () => void, globalState?: any): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class TextureDisplayManager implements IDisplayManager {
private _previewCanvas;
private _previewImage;
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class DiscardDisplayManager implements IDisplayManager {
getHeaderClass(block: BABYLON.NodeMaterialBlock): string;
shouldDisplayPortLabels(block: BABYLON.NodeMaterialBlock): boolean;
getHeaderText(block: BABYLON.NodeMaterialBlock): string;
getBackgroundColor(block: BABYLON.NodeMaterialBlock): string;
updatePreviewContent(block: BABYLON.NodeMaterialBlock, contentArea: HTMLDivElement): void;
}
}
declare module NODEEDITOR {
export class DisplayLedger {
static RegisteredControls: {
[key: string]: any;
};
}
}
declare module NODEEDITOR {
export class GraphNode {
block: BABYLON.NodeMaterialBlock;
private _visual;
private _header;
private _connections;
private _inputsContainer;
private _outputsContainer;
private _content;
private _comments;
private _inputPorts;
private _outputPorts;
private _links;
private _x;
private _y;
private _gridAlignedX;
private _gridAlignedY;
private _mouseStartPointX;
private _mouseStartPointY;
private _globalState;
private _onSelectionChangedObserver;
private _onSelectionBoxMovedObserver;
private _onFrameCreatedObserver;
private _onUpdateRequiredObserver;
private _ownerCanvas;
private _isSelected;
private _displayManager;
private _isVisible;
private _enclosingFrameId;
get isVisible(): boolean;
set isVisible(value: boolean);
private _upateNodePortNames;
get outputPorts(): NodePort[];
get inputPorts(): NodePort[];
get links(): NodeLink[];
get gridAlignedX(): number;
get gridAlignedY(): number;
get x(): number;
set x(value: number);
get y(): number;
set y(value: number);
get width(): number;
get height(): number;
get id(): number;
get name(): string;
get isSelected(): boolean;
get enclosingFrameId(): number;
set enclosingFrameId(value: number);
set isSelected(value: boolean);
constructor(block: BABYLON.NodeMaterialBlock, globalState: GlobalState);
isOverlappingFrame(frame: GraphFrame): boolean;
getPortForConnectionPoint(point: BABYLON.NodeMaterialConnectionPoint): BABYLON.Nullable;
getLinksForConnectionPoint(point: BABYLON.NodeMaterialConnectionPoint): NodeLink[];
private _refreshFrames;
_refreshLinks(): void;
refresh(): void;
private _onDown;
cleanAccumulation(useCeil?: boolean): void;
private _onUp;
private _onMove;
renderProperties(): BABYLON.Nullable;
appendVisual(root: HTMLDivElement, owner: GraphCanvasComponent): void;
dispose(): void;
}
}
declare module NODEEDITOR {
export class GlobalState {
nodeMaterial: BABYLON.NodeMaterial;
hostElement: HTMLElement;
hostDocument: HTMLDocument;
hostWindow: Window;
onSelectionChangedObservable: BABYLON.Observable>;
onRebuildRequiredObservable: BABYLON.Observable;
onBuiltObservable: BABYLON.Observable;
onResetRequiredObservable: BABYLON.Observable;
onUpdateRequiredObservable: BABYLON.Observable;
onZoomToFitRequiredObservable: BABYLON.Observable;
onReOrganizedRequiredObservable: BABYLON.Observable;
onLogRequiredObservable: BABYLON.Observable;
onErrorMessageDialogRequiredObservable: BABYLON.Observable;
onIsLoadingChanged: BABYLON.Observable;
onPreviewCommandActivated: BABYLON.Observable;
onLightUpdated: BABYLON.Observable;
onPreviewBackgroundChanged: BABYLON.Observable;
onBackFaceCullingChanged: BABYLON.Observable;
onDepthPrePassChanged: BABYLON.Observable;
onAnimationCommandActivated: BABYLON.Observable;
onCandidateLinkMoved: BABYLON.Observable>;
onSelectionBoxMoved: BABYLON.Observable;
onFrameCreatedObservable: BABYLON.Observable;
onCandidatePortSelectedObservable: BABYLON.Observable>;
onImportFrameObservable: BABYLON.Observable;
onGraphNodeRemovalObservable: BABYLON.Observable;
onGetNodeFromBlock: (block: BABYLON.NodeMaterialBlock) => GraphNode;
onGridSizeChanged: BABYLON.Observable;
onExposePortOnFrameObservable: BABYLON.Observable;
previewType: PreviewType;
previewFile: File;
listOfCustomPreviewFiles: File[];
rotatePreview: boolean;
backgroundColor: BABYLON.Color4;
backFaceCulling: boolean;
depthPrePass: boolean;
blockKeyboardEvents: boolean;
hemisphericLight: boolean;
directionalLight0: boolean;
directionalLight1: boolean;
controlCamera: boolean;
storeEditorData: (serializationObject: any, frame?: BABYLON.Nullable) => void;
_mode: BABYLON.NodeMaterialModes;
/** Gets the mode */
get mode(): BABYLON.NodeMaterialModes;
/** Sets the mode */
set mode(m: BABYLON.NodeMaterialModes);
customSave?: {
label: string;
action: (data: string) => Promise;
};
constructor();
}
}
declare module NODEEDITOR {
export interface IButtonLineComponentProps {
data: string;
tooltip: string;
}
export class DraggableLineComponent extends React.Component {
constructor(props: IButtonLineComponentProps);
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface INodeListComponentProps {
globalState: GlobalState;
}
export class NodeListComponent extends React.Component {
private _onResetRequiredObserver;
private static _Tooltips;
constructor(props: INodeListComponentProps);
componentWillUnmount(): void;
filterContent(filter: string): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IFramePropertyTabComponentProps {
globalState: GlobalState;
frame: GraphFrame;
}
export class FramePropertyTabComponent extends React.Component {
private onFrameExpandStateChangedObserver;
constructor(props: IFramePropertyTabComponentProps);
componentDidMount(): void;
componentWillUnmount(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IFrameNodePortPropertyTabComponentProps {
globalState: GlobalState;
frameNodePort: FrameNodePort;
frame: GraphFrame;
}
export class FrameNodePortPropertyTabComponent extends React.Component {
private _onFramePortPositionChangedObserver;
private _onSelectionChangedObserver;
constructor(props: IFrameNodePortPropertyTabComponentProps);
componentWillUnmount(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export interface IFrameNodePortPropertyTabComponentProps {
globalState: GlobalState;
nodePort: NodePort;
}
export class NodePortPropertyTabComponent extends React.Component {
private _onSelectionChangedObserver;
constructor(props: IFrameNodePortPropertyTabComponentProps);
componentWillUnmount(): void;
toggleExposeOnFrame(value: boolean): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IPropertyTabComponentProps {
globalState: GlobalState;
}
interface IPropertyTabComponentState {
currentNode: BABYLON.Nullable;
currentFrame: BABYLON.Nullable;
currentFrameNodePort: BABYLON.Nullable;
currentNodePort: BABYLON.Nullable;
}
export class PropertyTabComponent extends React.Component {
private _onBuiltObserver;
private _modeSelect;
constructor(props: IPropertyTabComponentProps);
componentDidMount(): void;
componentWillUnmount(): void;
processInputBlockUpdate(ib: BABYLON.InputBlock): void;
renderInputBlock(block: BABYLON.InputBlock): JSX.Element | null;
load(file: File): void;
loadFrame(file: File): void;
save(): void;
customSave(): void;
saveToSnippetServer(): void;
loadFromSnippet(): void;
changeMode(value: any, force?: boolean, loadDefault?: boolean): boolean;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IPortalProps {
globalState: GlobalState;
}
export class Portal extends React.Component {
render(): React.ReactPortal;
}
}
declare module NODEEDITOR {
interface IMessageDialogComponentProps {
globalState: GlobalState;
}
export class MessageDialogComponent extends React.Component {
constructor(props: IMessageDialogComponentProps);
render(): JSX.Element | null;
}
}
declare module NODEEDITOR {
export class PreviewManager {
private _nodeMaterial;
private _onBuildObserver;
private _onPreviewCommandActivatedObserver;
private _onAnimationCommandActivatedObserver;
private _onUpdateRequiredObserver;
private _onPreviewBackgroundChangedObserver;
private _onBackFaceCullingChangedObserver;
private _onDepthPrePassChangedObserver;
private _onLightUpdatedObserver;
private _engine;
private _scene;
private _meshes;
private _camera;
private _material;
private _globalState;
private _currentType;
private _lightParent;
private _postprocess;
private _particleSystem;
constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
private _handleAnimations;
private _prepareLights;
private _prepareScene;
private _refreshPreviewMesh;
private _loadParticleSystem;
private _forceCompilationAsync;
private _updatePreview;
dispose(): void;
}
}
declare module NODEEDITOR {
interface IPreviewMeshControlComponent {
globalState: GlobalState;
togglePreviewAreaComponent: () => void;
}
export class PreviewMeshControlComponent extends React.Component {
private colorInputRef;
private filePickerRef;
private _onResetRequiredObserver;
constructor(props: IPreviewMeshControlComponent);
componentWillUnmount(): void;
changeMeshType(newOne: PreviewType): void;
useCustomMesh(evt: any): void;
onPopUp(): void;
changeAnimation(): void;
changeBackground(value: string): void;
changeBackgroundClick(): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IPreviewAreaComponentProps {
globalState: GlobalState;
width: number;
}
export class PreviewAreaComponent extends React.Component {
private _onIsLoadingChangedObserver;
private _onResetRequiredObserver;
constructor(props: IPreviewAreaComponentProps);
componentWillUnmount(): void;
changeBackFaceCulling(value: boolean): void;
changeDepthPrePass(value: boolean): void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
interface IGraphEditorProps {
globalState: GlobalState;
}
interface IGraphEditorState {
showPreviewPopUp: boolean;
}
interface IInternalPreviewAreaOptions extends BABYLON.IInspectorOptions {
popup: boolean;
original: boolean;
explorerWidth?: string;
inspectorWidth?: string;
embedHostWidth?: string;
}
export class GraphEditor extends React.Component {
private readonly NodeWidth;
private _graphCanvas;
private _startX;
private _moveInProgress;
private _leftWidth;
private _rightWidth;
private _blocks;
private _previewManager;
private _copiedNodes;
private _copiedFrame;
private _mouseLocationX;
private _mouseLocationY;
private _onWidgetKeyUpPointer;
private _previewHost;
private _popUpWindow;
/**
* Creates a node and recursivly creates its parent nodes from it's input
* @param nodeMaterialBlock
*/
createNodeFromObject(block: BABYLON.NodeMaterialBlock, recursion?: boolean): GraphNode;
addValueNode(type: string): GraphNode;
componentDidMount(): void;
componentWillUnmount(): void;
constructor(props: IGraphEditorProps);
reconnectNewNodes(nodeIndex: number, newNodes: GraphNode[], sourceNodes: GraphNode[], done: boolean[]): void;
pasteSelection(copiedNodes: GraphNode[], currentX: number, currentY: number, selectNew?: boolean): GraphNode[] | undefined;
zoomToFit(): void;
buildMaterial(): void;
build(): void;
loadGraph(): void;
showWaitScreen(): void;
hideWaitScreen(): void;
reOrganize(editorData?: BABYLON.Nullable, isImportingAFrame?: boolean): void;
onPointerDown(evt: React.PointerEvent): void;
onPointerUp(evt: React.PointerEvent): void;
resizeColumns(evt: React.PointerEvent, forLeft?: boolean): void;
buildColumnLayout(): string;
emitNewBlock(event: React.DragEvent): void;
handlePopUp: () => void;
handleClosingPopUp: () => void;
initiatePreviewArea: (canvas?: HTMLCanvasElement) => void;
createPopUp: () => void;
createPopupWindow: (title: string, windowVariableName: string, width?: number, height?: number) => Window | null;
copyStyles: (sourceDoc: HTMLDocument, targetDoc: HTMLDocument) => void;
createPreviewMeshControlHost: (options: IInternalPreviewAreaOptions, parentControl: HTMLElement | null) => void;
createPreviewHost: (options: IInternalPreviewAreaOptions, parentControl: HTMLElement | null) => void;
fixPopUpStyles: (document: Document) => void;
render(): JSX.Element;
}
}
declare module NODEEDITOR {
export class Popup {
static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
private static _CopyStyles;
}
}
declare module NODEEDITOR {
/**
* Interface used to specify creation options for the node editor
*/
export interface INodeEditorOptions {
nodeMaterial: BABYLON.NodeMaterial;
hostElement?: HTMLElement;
customSave?: {
label: string;
action: (data: string) => Promise;
};
customLoadObservable?: BABYLON.Observable;
}
/**
* Class used to create a node editor
*/
export class NodeEditor {
private static _CurrentState;
/**
* Show the node editor
* @param options defines the options to use to configure the node editor
*/
static Show(options: INodeEditorOptions): void;
}
}