@babylonjs/gui-editor 5.0.0-beta.1 → 5.0.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24,661 +24,90 @@ declare module "@babylonjs/gui-editor/tools" {
24
24
  import { Grid } from "@babylonjs/gui/2D/controls/grid";
25
25
  import { Vector2 } from "@babylonjs/core/Maths/math";
26
26
  export class Tools {
27
- static LookForItem(item: any, selectedEntity: any, firstIteration?: boolean): boolean;
27
+ static LookForItems(item: any, selectedEntities: any[], firstIteration?: boolean): boolean;
28
28
  private static _RecursiveRemoveHiddenMeshesAndHoistChildren;
29
29
  static SortAndFilter(parent: any, items: any[]): any[];
30
30
  static getCellInfo(grid: Grid, control: Control): Vector2;
31
31
  static reorderGrid(grid: Grid, index: number, control: Control, cell: Vector2): void;
32
32
  }
33
33
  }
34
- declare module "@babylonjs/gui-editor/diagram/GUIEditorNodeMaterial" {
35
- export const GUIEditorNodeMaterial: {
36
- tags: null;
37
- ignoreAlpha: boolean;
38
- maxSimultaneousLights: number;
39
- mode: number;
40
- id: string;
41
- name: string;
42
- checkReadyOnEveryCall: boolean;
43
- checkReadyOnlyOnce: boolean;
44
- state: string;
45
- alpha: number;
46
- backFaceCulling: boolean;
47
- cullBackFaces: boolean;
48
- sideOrientation: number;
49
- alphaMode: number;
50
- _needDepthPrePass: boolean;
51
- disableDepthWrite: boolean;
52
- disableColorWrite: boolean;
53
- forceDepthWrite: boolean;
54
- depthFunction: number;
55
- separateCullingPass: boolean;
56
- fogEnabled: boolean;
57
- pointSize: number;
58
- zOffset: number;
59
- zOffsetUnits: number;
60
- pointsCloud: boolean;
61
- fillMode: number;
62
- editorData: {
63
- locations: {
64
- blockId: number;
65
- x: number;
66
- y: number;
67
- }[];
68
- frames: {
69
- x: number;
70
- y: number;
71
- width: number;
72
- height: number;
73
- color: number[];
74
- name: string;
75
- isCollapsed: boolean;
76
- blocks: number[];
77
- }[];
78
- x: number;
79
- y: number;
80
- zoom: number;
81
- };
82
- customType: string;
83
- outputNodes: number[];
84
- blocks: ({
85
- customType: string;
86
- id: number;
87
- name: string;
88
- comments: string;
89
- visibleInInspector: boolean;
90
- visibleOnFrame: boolean;
91
- target: number;
92
- inputs: {
93
- name: string;
94
- inputName: string;
95
- targetBlockId: number;
96
- targetConnectionName: string;
97
- isExposedOnFrame: boolean;
98
- exposedPortPosition: number;
99
- }[];
100
- outputs: {
101
- name: string;
102
- }[];
103
- complementZ: number;
104
- complementW: number;
105
- type?: undefined;
106
- mode?: undefined;
107
- animationType?: undefined;
108
- min?: undefined;
109
- max?: undefined;
110
- isBoolean?: undefined;
111
- matrixMode?: undefined;
112
- isConstant?: undefined;
113
- groupInInspector?: undefined;
114
- convertToGammaSpace?: undefined;
115
- convertToLinearSpace?: undefined;
116
- systemValue?: undefined;
117
- rSwizzle?: undefined;
118
- gSwizzle?: undefined;
119
- bSwizzle?: undefined;
120
- aSwizzle?: undefined;
121
- operation?: undefined;
122
- xSwizzle?: undefined;
123
- ySwizzle?: undefined;
124
- zSwizzle?: undefined;
125
- wSwizzle?: undefined;
126
- valueType?: undefined;
127
- value?: undefined;
128
- fragmentOnly?: undefined;
129
- disableLevelMultiplication?: undefined;
130
- } | {
131
- customType: string;
132
- id: number;
133
- name: string;
134
- comments: string;
135
- visibleInInspector: boolean;
136
- visibleOnFrame: boolean;
137
- target: number;
138
- inputs: never[];
139
- outputs: {
140
- name: string;
141
- }[];
142
- type: number;
143
- mode: number;
144
- animationType: number;
145
- min: number;
146
- max: number;
147
- isBoolean: boolean;
148
- matrixMode: number;
149
- isConstant: boolean;
150
- groupInInspector: string;
151
- convertToGammaSpace: boolean;
152
- convertToLinearSpace: boolean;
153
- complementZ?: undefined;
154
- complementW?: undefined;
155
- systemValue?: undefined;
156
- rSwizzle?: undefined;
157
- gSwizzle?: undefined;
158
- bSwizzle?: undefined;
159
- aSwizzle?: undefined;
160
- operation?: undefined;
161
- xSwizzle?: undefined;
162
- ySwizzle?: undefined;
163
- zSwizzle?: undefined;
164
- wSwizzle?: undefined;
165
- valueType?: undefined;
166
- value?: undefined;
167
- fragmentOnly?: undefined;
168
- disableLevelMultiplication?: undefined;
169
- } | {
170
- customType: string;
171
- id: number;
172
- name: string;
173
- comments: string;
174
- visibleInInspector: boolean;
175
- visibleOnFrame: boolean;
176
- target: number;
177
- inputs: never[];
178
- outputs: {
179
- name: string;
180
- }[];
181
- type: number;
182
- mode: number;
183
- systemValue: number;
184
- animationType: number;
185
- min: number;
186
- max: number;
187
- isBoolean: boolean;
188
- matrixMode: number;
189
- isConstant: boolean;
190
- groupInInspector: string;
191
- convertToGammaSpace: boolean;
192
- convertToLinearSpace: boolean;
193
- complementZ?: undefined;
194
- complementW?: undefined;
195
- rSwizzle?: undefined;
196
- gSwizzle?: undefined;
197
- bSwizzle?: undefined;
198
- aSwizzle?: undefined;
199
- operation?: undefined;
200
- xSwizzle?: undefined;
201
- ySwizzle?: undefined;
202
- zSwizzle?: undefined;
203
- wSwizzle?: undefined;
204
- valueType?: undefined;
205
- value?: undefined;
206
- fragmentOnly?: undefined;
207
- disableLevelMultiplication?: undefined;
208
- } | {
209
- customType: string;
210
- id: number;
211
- name: string;
212
- comments: string;
213
- visibleInInspector: boolean;
214
- visibleOnFrame: boolean;
215
- target: number;
216
- inputs: ({
217
- name: string;
218
- displayName: string;
219
- inputName?: undefined;
220
- targetBlockId?: undefined;
221
- targetConnectionName?: undefined;
222
- isExposedOnFrame?: undefined;
223
- exposedPortPosition?: undefined;
224
- } | {
225
- name: string;
226
- displayName: string;
227
- inputName: string;
228
- targetBlockId: number;
229
- targetConnectionName: string;
230
- isExposedOnFrame: boolean;
231
- exposedPortPosition: number;
232
- })[];
233
- outputs: never[];
234
- convertToGammaSpace: boolean;
235
- convertToLinearSpace: boolean;
236
- complementZ?: undefined;
237
- complementW?: undefined;
238
- type?: undefined;
239
- mode?: undefined;
240
- animationType?: undefined;
241
- min?: undefined;
242
- max?: undefined;
243
- isBoolean?: undefined;
244
- matrixMode?: undefined;
245
- isConstant?: undefined;
246
- groupInInspector?: undefined;
247
- systemValue?: undefined;
248
- rSwizzle?: undefined;
249
- gSwizzle?: undefined;
250
- bSwizzle?: undefined;
251
- aSwizzle?: undefined;
252
- operation?: undefined;
253
- xSwizzle?: undefined;
254
- ySwizzle?: undefined;
255
- zSwizzle?: undefined;
256
- wSwizzle?: undefined;
257
- valueType?: undefined;
258
- value?: undefined;
259
- fragmentOnly?: undefined;
260
- disableLevelMultiplication?: undefined;
261
- } | {
262
- customType: string;
263
- id: number;
264
- name: string;
265
- comments: string;
266
- visibleInInspector: boolean;
267
- visibleOnFrame: boolean;
268
- target: number;
269
- inputs: ({
270
- name: string;
271
- displayName: string;
272
- inputName: string;
273
- targetBlockId: number;
274
- targetConnectionName: string;
275
- isExposedOnFrame: boolean;
276
- exposedPortPosition: number;
277
- } | {
278
- name: string;
279
- displayName: string;
280
- isExposedOnFrame: boolean;
281
- exposedPortPosition: number;
282
- inputName?: undefined;
283
- targetBlockId?: undefined;
284
- targetConnectionName?: undefined;
285
- })[];
286
- outputs: {
287
- name: string;
288
- displayName: string;
289
- }[];
290
- complementZ?: undefined;
291
- complementW?: undefined;
292
- type?: undefined;
293
- mode?: undefined;
294
- animationType?: undefined;
295
- min?: undefined;
296
- max?: undefined;
297
- isBoolean?: undefined;
298
- matrixMode?: undefined;
299
- isConstant?: undefined;
300
- groupInInspector?: undefined;
301
- convertToGammaSpace?: undefined;
302
- convertToLinearSpace?: undefined;
303
- systemValue?: undefined;
304
- rSwizzle?: undefined;
305
- gSwizzle?: undefined;
306
- bSwizzle?: undefined;
307
- aSwizzle?: undefined;
308
- operation?: undefined;
309
- xSwizzle?: undefined;
310
- ySwizzle?: undefined;
311
- zSwizzle?: undefined;
312
- wSwizzle?: undefined;
313
- valueType?: undefined;
314
- value?: undefined;
315
- fragmentOnly?: undefined;
316
- disableLevelMultiplication?: undefined;
317
- } | {
318
- customType: string;
319
- id: number;
320
- name: string;
321
- comments: string;
322
- visibleInInspector: boolean;
323
- visibleOnFrame: boolean;
324
- target: number;
325
- inputs: ({
326
- name: string;
327
- displayName: string;
328
- inputName?: undefined;
329
- targetBlockId?: undefined;
330
- targetConnectionName?: undefined;
331
- isExposedOnFrame?: undefined;
332
- exposedPortPosition?: undefined;
333
- } | {
334
- name: string;
335
- displayName: string;
336
- inputName: string;
337
- targetBlockId: number;
338
- targetConnectionName: string;
339
- isExposedOnFrame: boolean;
340
- exposedPortPosition: number;
341
- })[];
342
- outputs: {
343
- name: string;
344
- displayName: string;
345
- }[];
346
- rSwizzle: string;
347
- gSwizzle: string;
348
- bSwizzle: string;
349
- aSwizzle: string;
350
- complementZ?: undefined;
351
- complementW?: undefined;
352
- type?: undefined;
353
- mode?: undefined;
354
- animationType?: undefined;
355
- min?: undefined;
356
- max?: undefined;
357
- isBoolean?: undefined;
358
- matrixMode?: undefined;
359
- isConstant?: undefined;
360
- groupInInspector?: undefined;
361
- convertToGammaSpace?: undefined;
362
- convertToLinearSpace?: undefined;
363
- systemValue?: undefined;
364
- operation?: undefined;
365
- xSwizzle?: undefined;
366
- ySwizzle?: undefined;
367
- zSwizzle?: undefined;
368
- wSwizzle?: undefined;
369
- valueType?: undefined;
370
- value?: undefined;
371
- fragmentOnly?: undefined;
372
- disableLevelMultiplication?: undefined;
373
- } | {
374
- customType: string;
375
- id: number;
376
- name: string;
377
- comments: string;
378
- visibleInInspector: boolean;
379
- visibleOnFrame: boolean;
380
- target: number;
381
- inputs: {
382
- name: string;
383
- inputName: string;
384
- targetBlockId: number;
385
- targetConnectionName: string;
386
- isExposedOnFrame: boolean;
387
- exposedPortPosition: number;
388
- }[];
389
- outputs: {
390
- name: string;
391
- }[];
392
- operation: number;
393
- complementZ?: undefined;
394
- complementW?: undefined;
395
- type?: undefined;
396
- mode?: undefined;
397
- animationType?: undefined;
398
- min?: undefined;
399
- max?: undefined;
400
- isBoolean?: undefined;
401
- matrixMode?: undefined;
402
- isConstant?: undefined;
403
- groupInInspector?: undefined;
404
- convertToGammaSpace?: undefined;
405
- convertToLinearSpace?: undefined;
406
- systemValue?: undefined;
407
- rSwizzle?: undefined;
408
- gSwizzle?: undefined;
409
- bSwizzle?: undefined;
410
- aSwizzle?: undefined;
411
- xSwizzle?: undefined;
412
- ySwizzle?: undefined;
413
- zSwizzle?: undefined;
414
- wSwizzle?: undefined;
415
- valueType?: undefined;
416
- value?: undefined;
417
- fragmentOnly?: undefined;
418
- disableLevelMultiplication?: undefined;
419
- } | {
420
- customType: string;
421
- id: number;
422
- name: string;
423
- comments: string;
424
- visibleInInspector: boolean;
425
- visibleOnFrame: boolean;
426
- target: number;
427
- inputs: ({
428
- name: string;
429
- inputName?: undefined;
430
- targetBlockId?: undefined;
431
- targetConnectionName?: undefined;
432
- isExposedOnFrame?: undefined;
433
- exposedPortPosition?: undefined;
434
- } | {
435
- name: string;
436
- inputName: string;
437
- targetBlockId: number;
438
- targetConnectionName: string;
439
- isExposedOnFrame: boolean;
440
- exposedPortPosition: number;
441
- })[];
442
- outputs: {
443
- name: string;
444
- }[];
445
- xSwizzle: string;
446
- ySwizzle: string;
447
- zSwizzle: string;
448
- wSwizzle: string;
449
- complementZ?: undefined;
450
- complementW?: undefined;
451
- type?: undefined;
452
- mode?: undefined;
453
- animationType?: undefined;
454
- min?: undefined;
455
- max?: undefined;
456
- isBoolean?: undefined;
457
- matrixMode?: undefined;
458
- isConstant?: undefined;
459
- groupInInspector?: undefined;
460
- convertToGammaSpace?: undefined;
461
- convertToLinearSpace?: undefined;
462
- systemValue?: undefined;
463
- rSwizzle?: undefined;
464
- gSwizzle?: undefined;
465
- bSwizzle?: undefined;
466
- aSwizzle?: undefined;
467
- operation?: undefined;
468
- valueType?: undefined;
469
- value?: undefined;
470
- fragmentOnly?: undefined;
471
- disableLevelMultiplication?: undefined;
472
- } | {
473
- customType: string;
474
- id: number;
475
- name: string;
476
- comments: string;
477
- visibleInInspector: boolean;
478
- visibleOnFrame: boolean;
479
- target: number;
480
- inputs: ({
481
- name: string;
482
- inputName: string;
483
- targetBlockId: number;
484
- targetConnectionName: string;
485
- isExposedOnFrame: boolean;
486
- exposedPortPosition: number;
487
- } | {
488
- name: string;
489
- isExposedOnFrame: boolean;
490
- exposedPortPosition: number;
491
- inputName?: undefined;
492
- targetBlockId?: undefined;
493
- targetConnectionName?: undefined;
494
- } | {
495
- name: string;
496
- inputName?: undefined;
497
- targetBlockId?: undefined;
498
- targetConnectionName?: undefined;
499
- isExposedOnFrame?: undefined;
500
- exposedPortPosition?: undefined;
501
- })[];
502
- outputs: {
503
- name: string;
504
- }[];
505
- complementZ?: undefined;
506
- complementW?: undefined;
507
- type?: undefined;
508
- mode?: undefined;
509
- animationType?: undefined;
510
- min?: undefined;
511
- max?: undefined;
512
- isBoolean?: undefined;
513
- matrixMode?: undefined;
514
- isConstant?: undefined;
515
- groupInInspector?: undefined;
516
- convertToGammaSpace?: undefined;
517
- convertToLinearSpace?: undefined;
518
- systemValue?: undefined;
519
- rSwizzle?: undefined;
520
- gSwizzle?: undefined;
521
- bSwizzle?: undefined;
522
- aSwizzle?: undefined;
523
- operation?: undefined;
524
- xSwizzle?: undefined;
525
- ySwizzle?: undefined;
526
- zSwizzle?: undefined;
527
- wSwizzle?: undefined;
528
- valueType?: undefined;
529
- value?: undefined;
530
- fragmentOnly?: undefined;
531
- disableLevelMultiplication?: undefined;
532
- } | {
533
- customType: string;
534
- id: number;
535
- name: string;
536
- comments: string;
537
- visibleInInspector: boolean;
538
- visibleOnFrame: boolean;
539
- target: number;
540
- inputs: never[];
541
- outputs: {
542
- name: string;
543
- }[];
544
- type: number;
545
- mode: number;
546
- animationType: number;
547
- min: number;
548
- max: number;
549
- isBoolean: boolean;
550
- matrixMode: number;
551
- isConstant: boolean;
552
- groupInInspector: string;
553
- convertToGammaSpace: boolean;
554
- convertToLinearSpace: boolean;
555
- valueType: string;
556
- value: number[];
557
- complementZ?: undefined;
558
- complementW?: undefined;
559
- systemValue?: undefined;
560
- rSwizzle?: undefined;
561
- gSwizzle?: undefined;
562
- bSwizzle?: undefined;
563
- aSwizzle?: undefined;
564
- operation?: undefined;
565
- xSwizzle?: undefined;
566
- ySwizzle?: undefined;
567
- zSwizzle?: undefined;
568
- wSwizzle?: undefined;
569
- fragmentOnly?: undefined;
570
- disableLevelMultiplication?: undefined;
571
- } | {
572
- customType: string;
573
- id: number;
574
- name: string;
575
- comments: string;
576
- visibleInInspector: boolean;
577
- visibleOnFrame: boolean;
578
- target: number;
579
- inputs: never[];
580
- outputs: {
581
- name: string;
582
- }[];
583
- type: number;
584
- mode: number;
585
- animationType: number;
586
- min: number;
587
- max: number;
588
- isBoolean: boolean;
589
- matrixMode: number;
590
- isConstant: boolean;
591
- groupInInspector: string;
592
- convertToGammaSpace: boolean;
593
- convertToLinearSpace: boolean;
594
- valueType: string;
595
- value: number;
596
- complementZ?: undefined;
597
- complementW?: undefined;
598
- systemValue?: undefined;
599
- rSwizzle?: undefined;
600
- gSwizzle?: undefined;
601
- bSwizzle?: undefined;
602
- aSwizzle?: undefined;
603
- operation?: undefined;
604
- xSwizzle?: undefined;
605
- ySwizzle?: undefined;
606
- zSwizzle?: undefined;
607
- wSwizzle?: undefined;
608
- fragmentOnly?: undefined;
609
- disableLevelMultiplication?: undefined;
610
- } | {
611
- customType: string;
612
- id: number;
613
- name: string;
614
- comments: string;
615
- visibleInInspector: boolean;
616
- visibleOnFrame: boolean;
617
- target: number;
618
- inputs: ({
619
- name: string;
620
- displayName: string;
621
- inputName: string;
622
- targetBlockId: number;
623
- targetConnectionName: string;
624
- isExposedOnFrame: boolean;
625
- exposedPortPosition: number;
626
- } | {
627
- name: string;
628
- displayName: string;
629
- inputName?: undefined;
630
- targetBlockId?: undefined;
631
- targetConnectionName?: undefined;
632
- isExposedOnFrame?: undefined;
633
- exposedPortPosition?: undefined;
634
- })[];
635
- outputs: {
636
- name: string;
637
- displayName: string;
638
- }[];
639
- convertToGammaSpace: boolean;
640
- convertToLinearSpace: boolean;
641
- fragmentOnly: boolean;
642
- disableLevelMultiplication: boolean;
643
- complementZ?: undefined;
644
- complementW?: undefined;
645
- type?: undefined;
646
- mode?: undefined;
647
- animationType?: undefined;
648
- min?: undefined;
649
- max?: undefined;
650
- isBoolean?: undefined;
651
- matrixMode?: undefined;
652
- isConstant?: undefined;
653
- groupInInspector?: undefined;
654
- systemValue?: undefined;
655
- rSwizzle?: undefined;
656
- gSwizzle?: undefined;
657
- bSwizzle?: undefined;
658
- aSwizzle?: undefined;
659
- operation?: undefined;
660
- xSwizzle?: undefined;
661
- ySwizzle?: undefined;
662
- zSwizzle?: undefined;
663
- wSwizzle?: undefined;
664
- valueType?: undefined;
665
- value?: undefined;
666
- })[];
667
- };
34
+ declare module "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent" {
35
+ export class PropertyChangedEvent {
36
+ object: any;
37
+ property: string;
38
+ value: any;
39
+ initialValue: any;
40
+ allowNullValue?: boolean;
41
+ }
42
+ }
43
+ declare module "@babylonjs/gui-editor/diagram/coordinateHelper" {
44
+ import { Control } from "@babylonjs/gui/2D/controls/control";
45
+ import { Matrix2D } from "@babylonjs/gui/2D/math2D";
46
+ import { Vector2 } from "@babylonjs/core/Maths/math.vector";
47
+ import { Observable } from "@babylonjs/core/Misc/observable";
48
+ import { GlobalState } from "@babylonjs/gui-editor/globalState";
49
+ import { PropertyChangedEvent } from "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent";
50
+ export type DimensionProperties = "width" | "left" | "height" | "top" | "paddingLeft" | "paddingRight" | "paddingTop" | "paddingBottom";
51
+ export class Rect {
52
+ top: number;
53
+ left: number;
54
+ right: number;
55
+ bottom: number;
56
+ constructor(left: number, top: number, right: number, bottom: number);
57
+ clone(): Rect;
58
+ get center(): Vector2;
59
+ get width(): number;
60
+ get height(): number;
61
+ }
62
+ export class CoordinateHelper {
63
+ private static _matrixCache;
64
+ static globalState: GlobalState;
65
+ /**
66
+ * Get the scaling of a specific GUI control
67
+ * @param node the node for which we are getting the scaling
68
+ * @param relative should we return only the relative scaling (relative to the parent)
69
+ * @returns an X,Y vector of the scaling
70
+ */
71
+ static getScale(node: Control, relative?: boolean): Vector2;
72
+ static getRotation(node: Control, relative?: boolean): number;
73
+ /**
74
+ * This function calculates a local matrix for a node, including it's full transformation and pivot point
75
+ *
76
+ * @param node the node to calculate the matrix for
77
+ * @param useStoredValues should the stored (cached) values be used to calculate the matrix
78
+ * @returns a new matrix for the control
79
+ */
80
+ static getNodeMatrix(node: Control, storedValues?: Rect): Matrix2D;
81
+ /**
82
+ * Using the node's tree, calculate its world matrix and return it
83
+ * @param node the node to calculate the matrix for
84
+ * @param useStoredValuesIfPossible used stored valued (cached when pointer down is clicked)
85
+ * @returns the world matrix for this node
86
+ */
87
+ static nodeToRTTWorldMatrix(node: Control, storedValues?: Rect): Matrix2D;
88
+ static nodeToRTTSpace(node: Control, x: number, y: number, reference?: Vector2, storedValues?: Rect): Vector2;
89
+ static rttToLocalNodeSpace(node: Control, x: number, y: number, reference?: Vector2, storedValues?: Rect): Vector2;
90
+ static rttToCanvasSpace(x: number, y: number): Vector2;
91
+ static mousePointerToRTTSpace(node: Control, x?: number, y?: number): Vector2;
92
+ private static resetMatrixArray;
93
+ static computeLocalBounds(node: Control): Rect;
94
+ /**
95
+ * converts a node's dimensions to percentage, properties can be specified as a list, or can convert all
96
+ */
97
+ static convertToPercentage(guiControl: Control, properties?: DimensionProperties[], onPropertyChangedObservable?: Observable<PropertyChangedEvent>): void;
98
+ static round(value: number): number;
99
+ static convertToPixels(guiControl: Control, properties?: DimensionProperties[], onPropertyChangedObservable?: Observable<PropertyChangedEvent>): void;
100
+ }
668
101
  }
669
102
  declare module "@babylonjs/gui-editor/diagram/workbench" {
670
103
  import * as React from "react";
671
104
  import { GlobalState } from "@babylonjs/gui-editor/globalState";
672
- import { Nullable } from "@babylonjs/core/types";
673
105
  import { Control } from "@babylonjs/gui/2D/controls/control";
674
106
  import { Vector2, Vector3 } from "@babylonjs/core/Maths/math.vector";
675
107
  import { Scene } from "@babylonjs/core/scene";
676
- import { ArcRotateCamera } from "@babylonjs/core/Cameras/arcRotateCamera";
677
- import { Mesh } from "@babylonjs/core/Meshes/mesh";
678
- import { Plane } from "@babylonjs/core/Maths/math.plane";
679
- import { PointerInfo } from "@babylonjs/core/Events/pointerEvents";
680
- import { EventState } from "@babylonjs/core/Misc/observable";
681
- import { Rectangle } from "@babylonjs/gui/2D/controls/rectangle";
108
+ import { IWheelEvent } from "@babylonjs/core/Events/deviceInputEvents";
109
+ import { Container } from "@babylonjs/gui/2D/controls/container";
110
+ import { ISize } from "@babylonjs/core/Maths/math";
682
111
  export interface IWorkbenchComponentProps {
683
112
  globalState: GlobalState;
684
113
  }
@@ -688,52 +117,60 @@ declare module "@babylonjs/gui-editor/diagram/workbench" {
688
117
  Y = 3
689
118
  }
690
119
  export class WorkbenchComponent extends React.Component<IWorkbenchComponentProps> {
691
- artBoardBackground: Rectangle;
692
120
  private _rootContainer;
693
121
  private _setConstraintDirection;
694
122
  private _mouseStartPointX;
695
123
  private _mouseStartPointY;
696
- _textureMesh: Mesh;
697
124
  _scene: Scene;
698
- private _selectedGuiNodes;
699
125
  private _ctrlKeyIsPressed;
700
126
  private _altKeyIsPressed;
701
127
  private _constraintDirection;
702
128
  private _forcePanning;
703
129
  private _forceZooming;
704
130
  private _forceSelecting;
705
- private _outlines;
706
131
  private _panning;
707
132
  private _canvas;
708
133
  private _responsive;
709
134
  private _isOverGUINode;
710
- private _clipboard;
711
- private _selectAll;
712
- _camera: ArcRotateCamera;
713
- private _cameraRadias;
714
- private _cameraMaxRadiasFactor;
715
- private _pasted;
716
135
  private _engine;
717
136
  private _liveRenderObserver;
718
137
  private _guiRenderObserver;
719
138
  private _mainSelection;
720
139
  private _selectionDepth;
721
140
  private _doubleClick;
722
- private _lockMainSelection;
723
141
  _liveGuiTextureRerender: boolean;
142
+ private _anyControlClicked;
143
+ private _visibleRegionContainer;
144
+ get visibleRegionContainer(): Container;
145
+ private _panAndZoomContainer;
146
+ get panAndZoomContainer(): Container;
147
+ private _trueRootContainer;
148
+ set trueRootContainer(value: Container);
149
+ get trueRootContainer(): Container;
150
+ private _nextLiveGuiRender;
151
+ private _liveGuiRerenderDelay;
152
+ private _defaultGUISize;
153
+ private _initialPanningOffset;
154
+ private _panningOffset;
155
+ private _zoomFactor;
156
+ private _zoomModeIncrement;
157
+ private _guiSize;
158
+ get guiSize(): ISize;
159
+ set guiSize(value: ISize);
160
+ applyEditorTransformation(): void;
161
+ removeEditorTransformation(): void;
724
162
  get globalState(): GlobalState;
725
163
  get nodes(): Control[];
726
164
  get selectedGuiNodes(): Control[];
727
165
  private _getParentWithDepth;
728
166
  private _getMaxParent;
729
167
  constructor(props: IWorkbenchComponentProps);
730
- determineMouseSelection(selection: Nullable<Control>): void;
168
+ determineMouseSelection(selection: Control): void;
731
169
  keyEvent: (evt: KeyboardEvent) => void;
732
- private updateHitTest;
733
- private updateHitTestForSelection;
734
- private setCameraRadius;
735
- copyToClipboard(): void;
736
- pasteFromClipboard(): void;
170
+ private _deleteSelectedNodes;
171
+ copyToClipboard(copyFn: (content: string) => void): void;
172
+ cutToClipboard(copyFn: (content: string) => void): void;
173
+ pasteFromClipboard(clipboardContents: string): boolean;
737
174
  CopyGUIControl(original: Control): void;
738
175
  private selectAllGUI;
739
176
  blurEvent: () => void;
@@ -741,8 +178,7 @@ declare module "@babylonjs/gui-editor/diagram/workbench" {
741
178
  loadFromJson(serializationObject: any): void;
742
179
  loadFromSnippet(snippetId: string): Promise<void>;
743
180
  loadToEditor(): void;
744
- changeSelectionHighlight(value: boolean): void;
745
- resizeGuiTexture(newvalue: Vector2): void;
181
+ updateNodeOutlines(): void;
746
182
  findNodeFromGuiElement(guiControl: Control): Control;
747
183
  appendBlock(guiElement: Control): Control;
748
184
  private _isMainSelectionParent;
@@ -755,32 +191,22 @@ declare module "@babylonjs/gui-editor/diagram/workbench" {
755
191
  isSelected(value: boolean, guiNode: Control): void;
756
192
  clicked: boolean;
757
193
  _onMove(guiControl: Control, evt: Vector2, startPos: Vector2, ignorClick?: boolean): boolean;
758
- convertToPercentage(guiControl: Control, includeScale: boolean): void;
759
194
  onMove(evt: React.PointerEvent): void;
760
- getGroundPosition(): Nullable<Vector3>;
195
+ private _screenToTexturePosition;
196
+ private getScaledPointerPosition;
761
197
  onDown(evt: React.PointerEvent<HTMLElement>): void;
762
198
  isUp: boolean;
763
199
  onUp(evt: React.PointerEvent): void;
764
200
  createGUICanvas(): void;
765
201
  synchronizeLiveGUI(): void;
766
- addControls(scene: Scene, camera: ArcRotateCamera): void;
767
- getPosition(scene: Scene, camera: ArcRotateCamera, plane: Plane, x?: number, y?: number): Vector3;
768
- panning(newPos: Vector3, initialPos: Vector3, inertia: number, ref: Vector3): Vector3;
769
- zoomWheel(p: PointerInfo, e: EventState, camera: ArcRotateCamera): number;
770
- zooming(delta: number, scene: Scene, camera: ArcRotateCamera, plane: Plane, ref: Vector3): void;
202
+ addControls(scene: Scene): void;
203
+ panning(): void;
204
+ zoomWheel(event: IWheelEvent): number;
205
+ zooming(delta: number): void;
771
206
  zeroIfClose(vec: Vector3): void;
772
207
  render(): JSX.Element;
773
208
  }
774
209
  }
775
- declare module "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent" {
776
- export class PropertyChangedEvent {
777
- object: any;
778
- property: string;
779
- value: any;
780
- initialValue: any;
781
- allowNullValue?: boolean;
782
- }
783
- }
784
210
  declare module "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject" {
785
211
  /**
786
212
  * Class used to provide lock mechanism
@@ -792,95 +218,18 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lock
792
218
  lock: boolean;
793
219
  }
794
220
  }
795
- declare module "@babylonjs/gui-editor/diagram/guiGizmo" {
796
- import { Control } from "@babylonjs/gui/2D/controls/control";
797
- import { Vector2 } from "@babylonjs/core/Maths/math.vector";
798
- import * as React from "react";
799
- import { GlobalState } from "@babylonjs/gui-editor/globalState";
800
- export interface IGuiGizmoProps {
801
- globalState: GlobalState;
802
- }
803
- export class GuiGizmoComponent extends React.Component<IGuiGizmoProps> {
804
- scalePoints: HTMLDivElement[];
805
- private _scalePointIndex;
806
- private _pointerData;
807
- private _htmlPoints;
808
- private _matrixCache;
809
- private _responsive;
810
- constructor(props: IGuiGizmoProps);
811
- componentDidMount(): void;
812
- /**
813
- * Update the gizmo's corners positions
814
- * @param force should the update be forced. otherwise it will be updated only when the pointer is down
815
- */
816
- updateGizmo(force?: boolean): void;
817
- private _resetMatrixArray;
818
- /**
819
- * This function calculates a local matrix for a node, including it's full transformation and pivot point
820
- *
821
- * @param node the node to calculate the matrix for
822
- * @param useStoredValues should the stored (cached) values be used to calculate the matrix
823
- * @returns a new matrix for the control
824
- */
825
- private _getNodeMatrix;
826
- /**
827
- * Using the node's tree, calculate its world matrix and return it
828
- * @param node the node to calculate the matrix for
829
- * @param useStoredValuesIfPossible used stored valued (cached when pointer down is clicked)
830
- * @returns the world matrix for this node
831
- */
832
- private _nodeToRTTWorldMatrix;
833
- private _nodeToRTTSpace;
834
- private _rttToLocalNodeSpace;
835
- private _rttToCanvasSpace;
836
- private _plane;
837
- private _mousePointerToRTTSpace;
838
- /**
839
- * Get the scaling of a specific GUI control
840
- * @param node the node for which we are getting the scaling
841
- * @param relative should we return only the relative scaling (relative to the parent)
842
- * @returns an X,Y vector of the scaling
843
- */
844
- getScale(node: Control, relative?: boolean): Vector2;
845
- getRotation(node: Control, relative?: boolean): number;
846
- createBaseGizmo(): void;
847
- onUp(evt?: React.PointerEvent): void;
848
- private _onUp;
849
- onMove(evt: React.PointerEvent): void;
850
- private _initH;
851
- private _initW;
852
- private _initX;
853
- private _initY;
854
- private _onMove;
855
- /**
856
- * Calculate the 4 corners in node space
857
- * @param node The node to use
858
- */
859
- private _nodeToCorners;
860
- /**
861
- * Computer the node's width, height, top and left, using the 4 corners
862
- * @param node the node we use
863
- */
864
- private _updateNodeFromCorners;
865
- private _rotate;
866
- private _setNodeCorner;
867
- private _setMousePosition;
868
- render(): null;
869
- }
870
- }
871
221
  declare module "@babylonjs/gui-editor/globalState" {
872
222
  import { Nullable } from "@babylonjs/core/types";
873
223
  import { Observable } from "@babylonjs/core/Misc/observable";
874
224
  import { LogEntry } from "@babylonjs/gui-editor/components/log/logComponent";
875
- import { Color4 } from "@babylonjs/core/Maths/math.color";
225
+ import { Color3 } from "@babylonjs/core/Maths/math.color";
876
226
  import { WorkbenchComponent } from "@babylonjs/gui-editor/diagram/workbench";
877
227
  import { AdvancedDynamicTexture } from "@babylonjs/gui/2D/advancedDynamicTexture";
878
228
  import { PropertyChangedEvent } from "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent";
879
- import { Vector2 } from "@babylonjs/core/Maths/math.vector";
880
229
  import { Scene } from "@babylonjs/core/scene";
881
230
  import { Control } from "@babylonjs/gui/2D/controls/control";
882
231
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
883
- import { GuiGizmoComponent } from "@babylonjs/gui-editor/diagram/guiGizmo";
232
+ import { ISize } from "@babylonjs/core/Maths/math";
884
233
  export enum DragOverLocation {
885
234
  ABOVE = 0,
886
235
  BELOW = 1,
@@ -888,14 +237,14 @@ declare module "@babylonjs/gui-editor/globalState" {
888
237
  NONE = 3
889
238
  }
890
239
  export class GlobalState {
891
- [x: string]: any;
892
240
  liveGuiTexture: Nullable<AdvancedDynamicTexture>;
893
241
  guiTexture: AdvancedDynamicTexture;
894
242
  hostElement: HTMLElement;
895
243
  hostDocument: HTMLDocument;
896
244
  hostWindow: Window;
897
- onSelectionChangedObservable: Observable<Nullable<Control>>;
898
- onResizeObservable: Observable<Vector2>;
245
+ selectedControls: Control[];
246
+ onSelectionChangedObservable: Observable<void>;
247
+ onResizeObservable: Observable<ISize>;
899
248
  onBuiltObservable: Observable<void>;
900
249
  onResetRequiredObservable: Observable<void>;
901
250
  onUpdateRequiredObservable: Observable<void>;
@@ -906,32 +255,40 @@ declare module "@babylonjs/gui-editor/globalState" {
906
255
  onNewSceneObservable: Observable<Nullable<Scene>>;
907
256
  onGuiNodeRemovalObservable: Observable<Control>;
908
257
  onPopupClosedObservable: Observable<void>;
909
- backgroundColor: Color4;
258
+ private _backgroundColor;
259
+ private _outlines;
260
+ isMultiSelecting: boolean;
261
+ onOutlineChangedObservable: Observable<void>;
910
262
  blockKeyboardEvents: boolean;
911
263
  controlCamera: boolean;
912
264
  selectionLock: boolean;
913
265
  workbench: WorkbenchComponent;
914
- guiGizmo: GuiGizmoComponent;
915
266
  onPropertyChangedObservable: Observable<PropertyChangedEvent>;
916
267
  onZoomObservable: Observable<void>;
917
268
  onFitToWindowObservable: Observable<void>;
918
269
  onPanObservable: Observable<void>;
919
270
  onSelectionButtonObservable: Observable<void>;
920
- onMoveObservable: Observable<void>;
921
271
  onLoadObservable: Observable<File>;
922
272
  onSaveObservable: Observable<void>;
923
273
  onSnippetLoadObservable: Observable<void>;
924
274
  onSnippetSaveObservable: Observable<void>;
925
- onOutlinesObservable: Observable<void>;
926
275
  onResponsiveChangeObservable: Observable<boolean>;
927
276
  onParentingChangeObservable: Observable<Nullable<Control>>;
277
+ onDropObservable: Observable<void>;
928
278
  onPropertyGridUpdateRequiredObservable: Observable<void>;
929
279
  onDraggingEndObservable: Observable<void>;
930
280
  onDraggingStartObservable: Observable<void>;
931
281
  onWindowResizeObservable: Observable<void>;
932
282
  onGizmoUpdateRequireObservable: Observable<void>;
283
+ onArtBoardUpdateRequiredObservable: Observable<void>;
284
+ onBackgroundColorChangeObservable: Observable<void>;
285
+ onPointerMoveObservable: Observable<import("react").PointerEvent<HTMLCanvasElement>>;
286
+ onPointerUpObservable: Observable<Nullable<PointerEvent | import("react").PointerEvent<HTMLCanvasElement>>>;
933
287
  draggedControl: Nullable<Control>;
934
288
  draggedControlDirection: DragOverLocation;
289
+ onCopyObservable: Observable<(content: string) => void>;
290
+ onCutObservable: Observable<(content: string) => void>;
291
+ onPasteObservable: Observable<string>;
935
292
  isSaving: boolean;
936
293
  lockObject: LockObject;
937
294
  storeEditorData: (serializationObject: any) => void;
@@ -944,6 +301,16 @@ declare module "@babylonjs/gui-editor/globalState" {
944
301
  action: (data: string) => Promise<string>;
945
302
  };
946
303
  constructor();
304
+ /** adds copy, cut and paste listeners to the host window */
305
+ registerEventListeners(): void;
306
+ private _updateKeys;
307
+ get backgroundColor(): Color3;
308
+ set backgroundColor(value: Color3);
309
+ get outlines(): boolean;
310
+ set outlines(value: boolean);
311
+ select(control: Control): void;
312
+ setSelection(controls: Control[]): void;
313
+ isMultiSelectable(control: Control): boolean;
947
314
  }
948
315
  }
949
316
  declare module "@babylonjs/gui-editor/sharedUiComponents/lines/buttonLineComponent" {
@@ -977,6 +344,20 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/fileButtonLineCom
977
344
  render(): JSX.Element;
978
345
  }
979
346
  }
347
+ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/targetsProxy" {
348
+ import { PropertyChangedEvent } from "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent";
349
+ import { Observable } from "@babylonjs/core/Misc/observable";
350
+ export const conflictingValuesPlaceholder = "\u2014";
351
+ /**
352
+ *
353
+ * @param propertyName the property that the input changes
354
+ * @param targets a list of selected targets
355
+ * @param defaultValue the value that should be returned when two targets have conflicting values
356
+ * @param setter an optional setter function to override the default setter behavior
357
+ * @returns a proxy object that can be passed as a target into the input
358
+ */
359
+ export function makeTargetsProxy<Type>(targets: Type[], onPropertyChangedObservable?: Observable<PropertyChangedEvent>, getProperty?: (target: Type, property: keyof Type) => any): any;
360
+ }
980
361
  declare module "@babylonjs/gui-editor/sharedUiComponents/lines/checkBoxLineComponent" {
981
362
  import * as React from "react";
982
363
  import { Observable } from "@babylonjs/core/Misc/observable";
@@ -998,6 +379,7 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/checkBoxLineCompo
998
379
  export class CheckBoxLineComponent extends React.Component<ICheckBoxLineComponentProps, {
999
380
  isSelected: boolean;
1000
381
  isDisabled?: boolean;
382
+ isConflict: boolean;
1001
383
  }> {
1002
384
  private static _UniqueIdSeed;
1003
385
  private _uniqueId;
@@ -1006,6 +388,7 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/checkBoxLineCompo
1006
388
  shouldComponentUpdate(nextProps: ICheckBoxLineComponentProps, nextState: {
1007
389
  isSelected: boolean;
1008
390
  isDisabled: boolean;
391
+ isConflict: boolean;
1009
392
  }): boolean;
1010
393
  onChange(): void;
1011
394
  render(): JSX.Element;
@@ -1068,6 +451,9 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/floatLineComponen
1068
451
  icon?: string;
1069
452
  iconLabel?: string;
1070
453
  defaultValue?: number;
454
+ unit?: string;
455
+ onUnitClicked?: () => void;
456
+ unitLocked?: boolean;
1071
457
  }
1072
458
  export class FloatLineComponent extends React.Component<IFloatLineComponentProps, {
1073
459
  value: string;
@@ -1076,6 +462,7 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/floatLineComponen
1076
462
  private _store;
1077
463
  constructor(props: IFloatLineComponentProps);
1078
464
  componentWillUnmount(): void;
465
+ getValueString(value: any): string;
1079
466
  shouldComponentUpdate(nextProps: IFloatLineComponentProps, nextState: {
1080
467
  value: string;
1081
468
  }): boolean;
@@ -1123,6 +510,19 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/sliderLineCompone
1123
510
  render(): JSX.Element;
1124
511
  }
1125
512
  }
513
+ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/inputArrowsComponent" {
514
+ import * as React from "react";
515
+ interface IInputArrowsComponentProps {
516
+ incrementValue: (amount: number) => void;
517
+ setDragging: (dragging: boolean) => void;
518
+ }
519
+ export class InputArrowsComponent extends React.Component<IInputArrowsComponentProps> {
520
+ private _arrowsRef;
521
+ private _drag;
522
+ private _releaseListener;
523
+ render(): JSX.Element;
524
+ }
525
+ }
1126
526
  declare module "@babylonjs/gui-editor/sharedUiComponents/lines/textInputLineComponent" {
1127
527
  import * as React from "react";
1128
528
  import { Observable } from "@babylonjs/core/Misc/observable";
@@ -1141,18 +541,28 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/textInputLineComp
1141
541
  noUnderline?: boolean;
1142
542
  numbersOnly?: boolean;
1143
543
  delayInput?: boolean;
544
+ unit?: string;
545
+ onUnitClicked?: (unit: string) => void;
546
+ unitLocked?: boolean;
547
+ arrows?: boolean;
548
+ arrowsIncrement?: (amount: number) => void;
549
+ step?: number;
1144
550
  }
1145
551
  export class TextInputLineComponent extends React.Component<ITextInputLineComponentProps, {
1146
552
  value: string;
553
+ dragging: boolean;
1147
554
  }> {
1148
555
  private _localChange;
1149
556
  constructor(props: ITextInputLineComponentProps);
1150
557
  componentWillUnmount(): void;
1151
558
  shouldComponentUpdate(nextProps: ITextInputLineComponentProps, nextState: {
1152
559
  value: string;
560
+ dragging: boolean;
1153
561
  }): boolean;
1154
562
  raiseOnPropertyChanged(newValue: string, previousValue: string): void;
1155
563
  updateValue(value: string): void;
564
+ incrementValue(amount: number): void;
565
+ onKeyDown(event: React.KeyboardEvent): void;
1156
566
  render(): JSX.Element;
1157
567
  }
1158
568
  }
