babylon.guiEditor.module.d.ts 69 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878
  1. /// <reference types="react" />
  2. declare module "babylonjs-gui-editor/blockTools" {
  3. import { Checkbox } from "babylonjs-gui/2D/controls/checkbox";
  4. import { ColorPicker } from "babylonjs-gui/2D/controls/colorpicker";
  5. import { Ellipse } from "babylonjs-gui/2D/controls/ellipse";
  6. import { Line } from "babylonjs-gui/2D/controls/line";
  7. import { Rectangle } from "babylonjs-gui/2D/controls/rectangle";
  8. import { Slider } from "babylonjs-gui/2D/controls/sliders/slider";
  9. import { TextBlock } from "babylonjs-gui/2D/controls/textBlock";
  10. export class BlockTools {
  11. static GetGuiFromString(data: string): Slider | Checkbox | ColorPicker | Ellipse | Rectangle | Line | TextBlock;
  12. }
  13. }
  14. declare module "babylonjs-gui-editor/components/log/logComponent" {
  15. import * as React from "react";
  16. import { GlobalState } from "babylonjs-gui-editor/globalState";
  17. interface ILogComponentProps {
  18. globalState: GlobalState;
  19. }
  20. export class LogEntry {
  21. message: string;
  22. isError: boolean;
  23. constructor(message: string, isError: boolean);
  24. }
  25. export class LogComponent extends React.Component<ILogComponentProps, {
  26. logs: LogEntry[];
  27. }> {
  28. constructor(props: ILogComponentProps);
  29. componentDidMount(): void;
  30. componentDidUpdate(): void;
  31. render(): JSX.Element;
  32. }
  33. }
  34. declare module "babylonjs-gui-editor/diagram/workbench" {
  35. import * as React from "react";
  36. import { GlobalState } from "babylonjs-gui-editor/globalState";
  37. import { GUINode } from "babylonjs-gui-editor/diagram/guiNode";
  38. import { Control } from 'babylonjs-gui/2D/controls/control';
  39. export interface IWorkbenchComponentProps {
  40. globalState: GlobalState;
  41. }
  42. export type FramePortData = {};
  43. export const isFramePortData: (variableToCheck: any) => variableToCheck is FramePortData;
  44. export class WorkbenchComponent extends React.Component<IWorkbenchComponentProps> {
  45. private readonly MinZoom;
  46. private readonly MaxZoom;
  47. private _hostCanvas;
  48. private _graphCanvas;
  49. private _selectionContainer;
  50. private _frameContainer;
  51. private _svgCanvas;
  52. private _rootContainer;
  53. private _guiNodes;
  54. private _mouseStartPointX;
  55. private _mouseStartPointY;
  56. private _selectionStartX;
  57. private _selectionStartY;
  58. private _x;
  59. private _y;
  60. private _zoom;
  61. private _selectedGuiNodes;
  62. private _gridSize;
  63. private _selectionBox;
  64. private _frameCandidate;
  65. private _altKeyIsPressed;
  66. private _ctrlKeyIsPressed;
  67. private _oldY;
  68. _frameIsMoving: boolean;
  69. _isLoading: boolean;
  70. isOverGUINode: boolean;
  71. get gridSize(): number;
  72. set gridSize(value: number);
  73. get globalState(): GlobalState;
  74. get nodes(): GUINode[];
  75. get zoom(): number;
  76. set zoom(value: number);
  77. get x(): number;
  78. set x(value: number);
  79. get y(): number;
  80. set y(value: number);
  81. get selectedGuiNodes(): GUINode[];
  82. get canvasContainer(): HTMLDivElement;
  83. get hostCanvas(): HTMLDivElement;
  84. get svgCanvas(): HTMLElement;
  85. get selectionContainer(): HTMLDivElement;
  86. get frameContainer(): HTMLDivElement;
  87. constructor(props: IWorkbenchComponentProps);
  88. getGridPosition(position: number, useCeil?: boolean): number;
  89. getGridPositionCeil(position: number): number;
  90. updateTransform(): void;
  91. onKeyUp(): void;
  92. findNodeFromGuiElement(guiElement: Control): GUINode;
  93. reset(): void;
  94. appendBlock(guiElement: Control): GUINode;
  95. distributeGraph(): void;
  96. componentDidMount(): void;
  97. onMove(evt: React.PointerEvent): void;
  98. onDown(evt: React.PointerEvent<HTMLElement>): void;
  99. onUp(evt: React.PointerEvent): void;
  100. onWheel(evt: React.WheelEvent): void;
  101. zoomToFit(): void;
  102. createGUICanvas(): void;
  103. updateGUIs(): void;
  104. render(): JSX.Element;
  105. }
  106. }
  107. declare module "babylonjs-gui-editor/diagram/properties/propertyComponentProps" {
  108. import { Control } from "babylonjs-gui/2D/controls/control";
  109. import { GlobalState } from "babylonjs-gui-editor/globalState";
  110. export interface IPropertyComponentProps {
  111. globalState: GlobalState;
  112. guiBlock: Control;
  113. }
  114. }
  115. declare module "babylonjs-gui-editor/sharedComponents/lineContainerComponent" {
  116. import * as React from "react";
  117. interface ILineContainerComponentProps {
  118. title: string;
  119. children: any[] | any;
  120. closed?: boolean;
  121. }
  122. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  123. isExpanded: boolean;
  124. }> {
  125. constructor(props: ILineContainerComponentProps);
  126. switchExpandedState(): void;
  127. renderHeader(): JSX.Element;
  128. render(): JSX.Element;
  129. }
  130. }
  131. declare module "babylonjs-gui-editor/sharedComponents/propertyChangedEvent" {
  132. export class PropertyChangedEvent {
  133. object: any;
  134. property: string;
  135. value: any;
  136. initialValue: any;
  137. }
  138. }
  139. declare module "babylonjs-gui-editor/sharedComponents/checkBoxLineComponent" {
  140. import * as React from "react";
  141. import { Observable } from "babylonjs/Misc/observable";
  142. import { PropertyChangedEvent } from "babylonjs-gui-editor/sharedComponents/propertyChangedEvent";
  143. export interface ICheckBoxLineComponentProps {
  144. label: string;
  145. target?: any;
  146. propertyName?: string;
  147. isSelected?: () => boolean;
  148. onSelect?: (value: boolean) => void;
  149. onValueChanged?: () => void;
  150. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  151. disabled?: boolean;
  152. }
  153. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  154. isSelected: boolean;
  155. isDisabled?: boolean;
  156. }> {
  157. private static _UniqueIdSeed;
  158. private _uniqueId;
  159. private _localChange;
  160. constructor(props: ICheckBoxLineComponentProps);
  161. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  162. isSelected: boolean;
  163. isDisabled: boolean;
  164. }): boolean;
  165. onChange(): void;
  166. render(): JSX.Element;
  167. }
  168. }
  169. declare module "babylonjs-gui-editor/sharedComponents/floatLineComponent" {
  170. import * as React from "react";
  171. import { Observable } from "babylonjs/Misc/observable";
  172. import { PropertyChangedEvent } from "babylonjs-gui-editor/sharedComponents/propertyChangedEvent";
  173. import { GlobalState } from "babylonjs-gui-editor/globalState";
  174. interface IFloatLineComponentProps {
  175. label: string;
  176. target: any;
  177. propertyName: string;
  178. onChange?: (newValue: number) => void;
  179. isInteger?: boolean;
  180. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  181. additionalClass?: string;
  182. step?: string;
  183. digits?: number;
  184. globalState: GlobalState;
  185. min?: number;
  186. max?: number;
  187. smallUI?: boolean;
  188. onEnter?: (newValue: number) => void;
  189. }
  190. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  191. value: string;
  192. }> {
  193. private _localChange;
  194. private _store;
  195. private _regExp;
  196. constructor(props: IFloatLineComponentProps);
  197. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  198. value: string;
  199. }): boolean;
  200. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  201. updateValue(valueString: string): void;
  202. render(): JSX.Element;
  203. }
  204. }
  205. declare module "babylonjs-gui-editor/sharedComponents/sliderLineComponent" {
  206. import * as React from "react";
  207. import { Observable } from "babylonjs/Misc/observable";
  208. import { PropertyChangedEvent } from "babylonjs-gui-editor/sharedComponents/propertyChangedEvent";
  209. import { GlobalState } from "babylonjs-gui-editor/globalState";
  210. interface ISliderLineComponentProps {
  211. label: string;
  212. target?: any;
  213. propertyName?: string;
  214. minimum: number;
  215. maximum: number;
  216. step: number;
  217. directValue?: number;
  218. useEuler?: boolean;
  219. onChange?: (value: number) => void;
  220. onInput?: (value: number) => void;
  221. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  222. decimalCount?: number;
  223. globalState: GlobalState;
  224. }
  225. export class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
  226. value: number;
  227. }> {
  228. private _localChange;
  229. constructor(props: ISliderLineComponentProps);
  230. shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
  231. value: number;
  232. }): boolean;
  233. onChange(newValueString: any): void;
  234. onInput(newValueString: any): void;
  235. prepareDataToRead(value: number): number;
  236. render(): JSX.Element;
  237. }
  238. }
  239. declare module "babylonjs-gui-editor/diagram/properties/genericNodePropertyComponent" {
  240. import * as React from "react";
  241. import { IPropertyComponentProps } from "babylonjs-gui-editor/diagram/properties/propertyComponentProps";
  242. export class GenericPropertyComponent extends React.Component<IPropertyComponentProps> {
  243. constructor(props: IPropertyComponentProps);
  244. render(): JSX.Element;
  245. }
  246. export class GeneralPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  247. constructor(props: IPropertyComponentProps);
  248. render(): JSX.Element;
  249. }
  250. export class GenericPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  251. constructor(props: IPropertyComponentProps);
  252. forceRebuild(notifiers?: {
  253. "rebuild"?: boolean;
  254. "update"?: boolean;
  255. }): void;
  256. render(): JSX.Element;
  257. }
  258. }
  259. declare module "babylonjs-gui-editor/sharedComponents/textLineComponent" {
  260. import * as React from "react";
  261. interface ITextLineComponentProps {
  262. label: string;
  263. value: string;
  264. color?: string;
  265. underline?: boolean;
  266. onLink?: () => void;
  267. }
  268. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  269. constructor(props: ITextLineComponentProps);
  270. onLink(): void;
  271. renderContent(): JSX.Element;
  272. render(): JSX.Element;
  273. }
  274. }
  275. declare module "babylonjs-gui-editor/sharedComponents/numericInputComponent" {
  276. import * as React from "react";
  277. import { GlobalState } from "babylonjs-gui-editor/globalState";
  278. interface INumericInputComponentProps {
  279. label: string;
  280. value: number;
  281. step?: number;
  282. onChange: (value: number) => void;
  283. globalState: GlobalState;
  284. }
  285. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  286. value: string;
  287. }> {
  288. static defaultProps: {
  289. step: number;
  290. };
  291. private _localChange;
  292. constructor(props: INumericInputComponentProps);
  293. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  294. value: string;
  295. }): boolean;
  296. updateValue(evt: any): void;
  297. render(): JSX.Element;
  298. }
  299. }
  300. declare module "babylonjs-gui-editor/diagram/properties/sliderGuiPropertyComponent" {
  301. import * as React from "react";
  302. import { IPropertyComponentProps } from "babylonjs-gui-editor/diagram/properties/propertyComponentProps";
  303. export class SliderPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  304. constructor(props: IPropertyComponentProps);
  305. private slider;
  306. render(): JSX.Element;
  307. }
  308. }
  309. declare module "babylonjs-gui-editor/diagram/propertyLedger" {
  310. import { ComponentClass } from 'react';
  311. import { IPropertyComponentProps } from "babylonjs-gui-editor/diagram/properties/propertyComponentProps";
  312. export class PropertyGuiLedger {
  313. static RegisteredControls: {
  314. [key: string]: ComponentClass<IPropertyComponentProps>;
  315. };
  316. }
  317. }
  318. declare module "babylonjs-gui-editor/diagram/guiNode" {
  319. import { GlobalState } from "babylonjs-gui-editor/globalState";
  320. import { Nullable } from 'babylonjs/types';
  321. import { WorkbenchComponent } from "babylonjs-gui-editor/diagram/workbench";
  322. import { Control } from 'babylonjs-gui/2D/controls/control';
  323. import { Vector2 } from 'babylonjs/Maths/math.vector';
  324. export class GUINode {
  325. guiNode: Control;
  326. private _x;
  327. private _y;
  328. private _gridAlignedX;
  329. private _gridAlignedY;
  330. private _globalState;
  331. private _onSelectionChangedObserver;
  332. private _onSelectionBoxMovedObserver;
  333. private _onUpdateRequiredObserver;
  334. private _ownerCanvas;
  335. private _isSelected;
  336. private _isVisible;
  337. private _enclosingFrameId;
  338. get isVisible(): boolean;
  339. set isVisible(value: boolean);
  340. get gridAlignedX(): number;
  341. get gridAlignedY(): number;
  342. get x(): number;
  343. set x(value: number);
  344. get y(): number;
  345. set y(value: number);
  346. get width(): number;
  347. get height(): number;
  348. get id(): number;
  349. get name(): string | undefined;
  350. get isSelected(): boolean;
  351. get enclosingFrameId(): number;
  352. set enclosingFrameId(value: number);
  353. set isSelected(value: boolean);
  354. constructor(globalState: GlobalState, guiNode: Control);
  355. cleanAccumulation(useCeil?: boolean): void;
  356. clicked: boolean;
  357. _onMove(evt: Vector2, startPos: Vector2): boolean;
  358. renderProperties(): Nullable<JSX.Element>;
  359. updateVisual(): void;
  360. appendVisual(root: HTMLDivElement, owner: WorkbenchComponent): void;
  361. dispose(): void;
  362. }
  363. }
  364. declare module "babylonjs-gui-editor/globalState" {
  365. import { Nullable } from "babylonjs/types";
  366. import { Observable } from 'babylonjs/Misc/observable';
  367. import { LogEntry } from "babylonjs-gui-editor/components/log/logComponent";
  368. import { NodeMaterialBlock } from 'babylonjs/Materials/Node/nodeMaterialBlock';
  369. import { Color4 } from 'babylonjs/Maths/math.color';
  370. import { GUINode } from "babylonjs-gui-editor/diagram/guiNode";
  371. import { Vector2 } from 'babylonjs/Maths/math.vector';
  372. import { FramePortData, WorkbenchComponent } from "babylonjs-gui-editor/diagram/workbench";
  373. import { AdvancedDynamicTexture } from "babylonjs-gui/2D/advancedDynamicTexture";
  374. export class GlobalState {
  375. guiTexture: AdvancedDynamicTexture;
  376. hostElement: HTMLElement;
  377. hostDocument: HTMLDocument;
  378. hostWindow: Window;
  379. onSelectionChangedObservable: Observable<Nullable<FramePortData | GUINode>>;
  380. onRebuildRequiredObservable: Observable<void>;
  381. onBuiltObservable: Observable<void>;
  382. onResetRequiredObservable: Observable<void>;
  383. onUpdateRequiredObservable: Observable<void>;
  384. onZoomToFitRequiredObservable: Observable<void>;
  385. onReOrganizedRequiredObservable: Observable<void>;
  386. onLogRequiredObservable: Observable<LogEntry>;
  387. onErrorMessageDialogRequiredObservable: Observable<string>;
  388. onIsLoadingChanged: Observable<boolean>;
  389. onPreviewCommandActivated: Observable<boolean>;
  390. onLightUpdated: Observable<void>;
  391. onPreviewBackgroundChanged: Observable<void>;
  392. onBackFaceCullingChanged: Observable<void>;
  393. onDepthPrePassChanged: Observable<void>;
  394. onAnimationCommandActivated: Observable<void>;
  395. onCandidateLinkMoved: Observable<Nullable<Vector2>>;
  396. onSelectionBoxMoved: Observable<DOMRect | ClientRect>;
  397. onImportFrameObservable: Observable<any>;
  398. onGraphNodeRemovalObservable: Observable<GUINode>;
  399. onGetNodeFromBlock: (block: NodeMaterialBlock) => GUINode;
  400. onGridSizeChanged: Observable<void>;
  401. onExposePortOnFrameObservable: Observable<GUINode>;
  402. previewFile: File;
  403. listOfCustomPreviewFiles: File[];
  404. rotatePreview: boolean;
  405. backgroundColor: Color4;
  406. backFaceCulling: boolean;
  407. depthPrePass: boolean;
  408. blockKeyboardEvents: boolean;
  409. hemisphericLight: boolean;
  410. directionalLight0: boolean;
  411. directionalLight1: boolean;
  412. controlCamera: boolean;
  413. workbench: WorkbenchComponent;
  414. storeEditorData: (serializationObject: any, frame?: Nullable<null>) => void;
  415. customSave?: {
  416. label: string;
  417. action: (data: string) => Promise<void>;
  418. };
  419. constructor();
  420. }
  421. }
  422. declare module "babylonjs-gui-editor/sharedComponents/draggableLineComponent" {
  423. import * as React from "react";
  424. export interface IButtonLineComponentProps {
  425. data: string;
  426. tooltip: string;
  427. }
  428. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  429. constructor(props: IButtonLineComponentProps);
  430. render(): JSX.Element;
  431. }
  432. }
  433. declare module "babylonjs-gui-editor/components/nodeList/guiListComponent" {
  434. import * as React from "react";
  435. import { GlobalState } from "babylonjs-gui-editor/globalState";
  436. interface IGuiListComponentProps {
  437. globalState: GlobalState;
  438. }
  439. export class GuiListComponent extends React.Component<IGuiListComponentProps, {
  440. filter: string;
  441. }> {
  442. private _onResetRequiredObserver;
  443. private static _Tooltips;
  444. constructor(props: IGuiListComponentProps);
  445. componentWillUnmount(): void;
  446. filterContent(filter: string): void;
  447. render(): JSX.Element;
  448. }
  449. }
  450. declare module "babylonjs-gui-editor/sharedComponents/buttonLineComponent" {
  451. import * as React from "react";
  452. export interface IButtonLineComponentProps {
  453. label: string;
  454. onClick: () => void;
  455. }
  456. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  457. constructor(props: IButtonLineComponentProps);
  458. render(): JSX.Element;
  459. }
  460. }
  461. declare module "babylonjs-gui-editor/sharedComponents/fileButtonLineComponent" {
  462. import * as React from "react";
  463. interface IFileButtonLineComponentProps {
  464. label: string;
  465. onClick: (file: File) => void;
  466. accept: string;
  467. uploadName?: string;
  468. }
  469. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  470. private uploadRef;
  471. constructor(props: IFileButtonLineComponentProps);
  472. onChange(evt: any): void;
  473. render(): JSX.Element;
  474. }
  475. }
  476. declare module "babylonjs-gui-editor/serializationTools" {
  477. import { NodeMaterial } from 'babylonjs/Materials/Node/nodeMaterial';
  478. import { GlobalState } from "babylonjs-gui-editor/globalState";
  479. export class SerializationTools {
  480. static UpdateLocations(material: NodeMaterial, globalState: GlobalState): void;
  481. static Serialize(material: NodeMaterial, globalState: GlobalState): string;
  482. static Deserialize(serializationObject: any, globalState: GlobalState): void;
  483. static AddFrameToMaterial(serializationObject: any, globalState: GlobalState, currentMaterial: NodeMaterial): void;
  484. }
  485. }
  486. declare module "babylonjs-gui-editor/components/propertyTab/propertyTabComponent" {
  487. import * as React from "react";
  488. import { GlobalState } from "babylonjs-gui-editor/globalState";
  489. import { Nullable } from 'babylonjs/types';
  490. import { GUINode } from "babylonjs-gui-editor/diagram/guiNode";
  491. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  492. interface IPropertyTabComponentProps {
  493. globalState: GlobalState;
  494. }
  495. interface IPropertyTabComponentState {
  496. currentNode: Nullable<GUINode>;
  497. }
  498. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, IPropertyTabComponentState> {
  499. private _onBuiltObserver;
  500. constructor(props: IPropertyTabComponentProps);
  501. componentDidMount(): void;
  502. componentWillUnmount(): void;
  503. processInputBlockUpdate(ib: InputBlock): void;
  504. load(file: File): void;
  505. loadFrame(file: File): void;
  506. save(): void;
  507. customSave(): void;
  508. saveToSnippetServer(): void;
  509. loadFromSnippet(): void;
  510. render(): JSX.Element;
  511. }
  512. }
  513. declare module "babylonjs-gui-editor/portal" {
  514. import * as React from "react";
  515. import { GlobalState } from "babylonjs-gui-editor/globalState";
  516. interface IPortalProps {
  517. globalState: GlobalState;
  518. }
  519. export class Portal extends React.Component<IPortalProps> {
  520. render(): React.ReactPortal;
  521. }
  522. }
  523. declare module "babylonjs-gui-editor/nodeLocationInfo" {
  524. export interface INodeLocationInfo {
  525. blockId: number;
  526. x: number;
  527. y: number;
  528. }
  529. export interface IFrameData {
  530. x: number;
  531. y: number;
  532. width: number;
  533. height: number;
  534. color: number[];
  535. name: string;
  536. isCollapsed: boolean;
  537. blocks: number[];
  538. comments: string;
  539. }
  540. export interface IEditorData {
  541. locations: INodeLocationInfo[];
  542. x: number;
  543. y: number;
  544. zoom: number;
  545. frames?: IFrameData[];
  546. map?: {
  547. [key: number]: number;
  548. };
  549. }
  550. }
  551. declare module "babylonjs-gui-editor/sharedComponents/messageDialog" {
  552. import * as React from "react";
  553. import { GlobalState } from "babylonjs-gui-editor/globalState";
  554. interface IMessageDialogComponentProps {
  555. globalState: GlobalState;
  556. }
  557. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  558. message: string;
  559. isError: boolean;
  560. }> {
  561. constructor(props: IMessageDialogComponentProps);
  562. render(): JSX.Element | null;
  563. }
  564. }
  565. declare module "babylonjs-gui-editor/workbenchEditor" {
  566. import * as React from "react";
  567. import { GlobalState } from "babylonjs-gui-editor/globalState";
  568. import { Nullable } from 'babylonjs/types';
  569. import { IEditorData } from "babylonjs-gui-editor/nodeLocationInfo";
  570. import { GUINode } from "babylonjs-gui-editor/diagram/guiNode";
  571. import { Control } from "babylonjs-gui/2D/controls/control";
  572. interface IGraphEditorProps {
  573. globalState: GlobalState;
  574. }
  575. interface IGraphEditorState {
  576. showPreviewPopUp: boolean;
  577. }
  578. export class WorkbenchEditor extends React.Component<IGraphEditorProps, IGraphEditorState> {
  579. private _workbenchCanvas;
  580. private _startX;
  581. private _moveInProgress;
  582. private _leftWidth;
  583. private _rightWidth;
  584. private _blocks;
  585. private _onWidgetKeyUpPointer;
  586. private _popUpWindow;
  587. /**
  588. * Creates a node and recursivly creates its parent nodes from it's input
  589. * @param block
  590. */
  591. createNodeFromObject(block: Control, recursion?: boolean): Nullable<GUINode>;
  592. componentDidMount(): void;
  593. componentWillUnmount(): void;
  594. constructor(props: IGraphEditorProps);
  595. pasteSelection(copiedNodes: GUINode[], currentX: number, currentY: number, selectNew?: boolean): GUINode[];
  596. zoomToFit(): void;
  597. buildMaterial(): void;
  598. showWaitScreen(): void;
  599. hideWaitScreen(): void;
  600. reOrganize(editorData?: Nullable<IEditorData>, isImportingAFrame?: boolean): void;
  601. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  602. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  603. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  604. buildColumnLayout(): string;
  605. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  606. handlePopUp: () => void;
  607. handleClosingPopUp: () => void;
  608. createPopupWindow: (title: string, windowVariableName: string, width?: number, height?: number) => Window | null;
  609. copyStyles: (sourceDoc: HTMLDocument, targetDoc: HTMLDocument) => void;
  610. fixPopUpStyles: (document: Document) => void;
  611. render(): JSX.Element;
  612. }
  613. }
  614. declare module "babylonjs-gui-editor/sharedComponents/popup" {
  615. export class Popup {
  616. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  617. private static _CopyStyles;
  618. }
  619. }
  620. declare module "babylonjs-gui-editor/guiEditor" {
  621. import { Observable } from 'babylonjs/Misc/observable';
  622. /**
  623. * Interface used to specify creation options for the gui editor
  624. */
  625. export interface INodeEditorOptions {
  626. hostElement?: HTMLElement;
  627. customSave?: {
  628. label: string;
  629. action: (data: string) => Promise<void>;
  630. };
  631. customLoadObservable?: Observable<any>;
  632. }
  633. /**
  634. * Class used to create a gui editor
  635. */
  636. export class GuiEditor {
  637. private static _CurrentState;
  638. /**
  639. * Show the gui editor
  640. * @param options defines the options to use to configure the gui editor
  641. */
  642. static Show(options: INodeEditorOptions): void;
  643. }
  644. }
  645. declare module "babylonjs-gui-editor/index" {
  646. export * from "babylonjs-gui-editor/guiEditor";
  647. }
  648. declare module "babylonjs-gui-editor/stringTools" {
  649. import { NodeMaterialBlockConnectionPointTypes } from 'babylonjs/Materials/Node/Enums/nodeMaterialBlockConnectionPointTypes';
  650. export class StringTools {
  651. private static _SaveAs;
  652. private static _Click;
  653. /**
  654. * Gets the base math type of node material block connection point.
  655. * @param type Type to parse.
  656. */
  657. static GetBaseType(type: NodeMaterialBlockConnectionPointTypes): string;
  658. /**
  659. * Download a string into a file that will be saved locally by the browser
  660. * @param content defines the string to download locally as a file
  661. */
  662. static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
  663. }
  664. }
  665. declare module "babylonjs-gui-editor/components/propertyTab/properties/floatPropertyTabComponent" {
  666. import * as React from "react";
  667. import { GlobalState } from "babylonjs-gui-editor/globalState";
  668. import { InputBlock } from 'babylonjs/Materials/Node/Blocks/Input/inputBlock';
  669. interface IFloatPropertyTabComponentProps {
  670. globalState: GlobalState;
  671. inputBlock: InputBlock;
  672. }
  673. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  674. render(): JSX.Element;
  675. }
  676. }
  677. declare module "babylonjs-gui-editor/legacy/legacy" {
  678. export * from "babylonjs-gui-editor/index";
  679. }
  680. declare module "babylonjs-gui-editor/sharedComponents/lineWithFileButtonComponent" {
  681. import * as React from "react";
  682. interface ILineWithFileButtonComponentProps {
  683. title: string;
  684. closed?: boolean;
  685. label: string;
  686. iconImage: any;
  687. onIconClick: (file: File) => void;
  688. accept: string;
  689. uploadName?: string;
  690. }
  691. export class LineWithFileButtonComponent extends React.Component<ILineWithFileButtonComponentProps, {
  692. isExpanded: boolean;
  693. }> {
  694. private uploadRef;
  695. constructor(props: ILineWithFileButtonComponentProps);
  696. onChange(evt: any): void;
  697. switchExpandedState(): void;
  698. render(): JSX.Element;
  699. }
  700. }
  701. declare module "babylonjs-gui-editor/sharedComponents/textInputLineComponent" {
  702. import * as React from "react";
  703. import { Observable } from "babylonjs/Misc/observable";
  704. import { PropertyChangedEvent } from "babylonjs-gui-editor/sharedComponents/propertyChangedEvent";
  705. import { GlobalState } from "babylonjs-gui-editor/globalState";
  706. interface ITextInputLineComponentProps {
  707. label: string;
  708. globalState: GlobalState;
  709. target?: any;
  710. propertyName?: string;
  711. value?: string;
  712. multilines?: boolean;
  713. onChange?: (value: string) => void;
  714. validator?: (value: string) => boolean;
  715. onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
  716. }
  717. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  718. value: string;
  719. }> {
  720. private _localChange;
  721. constructor(props: ITextInputLineComponentProps);
  722. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  723. value: string;
  724. }): boolean;
  725. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  726. updateValue(value: string, raisePropertyChanged: boolean): void;
  727. render(): JSX.Element;
  728. }
  729. }
  730. declare module "babylonjs-gui-editor/sharedUiComponents/colorPicker/colorComponentEntry" {
  731. import * as React from "react";
  732. export interface IColorComponentEntryProps {
  733. value: number;
  734. label: string;
  735. max?: number;
  736. min?: number;
  737. onChange: (value: number) => void;
  738. }
  739. export class ColorComponentEntry extends React.Component<IColorComponentEntryProps> {
  740. constructor(props: IColorComponentEntryProps);
  741. updateValue(valueString: string): void;
  742. render(): JSX.Element;
  743. }
  744. }
  745. declare module "babylonjs-gui-editor/sharedUiComponents/colorPicker/hexColor" {
  746. import * as React from "react";
  747. export interface IHexColorProps {
  748. value: string;
  749. expectedLength: number;
  750. onChange: (value: string) => void;
  751. }
  752. export class HexColor extends React.Component<IHexColorProps, {
  753. hex: string;
  754. }> {
  755. constructor(props: IHexColorProps);
  756. shouldComponentUpdate(nextProps: IHexColorProps, nextState: {
  757. hex: string;
  758. }): boolean;
  759. updateHexValue(valueString: string): void;
  760. render(): JSX.Element;
  761. }
  762. }
  763. declare module "babylonjs-gui-editor/sharedUiComponents/colorPicker/colorPicker" {
  764. import * as React from "react";
  765. import { Color3, Color4 } from "babylonjs/Maths/math.color";
  766. /**
  767. * Interface used to specify creation options for color picker
  768. */
  769. export interface IColorPickerProps {
  770. color: Color3 | Color4;
  771. debugMode?: boolean;
  772. onColorChanged?: (color: Color3 | Color4) => void;
  773. }
  774. /**
  775. * Interface used to specify creation options for color picker
  776. */
  777. export interface IColorPickerState {
  778. color: Color3;
  779. alpha: number;
  780. }
  781. /**
  782. * Class used to create a color picker
  783. */
  784. export class ColorPicker extends React.Component<IColorPickerProps, IColorPickerState> {
  785. private _saturationRef;
  786. private _hueRef;
  787. private _isSaturationPointerDown;
  788. private _isHuePointerDown;
  789. constructor(props: IColorPickerProps);
  790. onSaturationPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  791. onSaturationPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  792. onSaturationPointerMove(evt: React.PointerEvent<HTMLDivElement>): void;
  793. onHuePointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  794. onHuePointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  795. onHuePointerMove(evt: React.PointerEvent<HTMLDivElement>): void;
  796. private _evaluateSaturation;
  797. private _evaluateHue;
  798. componentDidUpdate(): void;
  799. raiseOnColorChanged(): void;
  800. render(): JSX.Element;
  801. }
  802. }
  803. declare module "babylonjs-gui-editor/sharedUiComponents/lines/booleanLineComponent" {
  804. import * as React from "react";
  805. export interface IBooleanLineComponentProps {
  806. label: string;
  807. value: boolean;
  808. }
  809. export class BooleanLineComponent extends React.Component<IBooleanLineComponentProps> {
  810. constructor(props: IBooleanLineComponentProps);
  811. render(): JSX.Element;
  812. }
  813. }
  814. declare module "babylonjs-gui-editor/sharedUiComponents/lines/buttonLineComponent" {
  815. import * as React from "react";
  816. export interface IButtonLineComponentProps {
  817. label: string;
  818. onClick: () => void;
  819. }
  820. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  821. constructor(props: IButtonLineComponentProps);
  822. render(): JSX.Element;
  823. }
  824. }
  825. declare module "babylonjs-gui-editor/sharedUiComponents/lines/fileButtonLineComponent" {
  826. import * as React from "react";
  827. interface IFileButtonLineComponentProps {
  828. label: string;
  829. onClick: (file: File) => void;
  830. accept: string;
  831. }
  832. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  833. private static _IDGenerator;
  834. private _id;
  835. private uploadInputRef;
  836. constructor(props: IFileButtonLineComponentProps);
  837. onChange(evt: any): void;
  838. render(): JSX.Element;
  839. }
  840. }
  841. declare module "babylonjs-gui-editor/sharedUiComponents/lines/fileMultipleButtonLineComponent" {
  842. import * as React from "react";
  843. interface IFileMultipleButtonLineComponentProps {
  844. label: string;
  845. onClick: (event: any) => void;
  846. accept: string;
  847. }
  848. export class FileMultipleButtonLineComponent extends React.Component<IFileMultipleButtonLineComponentProps> {
  849. private static _IDGenerator;
  850. private _id;
  851. private uploadInputRef;
  852. constructor(props: IFileMultipleButtonLineComponentProps);
  853. onChange(evt: any): void;
  854. render(): JSX.Element;
  855. }
  856. }
  857. declare module "babylonjs-gui-editor/sharedUiComponents/lines/iconButtonLineComponent" {
  858. import * as React from 'react';
  859. export interface IIconButtonLineComponentProps {
  860. icon: string;
  861. onClick: () => void;
  862. tooltip: string;
  863. active?: boolean;
  864. }
  865. export class IconButtonLineComponent extends React.Component<IIconButtonLineComponentProps> {
  866. constructor(props: IIconButtonLineComponentProps);
  867. render(): JSX.Element;
  868. }
  869. }
  870. declare module "babylonjs-gui-editor/sharedUiComponents/lines/indentedTextLineComponent" {
  871. import * as React from "react";
  872. interface IIndentedTextLineComponentProps {
  873. value?: string;
  874. color?: string;
  875. underline?: boolean;
  876. onLink?: () => void;
  877. url?: string;
  878. additionalClass?: string;
  879. }
  880. export class IndentedTextLineComponent extends React.Component<IIndentedTextLineComponentProps> {
  881. constructor(props: IIndentedTextLineComponentProps);
  882. onLink(): void;
  883. renderContent(): JSX.Element;
  884. render(): JSX.Element;
  885. }
  886. }
  887. declare module "babylonjs-gui-editor/sharedUiComponents/lines/linkButtonComponent" {
  888. import * as React from "react";
  889. interface ILinkButtonComponentProps {
  890. label: string;
  891. buttonLabel: string;
  892. url?: string;
  893. onClick: () => void;
  894. onIconClick?: () => void;
  895. }
  896. export class LinkButtonComponent extends React.Component<ILinkButtonComponentProps> {
  897. constructor(props: ILinkButtonComponentProps);
  898. onLink(): void;
  899. render(): JSX.Element;
  900. }
  901. }
  902. declare module "babylonjs-gui-editor/sharedUiComponents/lines/messageLineComponent" {
  903. import * as React from "react";
  904. interface IMessageLineComponentProps {
  905. text: string;
  906. color?: string;
  907. }
  908. export class MessageLineComponent extends React.Component<IMessageLineComponentProps> {
  909. constructor(props: IMessageLineComponentProps);
  910. render(): JSX.Element;
  911. }
  912. }
  913. declare module "babylonjs-gui-editor/sharedUiComponents/lines/numericInputComponent" {
  914. import * as React from "react";
  915. interface INumericInputComponentProps {
  916. label: string;
  917. value: number;
  918. step?: number;
  919. onChange: (value: number) => void;
  920. precision?: number;
  921. }
  922. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  923. value: string;
  924. }> {
  925. static defaultProps: {
  926. step: number;
  927. };
  928. private _localChange;
  929. constructor(props: INumericInputComponentProps);
  930. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  931. value: string;
  932. }): boolean;
  933. updateValue(evt: any): void;
  934. onBlur(): void;
  935. render(): JSX.Element;
  936. }
  937. }
  938. declare module "babylonjs-gui-editor/sharedUiComponents/lines/radioLineComponent" {
  939. import * as React from "react";
  940. import { Observable } from "babylonjs/Misc/observable";
  941. interface IRadioButtonLineComponentProps {
  942. onSelectionChangedObservable: Observable<RadioButtonLineComponent>;
  943. label: string;
  944. isSelected: () => boolean;
  945. onSelect: () => void;
  946. }
  947. export class RadioButtonLineComponent extends React.Component<IRadioButtonLineComponentProps, {
  948. isSelected: boolean;
  949. }> {
  950. private _onSelectionChangedObserver;
  951. constructor(props: IRadioButtonLineComponentProps);
  952. componentDidMount(): void;
  953. componentWillUnmount(): void;
  954. onChange(): void;
  955. render(): JSX.Element;
  956. }
  957. }
  958. declare module "babylonjs-gui-editor/sharedUiComponents/lines/textLineComponent" {
  959. import * as React from "react";
  960. interface ITextLineComponentProps {
  961. label?: string;
  962. value?: string;
  963. color?: string;
  964. underline?: boolean;
  965. onLink?: () => void;
  966. url?: string;
  967. ignoreValue?: boolean;
  968. additionalClass?: string;
  969. }
  970. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  971. constructor(props: ITextLineComponentProps);
  972. onLink(): void;
  973. renderContent(): JSX.Element | null;
  974. render(): JSX.Element;
  975. }
  976. }
  977. declare module "babylonjs-gui-editor/sharedUiComponents/lines/valueLineComponent" {
  978. import * as React from "react";
  979. interface IValueLineComponentProps {
  980. label: string;
  981. value: number;
  982. color?: string;
  983. fractionDigits?: number;
  984. units?: string;
  985. }
  986. export class ValueLineComponent extends React.Component<IValueLineComponentProps> {
  987. constructor(props: IValueLineComponentProps);
  988. render(): JSX.Element;
  989. }
  990. }
  991. declare module "babylonjs-gui-editor" {
  992. export * from "babylonjs-gui-editor/legacy/legacy";
  993. }
  994. /// <reference types="react" />
  995. declare module GUIEDITOR {
  996. export class BlockTools {
  997. static GetGuiFromString(data: string): Slider | Checkbox | ColorPicker | Ellipse | Rectangle | Line | TextBlock;
  998. }
  999. }
  1000. declare module GUIEDITOR {
  1001. interface ILogComponentProps {
  1002. globalState: GlobalState;
  1003. }
  1004. export class LogEntry {
  1005. message: string;
  1006. isError: boolean;
  1007. constructor(message: string, isError: boolean);
  1008. }
  1009. export class LogComponent extends React.Component<ILogComponentProps, {
  1010. logs: LogEntry[];
  1011. }> {
  1012. constructor(props: ILogComponentProps);
  1013. componentDidMount(): void;
  1014. componentDidUpdate(): void;
  1015. render(): JSX.Element;
  1016. }
  1017. }
  1018. declare module GUIEDITOR {
  1019. export interface IWorkbenchComponentProps {
  1020. globalState: GlobalState;
  1021. }
  1022. export type FramePortData = {};
  1023. export const isFramePortData: (variableToCheck: any) => variableToCheck is FramePortData;
  1024. export class WorkbenchComponent extends React.Component<IWorkbenchComponentProps> {
  1025. private readonly MinZoom;
  1026. private readonly MaxZoom;
  1027. private _hostCanvas;
  1028. private _graphCanvas;
  1029. private _selectionContainer;
  1030. private _frameContainer;
  1031. private _svgCanvas;
  1032. private _rootContainer;
  1033. private _guiNodes;
  1034. private _mouseStartPointX;
  1035. private _mouseStartPointY;
  1036. private _selectionStartX;
  1037. private _selectionStartY;
  1038. private _x;
  1039. private _y;
  1040. private _zoom;
  1041. private _selectedGuiNodes;
  1042. private _gridSize;
  1043. private _selectionBox;
  1044. private _frameCandidate;
  1045. private _altKeyIsPressed;
  1046. private _ctrlKeyIsPressed;
  1047. private _oldY;
  1048. _frameIsMoving: boolean;
  1049. _isLoading: boolean;
  1050. isOverGUINode: boolean;
  1051. get gridSize(): number;
  1052. set gridSize(value: number);
  1053. get globalState(): GlobalState;
  1054. get nodes(): GUINode[];
  1055. get zoom(): number;
  1056. set zoom(value: number);
  1057. get x(): number;
  1058. set x(value: number);
  1059. get y(): number;
  1060. set y(value: number);
  1061. get selectedGuiNodes(): GUINode[];
  1062. get canvasContainer(): HTMLDivElement;
  1063. get hostCanvas(): HTMLDivElement;
  1064. get svgCanvas(): HTMLElement;
  1065. get selectionContainer(): HTMLDivElement;
  1066. get frameContainer(): HTMLDivElement;
  1067. constructor(props: IWorkbenchComponentProps);
  1068. getGridPosition(position: number, useCeil?: boolean): number;
  1069. getGridPositionCeil(position: number): number;
  1070. updateTransform(): void;
  1071. onKeyUp(): void;
  1072. findNodeFromGuiElement(guiElement: Control): GUINode;
  1073. reset(): void;
  1074. appendBlock(guiElement: Control): GUINode;
  1075. distributeGraph(): void;
  1076. componentDidMount(): void;
  1077. onMove(evt: React.PointerEvent): void;
  1078. onDown(evt: React.PointerEvent<HTMLElement>): void;
  1079. onUp(evt: React.PointerEvent): void;
  1080. onWheel(evt: React.WheelEvent): void;
  1081. zoomToFit(): void;
  1082. createGUICanvas(): void;
  1083. updateGUIs(): void;
  1084. render(): JSX.Element;
  1085. }
  1086. }
  1087. declare module GUIEDITOR {
  1088. export interface IPropertyComponentProps {
  1089. globalState: GlobalState;
  1090. guiBlock: Control;
  1091. }
  1092. }
  1093. declare module GUIEDITOR {
  1094. interface ILineContainerComponentProps {
  1095. title: string;
  1096. children: any[] | any;
  1097. closed?: boolean;
  1098. }
  1099. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  1100. isExpanded: boolean;
  1101. }> {
  1102. constructor(props: ILineContainerComponentProps);
  1103. switchExpandedState(): void;
  1104. renderHeader(): JSX.Element;
  1105. render(): JSX.Element;
  1106. }
  1107. }
  1108. declare module GUIEDITOR {
  1109. export class PropertyChangedEvent {
  1110. object: any;
  1111. property: string;
  1112. value: any;
  1113. initialValue: any;
  1114. }
  1115. }
  1116. declare module GUIEDITOR {
  1117. export interface ICheckBoxLineComponentProps {
  1118. label: string;
  1119. target?: any;
  1120. propertyName?: string;
  1121. isSelected?: () => boolean;
  1122. onSelect?: (value: boolean) => void;
  1123. onValueChanged?: () => void;
  1124. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1125. disabled?: boolean;
  1126. }
  1127. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  1128. isSelected: boolean;
  1129. isDisabled?: boolean;
  1130. }> {
  1131. private static _UniqueIdSeed;
  1132. private _uniqueId;
  1133. private _localChange;
  1134. constructor(props: ICheckBoxLineComponentProps);
  1135. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  1136. isSelected: boolean;
  1137. isDisabled: boolean;
  1138. }): boolean;
  1139. onChange(): void;
  1140. render(): JSX.Element;
  1141. }
  1142. }
  1143. declare module GUIEDITOR {
  1144. interface IFloatLineComponentProps {
  1145. label: string;
  1146. target: any;
  1147. propertyName: string;
  1148. onChange?: (newValue: number) => void;
  1149. isInteger?: boolean;
  1150. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1151. additionalClass?: string;
  1152. step?: string;
  1153. digits?: number;
  1154. globalState: GlobalState;
  1155. min?: number;
  1156. max?: number;
  1157. smallUI?: boolean;
  1158. onEnter?: (newValue: number) => void;
  1159. }
  1160. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  1161. value: string;
  1162. }> {
  1163. private _localChange;
  1164. private _store;
  1165. private _regExp;
  1166. constructor(props: IFloatLineComponentProps);
  1167. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  1168. value: string;
  1169. }): boolean;
  1170. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  1171. updateValue(valueString: string): void;
  1172. render(): JSX.Element;
  1173. }
  1174. }
  1175. declare module GUIEDITOR {
  1176. interface ISliderLineComponentProps {
  1177. label: string;
  1178. target?: any;
  1179. propertyName?: string;
  1180. minimum: number;
  1181. maximum: number;
  1182. step: number;
  1183. directValue?: number;
  1184. useEuler?: boolean;
  1185. onChange?: (value: number) => void;
  1186. onInput?: (value: number) => void;
  1187. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1188. decimalCount?: number;
  1189. globalState: GlobalState;
  1190. }
  1191. export class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
  1192. value: number;
  1193. }> {
  1194. private _localChange;
  1195. constructor(props: ISliderLineComponentProps);
  1196. shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
  1197. value: number;
  1198. }): boolean;
  1199. onChange(newValueString: any): void;
  1200. onInput(newValueString: any): void;
  1201. prepareDataToRead(value: number): number;
  1202. render(): JSX.Element;
  1203. }
  1204. }
  1205. declare module GUIEDITOR {
  1206. export class GenericPropertyComponent extends React.Component<IPropertyComponentProps> {
  1207. constructor(props: IPropertyComponentProps);
  1208. render(): JSX.Element;
  1209. }
  1210. export class GeneralPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  1211. constructor(props: IPropertyComponentProps);
  1212. render(): JSX.Element;
  1213. }
  1214. export class GenericPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  1215. constructor(props: IPropertyComponentProps);
  1216. forceRebuild(notifiers?: {
  1217. "rebuild"?: boolean;
  1218. "update"?: boolean;
  1219. }): void;
  1220. render(): JSX.Element;
  1221. }
  1222. }
  1223. declare module GUIEDITOR {
  1224. interface ITextLineComponentProps {
  1225. label: string;
  1226. value: string;
  1227. color?: string;
  1228. underline?: boolean;
  1229. onLink?: () => void;
  1230. }
  1231. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  1232. constructor(props: ITextLineComponentProps);
  1233. onLink(): void;
  1234. renderContent(): JSX.Element;
  1235. render(): JSX.Element;
  1236. }
  1237. }
  1238. declare module GUIEDITOR {
  1239. interface INumericInputComponentProps {
  1240. label: string;
  1241. value: number;
  1242. step?: number;
  1243. onChange: (value: number) => void;
  1244. globalState: GlobalState;
  1245. }
  1246. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  1247. value: string;
  1248. }> {
  1249. static defaultProps: {
  1250. step: number;
  1251. };
  1252. private _localChange;
  1253. constructor(props: INumericInputComponentProps);
  1254. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  1255. value: string;
  1256. }): boolean;
  1257. updateValue(evt: any): void;
  1258. render(): JSX.Element;
  1259. }
  1260. }
  1261. declare module GUIEDITOR {
  1262. export class SliderPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  1263. constructor(props: IPropertyComponentProps);
  1264. private slider;
  1265. render(): JSX.Element;
  1266. }
  1267. }
  1268. declare module GUIEDITOR {
  1269. export class PropertyGuiLedger {
  1270. static RegisteredControls: {
  1271. [key: string]: React.ComponentClass<IPropertyComponentProps>;
  1272. };
  1273. }
  1274. }
  1275. declare module GUIEDITOR {
  1276. export class GUINode {
  1277. guiNode: Control;
  1278. private _x;
  1279. private _y;
  1280. private _gridAlignedX;
  1281. private _gridAlignedY;
  1282. private _globalState;
  1283. private _onSelectionChangedObserver;
  1284. private _onSelectionBoxMovedObserver;
  1285. private _onUpdateRequiredObserver;
  1286. private _ownerCanvas;
  1287. private _isSelected;
  1288. private _isVisible;
  1289. private _enclosingFrameId;
  1290. get isVisible(): boolean;
  1291. set isVisible(value: boolean);
  1292. get gridAlignedX(): number;
  1293. get gridAlignedY(): number;
  1294. get x(): number;
  1295. set x(value: number);
  1296. get y(): number;
  1297. set y(value: number);
  1298. get width(): number;
  1299. get height(): number;
  1300. get id(): number;
  1301. get name(): string | undefined;
  1302. get isSelected(): boolean;
  1303. get enclosingFrameId(): number;
  1304. set enclosingFrameId(value: number);
  1305. set isSelected(value: boolean);
  1306. constructor(globalState: GlobalState, guiNode: Control);
  1307. cleanAccumulation(useCeil?: boolean): void;
  1308. clicked: boolean;
  1309. _onMove(evt: BABYLON.Vector2, startPos: BABYLON.Vector2): boolean;
  1310. renderProperties(): BABYLON.Nullable<JSX.Element>;
  1311. updateVisual(): void;
  1312. appendVisual(root: HTMLDivElement, owner: WorkbenchComponent): void;
  1313. dispose(): void;
  1314. }
  1315. }
  1316. declare module GUIEDITOR {
  1317. export class GlobalState {
  1318. guiTexture: AdvancedDynamicTexture;
  1319. hostElement: HTMLElement;
  1320. hostDocument: HTMLDocument;
  1321. hostWindow: Window;
  1322. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<FramePortData | GUINode>>;
  1323. onRebuildRequiredObservable: BABYLON.Observable<void>;
  1324. onBuiltObservable: BABYLON.Observable<void>;
  1325. onResetRequiredObservable: BABYLON.Observable<void>;
  1326. onUpdateRequiredObservable: BABYLON.Observable<void>;
  1327. onZoomToFitRequiredObservable: BABYLON.Observable<void>;
  1328. onReOrganizedRequiredObservable: BABYLON.Observable<void>;
  1329. onLogRequiredObservable: BABYLON.Observable<LogEntry>;
  1330. onErrorMessageDialogRequiredObservable: BABYLON.Observable<string>;
  1331. onIsLoadingChanged: BABYLON.Observable<boolean>;
  1332. onPreviewCommandActivated: BABYLON.Observable<boolean>;
  1333. onLightUpdated: BABYLON.Observable<void>;
  1334. onPreviewBackgroundChanged: BABYLON.Observable<void>;
  1335. onBackFaceCullingChanged: BABYLON.Observable<void>;
  1336. onDepthPrePassChanged: BABYLON.Observable<void>;
  1337. onAnimationCommandActivated: BABYLON.Observable<void>;
  1338. onCandidateLinkMoved: BABYLON.Observable<BABYLON.Nullable<BABYLON.Vector2>>;
  1339. onSelectionBoxMoved: BABYLON.Observable<DOMRect | ClientRect>;
  1340. onImportFrameObservable: BABYLON.Observable<any>;
  1341. onGraphNodeRemovalObservable: BABYLON.Observable<GUINode>;
  1342. onGetNodeFromBlock: (block: BABYLON.NodeMaterialBlock) => GUINode;
  1343. onGridSizeChanged: BABYLON.Observable<void>;
  1344. onExposePortOnFrameObservable: BABYLON.Observable<GUINode>;
  1345. previewFile: File;
  1346. listOfCustomPreviewFiles: File[];
  1347. rotatePreview: boolean;
  1348. backgroundColor: BABYLON.Color4;
  1349. backFaceCulling: boolean;
  1350. depthPrePass: boolean;
  1351. blockKeyboardEvents: boolean;
  1352. hemisphericLight: boolean;
  1353. directionalLight0: boolean;
  1354. directionalLight1: boolean;
  1355. controlCamera: boolean;
  1356. workbench: WorkbenchComponent;
  1357. storeEditorData: (serializationObject: any, frame?: BABYLON.Nullable<null>) => void;
  1358. customSave?: {
  1359. label: string;
  1360. action: (data: string) => Promise<void>;
  1361. };
  1362. constructor();
  1363. }
  1364. }
  1365. declare module GUIEDITOR {
  1366. export interface IButtonLineComponentProps {
  1367. data: string;
  1368. tooltip: string;
  1369. }
  1370. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  1371. constructor(props: IButtonLineComponentProps);
  1372. render(): JSX.Element;
  1373. }
  1374. }
  1375. declare module GUIEDITOR {
  1376. interface IGuiListComponentProps {
  1377. globalState: GlobalState;
  1378. }
  1379. export class GuiListComponent extends React.Component<IGuiListComponentProps, {
  1380. filter: string;
  1381. }> {
  1382. private _onResetRequiredObserver;
  1383. private static _Tooltips;
  1384. constructor(props: IGuiListComponentProps);
  1385. componentWillUnmount(): void;
  1386. filterContent(filter: string): void;
  1387. render(): JSX.Element;
  1388. }
  1389. }
  1390. declare module GUIEDITOR {
  1391. export interface IButtonLineComponentProps {
  1392. label: string;
  1393. onClick: () => void;
  1394. }
  1395. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  1396. constructor(props: IButtonLineComponentProps);
  1397. render(): JSX.Element;
  1398. }
  1399. }
  1400. declare module GUIEDITOR {
  1401. interface IFileButtonLineComponentProps {
  1402. label: string;
  1403. onClick: (file: File) => void;
  1404. accept: string;
  1405. uploadName?: string;
  1406. }
  1407. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  1408. private uploadRef;
  1409. constructor(props: IFileButtonLineComponentProps);
  1410. onChange(evt: any): void;
  1411. render(): JSX.Element;
  1412. }
  1413. }
  1414. declare module GUIEDITOR {
  1415. export class SerializationTools {
  1416. static UpdateLocations(material: BABYLON.NodeMaterial, globalState: GlobalState): void;
  1417. static Serialize(material: BABYLON.NodeMaterial, globalState: GlobalState): string;
  1418. static Deserialize(serializationObject: any, globalState: GlobalState): void;
  1419. static AddFrameToMaterial(serializationObject: any, globalState: GlobalState, currentMaterial: BABYLON.NodeMaterial): void;
  1420. }
  1421. }
  1422. declare module GUIEDITOR {
  1423. interface IPropertyTabComponentProps {
  1424. globalState: GlobalState;
  1425. }
  1426. interface IPropertyTabComponentState {
  1427. currentNode: BABYLON.Nullable<GUINode>;
  1428. }
  1429. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, IPropertyTabComponentState> {
  1430. private _onBuiltObserver;
  1431. constructor(props: IPropertyTabComponentProps);
  1432. componentDidMount(): void;
  1433. componentWillUnmount(): void;
  1434. processInputBlockUpdate(ib: BABYLON.InputBlock): void;
  1435. load(file: File): void;
  1436. loadFrame(file: File): void;
  1437. save(): void;
  1438. customSave(): void;
  1439. saveToSnippetServer(): void;
  1440. loadFromSnippet(): void;
  1441. render(): JSX.Element;
  1442. }
  1443. }
  1444. declare module GUIEDITOR {
  1445. interface IPortalProps {
  1446. globalState: GlobalState;
  1447. }
  1448. export class Portal extends React.Component<IPortalProps> {
  1449. render(): React.ReactPortal;
  1450. }
  1451. }
  1452. declare module GUIEDITOR {
  1453. export interface INodeLocationInfo {
  1454. blockId: number;
  1455. x: number;
  1456. y: number;
  1457. }
  1458. export interface IFrameData {
  1459. x: number;
  1460. y: number;
  1461. width: number;
  1462. height: number;
  1463. color: number[];
  1464. name: string;
  1465. isCollapsed: boolean;
  1466. blocks: number[];
  1467. comments: string;
  1468. }
  1469. export interface IEditorData {
  1470. locations: INodeLocationInfo[];
  1471. x: number;
  1472. y: number;
  1473. zoom: number;
  1474. frames?: IFrameData[];
  1475. map?: {
  1476. [key: number]: number;
  1477. };
  1478. }
  1479. }
  1480. declare module GUIEDITOR {
  1481. interface IMessageDialogComponentProps {
  1482. globalState: GlobalState;
  1483. }
  1484. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  1485. message: string;
  1486. isError: boolean;
  1487. }> {
  1488. constructor(props: IMessageDialogComponentProps);
  1489. render(): JSX.Element | null;
  1490. }
  1491. }
  1492. declare module GUIEDITOR {
  1493. interface IGraphEditorProps {
  1494. globalState: GlobalState;
  1495. }
  1496. interface IGraphEditorState {
  1497. showPreviewPopUp: boolean;
  1498. }
  1499. export class WorkbenchEditor extends React.Component<IGraphEditorProps, IGraphEditorState> {
  1500. private _workbenchCanvas;
  1501. private _startX;
  1502. private _moveInProgress;
  1503. private _leftWidth;
  1504. private _rightWidth;
  1505. private _blocks;
  1506. private _onWidgetKeyUpPointer;
  1507. private _popUpWindow;
  1508. /**
  1509. * Creates a node and recursivly creates its parent nodes from it's input
  1510. * @param block
  1511. */
  1512. createNodeFromObject(block: Control, recursion?: boolean): BABYLON.Nullable<GUINode>;
  1513. componentDidMount(): void;
  1514. componentWillUnmount(): void;
  1515. constructor(props: IGraphEditorProps);
  1516. pasteSelection(copiedNodes: GUINode[], currentX: number, currentY: number, selectNew?: boolean): GUINode[];
  1517. zoomToFit(): void;
  1518. buildMaterial(): void;
  1519. showWaitScreen(): void;
  1520. hideWaitScreen(): void;
  1521. reOrganize(editorData?: BABYLON.Nullable<IEditorData>, isImportingAFrame?: boolean): void;
  1522. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1523. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1524. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  1525. buildColumnLayout(): string;
  1526. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  1527. handlePopUp: () => void;
  1528. handleClosingPopUp: () => void;
  1529. createPopupWindow: (title: string, windowVariableName: string, width?: number, height?: number) => Window | null;
  1530. copyStyles: (sourceDoc: HTMLDocument, targetDoc: HTMLDocument) => void;
  1531. fixPopUpStyles: (document: Document) => void;
  1532. render(): JSX.Element;
  1533. }
  1534. }
  1535. declare module GUIEDITOR {
  1536. export class Popup {
  1537. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  1538. private static _CopyStyles;
  1539. }
  1540. }
  1541. declare module GUIEDITOR {
  1542. /**
  1543. * Interface used to specify creation options for the gui editor
  1544. */
  1545. export interface INodeEditorOptions {
  1546. hostElement?: HTMLElement;
  1547. customSave?: {
  1548. label: string;
  1549. action: (data: string) => Promise<void>;
  1550. };
  1551. customLoadObservable?: BABYLON.Observable<any>;
  1552. }
  1553. /**
  1554. * Class used to create a gui editor
  1555. */
  1556. export class GuiEditor {
  1557. private static _CurrentState;
  1558. /**
  1559. * Show the gui editor
  1560. * @param options defines the options to use to configure the gui editor
  1561. */
  1562. static Show(options: INodeEditorOptions): void;
  1563. }
  1564. }
  1565. declare module GUIEDITOR {
  1566. export class StringTools {
  1567. private static _SaveAs;
  1568. private static _Click;
  1569. /**
  1570. * Gets the base math type of node material block connection point.
  1571. * @param type Type to parse.
  1572. */
  1573. static GetBaseType(type: BABYLON.NodeMaterialBlockConnectionPointTypes): string;
  1574. /**
  1575. * Download a string into a file that will be saved locally by the browser
  1576. * @param content defines the string to download locally as a file
  1577. */
  1578. static DownloadAsFile(document: HTMLDocument, content: string, filename: string): void;
  1579. }
  1580. }
  1581. declare module GUIEDITOR {
  1582. interface IFloatPropertyTabComponentProps {
  1583. globalState: GlobalState;
  1584. inputBlock: BABYLON.InputBlock;
  1585. }
  1586. export class FloatPropertyTabComponent extends React.Component<IFloatPropertyTabComponentProps> {
  1587. render(): JSX.Element;
  1588. }
  1589. }
  1590. declare module GUIEDITOR {
  1591. interface ILineWithFileButtonComponentProps {
  1592. title: string;
  1593. closed?: boolean;
  1594. label: string;
  1595. iconImage: any;
  1596. onIconClick: (file: File) => void;
  1597. accept: string;
  1598. uploadName?: string;
  1599. }
  1600. export class LineWithFileButtonComponent extends React.Component<ILineWithFileButtonComponentProps, {
  1601. isExpanded: boolean;
  1602. }> {
  1603. private uploadRef;
  1604. constructor(props: ILineWithFileButtonComponentProps);
  1605. onChange(evt: any): void;
  1606. switchExpandedState(): void;
  1607. render(): JSX.Element;
  1608. }
  1609. }
  1610. declare module GUIEDITOR {
  1611. interface ITextInputLineComponentProps {
  1612. label: string;
  1613. globalState: GlobalState;
  1614. target?: any;
  1615. propertyName?: string;
  1616. value?: string;
  1617. multilines?: boolean;
  1618. onChange?: (value: string) => void;
  1619. validator?: (value: string) => boolean;
  1620. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1621. }
  1622. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  1623. value: string;
  1624. }> {
  1625. private _localChange;
  1626. constructor(props: ITextInputLineComponentProps);
  1627. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  1628. value: string;
  1629. }): boolean;
  1630. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  1631. updateValue(value: string, raisePropertyChanged: boolean): void;
  1632. render(): JSX.Element;
  1633. }
  1634. }
  1635. declare module GUIEDITOR {
  1636. export interface IColorComponentEntryProps {
  1637. value: number;
  1638. label: string;
  1639. max?: number;
  1640. min?: number;
  1641. onChange: (value: number) => void;
  1642. }
  1643. export class ColorComponentEntry extends React.Component<IColorComponentEntryProps> {
  1644. constructor(props: IColorComponentEntryProps);
  1645. updateValue(valueString: string): void;
  1646. render(): JSX.Element;
  1647. }
  1648. }
  1649. declare module GUIEDITOR {
  1650. export interface IHexColorProps {
  1651. value: string;
  1652. expectedLength: number;
  1653. onChange: (value: string) => void;
  1654. }
  1655. export class HexColor extends React.Component<IHexColorProps, {
  1656. hex: string;
  1657. }> {
  1658. constructor(props: IHexColorProps);
  1659. shouldComponentUpdate(nextProps: IHexColorProps, nextState: {
  1660. hex: string;
  1661. }): boolean;
  1662. updateHexValue(valueString: string): void;
  1663. render(): JSX.Element;
  1664. }
  1665. }
  1666. declare module GUIEDITOR {
  1667. /**
  1668. * Interface used to specify creation options for color picker
  1669. */
  1670. export interface IColorPickerProps {
  1671. color: BABYLON.Color3 | BABYLON.Color4;
  1672. debugMode?: boolean;
  1673. onColorChanged?: (color: BABYLON.Color3 | BABYLON.Color4) => void;
  1674. }
  1675. /**
  1676. * Interface used to specify creation options for color picker
  1677. */
  1678. export interface IColorPickerState {
  1679. color: BABYLON.Color3;
  1680. alpha: number;
  1681. }
  1682. /**
  1683. * Class used to create a color picker
  1684. */
  1685. export class ColorPicker extends React.Component<IColorPickerProps, IColorPickerState> {
  1686. private _saturationRef;
  1687. private _hueRef;
  1688. private _isSaturationPointerDown;
  1689. private _isHuePointerDown;
  1690. constructor(props: IColorPickerProps);
  1691. onSaturationPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1692. onSaturationPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1693. onSaturationPointerMove(evt: React.PointerEvent<HTMLDivElement>): void;
  1694. onHuePointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  1695. onHuePointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  1696. onHuePointerMove(evt: React.PointerEvent<HTMLDivElement>): void;
  1697. private _evaluateSaturation;
  1698. private _evaluateHue;
  1699. componentDidUpdate(): void;
  1700. raiseOnColorChanged(): void;
  1701. render(): JSX.Element;
  1702. }
  1703. }
  1704. declare module GUIEDITOR {
  1705. export interface IBooleanLineComponentProps {
  1706. label: string;
  1707. value: boolean;
  1708. }
  1709. export class BooleanLineComponent extends React.Component<IBooleanLineComponentProps> {
  1710. constructor(props: IBooleanLineComponentProps);
  1711. render(): JSX.Element;
  1712. }
  1713. }
  1714. declare module GUIEDITOR {
  1715. export interface IButtonLineComponentProps {
  1716. label: string;
  1717. onClick: () => void;
  1718. }
  1719. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  1720. constructor(props: IButtonLineComponentProps);
  1721. render(): JSX.Element;
  1722. }
  1723. }
  1724. declare module GUIEDITOR {
  1725. interface IFileButtonLineComponentProps {
  1726. label: string;
  1727. onClick: (file: File) => void;
  1728. accept: string;
  1729. }
  1730. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  1731. private static _IDGenerator;
  1732. private _id;
  1733. private uploadInputRef;
  1734. constructor(props: IFileButtonLineComponentProps);
  1735. onChange(evt: any): void;
  1736. render(): JSX.Element;
  1737. }
  1738. }
  1739. declare module GUIEDITOR {
  1740. interface IFileMultipleButtonLineComponentProps {
  1741. label: string;
  1742. onClick: (event: any) => void;
  1743. accept: string;
  1744. }
  1745. export class FileMultipleButtonLineComponent extends React.Component<IFileMultipleButtonLineComponentProps> {
  1746. private static _IDGenerator;
  1747. private _id;
  1748. private uploadInputRef;
  1749. constructor(props: IFileMultipleButtonLineComponentProps);
  1750. onChange(evt: any): void;
  1751. render(): JSX.Element;
  1752. }
  1753. }
  1754. declare module GUIEDITOR {
  1755. export interface IIconButtonLineComponentProps {
  1756. icon: string;
  1757. onClick: () => void;
  1758. tooltip: string;
  1759. active?: boolean;
  1760. }
  1761. export class IconButtonLineComponent extends React.Component<IIconButtonLineComponentProps> {
  1762. constructor(props: IIconButtonLineComponentProps);
  1763. render(): JSX.Element;
  1764. }
  1765. }
  1766. declare module GUIEDITOR {
  1767. interface IIndentedTextLineComponentProps {
  1768. value?: string;
  1769. color?: string;
  1770. underline?: boolean;
  1771. onLink?: () => void;
  1772. url?: string;
  1773. additionalClass?: string;
  1774. }
  1775. export class IndentedTextLineComponent extends React.Component<IIndentedTextLineComponentProps> {
  1776. constructor(props: IIndentedTextLineComponentProps);
  1777. onLink(): void;
  1778. renderContent(): JSX.Element;
  1779. render(): JSX.Element;
  1780. }
  1781. }
  1782. declare module GUIEDITOR {
  1783. interface ILinkButtonComponentProps {
  1784. label: string;
  1785. buttonLabel: string;
  1786. url?: string;
  1787. onClick: () => void;
  1788. onIconClick?: () => void;
  1789. }
  1790. export class LinkButtonComponent extends React.Component<ILinkButtonComponentProps> {
  1791. constructor(props: ILinkButtonComponentProps);
  1792. onLink(): void;
  1793. render(): JSX.Element;
  1794. }
  1795. }
  1796. declare module GUIEDITOR {
  1797. interface IMessageLineComponentProps {
  1798. text: string;
  1799. color?: string;
  1800. }
  1801. export class MessageLineComponent extends React.Component<IMessageLineComponentProps> {
  1802. constructor(props: IMessageLineComponentProps);
  1803. render(): JSX.Element;
  1804. }
  1805. }
  1806. declare module GUIEDITOR {
  1807. interface INumericInputComponentProps {
  1808. label: string;
  1809. value: number;
  1810. step?: number;
  1811. onChange: (value: number) => void;
  1812. precision?: number;
  1813. }
  1814. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  1815. value: string;
  1816. }> {
  1817. static defaultProps: {
  1818. step: number;
  1819. };
  1820. private _localChange;
  1821. constructor(props: INumericInputComponentProps);
  1822. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  1823. value: string;
  1824. }): boolean;
  1825. updateValue(evt: any): void;
  1826. onBlur(): void;
  1827. render(): JSX.Element;
  1828. }
  1829. }
  1830. declare module GUIEDITOR {
  1831. interface IRadioButtonLineComponentProps {
  1832. onSelectionChangedObservable: BABYLON.Observable<RadioButtonLineComponent>;
  1833. label: string;
  1834. isSelected: () => boolean;
  1835. onSelect: () => void;
  1836. }
  1837. export class RadioButtonLineComponent extends React.Component<IRadioButtonLineComponentProps, {
  1838. isSelected: boolean;
  1839. }> {
  1840. private _onSelectionChangedObserver;
  1841. constructor(props: IRadioButtonLineComponentProps);
  1842. componentDidMount(): void;
  1843. componentWillUnmount(): void;
  1844. onChange(): void;
  1845. render(): JSX.Element;
  1846. }
  1847. }
  1848. declare module GUIEDITOR {
  1849. interface ITextLineComponentProps {
  1850. label?: string;
  1851. value?: string;
  1852. color?: string;
  1853. underline?: boolean;
  1854. onLink?: () => void;
  1855. url?: string;
  1856. ignoreValue?: boolean;
  1857. additionalClass?: string;
  1858. }
  1859. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  1860. constructor(props: ITextLineComponentProps);
  1861. onLink(): void;
  1862. renderContent(): JSX.Element | null;
  1863. render(): JSX.Element;
  1864. }
  1865. }
  1866. declare module GUIEDITOR {
  1867. interface IValueLineComponentProps {
  1868. label: string;
  1869. value: number;
  1870. color?: string;
  1871. fractionDigits?: number;
  1872. units?: string;
  1873. }
  1874. export class ValueLineComponent extends React.Component<IValueLineComponentProps> {
  1875. constructor(props: IValueLineComponentProps);
  1876. render(): JSX.Element;
  1877. }
  1878. }