babylon.nodeEditor.module.d.ts 77 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983
  1. /// <reference types="react" />
  2. declare module "babylonjs-node-editor/blockTools" {
  3. import { AlphaTestBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/alphaTestBlock';
  4. import { BonesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/bonesBlock';
  5. import { InstancesBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/instancesBlock';
  6. import { MorphTargetsBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/morphTargetsBlock';
  7. import { ImageProcessingBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/imageProcessingBlock';
  8. import { RGBAMergerBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/rgbaMergerBlock';
  9. import { RGBASplitterBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/rgbaSplitterBlock';
  10. import { RGBMergerBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/rgbMergerBlock';
  11. import { RGBSplitterBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/rgbSplitterBlock';
  12. import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
  13. import { LightBlock } from 'babylonjs/Materials/Node/Blocks/Dual/lightBlock';
  14. import { FogBlock } from 'babylonjs/Materials/Node/Blocks/Dual/fogBlock';
  15. import { VertexOutputBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/vertexOutputBlock';
  16. import { FragmentOutputBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragmentOutputBlock';
  17. import { AddBlock } from 'babylonjs/Materials/Node/Blocks/addBlock';
  18. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  19. import { CrossBlock } from 'babylonjs/Materials/Node/Blocks/crossBlock';
  20. import { DotBlock } from 'babylonjs/Materials/Node/Blocks/dotBlock';
  21. import { MultiplyBlock } from 'babylonjs/Materials/Node/Blocks/multiplyBlock';
  22. import { TransformBlock } from 'babylonjs/Materials/Node/Blocks/transformBlock';
  23. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  24. export class BlockTools {
  25. static GetBlockFromString(data: string): BonesBlock | InstancesBlock | MorphTargetsBlock | AlphaTestBlock | ImageProcessingBlock | RGBAMergerBlock | RGBASplitterBlock | RGBMergerBlock | RGBSplitterBlock | TextureBlock | LightBlock | FogBlock | VertexOutputBlock | FragmentOutputBlock | AddBlock | ClampBlock | CrossBlock | DotBlock | MultiplyBlock | TransformBlock | null;
  26. static GetColorFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): string;
  27. static GetConnectionNodeTypeFromString(type: string): NodeMaterialBlockConnectionPointTypes.Float | NodeMaterialBlockConnectionPointTypes.Vector2 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Matrix | NodeMaterialBlockConnectionPointTypes.AutoDetect;
  28. static GetStringFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  29. }
  30. }
  31. declare module "babylonjs-node-editor/dataStorage" {
  32. export class DataStorage {
  33. private static _InMemoryStorage;
  34. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  35. static StoreBoolean(key: string, value: boolean): void;
  36. static ReadNumber(key: string, defaultValue: number): number;
  37. static StoreNumber(key: string, value: number): void;
  38. }
  39. }
  40. declare module "babylonjs-node-editor/sharedComponents/textLineComponent" {
  41. import * as React from "react";
  42. interface ITextLineComponentProps {
  43. label: string;
  44. value: string;
  45. color?: string;
  46. underline?: boolean;
  47. onLink?: () => void;
  48. }
  49. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  50. constructor(props: ITextLineComponentProps);
  51. onLink(): void;
  52. renderContent(): JSX.Element;
  53. render(): JSX.Element;
  54. }
  55. }
  56. declare module "babylonjs-node-editor/sharedComponents/lineContainerComponent" {
  57. import * as React from "react";
  58. interface ILineContainerComponentProps {
  59. title: string;
  60. children: any[] | any;
  61. closed?: boolean;
  62. }
  63. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  64. isExpanded: boolean;
  65. }> {
  66. constructor(props: ILineContainerComponentProps);
  67. switchExpandedState(): void;
  68. renderHeader(): JSX.Element;
  69. render(): JSX.Element;
  70. }
  71. }
  72. declare module "babylonjs-node-editor/sharedComponents/propertyChangedEvent" {
  73. export class PropertyChangedEvent {
  74. object: any;
  75. property: string;
  76. value: any;
  77. initialValue: any;
  78. }
  79. }
  80. declare module "babylonjs-node-editor/sharedComponents/textInputLineComponent" {
  81. import * as React from "react";
  82. import { Observable } from "babylonjs/Misc/observable";
  83. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  84. interface ITextInputLineComponentProps {
  85. label: string;
  86. target?: any;
  87. propertyName?: string;
  88. value?: string;
  89. onChange?: (value: string) => void;
  90. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  91. }
  92. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  93. value: string;
  94. }> {
  95. private _localChange;
  96. constructor(props: ITextInputLineComponentProps);
  97. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  98. value: string;
  99. }): boolean;
  100. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  101. updateValue(value: string): void;
  102. render(): JSX.Element;
  103. }
  104. }
  105. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeModel" {
  106. import { Nullable } from 'babylonjs/types';
  107. import { Vector2, Vector3, Vector4, Matrix } from 'babylonjs/Maths/math';
  108. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  109. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  110. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  111. import { GlobalState } from "babylonjs-node-editor/globalState";
  112. /**
  113. * Generic node model which stores information about a node editor block
  114. */
  115. export class GenericNodeModel extends DefaultNodeModel {
  116. /**
  117. * Vector2 for the node if it exists
  118. */
  119. vector2: Nullable<Vector2>;
  120. /**
  121. * Vector3 for the node if it exists
  122. */
  123. vector3: Nullable<Vector3>;
  124. /**
  125. * Vector4 for the node if it exists
  126. */
  127. vector4: Nullable<Vector4>;
  128. /**
  129. * Matrix for the node if it exists
  130. */
  131. matrix: Nullable<Matrix>;
  132. /**
  133. * Constructs the node model
  134. */
  135. constructor();
  136. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  137. renderProperties(globalState: GlobalState): JSX.Element;
  138. }
  139. }
  140. declare module "babylonjs-node-editor/components/diagram/link/advancedLinkModel" {
  141. import { DefaultLinkModel } from 'storm-react-diagrams';
  142. export class AdvancedLinkModel extends DefaultLinkModel {
  143. constructor();
  144. }
  145. }
  146. declare module "babylonjs-node-editor/components/diagram/port/defaultPortModel" {
  147. import { LinkModel, PortModel } from "storm-react-diagrams";
  148. import { Nullable } from 'babylonjs/types';
  149. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  150. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  151. /**
  152. * Port model
  153. */
  154. export class DefaultPortModel extends PortModel {
  155. /**
  156. * If the port is input or output
  157. */
  158. position: string | "input" | "output";
  159. /**
  160. * What the port is connected to
  161. */
  162. connection: Nullable<NodeMaterialConnectionPoint>;
  163. defaultValue: any;
  164. static idCounter: number;
  165. constructor(name: string, type?: string);
  166. canLinkToPort(port: DefaultPortModel): boolean;
  167. syncWithNodeMaterialConnectionPoint(connection: NodeMaterialConnectionPoint): void;
  168. getNodeModel(): DefaultNodeModel;
  169. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  170. createLinkModel(): LinkModel;
  171. static SortInputOutput(a: Nullable<DefaultPortModel>, b: Nullable<DefaultPortModel>): {
  172. input: DefaultPortModel;
  173. output: DefaultPortModel;
  174. } | null;
  175. }
  176. }
  177. declare module "babylonjs-node-editor/components/diagram/port/defaultPortWidget" {
  178. import { BaseWidget, PortState, NodeModel, BaseWidgetProps } from 'storm-react-diagrams';
  179. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  180. name: string;
  181. node: NodeModel;
  182. style: any;
  183. }
  184. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  185. constructor(props: IDefaultPortWidgetProps);
  186. getClassName(): string;
  187. render(): JSX.Element;
  188. }
  189. }
  190. declare module "babylonjs-node-editor/components/diagram/portHelper" {
  191. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  192. import { Nullable } from 'babylonjs/types';
  193. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  194. export class PortHelper {
  195. private static _GetPortTypeIndicator;
  196. static _GetPortStyle(type: NodeMaterialBlockConnectionPointTypes): {
  197. background: string;
  198. };
  199. static GenerateOutputPorts(node: Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  200. static GenerateInputPorts(node: Nullable<DefaultNodeModel>, includeOnly?: string[]): JSX.Element[];
  201. }
  202. }
  203. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeWidget" {
  204. import * as React from "react";
  205. import { Nullable } from 'babylonjs/types';
  206. import { GlobalState } from "babylonjs-node-editor/globalState";
  207. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  208. /**
  209. * GenericNodeWidgetProps
  210. */
  211. export interface GenericNodeWidgetProps {
  212. node: Nullable<GenericNodeModel>;
  213. globalState: GlobalState;
  214. }
  215. /**
  216. * GenericNodeWidgetState
  217. */
  218. export interface GenericNodeWidgetState {
  219. }
  220. /**
  221. * Used to display a node block for the node editor
  222. */
  223. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  224. /**
  225. * Creates a GenericNodeWidget
  226. * @param props
  227. */
  228. constructor(props: GenericNodeWidgetProps);
  229. render(): JSX.Element;
  230. }
  231. }
  232. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeFactory" {
  233. import * as SRD from "storm-react-diagrams";
  234. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  235. import { GlobalState } from "babylonjs-node-editor/globalState";
  236. /**
  237. * Node factory which creates editor nodes
  238. */
  239. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  240. private _globalState;
  241. /**
  242. * Constructs a GenericNodeFactory
  243. */
  244. constructor(globalState: GlobalState);
  245. /**
  246. * Generates a node widget
  247. * @param diagramEngine diagram engine
  248. * @param node node to generate
  249. * @returns node widget jsx
  250. */
  251. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  252. /**
  253. * Gets a new instance of a node model
  254. * @returns generic node model
  255. */
  256. getNewInstance(): GenericNodeModel;
  257. }
  258. }
  259. declare module "babylonjs-node-editor/sharedComponents/draggableLineComponent" {
  260. import * as React from "react";
  261. export interface IButtonLineComponentProps {
  262. data: string;
  263. }
  264. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  265. constructor(props: IButtonLineComponentProps);
  266. render(): JSX.Element;
  267. }
  268. }
  269. declare module "babylonjs-node-editor/components/nodeList/nodeListComponent" {
  270. import * as React from "react";
  271. import { GlobalState } from "babylonjs-node-editor/globalState";
  272. interface INodeListComponentProps {
  273. globalState: GlobalState;
  274. }
  275. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  276. render(): JSX.Element;
  277. }
  278. }
  279. declare module "babylonjs-node-editor/sharedComponents/buttonLineComponent" {
  280. import * as React from "react";
  281. export interface IButtonLineComponentProps {
  282. label: string;
  283. onClick: () => void;
  284. }
  285. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  286. constructor(props: IButtonLineComponentProps);
  287. render(): JSX.Element;
  288. }
  289. }
  290. declare module "babylonjs-node-editor/stringTools" {
  291. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  292. export class StringTools {
  293. /**
  294. * Gets the base math type of node material block connection point.
  295. * @param type Type to parse.
  296. */
  297. static GetBaseType(type: NodeMaterialBlockConnectionPointTypes): string;
  298. /**
  299. * Download a string into a file that will be saved locally by the browser
  300. * @param content defines the string to download locally as a file
  301. */
  302. static DownloadAsFile(content: string, filename: string): void;
  303. }
  304. }
  305. declare module "babylonjs-node-editor/sharedComponents/fileButtonLineComponent" {
  306. import * as React from "react";
  307. interface IFileButtonLineComponentProps {
  308. label: string;
  309. onClick: (file: File) => void;
  310. accept: string;
  311. }
  312. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  313. constructor(props: IFileButtonLineComponentProps);
  314. onChange(evt: any): void;
  315. render(): JSX.Element;
  316. }
  317. }
  318. declare module "babylonjs-node-editor/components/propertyTab/propertyTabComponent" {
  319. import * as React from "react";
  320. import { GlobalState } from "babylonjs-node-editor/globalState";
  321. import { Nullable } from 'babylonjs/types';
  322. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  323. interface IPropertyTabComponentProps {
  324. globalState: GlobalState;
  325. }
  326. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  327. currentNode: Nullable<DefaultNodeModel>;
  328. }> {
  329. constructor(props: IPropertyTabComponentProps);
  330. componentWillMount(): void;
  331. load(file: File): void;
  332. render(): JSX.Element;
  333. }
  334. }
  335. declare module "babylonjs-node-editor/portal" {
  336. import * as React from "react";
  337. import { GlobalState } from "babylonjs-node-editor/globalState";
  338. interface IPortalProps {
  339. globalState: GlobalState;
  340. }
  341. export class Portal extends React.Component<IPortalProps> {
  342. render(): React.ReactPortal;
  343. }
  344. }
  345. declare module "babylonjs-node-editor/sharedComponents/checkBoxLineComponent" {
  346. import * as React from "react";
  347. import { Observable } from "babylonjs/Misc/observable";
  348. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  349. export interface ICheckBoxLineComponentProps {
  350. label: string;
  351. target?: any;
  352. propertyName?: string;
  353. isSelected?: () => boolean;
  354. onSelect?: (value: boolean) => void;
  355. onValueChanged?: () => void;
  356. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  357. }
  358. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  359. isSelected: boolean;
  360. }> {
  361. private static _UniqueIdSeed;
  362. private _uniqueId;
  363. private _localChange;
  364. constructor(props: ICheckBoxLineComponentProps);
  365. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  366. isSelected: boolean;
  367. }): boolean;
  368. onChange(): void;
  369. render(): JSX.Element;
  370. }
  371. }
  372. declare module "babylonjs-node-editor/components/diagram/texture/texturePropertyTabComponent" {
  373. import * as React from "react";
  374. import { GlobalState } from "babylonjs-node-editor/globalState";
  375. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  376. interface ITexturePropertyTabComponentProps {
  377. globalState: GlobalState;
  378. node: TextureNodeModel;
  379. }
  380. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  381. /**
  382. * Replaces the texture of the node
  383. * @param file the file of the texture to use
  384. */
  385. replaceTexture(file: File): void;
  386. render(): JSX.Element;
  387. }
  388. }
  389. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeModel" {
  390. import { Nullable } from 'babylonjs/types';
  391. import { BaseTexture } from 'babylonjs/Materials/Textures/baseTexture';
  392. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  393. import { GlobalState } from "babylonjs-node-editor/globalState";
  394. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  395. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  396. /**
  397. * Texture node model which stores information about a node editor block
  398. */
  399. export class TextureNodeModel extends DefaultNodeModel {
  400. private _block;
  401. /**
  402. * Texture for the node if it exists
  403. */
  404. texture: Nullable<BaseTexture>;
  405. /**
  406. * Constructs the node model
  407. */
  408. constructor();
  409. renderProperties(globalState: GlobalState): JSX.Element;
  410. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  411. }
  412. }
  413. declare module "babylonjs-node-editor/sharedComponents/textureLineComponent" {
  414. import * as React from "react";
  415. import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
  416. interface ITextureLineComponentProps {
  417. texture: BaseTexture;
  418. width: number;
  419. height: number;
  420. globalState?: any;
  421. hideChannelSelect?: boolean;
  422. }
  423. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  424. displayRed: boolean;
  425. displayGreen: boolean;
  426. displayBlue: boolean;
  427. displayAlpha: boolean;
  428. face: number;
  429. }> {
  430. constructor(props: ITextureLineComponentProps);
  431. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  432. displayRed: boolean;
  433. displayGreen: boolean;
  434. displayBlue: boolean;
  435. displayAlpha: boolean;
  436. face: number;
  437. }): boolean;
  438. componentDidMount(): void;
  439. componentDidUpdate(): void;
  440. updatePreview(): void;
  441. render(): JSX.Element;
  442. }
  443. }
  444. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeWidget" {
  445. import * as React from "react";
  446. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  447. import { Nullable } from 'babylonjs/types';
  448. import { GlobalState } from "babylonjs-node-editor/globalState";
  449. /**
  450. * GenericNodeWidgetProps
  451. */
  452. export interface ITextureNodeWidgetProps {
  453. node: Nullable<TextureNodeModel>;
  454. globalState: GlobalState;
  455. }
  456. /**
  457. * Used to display a node block for the node editor
  458. */
  459. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  460. /**
  461. * Creates a GenericNodeWidget
  462. * @param props
  463. */
  464. constructor(props: ITextureNodeWidgetProps);
  465. render(): JSX.Element;
  466. }
  467. }
  468. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeFactory" {
  469. import * as SRD from "storm-react-diagrams";
  470. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  471. import { GlobalState } from "babylonjs-node-editor/globalState";
  472. /**
  473. * Node factory which creates editor nodes
  474. */
  475. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  476. private _globalState;
  477. /**
  478. * Constructs a TextureNodeFactory
  479. */
  480. constructor(globalState: GlobalState);
  481. /**
  482. * Generates a node widget
  483. * @param diagramEngine diagram engine
  484. * @param node node to generate
  485. * @returns node widget jsx
  486. */
  487. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  488. /**
  489. * Gets a new instance of a node model
  490. * @returns texture node model
  491. */
  492. getNewInstance(): TextureNodeModel;
  493. }
  494. }
  495. declare module "babylonjs-node-editor/sharedComponents/numericInputComponent" {
  496. import * as React from "react";
  497. interface INumericInputComponentProps {
  498. label: string;
  499. value: number;
  500. step?: number;
  501. onChange: (value: number) => void;
  502. }
  503. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  504. value: string;
  505. }> {
  506. static defaultProps: {
  507. step: number;
  508. };
  509. private _localChange;
  510. constructor(props: INumericInputComponentProps);
  511. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  512. value: string;
  513. }): boolean;
  514. updateValue(evt: any): void;
  515. render(): JSX.Element;
  516. }
  517. }
  518. declare module "babylonjs-node-editor/sharedComponents/vector2LineComponent" {
  519. import * as React from "react";
  520. import { Vector2 } from "babylonjs/Maths/math";
  521. import { Observable } from "babylonjs/Misc/observable";
  522. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  523. interface IVector2LineComponentProps {
  524. label: string;
  525. target: any;
  526. propertyName: string;
  527. step?: number;
  528. onChange?: (newvalue: Vector2) => void;
  529. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  530. }
  531. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  532. isExpanded: boolean;
  533. value: Vector2;
  534. }> {
  535. static defaultProps: {
  536. step: number;
  537. };
  538. private _localChange;
  539. constructor(props: IVector2LineComponentProps);
  540. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  541. isExpanded: boolean;
  542. value: Vector2;
  543. }): boolean;
  544. switchExpandState(): void;
  545. raiseOnPropertyChanged(previousValue: Vector2): void;
  546. updateStateX(value: number): void;
  547. updateStateY(value: number): void;
  548. render(): JSX.Element;
  549. }
  550. }
  551. declare module "babylonjs-node-editor/components/propertyTab/properties/vector2PropertyTabComponent" {
  552. import * as React from "react";
  553. import { GlobalState } from "babylonjs-node-editor/globalState";
  554. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  555. interface IVector2PropertyTabComponentProps {
  556. globalState: GlobalState;
  557. inputBlock: InputBlock;
  558. }
  559. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  560. render(): JSX.Element;
  561. }
  562. }
  563. declare module "babylonjs-node-editor/sharedComponents/vector3LineComponent" {
  564. import * as React from "react";
  565. import { Vector3 } from "babylonjs/Maths/math";
  566. import { Observable } from "babylonjs/Misc/observable";
  567. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  568. interface IVector3LineComponentProps {
  569. label: string;
  570. target: any;
  571. propertyName: string;
  572. step?: number;
  573. onChange?: (newvalue: Vector3) => void;
  574. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  575. }
  576. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  577. isExpanded: boolean;
  578. value: Vector3;
  579. }> {
  580. static defaultProps: {
  581. step: number;
  582. };
  583. private _localChange;
  584. constructor(props: IVector3LineComponentProps);
  585. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  586. isExpanded: boolean;
  587. value: Vector3;
  588. }): boolean;
  589. switchExpandState(): void;
  590. raiseOnPropertyChanged(previousValue: Vector3): void;
  591. updateVector3(): void;
  592. updateStateX(value: number): void;
  593. updateStateY(value: number): void;
  594. updateStateZ(value: number): void;
  595. render(): JSX.Element;
  596. }
  597. }
  598. declare module "babylonjs-node-editor/components/propertyTab/properties/vector3PropertyTabComponent" {
  599. import * as React from "react";
  600. import { GlobalState } from "babylonjs-node-editor/globalState";
  601. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  602. interface IVector3PropertyTabComponentProps {
  603. globalState: GlobalState;
  604. inputBlock: InputBlock;
  605. }
  606. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  607. render(): JSX.Element;
  608. }
  609. }
  610. declare module "babylonjs-node-editor/sharedComponents/optionsLineComponent" {
  611. import * as React from "react";
  612. import { Observable } from "babylonjs/Misc/observable";
  613. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  614. class ListLineOption {
  615. label: string;
  616. value: number | string;
  617. }
  618. interface IOptionsLineComponentProps {
  619. label: string;
  620. target: any;
  621. propertyName: string;
  622. options: ListLineOption[];
  623. noDirectUpdate?: boolean;
  624. onSelect?: (value: number | string) => void;
  625. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  626. valuesAreStrings?: boolean;
  627. defaultIfNull?: number;
  628. }
  629. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  630. value: number | string;
  631. }> {
  632. private _localChange;
  633. private _getValue;
  634. constructor(props: IOptionsLineComponentProps);
  635. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  636. value: number;
  637. }): boolean;
  638. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  639. updateValue(valueString: string): void;
  640. render(): JSX.Element;
  641. }
  642. }
  643. declare module "babylonjs-node-editor/sharedComponents/color3LineComponent" {
  644. import * as React from "react";
  645. import { Observable } from "babylonjs/Misc/observable";
  646. import { Color3 } from "babylonjs/Maths/math";
  647. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  648. export interface IColor3LineComponentProps {
  649. label: string;
  650. target: any;
  651. propertyName: string;
  652. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  653. onChange?: () => void;
  654. }
  655. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  656. isExpanded: boolean;
  657. color: Color3;
  658. }> {
  659. private _localChange;
  660. constructor(props: IColor3LineComponentProps);
  661. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  662. color: Color3;
  663. }): boolean;
  664. onChange(newValue: string): void;
  665. switchExpandState(): void;
  666. raiseOnPropertyChanged(previousValue: Color3): void;
  667. updateStateR(value: number): void;
  668. updateStateG(value: number): void;
  669. updateStateB(value: number): void;
  670. copyToClipboard(): void;
  671. render(): JSX.Element;
  672. }
  673. }
  674. declare module "babylonjs-node-editor/components/propertyTab/properties/color3PropertyTabComponent" {
  675. import * as React from "react";
  676. import { GlobalState } from "babylonjs-node-editor/globalState";
  677. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  678. interface IColor3PropertyTabComponentProps {
  679. globalState: GlobalState;
  680. inputBlock: InputBlock;
  681. }
  682. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  683. render(): JSX.Element;
  684. }
  685. }
  686. declare module "babylonjs-node-editor/sharedComponents/floatLineComponent" {
  687. import * as React from "react";
  688. import { Observable } from "babylonjs/Misc/observable";
  689. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  690. interface IFloatLineComponentProps {
  691. label: string;
  692. target: any;
  693. propertyName: string;
  694. onChange?: (newValue: number) => void;
  695. isInteger?: boolean;
  696. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  697. additionalClass?: string;
  698. step?: string;
  699. digits?: number;
  700. }
  701. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  702. value: string;
  703. }> {
  704. private _localChange;
  705. private _store;
  706. constructor(props: IFloatLineComponentProps);
  707. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  708. value: string;
  709. }): boolean;
  710. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  711. updateValue(valueString: string): void;
  712. render(): JSX.Element;
  713. }
  714. }
  715. declare module "babylonjs-node-editor/components/propertyTab/properties/floatPropertyTabComponent" {
  716. import * as React from "react";
  717. import { GlobalState } from "babylonjs-node-editor/globalState";
  718. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  719. interface IFloatPropertyTabComponentProps {
  720. globalState: GlobalState;
  721. inputBlock: InputBlock;
  722. }
  723. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  724. render(): JSX.Element;
  725. }
  726. }
  727. declare module "babylonjs-node-editor/components/diagram/input/inputNodePropertyComponent" {
  728. import * as React from "react";
  729. import { GlobalState } from "babylonjs-node-editor/globalState";
  730. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  731. interface IInputPropertyTabComponentProps {
  732. globalState: GlobalState;
  733. inputNode: InputNodeModel;
  734. }
  735. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  736. constructor(props: IInputPropertyTabComponentProps);
  737. renderValue(globalState: GlobalState): JSX.Element | null;
  738. setDefaultValue(): void;
  739. render(): JSX.Element;
  740. }
  741. }
  742. declare module "babylonjs-node-editor/components/diagram/input/inputNodeModel" {
  743. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  744. import { GlobalState } from "babylonjs-node-editor/globalState";
  745. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  746. /**
  747. * Generic node model which stores information about a node editor block
  748. */
  749. export class InputNodeModel extends DefaultNodeModel {
  750. readonly inputBlock: InputBlock;
  751. /**
  752. * Constructs the node model
  753. */
  754. constructor();
  755. renderProperties(globalState: GlobalState): JSX.Element;
  756. }
  757. }
  758. declare module "babylonjs-node-editor/components/diagram/input/inputNodeWidget" {
  759. import * as React from "react";
  760. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  761. import { Nullable } from 'babylonjs/types';
  762. import { GlobalState } from "babylonjs-node-editor/globalState";
  763. /**
  764. * GenericNodeWidgetProps
  765. */
  766. export interface InputNodeWidgetProps {
  767. node: Nullable<InputNodeModel>;
  768. globalState: GlobalState;
  769. }
  770. /**
  771. * Used to display a node block for the node editor
  772. */
  773. export class InputNodeWidget extends React.Component<InputNodeWidgetProps> {
  774. /**
  775. * Creates a GenericNodeWidget
  776. * @param props
  777. */
  778. constructor(props: InputNodeWidgetProps);
  779. renderValue(value: string): JSX.Element | null;
  780. render(): JSX.Element | null;
  781. }
  782. }
  783. declare module "babylonjs-node-editor/components/diagram/input/inputNodeFactory" {
  784. import * as SRD from "storm-react-diagrams";
  785. import { GlobalState } from "babylonjs-node-editor/globalState";
  786. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  787. /**
  788. * Node factory which creates editor nodes
  789. */
  790. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  791. private _globalState;
  792. /**
  793. * Constructs a GenericNodeFactory
  794. */
  795. constructor(globalState: GlobalState);
  796. /**
  797. * Generates a node widget
  798. * @param diagramEngine diagram engine
  799. * @param node node to generate
  800. * @returns node widget jsx
  801. */
  802. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  803. /**
  804. * Gets a new instance of a node model
  805. * @returns input node model
  806. */
  807. getNewInstance(): InputNodeModel;
  808. }
  809. }
  810. declare module "babylonjs-node-editor/components/log/logComponent" {
  811. import * as React from "react";
  812. import { GlobalState } from "babylonjs-node-editor/globalState";
  813. interface ILogComponentProps {
  814. globalState: GlobalState;
  815. }
  816. export class LogEntry {
  817. message: string;
  818. isError: boolean;
  819. constructor(message: string, isError: boolean);
  820. }
  821. export class LogComponent extends React.Component<ILogComponentProps, {
  822. logs: LogEntry[];
  823. }> {
  824. constructor(props: ILogComponentProps);
  825. componentWillMount(): void;
  826. componentDidUpdate(): void;
  827. render(): JSX.Element;
  828. }
  829. }
  830. declare module "babylonjs-node-editor/components/diagram/light/lightPropertyTabComponent" {
  831. import * as React from "react";
  832. import { GlobalState } from "babylonjs-node-editor/globalState";
  833. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  834. interface ILightPropertyTabComponentProps {
  835. globalState: GlobalState;
  836. node: LightNodeModel;
  837. }
  838. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  839. render(): JSX.Element;
  840. }
  841. }
  842. declare module "babylonjs-node-editor/components/diagram/light/lightNodeModel" {
  843. import { Nullable } from 'babylonjs/types';
  844. import { Light } from 'babylonjs/Lights/light';
  845. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  846. import { GlobalState } from "babylonjs-node-editor/globalState";
  847. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  848. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  849. /**
  850. * Light node model which stores information about a node editor block
  851. */
  852. export class LightNodeModel extends DefaultNodeModel {
  853. private _block;
  854. /**
  855. * Light for the node if it exists
  856. */
  857. light: Nullable<Light>;
  858. /**
  859. * Constructs the node model
  860. */
  861. constructor();
  862. renderProperties(globalState: GlobalState): JSX.Element;
  863. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  864. }
  865. }
  866. declare module "babylonjs-node-editor/components/diagram/light/lightNodeWidget" {
  867. import * as React from "react";
  868. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  869. import { Nullable } from 'babylonjs/types';
  870. import { GlobalState } from "babylonjs-node-editor/globalState";
  871. /**
  872. * GenericNodeWidgetProps
  873. */
  874. export interface ILightNodeWidgetProps {
  875. node: Nullable<LightNodeModel>;
  876. globalState: GlobalState;
  877. }
  878. /**
  879. * Used to display a node block for the node editor
  880. */
  881. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  882. /**
  883. * Creates a GenericNodeWidget
  884. * @param props
  885. */
  886. constructor(props: ILightNodeWidgetProps);
  887. render(): JSX.Element;
  888. }
  889. }
  890. declare module "babylonjs-node-editor/components/diagram/light/lightNodeFactory" {
  891. import * as SRD from "storm-react-diagrams";
  892. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  893. import { GlobalState } from "babylonjs-node-editor/globalState";
  894. /**
  895. * Node factory which creates editor nodes
  896. */
  897. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  898. private _globalState;
  899. /**
  900. * Constructs a LightNodeFactory
  901. */
  902. constructor(globalState: GlobalState);
  903. /**
  904. * Generates a node widget
  905. * @param diagramEngine diagram engine
  906. * @param node node to generate
  907. * @returns node widget jsx
  908. */
  909. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  910. /**
  911. * Gets a new instance of a node model
  912. * @returns light node model
  913. */
  914. getNewInstance(): LightNodeModel;
  915. }
  916. }
  917. declare module "babylonjs-node-editor/sharedComponents/messageDialog" {
  918. import * as React from "react";
  919. import { GlobalState } from "babylonjs-node-editor/globalState";
  920. interface IMessageDialogComponentProps {
  921. globalState: GlobalState;
  922. }
  923. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  924. message: string;
  925. isError: boolean;
  926. }> {
  927. constructor(props: IMessageDialogComponentProps);
  928. render(): JSX.Element | null;
  929. }
  930. }
  931. declare module "babylonjs-node-editor/components/diagram/link/advancedLinkFactory" {
  932. import { DefaultLinkFactory, DefaultLinkWidget } from 'storm-react-diagrams';
  933. import { AdvancedLinkModel } from "babylonjs-node-editor/components/diagram/link/advancedLinkModel";
  934. export class AdvancedLinkFactory extends DefaultLinkFactory {
  935. constructor();
  936. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  937. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  938. }
  939. }
  940. declare module "babylonjs-node-editor/graphEditor" {
  941. import { LinkModel } from "storm-react-diagrams";
  942. import * as React from "react";
  943. import * as dagre from "babylonjs-node-editor/dagre";
  944. import { GlobalState } from "babylonjs-node-editor/globalState";
  945. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  946. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  947. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  948. interface IGraphEditorProps {
  949. globalState: GlobalState;
  950. }
  951. export class NodeCreationOptions {
  952. nodeMaterialBlock: NodeMaterialBlock;
  953. type?: string;
  954. connection?: NodeMaterialConnectionPoint;
  955. }
  956. export class GraphEditor extends React.Component<IGraphEditorProps> {
  957. private readonly NodeWidth;
  958. private _engine;
  959. private _model;
  960. private _startX;
  961. private _moveInProgress;
  962. private _leftWidth;
  963. private _rightWidth;
  964. private _nodes;
  965. /** @hidden */
  966. _toAdd: LinkModel[] | null;
  967. /**
  968. * Creates a node and recursivly creates its parent nodes from it's input
  969. * @param nodeMaterialBlock
  970. */
  971. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  972. componentDidMount(): void;
  973. componentWillUnmount(): void;
  974. constructor(props: IGraphEditorProps);
  975. distributeGraph(): dagre.Node[];
  976. mapElements(): {
  977. id: string;
  978. metadata: {
  979. id: string;
  980. width: number;
  981. height: number;
  982. };
  983. }[];
  984. mapEdges(): {
  985. from: import("storm-react-diagrams").NodeModel;
  986. to: import("storm-react-diagrams").NodeModel;
  987. }[];
  988. buildMaterial(): void;
  989. build(needToWait?: boolean): void;
  990. reOrganize(): void;
  991. addValueNode(type: string): DefaultNodeModel;
  992. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  993. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  994. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  995. buildColumnLayout(): string;
  996. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  997. render(): JSX.Element;
  998. }
  999. }
  1000. declare module "babylonjs-node-editor/components/diagram/defaultNodeModel" {
  1001. import { NodeModel, DiagramModel } from "storm-react-diagrams";
  1002. import { Nullable } from 'babylonjs/types';
  1003. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1004. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  1005. import { GlobalState } from "babylonjs-node-editor/globalState";
  1006. import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/port/defaultPortModel";
  1007. /**
  1008. * Generic node model which stores information about a node editor block
  1009. */
  1010. export class DefaultNodeModel extends NodeModel {
  1011. /**
  1012. * The babylon block this node represents
  1013. */
  1014. block: Nullable<NodeMaterialBlock>;
  1015. ports: {
  1016. [s: string]: DefaultPortModel;
  1017. };
  1018. /**
  1019. * Constructs the node model
  1020. */
  1021. constructor(key: string);
  1022. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  1023. renderProperties(globalState: GlobalState): JSX.Element | null;
  1024. }
  1025. }
  1026. declare module "babylonjs-node-editor/globalState" {
  1027. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1028. import { Nullable } from "babylonjs/types";
  1029. import { Observable } from 'babylonjs/Misc/observable';
  1030. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1031. import { LogEntry } from "babylonjs-node-editor/components/log/logComponent";
  1032. export class GlobalState {
  1033. nodeMaterial?: NodeMaterial;
  1034. hostElement: HTMLElement;
  1035. hostDocument: HTMLDocument;
  1036. onSelectionChangedObservable: Observable<Nullable<DefaultNodeModel>>;
  1037. onRebuildRequiredObservable: Observable<void>;
  1038. onResetRequiredObservable: Observable<void>;
  1039. onUpdateRequiredObservable: Observable<void>;
  1040. onZoomToFitRequiredObservable: Observable<void>;
  1041. onReOrganizedRequiredObservable: Observable<void>;
  1042. onLogRequiredObservable: Observable<LogEntry>;
  1043. onErrorMessageDialogRequiredObservable: Observable<string>;
  1044. }
  1045. }
  1046. declare module "babylonjs-node-editor/sharedComponents/popup" {
  1047. export class Popup {
  1048. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1049. private static _CopyStyles;
  1050. }
  1051. }
  1052. declare module "babylonjs-node-editor/nodeEditor" {
  1053. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1054. /**
  1055. * Interface used to specify creation options for the node editor
  1056. */
  1057. export interface INodeEditorOptions {
  1058. nodeMaterial: NodeMaterial;
  1059. }
  1060. /**
  1061. * Class used to create a node editor
  1062. */
  1063. export class NodeEditor {
  1064. /**
  1065. * Show the node editor
  1066. * @param options defines the options to use to configure the node editor
  1067. */
  1068. static Show(options: INodeEditorOptions): void;
  1069. }
  1070. }
  1071. declare module "babylonjs-node-editor/index" {
  1072. export * from "babylonjs-node-editor/nodeEditor";
  1073. }
  1074. declare module "babylonjs-node-editor/legacy/legacy" {
  1075. export * from "babylonjs-node-editor/index";
  1076. }
  1077. declare module "babylonjs-node-editor" {
  1078. export * from "babylonjs-node-editor/legacy/legacy";
  1079. }
  1080. /// <reference types="react" />
  1081. declare module NODEEDITOR {
  1082. export class BlockTools {
  1083. static GetBlockFromString(data: string): BABYLON.BonesBlock | BABYLON.InstancesBlock | BABYLON.MorphTargetsBlock | BABYLON.AlphaTestBlock | BABYLON.ImageProcessingBlock | BABYLON.RGBAMergerBlock | BABYLON.RGBASplitterBlock | BABYLON.RGBMergerBlock | BABYLON.RGBSplitterBlock | BABYLON.TextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.AddBlock | BABYLON.ClampBlock | BABYLON.CrossBlock | BABYLON.DotBlock | BABYLON.MultiplyBlock | BABYLON.TransformBlock | null;
  1084. static GetColorFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1085. 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;
  1086. static GetStringFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  1087. }
  1088. }
  1089. declare module NODEEDITOR {
  1090. export class DataStorage {
  1091. private static _InMemoryStorage;
  1092. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  1093. static StoreBoolean(key: string, value: boolean): void;
  1094. static ReadNumber(key: string, defaultValue: number): number;
  1095. static StoreNumber(key: string, value: number): void;
  1096. }
  1097. }
  1098. declare module NODEEDITOR {
  1099. interface ITextLineComponentProps {
  1100. label: string;
  1101. value: string;
  1102. color?: string;
  1103. underline?: boolean;
  1104. onLink?: () => void;
  1105. }
  1106. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  1107. constructor(props: ITextLineComponentProps);
  1108. onLink(): void;
  1109. renderContent(): JSX.Element;
  1110. render(): JSX.Element;
  1111. }
  1112. }
  1113. declare module NODEEDITOR {
  1114. interface ILineContainerComponentProps {
  1115. title: string;
  1116. children: any[] | any;
  1117. closed?: boolean;
  1118. }
  1119. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  1120. isExpanded: boolean;
  1121. }> {
  1122. constructor(props: ILineContainerComponentProps);
  1123. switchExpandedState(): void;
  1124. renderHeader(): JSX.Element;
  1125. render(): JSX.Element;
  1126. }
  1127. }
  1128. declare module NODEEDITOR {
  1129. export class PropertyChangedEvent {
  1130. object: any;
  1131. property: string;
  1132. value: any;
  1133. initialValue: any;
  1134. }
  1135. }
  1136. declare module NODEEDITOR {
  1137. interface ITextInputLineComponentProps {
  1138. label: string;
  1139. target?: any;
  1140. propertyName?: string;
  1141. value?: string;
  1142. onChange?: (value: string) => void;
  1143. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1144. }
  1145. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  1146. value: string;
  1147. }> {
  1148. private _localChange;
  1149. constructor(props: ITextInputLineComponentProps);
  1150. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  1151. value: string;
  1152. }): boolean;
  1153. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  1154. updateValue(value: string): void;
  1155. render(): JSX.Element;
  1156. }
  1157. }
  1158. declare module NODEEDITOR {
  1159. /**
  1160. * Generic node model which stores information about a node editor block
  1161. */
  1162. export class GenericNodeModel extends DefaultNodeModel {
  1163. /**
  1164. * BABYLON.Vector2 for the node if it exists
  1165. */
  1166. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  1167. /**
  1168. * BABYLON.Vector3 for the node if it exists
  1169. */
  1170. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  1171. /**
  1172. * BABYLON.Vector4 for the node if it exists
  1173. */
  1174. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  1175. /**
  1176. * BABYLON.Matrix for the node if it exists
  1177. */
  1178. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  1179. /**
  1180. * Constructs the node model
  1181. */
  1182. constructor();
  1183. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  1184. renderProperties(globalState: GlobalState): JSX.Element;
  1185. }
  1186. }
  1187. declare module NODEEDITOR {
  1188. export class AdvancedLinkModel extends DefaultLinkModel {
  1189. constructor();
  1190. }
  1191. }
  1192. declare module NODEEDITOR {
  1193. /**
  1194. * Port model
  1195. */
  1196. export class DefaultPortModel extends PortModel {
  1197. /**
  1198. * If the port is input or output
  1199. */
  1200. position: string | "input" | "output";
  1201. /**
  1202. * What the port is connected to
  1203. */
  1204. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  1205. defaultValue: any;
  1206. static idCounter: number;
  1207. constructor(name: string, type?: string);
  1208. canLinkToPort(port: DefaultPortModel): boolean;
  1209. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  1210. getNodeModel(): DefaultNodeModel;
  1211. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  1212. createLinkModel(): LinkModel;
  1213. static SortInputOutput(a: BABYLON.Nullable<DefaultPortModel>, b: BABYLON.Nullable<DefaultPortModel>): {
  1214. input: DefaultPortModel;
  1215. output: DefaultPortModel;
  1216. } | null;
  1217. }
  1218. }
  1219. declare module NODEEDITOR {
  1220. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  1221. name: string;
  1222. node: NodeModel;
  1223. style: any;
  1224. }
  1225. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  1226. constructor(props: IDefaultPortWidgetProps);
  1227. getClassName(): string;
  1228. render(): JSX.Element;
  1229. }
  1230. }
  1231. declare module NODEEDITOR {
  1232. export class PortHelper {
  1233. private static _GetPortTypeIndicator;
  1234. static _GetPortStyle(type: BABYLON.NodeMaterialBlockConnectionPointTypes): {
  1235. background: string;
  1236. };
  1237. static GenerateOutputPorts(node: BABYLON.Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  1238. static GenerateInputPorts(node: BABYLON.Nullable<DefaultNodeModel>, includeOnly?: string[]): JSX.Element[];
  1239. }
  1240. }
  1241. declare module NODEEDITOR {
  1242. /**
  1243. * GenericNodeWidgetProps
  1244. */
  1245. export interface GenericNodeWidgetProps {
  1246. node: BABYLON.Nullable<GenericNodeModel>;
  1247. globalState: GlobalState;
  1248. }
  1249. /**
  1250. * GenericNodeWidgetState
  1251. */
  1252. export interface GenericNodeWidgetState {
  1253. }
  1254. /**
  1255. * Used to display a node block for the node editor
  1256. */
  1257. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  1258. /**
  1259. * Creates a GenericNodeWidget
  1260. * @param props
  1261. */
  1262. constructor(props: GenericNodeWidgetProps);
  1263. render(): JSX.Element;
  1264. }
  1265. }
  1266. declare module NODEEDITOR {
  1267. /**
  1268. * Node factory which creates editor nodes
  1269. */
  1270. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  1271. private _globalState;
  1272. /**
  1273. * Constructs a GenericNodeFactory
  1274. */
  1275. constructor(globalState: GlobalState);
  1276. /**
  1277. * Generates a node widget
  1278. * @param diagramEngine diagram engine
  1279. * @param node node to generate
  1280. * @returns node widget jsx
  1281. */
  1282. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  1283. /**
  1284. * Gets a new instance of a node model
  1285. * @returns generic node model
  1286. */
  1287. getNewInstance(): GenericNodeModel;
  1288. }
  1289. }
  1290. declare module NODEEDITOR {
  1291. export interface IButtonLineComponentProps {
  1292. data: string;
  1293. }
  1294. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  1295. constructor(props: IButtonLineComponentProps);
  1296. render(): JSX.Element;
  1297. }
  1298. }
  1299. declare module NODEEDITOR {
  1300. interface INodeListComponentProps {
  1301. globalState: GlobalState;
  1302. }
  1303. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  1304. render(): JSX.Element;
  1305. }
  1306. }
  1307. declare module NODEEDITOR {
  1308. export interface IButtonLineComponentProps {
  1309. label: string;
  1310. onClick: () => void;
  1311. }
  1312. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  1313. constructor(props: IButtonLineComponentProps);
  1314. render(): JSX.Element;
  1315. }
  1316. }
  1317. declare module NODEEDITOR {
  1318. export class StringTools {
  1319. /**
  1320. * Gets the base math type of node material block connection point.
  1321. * @param type Type to parse.
  1322. */
  1323. static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1324. /**
  1325. * Download a string into a file that will be saved locally by the browser
  1326. * @param content defines the string to download locally as a file
  1327. */
  1328. static DownloadAsFile(content: string, filename: string): void;
  1329. }
  1330. }
  1331. declare module NODEEDITOR {
  1332. interface IFileButtonLineComponentProps {
  1333. label: string;
  1334. onClick: (file: File) => void;
  1335. accept: string;
  1336. }
  1337. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  1338. constructor(props: IFileButtonLineComponentProps);
  1339. onChange(evt: any): void;
  1340. render(): JSX.Element;
  1341. }
  1342. }
  1343. declare module NODEEDITOR {
  1344. interface IPropertyTabComponentProps {
  1345. globalState: GlobalState;
  1346. }
  1347. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  1348. currentNode: BABYLON.Nullable<DefaultNodeModel>;
  1349. }> {
  1350. constructor(props: IPropertyTabComponentProps);
  1351. componentWillMount(): void;
  1352. load(file: File): void;
  1353. render(): JSX.Element;
  1354. }
  1355. }
  1356. declare module NODEEDITOR {
  1357. interface IPortalProps {
  1358. globalState: GlobalState;
  1359. }
  1360. export class Portal extends React.Component<IPortalProps> {
  1361. render(): React.ReactPortal;
  1362. }
  1363. }
  1364. declare module NODEEDITOR {
  1365. export interface ICheckBoxLineComponentProps {
  1366. label: string;
  1367. target?: any;
  1368. propertyName?: string;
  1369. isSelected?: () => boolean;
  1370. onSelect?: (value: boolean) => void;
  1371. onValueChanged?: () => void;
  1372. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1373. }
  1374. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  1375. isSelected: boolean;
  1376. }> {
  1377. private static _UniqueIdSeed;
  1378. private _uniqueId;
  1379. private _localChange;
  1380. constructor(props: ICheckBoxLineComponentProps);
  1381. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  1382. isSelected: boolean;
  1383. }): boolean;
  1384. onChange(): void;
  1385. render(): JSX.Element;
  1386. }
  1387. }
  1388. declare module NODEEDITOR {
  1389. interface ITexturePropertyTabComponentProps {
  1390. globalState: GlobalState;
  1391. node: TextureNodeModel;
  1392. }
  1393. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  1394. /**
  1395. * Replaces the texture of the node
  1396. * @param file the file of the texture to use
  1397. */
  1398. replaceTexture(file: File): void;
  1399. render(): JSX.Element;
  1400. }
  1401. }
  1402. declare module NODEEDITOR {
  1403. /**
  1404. * Texture node model which stores information about a node editor block
  1405. */
  1406. export class TextureNodeModel extends DefaultNodeModel {
  1407. private _block;
  1408. /**
  1409. * Texture for the node if it exists
  1410. */
  1411. texture: BABYLON.Nullable<BABYLON.BaseTexture>;
  1412. /**
  1413. * Constructs the node model
  1414. */
  1415. constructor();
  1416. renderProperties(globalState: GlobalState): JSX.Element;
  1417. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  1418. }
  1419. }
  1420. declare module NODEEDITOR {
  1421. interface ITextureLineComponentProps {
  1422. texture: BABYLON.BaseTexture;
  1423. width: number;
  1424. height: number;
  1425. globalState?: any;
  1426. hideChannelSelect?: boolean;
  1427. }
  1428. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  1429. displayRed: boolean;
  1430. displayGreen: boolean;
  1431. displayBlue: boolean;
  1432. displayAlpha: boolean;
  1433. face: number;
  1434. }> {
  1435. constructor(props: ITextureLineComponentProps);
  1436. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  1437. displayRed: boolean;
  1438. displayGreen: boolean;
  1439. displayBlue: boolean;
  1440. displayAlpha: boolean;
  1441. face: number;
  1442. }): boolean;
  1443. componentDidMount(): void;
  1444. componentDidUpdate(): void;
  1445. updatePreview(): void;
  1446. render(): JSX.Element;
  1447. }
  1448. }
  1449. declare module NODEEDITOR {
  1450. /**
  1451. * GenericNodeWidgetProps
  1452. */
  1453. export interface ITextureNodeWidgetProps {
  1454. node: BABYLON.Nullable<TextureNodeModel>;
  1455. globalState: GlobalState;
  1456. }
  1457. /**
  1458. * Used to display a node block for the node editor
  1459. */
  1460. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  1461. /**
  1462. * Creates a GenericNodeWidget
  1463. * @param props
  1464. */
  1465. constructor(props: ITextureNodeWidgetProps);
  1466. render(): JSX.Element;
  1467. }
  1468. }
  1469. declare module NODEEDITOR {
  1470. /**
  1471. * Node factory which creates editor nodes
  1472. */
  1473. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  1474. private _globalState;
  1475. /**
  1476. * Constructs a TextureNodeFactory
  1477. */
  1478. constructor(globalState: GlobalState);
  1479. /**
  1480. * Generates a node widget
  1481. * @param diagramEngine diagram engine
  1482. * @param node node to generate
  1483. * @returns node widget jsx
  1484. */
  1485. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  1486. /**
  1487. * Gets a new instance of a node model
  1488. * @returns texture node model
  1489. */
  1490. getNewInstance(): TextureNodeModel;
  1491. }
  1492. }
  1493. declare module NODEEDITOR {
  1494. interface INumericInputComponentProps {
  1495. label: string;
  1496. value: number;
  1497. step?: number;
  1498. onChange: (value: number) => void;
  1499. }
  1500. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  1501. value: string;
  1502. }> {
  1503. static defaultProps: {
  1504. step: number;
  1505. };
  1506. private _localChange;
  1507. constructor(props: INumericInputComponentProps);
  1508. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  1509. value: string;
  1510. }): boolean;
  1511. updateValue(evt: any): void;
  1512. render(): JSX.Element;
  1513. }
  1514. }
  1515. declare module NODEEDITOR {
  1516. interface IVector2LineComponentProps {
  1517. label: string;
  1518. target: any;
  1519. propertyName: string;
  1520. step?: number;
  1521. onChange?: (newvalue: BABYLON.Vector2) => void;
  1522. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1523. }
  1524. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  1525. isExpanded: boolean;
  1526. value: BABYLON.Vector2;
  1527. }> {
  1528. static defaultProps: {
  1529. step: number;
  1530. };
  1531. private _localChange;
  1532. constructor(props: IVector2LineComponentProps);
  1533. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  1534. isExpanded: boolean;
  1535. value: BABYLON.Vector2;
  1536. }): boolean;
  1537. switchExpandState(): void;
  1538. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  1539. updateStateX(value: number): void;
  1540. updateStateY(value: number): void;
  1541. render(): JSX.Element;
  1542. }
  1543. }
  1544. declare module NODEEDITOR {
  1545. interface IVector2PropertyTabComponentProps {
  1546. globalState: GlobalState;
  1547. inputBlock: BABYLON.InputBlock;
  1548. }
  1549. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  1550. render(): JSX.Element;
  1551. }
  1552. }
  1553. declare module NODEEDITOR {
  1554. interface IVector3LineComponentProps {
  1555. label: string;
  1556. target: any;
  1557. propertyName: string;
  1558. step?: number;
  1559. onChange?: (newvalue: BABYLON.Vector3) => void;
  1560. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1561. }
  1562. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  1563. isExpanded: boolean;
  1564. value: BABYLON.Vector3;
  1565. }> {
  1566. static defaultProps: {
  1567. step: number;
  1568. };
  1569. private _localChange;
  1570. constructor(props: IVector3LineComponentProps);
  1571. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  1572. isExpanded: boolean;
  1573. value: BABYLON.Vector3;
  1574. }): boolean;
  1575. switchExpandState(): void;
  1576. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  1577. updateVector3(): void;
  1578. updateStateX(value: number): void;
  1579. updateStateY(value: number): void;
  1580. updateStateZ(value: number): void;
  1581. render(): JSX.Element;
  1582. }
  1583. }
  1584. declare module NODEEDITOR {
  1585. interface IVector3PropertyTabComponentProps {
  1586. globalState: GlobalState;
  1587. inputBlock: BABYLON.InputBlock;
  1588. }
  1589. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  1590. render(): JSX.Element;
  1591. }
  1592. }
  1593. declare module NODEEDITOR {
  1594. class ListLineOption {
  1595. label: string;
  1596. value: number | string;
  1597. }
  1598. interface IOptionsLineComponentProps {
  1599. label: string;
  1600. target: any;
  1601. propertyName: string;
  1602. options: ListLineOption[];
  1603. noDirectUpdate?: boolean;
  1604. onSelect?: (value: number | string) => void;
  1605. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1606. valuesAreStrings?: boolean;
  1607. defaultIfNull?: number;
  1608. }
  1609. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  1610. value: number | string;
  1611. }> {
  1612. private _localChange;
  1613. private _getValue;
  1614. constructor(props: IOptionsLineComponentProps);
  1615. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  1616. value: number;
  1617. }): boolean;
  1618. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  1619. updateValue(valueString: string): void;
  1620. render(): JSX.Element;
  1621. }
  1622. }
  1623. declare module NODEEDITOR {
  1624. export interface IColor3LineComponentProps {
  1625. label: string;
  1626. target: any;
  1627. propertyName: string;
  1628. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1629. onChange?: () => void;
  1630. }
  1631. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  1632. isExpanded: boolean;
  1633. color: BABYLON.Color3;
  1634. }> {
  1635. private _localChange;
  1636. constructor(props: IColor3LineComponentProps);
  1637. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  1638. color: BABYLON.Color3;
  1639. }): boolean;
  1640. onChange(newValue: string): void;
  1641. switchExpandState(): void;
  1642. raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
  1643. updateStateR(value: number): void;
  1644. updateStateG(value: number): void;
  1645. updateStateB(value: number): void;
  1646. copyToClipboard(): void;
  1647. render(): JSX.Element;
  1648. }
  1649. }
  1650. declare module NODEEDITOR {
  1651. interface IColor3PropertyTabComponentProps {
  1652. globalState: GlobalState;
  1653. inputBlock: BABYLON.InputBlock;
  1654. }
  1655. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  1656. render(): JSX.Element;
  1657. }
  1658. }
  1659. declare module NODEEDITOR {
  1660. interface IFloatLineComponentProps {
  1661. label: string;
  1662. target: any;
  1663. propertyName: string;
  1664. onChange?: (newValue: number) => void;
  1665. isInteger?: boolean;
  1666. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1667. additionalClass?: string;
  1668. step?: string;
  1669. digits?: number;
  1670. }
  1671. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  1672. value: string;
  1673. }> {
  1674. private _localChange;
  1675. private _store;
  1676. constructor(props: IFloatLineComponentProps);
  1677. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  1678. value: string;
  1679. }): boolean;
  1680. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  1681. updateValue(valueString: string): void;
  1682. render(): JSX.Element;
  1683. }
  1684. }
  1685. declare module NODEEDITOR {
  1686. interface IFloatPropertyTabComponentProps {
  1687. globalState: GlobalState;
  1688. inputBlock: BABYLON.InputBlock;
  1689. }
  1690. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  1691. render(): JSX.Element;
  1692. }
  1693. }
  1694. declare module NODEEDITOR {
  1695. interface IInputPropertyTabComponentProps {
  1696. globalState: GlobalState;
  1697. inputNode: InputNodeModel;
  1698. }
  1699. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  1700. constructor(props: IInputPropertyTabComponentProps);
  1701. renderValue(globalState: GlobalState): JSX.Element | null;
  1702. setDefaultValue(): void;
  1703. render(): JSX.Element;
  1704. }
  1705. }
  1706. declare module NODEEDITOR {
  1707. /**
  1708. * Generic node model which stores information about a node editor block
  1709. */
  1710. export class InputNodeModel extends DefaultNodeModel {
  1711. readonly inputBlock: BABYLON.InputBlock;
  1712. /**
  1713. * Constructs the node model
  1714. */
  1715. constructor();
  1716. renderProperties(globalState: GlobalState): JSX.Element;
  1717. }
  1718. }
  1719. declare module NODEEDITOR {
  1720. /**
  1721. * GenericNodeWidgetProps
  1722. */
  1723. export interface InputNodeWidgetProps {
  1724. node: BABYLON.Nullable<InputNodeModel>;
  1725. globalState: GlobalState;
  1726. }
  1727. /**
  1728. * Used to display a node block for the node editor
  1729. */
  1730. export class InputNodeWidget extends React.Component<InputNodeWidgetProps> {
  1731. /**
  1732. * Creates a GenericNodeWidget
  1733. * @param props
  1734. */
  1735. constructor(props: InputNodeWidgetProps);
  1736. renderValue(value: string): JSX.Element | null;
  1737. render(): JSX.Element | null;
  1738. }
  1739. }
  1740. declare module NODEEDITOR {
  1741. /**
  1742. * Node factory which creates editor nodes
  1743. */
  1744. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  1745. private _globalState;
  1746. /**
  1747. * Constructs a GenericNodeFactory
  1748. */
  1749. constructor(globalState: GlobalState);
  1750. /**
  1751. * Generates a node widget
  1752. * @param diagramEngine diagram engine
  1753. * @param node node to generate
  1754. * @returns node widget jsx
  1755. */
  1756. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  1757. /**
  1758. * Gets a new instance of a node model
  1759. * @returns input node model
  1760. */
  1761. getNewInstance(): InputNodeModel;
  1762. }
  1763. }
  1764. declare module NODEEDITOR {
  1765. interface ILogComponentProps {
  1766. globalState: GlobalState;
  1767. }
  1768. export class LogEntry {
  1769. message: string;
  1770. isError: boolean;
  1771. constructor(message: string, isError: boolean);
  1772. }
  1773. export class LogComponent extends React.Component<ILogComponentProps, {
  1774. logs: LogEntry[];
  1775. }> {
  1776. constructor(props: ILogComponentProps);
  1777. componentWillMount(): void;
  1778. componentDidUpdate(): void;
  1779. render(): JSX.Element;
  1780. }
  1781. }
  1782. declare module NODEEDITOR {
  1783. interface ILightPropertyTabComponentProps {
  1784. globalState: GlobalState;
  1785. node: LightNodeModel;
  1786. }
  1787. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  1788. render(): JSX.Element;
  1789. }
  1790. }
  1791. declare module NODEEDITOR {
  1792. /**
  1793. * BABYLON.Light node model which stores information about a node editor block
  1794. */
  1795. export class LightNodeModel extends DefaultNodeModel {
  1796. private _block;
  1797. /**
  1798. * BABYLON.Light for the node if it exists
  1799. */
  1800. light: BABYLON.Nullable<BABYLON.Light>;
  1801. /**
  1802. * Constructs the node model
  1803. */
  1804. constructor();
  1805. renderProperties(globalState: GlobalState): JSX.Element;
  1806. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  1807. }
  1808. }
  1809. declare module NODEEDITOR {
  1810. /**
  1811. * GenericNodeWidgetProps
  1812. */
  1813. export interface ILightNodeWidgetProps {
  1814. node: BABYLON.Nullable<LightNodeModel>;
  1815. globalState: GlobalState;
  1816. }
  1817. /**
  1818. * Used to display a node block for the node editor
  1819. */
  1820. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  1821. /**
  1822. * Creates a GenericNodeWidget
  1823. * @param props
  1824. */
  1825. constructor(props: ILightNodeWidgetProps);
  1826. render(): JSX.Element;
  1827. }
  1828. }
  1829. declare module NODEEDITOR {
  1830. /**
  1831. * Node factory which creates editor nodes
  1832. */
  1833. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  1834. private _globalState;
  1835. /**
  1836. * Constructs a LightNodeFactory
  1837. */
  1838. constructor(globalState: GlobalState);
  1839. /**
  1840. * Generates a node widget
  1841. * @param diagramEngine diagram engine
  1842. * @param node node to generate
  1843. * @returns node widget jsx
  1844. */
  1845. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  1846. /**
  1847. * Gets a new instance of a node model
  1848. * @returns light node model
  1849. */
  1850. getNewInstance(): LightNodeModel;
  1851. }
  1852. }
  1853. declare module NODEEDITOR {
  1854. interface IMessageDialogComponentProps {
  1855. globalState: GlobalState;
  1856. }
  1857. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  1858. message: string;
  1859. isError: boolean;
  1860. }> {
  1861. constructor(props: IMessageDialogComponentProps);
  1862. render(): JSX.Element | null;
  1863. }
  1864. }
  1865. declare module NODEEDITOR {
  1866. export class AdvancedLinkFactory extends DefaultLinkFactory {
  1867. constructor();
  1868. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  1869. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  1870. }
  1871. }
  1872. declare module NODEEDITOR {
  1873. interface IGraphEditorProps {
  1874. globalState: GlobalState;
  1875. }
  1876. export class NodeCreationOptions {
  1877. nodeMaterialBlock: BABYLON.NodeMaterialBlock;
  1878. type?: string;
  1879. connection?: BABYLON.NodeMaterialConnectionPoint;
  1880. }
  1881. export class GraphEditor extends React.Component<IGraphEditorProps> {
  1882. private readonly NodeWidth;
  1883. private _engine;
  1884. private _model;
  1885. private _startX;
  1886. private _moveInProgress;
  1887. private _leftWidth;
  1888. private _rightWidth;
  1889. private _nodes;
  1890. /** @hidden */
  1891. _toAdd: LinkModel[] | null;
  1892. /**
  1893. * Creates a node and recursivly creates its parent nodes from it's input
  1894. * @param nodeMaterialBlock
  1895. */
  1896. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  1897. componentDidMount(): void;
  1898. componentWillUnmount(): void;
  1899. constructor(props: IGraphEditorProps);
  1900. distributeGraph(): dagre.Node[];
  1901. mapElements(): {
  1902. id: string;
  1903. metadata: {
  1904. id: string;
  1905. width: number;
  1906. height: number;
  1907. };
  1908. }[];
  1909. mapEdges(): {
  1910. from: import("storm-react-diagrams").NodeModel;
  1911. to: import("storm-react-diagrams").NodeModel;
  1912. }[];
  1913. buildMaterial(): void;
  1914. build(needToWait?: boolean): void;
  1915. reOrganize(): void;
  1916. addValueNode(type: string): DefaultNodeModel;
  1917. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1918. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1919. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  1920. buildColumnLayout(): string;
  1921. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  1922. render(): JSX.Element;
  1923. }
  1924. }
  1925. declare module NODEEDITOR {
  1926. /**
  1927. * Generic node model which stores information about a node editor block
  1928. */
  1929. export class DefaultNodeModel extends NodeModel {
  1930. /**
  1931. * The babylon block this node represents
  1932. */
  1933. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  1934. ports: {
  1935. [s: string]: DefaultPortModel;
  1936. };
  1937. /**
  1938. * Constructs the node model
  1939. */
  1940. constructor(key: string);
  1941. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor, filterInputs: string[]): void;
  1942. renderProperties(globalState: GlobalState): JSX.Element | null;
  1943. }
  1944. }
  1945. declare module NODEEDITOR {
  1946. export class GlobalState {
  1947. nodeMaterial?: BABYLON.NodeMaterial;
  1948. hostElement: HTMLElement;
  1949. hostDocument: HTMLDocument;
  1950. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<DefaultNodeModel>>;
  1951. onRebuildRequiredObservable: BABYLON.Observable<void>;
  1952. onResetRequiredObservable: BABYLON.Observable<void>;
  1953. onUpdateRequiredObservable: BABYLON.Observable<void>;
  1954. onZoomToFitRequiredObservable: BABYLON.Observable<void>;
  1955. onReOrganizedRequiredObservable: BABYLON.Observable<void>;
  1956. onLogRequiredObservable: BABYLON.Observable<LogEntry>;
  1957. onErrorMessageDialogRequiredObservable: BABYLON.Observable<string>;
  1958. }
  1959. }
  1960. declare module NODEEDITOR {
  1961. export class Popup {
  1962. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1963. private static _CopyStyles;
  1964. }
  1965. }
  1966. declare module NODEEDITOR {
  1967. /**
  1968. * Interface used to specify creation options for the node editor
  1969. */
  1970. export interface INodeEditorOptions {
  1971. nodeMaterial: BABYLON.NodeMaterial;
  1972. }
  1973. /**
  1974. * Class used to create a node editor
  1975. */
  1976. export class NodeEditor {
  1977. /**
  1978. * Show the node editor
  1979. * @param options defines the options to use to configure the node editor
  1980. */
  1981. static Show(options: INodeEditorOptions): void;
  1982. }
  1983. }