@babylonjs/gui 5.0.0-beta.9 → 5.0.0-rc.10

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.
Files changed (305) hide show
  1. package/2D/adtInstrumentation.d.ts +52 -52
  2. package/2D/adtInstrumentation.js +126 -126
  3. package/2D/adtInstrumentation.js.map +1 -1
  4. package/2D/advancedDynamicTexture.d.ts +449 -412
  5. package/2D/advancedDynamicTexture.js +1318 -1239
  6. package/2D/advancedDynamicTexture.js.map +1 -1
  7. package/2D/controls/button.d.ts +135 -97
  8. package/2D/controls/button.js +276 -238
  9. package/2D/controls/button.js.map +1 -1
  10. package/2D/controls/checkbox.d.ts +59 -51
  11. package/2D/controls/checkbox.js +188 -178
  12. package/2D/controls/checkbox.js.map +1 -1
  13. package/2D/controls/colorpicker.d.ts +103 -90
  14. package/2D/controls/colorpicker.js +1417 -1400
  15. package/2D/controls/colorpicker.js.map +1 -1
  16. package/2D/controls/container.d.ts +175 -130
  17. package/2D/controls/container.js +570 -525
  18. package/2D/controls/container.js.map +1 -1
  19. package/2D/controls/control.d.ts +866 -743
  20. package/2D/controls/control.js +2433 -2308
  21. package/2D/controls/control.js.map +1 -1
  22. package/2D/controls/displayGrid.d.ts +53 -55
  23. package/2D/controls/displayGrid.js +245 -245
  24. package/2D/controls/displayGrid.js.map +1 -1
  25. package/2D/controls/ellipse.d.ts +21 -21
  26. package/2D/controls/ellipse.js +85 -85
  27. package/2D/controls/ellipse.js.map +1 -1
  28. package/2D/controls/focusableButton.d.ts +59 -52
  29. package/2D/controls/focusableButton.js +99 -92
  30. package/2D/controls/focusableButton.js.map +1 -1
  31. package/2D/controls/focusableControl.d.ts +34 -34
  32. package/2D/controls/focusableControl.js +1 -1
  33. package/2D/controls/focusableControl.js.map +1 -1
  34. package/2D/controls/grid.d.ts +139 -135
  35. package/2D/controls/grid.js +529 -525
  36. package/2D/controls/grid.js.map +1 -1
  37. package/2D/controls/image.d.ts +204 -197
  38. package/2D/controls/image.js +887 -879
  39. package/2D/controls/image.js.map +1 -1
  40. package/2D/controls/index.d.ts +29 -29
  41. package/2D/controls/index.js +29 -29
  42. package/2D/controls/index.js.map +1 -1
  43. package/2D/controls/inputPassword.d.ts +9 -8
  44. package/2D/controls/inputPassword.js +28 -25
  45. package/2D/controls/inputPassword.js.map +1 -1
  46. package/2D/controls/inputText.d.ts +201 -180
  47. package/2D/controls/inputText.js +1119 -1095
  48. package/2D/controls/inputText.js.map +1 -1
  49. package/2D/controls/line.d.ts +66 -66
  50. package/2D/controls/line.js +271 -271
  51. package/2D/controls/line.js.map +1 -1
  52. package/2D/controls/multiLine.d.ts +75 -77
  53. package/2D/controls/multiLine.js +262 -262
  54. package/2D/controls/multiLine.js.map +1 -1
  55. package/2D/controls/radioButton.d.ts +49 -49
  56. package/2D/controls/radioButton.js +205 -205
  57. package/2D/controls/radioButton.js.map +1 -1
  58. package/2D/controls/rectangle.d.ts +29 -29
  59. package/2D/controls/rectangle.js +150 -150
  60. package/2D/controls/rectangle.js.map +1 -1
  61. package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -175
  62. package/2D/controls/scrollViewers/scrollViewer.js +677 -676
  63. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  64. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -45
  65. package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -263
  66. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  67. package/2D/controls/selector.d.ts +263 -209
  68. package/2D/controls/selector.js +692 -629
  69. package/2D/controls/selector.js.map +1 -1
  70. package/2D/controls/sliders/baseSlider.d.ts +82 -78
  71. package/2D/controls/sliders/baseSlider.js +347 -343
  72. package/2D/controls/sliders/baseSlider.js.map +1 -1
  73. package/2D/controls/sliders/imageBasedSlider.d.ts +49 -47
  74. package/2D/controls/sliders/imageBasedSlider.js +192 -188
  75. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  76. package/2D/controls/sliders/imageScrollBar.d.ts +65 -61
  77. package/2D/controls/sliders/imageScrollBar.js +263 -256
  78. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  79. package/2D/controls/sliders/scrollBar.d.ts +38 -34
  80. package/2D/controls/sliders/scrollBar.js +143 -136
  81. package/2D/controls/sliders/scrollBar.js.map +1 -1
  82. package/2D/controls/sliders/slider.d.ts +35 -37
  83. package/2D/controls/sliders/slider.js +271 -271
  84. package/2D/controls/sliders/slider.js.map +1 -1
  85. package/2D/controls/stackPanel.d.ts +64 -56
  86. package/2D/controls/stackPanel.js +246 -236
  87. package/2D/controls/stackPanel.js.map +1 -1
  88. package/2D/controls/statics.d.ts +6 -6
  89. package/2D/controls/statics.js +49 -47
  90. package/2D/controls/statics.js.map +1 -1
  91. package/2D/controls/textBlock.d.ts +175 -171
  92. package/2D/controls/textBlock.js +603 -588
  93. package/2D/controls/textBlock.js.map +1 -1
  94. package/2D/controls/textWrapper.d.ts +13 -13
  95. package/2D/controls/textWrapper.js +101 -101
  96. package/2D/controls/textWrapper.js.map +1 -1
  97. package/2D/controls/toggleButton.d.ts +117 -83
  98. package/2D/controls/toggleButton.js +268 -234
  99. package/2D/controls/toggleButton.js.map +1 -1
  100. package/2D/controls/virtualKeyboard.d.ts +96 -96
  101. package/2D/controls/virtualKeyboard.js +256 -256
  102. package/2D/controls/virtualKeyboard.js.map +1 -1
  103. package/2D/index.d.ts +9 -9
  104. package/2D/index.js +10 -9
  105. package/2D/index.js.map +1 -1
  106. package/2D/math2D.d.ts +117 -117
  107. package/2D/math2D.js +221 -221
  108. package/2D/math2D.js.map +1 -1
  109. package/2D/measure.d.ts +77 -77
  110. package/2D/measure.js +139 -149
  111. package/2D/measure.js.map +1 -1
  112. package/2D/multiLinePoint.d.ts +47 -47
  113. package/2D/multiLinePoint.js +127 -127
  114. package/2D/multiLinePoint.js.map +1 -1
  115. package/2D/style.d.ts +46 -46
  116. package/2D/style.js +97 -97
  117. package/2D/style.js.map +1 -1
  118. package/2D/valueAndUnit.d.ts +89 -89
  119. package/2D/valueAndUnit.js +226 -222
  120. package/2D/valueAndUnit.js.map +1 -1
  121. package/2D/xmlLoader.d.ts +60 -60
  122. package/2D/xmlLoader.js +348 -341
  123. package/2D/xmlLoader.js.map +1 -1
  124. package/3D/behaviors/defaultBehavior.d.ts +73 -73
  125. package/3D/behaviors/defaultBehavior.js +121 -121
  126. package/3D/behaviors/defaultBehavior.js.map +1 -1
  127. package/3D/controls/abstractButton3D.d.ts +15 -15
  128. package/3D/controls/abstractButton3D.js +25 -25
  129. package/3D/controls/abstractButton3D.js.map +1 -1
  130. package/3D/controls/button3D.d.ts +30 -30
  131. package/3D/controls/button3D.js +93 -93
  132. package/3D/controls/button3D.js.map +1 -1
  133. package/3D/controls/container3D.d.ts +72 -72
  134. package/3D/controls/container3D.js +139 -140
  135. package/3D/controls/container3D.js.map +1 -1
  136. package/3D/controls/contentDisplay3D.d.ts +30 -30
  137. package/3D/controls/contentDisplay3D.js +79 -78
  138. package/3D/controls/contentDisplay3D.js.map +1 -1
  139. package/3D/controls/control3D.d.ts +201 -165
  140. package/3D/controls/control3D.js +445 -408
  141. package/3D/controls/control3D.js.map +1 -1
  142. package/3D/controls/cylinderPanel.d.ts +17 -17
  143. package/3D/controls/cylinderPanel.js +66 -66
  144. package/3D/controls/cylinderPanel.js.map +1 -1
  145. package/3D/controls/handMenu.d.ts +28 -28
  146. package/3D/controls/handMenu.js +47 -47
  147. package/3D/controls/handMenu.js.map +1 -1
  148. package/3D/controls/holographicBackplate.d.ts +49 -48
  149. package/3D/controls/holographicBackplate.js +120 -120
  150. package/3D/controls/holographicBackplate.js.map +1 -1
  151. package/3D/controls/holographicButton.d.ts +84 -83
  152. package/3D/controls/holographicButton.js +339 -338
  153. package/3D/controls/holographicButton.js.map +1 -1
  154. package/3D/controls/holographicSlate.d.ts +131 -118
  155. package/3D/controls/holographicSlate.js +431 -369
  156. package/3D/controls/holographicSlate.js.map +1 -1
  157. package/3D/controls/index.d.ts +21 -21
  158. package/3D/controls/index.js +21 -21
  159. package/3D/controls/index.js.map +1 -1
  160. package/3D/controls/meshButton3D.d.ts +21 -21
  161. package/3D/controls/meshButton3D.js +62 -61
  162. package/3D/controls/meshButton3D.js.map +1 -1
  163. package/3D/controls/nearMenu.d.ts +44 -44
  164. package/3D/controls/nearMenu.js +114 -112
  165. package/3D/controls/nearMenu.js.map +1 -1
  166. package/3D/controls/planePanel.d.ts +9 -9
  167. package/3D/controls/planePanel.js +36 -36
  168. package/3D/controls/planePanel.js.map +1 -1
  169. package/3D/controls/scatterPanel.d.ts +18 -18
  170. package/3D/controls/scatterPanel.js +108 -108
  171. package/3D/controls/scatterPanel.js.map +1 -1
  172. package/3D/controls/slider3D.d.ts +81 -80
  173. package/3D/controls/slider3D.js +268 -267
  174. package/3D/controls/slider3D.js.map +1 -1
  175. package/3D/controls/spherePanel.d.ts +17 -17
  176. package/3D/controls/spherePanel.js +67 -67
  177. package/3D/controls/spherePanel.js.map +1 -1
  178. package/3D/controls/stackPanel3D.d.ts +22 -22
  179. package/3D/controls/stackPanel3D.js +107 -107
  180. package/3D/controls/stackPanel3D.js.map +1 -1
  181. package/3D/controls/touchButton3D.d.ts +80 -64
  182. package/3D/controls/touchButton3D.js +233 -188
  183. package/3D/controls/touchButton3D.js.map +1 -1
  184. package/3D/controls/touchHolographicButton.d.ts +110 -104
  185. package/3D/controls/touchHolographicButton.js +445 -432
  186. package/3D/controls/touchHolographicButton.js.map +1 -1
  187. package/3D/controls/touchHolographicMenu.d.ts +61 -61
  188. package/3D/controls/touchHolographicMenu.js +149 -148
  189. package/3D/controls/touchHolographicMenu.js.map +1 -1
  190. package/3D/controls/touchMeshButton3D.d.ts +21 -22
  191. package/3D/controls/touchMeshButton3D.js +62 -62
  192. package/3D/controls/touchMeshButton3D.js.map +1 -1
  193. package/3D/controls/volumeBasedPanel.d.ts +53 -52
  194. package/3D/controls/volumeBasedPanel.js +174 -174
  195. package/3D/controls/volumeBasedPanel.js.map +1 -1
  196. package/3D/gizmos/gizmoHandle.d.ts +108 -108
  197. package/3D/gizmos/gizmoHandle.js +209 -209
  198. package/3D/gizmos/gizmoHandle.js.map +1 -1
  199. package/3D/gizmos/index.d.ts +2 -2
  200. package/3D/gizmos/index.js +2 -2
  201. package/3D/gizmos/index.js.map +1 -1
  202. package/3D/gizmos/slateGizmo.d.ts +57 -59
  203. package/3D/gizmos/slateGizmo.js +369 -363
  204. package/3D/gizmos/slateGizmo.js.map +1 -1
  205. package/3D/gui3DManager.d.ts +94 -94
  206. package/3D/gui3DManager.js +257 -257
  207. package/3D/gui3DManager.js.map +1 -1
  208. package/3D/index.d.ts +5 -5
  209. package/3D/index.js +6 -5
  210. package/3D/index.js.map +1 -1
  211. package/3D/materials/fluent/fluentMaterial.d.ts +91 -90
  212. package/3D/materials/fluent/fluentMaterial.js +292 -281
  213. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  214. package/3D/materials/fluent/index.d.ts +1 -1
  215. package/3D/materials/fluent/index.js +1 -1
  216. package/3D/materials/fluent/index.js.map +1 -1
  217. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
  218. package/3D/materials/fluent/shaders/fluent.fragment.js +8 -6
  219. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -1
  220. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
  221. package/3D/materials/fluent/shaders/fluent.vertex.js +8 -6
  222. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -1
  223. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -154
  224. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -434
  225. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  226. package/3D/materials/fluentBackplate/index.d.ts +1 -1
  227. package/3D/materials/fluentBackplate/index.js +1 -1
  228. package/3D/materials/fluentBackplate/index.js.map +1 -1
  229. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
  230. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -6
  231. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -1
  232. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
  233. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -6
  234. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -1
  235. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -189
  236. package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -537
  237. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  238. package/3D/materials/fluentButton/index.d.ts +1 -1
  239. package/3D/materials/fluentButton/index.js +1 -1
  240. package/3D/materials/fluentButton/index.js.map +1 -1
  241. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
  242. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -6
  243. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -1
  244. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
  245. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -6
  246. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -1
  247. package/3D/materials/fluentMaterial.d.ts +4 -4
  248. package/3D/materials/fluentMaterial.js +4 -4
  249. package/3D/materials/fluentMaterial.js.map +1 -1
  250. package/3D/materials/handle/handleMaterial.d.ts +68 -68
  251. package/3D/materials/handle/handleMaterial.js +126 -126
  252. package/3D/materials/handle/handleMaterial.js.map +1 -1
  253. package/3D/materials/handle/index.d.ts +1 -1
  254. package/3D/materials/handle/index.js +1 -1
  255. package/3D/materials/handle/index.js.map +1 -1
  256. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
  257. package/3D/materials/handle/shaders/handle.fragment.js +8 -6
  258. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -1
  259. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
  260. package/3D/materials/handle/shaders/handle.vertex.js +8 -6
  261. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -1
  262. package/3D/materials/index.d.ts +5 -5
  263. package/3D/materials/index.js +6 -5
  264. package/3D/materials/index.js.map +1 -1
  265. package/3D/materials/mrdl/index.d.ts +3 -3
  266. package/3D/materials/mrdl/index.js +3 -3
  267. package/3D/materials/mrdl/index.js.map +1 -1
  268. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -147
  269. package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -409
  270. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  271. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +334 -333
  272. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -786
  273. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  274. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +334 -333
  275. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -786
  276. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  277. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
  278. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -6
  279. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -1
  280. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
  281. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -6
  282. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -1
  283. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
  284. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -6
  285. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -1
  286. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
  287. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -6
  288. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -1
  289. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
  290. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -6
  291. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -1
  292. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
  293. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -6
  294. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -1
  295. package/3D/vector3WithInfo.d.ts +16 -16
  296. package/3D/vector3WithInfo.js +23 -23
  297. package/3D/vector3WithInfo.js.map +1 -1
  298. package/index.d.ts +2 -2
  299. package/index.js +3 -2
  300. package/index.js.map +1 -1
  301. package/legacy/legacy.d.ts +1 -1
  302. package/legacy/legacy.js +14 -13
  303. package/legacy/legacy.js.map +1 -1
  304. package/package.json +21 -328
  305. package/readme.md +2 -2
