babylon.nodeEditor.module.d.ts 77 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987
  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 { ColorMergerBlock } from 'babylonjs/Materials/Node/Blocks/colorMergerBlock';
  9. import { VectorMergerBlock } from 'babylonjs/Materials/Node/Blocks/vectorMergerBlock';
  10. import { ColorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/colorSplitterBlock';
  11. import { VectorSplitterBlock } from 'babylonjs/Materials/Node/Blocks/vectorSplitterBlock';
  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 | ColorMergerBlock | VectorMergerBlock | ColorSplitterBlock | VectorSplitterBlock | 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): 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): 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): 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. private _blocks;
  966. /** @hidden */
  967. _toAdd: LinkModel[] | null;
  968. /**
  969. * Creates a node and recursivly creates its parent nodes from it's input
  970. * @param nodeMaterialBlock
  971. */
  972. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  973. componentDidMount(): void;
  974. componentWillUnmount(): void;
  975. constructor(props: IGraphEditorProps);
  976. zoomToFit(retry?: number): void;
  977. distributeGraph(): dagre.Node[];
  978. mapElements(): {
  979. id: string;
  980. metadata: {
  981. id: string;
  982. width: number;
  983. height: number;
  984. };
  985. }[];
  986. mapEdges(): {
  987. from: import("storm-react-diagrams").NodeModel;
  988. to: import("storm-react-diagrams").NodeModel;
  989. }[];
  990. buildMaterial(): void;
  991. build(needToWait?: boolean): void;
  992. reOrganize(): void;
  993. addValueNode(type: string): DefaultNodeModel;
  994. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  995. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  996. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  997. buildColumnLayout(): string;
  998. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  999. render(): JSX.Element;
  1000. }
  1001. }
  1002. declare module "babylonjs-node-editor/components/diagram/defaultNodeModel" {
  1003. import { NodeModel, DiagramModel } from "storm-react-diagrams";
  1004. import { Nullable } from 'babylonjs/types';
  1005. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1006. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  1007. import { GlobalState } from "babylonjs-node-editor/globalState";
  1008. import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/port/defaultPortModel";
  1009. /**
  1010. * Generic node model which stores information about a node editor block
  1011. */
  1012. export class DefaultNodeModel extends NodeModel {
  1013. /**
  1014. * The babylon block this node represents
  1015. */
  1016. block: Nullable<NodeMaterialBlock>;
  1017. ports: {
  1018. [s: string]: DefaultPortModel;
  1019. };
  1020. /**
  1021. * Constructs the node model
  1022. */
  1023. constructor(key: string);
  1024. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1025. renderProperties(globalState: GlobalState): JSX.Element | null;
  1026. }
  1027. }
  1028. declare module "babylonjs-node-editor/globalState" {
  1029. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1030. import { Nullable } from "babylonjs/types";
  1031. import { Observable } from 'babylonjs/Misc/observable';
  1032. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1033. import { LogEntry } from "babylonjs-node-editor/components/log/logComponent";
  1034. export class GlobalState {
  1035. nodeMaterial?: NodeMaterial;
  1036. hostElement: HTMLElement;
  1037. hostDocument: HTMLDocument;
  1038. onSelectionChangedObservable: Observable<Nullable<DefaultNodeModel>>;
  1039. onRebuildRequiredObservable: Observable<void>;
  1040. onResetRequiredObservable: Observable<void>;
  1041. onUpdateRequiredObservable: Observable<void>;
  1042. onZoomToFitRequiredObservable: Observable<void>;
  1043. onReOrganizedRequiredObservable: Observable<void>;
  1044. onLogRequiredObservable: Observable<LogEntry>;
  1045. onErrorMessageDialogRequiredObservable: Observable<string>;
  1046. }
  1047. }
  1048. declare module "babylonjs-node-editor/sharedComponents/popup" {
  1049. export class Popup {
  1050. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1051. private static _CopyStyles;
  1052. }
  1053. }
  1054. declare module "babylonjs-node-editor/nodeEditor" {
  1055. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1056. /**
  1057. * Interface used to specify creation options for the node editor
  1058. */
  1059. export interface INodeEditorOptions {
  1060. nodeMaterial: NodeMaterial;
  1061. }
  1062. /**
  1063. * Class used to create a node editor
  1064. */
  1065. export class NodeEditor {
  1066. /**
  1067. * Show the node editor
  1068. * @param options defines the options to use to configure the node editor
  1069. */
  1070. static Show(options: INodeEditorOptions): void;
  1071. }
  1072. }
  1073. declare module "babylonjs-node-editor/index" {
  1074. export * from "babylonjs-node-editor/nodeEditor";
  1075. }
  1076. declare module "babylonjs-node-editor/legacy/legacy" {
  1077. export * from "babylonjs-node-editor/index";
  1078. }
  1079. declare module "babylonjs-node-editor" {
  1080. export * from "babylonjs-node-editor/legacy/legacy";
  1081. }
  1082. /// <reference types="react" />
  1083. declare module NODEEDITOR {
  1084. export class BlockTools {
  1085. static GetBlockFromString(data: string): BABYLON.BonesBlock | BABYLON.InstancesBlock | BABYLON.MorphTargetsBlock | BABYLON.AlphaTestBlock | BABYLON.ImageProcessingBlock | BABYLON.ColorMergerBlock | BABYLON.VectorMergerBlock | BABYLON.ColorSplitterBlock | BABYLON.VectorSplitterBlock | BABYLON.TextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.AddBlock | BABYLON.ClampBlock | BABYLON.CrossBlock | BABYLON.DotBlock | BABYLON.MultiplyBlock | BABYLON.TransformBlock | null;
  1086. static GetColorFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1087. 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;
  1088. static GetStringFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  1089. }
  1090. }
  1091. declare module NODEEDITOR {
  1092. export class DataStorage {
  1093. private static _InMemoryStorage;
  1094. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  1095. static StoreBoolean(key: string, value: boolean): void;
  1096. static ReadNumber(key: string, defaultValue: number): number;
  1097. static StoreNumber(key: string, value: number): void;
  1098. }
  1099. }
  1100. declare module NODEEDITOR {
  1101. interface ITextLineComponentProps {
  1102. label: string;
  1103. value: string;
  1104. color?: string;
  1105. underline?: boolean;
  1106. onLink?: () => void;
  1107. }
  1108. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  1109. constructor(props: ITextLineComponentProps);
  1110. onLink(): void;
  1111. renderContent(): JSX.Element;
  1112. render(): JSX.Element;
  1113. }
  1114. }
  1115. declare module NODEEDITOR {
  1116. interface ILineContainerComponentProps {
  1117. title: string;
  1118. children: any[] | any;
  1119. closed?: boolean;
  1120. }
  1121. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  1122. isExpanded: boolean;
  1123. }> {
  1124. constructor(props: ILineContainerComponentProps);
  1125. switchExpandedState(): void;
  1126. renderHeader(): JSX.Element;
  1127. render(): JSX.Element;
  1128. }
  1129. }
  1130. declare module NODEEDITOR {
  1131. export class PropertyChangedEvent {
  1132. object: any;
  1133. property: string;
  1134. value: any;
  1135. initialValue: any;
  1136. }
  1137. }
  1138. declare module NODEEDITOR {
  1139. interface ITextInputLineComponentProps {
  1140. label: string;
  1141. target?: any;
  1142. propertyName?: string;
  1143. value?: string;
  1144. onChange?: (value: string) => void;
  1145. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1146. }
  1147. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  1148. value: string;
  1149. }> {
  1150. private _localChange;
  1151. constructor(props: ITextInputLineComponentProps);
  1152. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  1153. value: string;
  1154. }): boolean;
  1155. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  1156. updateValue(value: string): void;
  1157. render(): JSX.Element;
  1158. }
  1159. }
  1160. declare module NODEEDITOR {
  1161. /**
  1162. * Generic node model which stores information about a node editor block
  1163. */
  1164. export class GenericNodeModel extends DefaultNodeModel {
  1165. /**
  1166. * BABYLON.Vector2 for the node if it exists
  1167. */
  1168. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  1169. /**
  1170. * BABYLON.Vector3 for the node if it exists
  1171. */
  1172. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  1173. /**
  1174. * BABYLON.Vector4 for the node if it exists
  1175. */
  1176. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  1177. /**
  1178. * BABYLON.Matrix for the node if it exists
  1179. */
  1180. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  1181. /**
  1182. * Constructs the node model
  1183. */
  1184. constructor();
  1185. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1186. renderProperties(globalState: GlobalState): JSX.Element;
  1187. }
  1188. }
  1189. declare module NODEEDITOR {
  1190. export class AdvancedLinkModel extends DefaultLinkModel {
  1191. constructor();
  1192. }
  1193. }
  1194. declare module NODEEDITOR {
  1195. /**
  1196. * Port model
  1197. */
  1198. export class DefaultPortModel extends PortModel {
  1199. /**
  1200. * If the port is input or output
  1201. */
  1202. position: string | "input" | "output";
  1203. /**
  1204. * What the port is connected to
  1205. */
  1206. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  1207. defaultValue: any;
  1208. static idCounter: number;
  1209. constructor(name: string, type?: string);
  1210. canLinkToPort(port: DefaultPortModel): boolean;
  1211. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  1212. getNodeModel(): DefaultNodeModel;
  1213. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  1214. createLinkModel(): LinkModel;
  1215. static SortInputOutput(a: BABYLON.Nullable<DefaultPortModel>, b: BABYLON.Nullable<DefaultPortModel>): {
  1216. input: DefaultPortModel;
  1217. output: DefaultPortModel;
  1218. } | null;
  1219. }
  1220. }
  1221. declare module NODEEDITOR {
  1222. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  1223. name: string;
  1224. node: NodeModel;
  1225. style: any;
  1226. }
  1227. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  1228. constructor(props: IDefaultPortWidgetProps);
  1229. getClassName(): string;
  1230. render(): JSX.Element;
  1231. }
  1232. }
  1233. declare module NODEEDITOR {
  1234. export class PortHelper {
  1235. private static _GetPortTypeIndicator;
  1236. static _GetPortStyle(type: BABYLON.NodeMaterialBlockConnectionPointTypes): {
  1237. background: string;
  1238. };
  1239. static GenerateOutputPorts(node: BABYLON.Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  1240. static GenerateInputPorts(node: BABYLON.Nullable<DefaultNodeModel>, includeOnly?: string[]): JSX.Element[];
  1241. }
  1242. }
  1243. declare module NODEEDITOR {
  1244. /**
  1245. * GenericNodeWidgetProps
  1246. */
  1247. export interface GenericNodeWidgetProps {
  1248. node: BABYLON.Nullable<GenericNodeModel>;
  1249. globalState: GlobalState;
  1250. }
  1251. /**
  1252. * GenericNodeWidgetState
  1253. */
  1254. export interface GenericNodeWidgetState {
  1255. }
  1256. /**
  1257. * Used to display a node block for the node editor
  1258. */
  1259. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  1260. /**
  1261. * Creates a GenericNodeWidget
  1262. * @param props
  1263. */
  1264. constructor(props: GenericNodeWidgetProps);
  1265. render(): JSX.Element;
  1266. }
  1267. }
  1268. declare module NODEEDITOR {
  1269. /**
  1270. * Node factory which creates editor nodes
  1271. */
  1272. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  1273. private _globalState;
  1274. /**
  1275. * Constructs a GenericNodeFactory
  1276. */
  1277. constructor(globalState: GlobalState);
  1278. /**
  1279. * Generates a node widget
  1280. * @param diagramEngine diagram engine
  1281. * @param node node to generate
  1282. * @returns node widget jsx
  1283. */
  1284. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  1285. /**
  1286. * Gets a new instance of a node model
  1287. * @returns generic node model
  1288. */
  1289. getNewInstance(): GenericNodeModel;
  1290. }
  1291. }
  1292. declare module NODEEDITOR {
  1293. export interface IButtonLineComponentProps {
  1294. data: string;
  1295. }
  1296. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  1297. constructor(props: IButtonLineComponentProps);
  1298. render(): JSX.Element;
  1299. }
  1300. }
  1301. declare module NODEEDITOR {
  1302. interface INodeListComponentProps {
  1303. globalState: GlobalState;
  1304. }
  1305. export class NodeListComponent extends React.Component<INodeListComponentProps> {
  1306. render(): JSX.Element;
  1307. }
  1308. }
  1309. declare module NODEEDITOR {
  1310. export interface IButtonLineComponentProps {
  1311. label: string;
  1312. onClick: () => void;
  1313. }
  1314. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  1315. constructor(props: IButtonLineComponentProps);
  1316. render(): JSX.Element;
  1317. }
  1318. }
  1319. declare module NODEEDITOR {
  1320. export class StringTools {
  1321. /**
  1322. * Gets the base math type of node material block connection point.
  1323. * @param type Type to parse.
  1324. */
  1325. static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1326. /**
  1327. * Download a string into a file that will be saved locally by the browser
  1328. * @param content defines the string to download locally as a file
  1329. */
  1330. static DownloadAsFile(content: string, filename: string): void;
  1331. }
  1332. }
  1333. declare module NODEEDITOR {
  1334. interface IFileButtonLineComponentProps {
  1335. label: string;
  1336. onClick: (file: File) => void;
  1337. accept: string;
  1338. }
  1339. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  1340. constructor(props: IFileButtonLineComponentProps);
  1341. onChange(evt: any): void;
  1342. render(): JSX.Element;
  1343. }
  1344. }
  1345. declare module NODEEDITOR {
  1346. interface IPropertyTabComponentProps {
  1347. globalState: GlobalState;
  1348. }
  1349. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  1350. currentNode: BABYLON.Nullable<DefaultNodeModel>;
  1351. }> {
  1352. constructor(props: IPropertyTabComponentProps);
  1353. componentWillMount(): void;
  1354. load(file: File): void;
  1355. render(): JSX.Element;
  1356. }
  1357. }
  1358. declare module NODEEDITOR {
  1359. interface IPortalProps {
  1360. globalState: GlobalState;
  1361. }
  1362. export class Portal extends React.Component<IPortalProps> {
  1363. render(): React.ReactPortal;
  1364. }
  1365. }
  1366. declare module NODEEDITOR {
  1367. export interface ICheckBoxLineComponentProps {
  1368. label: string;
  1369. target?: any;
  1370. propertyName?: string;
  1371. isSelected?: () => boolean;
  1372. onSelect?: (value: boolean) => void;
  1373. onValueChanged?: () => void;
  1374. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1375. }
  1376. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  1377. isSelected: boolean;
  1378. }> {
  1379. private static _UniqueIdSeed;
  1380. private _uniqueId;
  1381. private _localChange;
  1382. constructor(props: ICheckBoxLineComponentProps);
  1383. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  1384. isSelected: boolean;
  1385. }): boolean;
  1386. onChange(): void;
  1387. render(): JSX.Element;
  1388. }
  1389. }
  1390. declare module NODEEDITOR {
  1391. interface ITexturePropertyTabComponentProps {
  1392. globalState: GlobalState;
  1393. node: TextureNodeModel;
  1394. }
  1395. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  1396. /**
  1397. * Replaces the texture of the node
  1398. * @param file the file of the texture to use
  1399. */
  1400. replaceTexture(file: File): void;
  1401. render(): JSX.Element;
  1402. }
  1403. }
  1404. declare module NODEEDITOR {
  1405. /**
  1406. * Texture node model which stores information about a node editor block
  1407. */
  1408. export class TextureNodeModel extends DefaultNodeModel {
  1409. private _block;
  1410. /**
  1411. * Texture for the node if it exists
  1412. */
  1413. texture: BABYLON.Nullable<BABYLON.BaseTexture>;
  1414. /**
  1415. * Constructs the node model
  1416. */
  1417. constructor();
  1418. renderProperties(globalState: GlobalState): JSX.Element;
  1419. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1420. }
  1421. }
  1422. declare module NODEEDITOR {
  1423. interface ITextureLineComponentProps {
  1424. texture: BABYLON.BaseTexture;
  1425. width: number;
  1426. height: number;
  1427. globalState?: any;
  1428. hideChannelSelect?: boolean;
  1429. }
  1430. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  1431. displayRed: boolean;
  1432. displayGreen: boolean;
  1433. displayBlue: boolean;
  1434. displayAlpha: boolean;
  1435. face: number;
  1436. }> {
  1437. constructor(props: ITextureLineComponentProps);
  1438. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  1439. displayRed: boolean;
  1440. displayGreen: boolean;
  1441. displayBlue: boolean;
  1442. displayAlpha: boolean;
  1443. face: number;
  1444. }): boolean;
  1445. componentDidMount(): void;
  1446. componentDidUpdate(): void;
  1447. updatePreview(): void;
  1448. render(): JSX.Element;
  1449. }
  1450. }
  1451. declare module NODEEDITOR {
  1452. /**
  1453. * GenericNodeWidgetProps
  1454. */
  1455. export interface ITextureNodeWidgetProps {
  1456. node: BABYLON.Nullable<TextureNodeModel>;
  1457. globalState: GlobalState;
  1458. }
  1459. /**
  1460. * Used to display a node block for the node editor
  1461. */
  1462. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  1463. /**
  1464. * Creates a GenericNodeWidget
  1465. * @param props
  1466. */
  1467. constructor(props: ITextureNodeWidgetProps);
  1468. render(): JSX.Element;
  1469. }
  1470. }
  1471. declare module NODEEDITOR {
  1472. /**
  1473. * Node factory which creates editor nodes
  1474. */
  1475. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  1476. private _globalState;
  1477. /**
  1478. * Constructs a TextureNodeFactory
  1479. */
  1480. constructor(globalState: GlobalState);
  1481. /**
  1482. * Generates a node widget
  1483. * @param diagramEngine diagram engine
  1484. * @param node node to generate
  1485. * @returns node widget jsx
  1486. */
  1487. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  1488. /**
  1489. * Gets a new instance of a node model
  1490. * @returns texture node model
  1491. */
  1492. getNewInstance(): TextureNodeModel;
  1493. }
  1494. }
  1495. declare module NODEEDITOR {
  1496. interface INumericInputComponentProps {
  1497. label: string;
  1498. value: number;
  1499. step?: number;
  1500. onChange: (value: number) => void;
  1501. }
  1502. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  1503. value: string;
  1504. }> {
  1505. static defaultProps: {
  1506. step: number;
  1507. };
  1508. private _localChange;
  1509. constructor(props: INumericInputComponentProps);
  1510. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  1511. value: string;
  1512. }): boolean;
  1513. updateValue(evt: any): void;
  1514. render(): JSX.Element;
  1515. }
  1516. }
  1517. declare module NODEEDITOR {
  1518. interface IVector2LineComponentProps {
  1519. label: string;
  1520. target: any;
  1521. propertyName: string;
  1522. step?: number;
  1523. onChange?: (newvalue: BABYLON.Vector2) => void;
  1524. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1525. }
  1526. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  1527. isExpanded: boolean;
  1528. value: BABYLON.Vector2;
  1529. }> {
  1530. static defaultProps: {
  1531. step: number;
  1532. };
  1533. private _localChange;
  1534. constructor(props: IVector2LineComponentProps);
  1535. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  1536. isExpanded: boolean;
  1537. value: BABYLON.Vector2;
  1538. }): boolean;
  1539. switchExpandState(): void;
  1540. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  1541. updateStateX(value: number): void;
  1542. updateStateY(value: number): void;
  1543. render(): JSX.Element;
  1544. }
  1545. }
  1546. declare module NODEEDITOR {
  1547. interface IVector2PropertyTabComponentProps {
  1548. globalState: GlobalState;
  1549. inputBlock: BABYLON.InputBlock;
  1550. }
  1551. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  1552. render(): JSX.Element;
  1553. }
  1554. }
  1555. declare module NODEEDITOR {
  1556. interface IVector3LineComponentProps {
  1557. label: string;
  1558. target: any;
  1559. propertyName: string;
  1560. step?: number;
  1561. onChange?: (newvalue: BABYLON.Vector3) => void;
  1562. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1563. }
  1564. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  1565. isExpanded: boolean;
  1566. value: BABYLON.Vector3;
  1567. }> {
  1568. static defaultProps: {
  1569. step: number;
  1570. };
  1571. private _localChange;
  1572. constructor(props: IVector3LineComponentProps);
  1573. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  1574. isExpanded: boolean;
  1575. value: BABYLON.Vector3;
  1576. }): boolean;
  1577. switchExpandState(): void;
  1578. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  1579. updateVector3(): void;
  1580. updateStateX(value: number): void;
  1581. updateStateY(value: number): void;
  1582. updateStateZ(value: number): void;
  1583. render(): JSX.Element;
  1584. }
  1585. }
  1586. declare module NODEEDITOR {
  1587. interface IVector3PropertyTabComponentProps {
  1588. globalState: GlobalState;
  1589. inputBlock: BABYLON.InputBlock;
  1590. }
  1591. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  1592. render(): JSX.Element;
  1593. }
  1594. }
  1595. declare module NODEEDITOR {
  1596. class ListLineOption {
  1597. label: string;
  1598. value: number | string;
  1599. }
  1600. interface IOptionsLineComponentProps {
  1601. label: string;
  1602. target: any;
  1603. propertyName: string;
  1604. options: ListLineOption[];
  1605. noDirectUpdate?: boolean;
  1606. onSelect?: (value: number | string) => void;
  1607. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1608. valuesAreStrings?: boolean;
  1609. defaultIfNull?: number;
  1610. }
  1611. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  1612. value: number | string;
  1613. }> {
  1614. private _localChange;
  1615. private _getValue;
  1616. constructor(props: IOptionsLineComponentProps);
  1617. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  1618. value: number;
  1619. }): boolean;
  1620. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  1621. updateValue(valueString: string): void;
  1622. render(): JSX.Element;
  1623. }
  1624. }
  1625. declare module NODEEDITOR {
  1626. export interface IColor3LineComponentProps {
  1627. label: string;
  1628. target: any;
  1629. propertyName: string;
  1630. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1631. onChange?: () => void;
  1632. }
  1633. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  1634. isExpanded: boolean;
  1635. color: BABYLON.Color3;
  1636. }> {
  1637. private _localChange;
  1638. constructor(props: IColor3LineComponentProps);
  1639. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  1640. color: BABYLON.Color3;
  1641. }): boolean;
  1642. onChange(newValue: string): void;
  1643. switchExpandState(): void;
  1644. raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
  1645. updateStateR(value: number): void;
  1646. updateStateG(value: number): void;
  1647. updateStateB(value: number): void;
  1648. copyToClipboard(): void;
  1649. render(): JSX.Element;
  1650. }
  1651. }
  1652. declare module NODEEDITOR {
  1653. interface IColor3PropertyTabComponentProps {
  1654. globalState: GlobalState;
  1655. inputBlock: BABYLON.InputBlock;
  1656. }
  1657. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  1658. render(): JSX.Element;
  1659. }
  1660. }
  1661. declare module NODEEDITOR {
  1662. interface IFloatLineComponentProps {
  1663. label: string;
  1664. target: any;
  1665. propertyName: string;
  1666. onChange?: (newValue: number) => void;
  1667. isInteger?: boolean;
  1668. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1669. additionalClass?: string;
  1670. step?: string;
  1671. digits?: number;
  1672. }
  1673. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  1674. value: string;
  1675. }> {
  1676. private _localChange;
  1677. private _store;
  1678. constructor(props: IFloatLineComponentProps);
  1679. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  1680. value: string;
  1681. }): boolean;
  1682. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  1683. updateValue(valueString: string): void;
  1684. render(): JSX.Element;
  1685. }
  1686. }
  1687. declare module NODEEDITOR {
  1688. interface IFloatPropertyTabComponentProps {
  1689. globalState: GlobalState;
  1690. inputBlock: BABYLON.InputBlock;
  1691. }
  1692. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  1693. render(): JSX.Element;
  1694. }
  1695. }
  1696. declare module NODEEDITOR {
  1697. interface IInputPropertyTabComponentProps {
  1698. globalState: GlobalState;
  1699. inputNode: InputNodeModel;
  1700. }
  1701. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  1702. constructor(props: IInputPropertyTabComponentProps);
  1703. renderValue(globalState: GlobalState): JSX.Element | null;
  1704. setDefaultValue(): void;
  1705. render(): JSX.Element;
  1706. }
  1707. }
  1708. declare module NODEEDITOR {
  1709. /**
  1710. * Generic node model which stores information about a node editor block
  1711. */
  1712. export class InputNodeModel extends DefaultNodeModel {
  1713. readonly inputBlock: BABYLON.InputBlock;
  1714. /**
  1715. * Constructs the node model
  1716. */
  1717. constructor();
  1718. renderProperties(globalState: GlobalState): JSX.Element;
  1719. }
  1720. }
  1721. declare module NODEEDITOR {
  1722. /**
  1723. * GenericNodeWidgetProps
  1724. */
  1725. export interface InputNodeWidgetProps {
  1726. node: BABYLON.Nullable<InputNodeModel>;
  1727. globalState: GlobalState;
  1728. }
  1729. /**
  1730. * Used to display a node block for the node editor
  1731. */
  1732. export class InputNodeWidget extends React.Component<InputNodeWidgetProps> {
  1733. /**
  1734. * Creates a GenericNodeWidget
  1735. * @param props
  1736. */
  1737. constructor(props: InputNodeWidgetProps);
  1738. renderValue(value: string): JSX.Element | null;
  1739. render(): JSX.Element | null;
  1740. }
  1741. }
  1742. declare module NODEEDITOR {
  1743. /**
  1744. * Node factory which creates editor nodes
  1745. */
  1746. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  1747. private _globalState;
  1748. /**
  1749. * Constructs a GenericNodeFactory
  1750. */
  1751. constructor(globalState: GlobalState);
  1752. /**
  1753. * Generates a node widget
  1754. * @param diagramEngine diagram engine
  1755. * @param node node to generate
  1756. * @returns node widget jsx
  1757. */
  1758. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  1759. /**
  1760. * Gets a new instance of a node model
  1761. * @returns input node model
  1762. */
  1763. getNewInstance(): InputNodeModel;
  1764. }
  1765. }
  1766. declare module NODEEDITOR {
  1767. interface ILogComponentProps {
  1768. globalState: GlobalState;
  1769. }
  1770. export class LogEntry {
  1771. message: string;
  1772. isError: boolean;
  1773. constructor(message: string, isError: boolean);
  1774. }
  1775. export class LogComponent extends React.Component<ILogComponentProps, {
  1776. logs: LogEntry[];
  1777. }> {
  1778. constructor(props: ILogComponentProps);
  1779. componentWillMount(): void;
  1780. componentDidUpdate(): void;
  1781. render(): JSX.Element;
  1782. }
  1783. }
  1784. declare module NODEEDITOR {
  1785. interface ILightPropertyTabComponentProps {
  1786. globalState: GlobalState;
  1787. node: LightNodeModel;
  1788. }
  1789. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  1790. render(): JSX.Element;
  1791. }
  1792. }
  1793. declare module NODEEDITOR {
  1794. /**
  1795. * BABYLON.Light node model which stores information about a node editor block
  1796. */
  1797. export class LightNodeModel extends DefaultNodeModel {
  1798. private _block;
  1799. /**
  1800. * BABYLON.Light for the node if it exists
  1801. */
  1802. light: BABYLON.Nullable<BABYLON.Light>;
  1803. /**
  1804. * Constructs the node model
  1805. */
  1806. constructor();
  1807. renderProperties(globalState: GlobalState): JSX.Element;
  1808. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1809. }
  1810. }
  1811. declare module NODEEDITOR {
  1812. /**
  1813. * GenericNodeWidgetProps
  1814. */
  1815. export interface ILightNodeWidgetProps {
  1816. node: BABYLON.Nullable<LightNodeModel>;
  1817. globalState: GlobalState;
  1818. }
  1819. /**
  1820. * Used to display a node block for the node editor
  1821. */
  1822. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  1823. /**
  1824. * Creates a GenericNodeWidget
  1825. * @param props
  1826. */
  1827. constructor(props: ILightNodeWidgetProps);
  1828. render(): JSX.Element;
  1829. }
  1830. }
  1831. declare module NODEEDITOR {
  1832. /**
  1833. * Node factory which creates editor nodes
  1834. */
  1835. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  1836. private _globalState;
  1837. /**
  1838. * Constructs a LightNodeFactory
  1839. */
  1840. constructor(globalState: GlobalState);
  1841. /**
  1842. * Generates a node widget
  1843. * @param diagramEngine diagram engine
  1844. * @param node node to generate
  1845. * @returns node widget jsx
  1846. */
  1847. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  1848. /**
  1849. * Gets a new instance of a node model
  1850. * @returns light node model
  1851. */
  1852. getNewInstance(): LightNodeModel;
  1853. }
  1854. }
  1855. declare module NODEEDITOR {
  1856. interface IMessageDialogComponentProps {
  1857. globalState: GlobalState;
  1858. }
  1859. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  1860. message: string;
  1861. isError: boolean;
  1862. }> {
  1863. constructor(props: IMessageDialogComponentProps);
  1864. render(): JSX.Element | null;
  1865. }
  1866. }
  1867. declare module NODEEDITOR {
  1868. export class AdvancedLinkFactory extends DefaultLinkFactory {
  1869. constructor();
  1870. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  1871. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  1872. }
  1873. }
  1874. declare module NODEEDITOR {
  1875. interface IGraphEditorProps {
  1876. globalState: GlobalState;
  1877. }
  1878. export class NodeCreationOptions {
  1879. nodeMaterialBlock: BABYLON.NodeMaterialBlock;
  1880. type?: string;
  1881. connection?: BABYLON.NodeMaterialConnectionPoint;
  1882. }
  1883. export class GraphEditor extends React.Component<IGraphEditorProps> {
  1884. private readonly NodeWidth;
  1885. private _engine;
  1886. private _model;
  1887. private _startX;
  1888. private _moveInProgress;
  1889. private _leftWidth;
  1890. private _rightWidth;
  1891. private _nodes;
  1892. private _blocks;
  1893. /** @hidden */
  1894. _toAdd: LinkModel[] | null;
  1895. /**
  1896. * Creates a node and recursivly creates its parent nodes from it's input
  1897. * @param nodeMaterialBlock
  1898. */
  1899. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  1900. componentDidMount(): void;
  1901. componentWillUnmount(): void;
  1902. constructor(props: IGraphEditorProps);
  1903. zoomToFit(retry?: number): void;
  1904. distributeGraph(): dagre.Node[];
  1905. mapElements(): {
  1906. id: string;
  1907. metadata: {
  1908. id: string;
  1909. width: number;
  1910. height: number;
  1911. };
  1912. }[];
  1913. mapEdges(): {
  1914. from: import("storm-react-diagrams").NodeModel;
  1915. to: import("storm-react-diagrams").NodeModel;
  1916. }[];
  1917. buildMaterial(): void;
  1918. build(needToWait?: boolean): void;
  1919. reOrganize(): void;
  1920. addValueNode(type: string): DefaultNodeModel;
  1921. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1922. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1923. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  1924. buildColumnLayout(): string;
  1925. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  1926. render(): JSX.Element;
  1927. }
  1928. }
  1929. declare module NODEEDITOR {
  1930. /**
  1931. * Generic node model which stores information about a node editor block
  1932. */
  1933. export class DefaultNodeModel extends NodeModel {
  1934. /**
  1935. * The babylon block this node represents
  1936. */
  1937. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  1938. ports: {
  1939. [s: string]: DefaultPortModel;
  1940. };
  1941. /**
  1942. * Constructs the node model
  1943. */
  1944. constructor(key: string);
  1945. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1946. renderProperties(globalState: GlobalState): JSX.Element | null;
  1947. }
  1948. }
  1949. declare module NODEEDITOR {
  1950. export class GlobalState {
  1951. nodeMaterial?: BABYLON.NodeMaterial;
  1952. hostElement: HTMLElement;
  1953. hostDocument: HTMLDocument;
  1954. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<DefaultNodeModel>>;
  1955. onRebuildRequiredObservable: BABYLON.Observable<void>;
  1956. onResetRequiredObservable: BABYLON.Observable<void>;
  1957. onUpdateRequiredObservable: BABYLON.Observable<void>;
  1958. onZoomToFitRequiredObservable: BABYLON.Observable<void>;
  1959. onReOrganizedRequiredObservable: BABYLON.Observable<void>;
  1960. onLogRequiredObservable: BABYLON.Observable<LogEntry>;
  1961. onErrorMessageDialogRequiredObservable: BABYLON.Observable<string>;
  1962. }
  1963. }
  1964. declare module NODEEDITOR {
  1965. export class Popup {
  1966. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1967. private static _CopyStyles;
  1968. }
  1969. }
  1970. declare module NODEEDITOR {
  1971. /**
  1972. * Interface used to specify creation options for the node editor
  1973. */
  1974. export interface INodeEditorOptions {
  1975. nodeMaterial: BABYLON.NodeMaterial;
  1976. }
  1977. /**
  1978. * Class used to create a node editor
  1979. */
  1980. export class NodeEditor {
  1981. /**
  1982. * Show the node editor
  1983. * @param options defines the options to use to configure the node editor
  1984. */
  1985. static Show(options: INodeEditorOptions): void;
  1986. }
  1987. }