@@ -1297,52 +707,59 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/colorPickerCompon
1297
707
  constructor(props: IColorPickerComponentProps);
1298
708
  syncPositions(): void;
1299
709
  shouldComponentUpdate(nextProps: IColorPickerComponentProps, nextState: IColorPickerComponentState): boolean;
710
+ getHexString(props?: Readonly<IColorPickerComponentProps> & Readonly<{
711
+ children?: React.ReactNode;
712
+ }>): string;
1300
713
  componentDidUpdate(): void;
1301
714
  componentDidMount(): void;
1302
715
  render(): JSX.Element;
1303
716
  }
1304
717
  }
1305
- declare module "@babylonjs/gui-editor/sharedUiComponents/lines/color3LineComponent" {
718
+ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/colorLineComponent" {
1306
719
  import * as React from "react";
1307
720
  import { Observable } from "@babylonjs/core/Misc/observable";
721
+ import { Color4 } from "@babylonjs/core/Maths/math.color";
1308
722
  import { PropertyChangedEvent } from "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent";
1309
- import { Color3, Color4 } from "@babylonjs/core/Maths/math.color";
1310
723
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1311
- export interface IColor3LineComponentProps {
724
+ export interface IColorLineComponentProps {
1312
725
  label: string;
1313
- target: any;
726
+ target?: any;
1314
727
  propertyName: string;
1315
728
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
729
+ onChange?: () => void;
1316
730
  isLinear?: boolean;
1317
731
  icon?: string;
1318
- lockObject?: LockObject;
1319
732
  iconLabel?: string;
1320
- onValueChange?: (value: string) => void;
733
+ lockObject?: LockObject;
734
+ disableAlpha?: boolean;
1321
735
  }
1322
- export class Color3LineComponent extends React.Component<IColor3LineComponentProps, {
736
+ interface IColorLineComponentState {
1323
737
  isExpanded: boolean;
1324
- color: Color3 | Color4;
1325
- colorText: string;
1326
- }> {
1327
- private _localChange;
1328
- constructor(props: IColor3LineComponentProps);
1329
- private convertToColor3;
1330
- shouldComponentUpdate(nextProps: IColor3LineComponentProps, nextState: {
1331
- color: Color3 | Color4;
1332
- colorText: string;
1333
- }): boolean;
1334
- setPropertyValue(newColor: Color3 | Color4, newColorText: string): void;
1335
- onChange(newValue: string): void;
738
+ color: Color4;
739
+ colorString: string;
740
+ }
741
+ export class ColorLineComponent extends React.Component<IColorLineComponentProps, IColorLineComponentState> {
742
+ constructor(props: IColorLineComponentProps);
743
+ shouldComponentUpdate(nextProps: IColorLineComponentProps, nextState: IColorLineComponentState): boolean;
744
+ getValue(props?: Readonly<IColorLineComponentProps> & Readonly<{
745
+ children?: React.ReactNode;
746
+ }>): Color4;
747
+ getValueAsString(props?: Readonly<IColorLineComponentProps> & Readonly<{
748
+ children?: React.ReactNode;
749
+ }>): string;
750
+ setColorFromString(colorString: string): void;
751
+ setColor(color: Color4): void;
752
+ updateColor(newColor: Color4): void;
1336
753
  switchExpandState(): void;
1337
- raiseOnPropertyChanged(previousValue: Color3 | Color4): void;
1338
754
  updateStateR(value: number): void;
1339
755
  updateStateG(value: number): void;
1340
756
  updateStateB(value: number): void;
757
+ updateStateA(value: number): void;
1341
758
  copyToClipboard(): void;
1342
- convert(colorString: string): void;
1343
- private _colorStringSaved;
1344
- private _colorPickerOpen;
1345
- private _colorString;
759
+ get colorString(): string;
760
+ set colorString(_: string);
761
+ private convertToColor;
762
+ private toColor3;
1346
763
  render(): JSX.Element;
1347
764
  }
1348
765
  }
@@ -1353,17 +770,18 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/c
1353
770
  import { Control } from "@babylonjs/gui/2D/controls/control";
1354
771
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1355
772
  interface ICommonControlPropertyGridComponentProps {
1356
- control: Control;
773
+ controls: Control[];
1357
774
  lockObject: LockObject;
1358
775
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1359
776
  }
1360
777
  export class CommonControlPropertyGridComponent extends React.Component<ICommonControlPropertyGridComponentProps> {
1361
- private _width;
1362
- private _height;
778
+ private _onPropertyChangedObserver;
1363
779
  constructor(props: ICommonControlPropertyGridComponentProps);
780
+ private _getTransformedReferenceCoordinate;
1364
781
  private _updateAlignment;
1365
782
  private _checkAndUpdateValues;
1366
783
  private _markChildrenAsDirty;
784
+ componentWillUnmount(): void;
1367
785
  render(): JSX.Element;
1368
786
  }
1369
787
  }
@@ -1375,7 +793,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/s
1375
793
  import { Slider } from "@babylonjs/gui/2D/controls/sliders/slider";
1376
794
  import { ImageBasedSlider } from "@babylonjs/gui/2D/controls/sliders/imageBasedSlider";
1377
795
  interface ISliderPropertyGridComponentProps {
1378
- slider: Slider | ImageBasedSlider;
796
+ sliders: (Slider | ImageBasedSlider)[];
1379
797
  lockObject: LockObject;
1380
798
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1381
799
  }
@@ -1391,7 +809,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/s
1391
809
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1392
810
  import { Slider } from "@babylonjs/gui/2D/controls/sliders/slider";
1393
811
  interface ISliderGenericPropertyGridComponentProps {
1394
- slider: Slider;
812
+ sliders: Slider[];
1395
813
  lockObject: LockObject;
1396
814
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1397
815
  }
@@ -1407,7 +825,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/l
1407
825
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1408
826
  import { Line } from "@babylonjs/gui/2D/controls/line";
1409
827
  interface ILinePropertyGridComponentProps {
1410
- line: Line;
828
+ lines: Line[];
1411
829
  lockObject: LockObject;
1412
830
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1413
831
  }
@@ -1424,7 +842,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/r
1424
842
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1425
843
  import { RadioButton } from "@babylonjs/gui/2D/controls/radioButton";
1426
844
  interface IRadioButtonPropertyGridComponentProps {
1427
- radioButton: RadioButton;
845
+ radioButtons: RadioButton[];
1428
846
  lockObject: LockObject;
1429
847
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1430
848
  }
@@ -1474,7 +892,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/t
1474
892
  import { TextBlock } from "@babylonjs/gui/2D/controls/textBlock";
1475
893
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1476
894
  interface ITextBlockPropertyGridComponentProps {
1477
- textBlock: TextBlock;
895
+ textBlocks: TextBlock[];
1478
896
  lockObject: LockObject;
1479
897
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1480
898
  }
@@ -1490,7 +908,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/i
1490
908
  import { InputText } from "@babylonjs/gui/2D/controls/inputText";
1491
909
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1492
910
  interface IInputTextPropertyGridComponentProps {
1493
- inputText: InputText;
911
+ inputTexts: InputText[];
1494
912
  lockObject: LockObject;
1495
913
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1496
914
  }
@@ -1499,6 +917,26 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/i
1499
917
  render(): JSX.Element;
1500
918
  }