@@ -1,526 +1,530 @@
1
- import { __extends } from "tslib";
2
- import { Container } from "./container.js";
3
- import { ValueAndUnit } from "../valueAndUnit.js";
4
- import { Control } from "./control.js";
5
- import { Tools } from '@babylonjs/core/Misc/tools.js';
6
- import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
7
- /**
8
- * Class used to create a 2D grid container
9
- */
10
- var Grid = /** @class */ (function (_super) {
11
- __extends(Grid, _super);
12
- /**
13
- * Creates a new Grid
14
- * @param name defines control name
15
- */
16
- function Grid(name) {
17
- var _this = _super.call(this, name) || this;
18
- _this.name = name;
19
- _this._rowDefinitions = new Array();
20
- _this._rowDefinitionObservers = [];
21
- _this._columnDefinitions = new Array();
22
- _this._columnDefinitionObservers = [];
23
- _this._cells = {};
24
- _this._childControls = new Array();
25
- return _this;
26
- }
27
- Object.defineProperty(Grid.prototype, "columnCount", {
28
- /**
29
- * Gets the number of columns
30
- */
31
- get: function () {
32
- return this._columnDefinitions.length;
33
- },
34
- enumerable: false,
35
- configurable: true
36
- });
37
- Object.defineProperty(Grid.prototype, "rowCount", {
38
- /**
39
- * Gets the number of rows
40
- */
41
- get: function () {
42
- return this._rowDefinitions.length;
43
- },
44
- enumerable: false,
45
- configurable: true
46
- });
47
- Object.defineProperty(Grid.prototype, "children", {
48
- /** Gets the list of children */
49
- get: function () {
50
- return this._childControls;
51
- },
52
- enumerable: false,
53
- configurable: true
54
- });
55
- Object.defineProperty(Grid.prototype, "cells", {
56
- /** Gets the list of cells (e.g. the containers) */
57
- get: function () {
58
- return this._cells;
59
- },
60
- enumerable: false,
61
- configurable: true
62
- });
63
- /**
64
- * Gets the definition of a specific row
65
- * @param index defines the index of the row
66
- * @returns the row definition
67
- */
68
- Grid.prototype.getRowDefinition = function (index) {
69
- if (index < 0 || index >= this._rowDefinitions.length) {
70
- return null;
71
- }
72
- return this._rowDefinitions[index];
73
- };
74
- /**
75
- * Gets the definition of a specific column
76
- * @param index defines the index of the column
77
- * @returns the column definition
78
- */
79
- Grid.prototype.getColumnDefinition = function (index) {
80
- if (index < 0 || index >= this._columnDefinitions.length) {
81
- return null;
82
- }
83
- return this._columnDefinitions[index];
84
- };
85
- /**
86
- * Adds a new row to the grid
87
- * @param height defines the height of the row (either in pixel or a value between 0 and 1)
88
- * @param isPixel defines if the height is expressed in pixel (or in percentage)
89
- * @returns the current grid
90
- */
91
- Grid.prototype.addRowDefinition = function (height, isPixel) {
92
- var _this = this;
93
- if (isPixel === void 0) { isPixel = false; }
94
- this._rowDefinitions.push(new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));
95
- this._rowDefinitionObservers.push(this._rowDefinitions[this.rowCount - 1].onChangedObservable.add(function () { return _this._markAsDirty(); }));
96
- this._markAsDirty();
97
- return this;
98
- };
99
- /**
100
- * Adds a new column to the grid
101
- * @param width defines the width of the column (either in pixel or a value between 0 and 1)
102
- * @param isPixel defines if the width is expressed in pixel (or in percentage)
103
- * @returns the current grid
104
- */
105
- Grid.prototype.addColumnDefinition = function (width, isPixel) {
106
- var _this = this;
107
- if (isPixel === void 0) { isPixel = false; }
108
- this._columnDefinitions.push(new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));
109
- this._columnDefinitionObservers.push(this._columnDefinitions[this.columnCount - 1].onChangedObservable.add(function () { return _this._markAsDirty(); }));
110
- this._markAsDirty();
111
- return this;
112
- };
113
- /**
114
- * Update a row definition
115
- * @param index defines the index of the row to update
116
- * @param height defines the height of the row (either in pixel or a value between 0 and 1)
117
- * @param isPixel defines if the weight is expressed in pixel (or in percentage)
118
- * @returns the current grid
119
- */
120
- Grid.prototype.setRowDefinition = function (index, height, isPixel) {
121
- var _this = this;
122
- if (isPixel === void 0) { isPixel = false; }
123
- if (index < 0 || index >= this._rowDefinitions.length) {
124
- return this;
125
- }
126
- var current = this._rowDefinitions[index];
127
- if (current && current.isPixel === isPixel && current.value === height) {
128
- return this;
129
- }
130
- this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
131
- this._rowDefinitions[index] = new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);
132
- this._rowDefinitionObservers[index] = this._rowDefinitions[index].onChangedObservable.add(function () { return _this._markAsDirty(); });
133
- this._markAsDirty();
134
- return this;
135
- };
136
- /**
137
- * Update a column definition
138
- * @param index defines the index of the column to update
139
- * @param width defines the width of the column (either in pixel or a value between 0 and 1)
140
- * @param isPixel defines if the width is expressed in pixel (or in percentage)
141
- * @returns the current grid
142
- */
143
- Grid.prototype.setColumnDefinition = function (index, width, isPixel) {
144
- var _this = this;
145
- if (isPixel === void 0) { isPixel = false; }
146
- if (index < 0 || index >= this._columnDefinitions.length) {
147
- return this;
148
- }
149
- var current = this._columnDefinitions[index];
150
- if (current && current.isPixel === isPixel && current.value === width) {
151
- return this;
152
- }
153
- this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
154
- this._columnDefinitions[index] = new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);
155
- this._columnDefinitionObservers[index] = this._columnDefinitions[index].onChangedObservable.add(function () { return _this._markAsDirty(); });
156
- this._markAsDirty();
157
- return this;
158
- };
159
- /**
160
- * Gets the list of children stored in a specific cell
161
- * @param row defines the row to check
162
- * @param column defines the column to check
163
- * @returns the list of controls
164
- */
165
- Grid.prototype.getChildrenAt = function (row, column) {
166
- var cell = this._cells["".concat(row, ":").concat(column)];
167
- if (!cell) {
168
- return null;
169
- }
170
- return cell.children;
171
- };
172
- /**
173
- * Gets a string representing the child cell info (row x column)
174
- * @param child defines the control to get info from
175
- * @returns a string containing the child cell info (row x column)
176
- */
177
- Grid.prototype.getChildCellInfo = function (child) {
178
- return child._tag;
179
- };
180
- Grid.prototype._removeCell = function (cell, key) {
181
- if (!cell) {
182
- return;
183
- }
184
- _super.prototype.removeControl.call(this, cell);
185
- for (var _i = 0, _a = cell.children; _i < _a.length; _i++) {
186
- var control = _a[_i];
187
- var childIndex = this._childControls.indexOf(control);
188
- if (childIndex !== -1) {
189
- this._childControls.splice(childIndex, 1);
190
- }
191
- }
192
- delete this._cells[key];
193
- };
194
- Grid.prototype._offsetCell = function (previousKey, key) {
195
- if (!this._cells[key]) {
196
- return;
197
- }
198
- this._cells[previousKey] = this._cells[key];
199
- for (var _i = 0, _a = this._cells[previousKey].children; _i < _a.length; _i++) {
200
- var control = _a[_i];
201
- control._tag = previousKey;
202
- }
203
- delete this._cells[key];
204
- };
205
- /**
206
- * Remove a column definition at specified index
207
- * @param index defines the index of the column to remove
208
- * @returns the current grid
209
- */
210
- Grid.prototype.removeColumnDefinition = function (index) {
211
- if (index < 0 || index >= this._columnDefinitions.length) {
212
- return this;
213
- }
214
- for (var x = 0; x < this._rowDefinitions.length; x++) {
215
- var key = "".concat(x, ":").concat(index);
216
- var cell = this._cells[key];
217
- this._removeCell(cell, key);
218
- }
219
- for (var x = 0; x < this._rowDefinitions.length; x++) {
220
- for (var y = index + 1; y < this._columnDefinitions.length; y++) {
221
- var previousKey = "".concat(x, ":").concat(y - 1);
222
- var key = "".concat(x, ":").concat(y);
223
- this._offsetCell(previousKey, key);
224
- }
225
- }
226
- this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
227
- this._columnDefinitions.splice(index, 1);
228
- this._columnDefinitionObservers.splice(index, 1);
229
- this._markAsDirty();
230
- return this;
231
- };
232
- /**
233
- * Remove a row definition at specified index
234
- * @param index defines the index of the row to remove
235
- * @returns the current grid
236
- */
237
- Grid.prototype.removeRowDefinition = function (index) {
238
- if (index < 0 || index >= this._rowDefinitions.length) {
239
- return this;
240
- }
241
- for (var y = 0; y < this._columnDefinitions.length; y++) {
242
- var key = "".concat(index, ":").concat(y);
243
- var cell = this._cells[key];
244
- this._removeCell(cell, key);
245
- }
246
- for (var y = 0; y < this._columnDefinitions.length; y++) {
247
- for (var x = index + 1; x < this._rowDefinitions.length; x++) {
248
- var previousKey = "".concat(x - 1, ":").concat(y);
249
- var key = "".concat(x, ":").concat(y);
250
- this._offsetCell(previousKey, key);
251
- }
252
- }
253
- this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
254
- this._rowDefinitions.splice(index, 1);
255
- this._rowDefinitionObservers.splice(index, 1);
256
- this._markAsDirty();
257
- return this;
258
- };
259
- /**
260
- * Adds a new control to the current grid
261
- * @param control defines the control to add
262
- * @param row defines the row where to add the control (0 by default)
263
- * @param column defines the column where to add the control (0 by default)
264
- * @returns the current grid
265
- */
266
- Grid.prototype.addControl = function (control, row, column) {
267
- if (row === void 0) { row = 0; }
268
- if (column === void 0) { column = 0; }
269
- if (this._rowDefinitions.length === 0) {
270
- // Add default row definition
271
- this.addRowDefinition(1, false);
272
- }
273
- if (this._columnDefinitions.length === 0) {
274
- // Add default column definition
275
- this.addColumnDefinition(1, false);
276
- }
277
- if (this._childControls.indexOf(control) !== -1) {
278
- Tools.Warn("Control (Name:".concat(control.name, ", UniqueId:").concat(control.uniqueId, ") is already associated with this grid. You must remove it before reattaching it"));
279
- return this;
280
- }
281
- var x = Math.min(row, this._rowDefinitions.length - 1);
282
- var y = Math.min(column, this._columnDefinitions.length - 1);
283
- var key = "".concat(x, ":").concat(y);
284
- var goodContainer = this._cells[key];
285
- if (!goodContainer) {
286
- goodContainer = new Container(key);
287
- this._cells[key] = goodContainer;
288
- goodContainer.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;
289
- goodContainer.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;
290
- _super.prototype.addControl.call(this, goodContainer);
291
- }
292
- goodContainer.addControl(control);
293
- this._childControls.push(control);
294
- control._tag = key;
295
- control.parent = this;
296
- this._markAsDirty();
297
- return this;
298
- };
299
- /**
300
- * Removes a control from the current container
301
- * @param control defines the control to remove
302
- * @returns the current container
303
- */
304
- Grid.prototype.removeControl = function (control) {
305
- var index = this._childControls.indexOf(control);
306
- if (index !== -1) {
307
- this._childControls.splice(index, 1);
308
- }
309
- var cell = this._cells[control._tag];
310
- if (cell) {
311
- cell.removeControl(control);
312
- control._tag = null;
313
- }
314
- this._markAsDirty();
315
- return this;
316
- };
317
- Grid.prototype._getTypeName = function () {
318
- return "Grid";
319
- };
320
- Grid.prototype._getGridDefinitions = function (definitionCallback) {
321
- var widths = [];
322
- var heights = [];
323
- var lefts = [];
324
- var tops = [];
325
- var availableWidth = this._currentMeasure.width;
326
- var globalWidthPercentage = 0;
327
- var availableHeight = this._currentMeasure.height;
328
- var globalHeightPercentage = 0;
329
- // Heights
330
- var index = 0;
331
- for (var _i = 0, _a = this._rowDefinitions; _i < _a.length; _i++) {
332
- var rowDefinition = _a[_i];
333
- if (rowDefinition.isPixel) {
334
- var height = rowDefinition.getValue(this._host);
335
- availableHeight -= height;
336
- heights[index] = height;
337
- }
338
- else {
339
- globalHeightPercentage += rowDefinition.value;
340
- }
341
- index++;
342
- }
343
- var top = 0;
344
- index = 0;
345
- for (var _b = 0, _c = this._rowDefinitions; _b < _c.length; _b++) {
346
- var rowDefinition = _c[_b];
347
- tops.push(top);
348
- if (!rowDefinition.isPixel) {
349
- var height = (rowDefinition.value / globalHeightPercentage) * availableHeight;
350
- top += height;
351
- heights[index] = height;
352
- }
353
- else {
354
- top += rowDefinition.getValue(this._host);
355
- }
356
- index++;
357
- }
358
- // Widths
359
- index = 0;
360
- for (var _d = 0, _e = this._columnDefinitions; _d < _e.length; _d++) {
361
- var columnDefinition = _e[_d];
362
- if (columnDefinition.isPixel) {
363
- var width = columnDefinition.getValue(this._host);
364
- availableWidth -= width;
365
- widths[index] = width;
366
- }
367
- else {
368
- globalWidthPercentage += columnDefinition.value;
369
- }
370
- index++;
371
- }
372
- var left = 0;
373
- index = 0;
374
- for (var _f = 0, _g = this._columnDefinitions; _f < _g.length; _f++) {
375
- var columnDefinition = _g[_f];
376
- lefts.push(left);
377
- if (!columnDefinition.isPixel) {
378
- var width = (columnDefinition.value / globalWidthPercentage) * availableWidth;
379
- left += width;
380
- widths[index] = width;
381
- }
382
- else {
383
- left += columnDefinition.getValue(this._host);
384
- }
385
- index++;
386
- }
387
- definitionCallback(lefts, tops, widths, heights);
388
- };
389
- Grid.prototype._additionalProcessing = function (parentMeasure, context) {
390
- var _this = this;
391
- this._getGridDefinitions(function (lefts, tops, widths, heights) {
392
- // Setting child sizes
393
- for (var key in _this._cells) {
394
- if (!_this._cells.hasOwnProperty(key)) {
395
- continue;
396
- }
397
- var split = key.split(":");
398
- var x = parseInt(split[0]);
399
- var y = parseInt(split[1]);
400
- var cell = _this._cells[key];
401
- cell.left = lefts[y] + "px";
402
- cell.top = tops[x] + "px";
403
- cell.width = widths[y] + "px";
404
- cell.height = heights[x] + "px";
405
- cell._left.ignoreAdaptiveScaling = true;
406
- cell._top.ignoreAdaptiveScaling = true;
407
- cell._width.ignoreAdaptiveScaling = true;
408
- cell._height.ignoreAdaptiveScaling = true;
409
- }
410
- });
411
- _super.prototype._additionalProcessing.call(this, parentMeasure, context);
412
- };
413
- Grid.prototype._flagDescendantsAsMatrixDirty = function () {
414
- for (var key in this._cells) {
415
- if (!this._cells.hasOwnProperty(key)) {
416
- continue;
417
- }
418
- var child = this._cells[key];
419
- child._markMatrixAsDirty();
420
- }
421
- };
422
- Grid.prototype._renderHighlightSpecific = function (context) {
423
- var _this = this;
424
- _super.prototype._renderHighlightSpecific.call(this, context);
425
- this._getGridDefinitions(function (lefts, tops, widths, heights) {
426
- // Columns
427
- for (var index = 0; index < lefts.length; index++) {
428
- var left = _this._currentMeasure.left + lefts[index] + widths[index];
429
- context.beginPath();
430
- context.moveTo(left, _this._currentMeasure.top);
431
- context.lineTo(left, _this._currentMeasure.top + _this._currentMeasure.height);
432
- context.stroke();
433
- }
434
- // Rows
435
- for (var index = 0; index < tops.length; index++) {
436
- var top_1 = _this._currentMeasure.top + tops[index] + heights[index];
437
- context.beginPath();
438
- context.moveTo(_this._currentMeasure.left, top_1);
439
- context.lineTo(_this._currentMeasure.left + _this._currentMeasure.width, top_1);
440
- context.stroke();
441
- }
442
- });
443
- context.restore();
444
- };
445
- /** Releases associated resources */
446
- Grid.prototype.dispose = function () {
447
- _super.prototype.dispose.call(this);
448
- for (var _i = 0, _a = this._childControls; _i < _a.length; _i++) {
449
- var control = _a[_i];
450
- control.dispose();
451
- }
452
- for (var index = 0; index < this._rowDefinitions.length; index++) {
453
- this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
454
- }
455
- for (var index = 0; index < this._columnDefinitions.length; index++) {
456
- this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
457
- }
458
- this._rowDefinitionObservers = [];
459
- this._rowDefinitions = [];
460
- this._columnDefinitionObservers = [];
461
- this._columnDefinitions = [];
462
- this._cells = {};
463
- this._childControls = [];
464
- };
465
- /**
466
- * Serializes the current control
467
- * @param serializationObject defined the JSON serialized object
468
- */
469
- Grid.prototype.serialize = function (serializationObject) {
470
- _super.prototype.serialize.call(this, serializationObject);
471
- serializationObject.columnCount = this.columnCount;
472
- serializationObject.rowCount = this.rowCount;
473
- serializationObject.columns = [];
474
- serializationObject.rows = [];
475
- serializationObject.tags = [];
476
- for (var i = 0; i < this.columnCount; ++i) {
477
- var cd = this.getColumnDefinition(i);
478
- var childSerializationObject = { value: cd === null || cd === void 0 ? void 0 : cd.getValue(this.host), unit: cd === null || cd === void 0 ? void 0 : cd.unit };
479
- serializationObject.columns.push(childSerializationObject);
480
- }
481
- for (var i = 0; i < this.rowCount; ++i) {
482
- var rd = this.getRowDefinition(i);
483
- var childSerializationObject = { value: rd === null || rd === void 0 ? void 0 : rd.getValue(this.host), unit: rd === null || rd === void 0 ? void 0 : rd.unit };
484
- serializationObject.rows.push(childSerializationObject);
485
- }
486
- this.children.forEach(function (child) {
487
- serializationObject.tags.push(child._tag);
488
- });
489
- };
490
- /** @hidden */
491
- Grid.prototype._parseFromContent = function (serializedObject, host) {
492
- _super.prototype._parseFromContent.call(this, serializedObject, host);
493
- var children = [];
494
- this.children.forEach(function (child) {
495
- children.push(child);
496
- });
497
- this.removeRowDefinition(0);
498
- this.removeColumnDefinition(0);
499
- for (var i = 0; i < serializedObject.columnCount; ++i) {
500
- var columnValue = serializedObject.columns[i].value;
501
- var unit = serializedObject.columns[i].unit;
502
- this.addColumnDefinition(columnValue, unit === 1 ? true : false);
503
- }
504
- for (var i = 0; i < serializedObject.rowCount; ++i) {
505
- var rowValue = serializedObject.rows[i].value;
506
- var unit = serializedObject.rows[i].unit;
507
- this.addRowDefinition(rowValue, unit === 1 ? true : false);
508
- }
509
- for (var i = 0; i < children.length; ++i) {
510
- var cellInfo = serializedObject.tags[i];
511
- var rowNumber = parseInt(cellInfo.substring(0, cellInfo.search(":")));
512
- if (isNaN(rowNumber)) {
513
- rowNumber = 0;
514
- }
515
- var columnNumber = parseInt(cellInfo.substring(cellInfo.search(":") + 1));
516
- if (isNaN(columnNumber)) {
517
- columnNumber = 0;
518
- }
519
- this.addControl(children[i], rowNumber, columnNumber);
520
- }
521
- };
522
- return Grid;
523
- }(Container));
524
- export { Grid };
525
- RegisterClass("BABYLON.GUI.Grid", Grid);
1
+ import { __extends } from "tslib";
2
+ import { Container } from "./container";
3
+ import { ValueAndUnit } from "../valueAndUnit";
4
+ import { Control } from "./control";
5
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
6
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
7
+ /**
8
+ * Class used to create a 2D grid container
9
+ */
10
+ var Grid = /** @class */ (function (_super) {
11
+ __extends(Grid, _super);
12
+ /**
13
+ * Creates a new Grid
14
+ * @param name defines control name
15
+ */
16
+ function Grid(name) {
17
+ var _this = _super.call(this, name) || this;
18
+ _this.name = name;
19
+ _this._rowDefinitions = new Array();
20
+ _this._rowDefinitionObservers = [];
21
+ _this._columnDefinitions = new Array();
22
+ _this._columnDefinitionObservers = [];
23
+ _this._cells = {};
24
+ _this._childControls = new Array();
25
+ return _this;
26
+ }
27
+ Object.defineProperty(Grid.prototype, "columnCount", {
28
+ /**
29
+ * Gets the number of columns
30
+ */
31
+ get: function () {
32
+ return this._columnDefinitions.length;
33
+ },
34
+ enumerable: false,
35
+ configurable: true
36
+ });
37
+ Object.defineProperty(Grid.prototype, "rowCount", {
38
+ /**
39
+ * Gets the number of rows
40
+ */
41
+ get: function () {
42
+ return this._rowDefinitions.length;
43
+ },
44
+ enumerable: false,
45
+ configurable: true
46
+ });
47
+ Object.defineProperty(Grid.prototype, "children", {
48
+ /** Gets the list of children */
49
+ get: function () {
50
+ return this._childControls;
51
+ },
52
+ enumerable: false,
53
+ configurable: true
54
+ });
55
+ Object.defineProperty(Grid.prototype, "cells", {
56
+ /** Gets the list of cells (e.g. the containers) */
57
+ get: function () {
58
+ return this._cells;
59
+ },
60
+ enumerable: false,
61
+ configurable: true
62
+ });
63
+ /**
64
+ * Gets the definition of a specific row
65
+ * @param index defines the index of the row
66
+ * @returns the row definition
67
+ */
68
+ Grid.prototype.getRowDefinition = function (index) {
69
+ if (index < 0 || index >= this._rowDefinitions.length) {
70
+ return null;
71
+ }
72
+ return this._rowDefinitions[index];
73
+ };
74
+ /**
75
+ * Gets the definition of a specific column
76
+ * @param index defines the index of the column
77
+ * @returns the column definition
78
+ */
79
+ Grid.prototype.getColumnDefinition = function (index) {
80
+ if (index < 0 || index >= this._columnDefinitions.length) {
81
+ return null;
82
+ }
83
+ return this._columnDefinitions[index];
84
+ };
85
+ /**
86
+ * Adds a new row to the grid
87
+ * @param height defines the height of the row (either in pixel or a value between 0 and 1)
88
+ * @param isPixel defines if the height is expressed in pixel (or in percentage)
89
+ * @returns the current grid
90
+ */
91
+ Grid.prototype.addRowDefinition = function (height, isPixel) {
92
+ var _this = this;
93
+ if (isPixel === void 0) { isPixel = false; }
94
+ this._rowDefinitions.push(new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));
95
+ this._rowDefinitionObservers.push(this._rowDefinitions[this.rowCount - 1].onChangedObservable.add(function () { return _this._markAsDirty(); }));
96
+ this._markAsDirty();
97
+ return this;
98
+ };
99
+ /**
100
+ * Adds a new column to the grid
101
+ * @param width defines the width of the column (either in pixel or a value between 0 and 1)
102
+ * @param isPixel defines if the width is expressed in pixel (or in percentage)
103
+ * @returns the current grid
104
+ */
105
+ Grid.prototype.addColumnDefinition = function (width, isPixel) {
106
+ var _this = this;
107
+ if (isPixel === void 0) { isPixel = false; }
108
+ this._columnDefinitions.push(new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE));
109
+ this._columnDefinitionObservers.push(this._columnDefinitions[this.columnCount - 1].onChangedObservable.add(function () { return _this._markAsDirty(); }));
110
+ this._markAsDirty();
111
+ return this;
112
+ };
113
+ /**
114
+ * Update a row definition
115
+ * @param index defines the index of the row to update
116
+ * @param height defines the height of the row (either in pixel or a value between 0 and 1)
117
+ * @param isPixel defines if the weight is expressed in pixel (or in percentage)
118
+ * @returns the current grid
119
+ */
120
+ Grid.prototype.setRowDefinition = function (index, height, isPixel) {
121
+ var _this = this;
122
+ if (isPixel === void 0) { isPixel = false; }
123
+ if (index < 0 || index >= this._rowDefinitions.length) {
124
+ return this;
125
+ }
126
+ var current = this._rowDefinitions[index];
127
+ if (current && current.isPixel === isPixel && current.value === height) {
128
+ return this;
129
+ }
130
+ this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
131
+ this._rowDefinitions[index] = new ValueAndUnit(height, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);
132
+ this._rowDefinitionObservers[index] = this._rowDefinitions[index].onChangedObservable.add(function () { return _this._markAsDirty(); });
133
+ this._markAsDirty();
134
+ return this;
135
+ };
136
+ /**
137
+ * Update a column definition
138
+ * @param index defines the index of the column to update
139
+ * @param width defines the width of the column (either in pixel or a value between 0 and 1)
140
+ * @param isPixel defines if the width is expressed in pixel (or in percentage)
141
+ * @returns the current grid
142
+ */
143
+ Grid.prototype.setColumnDefinition = function (index, width, isPixel) {
144
+ var _this = this;
145
+ if (isPixel === void 0) { isPixel = false; }
146
+ if (index < 0 || index >= this._columnDefinitions.length) {
147
+ return this;
148
+ }
149
+ var current = this._columnDefinitions[index];
150
+ if (current && current.isPixel === isPixel && current.value === width) {
151
+ return this;
152
+ }
153
+ this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
154
+ this._columnDefinitions[index] = new ValueAndUnit(width, isPixel ? ValueAndUnit.UNITMODE_PIXEL : ValueAndUnit.UNITMODE_PERCENTAGE);
155
+ this._columnDefinitionObservers[index] = this._columnDefinitions[index].onChangedObservable.add(function () { return _this._markAsDirty(); });
156
+ this._markAsDirty();
157
+ return this;
158
+ };
159
+ /**
160
+ * Gets the list of children stored in a specific cell
161
+ * @param row defines the row to check
162
+ * @param column defines the column to check
163
+ * @returns the list of controls
164
+ */
165
+ Grid.prototype.getChildrenAt = function (row, column) {
166
+ var cell = this._cells["".concat(row, ":").concat(column)];
167
+ if (!cell) {
168
+ return null;
169
+ }
170
+ return cell.children;
171
+ };
172
+ /**
173
+ * Gets a string representing the child cell info (row x column)
174
+ * @param child defines the control to get info from
175
+ * @returns a string containing the child cell info (row x column)
176
+ */
177
+ Grid.prototype.getChildCellInfo = function (child) {
178
+ return child._tag;
179
+ };
180
+ Grid.prototype._removeCell = function (cell, key) {
181
+ if (!cell) {
182
+ return;
183
+ }
184
+ _super.prototype.removeControl.call(this, cell);
185
+ for (var _i = 0, _a = cell.children; _i < _a.length; _i++) {
186
+ var control = _a[_i];
187
+ var childIndex = this._childControls.indexOf(control);
188
+ if (childIndex !== -1) {
189
+ this._childControls.splice(childIndex, 1);
190
+ }
191
+ }
192
+ delete this._cells[key];
193
+ };
194
+ Grid.prototype._offsetCell = function (previousKey, key) {
195
+ if (!this._cells[key]) {
196
+ return;
197
+ }
198
+ this._cells[previousKey] = this._cells[key];
199
+ for (var _i = 0, _a = this._cells[previousKey].children; _i < _a.length; _i++) {
200
+ var control = _a[_i];
201
+ control._tag = previousKey;
202
+ }
203
+ delete this._cells[key];
204
+ };
205
+ /**
206
+ * Remove a column definition at specified index
207
+ * @param index defines the index of the column to remove
208
+ * @returns the current grid
209
+ */
210
+ Grid.prototype.removeColumnDefinition = function (index) {
211
+ if (index < 0 || index >= this._columnDefinitions.length) {
212
+ return this;
213
+ }
214
+ for (var x = 0; x < this._rowDefinitions.length; x++) {
215
+ var key = "".concat(x, ":").concat(index);
216
+ var cell = this._cells[key];
217
+ this._removeCell(cell, key);
218
+ }
219
+ for (var x = 0; x < this._rowDefinitions.length; x++) {
220
+ for (var y = index + 1; y < this._columnDefinitions.length; y++) {
221
+ var previousKey = "".concat(x, ":").concat(y - 1);
222
+ var key = "".concat(x, ":").concat(y);
223
+ this._offsetCell(previousKey, key);
224
+ }
225
+ }
226
+ this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
227
+ this._columnDefinitions.splice(index, 1);
228
+ this._columnDefinitionObservers.splice(index, 1);
229
+ this._markAsDirty();
230
+ return this;
231
+ };
232
+ /**
233
+ * Remove a row definition at specified index
234
+ * @param index defines the index of the row to remove
235
+ * @returns the current grid
236
+ */
237
+ Grid.prototype.removeRowDefinition = function (index) {
238
+ if (index < 0 || index >= this._rowDefinitions.length) {
239
+ return this;
240
+ }
241
+ for (var y = 0; y < this._columnDefinitions.length; y++) {
242
+ var key = "".concat(index, ":").concat(y);
243
+ var cell = this._cells[key];
244
+ this._removeCell(cell, key);
245
+ }
246
+ for (var y = 0; y < this._columnDefinitions.length; y++) {
247
+ for (var x = index + 1; x < this._rowDefinitions.length; x++) {
248
+ var previousKey = "".concat(x - 1, ":").concat(y);
249
+ var key = "".concat(x, ":").concat(y);
250
+ this._offsetCell(previousKey, key);
251
+ }
252
+ }
253
+ this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
254
+ this._rowDefinitions.splice(index, 1);
255
+ this._rowDefinitionObservers.splice(index, 1);
256
+ this._markAsDirty();
257
+ return this;
258
+ };
259
+ /**
260
+ * Adds a new control to the current grid
261
+ * @param control defines the control to add
262
+ * @param row defines the row where to add the control (0 by default)
263
+ * @param column defines the column where to add the control (0 by default)
264
+ * @returns the current grid
265
+ */
266
+ Grid.prototype.addControl = function (control, row, column) {
267
+ if (row === void 0) { row = 0; }
268
+ if (column === void 0) { column = 0; }
269
+ if (this._rowDefinitions.length === 0) {
270
+ // Add default row definition
271
+ this.addRowDefinition(1, false);
272
+ }
273
+ if (this._columnDefinitions.length === 0) {
274
+ // Add default column definition
275
+ this.addColumnDefinition(1, false);
276
+ }
277
+ if (this._childControls.indexOf(control) !== -1) {
278
+ Tools.Warn("Control (Name:".concat(control.name, ", UniqueId:").concat(control.uniqueId, ") is already associated with this grid. You must remove it before reattaching it"));
279
+ return this;
280
+ }
281
+ var x = Math.min(row, this._rowDefinitions.length - 1);
282
+ var y = Math.min(column, this._columnDefinitions.length - 1);
283
+ var key = "".concat(x, ":").concat(y);
284
+ var goodContainer = this._cells[key];
285
+ if (!goodContainer) {
286
+ goodContainer = new Container(key);
287
+ this._cells[key] = goodContainer;
288
+ goodContainer.horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;
289
+ goodContainer.verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;
290
+ _super.prototype.addControl.call(this, goodContainer);
291
+ }
292
+ goodContainer.addControl(control);
293
+ this._childControls.push(control);
294
+ control._tag = key;
295
+ control.parent = this;
296
+ this._markAsDirty();
297
+ return this;
298
+ };
299
+ /**
300
+ * Removes a control from the current container
301
+ * @param control defines the control to remove
302
+ * @returns the current container
303
+ */
304
+ Grid.prototype.removeControl = function (control) {
305
+ var index = this._childControls.indexOf(control);
306
+ if (index !== -1) {
307
+ this._childControls.splice(index, 1);
308
+ }
309
+ var cell = this._cells[control._tag];
310
+ if (cell) {
311
+ cell.removeControl(control);
312
+ control._tag = null;
313
+ }
314
+ this._markAsDirty();
315
+ return this;
316
+ };
317
+ Grid.prototype._getTypeName = function () {
318
+ return "Grid";
319
+ };
320
+ Grid.prototype._getGridDefinitions = function (definitionCallback) {
321
+ var widths = [];
322
+ var heights = [];
323
+ var lefts = [];
324
+ var tops = [];
325
+ var availableWidth = this._currentMeasure.width;
326
+ var globalWidthPercentage = 0;
327
+ var availableHeight = this._currentMeasure.height;
328
+ var globalHeightPercentage = 0;
329
+ // Heights
330
+ var index = 0;
331
+ for (var _i = 0, _a = this._rowDefinitions; _i < _a.length; _i++) {
332
+ var rowDefinition = _a[_i];
333
+ if (rowDefinition.isPixel) {
334
+ var height = rowDefinition.getValue(this._host);
335
+ availableHeight -= height;
336
+ heights[index] = height;
337
+ }
338
+ else {
339
+ globalHeightPercentage += rowDefinition.value;
340
+ }
341
+ index++;
342
+ }
343
+ var top = 0;
344
+ index = 0;
345
+ for (var _b = 0, _c = this._rowDefinitions; _b < _c.length; _b++) {
346
+ var rowDefinition = _c[_b];
347
+ tops.push(top);
348
+ if (!rowDefinition.isPixel) {
349
+ var height = (rowDefinition.value / globalHeightPercentage) * availableHeight;
350
+ top += height;
351
+ heights[index] = height;
352
+ }
353
+ else {
354
+ top += rowDefinition.getValue(this._host);
355
+ }
356
+ index++;
357
+ }
358
+ // Widths
359
+ index = 0;
360
+ for (var _d = 0, _e = this._columnDefinitions; _d < _e.length; _d++) {
361
+ var columnDefinition = _e[_d];
362
+ if (columnDefinition.isPixel) {
363
+ var width = columnDefinition.getValue(this._host);
364
+ availableWidth -= width;
365
+ widths[index] = width;
366
+ }
367
+ else {
368
+ globalWidthPercentage += columnDefinition.value;
369
+ }
370
+ index++;
371
+ }
372
+ var left = 0;
373
+ index = 0;
374
+ for (var _f = 0, _g = this._columnDefinitions; _f < _g.length; _f++) {
375
+ var columnDefinition = _g[_f];
376
+ lefts.push(left);
377
+ if (!columnDefinition.isPixel) {
378
+ var width = (columnDefinition.value / globalWidthPercentage) * availableWidth;
379
+ left += width;
380
+ widths[index] = width;
381
+ }
382
+ else {
383
+ left += columnDefinition.getValue(this._host);
384
+ }
385
+ index++;
386
+ }
387
+ definitionCallback(lefts, tops, widths, heights);
388
+ };
389
+ Grid.prototype._additionalProcessing = function (parentMeasure, context) {
390
+ var _this = this;
391
+ this._getGridDefinitions(function (lefts, tops, widths, heights) {
392
+ // Setting child sizes
393
+ for (var key in _this._cells) {
394
+ if (!Object.prototype.hasOwnProperty.call(_this._cells, key)) {
395
+ continue;
396
+ }
397
+ var split = key.split(":");
398
+ var x = parseInt(split[0]);
399
+ var y = parseInt(split[1]);
400
+ var cell = _this._cells[key];
401
+ cell.left = lefts[y] + "px";
402
+ cell.top = tops[x] + "px";
403
+ cell.width = widths[y] + "px";
404
+ cell.height = heights[x] + "px";
405
+ cell._left.ignoreAdaptiveScaling = true;
406
+ cell._top.ignoreAdaptiveScaling = true;
407
+ cell._width.ignoreAdaptiveScaling = true;
408
+ cell._height.ignoreAdaptiveScaling = true;
409
+ }
410
+ });
411
+ _super.prototype._additionalProcessing.call(this, parentMeasure, context);
412
+ };
413
+ Grid.prototype._flagDescendantsAsMatrixDirty = function () {
414
+ for (var key in this._cells) {
415
+ if (!Object.prototype.hasOwnProperty.call(this._cells, key)) {
416
+ continue;
417
+ }
418
+ var child = this._cells[key];
419
+ child._markMatrixAsDirty();
420
+ }
421
+ };
422
+ Grid.prototype._renderHighlightSpecific = function (context) {
423
+ var _this = this;
424
+ _super.prototype._renderHighlightSpecific.call(this, context);
425
+ this._getGridDefinitions(function (lefts, tops, widths, heights) {
426
+ // Columns
427
+ for (var index = 0; index < lefts.length; index++) {
428
+ var left = _this._currentMeasure.left + lefts[index] + widths[index];
429
+ context.beginPath();
430
+ context.moveTo(left, _this._currentMeasure.top);
431
+ context.lineTo(left, _this._currentMeasure.top + _this._currentMeasure.height);
432
+ context.stroke();
433
+ }
434
+ // Rows
435
+ for (var index = 0; index < tops.length; index++) {
436
+ var top_1 = _this._currentMeasure.top + tops[index] + heights[index];
437
+ context.beginPath();
438
+ context.moveTo(_this._currentMeasure.left, top_1);
439
+ context.lineTo(_this._currentMeasure.left + _this._currentMeasure.width, top_1);
440
+ context.stroke();
441
+ }
442
+ });
443
+ context.restore();
444
+ };
445
+ /** Releases associated resources */
446
+ Grid.prototype.dispose = function () {
447
+ _super.prototype.dispose.call(this);
448
+ for (var _i = 0, _a = this._childControls; _i < _a.length; _i++) {
449
+ var control = _a[_i];
450
+ control.dispose();
451
+ }
452
+ for (var index = 0; index < this._rowDefinitions.length; index++) {
453
+ this._rowDefinitions[index].onChangedObservable.remove(this._rowDefinitionObservers[index]);
454
+ }
455
+ for (var index = 0; index < this._columnDefinitions.length; index++) {
456
+ this._columnDefinitions[index].onChangedObservable.remove(this._columnDefinitionObservers[index]);
457
+ }
458
+ this._rowDefinitionObservers = [];
459
+ this._rowDefinitions = [];
460
+ this._columnDefinitionObservers = [];
461
+ this._columnDefinitions = [];
462
+ this._cells = {};
463
+ this._childControls = [];
464
+ };
465
+ /**
466
+ * Serializes the current control
467
+ * @param serializationObject defined the JSON serialized object
468
+ */
469
+ Grid.prototype.serialize = function (serializationObject) {
470
+ _super.prototype.serialize.call(this, serializationObject);
471
+ serializationObject.columnCount = this.columnCount;
472
+ serializationObject.rowCount = this.rowCount;
473
+ serializationObject.columns = [];
474
+ serializationObject.rows = [];
475
+ serializationObject.tags = [];
476
+ for (var i = 0; i < this.columnCount; ++i) {
477
+ var cd = this.getColumnDefinition(i);
478
+ var childSerializationObject = { value: cd === null || cd === void 0 ? void 0 : cd.getValue(this.host), unit: cd === null || cd === void 0 ? void 0 : cd.unit };
479
+ serializationObject.columns.push(childSerializationObject);
480
+ }
481
+ for (var i = 0; i < this.rowCount; ++i) {
482
+ var rd = this.getRowDefinition(i);
483
+ var childSerializationObject = { value: rd === null || rd === void 0 ? void 0 : rd.getValue(this.host), unit: rd === null || rd === void 0 ? void 0 : rd.unit };
484
+ serializationObject.rows.push(childSerializationObject);
485
+ }
486
+ this.children.forEach(function (child) {
487
+ serializationObject.tags.push(child._tag);
488
+ });
489
+ };
490
+ /**
491
+ * @param serializedObject
492
+ * @param host
493
+ * @hidden
494
+ */
495
+ Grid.prototype._parseFromContent = function (serializedObject, host) {
496
+ _super.prototype._parseFromContent.call(this, serializedObject, host);
497
+ var children = [];
498
+ this.children.forEach(function (child) {
499
+ children.push(child);
500
+ });
501
+ this.removeRowDefinition(0);
502
+ this.removeColumnDefinition(0);
503
+ for (var i = 0; i < serializedObject.columnCount; ++i) {
504
+ var columnValue = serializedObject.columns[i].value;
505
+ var unit = serializedObject.columns[i].unit;
506
+ this.addColumnDefinition(columnValue, unit === 1 ? true : false);
507
+ }
508
+ for (var i = 0; i < serializedObject.rowCount; ++i) {
509
+ var rowValue = serializedObject.rows[i].value;
510
+ var unit = serializedObject.rows[i].unit;
511
+ this.addRowDefinition(rowValue, unit === 1 ? true : false);
512
+ }
513
+ for (var i = 0; i < children.length; ++i) {
514
+ var cellInfo = serializedObject.tags[i];
515
+ var rowNumber = parseInt(cellInfo.substring(0, cellInfo.search(":")));
516
+ if (isNaN(rowNumber)) {
517
+ rowNumber = 0;
518
+ }
519
+ var columnNumber = parseInt(cellInfo.substring(cellInfo.search(":") + 1));
520
+ if (isNaN(columnNumber)) {
521
+ columnNumber = 0;
522
+ }
523
+ this.addControl(children[i], rowNumber, columnNumber);
524
+ }
525
+ };
526
+ return Grid;
527
+ }(Container));
528
+ export { Grid };
529
+ RegisterClass("BABYLON.GUI.Grid", Grid);
526
530
  //# sourceMappingURL=grid.js.map