babylon.nodeEditor.module.d.ts 98 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518
  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 { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
  13. import { TextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/textureBlock';
  14. import { ReflectionTextureBlock } from 'babylonjs/Materials/Node/Blocks/Dual/reflectionTextureBlock';
  15. import { LightBlock } from 'babylonjs/Materials/Node/Blocks/Dual/lightBlock';
  16. import { FogBlock } from 'babylonjs/Materials/Node/Blocks/Dual/fogBlock';
  17. import { VertexOutputBlock } from 'babylonjs/Materials/Node/Blocks/Vertex/vertexOutputBlock';
  18. import { FragmentOutputBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fragmentOutputBlock';
  19. import { NormalizeBlock } from 'babylonjs/Materials/Node/Blocks/normalizeBlock';
  20. import { AddBlock } from 'babylonjs/Materials/Node/Blocks/addBlock';
  21. import { ScaleBlock } from 'babylonjs/Materials/Node/Blocks/scaleBlock';
  22. import { TrigonometryBlock } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
  23. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  24. import { CrossBlock } from 'babylonjs/Materials/Node/Blocks/crossBlock';
  25. import { DotBlock } from 'babylonjs/Materials/Node/Blocks/dotBlock';
  26. import { MultiplyBlock } from 'babylonjs/Materials/Node/Blocks/multiplyBlock';
  27. import { TransformBlock } from 'babylonjs/Materials/Node/Blocks/transformBlock';
  28. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  29. import { FresnelBlock } from 'babylonjs/Materials/Node/Blocks/Fragment/fresnelBlock';
  30. import { LerpBlock } from 'babylonjs/Materials/Node/Blocks/lerpBlock';
  31. import { DivideBlock } from 'babylonjs/Materials/Node/Blocks/divideBlock';
  32. import { SubtractBlock } from 'babylonjs/Materials/Node/Blocks/subtractBlock';
  33. import { StepBlock } from 'babylonjs/Materials/Node/Blocks/stepBlock';
  34. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  35. export class BlockTools {
  36. static GetBlockFromString(data: string): BonesBlock | InstancesBlock | MorphTargetsBlock | AlphaTestBlock | ImageProcessingBlock | ColorMergerBlock | VectorMergerBlock | ColorSplitterBlock | VectorSplitterBlock | TextureBlock | ReflectionTextureBlock | LightBlock | FogBlock | VertexOutputBlock | FragmentOutputBlock | AddBlock | ClampBlock | ScaleBlock | CrossBlock | DotBlock | MultiplyBlock | TransformBlock | TrigonometryBlock | RemapBlock | NormalizeBlock | FresnelBlock | LerpBlock | DivideBlock | SubtractBlock | StepBlock | InputBlock | null;
  37. static GetColorFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): string;
  38. static GetConnectionNodeTypeFromString(type: string): NodeMaterialBlockConnectionPointTypes.Float | NodeMaterialBlockConnectionPointTypes.Vector2 | NodeMaterialBlockConnectionPointTypes.Vector3 | NodeMaterialBlockConnectionPointTypes.Vector4 | NodeMaterialBlockConnectionPointTypes.Color3 | NodeMaterialBlockConnectionPointTypes.Color4 | NodeMaterialBlockConnectionPointTypes.Matrix | NodeMaterialBlockConnectionPointTypes.AutoDetect;
  39. static GetStringFromConnectionNodeType(type: NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  40. }
  41. }
  42. declare module "babylonjs-node-editor/dataStorage" {
  43. export class DataStorage {
  44. private static _InMemoryStorage;
  45. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  46. static StoreBoolean(key: string, value: boolean): void;
  47. static ReadNumber(key: string, defaultValue: number): number;
  48. static StoreNumber(key: string, value: number): void;
  49. }
  50. }
  51. declare module "babylonjs-node-editor/sharedComponents/textLineComponent" {
  52. import * as React from "react";
  53. interface ITextLineComponentProps {
  54. label: string;
  55. value: string;
  56. color?: string;
  57. underline?: boolean;
  58. onLink?: () => void;
  59. }
  60. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  61. constructor(props: ITextLineComponentProps);
  62. onLink(): void;
  63. renderContent(): JSX.Element;
  64. render(): JSX.Element;
  65. }
  66. }
  67. declare module "babylonjs-node-editor/sharedComponents/lineContainerComponent" {
  68. import * as React from "react";
  69. interface ILineContainerComponentProps {
  70. title: string;
  71. children: any[] | any;
  72. closed?: boolean;
  73. }
  74. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  75. isExpanded: boolean;
  76. }> {
  77. constructor(props: ILineContainerComponentProps);
  78. switchExpandedState(): void;
  79. renderHeader(): JSX.Element;
  80. render(): JSX.Element;
  81. }
  82. }
  83. declare module "babylonjs-node-editor/sharedComponents/propertyChangedEvent" {
  84. export class PropertyChangedEvent {
  85. object: any;
  86. property: string;
  87. value: any;
  88. initialValue: any;
  89. }
  90. }
  91. declare module "babylonjs-node-editor/sharedComponents/textInputLineComponent" {
  92. import * as React from "react";
  93. import { Observable } from "babylonjs/Misc/observable";
  94. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  95. import { GlobalState } from "babylonjs-node-editor/globalState";
  96. interface ITextInputLineComponentProps {
  97. label: string;
  98. globalState: GlobalState;
  99. target?: any;
  100. propertyName?: string;
  101. value?: string;
  102. onChange?: (value: string) => void;
  103. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  104. }
  105. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  106. value: string;
  107. }> {
  108. private _localChange;
  109. constructor(props: ITextInputLineComponentProps);
  110. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  111. value: string;
  112. }): boolean;
  113. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  114. updateValue(value: string, raisePropertyChanged: boolean): void;
  115. render(): JSX.Element;
  116. }
  117. }
  118. declare module "babylonjs-node-editor/sharedComponents/checkBoxLineComponent" {
  119. import * as React from "react";
  120. import { Observable } from "babylonjs/Misc/observable";
  121. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  122. export interface ICheckBoxLineComponentProps {
  123. label: string;
  124. target?: any;
  125. propertyName?: string;
  126. isSelected?: () => boolean;
  127. onSelect?: (value: boolean) => void;
  128. onValueChanged?: () => void;
  129. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  130. }
  131. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  132. isSelected: boolean;
  133. }> {
  134. private static _UniqueIdSeed;
  135. private _uniqueId;
  136. private _localChange;
  137. constructor(props: ICheckBoxLineComponentProps);
  138. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  139. isSelected: boolean;
  140. }): boolean;
  141. onChange(): void;
  142. render(): JSX.Element;
  143. }
  144. }
  145. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeModel" {
  146. import { Nullable } from 'babylonjs/types';
  147. import { Vector2, Vector3, Vector4, Matrix } from 'babylonjs/Maths/math';
  148. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  149. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  150. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  151. import { GlobalState } from "babylonjs-node-editor/globalState";
  152. /**
  153. * Generic node model which stores information about a node editor block
  154. */
  155. export class GenericNodeModel extends DefaultNodeModel {
  156. /**
  157. * Vector2 for the node if it exists
  158. */
  159. vector2: Nullable<Vector2>;
  160. /**
  161. * Vector3 for the node if it exists
  162. */
  163. vector3: Nullable<Vector3>;
  164. /**
  165. * Vector4 for the node if it exists
  166. */
  167. vector4: Nullable<Vector4>;
  168. /**
  169. * Matrix for the node if it exists
  170. */
  171. matrix: Nullable<Matrix>;
  172. /**
  173. * Constructs the node model
  174. */
  175. constructor();
  176. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  177. renderProperties(globalState: GlobalState): JSX.Element;
  178. }
  179. }
  180. declare module "babylonjs-node-editor/components/diagram/link/advancedLinkModel" {
  181. import { DefaultLinkModel } from 'storm-react-diagrams';
  182. export class AdvancedLinkModel extends DefaultLinkModel {
  183. constructor();
  184. }
  185. }
  186. declare module "babylonjs-node-editor/components/diagram/port/defaultPortModel" {
  187. import { LinkModel, PortModel } from "storm-react-diagrams";
  188. import { Nullable } from 'babylonjs/types';
  189. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  190. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  191. /**
  192. * Port model
  193. */
  194. export class DefaultPortModel extends PortModel {
  195. /**
  196. * If the port is input or output
  197. */
  198. position: string | "input" | "output";
  199. /**
  200. * What the port is connected to
  201. */
  202. connection: Nullable<NodeMaterialConnectionPoint>;
  203. defaultValue: any;
  204. static idCounter: number;
  205. constructor(name: string, type?: string);
  206. canLinkToPort(port: DefaultPortModel): boolean;
  207. syncWithNodeMaterialConnectionPoint(connection: NodeMaterialConnectionPoint): void;
  208. getNodeModel(): DefaultNodeModel;
  209. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  210. createLinkModel(): LinkModel;
  211. static SortInputOutput(a: Nullable<DefaultPortModel>, b: Nullable<DefaultPortModel>): {
  212. input: DefaultPortModel;
  213. output: DefaultPortModel;
  214. } | null;
  215. }
  216. }
  217. declare module "babylonjs-node-editor/components/diagram/port/defaultPortWidget" {
  218. import { BaseWidget, PortState, NodeModel, BaseWidgetProps } from 'storm-react-diagrams';
  219. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  220. name: string;
  221. node: NodeModel;
  222. style: any;
  223. }
  224. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  225. constructor(props: IDefaultPortWidgetProps);
  226. getClassName(): string;
  227. render(): JSX.Element;
  228. }
  229. }
  230. declare module "babylonjs-node-editor/components/diagram/portHelper" {
  231. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  232. import { Nullable } from 'babylonjs/types';
  233. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  234. export class PortHelper {
  235. private static _GetPortTypeIndicator;
  236. static _GetPortStyle(type: NodeMaterialBlockConnectionPointTypes): {
  237. background: string;
  238. };
  239. static GenerateOutputPorts(node: Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  240. static GenerateInputPorts(node: Nullable<DefaultNodeModel>, includeOnly?: string[], ignoreLabel?: boolean): JSX.Element[];
  241. }
  242. }
  243. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeWidget" {
  244. import * as React from "react";
  245. import { Nullable } from 'babylonjs/types';
  246. import { GlobalState } from "babylonjs-node-editor/globalState";
  247. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  248. /**
  249. * GenericNodeWidgetProps
  250. */
  251. export interface GenericNodeWidgetProps {
  252. node: Nullable<GenericNodeModel>;
  253. globalState: GlobalState;
  254. }
  255. /**
  256. * GenericNodeWidgetState
  257. */
  258. export interface GenericNodeWidgetState {
  259. }
  260. /**
  261. * Used to display a node block for the node editor
  262. */
  263. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  264. /**
  265. * Creates a GenericNodeWidget
  266. * @param props
  267. */
  268. constructor(props: GenericNodeWidgetProps);
  269. render(): JSX.Element;
  270. }
  271. }
  272. declare module "babylonjs-node-editor/components/diagram/generic/genericNodeFactory" {
  273. import * as SRD from "storm-react-diagrams";
  274. import { GenericNodeModel } from "babylonjs-node-editor/components/diagram/generic/genericNodeModel";
  275. import { GlobalState } from "babylonjs-node-editor/globalState";
  276. /**
  277. * Node factory which creates editor nodes
  278. */
  279. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  280. private _globalState;
  281. /**
  282. * Constructs a GenericNodeFactory
  283. */
  284. constructor(globalState: GlobalState);
  285. /**
  286. * Generates a node widget
  287. * @param diagramEngine diagram engine
  288. * @param node node to generate
  289. * @returns node widget jsx
  290. */
  291. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  292. /**
  293. * Gets a new instance of a node model
  294. * @returns generic node model
  295. */
  296. getNewInstance(): GenericNodeModel;
  297. }
  298. }
  299. declare module "babylonjs-node-editor/sharedComponents/draggableLineComponent" {
  300. import * as React from "react";
  301. export interface IButtonLineComponentProps {
  302. data: string;
  303. }
  304. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  305. constructor(props: IButtonLineComponentProps);
  306. render(): JSX.Element;
  307. }
  308. }
  309. declare module "babylonjs-node-editor/components/nodeList/nodeListComponent" {
  310. import * as React from "react";
  311. import { GlobalState } from "babylonjs-node-editor/globalState";
  312. interface INodeListComponentProps {
  313. globalState: GlobalState;
  314. }
  315. export class NodeListComponent extends React.Component<INodeListComponentProps, {
  316. filter: string;
  317. }> {
  318. constructor(props: INodeListComponentProps);
  319. filterContent(filter: string): void;
  320. render(): JSX.Element;
  321. }
  322. }
  323. declare module "babylonjs-node-editor/sharedComponents/buttonLineComponent" {
  324. import * as React from "react";
  325. export interface IButtonLineComponentProps {
  326. label: string;
  327. onClick: () => void;
  328. }
  329. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  330. constructor(props: IButtonLineComponentProps);
  331. render(): JSX.Element;
  332. }
  333. }
  334. declare module "babylonjs-node-editor/stringTools" {
  335. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPointTypes';
  336. export class StringTools {
  337. /**
  338. * Gets the base math type of node material block connection point.
  339. * @param type Type to parse.
  340. */
  341. static GetBaseType(type: NodeMaterialBlockConnectionPointTypes): string;
  342. /**
  343. * Download a string into a file that will be saved locally by the browser
  344. * @param content defines the string to download locally as a file
  345. */
  346. static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
  347. }
  348. }
  349. declare module "babylonjs-node-editor/sharedComponents/fileButtonLineComponent" {
  350. import * as React from "react";
  351. interface IFileButtonLineComponentProps {
  352. label: string;
  353. onClick: (file: File) => void;
  354. accept: string;
  355. }
  356. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  357. constructor(props: IFileButtonLineComponentProps);
  358. onChange(evt: any): void;
  359. render(): JSX.Element;
  360. }
  361. }
  362. declare module "babylonjs-node-editor/nodeLocationInfo" {
  363. export interface INodeLocationInfo {
  364. blockId: number;
  365. x: number;
  366. y: number;
  367. }
  368. }
  369. declare module "babylonjs-node-editor/components/propertyTab/propertyTabComponent" {
  370. import * as React from "react";
  371. import { GlobalState } from "babylonjs-node-editor/globalState";
  372. import { Nullable } from 'babylonjs/types';
  373. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  374. interface IPropertyTabComponentProps {
  375. globalState: GlobalState;
  376. }
  377. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  378. currentNode: Nullable<DefaultNodeModel>;
  379. }> {
  380. constructor(props: IPropertyTabComponentProps);
  381. componentWillMount(): void;
  382. load(file: File): void;
  383. save(): void;
  384. render(): JSX.Element;
  385. }
  386. }
  387. declare module "babylonjs-node-editor/portal" {
  388. import * as React from "react";
  389. import { GlobalState } from "babylonjs-node-editor/globalState";
  390. interface IPortalProps {
  391. globalState: GlobalState;
  392. }
  393. export class Portal extends React.Component<IPortalProps> {
  394. render(): React.ReactPortal;
  395. }
  396. }
  397. declare module "babylonjs-node-editor/components/diagram/texture/texturePropertyTabComponent" {
  398. import * as React from "react";
  399. import { GlobalState } from "babylonjs-node-editor/globalState";
  400. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  401. interface ITexturePropertyTabComponentProps {
  402. globalState: GlobalState;
  403. node: TextureNodeModel;
  404. }
  405. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  406. updateAftertextureLoad(): void;
  407. /**
  408. * Replaces the texture of the node
  409. * @param file the file of the texture to use
  410. */
  411. replaceTexture(file: File): void;
  412. render(): JSX.Element;
  413. }
  414. }
  415. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeModel" {
  416. import { Nullable } from 'babylonjs/types';
  417. import { BaseTexture } from 'babylonjs/Materials/Textures/baseTexture';
  418. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  419. import { GlobalState } from "babylonjs-node-editor/globalState";
  420. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  421. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  422. /**
  423. * Texture node model which stores information about a node editor block
  424. */
  425. export class TextureNodeModel extends DefaultNodeModel {
  426. private _block;
  427. /**
  428. * Texture for the node if it exists
  429. */
  430. texture: Nullable<BaseTexture>;
  431. /**
  432. * Constructs the node model
  433. */
  434. constructor();
  435. renderProperties(globalState: GlobalState): JSX.Element;
  436. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  437. }
  438. }
  439. declare module "babylonjs-node-editor/sharedComponents/textureLineComponent" {
  440. import * as React from "react";
  441. import { BaseTexture } from "babylonjs/Materials/Textures/baseTexture";
  442. interface ITextureLineComponentProps {
  443. texture: BaseTexture;
  444. width: number;
  445. height: number;
  446. globalState?: any;
  447. hideChannelSelect?: boolean;
  448. }
  449. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  450. displayRed: boolean;
  451. displayGreen: boolean;
  452. displayBlue: boolean;
  453. displayAlpha: boolean;
  454. face: number;
  455. }> {
  456. constructor(props: ITextureLineComponentProps);
  457. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  458. displayRed: boolean;
  459. displayGreen: boolean;
  460. displayBlue: boolean;
  461. displayAlpha: boolean;
  462. face: number;
  463. }): boolean;
  464. componentDidMount(): void;
  465. componentDidUpdate(): void;
  466. updatePreview(): void;
  467. render(): JSX.Element;
  468. }
  469. }
  470. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeWidget" {
  471. import * as React from "react";
  472. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  473. import { Nullable } from 'babylonjs/types';
  474. import { GlobalState } from "babylonjs-node-editor/globalState";
  475. /**
  476. * GenericNodeWidgetProps
  477. */
  478. export interface ITextureNodeWidgetProps {
  479. node: Nullable<TextureNodeModel>;
  480. globalState: GlobalState;
  481. }
  482. /**
  483. * Used to display a node block for the node editor
  484. */
  485. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  486. /**
  487. * Creates a GenericNodeWidget
  488. * @param props
  489. */
  490. constructor(props: ITextureNodeWidgetProps);
  491. render(): JSX.Element;
  492. }
  493. }
  494. declare module "babylonjs-node-editor/components/diagram/texture/textureNodeFactory" {
  495. import * as SRD from "storm-react-diagrams";
  496. import { TextureNodeModel } from "babylonjs-node-editor/components/diagram/texture/textureNodeModel";
  497. import { GlobalState } from "babylonjs-node-editor/globalState";
  498. /**
  499. * Node factory which creates editor nodes
  500. */
  501. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  502. private _globalState;
  503. /**
  504. * Constructs a TextureNodeFactory
  505. */
  506. constructor(globalState: GlobalState);
  507. /**
  508. * Generates a node widget
  509. * @param diagramEngine diagram engine
  510. * @param node node to generate
  511. * @returns node widget jsx
  512. */
  513. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  514. /**
  515. * Gets a new instance of a node model
  516. * @returns texture node model
  517. */
  518. getNewInstance(): TextureNodeModel;
  519. }
  520. }
  521. declare module "babylonjs-node-editor/sharedComponents/numericInputComponent" {
  522. import * as React from "react";
  523. interface INumericInputComponentProps {
  524. label: string;
  525. value: number;
  526. step?: number;
  527. onChange: (value: number) => void;
  528. }
  529. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  530. value: string;
  531. }> {
  532. static defaultProps: {
  533. step: number;
  534. };
  535. private _localChange;
  536. constructor(props: INumericInputComponentProps);
  537. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  538. value: string;
  539. }): boolean;
  540. updateValue(evt: any): void;
  541. render(): JSX.Element;
  542. }
  543. }
  544. declare module "babylonjs-node-editor/sharedComponents/vector2LineComponent" {
  545. import * as React from "react";
  546. import { Vector2 } from "babylonjs/Maths/math";
  547. import { Observable } from "babylonjs/Misc/observable";
  548. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  549. interface IVector2LineComponentProps {
  550. label: string;
  551. target: any;
  552. propertyName: string;
  553. step?: number;
  554. onChange?: (newvalue: Vector2) => void;
  555. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  556. }
  557. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  558. isExpanded: boolean;
  559. value: Vector2;
  560. }> {
  561. static defaultProps: {
  562. step: number;
  563. };
  564. private _localChange;
  565. constructor(props: IVector2LineComponentProps);
  566. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  567. isExpanded: boolean;
  568. value: Vector2;
  569. }): boolean;
  570. switchExpandState(): void;
  571. raiseOnPropertyChanged(previousValue: Vector2): void;
  572. updateStateX(value: number): void;
  573. updateStateY(value: number): void;
  574. render(): JSX.Element;
  575. }
  576. }
  577. declare module "babylonjs-node-editor/components/propertyTab/properties/vector2PropertyTabComponent" {
  578. import * as React from "react";
  579. import { GlobalState } from "babylonjs-node-editor/globalState";
  580. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  581. interface IVector2PropertyTabComponentProps {
  582. globalState: GlobalState;
  583. inputBlock: InputBlock;
  584. }
  585. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  586. render(): JSX.Element;
  587. }
  588. }
  589. declare module "babylonjs-node-editor/sharedComponents/vector3LineComponent" {
  590. import * as React from "react";
  591. import { Vector3 } from "babylonjs/Maths/math";
  592. import { Observable } from "babylonjs/Misc/observable";
  593. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  594. interface IVector3LineComponentProps {
  595. label: string;
  596. target: any;
  597. propertyName: string;
  598. step?: number;
  599. onChange?: (newvalue: Vector3) => void;
  600. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  601. }
  602. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  603. isExpanded: boolean;
  604. value: Vector3;
  605. }> {
  606. static defaultProps: {
  607. step: number;
  608. };
  609. private _localChange;
  610. constructor(props: IVector3LineComponentProps);
  611. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  612. isExpanded: boolean;
  613. value: Vector3;
  614. }): boolean;
  615. switchExpandState(): void;
  616. raiseOnPropertyChanged(previousValue: Vector3): void;
  617. updateVector3(): void;
  618. updateStateX(value: number): void;
  619. updateStateY(value: number): void;
  620. updateStateZ(value: number): void;
  621. render(): JSX.Element;
  622. }
  623. }
  624. declare module "babylonjs-node-editor/components/propertyTab/properties/vector3PropertyTabComponent" {
  625. import * as React from "react";
  626. import { GlobalState } from "babylonjs-node-editor/globalState";
  627. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  628. interface IVector3PropertyTabComponentProps {
  629. globalState: GlobalState;
  630. inputBlock: InputBlock;
  631. }
  632. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  633. render(): JSX.Element;
  634. }
  635. }
  636. declare module "babylonjs-node-editor/sharedComponents/optionsLineComponent" {
  637. import * as React from "react";
  638. import { Observable } from "babylonjs/Misc/observable";
  639. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  640. class ListLineOption {
  641. label: string;
  642. value: number | string;
  643. }
  644. interface IOptionsLineComponentProps {
  645. label: string;
  646. target: any;
  647. propertyName?: string;
  648. options: ListLineOption[];
  649. noDirectUpdate?: boolean;
  650. onSelect?: (value: number | string) => void;
  651. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  652. valuesAreStrings?: boolean;
  653. defaultIfNull?: number;
  654. getSelection?: (target: any) => number;
  655. }
  656. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  657. value: number | string;
  658. }> {
  659. private _localChange;
  660. private _getValue;
  661. constructor(props: IOptionsLineComponentProps);
  662. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  663. value: number;
  664. }): boolean;
  665. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  666. updateValue(valueString: string): void;
  667. render(): JSX.Element;
  668. }
  669. }
  670. declare module "babylonjs-node-editor/sharedComponents/color3LineComponent" {
  671. import * as React from "react";
  672. import { Observable } from "babylonjs/Misc/observable";
  673. import { Color3 } from "babylonjs/Maths/math";
  674. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  675. export interface IColor3LineComponentProps {
  676. label: string;
  677. target: any;
  678. propertyName: string;
  679. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  680. onChange?: () => void;
  681. }
  682. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  683. isExpanded: boolean;
  684. color: Color3;
  685. }> {
  686. private _localChange;
  687. constructor(props: IColor3LineComponentProps);
  688. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  689. color: Color3;
  690. }): boolean;
  691. onChange(newValue: string): void;
  692. switchExpandState(): void;
  693. raiseOnPropertyChanged(previousValue: Color3): void;
  694. updateStateR(value: number): void;
  695. updateStateG(value: number): void;
  696. updateStateB(value: number): void;
  697. copyToClipboard(): void;
  698. render(): JSX.Element;
  699. }
  700. }
  701. declare module "babylonjs-node-editor/components/propertyTab/properties/color3PropertyTabComponent" {
  702. import * as React from "react";
  703. import { GlobalState } from "babylonjs-node-editor/globalState";
  704. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  705. interface IColor3PropertyTabComponentProps {
  706. globalState: GlobalState;
  707. inputBlock: InputBlock;
  708. }
  709. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  710. render(): JSX.Element;
  711. }
  712. }
  713. declare module "babylonjs-node-editor/sharedComponents/floatLineComponent" {
  714. import * as React from "react";
  715. import { Observable } from "babylonjs/Misc/observable";
  716. import { PropertyChangedEvent } from "babylonjs-node-editor/sharedComponents/propertyChangedEvent";
  717. interface IFloatLineComponentProps {
  718. label: string;
  719. target: any;
  720. propertyName: string;
  721. onChange?: (newValue: number) => void;
  722. isInteger?: boolean;
  723. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  724. additionalClass?: string;
  725. step?: string;
  726. digits?: number;
  727. }
  728. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  729. value: string;
  730. }> {
  731. private _localChange;
  732. private _store;
  733. constructor(props: IFloatLineComponentProps);
  734. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  735. value: string;
  736. }): boolean;
  737. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  738. updateValue(valueString: string): void;
  739. render(): JSX.Element;
  740. }
  741. }
  742. declare module "babylonjs-node-editor/components/propertyTab/properties/floatPropertyTabComponent" {
  743. import * as React from "react";
  744. import { GlobalState } from "babylonjs-node-editor/globalState";
  745. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  746. interface IFloatPropertyTabComponentProps {
  747. globalState: GlobalState;
  748. inputBlock: InputBlock;
  749. }
  750. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  751. render(): JSX.Element;
  752. }
  753. }
  754. declare module "babylonjs-node-editor/components/diagram/input/inputNodePropertyComponent" {
  755. import * as React from "react";
  756. import { GlobalState } from "babylonjs-node-editor/globalState";
  757. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  758. interface IInputPropertyTabComponentProps {
  759. globalState: GlobalState;
  760. inputNode: InputNodeModel;
  761. }
  762. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  763. constructor(props: IInputPropertyTabComponentProps);
  764. renderValue(globalState: GlobalState): JSX.Element | null;
  765. setDefaultValue(): void;
  766. render(): JSX.Element;
  767. }
  768. }
  769. declare module "babylonjs-node-editor/components/diagram/input/inputNodeModel" {
  770. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  771. import { GlobalState } from "babylonjs-node-editor/globalState";
  772. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  773. /**
  774. * Generic node model which stores information about a node editor block
  775. */
  776. export class InputNodeModel extends DefaultNodeModel {
  777. readonly inputBlock: InputBlock;
  778. /**
  779. * Constructs the node model
  780. */
  781. constructor();
  782. renderProperties(globalState: GlobalState): JSX.Element;
  783. }
  784. }
  785. declare module "babylonjs-node-editor/components/diagram/input/inputNodeWidget" {
  786. import * as React from "react";
  787. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  788. import { Nullable } from 'babylonjs/types';
  789. import { GlobalState } from "babylonjs-node-editor/globalState";
  790. /**
  791. * GenericNodeWidgetProps
  792. */
  793. export interface IInputNodeWidgetProps {
  794. node: Nullable<InputNodeModel>;
  795. globalState: GlobalState;
  796. }
  797. /**
  798. * Used to display a node block for the node editor
  799. */
  800. export class InputNodeWidget extends React.Component<IInputNodeWidgetProps> {
  801. /**
  802. * Creates a GenericNodeWidget
  803. * @param props
  804. */
  805. constructor(props: IInputNodeWidgetProps);
  806. renderValue(value: string): JSX.Element | null;
  807. render(): JSX.Element | null;
  808. }
  809. }
  810. declare module "babylonjs-node-editor/components/diagram/input/inputNodeFactory" {
  811. import * as SRD from "storm-react-diagrams";
  812. import { GlobalState } from "babylonjs-node-editor/globalState";
  813. import { InputNodeModel } from "babylonjs-node-editor/components/diagram/input/inputNodeModel";
  814. /**
  815. * Node factory which creates editor nodes
  816. */
  817. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  818. private _globalState;
  819. /**
  820. * Constructs a GenericNodeFactory
  821. */
  822. constructor(globalState: GlobalState);
  823. /**
  824. * Generates a node widget
  825. * @param diagramEngine diagram engine
  826. * @param node node to generate
  827. * @returns node widget jsx
  828. */
  829. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  830. /**
  831. * Gets a new instance of a node model
  832. * @returns input node model
  833. */
  834. getNewInstance(): InputNodeModel;
  835. }
  836. }
  837. declare module "babylonjs-node-editor/components/log/logComponent" {
  838. import * as React from "react";
  839. import { GlobalState } from "babylonjs-node-editor/globalState";
  840. interface ILogComponentProps {
  841. globalState: GlobalState;
  842. }
  843. export class LogEntry {
  844. message: string;
  845. isError: boolean;
  846. constructor(message: string, isError: boolean);
  847. }
  848. export class LogComponent extends React.Component<ILogComponentProps, {
  849. logs: LogEntry[];
  850. }> {
  851. constructor(props: ILogComponentProps);
  852. componentWillMount(): void;
  853. componentDidUpdate(): void;
  854. render(): JSX.Element;
  855. }
  856. }
  857. declare module "babylonjs-node-editor/components/diagram/light/lightPropertyTabComponent" {
  858. import * as React from "react";
  859. import { GlobalState } from "babylonjs-node-editor/globalState";
  860. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  861. interface ILightPropertyTabComponentProps {
  862. globalState: GlobalState;
  863. node: LightNodeModel;
  864. }
  865. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  866. render(): JSX.Element;
  867. }
  868. }
  869. declare module "babylonjs-node-editor/components/diagram/light/lightNodeModel" {
  870. import { Nullable } from 'babylonjs/types';
  871. import { Light } from 'babylonjs/Lights/light';
  872. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  873. import { GlobalState } from "babylonjs-node-editor/globalState";
  874. import { NodeCreationOptions, GraphEditor } from "babylonjs-node-editor/graphEditor";
  875. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  876. /**
  877. * Light node model which stores information about a node editor block
  878. */
  879. export class LightNodeModel extends DefaultNodeModel {
  880. private _block;
  881. /**
  882. * Light for the node if it exists
  883. */
  884. light: Nullable<Light>;
  885. /**
  886. * Constructs the node model
  887. */
  888. constructor();
  889. renderProperties(globalState: GlobalState): JSX.Element;
  890. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  891. }
  892. }
  893. declare module "babylonjs-node-editor/components/diagram/light/lightNodeWidget" {
  894. import * as React from "react";
  895. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  896. import { Nullable } from 'babylonjs/types';
  897. import { GlobalState } from "babylonjs-node-editor/globalState";
  898. /**
  899. * GenericNodeWidgetProps
  900. */
  901. export interface ILightNodeWidgetProps {
  902. node: Nullable<LightNodeModel>;
  903. globalState: GlobalState;
  904. }
  905. /**
  906. * Used to display a node block for the node editor
  907. */
  908. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  909. /**
  910. * Creates a GenericNodeWidget
  911. * @param props
  912. */
  913. constructor(props: ILightNodeWidgetProps);
  914. render(): JSX.Element;
  915. }
  916. }
  917. declare module "babylonjs-node-editor/components/diagram/light/lightNodeFactory" {
  918. import * as SRD from "storm-react-diagrams";
  919. import { LightNodeModel } from "babylonjs-node-editor/components/diagram/light/lightNodeModel";
  920. import { GlobalState } from "babylonjs-node-editor/globalState";
  921. /**
  922. * Node factory which creates editor nodes
  923. */
  924. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  925. private _globalState;
  926. /**
  927. * Constructs a LightNodeFactory
  928. */
  929. constructor(globalState: GlobalState);
  930. /**
  931. * Generates a node widget
  932. * @param diagramEngine diagram engine
  933. * @param node node to generate
  934. * @returns node widget jsx
  935. */
  936. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  937. /**
  938. * Gets a new instance of a node model
  939. * @returns light node model
  940. */
  941. getNewInstance(): LightNodeModel;
  942. }
  943. }
  944. declare module "babylonjs-node-editor/sharedComponents/messageDialog" {
  945. import * as React from "react";
  946. import { GlobalState } from "babylonjs-node-editor/globalState";
  947. interface IMessageDialogComponentProps {
  948. globalState: GlobalState;
  949. }
  950. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  951. message: string;
  952. isError: boolean;
  953. }> {
  954. constructor(props: IMessageDialogComponentProps);
  955. render(): JSX.Element | null;
  956. }
  957. }
  958. declare module "babylonjs-node-editor/components/diagram/link/advancedLinkFactory" {
  959. import { DefaultLinkFactory, DefaultLinkWidget } from 'storm-react-diagrams';
  960. import { AdvancedLinkModel } from "babylonjs-node-editor/components/diagram/link/advancedLinkModel";
  961. export class AdvancedLinkFactory extends DefaultLinkFactory {
  962. constructor();
  963. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  964. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  965. }
  966. }
  967. declare module "babylonjs-node-editor/components/diagram/remap/remapNodePropertyComponent" {
  968. import * as React from "react";
  969. import { GlobalState } from "babylonjs-node-editor/globalState";
  970. import { RemapNodeModel } from "babylonjs-node-editor/components/diagram/remap/remapNodeModel";
  971. interface IRemapPropertyTabComponentProps {
  972. globalState: GlobalState;
  973. remapNode: RemapNodeModel;
  974. }
  975. export class RemapPropertyTabComponentProps extends React.Component<IRemapPropertyTabComponentProps> {
  976. constructor(props: IRemapPropertyTabComponentProps);
  977. forceRebuild(): void;
  978. render(): JSX.Element;
  979. }
  980. }
  981. declare module "babylonjs-node-editor/components/diagram/remap/remapNodeModel" {
  982. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  983. import { GlobalState } from "babylonjs-node-editor/globalState";
  984. import { RemapBlock } from 'babylonjs/Materials/Node/Blocks/remapBlock';
  985. /**
  986. * Generic node model which stores information about a node editor block
  987. */
  988. export class RemapNodeModel extends DefaultNodeModel {
  989. readonly remapBlock: RemapBlock;
  990. /**
  991. * Constructs the node model
  992. */
  993. constructor();
  994. renderProperties(globalState: GlobalState): JSX.Element;
  995. }
  996. }
  997. declare module "babylonjs-node-editor/components/diagram/remap/remapNodeWidget" {
  998. import * as React from "react";
  999. import { RemapNodeModel } from "babylonjs-node-editor/components/diagram/remap/remapNodeModel";
  1000. import { Nullable } from 'babylonjs/types';
  1001. import { GlobalState } from "babylonjs-node-editor/globalState";
  1002. /**
  1003. * RemapNodeWidgetProps
  1004. */
  1005. export interface RemapNodeWidgetProps {
  1006. node: Nullable<RemapNodeModel>;
  1007. globalState: GlobalState;
  1008. }
  1009. /**
  1010. * Used to display a node block for the node editor
  1011. */
  1012. export class RemapNodeWidget extends React.Component<RemapNodeWidgetProps> {
  1013. /**
  1014. * Creates a GenericNodeWidget
  1015. * @param props
  1016. */
  1017. constructor(props: RemapNodeWidgetProps);
  1018. renderValue(value: string): JSX.Element | null;
  1019. render(): JSX.Element;
  1020. }
  1021. }
  1022. declare module "babylonjs-node-editor/components/diagram/remap/remapNodeFactory" {
  1023. import * as SRD from "storm-react-diagrams";
  1024. import { GlobalState } from "babylonjs-node-editor/globalState";
  1025. import { RemapNodeModel } from "babylonjs-node-editor/components/diagram/remap/remapNodeModel";
  1026. /**
  1027. * Node factory which creates editor nodes
  1028. */
  1029. export class RemapNodeFactory extends SRD.AbstractNodeFactory {
  1030. private _globalState;
  1031. /**
  1032. * Constructs a GenericNodeFactory
  1033. */
  1034. constructor(globalState: GlobalState);
  1035. /**
  1036. * Generates a node widget
  1037. * @param diagramEngine diagram engine
  1038. * @param node node to generate
  1039. * @returns node widget jsx
  1040. */
  1041. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: RemapNodeModel): JSX.Element;
  1042. /**
  1043. * Gets a new instance of a node model
  1044. * @returns input node model
  1045. */
  1046. getNewInstance(): RemapNodeModel;
  1047. }
  1048. }
  1049. declare module "babylonjs-node-editor/graphHelper" {
  1050. import * as dagre from "babylonjs-node-editor/dagre";
  1051. import { DiagramModel } from 'storm-react-diagrams/dist/@types/src/models/DiagramModel';
  1052. export class GraphHelper {
  1053. static DistributeGraph(model: DiagramModel): dagre.Node[];
  1054. private static _MapElements;
  1055. private static _MapEdges;
  1056. }
  1057. }
  1058. declare module "babylonjs-node-editor/components/preview/previewMeshType" {
  1059. export enum PreviewMeshType {
  1060. Sphere = 0,
  1061. Box = 1,
  1062. Torus = 2,
  1063. Cylinder = 3
  1064. }
  1065. }
  1066. declare module "babylonjs-node-editor/components/preview/previewManager" {
  1067. import { GlobalState } from "babylonjs-node-editor/globalState";
  1068. export class PreviewManager {
  1069. private _nodeMaterial;
  1070. private _onBuildObserver;
  1071. private _onPreviewMeshTypeChangedObserver;
  1072. private _onUpdateRequiredObserver;
  1073. private _engine;
  1074. private _scene;
  1075. private _light;
  1076. private _dummy;
  1077. private _camera;
  1078. private _material;
  1079. private _globalState;
  1080. constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
  1081. private _refreshPreviewMesh;
  1082. private _updatePreview;
  1083. dispose(): void;
  1084. }
  1085. }
  1086. declare module "babylonjs-node-editor/components/preview/previewMeshControlComponent" {
  1087. import * as React from "react";
  1088. import { GlobalState } from "babylonjs-node-editor/globalState";
  1089. import { PreviewMeshType } from "babylonjs-node-editor/components/preview/previewMeshType";
  1090. interface IPreviewMeshControlComponent {
  1091. globalState: GlobalState;
  1092. }
  1093. export class PreviewMeshControlComponent extends React.Component<IPreviewMeshControlComponent> {
  1094. changeMeshType(newOne: PreviewMeshType): void;
  1095. render(): JSX.Element;
  1096. }
  1097. }
  1098. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodePropertyComponent" {
  1099. import * as React from "react";
  1100. import { GlobalState } from "babylonjs-node-editor/globalState";
  1101. import { TrigonometryNodeModel } from "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel";
  1102. interface ITrigonometryTabComponentProps {
  1103. globalState: GlobalState;
  1104. trigonometryNode: TrigonometryNodeModel;
  1105. }
  1106. export class TrigonometryPropertyTabComponentProps extends React.Component<ITrigonometryTabComponentProps> {
  1107. constructor(props: ITrigonometryTabComponentProps);
  1108. render(): JSX.Element;
  1109. }
  1110. }
  1111. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel" {
  1112. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1113. import { GlobalState } from "babylonjs-node-editor/globalState";
  1114. import { TrigonometryBlock } from 'babylonjs/Materials/Node/Blocks/trigonometryBlock';
  1115. /**
  1116. * Generic node model which stores information about a node editor block
  1117. */
  1118. export class TrigonometryNodeModel extends DefaultNodeModel {
  1119. readonly trigonometryBlock: TrigonometryBlock;
  1120. /**
  1121. * Constructs the node model
  1122. */
  1123. constructor();
  1124. renderProperties(globalState: GlobalState): JSX.Element;
  1125. }
  1126. }
  1127. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeWidget" {
  1128. import * as React from "react";
  1129. import { TrigonometryNodeModel } from "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel";
  1130. import { Nullable } from 'babylonjs/types';
  1131. import { GlobalState } from "babylonjs-node-editor/globalState";
  1132. /**
  1133. * GenericNodeWidgetProps
  1134. */
  1135. export interface ITrigonometryNodeWidgetProps {
  1136. node: Nullable<TrigonometryNodeModel>;
  1137. globalState: GlobalState;
  1138. }
  1139. /**
  1140. * Used to display a node block for the node editor
  1141. */
  1142. export class TrigonometryNodeWidget extends React.Component<ITrigonometryNodeWidgetProps> {
  1143. /**
  1144. * Creates a GenericNodeWidget
  1145. * @param props
  1146. */
  1147. constructor(props: ITrigonometryNodeWidgetProps);
  1148. render(): JSX.Element;
  1149. }
  1150. }
  1151. declare module "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeFactory" {
  1152. import * as SRD from "storm-react-diagrams";
  1153. import { GlobalState } from "babylonjs-node-editor/globalState";
  1154. import { TrigonometryNodeModel } from "babylonjs-node-editor/components/diagram/trigonometry/trigonometryNodeModel";
  1155. /**
  1156. * Node factory which creates editor nodes
  1157. */
  1158. export class TrigonometryNodeFactory extends SRD.AbstractNodeFactory {
  1159. private _globalState;
  1160. /**
  1161. * Constructs a GenericNodeFactory
  1162. */
  1163. constructor(globalState: GlobalState);
  1164. /**
  1165. * Generates a node widget
  1166. * @param diagramEngine diagram engine
  1167. * @param node node to generate
  1168. * @returns node widget jsx
  1169. */
  1170. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TrigonometryNodeModel): JSX.Element;
  1171. /**
  1172. * Gets a new instance of a node model
  1173. * @returns input node model
  1174. */
  1175. getNewInstance(): TrigonometryNodeModel;
  1176. }
  1177. }
  1178. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodePropertyComponent" {
  1179. import * as React from "react";
  1180. import { GlobalState } from "babylonjs-node-editor/globalState";
  1181. import { ClampNodeModel } from "babylonjs-node-editor/components/diagram/clamp/clampNodeModel";
  1182. interface IClampPropertyTabComponentProps {
  1183. globalState: GlobalState;
  1184. remapNode: ClampNodeModel;
  1185. }
  1186. export class ClampPropertyTabComponentProps extends React.Component<IClampPropertyTabComponentProps> {
  1187. constructor(props: IClampPropertyTabComponentProps);
  1188. forceRebuild(): void;
  1189. render(): JSX.Element;
  1190. }
  1191. }
  1192. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodeModel" {
  1193. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1194. import { GlobalState } from "babylonjs-node-editor/globalState";
  1195. import { ClampBlock } from 'babylonjs/Materials/Node/Blocks/clampBlock';
  1196. export class ClampNodeModel extends DefaultNodeModel {
  1197. readonly clampBlock: ClampBlock;
  1198. /**
  1199. * Constructs the node model
  1200. */
  1201. constructor();
  1202. renderProperties(globalState: GlobalState): JSX.Element;
  1203. }
  1204. }
  1205. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodeWidget" {
  1206. import * as React from "react";
  1207. import { ClampNodeModel } from "babylonjs-node-editor/components/diagram/clamp/clampNodeModel";
  1208. import { Nullable } from 'babylonjs/types';
  1209. import { GlobalState } from "babylonjs-node-editor/globalState";
  1210. export interface ClampNodeWidgetProps {
  1211. node: Nullable<ClampNodeModel>;
  1212. globalState: GlobalState;
  1213. }
  1214. export class ClampNodeWidget extends React.Component<ClampNodeWidgetProps> {
  1215. constructor(props: ClampNodeWidgetProps);
  1216. renderValue(value: string): JSX.Element | null;
  1217. render(): JSX.Element;
  1218. }
  1219. }
  1220. declare module "babylonjs-node-editor/components/diagram/clamp/clampNodeFactory" {
  1221. import * as SRD from "storm-react-diagrams";
  1222. import { GlobalState } from "babylonjs-node-editor/globalState";
  1223. import { ClampNodeModel } from "babylonjs-node-editor/components/diagram/clamp/clampNodeModel";
  1224. export class ClampNodeFactory extends SRD.AbstractNodeFactory {
  1225. private _globalState;
  1226. constructor(globalState: GlobalState);
  1227. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: ClampNodeModel): JSX.Element;
  1228. getNewInstance(): ClampNodeModel;
  1229. }
  1230. }
  1231. declare module "babylonjs-node-editor/graphEditor" {
  1232. import { LinkModel } from "storm-react-diagrams";
  1233. import * as React from "react";
  1234. import { GlobalState } from "babylonjs-node-editor/globalState";
  1235. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1236. import { NodeMaterialConnectionPoint } from 'babylonjs/Materials/Node/nodeMaterialBlockConnectionPoint';
  1237. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1238. import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/port/defaultPortModel";
  1239. import { Nullable } from 'babylonjs/types';
  1240. import { INodeLocationInfo } from "babylonjs-node-editor/nodeLocationInfo";
  1241. interface IGraphEditorProps {
  1242. globalState: GlobalState;
  1243. }
  1244. export class NodeCreationOptions {
  1245. nodeMaterialBlock: NodeMaterialBlock;
  1246. type?: string;
  1247. connection?: NodeMaterialConnectionPoint;
  1248. }
  1249. export class GraphEditor extends React.Component<IGraphEditorProps> {
  1250. private readonly NodeWidth;
  1251. private _engine;
  1252. private _model;
  1253. private _startX;
  1254. private _moveInProgress;
  1255. private _leftWidth;
  1256. private _rightWidth;
  1257. private _nodes;
  1258. private _blocks;
  1259. private _previewManager;
  1260. private _copiedNodes;
  1261. private _mouseLocationX;
  1262. private _mouseLocationY;
  1263. private _onWidgetKeyUpPointer;
  1264. /** @hidden */
  1265. _toAdd: LinkModel[] | null;
  1266. /**
  1267. * Creates a node and recursivly creates its parent nodes from it's input
  1268. * @param nodeMaterialBlock
  1269. */
  1270. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  1271. addValueNode(type: string): DefaultNodeModel;
  1272. onWidgetKeyUp(evt: any): void;
  1273. componentDidMount(): void;
  1274. componentWillUnmount(): void;
  1275. constructor(props: IGraphEditorProps);
  1276. zoomToFit(retry?: number): void;
  1277. buildMaterial(): void;
  1278. applyFragmentOutputConstraints(rootInput: DefaultPortModel): void;
  1279. build(needToWait?: boolean, locations?: Nullable<INodeLocationInfo[]>): void;
  1280. reOrganize(locations?: Nullable<INodeLocationInfo[]>): void;
  1281. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1282. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1283. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  1284. buildColumnLayout(): string;
  1285. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  1286. render(): JSX.Element;
  1287. }
  1288. }
  1289. declare module "babylonjs-node-editor/components/diagram/defaultNodeModel" {
  1290. import { NodeModel, DiagramModel } from "storm-react-diagrams";
  1291. import { Nullable } from 'babylonjs/types';
  1292. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1293. import { GraphEditor, NodeCreationOptions } from "babylonjs-node-editor/graphEditor";
  1294. import { GlobalState } from "babylonjs-node-editor/globalState";
  1295. import { DefaultPortModel } from "babylonjs-node-editor/components/diagram/port/defaultPortModel";
  1296. /**
  1297. * Generic node model which stores information about a node editor block
  1298. */
  1299. export class DefaultNodeModel extends NodeModel {
  1300. /**
  1301. * The babylon block this node represents
  1302. */
  1303. block: Nullable<NodeMaterialBlock>;
  1304. ports: {
  1305. [s: string]: DefaultPortModel;
  1306. };
  1307. /**
  1308. * Constructs the node model
  1309. */
  1310. constructor(key: string);
  1311. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1312. renderProperties(globalState: GlobalState): JSX.Element | null;
  1313. }
  1314. }
  1315. declare module "babylonjs-node-editor/globalState" {
  1316. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1317. import { Nullable } from "babylonjs/types";
  1318. import { Observable } from 'babylonjs/Misc/observable';
  1319. import { DefaultNodeModel } from "babylonjs-node-editor/components/diagram/defaultNodeModel";
  1320. import { LogEntry } from "babylonjs-node-editor/components/log/logComponent";
  1321. import { NodeModel } from 'storm-react-diagrams';
  1322. import { INodeLocationInfo } from "babylonjs-node-editor/nodeLocationInfo";
  1323. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  1324. import { PreviewMeshType } from "babylonjs-node-editor/components/preview/previewMeshType";
  1325. export class GlobalState {
  1326. nodeMaterial: NodeMaterial;
  1327. hostElement: HTMLElement;
  1328. hostDocument: HTMLDocument;
  1329. onSelectionChangedObservable: Observable<Nullable<DefaultNodeModel>>;
  1330. onRebuildRequiredObservable: Observable<void>;
  1331. onResetRequiredObservable: Observable<Nullable<INodeLocationInfo[]>>;
  1332. onUpdateRequiredObservable: Observable<void>;
  1333. onZoomToFitRequiredObservable: Observable<void>;
  1334. onReOrganizedRequiredObservable: Observable<void>;
  1335. onLogRequiredObservable: Observable<LogEntry>;
  1336. onErrorMessageDialogRequiredObservable: Observable<string>;
  1337. onPreviewMeshTypeChanged: Observable<void>;
  1338. onGetNodeFromBlock: (block: NodeMaterialBlock) => NodeModel;
  1339. previewMeshType: PreviewMeshType;
  1340. blockKeyboardEvents: boolean;
  1341. constructor();
  1342. }
  1343. }
  1344. declare module "babylonjs-node-editor/sharedComponents/popup" {
  1345. export class Popup {
  1346. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1347. private static _CopyStyles;
  1348. }
  1349. }
  1350. declare module "babylonjs-node-editor/nodeEditor" {
  1351. import { NodeMaterial } from "babylonjs/Materials/Node/nodeMaterial";
  1352. /**
  1353. * Interface used to specify creation options for the node editor
  1354. */
  1355. export interface INodeEditorOptions {
  1356. nodeMaterial: NodeMaterial;
  1357. }
  1358. /**
  1359. * Class used to create a node editor
  1360. */
  1361. export class NodeEditor {
  1362. private static _CurrentState;
  1363. /**
  1364. * Show the node editor
  1365. * @param options defines the options to use to configure the node editor
  1366. */
  1367. static Show(options: INodeEditorOptions): void;
  1368. }
  1369. }
  1370. declare module "babylonjs-node-editor/index" {
  1371. export * from "babylonjs-node-editor/nodeEditor";
  1372. }
  1373. declare module "babylonjs-node-editor/legacy/legacy" {
  1374. export * from "babylonjs-node-editor/index";
  1375. }
  1376. declare module "babylonjs-node-editor" {
  1377. export * from "babylonjs-node-editor/legacy/legacy";
  1378. }
  1379. /// <reference types="react" />
  1380. declare module NODEEDITOR {
  1381. export class BlockTools {
  1382. 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.ReflectionTextureBlock | BABYLON.LightBlock | BABYLON.FogBlock | BABYLON.VertexOutputBlock | BABYLON.FragmentOutputBlock | BABYLON.AddBlock | BABYLON.ClampBlock | BABYLON.ScaleBlock | BABYLON.CrossBlock | BABYLON.DotBlock | BABYLON.MultiplyBlock | BABYLON.TransformBlock | BABYLON.TrigonometryBlock | BABYLON.RemapBlock | BABYLON.NormalizeBlock | BABYLON.FresnelBlock | BABYLON.LerpBlock | BABYLON.DivideBlock | BABYLON.SubtractBlock | BABYLON.StepBlock | BABYLON.InputBlock | null;
  1383. static GetColorFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1384. 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;
  1385. static GetStringFromConnectionNodeType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): "Float" | "Vector2" | "Vector3" | "Vector4" | "Matrix" | "Color3" | "Color4" | "";
  1386. }
  1387. }
  1388. declare module NODEEDITOR {
  1389. export class DataStorage {
  1390. private static _InMemoryStorage;
  1391. static ReadBoolean(key: string, defaultValue: boolean): boolean;
  1392. static StoreBoolean(key: string, value: boolean): void;
  1393. static ReadNumber(key: string, defaultValue: number): number;
  1394. static StoreNumber(key: string, value: number): void;
  1395. }
  1396. }
  1397. declare module NODEEDITOR {
  1398. interface ITextLineComponentProps {
  1399. label: string;
  1400. value: string;
  1401. color?: string;
  1402. underline?: boolean;
  1403. onLink?: () => void;
  1404. }
  1405. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  1406. constructor(props: ITextLineComponentProps);
  1407. onLink(): void;
  1408. renderContent(): JSX.Element;
  1409. render(): JSX.Element;
  1410. }
  1411. }
  1412. declare module NODEEDITOR {
  1413. interface ILineContainerComponentProps {
  1414. title: string;
  1415. children: any[] | any;
  1416. closed?: boolean;
  1417. }
  1418. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  1419. isExpanded: boolean;
  1420. }> {
  1421. constructor(props: ILineContainerComponentProps);
  1422. switchExpandedState(): void;
  1423. renderHeader(): JSX.Element;
  1424. render(): JSX.Element;
  1425. }
  1426. }
  1427. declare module NODEEDITOR {
  1428. export class PropertyChangedEvent {
  1429. object: any;
  1430. property: string;
  1431. value: any;
  1432. initialValue: any;
  1433. }
  1434. }
  1435. declare module NODEEDITOR {
  1436. interface ITextInputLineComponentProps {
  1437. label: string;
  1438. globalState: GlobalState;
  1439. target?: any;
  1440. propertyName?: string;
  1441. value?: string;
  1442. onChange?: (value: string) => void;
  1443. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1444. }
  1445. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  1446. value: string;
  1447. }> {
  1448. private _localChange;
  1449. constructor(props: ITextInputLineComponentProps);
  1450. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  1451. value: string;
  1452. }): boolean;
  1453. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  1454. updateValue(value: string, raisePropertyChanged: boolean): void;
  1455. render(): JSX.Element;
  1456. }
  1457. }
  1458. declare module NODEEDITOR {
  1459. export interface ICheckBoxLineComponentProps {
  1460. label: string;
  1461. target?: any;
  1462. propertyName?: string;
  1463. isSelected?: () => boolean;
  1464. onSelect?: (value: boolean) => void;
  1465. onValueChanged?: () => void;
  1466. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1467. }
  1468. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  1469. isSelected: boolean;
  1470. }> {
  1471. private static _UniqueIdSeed;
  1472. private _uniqueId;
  1473. private _localChange;
  1474. constructor(props: ICheckBoxLineComponentProps);
  1475. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  1476. isSelected: boolean;
  1477. }): boolean;
  1478. onChange(): void;
  1479. render(): JSX.Element;
  1480. }
  1481. }
  1482. declare module NODEEDITOR {
  1483. /**
  1484. * Generic node model which stores information about a node editor block
  1485. */
  1486. export class GenericNodeModel extends DefaultNodeModel {
  1487. /**
  1488. * BABYLON.Vector2 for the node if it exists
  1489. */
  1490. vector2: BABYLON.Nullable<BABYLON.Vector2>;
  1491. /**
  1492. * BABYLON.Vector3 for the node if it exists
  1493. */
  1494. vector3: BABYLON.Nullable<BABYLON.Vector3>;
  1495. /**
  1496. * BABYLON.Vector4 for the node if it exists
  1497. */
  1498. vector4: BABYLON.Nullable<BABYLON.Vector4>;
  1499. /**
  1500. * BABYLON.Matrix for the node if it exists
  1501. */
  1502. matrix: BABYLON.Nullable<BABYLON.Matrix>;
  1503. /**
  1504. * Constructs the node model
  1505. */
  1506. constructor();
  1507. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1508. renderProperties(globalState: GlobalState): JSX.Element;
  1509. }
  1510. }
  1511. declare module NODEEDITOR {
  1512. export class AdvancedLinkModel extends DefaultLinkModel {
  1513. constructor();
  1514. }
  1515. }
  1516. declare module NODEEDITOR {
  1517. /**
  1518. * Port model
  1519. */
  1520. export class DefaultPortModel extends PortModel {
  1521. /**
  1522. * If the port is input or output
  1523. */
  1524. position: string | "input" | "output";
  1525. /**
  1526. * What the port is connected to
  1527. */
  1528. connection: BABYLON.Nullable<BABYLON.NodeMaterialConnectionPoint>;
  1529. defaultValue: any;
  1530. static idCounter: number;
  1531. constructor(name: string, type?: string);
  1532. canLinkToPort(port: DefaultPortModel): boolean;
  1533. syncWithNodeMaterialConnectionPoint(connection: BABYLON.NodeMaterialConnectionPoint): void;
  1534. getNodeModel(): DefaultNodeModel;
  1535. link(outPort: DefaultPortModel): LinkModel<import("storm-react-diagrams").LinkModelListener>;
  1536. createLinkModel(): LinkModel;
  1537. static SortInputOutput(a: BABYLON.Nullable<DefaultPortModel>, b: BABYLON.Nullable<DefaultPortModel>): {
  1538. input: DefaultPortModel;
  1539. output: DefaultPortModel;
  1540. } | null;
  1541. }
  1542. }
  1543. declare module NODEEDITOR {
  1544. export interface IDefaultPortWidgetProps extends BaseWidgetProps {
  1545. name: string;
  1546. node: NodeModel;
  1547. style: any;
  1548. }
  1549. export class DefaultPortWidget extends BaseWidget<IDefaultPortWidgetProps, PortState> {
  1550. constructor(props: IDefaultPortWidgetProps);
  1551. getClassName(): string;
  1552. render(): JSX.Element;
  1553. }
  1554. }
  1555. declare module NODEEDITOR {
  1556. export class PortHelper {
  1557. private static _GetPortTypeIndicator;
  1558. static _GetPortStyle(type: BABYLON.NodeMaterialBlockConnectionPointTypes): {
  1559. background: string;
  1560. };
  1561. static GenerateOutputPorts(node: BABYLON.Nullable<DefaultNodeModel>, ignoreLabel: boolean): JSX.Element[];
  1562. static GenerateInputPorts(node: BABYLON.Nullable<DefaultNodeModel>, includeOnly?: string[], ignoreLabel?: boolean): JSX.Element[];
  1563. }
  1564. }
  1565. declare module NODEEDITOR {
  1566. /**
  1567. * GenericNodeWidgetProps
  1568. */
  1569. export interface GenericNodeWidgetProps {
  1570. node: BABYLON.Nullable<GenericNodeModel>;
  1571. globalState: GlobalState;
  1572. }
  1573. /**
  1574. * GenericNodeWidgetState
  1575. */
  1576. export interface GenericNodeWidgetState {
  1577. }
  1578. /**
  1579. * Used to display a node block for the node editor
  1580. */
  1581. export class GenericNodeWidget extends React.Component<GenericNodeWidgetProps, GenericNodeWidgetState> {
  1582. /**
  1583. * Creates a GenericNodeWidget
  1584. * @param props
  1585. */
  1586. constructor(props: GenericNodeWidgetProps);
  1587. render(): JSX.Element;
  1588. }
  1589. }
  1590. declare module NODEEDITOR {
  1591. /**
  1592. * Node factory which creates editor nodes
  1593. */
  1594. export class GenericNodeFactory extends SRD.AbstractNodeFactory {
  1595. private _globalState;
  1596. /**
  1597. * Constructs a GenericNodeFactory
  1598. */
  1599. constructor(globalState: GlobalState);
  1600. /**
  1601. * Generates a node widget
  1602. * @param diagramEngine diagram engine
  1603. * @param node node to generate
  1604. * @returns node widget jsx
  1605. */
  1606. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: GenericNodeModel): JSX.Element;
  1607. /**
  1608. * Gets a new instance of a node model
  1609. * @returns generic node model
  1610. */
  1611. getNewInstance(): GenericNodeModel;
  1612. }
  1613. }
  1614. declare module NODEEDITOR {
  1615. export interface IButtonLineComponentProps {
  1616. data: string;
  1617. }
  1618. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  1619. constructor(props: IButtonLineComponentProps);
  1620. render(): JSX.Element;
  1621. }
  1622. }
  1623. declare module NODEEDITOR {
  1624. interface INodeListComponentProps {
  1625. globalState: GlobalState;
  1626. }
  1627. export class NodeListComponent extends React.Component<INodeListComponentProps, {
  1628. filter: string;
  1629. }> {
  1630. constructor(props: INodeListComponentProps);
  1631. filterContent(filter: string): void;
  1632. render(): JSX.Element;
  1633. }
  1634. }
  1635. declare module NODEEDITOR {
  1636. export interface IButtonLineComponentProps {
  1637. label: string;
  1638. onClick: () => void;
  1639. }
  1640. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  1641. constructor(props: IButtonLineComponentProps);
  1642. render(): JSX.Element;
  1643. }
  1644. }
  1645. declare module NODEEDITOR {
  1646. export class StringTools {
  1647. /**
  1648. * Gets the base math type of node material block connection point.
  1649. * @param type Type to parse.
  1650. */
  1651. static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1652. /**
  1653. * Download a string into a file that will be saved locally by the browser
  1654. * @param content defines the string to download locally as a file
  1655. */
  1656. static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
  1657. }
  1658. }
  1659. declare module NODEEDITOR {
  1660. interface IFileButtonLineComponentProps {
  1661. label: string;
  1662. onClick: (file: File) => void;
  1663. accept: string;
  1664. }
  1665. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  1666. constructor(props: IFileButtonLineComponentProps);
  1667. onChange(evt: any): void;
  1668. render(): JSX.Element;
  1669. }
  1670. }
  1671. declare module NODEEDITOR {
  1672. export interface INodeLocationInfo {
  1673. blockId: number;
  1674. x: number;
  1675. y: number;
  1676. }
  1677. }
  1678. declare module NODEEDITOR {
  1679. interface IPropertyTabComponentProps {
  1680. globalState: GlobalState;
  1681. }
  1682. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, {
  1683. currentNode: BABYLON.Nullable<DefaultNodeModel>;
  1684. }> {
  1685. constructor(props: IPropertyTabComponentProps);
  1686. componentWillMount(): void;
  1687. load(file: File): void;
  1688. save(): void;
  1689. render(): JSX.Element;
  1690. }
  1691. }
  1692. declare module NODEEDITOR {
  1693. interface IPortalProps {
  1694. globalState: GlobalState;
  1695. }
  1696. export class Portal extends React.Component<IPortalProps> {
  1697. render(): React.ReactPortal;
  1698. }
  1699. }
  1700. declare module NODEEDITOR {
  1701. interface ITexturePropertyTabComponentProps {
  1702. globalState: GlobalState;
  1703. node: TextureNodeModel;
  1704. }
  1705. export class TexturePropertyTabComponent extends React.Component<ITexturePropertyTabComponentProps> {
  1706. updateAftertextureLoad(): void;
  1707. /**
  1708. * Replaces the texture of the node
  1709. * @param file the file of the texture to use
  1710. */
  1711. replaceTexture(file: File): void;
  1712. render(): JSX.Element;
  1713. }
  1714. }
  1715. declare module NODEEDITOR {
  1716. /**
  1717. * Texture node model which stores information about a node editor block
  1718. */
  1719. export class TextureNodeModel extends DefaultNodeModel {
  1720. private _block;
  1721. /**
  1722. * Texture for the node if it exists
  1723. */
  1724. texture: BABYLON.Nullable<BABYLON.BaseTexture>;
  1725. /**
  1726. * Constructs the node model
  1727. */
  1728. constructor();
  1729. renderProperties(globalState: GlobalState): JSX.Element;
  1730. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  1731. }
  1732. }
  1733. declare module NODEEDITOR {
  1734. interface ITextureLineComponentProps {
  1735. texture: BABYLON.BaseTexture;
  1736. width: number;
  1737. height: number;
  1738. globalState?: any;
  1739. hideChannelSelect?: boolean;
  1740. }
  1741. export class TextureLineComponent extends React.Component<ITextureLineComponentProps, {
  1742. displayRed: boolean;
  1743. displayGreen: boolean;
  1744. displayBlue: boolean;
  1745. displayAlpha: boolean;
  1746. face: number;
  1747. }> {
  1748. constructor(props: ITextureLineComponentProps);
  1749. shouldComponentUpdate(nextProps: ITextureLineComponentProps, nextState: {
  1750. displayRed: boolean;
  1751. displayGreen: boolean;
  1752. displayBlue: boolean;
  1753. displayAlpha: boolean;
  1754. face: number;
  1755. }): boolean;
  1756. componentDidMount(): void;
  1757. componentDidUpdate(): void;
  1758. updatePreview(): void;
  1759. render(): JSX.Element;
  1760. }
  1761. }
  1762. declare module NODEEDITOR {
  1763. /**
  1764. * GenericNodeWidgetProps
  1765. */
  1766. export interface ITextureNodeWidgetProps {
  1767. node: BABYLON.Nullable<TextureNodeModel>;
  1768. globalState: GlobalState;
  1769. }
  1770. /**
  1771. * Used to display a node block for the node editor
  1772. */
  1773. export class TextureNodeWidget extends React.Component<ITextureNodeWidgetProps> {
  1774. /**
  1775. * Creates a GenericNodeWidget
  1776. * @param props
  1777. */
  1778. constructor(props: ITextureNodeWidgetProps);
  1779. render(): JSX.Element;
  1780. }
  1781. }
  1782. declare module NODEEDITOR {
  1783. /**
  1784. * Node factory which creates editor nodes
  1785. */
  1786. export class TextureNodeFactory extends SRD.AbstractNodeFactory {
  1787. private _globalState;
  1788. /**
  1789. * Constructs a TextureNodeFactory
  1790. */
  1791. constructor(globalState: GlobalState);
  1792. /**
  1793. * Generates a node widget
  1794. * @param diagramEngine diagram engine
  1795. * @param node node to generate
  1796. * @returns node widget jsx
  1797. */
  1798. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TextureNodeModel): JSX.Element;
  1799. /**
  1800. * Gets a new instance of a node model
  1801. * @returns texture node model
  1802. */
  1803. getNewInstance(): TextureNodeModel;
  1804. }
  1805. }
  1806. declare module NODEEDITOR {
  1807. interface INumericInputComponentProps {
  1808. label: string;
  1809. value: number;
  1810. step?: number;
  1811. onChange: (value: number) => void;
  1812. }
  1813. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  1814. value: string;
  1815. }> {
  1816. static defaultProps: {
  1817. step: number;
  1818. };
  1819. private _localChange;
  1820. constructor(props: INumericInputComponentProps);
  1821. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  1822. value: string;
  1823. }): boolean;
  1824. updateValue(evt: any): void;
  1825. render(): JSX.Element;
  1826. }
  1827. }
  1828. declare module NODEEDITOR {
  1829. interface IVector2LineComponentProps {
  1830. label: string;
  1831. target: any;
  1832. propertyName: string;
  1833. step?: number;
  1834. onChange?: (newvalue: BABYLON.Vector2) => void;
  1835. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1836. }
  1837. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  1838. isExpanded: boolean;
  1839. value: BABYLON.Vector2;
  1840. }> {
  1841. static defaultProps: {
  1842. step: number;
  1843. };
  1844. private _localChange;
  1845. constructor(props: IVector2LineComponentProps);
  1846. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  1847. isExpanded: boolean;
  1848. value: BABYLON.Vector2;
  1849. }): boolean;
  1850. switchExpandState(): void;
  1851. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  1852. updateStateX(value: number): void;
  1853. updateStateY(value: number): void;
  1854. render(): JSX.Element;
  1855. }
  1856. }
  1857. declare module NODEEDITOR {
  1858. interface IVector2PropertyTabComponentProps {
  1859. globalState: GlobalState;
  1860. inputBlock: BABYLON.InputBlock;
  1861. }
  1862. export class Vector2PropertyTabComponent extends React.Component<IVector2PropertyTabComponentProps> {
  1863. render(): JSX.Element;
  1864. }
  1865. }
  1866. declare module NODEEDITOR {
  1867. interface IVector3LineComponentProps {
  1868. label: string;
  1869. target: any;
  1870. propertyName: string;
  1871. step?: number;
  1872. onChange?: (newvalue: BABYLON.Vector3) => void;
  1873. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1874. }
  1875. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  1876. isExpanded: boolean;
  1877. value: BABYLON.Vector3;
  1878. }> {
  1879. static defaultProps: {
  1880. step: number;
  1881. };
  1882. private _localChange;
  1883. constructor(props: IVector3LineComponentProps);
  1884. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  1885. isExpanded: boolean;
  1886. value: BABYLON.Vector3;
  1887. }): boolean;
  1888. switchExpandState(): void;
  1889. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  1890. updateVector3(): void;
  1891. updateStateX(value: number): void;
  1892. updateStateY(value: number): void;
  1893. updateStateZ(value: number): void;
  1894. render(): JSX.Element;
  1895. }
  1896. }
  1897. declare module NODEEDITOR {
  1898. interface IVector3PropertyTabComponentProps {
  1899. globalState: GlobalState;
  1900. inputBlock: BABYLON.InputBlock;
  1901. }
  1902. export class Vector3PropertyTabComponent extends React.Component<IVector3PropertyTabComponentProps> {
  1903. render(): JSX.Element;
  1904. }
  1905. }
  1906. declare module NODEEDITOR {
  1907. class ListLineOption {
  1908. label: string;
  1909. value: number | string;
  1910. }
  1911. interface IOptionsLineComponentProps {
  1912. label: string;
  1913. target: any;
  1914. propertyName?: string;
  1915. options: ListLineOption[];
  1916. noDirectUpdate?: boolean;
  1917. onSelect?: (value: number | string) => void;
  1918. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1919. valuesAreStrings?: boolean;
  1920. defaultIfNull?: number;
  1921. getSelection?: (target: any) => number;
  1922. }
  1923. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  1924. value: number | string;
  1925. }> {
  1926. private _localChange;
  1927. private _getValue;
  1928. constructor(props: IOptionsLineComponentProps);
  1929. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  1930. value: number;
  1931. }): boolean;
  1932. raiseOnPropertyChanged(newValue: number | string, previousValue: number | string): void;
  1933. updateValue(valueString: string): void;
  1934. render(): JSX.Element;
  1935. }
  1936. }
  1937. declare module NODEEDITOR {
  1938. export interface IColor3LineComponentProps {
  1939. label: string;
  1940. target: any;
  1941. propertyName: string;
  1942. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1943. onChange?: () => void;
  1944. }
  1945. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  1946. isExpanded: boolean;
  1947. color: BABYLON.Color3;
  1948. }> {
  1949. private _localChange;
  1950. constructor(props: IColor3LineComponentProps);
  1951. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  1952. color: BABYLON.Color3;
  1953. }): boolean;
  1954. onChange(newValue: string): void;
  1955. switchExpandState(): void;
  1956. raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
  1957. updateStateR(value: number): void;
  1958. updateStateG(value: number): void;
  1959. updateStateB(value: number): void;
  1960. copyToClipboard(): void;
  1961. render(): JSX.Element;
  1962. }
  1963. }
  1964. declare module NODEEDITOR {
  1965. interface IColor3PropertyTabComponentProps {
  1966. globalState: GlobalState;
  1967. inputBlock: BABYLON.InputBlock;
  1968. }
  1969. export class Color3PropertyTabComponent extends React.Component<IColor3PropertyTabComponentProps> {
  1970. render(): JSX.Element;
  1971. }
  1972. }
  1973. declare module NODEEDITOR {
  1974. interface IFloatLineComponentProps {
  1975. label: string;
  1976. target: any;
  1977. propertyName: string;
  1978. onChange?: (newValue: number) => void;
  1979. isInteger?: boolean;
  1980. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1981. additionalClass?: string;
  1982. step?: string;
  1983. digits?: number;
  1984. }
  1985. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  1986. value: string;
  1987. }> {
  1988. private _localChange;
  1989. private _store;
  1990. constructor(props: IFloatLineComponentProps);
  1991. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  1992. value: string;
  1993. }): boolean;
  1994. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  1995. updateValue(valueString: string): void;
  1996. render(): JSX.Element;
  1997. }
  1998. }
  1999. declare module NODEEDITOR {
  2000. interface IFloatPropertyTabComponentProps {
  2001. globalState: GlobalState;
  2002. inputBlock: BABYLON.InputBlock;
  2003. }
  2004. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  2005. render(): JSX.Element;
  2006. }
  2007. }
  2008. declare module NODEEDITOR {
  2009. interface IInputPropertyTabComponentProps {
  2010. globalState: GlobalState;
  2011. inputNode: InputNodeModel;
  2012. }
  2013. export class InputPropertyTabComponentProps extends React.Component<IInputPropertyTabComponentProps> {
  2014. constructor(props: IInputPropertyTabComponentProps);
  2015. renderValue(globalState: GlobalState): JSX.Element | null;
  2016. setDefaultValue(): void;
  2017. render(): JSX.Element;
  2018. }
  2019. }
  2020. declare module NODEEDITOR {
  2021. /**
  2022. * Generic node model which stores information about a node editor block
  2023. */
  2024. export class InputNodeModel extends DefaultNodeModel {
  2025. readonly inputBlock: BABYLON.InputBlock;
  2026. /**
  2027. * Constructs the node model
  2028. */
  2029. constructor();
  2030. renderProperties(globalState: GlobalState): JSX.Element;
  2031. }
  2032. }
  2033. declare module NODEEDITOR {
  2034. /**
  2035. * GenericNodeWidgetProps
  2036. */
  2037. export interface IInputNodeWidgetProps {
  2038. node: BABYLON.Nullable<InputNodeModel>;
  2039. globalState: GlobalState;
  2040. }
  2041. /**
  2042. * Used to display a node block for the node editor
  2043. */
  2044. export class InputNodeWidget extends React.Component<IInputNodeWidgetProps> {
  2045. /**
  2046. * Creates a GenericNodeWidget
  2047. * @param props
  2048. */
  2049. constructor(props: IInputNodeWidgetProps);
  2050. renderValue(value: string): JSX.Element | null;
  2051. render(): JSX.Element | null;
  2052. }
  2053. }
  2054. declare module NODEEDITOR {
  2055. /**
  2056. * Node factory which creates editor nodes
  2057. */
  2058. export class InputNodeFactory extends SRD.AbstractNodeFactory {
  2059. private _globalState;
  2060. /**
  2061. * Constructs a GenericNodeFactory
  2062. */
  2063. constructor(globalState: GlobalState);
  2064. /**
  2065. * Generates a node widget
  2066. * @param diagramEngine diagram engine
  2067. * @param node node to generate
  2068. * @returns node widget jsx
  2069. */
  2070. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: InputNodeModel): JSX.Element;
  2071. /**
  2072. * Gets a new instance of a node model
  2073. * @returns input node model
  2074. */
  2075. getNewInstance(): InputNodeModel;
  2076. }
  2077. }
  2078. declare module NODEEDITOR {
  2079. interface ILogComponentProps {
  2080. globalState: GlobalState;
  2081. }
  2082. export class LogEntry {
  2083. message: string;
  2084. isError: boolean;
  2085. constructor(message: string, isError: boolean);
  2086. }
  2087. export class LogComponent extends React.Component<ILogComponentProps, {
  2088. logs: LogEntry[];
  2089. }> {
  2090. constructor(props: ILogComponentProps);
  2091. componentWillMount(): void;
  2092. componentDidUpdate(): void;
  2093. render(): JSX.Element;
  2094. }
  2095. }
  2096. declare module NODEEDITOR {
  2097. interface ILightPropertyTabComponentProps {
  2098. globalState: GlobalState;
  2099. node: LightNodeModel;
  2100. }
  2101. export class LightPropertyTabComponent extends React.Component<ILightPropertyTabComponentProps> {
  2102. render(): JSX.Element;
  2103. }
  2104. }
  2105. declare module NODEEDITOR {
  2106. /**
  2107. * BABYLON.Light node model which stores information about a node editor block
  2108. */
  2109. export class LightNodeModel extends DefaultNodeModel {
  2110. private _block;
  2111. /**
  2112. * BABYLON.Light for the node if it exists
  2113. */
  2114. light: BABYLON.Nullable<BABYLON.Light>;
  2115. /**
  2116. * Constructs the node model
  2117. */
  2118. constructor();
  2119. renderProperties(globalState: GlobalState): JSX.Element;
  2120. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  2121. }
  2122. }
  2123. declare module NODEEDITOR {
  2124. /**
  2125. * GenericNodeWidgetProps
  2126. */
  2127. export interface ILightNodeWidgetProps {
  2128. node: BABYLON.Nullable<LightNodeModel>;
  2129. globalState: GlobalState;
  2130. }
  2131. /**
  2132. * Used to display a node block for the node editor
  2133. */
  2134. export class LightNodeWidget extends React.Component<ILightNodeWidgetProps> {
  2135. /**
  2136. * Creates a GenericNodeWidget
  2137. * @param props
  2138. */
  2139. constructor(props: ILightNodeWidgetProps);
  2140. render(): JSX.Element;
  2141. }
  2142. }
  2143. declare module NODEEDITOR {
  2144. /**
  2145. * Node factory which creates editor nodes
  2146. */
  2147. export class LightNodeFactory extends SRD.AbstractNodeFactory {
  2148. private _globalState;
  2149. /**
  2150. * Constructs a LightNodeFactory
  2151. */
  2152. constructor(globalState: GlobalState);
  2153. /**
  2154. * Generates a node widget
  2155. * @param diagramEngine diagram engine
  2156. * @param node node to generate
  2157. * @returns node widget jsx
  2158. */
  2159. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: LightNodeModel): JSX.Element;
  2160. /**
  2161. * Gets a new instance of a node model
  2162. * @returns light node model
  2163. */
  2164. getNewInstance(): LightNodeModel;
  2165. }
  2166. }
  2167. declare module NODEEDITOR {
  2168. interface IMessageDialogComponentProps {
  2169. globalState: GlobalState;
  2170. }
  2171. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  2172. message: string;
  2173. isError: boolean;
  2174. }> {
  2175. constructor(props: IMessageDialogComponentProps);
  2176. render(): JSX.Element | null;
  2177. }
  2178. }
  2179. declare module NODEEDITOR {
  2180. export class AdvancedLinkFactory extends DefaultLinkFactory {
  2181. constructor();
  2182. getNewInstance(initialConfig?: any): AdvancedLinkModel;
  2183. generateLinkSegment(model: AdvancedLinkModel, widget: DefaultLinkWidget, selected: boolean, path: string): JSX.Element;
  2184. }
  2185. }
  2186. declare module NODEEDITOR {
  2187. interface IRemapPropertyTabComponentProps {
  2188. globalState: GlobalState;
  2189. remapNode: RemapNodeModel;
  2190. }
  2191. export class RemapPropertyTabComponentProps extends React.Component<IRemapPropertyTabComponentProps> {
  2192. constructor(props: IRemapPropertyTabComponentProps);
  2193. forceRebuild(): void;
  2194. render(): JSX.Element;
  2195. }
  2196. }
  2197. declare module NODEEDITOR {
  2198. /**
  2199. * Generic node model which stores information about a node editor block
  2200. */
  2201. export class RemapNodeModel extends DefaultNodeModel {
  2202. readonly remapBlock: BABYLON.RemapBlock;
  2203. /**
  2204. * Constructs the node model
  2205. */
  2206. constructor();
  2207. renderProperties(globalState: GlobalState): JSX.Element;
  2208. }
  2209. }
  2210. declare module NODEEDITOR {
  2211. /**
  2212. * RemapNodeWidgetProps
  2213. */
  2214. export interface RemapNodeWidgetProps {
  2215. node: BABYLON.Nullable<RemapNodeModel>;
  2216. globalState: GlobalState;
  2217. }
  2218. /**
  2219. * Used to display a node block for the node editor
  2220. */
  2221. export class RemapNodeWidget extends React.Component<RemapNodeWidgetProps> {
  2222. /**
  2223. * Creates a GenericNodeWidget
  2224. * @param props
  2225. */
  2226. constructor(props: RemapNodeWidgetProps);
  2227. renderValue(value: string): JSX.Element | null;
  2228. render(): JSX.Element;
  2229. }
  2230. }
  2231. declare module NODEEDITOR {
  2232. /**
  2233. * Node factory which creates editor nodes
  2234. */
  2235. export class RemapNodeFactory extends SRD.AbstractNodeFactory {
  2236. private _globalState;
  2237. /**
  2238. * Constructs a GenericNodeFactory
  2239. */
  2240. constructor(globalState: GlobalState);
  2241. /**
  2242. * Generates a node widget
  2243. * @param diagramEngine diagram engine
  2244. * @param node node to generate
  2245. * @returns node widget jsx
  2246. */
  2247. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: RemapNodeModel): JSX.Element;
  2248. /**
  2249. * Gets a new instance of a node model
  2250. * @returns input node model
  2251. */
  2252. getNewInstance(): RemapNodeModel;
  2253. }
  2254. }
  2255. declare module NODEEDITOR {
  2256. export class GraphHelper {
  2257. static DistributeGraph(model: DiagramModel): dagre.Node[];
  2258. private static _MapElements;
  2259. private static _MapEdges;
  2260. }
  2261. }
  2262. declare module NODEEDITOR {
  2263. export enum PreviewMeshType {
  2264. Sphere = 0,
  2265. Box = 1,
  2266. Torus = 2,
  2267. Cylinder = 3
  2268. }
  2269. }
  2270. declare module NODEEDITOR {
  2271. export class PreviewManager {
  2272. private _nodeMaterial;
  2273. private _onBuildObserver;
  2274. private _onPreviewMeshTypeChangedObserver;
  2275. private _onUpdateRequiredObserver;
  2276. private _engine;
  2277. private _scene;
  2278. private _light;
  2279. private _dummy;
  2280. private _camera;
  2281. private _material;
  2282. private _globalState;
  2283. constructor(targetCanvas: HTMLCanvasElement, globalState: GlobalState);
  2284. private _refreshPreviewMesh;
  2285. private _updatePreview;
  2286. dispose(): void;
  2287. }
  2288. }
  2289. declare module NODEEDITOR {
  2290. interface IPreviewMeshControlComponent {
  2291. globalState: GlobalState;
  2292. }
  2293. export class PreviewMeshControlComponent extends React.Component<IPreviewMeshControlComponent> {
  2294. changeMeshType(newOne: PreviewMeshType): void;
  2295. render(): JSX.Element;
  2296. }
  2297. }
  2298. declare module NODEEDITOR {
  2299. interface ITrigonometryTabComponentProps {
  2300. globalState: GlobalState;
  2301. trigonometryNode: TrigonometryNodeModel;
  2302. }
  2303. export class TrigonometryPropertyTabComponentProps extends React.Component<ITrigonometryTabComponentProps> {
  2304. constructor(props: ITrigonometryTabComponentProps);
  2305. render(): JSX.Element;
  2306. }
  2307. }
  2308. declare module NODEEDITOR {
  2309. /**
  2310. * Generic node model which stores information about a node editor block
  2311. */
  2312. export class TrigonometryNodeModel extends DefaultNodeModel {
  2313. readonly trigonometryBlock: BABYLON.TrigonometryBlock;
  2314. /**
  2315. * Constructs the node model
  2316. */
  2317. constructor();
  2318. renderProperties(globalState: GlobalState): JSX.Element;
  2319. }
  2320. }
  2321. declare module NODEEDITOR {
  2322. /**
  2323. * GenericNodeWidgetProps
  2324. */
  2325. export interface ITrigonometryNodeWidgetProps {
  2326. node: BABYLON.Nullable<TrigonometryNodeModel>;
  2327. globalState: GlobalState;
  2328. }
  2329. /**
  2330. * Used to display a node block for the node editor
  2331. */
  2332. export class TrigonometryNodeWidget extends React.Component<ITrigonometryNodeWidgetProps> {
  2333. /**
  2334. * Creates a GenericNodeWidget
  2335. * @param props
  2336. */
  2337. constructor(props: ITrigonometryNodeWidgetProps);
  2338. render(): JSX.Element;
  2339. }
  2340. }
  2341. declare module NODEEDITOR {
  2342. /**
  2343. * Node factory which creates editor nodes
  2344. */
  2345. export class TrigonometryNodeFactory extends SRD.AbstractNodeFactory {
  2346. private _globalState;
  2347. /**
  2348. * Constructs a GenericNodeFactory
  2349. */
  2350. constructor(globalState: GlobalState);
  2351. /**
  2352. * Generates a node widget
  2353. * @param diagramEngine diagram engine
  2354. * @param node node to generate
  2355. * @returns node widget jsx
  2356. */
  2357. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: TrigonometryNodeModel): JSX.Element;
  2358. /**
  2359. * Gets a new instance of a node model
  2360. * @returns input node model
  2361. */
  2362. getNewInstance(): TrigonometryNodeModel;
  2363. }
  2364. }
  2365. declare module NODEEDITOR {
  2366. interface IClampPropertyTabComponentProps {
  2367. globalState: GlobalState;
  2368. remapNode: ClampNodeModel;
  2369. }
  2370. export class ClampPropertyTabComponentProps extends React.Component<IClampPropertyTabComponentProps> {
  2371. constructor(props: IClampPropertyTabComponentProps);
  2372. forceRebuild(): void;
  2373. render(): JSX.Element;
  2374. }
  2375. }
  2376. declare module NODEEDITOR {
  2377. export class ClampNodeModel extends DefaultNodeModel {
  2378. readonly clampBlock: BABYLON.ClampBlock;
  2379. /**
  2380. * Constructs the node model
  2381. */
  2382. constructor();
  2383. renderProperties(globalState: GlobalState): JSX.Element;
  2384. }
  2385. }
  2386. declare module NODEEDITOR {
  2387. export interface ClampNodeWidgetProps {
  2388. node: BABYLON.Nullable<ClampNodeModel>;
  2389. globalState: GlobalState;
  2390. }
  2391. export class ClampNodeWidget extends React.Component<ClampNodeWidgetProps> {
  2392. constructor(props: ClampNodeWidgetProps);
  2393. renderValue(value: string): JSX.Element | null;
  2394. render(): JSX.Element;
  2395. }
  2396. }
  2397. declare module NODEEDITOR {
  2398. export class ClampNodeFactory extends SRD.AbstractNodeFactory {
  2399. private _globalState;
  2400. constructor(globalState: GlobalState);
  2401. generateReactWidget(diagramEngine: SRD.DiagramEngine, node: ClampNodeModel): JSX.Element;
  2402. getNewInstance(): ClampNodeModel;
  2403. }
  2404. }
  2405. declare module NODEEDITOR {
  2406. interface IGraphEditorProps {
  2407. globalState: GlobalState;
  2408. }
  2409. export class NodeCreationOptions {
  2410. nodeMaterialBlock: BABYLON.NodeMaterialBlock;
  2411. type?: string;
  2412. connection?: BABYLON.NodeMaterialConnectionPoint;
  2413. }
  2414. export class GraphEditor extends React.Component<IGraphEditorProps> {
  2415. private readonly NodeWidth;
  2416. private _engine;
  2417. private _model;
  2418. private _startX;
  2419. private _moveInProgress;
  2420. private _leftWidth;
  2421. private _rightWidth;
  2422. private _nodes;
  2423. private _blocks;
  2424. private _previewManager;
  2425. private _copiedNodes;
  2426. private _mouseLocationX;
  2427. private _mouseLocationY;
  2428. private _onWidgetKeyUpPointer;
  2429. /** @hidden */
  2430. _toAdd: LinkModel[] | null;
  2431. /**
  2432. * Creates a node and recursivly creates its parent nodes from it's input
  2433. * @param nodeMaterialBlock
  2434. */
  2435. createNodeFromObject(options: NodeCreationOptions): DefaultNodeModel;
  2436. addValueNode(type: string): DefaultNodeModel;
  2437. onWidgetKeyUp(evt: any): void;
  2438. componentDidMount(): void;
  2439. componentWillUnmount(): void;
  2440. constructor(props: IGraphEditorProps);
  2441. zoomToFit(retry?: number): void;
  2442. buildMaterial(): void;
  2443. applyFragmentOutputConstraints(rootInput: DefaultPortModel): void;
  2444. build(needToWait?: boolean, locations?: BABYLON.Nullable<INodeLocationInfo[]>): void;
  2445. reOrganize(locations?: BABYLON.Nullable<INodeLocationInfo[]>): void;
  2446. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  2447. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  2448. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  2449. buildColumnLayout(): string;
  2450. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  2451. render(): JSX.Element;
  2452. }
  2453. }
  2454. declare module NODEEDITOR {
  2455. /**
  2456. * Generic node model which stores information about a node editor block
  2457. */
  2458. export class DefaultNodeModel extends NodeModel {
  2459. /**
  2460. * The babylon block this node represents
  2461. */
  2462. block: BABYLON.Nullable<BABYLON.NodeMaterialBlock>;
  2463. ports: {
  2464. [s: string]: DefaultPortModel;
  2465. };
  2466. /**
  2467. * Constructs the node model
  2468. */
  2469. constructor(key: string);
  2470. prepare(options: NodeCreationOptions, nodes: Array<DefaultNodeModel>, model: DiagramModel, graphEditor: GraphEditor): void;
  2471. renderProperties(globalState: GlobalState): JSX.Element | null;
  2472. }
  2473. }
  2474. declare module NODEEDITOR {
  2475. export class GlobalState {
  2476. nodeMaterial: BABYLON.NodeMaterial;
  2477. hostElement: HTMLElement;
  2478. hostDocument: HTMLDocument;
  2479. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<DefaultNodeModel>>;
  2480. onRebuildRequiredObservable: BABYLON.Observable<void>;
  2481. onResetRequiredObservable: BABYLON.Observable<BABYLON.Nullable<INodeLocationInfo[]>>;
  2482. onUpdateRequiredObservable: BABYLON.Observable<void>;
  2483. onZoomToFitRequiredObservable: BABYLON.Observable<void>;
  2484. onReOrganizedRequiredObservable: BABYLON.Observable<void>;
  2485. onLogRequiredObservable: BABYLON.Observable<LogEntry>;
  2486. onErrorMessageDialogRequiredObservable: BABYLON.Observable<string>;
  2487. onPreviewMeshTypeChanged: BABYLON.Observable<void>;
  2488. onGetNodeFromBlock: (block: BABYLON.NodeMaterialBlock) => NodeModel;
  2489. previewMeshType: PreviewMeshType;
  2490. blockKeyboardEvents: boolean;
  2491. constructor();
  2492. }
  2493. }
  2494. declare module NODEEDITOR {
  2495. export class Popup {
  2496. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  2497. private static _CopyStyles;
  2498. }
  2499. }
  2500. declare module NODEEDITOR {
  2501. /**
  2502. * Interface used to specify creation options for the node editor
  2503. */
  2504. export interface INodeEditorOptions {
  2505. nodeMaterial: BABYLON.NodeMaterial;
  2506. }
  2507. /**
  2508. * Class used to create a node editor
  2509. */
  2510. export class NodeEditor {
  2511. private static _CurrentState;
  2512. /**
  2513. * Show the node editor
  2514. * @param options defines the options to use to configure the node editor
  2515. */
  2516. static Show(options: INodeEditorOptions): void;
  2517. }
  2518. }