1501
919
  }
920
+ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/color3LineComponent" {
921
+ import * as React from "react";
922
+ import { Observable } from "@babylonjs/core/Misc/observable";
923
+ import { PropertyChangedEvent } from "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent";
924
+ import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
925
+ export interface IColor3LineComponentProps {
926
+ label: string;
927
+ target: any;
928
+ propertyName: string;
929
+ onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
930
+ isLinear?: boolean;
931
+ icon?: string;
932
+ lockObject?: LockObject;
933
+ iconLabel?: string;
934
+ onValueChange?: (value: string) => void;
935
+ }
936
+ export class Color3LineComponent extends React.Component<IColor3LineComponentProps> {
937
+ render(): JSX.Element;
938
+ }
939
+ }
1502
940
  declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/colorPickerPropertyGridComponent" {
1503
941
  import * as React from "react";
1504
942
  import { Observable } from "@babylonjs/core/Misc/observable";
@@ -1506,7 +944,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/c
1506
944
  import { ColorPicker } from "@babylonjs/gui/2D/controls/colorpicker";
1507
945
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1508
946
  interface IColorPickerPropertyGridComponentProps {
1509
- colorPicker: ColorPicker;
947
+ colorPickers: ColorPicker[];
1510
948
  lockObject: LockObject;
1511
949
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1512
950
  }
