babylon.nodeEditor.module.d.ts 74 KB

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