babylon.guiEditor.d.ts 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162
  1. /// <reference types="react" />
  2. declare module GUIEDITOR {
  3. interface ILogComponentProps {
  4. globalState: GlobalState;
  5. }
  6. export class LogEntry {
  7. message: string;
  8. isError: boolean;
  9. constructor(message: string, isError: boolean);
  10. }
  11. export class LogComponent extends React.Component<ILogComponentProps, {
  12. logs: LogEntry[];
  13. }> {
  14. constructor(props: ILogComponentProps);
  15. componentDidMount(): void;
  16. componentDidUpdate(): void;
  17. render(): JSX.Element;
  18. }
  19. }
  20. declare module GUIEDITOR {
  21. export interface IWorkbenchComponentProps {
  22. globalState: GlobalState;
  23. }
  24. export type FramePortData = {};
  25. export const isFramePortData: (variableToCheck: any) => variableToCheck is FramePortData;
  26. export class WorkbenchComponent extends React.Component<IWorkbenchComponentProps> {
  27. private readonly MinZoom;
  28. private readonly MaxZoom;
  29. private _hostCanvas;
  30. private _gridCanvas;
  31. private _selectionContainer;
  32. private _frameContainer;
  33. private _svgCanvas;
  34. private _rootContainer;
  35. private _guiNodes;
  36. private _mouseStartPointX;
  37. private _mouseStartPointY;
  38. private _selectionStartX;
  39. private _selectionStartY;
  40. private _x;
  41. private _y;
  42. private _zoom;
  43. private _selectedGuiNodes;
  44. private _gridSize;
  45. private _selectionBox;
  46. private _frameCandidate;
  47. private _altKeyIsPressed;
  48. private _ctrlKeyIsPressed;
  49. private _oldY;
  50. _frameIsMoving: boolean;
  51. _isLoading: boolean;
  52. isOverGUINode: boolean;
  53. get gridSize(): number;
  54. set gridSize(value: number);
  55. get globalState(): GlobalState;
  56. get nodes(): GUINode[];
  57. get zoom(): number;
  58. set zoom(value: number);
  59. get x(): number;
  60. set x(value: number);
  61. get y(): number;
  62. set y(value: number);
  63. get selectedGuiNodes(): GUINode[];
  64. get canvasContainer(): HTMLDivElement;
  65. get hostCanvas(): HTMLDivElement;
  66. get svgCanvas(): HTMLElement;
  67. get selectionContainer(): HTMLDivElement;
  68. get frameContainer(): HTMLDivElement;
  69. constructor(props: IWorkbenchComponentProps);
  70. getGridPosition(position: number, useCeil?: boolean): number;
  71. getGridPositionCeil(position: number): number;
  72. updateTransform(): void;
  73. onKeyUp(): void;
  74. findNodeFromGuiElement(guiControl: Control): GUINode;
  75. reset(): void;
  76. appendBlock(guiElement: Control): GUINode;
  77. distributeGraph(): void;
  78. componentDidMount(): void;
  79. onMove(evt: React.PointerEvent): void;
  80. onDown(evt: React.PointerEvent<HTMLElement>): void;
  81. onUp(evt: React.PointerEvent): void;
  82. onWheel(evt: React.WheelEvent): void;
  83. zoomToFit(): void;
  84. createGUICanvas(): void;
  85. updateGUIs(): void;
  86. render(): JSX.Element;
  87. }
  88. }
  89. declare module GUIEDITOR {
  90. export class GUINode {
  91. guiControl: Control;
  92. private _x;
  93. private _y;
  94. private _gridAlignedX;
  95. private _gridAlignedY;
  96. private _globalState;
  97. private _onSelectionChangedObserver;
  98. private _onSelectionBoxMovedObserver;
  99. private _onUpdateRequiredObserver;
  100. private _ownerCanvas;
  101. private _isSelected;
  102. private _isVisible;
  103. private _enclosingFrameId;
  104. get isVisible(): boolean;
  105. set isVisible(value: boolean);
  106. get gridAlignedX(): number;
  107. get gridAlignedY(): number;
  108. get x(): number;
  109. set x(value: number);
  110. get y(): number;
  111. set y(value: number);
  112. get width(): number;
  113. get height(): number;
  114. get id(): number;
  115. get name(): string | undefined;
  116. get isSelected(): boolean;
  117. get enclosingFrameId(): number;
  118. set enclosingFrameId(value: number);
  119. set isSelected(value: boolean);
  120. constructor(globalState: GlobalState, guiControl: Control);
  121. cleanAccumulation(useCeil?: boolean): void;
  122. clicked: boolean;
  123. _onMove(evt: BABYLON.Vector2, startPos: BABYLON.Vector2): boolean;
  124. updateVisual(): void;
  125. dispose(): void;
  126. }
  127. }
  128. declare module GUIEDITOR {
  129. export class PropertyChangedEvent {
  130. object: any;
  131. property: string;
  132. value: any;
  133. initialValue: any;
  134. allowNullValue?: boolean;
  135. }
  136. }
  137. declare module GUIEDITOR {
  138. export class GlobalState {
  139. guiTexture: AdvancedDynamicTexture;
  140. hostElement: HTMLElement;
  141. hostDocument: HTMLDocument;
  142. hostWindow: Window;
  143. onSelectionChangedObservable: BABYLON.Observable<BABYLON.Nullable<GUINode>>;
  144. onRebuildRequiredObservable: BABYLON.Observable<void>;
  145. onBuiltObservable: BABYLON.Observable<void>;
  146. onResetRequiredObservable: BABYLON.Observable<void>;
  147. onUpdateRequiredObservable: BABYLON.Observable<void>;
  148. onReOrganizedRequiredObservable: BABYLON.Observable<void>;
  149. onLogRequiredObservable: BABYLON.Observable<LogEntry>;
  150. onErrorMessageDialogRequiredObservable: BABYLON.Observable<string>;
  151. onIsLoadingChanged: BABYLON.Observable<boolean>;
  152. onSelectionBoxMoved: BABYLON.Observable<DOMRect | ClientRect>;
  153. onGuiNodeRemovalObservable: BABYLON.Observable<GUINode>;
  154. backgroundColor: BABYLON.Color4;
  155. blockKeyboardEvents: boolean;
  156. controlCamera: boolean;
  157. workbench: WorkbenchComponent;
  158. onPropertyChangedObservable: BABYLON.Observable<PropertyChangedEvent>;
  159. storeEditorData: (serializationObject: any) => void;
  160. customSave?: {
  161. label: string;
  162. action: (data: string) => Promise<void>;
  163. };
  164. constructor();
  165. }
  166. }
  167. declare module GUIEDITOR {
  168. interface ILineContainerComponentProps {
  169. title: string;
  170. children: any[] | any;
  171. closed?: boolean;
  172. }
  173. export class LineContainerComponent extends React.Component<ILineContainerComponentProps, {
  174. isExpanded: boolean;
  175. }> {
  176. constructor(props: ILineContainerComponentProps);
  177. switchExpandedState(): void;
  178. renderHeader(): JSX.Element;
  179. render(): JSX.Element;
  180. }
  181. }
  182. declare module GUIEDITOR {
  183. export interface IButtonLineComponentProps {
  184. data: string;
  185. tooltip: string;
  186. }
  187. export class DraggableLineComponent extends React.Component<IButtonLineComponentProps> {
  188. constructor(props: IButtonLineComponentProps);
  189. render(): JSX.Element;
  190. }
  191. }
  192. declare module GUIEDITOR {
  193. interface IGuiListComponentProps {
  194. globalState: GlobalState;
  195. }
  196. export class GuiListComponent extends React.Component<IGuiListComponentProps, {
  197. filter: string;
  198. }> {
  199. private _onResetRequiredObserver;
  200. private static _Tooltips;
  201. constructor(props: IGuiListComponentProps);
  202. componentWillUnmount(): void;
  203. filterContent(filter: string): void;
  204. render(): JSX.Element;
  205. }
  206. }
  207. declare module GUIEDITOR {
  208. export interface IButtonLineComponentProps {
  209. label: string;
  210. onClick: () => void;
  211. }
  212. export class ButtonLineComponent extends React.Component<IButtonLineComponentProps> {
  213. constructor(props: IButtonLineComponentProps);
  214. render(): JSX.Element;
  215. }
  216. }
  217. declare module GUIEDITOR {
  218. interface IFileButtonLineComponentProps {
  219. label: string;
  220. onClick: (file: File) => void;
  221. accept: string;
  222. }
  223. export class FileButtonLineComponent extends React.Component<IFileButtonLineComponentProps> {
  224. private static _IDGenerator;
  225. private _id;
  226. private uploadInputRef;
  227. constructor(props: IFileButtonLineComponentProps);
  228. onChange(evt: any): void;
  229. render(): JSX.Element;
  230. }
  231. }
  232. declare module GUIEDITOR {
  233. export interface ICheckBoxLineComponentProps {
  234. label: string;
  235. target?: any;
  236. propertyName?: string;
  237. isSelected?: () => boolean;
  238. onSelect?: (value: boolean) => void;
  239. onValueChanged?: () => void;
  240. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  241. disabled?: boolean;
  242. }
  243. export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
  244. isSelected: boolean;
  245. isDisabled?: boolean;
  246. }> {
  247. private static _UniqueIdSeed;
  248. private _uniqueId;
  249. private _localChange;
  250. constructor(props: ICheckBoxLineComponentProps);
  251. shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
  252. isSelected: boolean;
  253. isDisabled: boolean;
  254. }): boolean;
  255. onChange(): void;
  256. render(): JSX.Element;
  257. }
  258. }
  259. declare module GUIEDITOR {
  260. interface ITextLineComponentProps {
  261. label?: string;
  262. value?: string;
  263. color?: string;
  264. underline?: boolean;
  265. onLink?: () => void;
  266. url?: string;
  267. ignoreValue?: boolean;
  268. additionalClass?: string;
  269. }
  270. export class TextLineComponent extends React.Component<ITextLineComponentProps> {
  271. constructor(props: ITextLineComponentProps);
  272. onLink(): void;
  273. renderContent(): JSX.Element | null;
  274. render(): JSX.Element;
  275. }
  276. }
  277. declare module GUIEDITOR {
  278. export class SerializationTools {
  279. static Deserialize(serializationObject: any, globalState: GlobalState): void;
  280. }
  281. }
  282. declare module GUIEDITOR {
  283. /**
  284. * Class used to provide lock mechanism
  285. */
  286. export class LockObject {
  287. /**
  288. * Gets or set if the lock is engaged
  289. */
  290. lock: boolean;
  291. }
  292. }
  293. declare module GUIEDITOR {
  294. interface IFloatLineComponentProps {
  295. label: string;
  296. target: any;
  297. propertyName: string;
  298. lockObject?: LockObject;
  299. onChange?: (newValue: number) => void;
  300. isInteger?: boolean;
  301. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  302. additionalClass?: string;
  303. step?: string;
  304. digits?: number;
  305. useEuler?: boolean;
  306. min?: number;
  307. max?: number;
  308. smallUI?: boolean;
  309. onEnter?: (newValue: number) => void;
  310. }
  311. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  312. value: string;
  313. }> {
  314. private _localChange;
  315. private _store;
  316. constructor(props: IFloatLineComponentProps);
  317. componentWillUnmount(): void;
  318. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  319. value: string;
  320. }): boolean;
  321. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  322. updateValue(valueString: string): void;
  323. lock(): void;
  324. unlock(): void;
  325. render(): JSX.Element;
  326. }
  327. }
  328. declare module GUIEDITOR {
  329. interface ISliderLineComponentProps {
  330. label: string;
  331. target?: any;
  332. propertyName?: string;
  333. minimum: number;
  334. maximum: number;
  335. step: number;
  336. directValue?: number;
  337. useEuler?: boolean;
  338. onChange?: (value: number) => void;
  339. onInput?: (value: number) => void;
  340. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  341. decimalCount?: number;
  342. margin?: boolean;
  343. }
  344. export class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
  345. value: number;
  346. }> {
  347. private _localChange;
  348. constructor(props: ISliderLineComponentProps);
  349. shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
  350. value: number;
  351. }): boolean;
  352. onChange(newValueString: any): void;
  353. onInput(newValueString: any): void;
  354. prepareDataToRead(value: number): number;
  355. render(): JSX.Element;
  356. }
  357. }
  358. declare module GUIEDITOR {
  359. interface ITextInputLineComponentProps {
  360. label: string;
  361. lockObject: LockObject;
  362. target?: any;
  363. propertyName?: string;
  364. value?: string;
  365. onChange?: (value: string) => void;
  366. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  367. }
  368. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  369. value: string;
  370. }> {
  371. private _localChange;
  372. constructor(props: ITextInputLineComponentProps);
  373. componentWillUnmount(): void;
  374. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  375. value: string;
  376. }): boolean;
  377. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  378. updateValue(value: string): void;
  379. render(): JSX.Element;
  380. }
  381. }
  382. declare module GUIEDITOR {
  383. export const Null_Value: number;
  384. export class ListLineOption {
  385. label: string;
  386. value: number;
  387. selected?: boolean;
  388. }
  389. export interface IOptionsLineComponentProps {
  390. label: string;
  391. target: any;
  392. propertyName: string;
  393. options: ListLineOption[];
  394. noDirectUpdate?: boolean;
  395. onSelect?: (value: number) => void;
  396. extractValue?: () => number;
  397. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  398. allowNullValue?: boolean;
  399. }
  400. export class OptionsLineComponent extends React.Component<IOptionsLineComponentProps, {
  401. value: number;
  402. }> {
  403. private _localChange;
  404. private remapValueIn;
  405. private remapValueOut;
  406. constructor(props: IOptionsLineComponentProps);
  407. shouldComponentUpdate(nextProps: IOptionsLineComponentProps, nextState: {
  408. value: number;
  409. }): boolean;
  410. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  411. updateValue(valueString: string): void;
  412. render(): JSX.Element;
  413. }
  414. }
  415. declare module GUIEDITOR {
  416. interface ICommonControlPropertyGridComponentProps {
  417. control: Control;
  418. lockObject: LockObject;
  419. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  420. }
  421. export class CommonControlPropertyGridComponent extends React.Component<ICommonControlPropertyGridComponentProps> {
  422. constructor(props: ICommonControlPropertyGridComponentProps);
  423. renderGridInformation(): JSX.Element | null;
  424. render(): JSX.Element;
  425. }
  426. }
  427. declare module GUIEDITOR {
  428. interface ISliderPropertyGridComponentProps {
  429. slider: Slider;
  430. lockObject: LockObject;
  431. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  432. }
  433. export class SliderPropertyGridComponent extends React.Component<ISliderPropertyGridComponentProps> {
  434. constructor(props: ISliderPropertyGridComponentProps);
  435. render(): JSX.Element;
  436. }
  437. }
  438. declare module GUIEDITOR {
  439. interface IPropertyTabComponentProps {
  440. globalState: GlobalState;
  441. }
  442. interface IPropertyTabComponentState {
  443. currentNode: BABYLON.Nullable<GUINode>;
  444. }
  445. export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, IPropertyTabComponentState> {
  446. private _onBuiltObserver;
  447. private _timerIntervalId;
  448. private _lockObject;
  449. constructor(props: IPropertyTabComponentProps);
  450. timerRefresh(): void;
  451. componentDidMount(): void;
  452. componentWillUnmount(): void;
  453. load(file: File): void;
  454. loadFrame(file: File): void;
  455. save(): void;
  456. customSave(): void;
  457. saveToSnippetServer(): void;
  458. loadFromSnippet(): void;
  459. renderProperties(): JSX.Element | null;
  460. render(): JSX.Element;
  461. }
  462. }
  463. declare module GUIEDITOR {
  464. interface IPortalProps {
  465. globalState: GlobalState;
  466. }
  467. export class Portal extends React.Component<IPortalProps> {
  468. render(): React.ReactPortal;
  469. }
  470. }
  471. declare module GUIEDITOR {
  472. export class GUINodeTools {
  473. static CreateControlFromString(data: string): Slider | Checkbox | ColorPicker | Ellipse | Rectangle | Line | TextBlock;
  474. }
  475. }
  476. declare module GUIEDITOR {
  477. export interface INodeLocationInfo {
  478. blockId: number;
  479. x: number;
  480. y: number;
  481. }
  482. export interface IFrameData {
  483. x: number;
  484. y: number;
  485. width: number;
  486. height: number;
  487. color: number[];
  488. name: string;
  489. isCollapsed: boolean;
  490. blocks: number[];
  491. comments: string;
  492. }
  493. export interface IEditorData {
  494. locations: INodeLocationInfo[];
  495. x: number;
  496. y: number;
  497. zoom: number;
  498. frames?: IFrameData[];
  499. map?: {
  500. [key: number]: number;
  501. };
  502. }
  503. }
  504. declare module GUIEDITOR {
  505. interface IMessageDialogComponentProps {
  506. globalState: GlobalState;
  507. }
  508. export class MessageDialogComponent extends React.Component<IMessageDialogComponentProps, {
  509. message: string;
  510. isError: boolean;
  511. }> {
  512. constructor(props: IMessageDialogComponentProps);
  513. render(): JSX.Element | null;
  514. }
  515. }
  516. declare module GUIEDITOR {
  517. interface IGraphEditorProps {
  518. globalState: GlobalState;
  519. }
  520. interface IGraphEditorState {
  521. showPreviewPopUp: boolean;
  522. }
  523. export class WorkbenchEditor extends React.Component<IGraphEditorProps, IGraphEditorState> {
  524. private _workbenchCanvas;
  525. private _startX;
  526. private _moveInProgress;
  527. private _leftWidth;
  528. private _rightWidth;
  529. private _blocks;
  530. private _onWidgetKeyUpPointer;
  531. private _popUpWindow;
  532. /**
  533. * Creates a node and recursivly creates its parent nodes from it's input
  534. * @param block
  535. */
  536. createNodeFromObject(block: Control, recursion?: boolean): BABYLON.Nullable<GUINode>;
  537. componentDidMount(): void;
  538. componentWillUnmount(): void;
  539. constructor(props: IGraphEditorProps);
  540. pasteSelection(copiedNodes: GUINode[], currentX: number, currentY: number, selectNew?: boolean): GUINode[];
  541. zoomToFit(): void;
  542. showWaitScreen(): void;
  543. hideWaitScreen(): void;
  544. reOrganize(editorData?: BABYLON.Nullable<IEditorData>, isImportingAFrame?: boolean): void;
  545. onPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  546. onPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  547. resizeColumns(evt: React.PointerEvent<HTMLDivElement>, forLeft?: boolean): void;
  548. buildColumnLayout(): string;
  549. emitNewBlock(event: React.DragEvent<HTMLDivElement>): void;
  550. handlePopUp: () => void;
  551. handleClosingPopUp: () => void;
  552. createPopupWindow: (title: string, windowVariableName: string, width?: number, height?: number) => Window | null;
  553. copyStyles: (sourceDoc: HTMLDocument, targetDoc: HTMLDocument) => void;
  554. fixPopUpStyles: (document: Document) => void;
  555. render(): JSX.Element;
  556. }
  557. }
  558. declare module GUIEDITOR {
  559. export class Popup {
  560. static CreatePopup(title: string, windowVariableName: string, width?: number, height?: number): HTMLDivElement | null;
  561. private static _CopyStyles;
  562. }
  563. }
  564. declare module GUIEDITOR {
  565. /**
  566. * Interface used to specify creation options for the gui editor
  567. */
  568. export interface IGUIEditorOptions {
  569. hostElement?: HTMLElement;
  570. customSave?: {
  571. label: string;
  572. action: (data: string) => Promise<void>;
  573. };
  574. customLoadObservable?: BABYLON.Observable<any>;
  575. }
  576. /**
  577. * Class used to create a gui editor
  578. */
  579. export class GUIEditor {
  580. private static _CurrentState;
  581. /**
  582. * Show the gui editor
  583. * @param options defines the options to use to configure the gui editor
  584. */
  585. static Show(options: IGUIEditorOptions): void;
  586. }
  587. }
  588. declare module GUIEDITOR {
  589. export interface IPropertyComponentProps {
  590. globalState: GlobalState;
  591. guiControl: Control;
  592. }
  593. }
  594. declare module GUIEDITOR {
  595. export class PropertyChangedEvent {
  596. object: any;
  597. property: string;
  598. value: any;
  599. initialValue: any;
  600. }
  601. }
  602. declare module GUIEDITOR {
  603. interface IFloatLineComponentProps {
  604. label: string;
  605. target: any;
  606. propertyName: string;
  607. onChange?: (newValue: number) => void;
  608. isInteger?: boolean;
  609. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  610. additionalClass?: string;
  611. step?: string;
  612. digits?: number;
  613. globalState: GlobalState;
  614. min?: number;
  615. max?: number;
  616. smallUI?: boolean;
  617. onEnter?: (newValue: number) => void;
  618. }
  619. export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
  620. value: string;
  621. }> {
  622. private _localChange;
  623. private _store;
  624. private _regExp;
  625. private _digits;
  626. constructor(props: IFloatLineComponentProps);
  627. shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
  628. value: string;
  629. }): boolean;
  630. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  631. updateValue(valueString: string): void;
  632. render(): JSX.Element;
  633. }
  634. }
  635. declare module GUIEDITOR {
  636. interface ISliderLineComponentProps {
  637. label: string;
  638. target?: any;
  639. propertyName?: string;
  640. minimum: number;
  641. maximum: number;
  642. step: number;
  643. directValue?: number;
  644. useEuler?: boolean;
  645. onChange?: (value: number) => void;
  646. onInput?: (value: number) => void;
  647. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  648. decimalCount?: number;
  649. globalState: GlobalState;
  650. }
  651. export class SliderLineComponent extends React.Component<ISliderLineComponentProps, {
  652. value: number;
  653. }> {
  654. private _localChange;
  655. constructor(props: ISliderLineComponentProps);
  656. shouldComponentUpdate(nextProps: ISliderLineComponentProps, nextState: {
  657. value: number;
  658. }): boolean;
  659. onChange(newValueString: any): void;
  660. onInput(newValueString: any): void;
  661. prepareDataToRead(value: number): number;
  662. render(): JSX.Element;
  663. }
  664. }
  665. declare module GUIEDITOR {
  666. export class GenericPropertyComponent extends React.Component<IPropertyComponentProps> {
  667. constructor(props: IPropertyComponentProps);
  668. render(): JSX.Element;
  669. }
  670. export class GeneralPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  671. constructor(props: IPropertyComponentProps);
  672. render(): JSX.Element;
  673. }
  674. export class GenericPropertyTabComponent extends React.Component<IPropertyComponentProps> {
  675. constructor(props: IPropertyComponentProps);
  676. forceRebuild(notifiers?: {
  677. "rebuild"?: boolean;
  678. "update"?: boolean;
  679. }): void;
  680. render(): JSX.Element;
  681. }
  682. }
  683. declare module GUIEDITOR {
  684. interface ILineWithFileButtonComponentProps {
  685. title: string;
  686. closed?: boolean;
  687. label: string;
  688. iconImage: any;
  689. onIconClick: (file: File) => void;
  690. accept: string;
  691. uploadName?: string;
  692. }
  693. export class LineWithFileButtonComponent extends React.Component<ILineWithFileButtonComponentProps, {
  694. isExpanded: boolean;
  695. }> {
  696. private uploadRef;
  697. constructor(props: ILineWithFileButtonComponentProps);
  698. onChange(evt: any): void;
  699. switchExpandedState(): void;
  700. render(): JSX.Element;
  701. }
  702. }
  703. declare module GUIEDITOR {
  704. interface INumericInputComponentProps {
  705. label: string;
  706. value: number;
  707. step?: number;
  708. onChange: (value: number) => void;
  709. globalState: GlobalState;
  710. }
  711. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  712. value: string;
  713. }> {
  714. static defaultProps: {
  715. step: number;
  716. };
  717. private _localChange;
  718. constructor(props: INumericInputComponentProps);
  719. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  720. value: string;
  721. }): boolean;
  722. updateValue(evt: any): void;
  723. render(): JSX.Element;
  724. }
  725. }
  726. declare module GUIEDITOR {
  727. interface ITextInputLineComponentProps {
  728. label: string;
  729. globalState: GlobalState;
  730. target?: any;
  731. propertyName?: string;
  732. value?: string;
  733. multilines?: boolean;
  734. onChange?: (value: string) => void;
  735. validator?: (value: string) => boolean;
  736. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  737. }
  738. export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
  739. value: string;
  740. }> {
  741. private _localChange;
  742. constructor(props: ITextInputLineComponentProps);
  743. shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
  744. value: string;
  745. }): boolean;
  746. raiseOnPropertyChanged(newValue: string, previousValue: string): void;
  747. updateValue(value: string, raisePropertyChanged: boolean): void;
  748. render(): JSX.Element;
  749. }
  750. }
  751. declare module GUIEDITOR {
  752. export interface IColorComponentEntryProps {
  753. value: number;
  754. label: string;
  755. max?: number;
  756. min?: number;
  757. onChange: (value: number) => void;
  758. }
  759. export class ColorComponentEntry extends React.Component<IColorComponentEntryProps> {
  760. constructor(props: IColorComponentEntryProps);
  761. updateValue(valueString: string): void;
  762. render(): JSX.Element;
  763. }
  764. }
  765. declare module GUIEDITOR {
  766. export interface IHexColorProps {
  767. value: string;
  768. expectedLength: number;
  769. onChange: (value: string) => void;
  770. }
  771. export class HexColor extends React.Component<IHexColorProps, {
  772. hex: string;
  773. }> {
  774. constructor(props: IHexColorProps);
  775. shouldComponentUpdate(nextProps: IHexColorProps, nextState: {
  776. hex: string;
  777. }): boolean;
  778. updateHexValue(valueString: string): void;
  779. render(): JSX.Element;
  780. }
  781. }
  782. declare module GUIEDITOR {
  783. /**
  784. * Interface used to specify creation options for color picker
  785. */
  786. export interface IColorPickerProps {
  787. color: BABYLON.Color3 | BABYLON.Color4;
  788. debugMode?: boolean;
  789. onColorChanged?: (color: BABYLON.Color3 | BABYLON.Color4) => void;
  790. }
  791. /**
  792. * Interface used to specify creation options for color picker
  793. */
  794. export interface IColorPickerState {
  795. color: BABYLON.Color3;
  796. alpha: number;
  797. }
  798. /**
  799. * Class used to create a color picker
  800. */
  801. export class ColorPicker extends React.Component<IColorPickerProps, IColorPickerState> {
  802. private _saturationRef;
  803. private _hueRef;
  804. private _isSaturationPointerDown;
  805. private _isHuePointerDown;
  806. constructor(props: IColorPickerProps);
  807. onSaturationPointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  808. onSaturationPointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  809. onSaturationPointerMove(evt: React.PointerEvent<HTMLDivElement>): void;
  810. onHuePointerDown(evt: React.PointerEvent<HTMLDivElement>): void;
  811. onHuePointerUp(evt: React.PointerEvent<HTMLDivElement>): void;
  812. onHuePointerMove(evt: React.PointerEvent<HTMLDivElement>): void;
  813. private _evaluateSaturation;
  814. private _evaluateHue;
  815. componentDidUpdate(): void;
  816. raiseOnColorChanged(): void;
  817. render(): JSX.Element;
  818. }
  819. }
  820. declare module GUIEDITOR {
  821. export interface IBooleanLineComponentProps {
  822. label: string;
  823. value: boolean;
  824. }
  825. export class BooleanLineComponent extends React.Component<IBooleanLineComponentProps> {
  826. constructor(props: IBooleanLineComponentProps);
  827. render(): JSX.Element;
  828. }
  829. }
  830. declare module GUIEDITOR {
  831. interface INumericInputComponentProps {
  832. label: string;
  833. value: number;
  834. step?: number;
  835. onChange: (value: number) => void;
  836. precision?: number;
  837. }
  838. export class NumericInputComponent extends React.Component<INumericInputComponentProps, {
  839. value: string;
  840. }> {
  841. static defaultProps: {
  842. step: number;
  843. };
  844. private _localChange;
  845. constructor(props: INumericInputComponentProps);
  846. shouldComponentUpdate(nextProps: INumericInputComponentProps, nextState: {
  847. value: string;
  848. }): boolean;
  849. updateValue(evt: any): void;
  850. onBlur(): void;
  851. render(): JSX.Element;
  852. }
  853. }
  854. declare module GUIEDITOR {
  855. export interface IColorPickerComponentProps {
  856. value: BABYLON.Color4 | BABYLON.Color3;
  857. onColorChanged: (newOne: string) => void;
  858. }
  859. interface IColorPickerComponentState {
  860. pickerEnabled: boolean;
  861. color: BABYLON.Color3 | BABYLON.Color4;
  862. hex: string;
  863. }
  864. export class ColorPickerLineComponent extends React.Component<IColorPickerComponentProps, IColorPickerComponentState> {
  865. private _floatRef;
  866. private _floatHostRef;
  867. constructor(props: IColorPickerComponentProps);
  868. syncPositions(): void;
  869. shouldComponentUpdate(nextProps: IColorPickerComponentProps, nextState: IColorPickerComponentState): boolean;
  870. componentDidUpdate(): void;
  871. componentDidMount(): void;
  872. render(): JSX.Element;
  873. }
  874. }
  875. declare module GUIEDITOR {
  876. export interface IColor3LineComponentProps {
  877. label: string;
  878. target: any;
  879. propertyName: string;
  880. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  881. isLinear?: boolean;
  882. }
  883. export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
  884. isExpanded: boolean;
  885. color: BABYLON.Color3;
  886. }> {
  887. private _localChange;
  888. constructor(props: IColor3LineComponentProps);
  889. shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
  890. color: BABYLON.Color3;
  891. }): boolean;
  892. setPropertyValue(newColor: BABYLON.Color3): void;
  893. onChange(newValue: string): void;
  894. switchExpandState(): void;
  895. raiseOnPropertyChanged(previousValue: BABYLON.Color3): void;
  896. updateStateR(value: number): void;
  897. updateStateG(value: number): void;
  898. updateStateB(value: number): void;
  899. copyToClipboard(): void;
  900. render(): JSX.Element;
  901. }
  902. }
  903. declare module GUIEDITOR {
  904. export interface IColor4LineComponentProps {
  905. label: string;
  906. target: any;
  907. propertyName: string;
  908. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  909. onChange?: () => void;
  910. isLinear?: boolean;
  911. }
  912. export class Color4LineComponent extends React.Component<IColor4LineComponentProps, {
  913. isExpanded: boolean;
  914. color: BABYLON.Color4;
  915. }> {
  916. private _localChange;
  917. constructor(props: IColor4LineComponentProps);
  918. shouldComponentUpdate(nextProps: IColor4LineComponentProps, nextState: {
  919. color: BABYLON.Color4;
  920. }): boolean;
  921. setPropertyValue(newColor: BABYLON.Color4): void;
  922. onChange(newValue: string): void;
  923. switchExpandState(): void;
  924. raiseOnPropertyChanged(previousValue: BABYLON.Color4): void;
  925. updateStateR(value: number): void;
  926. updateStateG(value: number): void;
  927. updateStateB(value: number): void;
  928. updateStateA(value: number): void;
  929. copyToClipboard(): void;
  930. render(): JSX.Element;
  931. }
  932. }
  933. declare module GUIEDITOR {
  934. interface IFileMultipleButtonLineComponentProps {
  935. label: string;
  936. onClick: (event: any) => void;
  937. accept: string;
  938. }
  939. export class FileMultipleButtonLineComponent extends React.Component<IFileMultipleButtonLineComponentProps> {
  940. private static _IDGenerator;
  941. private _id;
  942. private uploadInputRef;
  943. constructor(props: IFileMultipleButtonLineComponentProps);
  944. onChange(evt: any): void;
  945. render(): JSX.Element;
  946. }
  947. }
  948. declare module GUIEDITOR {
  949. interface IHexLineComponentProps {
  950. label: string;
  951. target: any;
  952. propertyName: string;
  953. lockObject?: LockObject;
  954. onChange?: (newValue: number) => void;
  955. isInteger?: boolean;
  956. replaySourceReplacement?: string;
  957. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  958. additionalClass?: string;
  959. step?: string;
  960. digits?: number;
  961. useEuler?: boolean;
  962. min?: number;
  963. }
  964. export class HexLineComponent extends React.Component<IHexLineComponentProps, {
  965. value: string;
  966. }> {
  967. private _localChange;
  968. private _store;
  969. private _propertyChange;
  970. constructor(props: IHexLineComponentProps);
  971. componentWillUnmount(): void;
  972. shouldComponentUpdate(nextProps: IHexLineComponentProps, nextState: {
  973. value: string;
  974. }): boolean;
  975. raiseOnPropertyChanged(newValue: number, previousValue: number): void;
  976. convertToHexString(valueString: string): string;
  977. updateValue(valueString: string, raisePropertyChanged: boolean): void;
  978. lock(): void;
  979. unlock(): void;
  980. render(): JSX.Element;
  981. }
  982. }
  983. declare module GUIEDITOR {
  984. export interface IIconButtonLineComponentProps {
  985. icon: string;
  986. onClick: () => void;
  987. tooltip: string;
  988. active?: boolean;
  989. }
  990. export class IconButtonLineComponent extends React.Component<IIconButtonLineComponentProps> {
  991. constructor(props: IIconButtonLineComponentProps);
  992. render(): JSX.Element;
  993. }
  994. }
  995. declare module GUIEDITOR {
  996. interface IIndentedTextLineComponentProps {
  997. value?: string;
  998. color?: string;
  999. underline?: boolean;
  1000. onLink?: () => void;
  1001. url?: string;
  1002. additionalClass?: string;
  1003. }
  1004. export class IndentedTextLineComponent extends React.Component<IIndentedTextLineComponentProps> {
  1005. constructor(props: IIndentedTextLineComponentProps);
  1006. onLink(): void;
  1007. renderContent(): JSX.Element;
  1008. render(): JSX.Element;
  1009. }
  1010. }
  1011. declare module GUIEDITOR {
  1012. interface ILinkButtonComponentProps {
  1013. label: string;
  1014. buttonLabel: string;
  1015. url?: string;
  1016. onClick: () => void;
  1017. onIconClick?: () => void;
  1018. }
  1019. export class LinkButtonComponent extends React.Component<ILinkButtonComponentProps> {
  1020. constructor(props: ILinkButtonComponentProps);
  1021. onLink(): void;
  1022. render(): JSX.Element;
  1023. }
  1024. }
  1025. declare module GUIEDITOR {
  1026. interface IMessageLineComponentProps {
  1027. text: string;
  1028. color?: string;
  1029. }
  1030. export class MessageLineComponent extends React.Component<IMessageLineComponentProps> {
  1031. constructor(props: IMessageLineComponentProps);
  1032. render(): JSX.Element;
  1033. }
  1034. }
  1035. declare module GUIEDITOR {
  1036. interface IRadioButtonLineComponentProps {
  1037. onSelectionChangedObservable: BABYLON.Observable<RadioButtonLineComponent>;
  1038. label: string;
  1039. isSelected: () => boolean;
  1040. onSelect: () => void;
  1041. }
  1042. export class RadioButtonLineComponent extends React.Component<IRadioButtonLineComponentProps, {
  1043. isSelected: boolean;
  1044. }> {
  1045. private _onSelectionChangedObserver;
  1046. constructor(props: IRadioButtonLineComponentProps);
  1047. componentDidMount(): void;
  1048. componentWillUnmount(): void;
  1049. onChange(): void;
  1050. render(): JSX.Element;
  1051. }
  1052. }
  1053. declare module GUIEDITOR {
  1054. interface IValueLineComponentProps {
  1055. label: string;
  1056. value: number;
  1057. color?: string;
  1058. fractionDigits?: number;
  1059. units?: string;
  1060. }
  1061. export class ValueLineComponent extends React.Component<IValueLineComponentProps> {
  1062. constructor(props: IValueLineComponentProps);
  1063. render(): JSX.Element;
  1064. }
  1065. }
  1066. declare module GUIEDITOR {
  1067. interface IVector2LineComponentProps {
  1068. label: string;
  1069. target: any;
  1070. propertyName: string;
  1071. step?: number;
  1072. onChange?: (newvalue: BABYLON.Vector2) => void;
  1073. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1074. }
  1075. export class Vector2LineComponent extends React.Component<IVector2LineComponentProps, {
  1076. isExpanded: boolean;
  1077. value: BABYLON.Vector2;
  1078. }> {
  1079. static defaultProps: {
  1080. step: number;
  1081. };
  1082. private _localChange;
  1083. constructor(props: IVector2LineComponentProps);
  1084. shouldComponentUpdate(nextProps: IVector2LineComponentProps, nextState: {
  1085. isExpanded: boolean;
  1086. value: BABYLON.Vector2;
  1087. }): boolean;
  1088. switchExpandState(): void;
  1089. raiseOnPropertyChanged(previousValue: BABYLON.Vector2): void;
  1090. updateStateX(value: number): void;
  1091. updateStateY(value: number): void;
  1092. render(): JSX.Element;
  1093. }
  1094. }
  1095. declare module GUIEDITOR {
  1096. interface IVector3LineComponentProps {
  1097. label: string;
  1098. target: any;
  1099. propertyName: string;
  1100. step?: number;
  1101. onChange?: (newvalue: BABYLON.Vector3) => void;
  1102. useEuler?: boolean;
  1103. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1104. noSlider?: boolean;
  1105. }
  1106. export class Vector3LineComponent extends React.Component<IVector3LineComponentProps, {
  1107. isExpanded: boolean;
  1108. value: BABYLON.Vector3;
  1109. }> {
  1110. static defaultProps: {
  1111. step: number;
  1112. };
  1113. private _localChange;
  1114. constructor(props: IVector3LineComponentProps);
  1115. getCurrentValue(): any;
  1116. shouldComponentUpdate(nextProps: IVector3LineComponentProps, nextState: {
  1117. isExpanded: boolean;
  1118. value: BABYLON.Vector3;
  1119. }): boolean;
  1120. switchExpandState(): void;
  1121. raiseOnPropertyChanged(previousValue: BABYLON.Vector3): void;
  1122. updateVector3(): void;
  1123. updateStateX(value: number): void;
  1124. updateStateY(value: number): void;
  1125. updateStateZ(value: number): void;
  1126. render(): JSX.Element;
  1127. }
  1128. }
  1129. declare module GUIEDITOR {
  1130. interface IVector4LineComponentProps {
  1131. label: string;
  1132. target: any;
  1133. propertyName: string;
  1134. step?: number;
  1135. onChange?: (newvalue: BABYLON.Vector4) => void;
  1136. useEuler?: boolean;
  1137. onPropertyChangedObservable?: BABYLON.Observable<PropertyChangedEvent>;
  1138. }
  1139. export class Vector4LineComponent extends React.Component<IVector4LineComponentProps, {
  1140. isExpanded: boolean;
  1141. value: BABYLON.Vector4;
  1142. }> {
  1143. static defaultProps: {
  1144. step: number;
  1145. };
  1146. private _localChange;
  1147. constructor(props: IVector4LineComponentProps);
  1148. getCurrentValue(): any;
  1149. shouldComponentUpdate(nextProps: IVector4LineComponentProps, nextState: {
  1150. isExpanded: boolean;
  1151. value: BABYLON.Vector4;
  1152. }): boolean;
  1153. switchExpandState(): void;
  1154. raiseOnPropertyChanged(previousValue: BABYLON.Vector4): void;
  1155. updateVector4(): void;
  1156. updateStateX(value: number): void;
  1157. updateStateY(value: number): void;
  1158. updateStateZ(value: number): void;
  1159. updateStateW(value: number): void;
  1160. render(): JSX.Element;
  1161. }
  1162. }