@@ -1522,12 +960,15 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/i
1522
960
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1523
961
  import { Image } from "@babylonjs/gui/2D/controls/image";
1524
962
  interface IImagePropertyGridComponentProps {
1525
- image: Image;
963
+ images: Image[];
1526
964
  lockObject: LockObject;
1527
965
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1528
966
  }
1529
967
  export class ImagePropertyGridComponent extends React.Component<IImagePropertyGridComponentProps> {
1530
968
  constructor(props: IImagePropertyGridComponentProps);
969
+ toggleAnimations(on: boolean): void;
970
+ getMaxCells(): number;
971
+ updateCellSize(): void;
1531
972
  render(): JSX.Element;
1532
973
  }
1533
974
  }
@@ -1538,7 +979,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/i
1538
979
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1539
980
  import { ImageBasedSlider } from "@babylonjs/gui/2D/controls/sliders/imageBasedSlider";
1540
981
  interface IImageBasedSliderPropertyGridComponentProps {
1541
- imageBasedSlider: ImageBasedSlider;
982
+ imageBasedSliders: ImageBasedSlider[];
1542
983
  lockObject: LockObject;
1543
984
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1544
985
  }
@@ -1554,7 +995,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/r
1554
995
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1555
996
  import { Rectangle } from "@babylonjs/gui/2D/controls/rectangle";
