@babylonjs/node-editor 5.0.0-rc.1 → 5.0.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -102,6 +102,7 @@ declare module "@babylonjs/node-editor/components/log/logComponent" {
102
102
  export class LogEntry {
103
103
  message: string;
104
104
  isError: boolean;
105
+ time: Date;
105
106
  constructor(message: string, isError: boolean);
106
107
  }
107
108
  export class LogComponent extends React.Component<ILogComponentProps, {
@@ -191,33 +192,6 @@ declare module "@babylonjs/node-editor/sharedUiComponents/stringTools" {
191
192
  static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
192
193
  }
193
194
  }
194
- declare module "@babylonjs/node-editor/diagram/frameNodePort" {
195
- import { NodePort } from "@babylonjs/node-editor/diagram/nodePort";
196
- import { GraphNode } from "@babylonjs/node-editor/diagram/graphNode";
197
- import { FramePortPosition } from "@babylonjs/node-editor/diagram/graphFrame";
198
- import { GlobalState } from "@babylonjs/node-editor/globalState";
199
- import { IDisplayManager } from "@babylonjs/node-editor/diagram/display/displayManager";
200
- import { Observable } from '@babylonjs/core/Misc/observable';
201
- import { Nullable } from '@babylonjs/core/types';
202
- import { NodeMaterialConnectionPoint } from '@babylonjs/core/Materials/Node/nodeMaterialBlockConnectionPoint';
203
- export class FrameNodePort extends NodePort {
204
- connectionPoint: NodeMaterialConnectionPoint;
205
- node: GraphNode;
206
- private _parentFrameId;
207
- private _isInput;
208
- private _framePortPosition;
209
- private _framePortId;
210
- private _onFramePortPositionChangedObservable;
211
- get parentFrameId(): number;
212
- get onFramePortPositionChangedObservable(): Observable<FrameNodePort>;
213
- get isInput(): boolean;
214
- get framePortId(): number;
215
- get framePortPosition(): FramePortPosition;
216
- set framePortPosition(position: FramePortPosition);
217
- constructor(portContainer: HTMLElement, connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number);
218
- static CreateFrameNodePortElement(connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: Nullable<IDisplayManager>, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number): FrameNodePort;
219
- }
220
- }
221
195
  declare module "@babylonjs/node-editor/diagram/graphFrame" {
222
196
  import { GraphNode } from "@babylonjs/node-editor/diagram/graphNode";
223
197
  import { GraphCanvasComponent } from "@babylonjs/node-editor/diagram/graphCanvas";
@@ -314,7 +288,7 @@ declare module "@babylonjs/node-editor/diagram/graphFrame" {
314
288
  private _onDown;
315
289
  move(newX: number, newY: number, align?: boolean): void;
316
290
  private _onUp;
317
- private _moveFrame;
291
+ _moveFrame(offsetX: number, offsetY: number): void;
318
292
  private _onMove;
319
293
  moveFramePortUp(nodePort: FrameNodePort): void;
320
294
  private _movePortUp;
@@ -373,18 +347,42 @@ declare module "@babylonjs/node-editor/diagram/graphFrame" {
373
347
  }): GraphFrame;
374
348
  }
375
349
  }