1556
997
  interface IRectanglePropertyGridComponentProps {
1557
- rectangle: Rectangle;
998
+ rectangles: Rectangle[];
1558
999
  lockObject: LockObject;
1559
1000
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1560
1001
  }
@@ -1570,7 +1011,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/s
1570
1011
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1571
1012
  import { StackPanel } from "@babylonjs/gui/2D/controls/stackPanel";
1572
1013
  interface IStackPanelPropertyGridComponentProps {
1573
- stackPanel: StackPanel;
1014
+ stackPanels: StackPanel[];
1574
1015
  lockObject: LockObject;
1575
1016
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1576
1017
  }
@@ -1586,7 +1027,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/g
1586
1027
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1587
1028
  import { Grid } from "@babylonjs/gui/2D/controls/grid";
1588
1029
  interface IGridPropertyGridComponentProps {
1589
- grid: Grid;
1030
+ grids: Grid[];
1590
1031
  lockObject: LockObject;
1591
1032
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1592
1033
  }
@@ -1622,7 +1063,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/s
1622
1063
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1623
1064
  import { ScrollViewer } from "@babylonjs/gui/2D/controls/scrollViewers/scrollViewer";
1624
1065
  interface IScrollViewerPropertyGridComponentProps {
1625
- scrollViewer: ScrollViewer;
1066
+ scrollViewers: ScrollViewer[];
1626
1067
  lockObject: LockObject;
1627
1068
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1628
1069
  }
@@ -1638,7 +1079,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/e
1638
1079
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1639
1080
  import { Ellipse } from "@babylonjs/gui/2D/controls/ellipse";
1640
1081
  interface IEllipsePropertyGridComponentProps {
1641
- ellipse: Ellipse;
1082
+ ellipses: Ellipse[];
1642
1083
  lockObject: LockObject;
1643
1084
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1644
1085
  }
@@ -1654,7 +1095,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/c
1654
1095
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1655
1096
  import { Checkbox } from "@babylonjs/gui/2D/controls/checkbox";
1656
1097
  interface ICheckboxPropertyGridComponentProps {
1657
- checkbox: Checkbox;
1098
+ checkboxes: Checkbox[];
1658
1099
  lockObject: LockObject;
1659
1100
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1660
1101
  }
@@ -1670,7 +1111,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/c
1670
1111
  import { Control } from "@babylonjs/gui/2D/controls/control";
1671
1112
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1672
1113
  interface IControlPropertyGridComponentProps {
1673
- control: Control;
1114
+ controls: Control[];
1674
1115
  lockObject: LockObject;
1675
1116
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1676
1117
  }
@@ -1707,7 +1148,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/d
1707
1148
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1708
1149
  import { DisplayGrid } from "@babylonjs/gui/2D/controls/displayGrid";