350
+ declare module "@babylonjs/node-editor/diagram/frameNodePort" {
351
+ import { NodePort } from "@babylonjs/node-editor/diagram/nodePort";
352
+ import { GraphNode } from "@babylonjs/node-editor/diagram/graphNode";
353
+ import { FramePortPosition } from "@babylonjs/node-editor/diagram/graphFrame";
354
+ import { GlobalState } from "@babylonjs/node-editor/globalState";
355
+ import { IDisplayManager } from "@babylonjs/node-editor/diagram/display/displayManager";
356
+ import { Observable } from '@babylonjs/core/Misc/observable';
357
+ import { Nullable } from '@babylonjs/core/types';
358
+ import { NodeMaterialConnectionPoint } from '@babylonjs/core/Materials/Node/nodeMaterialBlockConnectionPoint';
359
+ export class FrameNodePort extends NodePort {
360
+ connectionPoint: NodeMaterialConnectionPoint;
361
+ node: GraphNode;
362
+ private _parentFrameId;
363
+ private _isInput;
364
+ private _framePortPosition;
365
+ private _framePortId;
366
+ private _onFramePortPositionChangedObservable;
367
+ get parentFrameId(): number;
368
+ get onFramePortPositionChangedObservable(): Observable<FrameNodePort>;
369
+ get isInput(): boolean;
370
+ get framePortId(): number;
371
+ get framePortPosition(): FramePortPosition;
372
+ set framePortPosition(position: FramePortPosition);
373
+ constructor(portContainer: HTMLElement, connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number);
374
+ static CreateFrameNodePortElement(connectionPoint: NodeMaterialConnectionPoint, node: GraphNode, root: HTMLElement, displayManager: Nullable<IDisplayManager>, globalState: GlobalState, isInput: boolean, framePortId: number, parentFrameId: number): FrameNodePort;
375
+ }
376
+ }
376
377
  declare module "@babylonjs/node-editor/diagram/nodePort" {
377
378
  import { NodeMaterialConnectionPoint } from '@babylonjs/core/Materials/Node/nodeMaterialBlockConnectionPoint';
378
- import { GlobalState } from "@babylonjs/node-editor/globalState";
379
+ import { GlobalState, ISelectionChangedOptions } from "@babylonjs/node-editor/globalState";
379
380
  import { Nullable } from '@babylonjs/core/types';
380
381
  import { Observer } from '@babylonjs/core/Misc/observable';
381
382
  import { Vector2 } from '@babylonjs/core/Maths/math.vector';
382
383
  import { IDisplayManager } from "@babylonjs/node-editor/diagram/display/displayManager";
383
384
  import { GraphNode } from "@babylonjs/node-editor/diagram/graphNode";
384
- import { NodeLink } from "@babylonjs/node-editor/diagram/nodeLink";
385
- import { GraphFrame } from "@babylonjs/node-editor/diagram/graphFrame";
386
385
  import { FrameNodePort } from "@babylonjs/node-editor/diagram/frameNodePort";
387
- import { FramePortData } from "@babylonjs/node-editor/diagram/graphCanvas";
388
386
  export class NodePort {
389
387
  connectionPoint: NodeMaterialConnectionPoint;
390
388
  node: GraphNode;
@@ -393,7 +391,7 @@ declare module "@babylonjs/node-editor/diagram/nodePort" {
393
391
  protected _globalState: GlobalState;
394
392
  protected _portLabelElement: Element;
395
393
  protected _onCandidateLinkMovedObserver: Nullable<Observer<Nullable<Vector2>>>;
396
- protected _onSelectionChangedObserver: Nullable<Observer<Nullable<GraphFrame | GraphNode | NodeLink | NodePort | FramePortData>>>;
394
+ protected _onSelectionChangedObserver: Nullable<Observer<Nullable<ISelectionChangedOptions>>>;
397
395
  protected _exposedOnFrame: boolean;
398
396
  delegatedPort: Nullable<FrameNodePort>;
399
397
  get element(): HTMLDivElement;
@@ -437,7 +435,7 @@ declare module "@babylonjs/node-editor/diagram/nodeLink" {
437
435
  get nodeB(): GraphNode | undefined;
438
436
  update(endX?: number, endY?: number, straight?: boolean): void;
439
437
  constructor(graphCanvas: GraphCanvasComponent, portA: NodePort, nodeA: GraphNode, portB?: NodePort, nodeB?: GraphNode);
440
- onClick(): void;
438
+ onClick(evt: MouseEvent): void;
441
439
  dispose(notify?: boolean): void;
442
440
  }
443
441
  }
@@ -490,7 +488,7 @@ declare module "@babylonjs/node-editor/diagram/graphCanvas" {
490
488
  private _candidatePort;
491
489
  private _gridSize;
492
490
  private _selectionBox;
493
- private _selectedFrame;
491
+ private _selectedFrames;
494
492
  private _frameCandidate;
495
493
  private _frames;
496
494
  private _altKeyIsPressed;
@@ -512,7 +510,7 @@ declare module "@babylonjs/node-editor/diagram/graphCanvas" {
512
510
  set y(value: number);
513
511
  get selectedNodes(): GraphNode[];
514
512
  get selectedLink(): Nullable<NodeLink>;
515
- get selectedFrame(): Nullable<GraphFrame>;
513
+ get selectedFrames(): GraphFrame[];
516
514
  get selectedPort(): Nullable<NodePort>;
517
515
  get canvasContainer(): HTMLDivElement;
518
516
  get hostCanvas(): HTMLDivElement;
@@ -538,6 +536,7 @@ declare module "@babylonjs/node-editor/diagram/graphCanvas" {
538
536
  onWheel(evt: React.WheelEvent): void;
539
537
  zoomToFit(): void;
540
538
  processCandidatePort(): void;
539
+ connectNodes(nodeA: GraphNode, pointA: NodeMaterialConnectionPoint, nodeB: GraphNode, pointB: NodeMaterialConnectionPoint): void;
541
540
  processEditorData(editorData: IEditorData): void;
542
541
  addFrame(frameData: IFrameData): void;
543
542
  render(): JSX.Element;
@@ -822,21 +821,16 @@ declare module "@babylonjs/node-editor/sharedComponents/color3LineComponent" {
822
821
  onChange?: () => void;
823
822
  globalState: GlobalState;
824
823
  }
825
- export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
824
+ interface IColor3LineComponentState {
826
825
  isExpanded: boolean;
827
- color: Color3 | Color4;
828
- }> {
829
- private _localChange;
826
+ }
827
+ export class Color3LineComponent extends React.Component<IColor3LineComponentProps, IColor3LineComponentState> {
830
828
  constructor(props: IColor3LineComponentProps);
831
- shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
832
- color: Color3 | Color4;
833
- }): boolean;
834
829
  onChange(newValue: string): void;
835
830
  switchExpandState(): void;
836
- raiseOnPropertyChanged(previousValue: Color3 | Color4): void;
837
- updateStateR(value: number): void;
838
- updateStateG(value: number): void;
839
- updateStateB(value: number): void;
831
+ updateColor(newValue: Color3 | Color4): void;
832
+ modifyColor(modifier: (previous: Color3 | Color4) => void): void;
833
+ getCurrentColor(): Color3 | Color4;
840
834
  copyToClipboard(): void;
841
835
  render(): JSX.Element;
842
836
  }
@@ -1174,20 +1168,13 @@ declare module "@babylonjs/node-editor/sharedComponents/color4LineComponent" {
1174
1168
  }
1175
1169
  export class Color4LineComponent extends React.Component<IColor4LineComponentProps, {
1176
1170
  isExpanded: boolean;
1177
- color: Color4;
1178
1171
  }> {
1179
- private _localChange;
1180
1172
  constructor(props: IColor4LineComponentProps);
1181
- shouldComponentUpdate(nextProps: IColor4LineComponentProps, nextState: {
1182
- color: Color4;
1183
- }): boolean;
1184
1173
  onChange(newValue: string): void;
1185
1174
  switchExpandState(): void;
1186
- raiseOnPropertyChanged(previousValue: Color4): void;
1187
- updateStateR(value: number): void;
1188
- updateStateG(value: number): void;
1189
- updateStateB(value: number): void;
1190
- updateStateA(value: number): void;
1175
+ updateColor(newValue: Color4): void;
1176
+ modifyColor(modifier: (previous: Color4) => void): void;
1177
+ getCurrentColor(): Color4;
1191
1178
  copyToClipboard(): void;
1192
1179
  render(): JSX.Element;
1193
1180
  }
@@ -1680,12 +1667,17 @@ declare module "@babylonjs/node-editor/globalState" {
1680
1667
  import { FrameNodePort } from "@babylonjs/node-editor/diagram/frameNodePort";
1681
1668
  import { FramePortData } from "@babylonjs/node-editor/diagram/graphCanvas";
1682
1669
  import { NodeMaterialModes } from '@babylonjs/core/Materials/Node/Enums/nodeMaterialModes';
1670
+ export class ISelectionChangedOptions {
1671
+ selection: Nullable<GraphNode | NodeLink | GraphFrame | NodePort | FramePortData>;
1672
+ forceKeepSelection?: boolean;
1673
+ }
1683
1674
  export class GlobalState {
1684
1675
  nodeMaterial: NodeMaterial;
1685
1676
  hostElement: HTMLElement;
1686
1677
  hostDocument: HTMLDocument;
1687
1678
  hostWindow: Window;
1688
- onSelectionChangedObservable: Observable<Nullable<GraphFrame | GraphNode | NodePort | NodeLink | FramePortData>>;
1679
+ onNewNodeCreatedObservable: Observable<GraphNode>;
1680
+ onSelectionChangedObservable: Observable<Nullable<ISelectionChangedOptions>>;
1689
1681
  onRebuildRequiredObservable: Observable<boolean>;
1690
1682
  onBuiltObservable: Observable<void>;
1691
1683
  onResetRequiredObservable: Observable<void>;
@@ -1708,6 +1700,12 @@ declare module "@babylonjs/node-editor/globalState" {
1708
1700
  onImportFrameObservable: Observable<any>;
1709
1701
  onGraphNodeRemovalObservable: Observable<GraphNode>;
1710
1702
  onPopupClosedObservable: Observable<void>;
1703
+ onNewBlockRequiredObservable: Observable<{
1704
+ type: string;
1705
+ targetX: number;
1706
+ targetY: number;
1707
+ needRepositioning?: boolean | undefined;
1708
+ }>;
1711
1709
  onGetNodeFromBlock: (block: NodeMaterialBlock) => GraphNode;
1712
1710
  onGridSizeChanged: Observable<void>;
1713
1711
  onExposePortOnFrameObservable: Observable<GraphNode>;
@@ -2042,8 +2040,11 @@ declare module "@babylonjs/node-editor/graphEditor" {
2042
2040
  embedHostWidth?: string;
2043
2041
  }
2044
2042
  export class GraphEditor extends React.Component<IGraphEditorProps, IGraphEditorState> {
2045
- private readonly NodeWidth;
2043
+ static readonly NodeWidth: number;
2044
+ private _graphCanvasRef;
2045
+ private _diagramContainerRef;
2046
2046
  private _graphCanvas;
2047
+ private _diagramContainer;
2047
2048
  private _startX;
2048
2049
  private _moveInProgress;
2049
2050
  private _leftWidth;
@@ -2051,7 +2052,7 @@ declare module "@babylonjs/node-editor/graphEditor" {
2051
2052
  private _blocks;
2052
2053
  private _previewManager;
2053
2054
  private _copiedNodes;
2054
- private _copiedFrame;
2055
+ private _copiedFrames;
2055
2056
  private _mouseLocationX;
2056
2057
  private _mouseLocationY;
2057
2058
  private _onWidgetKeyUpPointer;
@@ -2079,7 +2080,8 @@ declare module "@babylonjs/node-editor/graphEditor" {
2079
2080
  onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
2080
2081
  resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
2081
2082
  buildColumnLayout(): string;
2082
- emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
2083
+ emitNewBlock(blockType: string, targetX: number, targetY: number): void;
2084
+ dropNewBlock(event: React.DragEvent<HTMLDivElement>): void;
2083
2085
  handlePopUp: () => void;
2084
2086
  handleClosingPopUp: () => void;
2085
2087
  initiatePreviewArea: (canvas?: HTMLCanvasElement) => void;
@@ -2352,7 +2354,6 @@ declare module "@babylonjs/node-editor/sharedUiComponents/lines/colorLineCompone
2352
2354
  interface IColorLineComponentState {
2353
2355
  isExpanded: boolean;
2354
2356
  color: Color4;
2355
- colorString: string;
2356
2357
  }
2357
2358
  export class ColorLineComponent extends React.Component<IColorLineComponentProps, IColorLineComponentState> {
2358
2359
  constructor(props: IColorLineComponentProps);
@@ -2360,20 +2361,14 @@ declare module "@babylonjs/node-editor/sharedUiComponents/lines/colorLineCompone
2360
2361
  getValue(props?: Readonly<IColorLineComponentProps> & Readonly<{
2361
2362
  children?: React.ReactNode;
2362
2363
  }>): Color4;
2363
- getValueAsString(props?: Readonly<IColorLineComponentProps> & Readonly<{
2364
- children?: React.ReactNode;
2365
- }>): string;
2366
2364
  setColorFromString(colorString: string): void;
2367
- setColor(color: Color4): void;
2368
- updateColor(newColor: Color4): void;
2365
+ setColor(newColor: Color4): void;
2369
2366
  switchExpandState(): void;
2370
2367
  updateStateR(value: number): void;
2371
2368
  updateStateG(value: number): void;
2372
2369
  updateStateB(value: number): void;
2373
2370
  updateStateA(value: number): void;
2374
2371
  copyToClipboard(): void;
2375
- get colorString(): string;
2376
- set colorString(_: string);
2377
2372
  private convertToColor;
2378
2373
  private toColor3;
2379
2374
  render(): JSX.Element;
package/package.json CHANGED
@@ -4,14 +4,14 @@
4
4
  },
5
5
  "name": "@babylonjs/node-editor",
6
6
  "description": "The Babylon.js node material editor.",
7
- "version": "5.0.0-rc.1",
7
+ "version": "5.0.0-rc.4",
8
8
  "repository": {
9
9
  "type": "git",
10
10
  "url": "https://github.com/BabylonJS/Babylon.js.git"
11
11
  },
12
12
  "license": "Apache-2.0",
13
13
  "dependencies": {
14
- "@babylonjs/core": "5.0.0-rc.1",
14
+ "@babylonjs/core": "5.0.0-rc.4",
15
15
  "tslib": "^2.3.1"
16
16
  },
17
17
  "files": [