1709
1150
  interface IDisplayGridPropertyGridComponentProps {
1710
- displayGrid: DisplayGrid;
1151
+ displayGrids: DisplayGrid[];
1711
1152
  lockObject: LockObject;
1712
1153
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1713
1154
  }
@@ -1723,7 +1164,7 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyGrids/gui/b
1723
1164
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
1724
1165
  import { Rectangle } from "@babylonjs/gui/2D/controls/rectangle";
1725
1166
  interface IButtonPropertyGridComponentProps {
1726
- rectangle: Rectangle;
1167
+ rectangles: Rectangle[];
1727
1168
  lockObject: LockObject;
1728
1169
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
1729
1170
  onAddComponent: (newComponent: string) => void;
@@ -1750,22 +1191,18 @@ declare module "@babylonjs/gui-editor/guiNodeTools" {
1750
1191
  import { ImageBasedSlider } from "@babylonjs/gui/2D/controls/sliders/imageBasedSlider";
1751
1192
  export class GUINodeTools {
1752
1193
  static ImageControlDefaultUrl: string;
1753
- static CreateControlFromString(data: string): Grid | Rectangle | Line | Image | TextBlock | Slider | ImageBasedSlider | RadioButton | InputText | ColorPicker | StackPanel | Ellipse | Checkbox | DisplayGrid;
1194
+ static CreateControlFromString(data: string): Grid | Rectangle | Line | TextBlock | Image | Slider | ImageBasedSlider | RadioButton | InputText | ColorPicker | StackPanel | Ellipse | Checkbox | DisplayGrid;
1754
1195
  }
1755
1196
  }
1756
1197
  declare module "@babylonjs/gui-editor/components/propertyTab/propertyTabComponent" {
1757
1198
  import * as React from "react";
1758
1199
  import { GlobalState } from "@babylonjs/gui-editor/globalState";
1759
- import { Nullable } from "@babylonjs/core/types";
1760
1200
  import { Control } from "@babylonjs/gui/2D/controls/control";
1761
1201
  import { AdvancedDynamicTexture } from "@babylonjs/gui/2D/advancedDynamicTexture";
1762
1202
  interface IPropertyTabComponentProps {
1763
1203
  globalState: GlobalState;
1764
1204
  }
1765
- interface IPropertyTabComponentState {
1766
- currentNode: Nullable<Control>;
1767
- }
1768
- export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps, IPropertyTabComponentState> {
1205
+ export class PropertyTabComponent extends React.Component<IPropertyTabComponentProps> {
1769
1206
  private _onBuiltObserver;
1770
1207
  private _timerIntervalId;
1771
1208
  private _lockObject;
@@ -1779,8 +1216,13 @@ declare module "@babylonjs/gui-editor/components/propertyTab/propertyTabComponen
1779
1216
  saveToSnippetServerHelper: (content: string, adt: AdvancedDynamicTexture) => Promise<string>;
1780
1217
  saveToSnippetServer: () => Promise<void>;
1781
1218
  loadFromSnippet(): void;
1782
- renderProperties(): JSX.Element | null;
1783
- renderControlIcon(): string;
1219
+ renderNode(nodes: Control[]): JSX.Element;
1220
+ /**
1221
+ * returns the class name of a list of controls if they share a class, or an empty string if not
1222
+ */
1223
+ getControlsCommonClassName(nodes: Control[]): string;
1224
+ renderProperties(nodes: Control[]): JSX.Element | undefined;
1225
+ renderControlIcon(nodes: Control[]): string;
1784
1226
  render(): JSX.Element | null;
1785
1227
  }
1786
1228
  }
@@ -1811,13 +1253,20 @@ declare module "@babylonjs/gui-editor/sharedComponents/messageDialog" {
1811
1253
  declare module "@babylonjs/gui-editor/components/sceneExplorer/treeItemLabelComponent" {
1812
1254
  import * as React from "react";
1813
1255
  interface ITreeItemLabelComponentProps {
1814
- label: string;
1256
+ label?: string;
1815
1257
  onClick?: () => void;
1816
- color: string;
1258
+ onChange: (newValue: string) => void;
1259
+ bracket: string;
1260
+ renaming: boolean;
1261
+ setRenaming: (renaming: boolean) => void;
1262
+ }
1263
+ interface ITreeItemLabelState {
1264
+ value: string;
1817
1265
  }
1818
- export class TreeItemLabelComponent extends React.Component<ITreeItemLabelComponentProps> {
1266
+ export class TreeItemLabelComponent extends React.Component<ITreeItemLabelComponentProps, ITreeItemLabelState> {
1819
1267
  constructor(props: ITreeItemLabelComponentProps);
1820
1268
  onClick(): void;
1269
+ onBlur(): void;
1821
1270
  render(): JSX.Element;
1822
1271
  }
1823
1272
  }
@@ -1851,16 +1300,18 @@ declare module "@babylonjs/gui-editor/components/sceneExplorer/entities/gui/cont
1851
1300
  onClick: () => void;
1852
1301
  globalState: GlobalState;
1853
1302
  isHovered: boolean;
1854
- dragOverHover: boolean;
1303
+ isDragOver: boolean;
1855
1304
  dragOverLocation: DragOverLocation;
1856
1305
  }
1857
1306
  export class ControlTreeItemComponent extends React.Component<IControlTreeItemComponentProps, {
1858
1307
  isActive: boolean;
1859
1308
  isVisible: boolean;
1309
+ isRenaming: boolean;
1860
1310
  }> {
1861
1311
  constructor(props: IControlTreeItemComponentProps);
1862
1312
  highlight(): void;
1863
1313
  switchVisibility(): void;
1314
+ onRename(name: string): void;
1864
1315
  render(): JSX.Element;
1865
1316
  }
1866
1317
  }
@@ -1871,22 +1322,29 @@ declare module "@babylonjs/gui-editor/components/sceneExplorer/treeItemSelectabl
1871
1322
  import { DragOverLocation, GlobalState } from "@babylonjs/gui-editor/globalState";
1872
1323
  export interface ITreeItemSelectableComponentProps {
1873
1324
  entity: any;
1874
- selectedEntity?: any;
1325
+ selectedEntities: any[];
1875
1326
  mustExpand?: boolean;
1876
1327
  offset: number;
1877
1328
  globalState: GlobalState;
1878
1329
  extensibilityGroups?: IExplorerExtensibilityGroup[];
1879
1330
  filter: Nullable<string>;
1880
1331
  }
1881
- export class TreeItemSelectableComponent extends React.Component<ITreeItemSelectableComponentProps, {
1332
+ export interface ITreeItemSelectableComponentState {
1333
+ dragOver: boolean;
1882
1334
  isSelected: boolean;
1883
1335
  isHovered: boolean;
1884
1336
  dragOverLocation: DragOverLocation;
1885
- }> {
1886
- dragOverHover: boolean;
1337
+ }
1338
+ export class TreeItemSelectableComponent extends React.Component<ITreeItemSelectableComponentProps, ITreeItemSelectableComponentState> {
1887
1339
  private _onSelectionChangedObservable;
1888
1340
  private _onDraggingEndObservable;
1889
1341
  private _onDraggingStartObservable;
1342
+ /** flag flipped onDragEnter if dragOver is already true
1343
+ * prevents dragLeave from immediately setting dragOver to false
1344
+ * required to make dragging work as expected
1345
+ * see: see: https://github.com/transformation-dev/matrx/tree/master/packages/dragster
1346
+ */
1347
+ private _secondDragEnter;
1890
1348
  constructor(props: ITreeItemSelectableComponentProps);
1891
1349
  switchExpandedState(): void;
1892
1350
  shouldComponentUpdate(nextProps: ITreeItemSelectableComponentProps, nextState: {
@@ -1895,9 +1353,10 @@ declare module "@babylonjs/gui-editor/components/sceneExplorer/treeItemSelectabl
1895
1353
  scrollIntoView(): void;
1896
1354
  componentWillUnmount(): void;
1897
1355
  onSelect(): void;
1898
- renderChildren(isExpanded: boolean): (JSX.Element | null)[] | null;
1899
- render(): JSX.Element | null;
1356
+ renderChildren(isExpanded: boolean, offset?: boolean): (JSX.Element | null)[] | null;
1357
+ render(): JSX.Element | (JSX.Element | null)[] | null;
1900
1358
  dragOver(event: React.DragEvent<HTMLDivElement>): void;
1359
+ updateDragOverLocation(event: React.DragEvent<HTMLDivElement>): void;
1901
1360
  drop(): void;
1902
1361
  }
1903
1362
  }
@@ -1914,7 +1373,7 @@ declare module "@babylonjs/gui-editor/components/sceneExplorer/treeItemComponent
1914
1373
  forceSubitems?: boolean;
1915
1374
  globalState: GlobalState;
1916
1375
  entity?: any;
1917
- selectedEntity: any;
1376
+ selectedEntities: any[];
1918
1377
  extensibilityGroups?: IExplorerExtensibilityGroup[];
1919
1378
  contextMenuItems?: {
1920
1379
  label: string;
@@ -2024,15 +1483,100 @@ declare module "@babylonjs/gui-editor/components/commandBarComponent" {
2024
1483
  private _panning;
2025
1484
  private _zooming;
2026
1485
  private _selecting;
2027
- private _outlines;
2028
1486
  constructor(props: ICommandBarComponentProps);
2029
- private updateNodeOutline;
1487
+ render(): JSX.Element;
1488
+ }
1489
+ }
1490
+ declare module "@babylonjs/gui-editor/diagram/guiGizmo" {
1491
+ import { Control } from "@babylonjs/gui/2D/controls/control";
1492
+ import { Vector2 } from "@babylonjs/core/Maths/math.vector";
1493
+ import * as React from "react";
1494
+ import { GlobalState } from "@babylonjs/gui-editor/globalState";
1495
+ import { Rect } from "@babylonjs/gui-editor/diagram/coordinateHelper";
1496
+ export interface IGuiGizmoProps {
1497
+ globalState: GlobalState;
1498
+ control: Control;
1499
+ }
1500
+ enum ScalePointPosition {
1501
+ Top = -1,
1502
+ Left = -1,
1503
+ Center = 0,
1504
+ Right = 1,
1505
+ Bottom = 1
1506
+ }
1507
+ interface IScalePoint {
1508
+ position: Vector2;
1509
+ horizontalPosition: ScalePointPosition;
1510
+ verticalPosition: ScalePointPosition;
1511
+ rotation: number;
1512
+ isPivot: boolean;
1513
+ }
1514
+ interface IGuiGizmoState {
1515
+ canvasBounds: Rect;
1516
+ scalePoints: IScalePoint[];
1517
+ scalePointDragging: number;
1518
+ isRotating: boolean;
1519
+ }
1520
+ export class GuiGizmoComponent extends React.Component<IGuiGizmoProps, IGuiGizmoState> {
1521
+ private _storedValues;
1522
+ private _localBounds;
1523
+ private _rotation;
1524
+ private _gizmoUpdateObserver;
1525
+ private _pointerUpObserver;
1526
+ private _pointerMoveObserver;
1527
+ constructor(props: IGuiGizmoProps);
1528
+ componentWillUnmount(): void;
1529
+ /**
1530
+ * Update the gizmo's positions
1531
+ * @param force should the update be forced. otherwise it will be updated only when the pointer is down
1532
+ */
1533
+ updateGizmo(force?: boolean): void;
1534
+ private _onUp;
1535
+ private _onMove;
1536
+ private _rotate;
1537
+ private _modulo;
1538
+ private _dragLocalBounds;
1539
+ private _updateNodeFromLocalBounds;
1540
+ private _beginDraggingScalePoint;
1541
+ private _beginRotate;
1542
+ render(): JSX.Element;
1543
+ }
1544
+ }
1545
+ declare module "@babylonjs/gui-editor/diagram/guiGizmoWrapper" {
1546
+ import { Nullable } from "@babylonjs/core/types";
1547
+ import { Observer } from "@babylonjs/core/Misc/observable";
1548
+ import * as React from "react";
1549
+ import { GlobalState } from "@babylonjs/gui-editor/globalState";
1550
+ export interface IGizmoWrapperProps {
1551
+ globalState: GlobalState;
1552
+ }
1553
+ export class GizmoWrapper extends React.Component<IGizmoWrapperProps> {
1554
+ observer: Nullable<Observer<void>>;
1555
+ componentWillMount(): void;
1556
+ componentWillUnmount(): void;
1557
+ render(): JSX.Element;
1558
+ }
1559
+ }
1560
+ declare module "@babylonjs/gui-editor/diagram/artBoard" {
1561
+ import * as React from "react";
1562
+ import { GlobalState } from "@babylonjs/gui-editor/globalState";
1563
+ import { Rect } from "@babylonjs/gui-editor/diagram/coordinateHelper";
1564
+ interface IArtBoardProps {
1565
+ globalState: GlobalState;
1566
+ }
1567
+ interface IArtBoardState {
1568
+ bounds: Rect;
1569
+ }
1570
+ export class ArtBoardComponent extends React.Component<IArtBoardProps, IArtBoardState> {
1571
+ constructor(props: IArtBoardProps);
1572
+ update(): void;
2030
1573
  render(): JSX.Element;
2031
1574
  }
2032
1575
  }
2033
1576
  declare module "@babylonjs/gui-editor/workbenchEditor" {
2034
1577
  import * as React from "react";
2035
1578
  import { GlobalState } from "@babylonjs/gui-editor/globalState";
1579
+ import { Control } from "@babylonjs/gui/2D/controls/control";
2036
1580
  interface IGraphEditorProps {
2037
1581
  globalState: GlobalState;
2038
1582
  }
@@ -2072,7 +1616,7 @@ declare module "@babylonjs/gui-editor/workbenchEditor" {
2072
1616
  subItems?: string[];
2073
1617
  }[];
2074
1618
  createItems(): void;
2075
- onCreate(value: string): void;
1619
+ onCreate(value: string): Control;
2076
1620
  createToolbar(): JSX.Element;
2077
1621
  }
2078
1622
  }
@@ -2372,36 +1916,20 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/lines/booleanLineCompon
2372
1916
  declare module "@babylonjs/gui-editor/sharedUiComponents/lines/color4LineComponent" {
2373
1917
  import * as React from "react";
2374
1918
  import { Observable } from "@babylonjs/core/Misc/observable";
2375
- import { Color4 } from "@babylonjs/core/Maths/math.color";
2376
1919
  import { PropertyChangedEvent } from "@babylonjs/gui-editor/sharedUiComponents/propertyChangedEvent";
1920
+ import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
2377
1921
  export interface IColor4LineComponentProps {
2378
1922
  label: string;
2379
- target: any;
1923
+ target?: any;
2380
1924
  propertyName: string;
2381
1925
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
2382
1926
  onChange?: () => void;
2383
1927
  isLinear?: boolean;
2384
1928
  icon?: string;
2385
1929
  iconLabel?: string;
1930
+ lockObject?: LockObject;
2386
1931
  }
2387
- export class Color4LineComponent extends React.Component<IColor4LineComponentProps, {
2388
- isExpanded: boolean;
2389
- color: Color4;
2390
- }> {
2391
- private _localChange;
2392
- constructor(props: IColor4LineComponentProps);
2393
- shouldComponentUpdate(nextProps: IColor4LineComponentProps, nextState: {
2394
- color: Color4;
2395
- }): boolean;
2396
- setPropertyValue(newColor: Color4): void;
2397
- onChange(newValue: string): void;
2398
- switchExpandState(): void;
2399
- raiseOnPropertyChanged(previousValue: Color4): void;
2400
- updateStateR(value: number): void;
2401
- updateStateG(value: number): void;
2402
- updateStateB(value: number): void;
2403
- updateStateA(value: number): void;
2404
- copyToClipboard(): void;
1932
+ export class Color4LineComponent extends React.Component<IColor4LineComponentProps> {
2405
1933
  render(): JSX.Element;
2406
1934
  }
2407
1935
  }
@@ -2680,14 +2208,15 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/gui/
2680
2208
  import { Control } from "@babylonjs/gui/2D/controls/control";
2681
2209
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
2682
2210
  interface ICommonControlPropertyGridComponentProps {
2683
- control: Control;
2211
+ controls?: Control[];
2212
+ control?: Control;
2684
2213
  lockObject: LockObject;
2685
2214
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
2686
2215
  }
2687
2216
  export class CommonControlPropertyGridComponent extends React.Component<ICommonControlPropertyGridComponentProps> {
2688
2217
  constructor(props: ICommonControlPropertyGridComponentProps);
2689
- renderGridInformation(): JSX.Element | null;
2690
- render(): JSX.Element;
2218
+ renderGridInformation(control: Control): JSX.Element | null;
2219
+ render(): JSX.Element | undefined;
2691
2220
  }
2692
2221
  }
2693
2222
  declare module "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/gui/checkboxPropertyGridComponent" {
@@ -2844,7 +2373,7 @@ declare module "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/gui/
2844
2373
  import { LockObject } from "@babylonjs/gui-editor/sharedUiComponents/tabs/propertyGrids/lockObject";
2845
2374
  import { RadioButton } from "@babylonjs/gui/2D/controls/radioButton";
2846
2375
  interface IRadioButtonPropertyGridComponentProps {
2847
- radioButton: RadioButton;
2376
+ radioButtons: RadioButton[];
2848
2377
  lockObject: LockObject;
2849
2378
  onPropertyChangedObservable?: Observable<PropertyChangedEvent>;
2850
2379
  }