@babylonjs/gui 5.0.0-rc.0 → 5.0.0-rc.11

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 -423
  5. package/2D/advancedDynamicTexture.js +1318 -1286
  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 -182
  47. package/2D/controls/inputText.js +1119 -1096
  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 -172
  92. package/2D/controls/textBlock.js +603 -598
  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 -348
  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 -128
  155. package/3D/controls/holographicSlate.js +431 -428
  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 -75
  182. package/3D/controls/touchButton3D.js +233 -227
  183. package/3D/controls/touchButton3D.js.map +1 -1
  184. package/3D/controls/touchHolographicButton.d.ts +110 -109
  185. package/3D/controls/touchHolographicButton.js +445 -445
  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 -57
  203. package/3D/gizmos/slateGizmo.js +369 -369
  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,571 @@
1
- import { __decorate, __extends } from "tslib";
2
- import { Logger } from "@babylonjs/core/Misc/logger.js";
3
- import { Control } from "./control.js";
4
- import { Measure } from "../measure.js";
5
- import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
6
- import { serialize } from '@babylonjs/core/Misc/decorators.js';
7
- import { DynamicTexture } from "@babylonjs/core/Materials/Textures/dynamicTexture.js";
8
- import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
9
- import { Constants } from '@babylonjs/core/Engines/constants.js';
10
- /**
11
- * Root class for 2D containers
12
- * @see https://doc.babylonjs.com/how_to/gui#containers
13
- */
14
- var Container = /** @class */ (function (_super) {
15
- __extends(Container, _super);
16
- /**
17
- * Creates a new Container
18
- * @param name defines the name of the container
19
- */
20
- function Container(name) {
21
- var _this = _super.call(this, name) || this;
22
- _this.name = name;
23
- /** @hidden */
24
- _this._children = new Array();
25
- /** @hidden */
26
- _this._measureForChildren = Measure.Empty();
27
- /** @hidden */
28
- _this._background = "";
29
- /** @hidden */
30
- _this._adaptWidthToChildren = false;
31
- /** @hidden */
32
- _this._adaptHeightToChildren = false;
33
- /** @hidden */
34
- _this._renderToIntermediateTexture = false;
35
- /** @hidden */
36
- _this._intermediateTexture = null;
37
- /**
38
- * Gets or sets a boolean indicating that layout cycle errors should be displayed on the console
39
- */
40
- _this.logLayoutCycleErrors = false;
41
- /**
42
- * Gets or sets the number of layout cycles (a change involved by a control while evaluating the layout) allowed
43
- */
44
- _this.maxLayoutCycle = 3;
45
- return _this;
46
- }
47
- Object.defineProperty(Container.prototype, "renderToIntermediateTexture", {
48
- /** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */
49
- get: function () {
50
- return this._renderToIntermediateTexture;
51
- },
52
- set: function (value) {
53
- if (this._renderToIntermediateTexture === value) {
54
- return;
55
- }
56
- this._renderToIntermediateTexture = value;
57
- this._markAsDirty();
58
- },
59
- enumerable: false,
60
- configurable: true
61
- });
62
- Object.defineProperty(Container.prototype, "adaptHeightToChildren", {
63
- /** Gets or sets a boolean indicating if the container should try to adapt to its children height */
64
- get: function () {
65
- return this._adaptHeightToChildren;
66
- },
67
- set: function (value) {
68
- if (this._adaptHeightToChildren === value) {
69
- return;
70
- }
71
- this._adaptHeightToChildren = value;
72
- if (value) {
73
- this.height = "100%";
74
- }
75
- this._markAsDirty();
76
- },
77
- enumerable: false,
78
- configurable: true
79
- });
80
- Object.defineProperty(Container.prototype, "adaptWidthToChildren", {
81
- /** Gets or sets a boolean indicating if the container should try to adapt to its children width */
82
- get: function () {
83
- return this._adaptWidthToChildren;
84
- },
85
- set: function (value) {
86
- if (this._adaptWidthToChildren === value) {
87
- return;
88
- }
89
- this._adaptWidthToChildren = value;
90
- if (value) {
91
- this.width = "100%";
92
- }
93
- this._markAsDirty();
94
- },
95
- enumerable: false,
96
- configurable: true
97
- });
98
- Object.defineProperty(Container.prototype, "background", {
99
- /** Gets or sets background color */
100
- get: function () {
101
- return this._background;
102
- },
103
- set: function (value) {
104
- if (this._background === value) {
105
- return;
106
- }
107
- this._background = value;
108
- this._markAsDirty();
109
- },
110
- enumerable: false,
111
- configurable: true
112
- });
113
- Object.defineProperty(Container.prototype, "children", {
114
- /** Gets the list of children */
115
- get: function () {
116
- return this._children;
117
- },
118
- enumerable: false,
119
- configurable: true
120
- });
121
- Object.defineProperty(Container.prototype, "isReadOnly", {
122
- get: function () {
123
- return this._isReadOnly;
124
- },
125
- set: function (value) {
126
- this._isReadOnly = value;
127
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
128
- var child = _a[_i];
129
- child.isReadOnly = value;
130
- }
131
- },
132
- enumerable: false,
133
- configurable: true
134
- });
135
- Container.prototype._getTypeName = function () {
136
- return "Container";
137
- };
138
- Container.prototype._flagDescendantsAsMatrixDirty = function () {
139
- for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
140
- var child = _a[_i];
141
- child._markMatrixAsDirty();
142
- }
143
- };
144
- /**
145
- * Gets a child using its name
146
- * @param name defines the child name to look for
147
- * @returns the child control if found
148
- */
149
- Container.prototype.getChildByName = function (name) {
150
- for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
151
- var child = _a[_i];
152
- if (child.name === name) {
153
- return child;
154
- }
155
- }
156
- return null;
157
- };
158
- /**
159
- * Gets a child using its type and its name
160
- * @param name defines the child name to look for
161
- * @param type defines the child type to look for
162
- * @returns the child control if found
163
- */
164
- Container.prototype.getChildByType = function (name, type) {
165
- for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
166
- var child = _a[_i];
167
- if (child.typeName === type) {
168
- return child;
169
- }
170
- }
171
- return null;
172
- };
173
- /**
174
- * Search for a specific control in children
175
- * @param control defines the control to look for
176
- * @returns true if the control is in child list
177
- */
178
- Container.prototype.containsControl = function (control) {
179
- return this.children.indexOf(control) !== -1;
180
- };
181
- /**
182
- * Adds a new control to the current container
183
- * @param control defines the control to add
184
- * @returns the current container
185
- */
186
- Container.prototype.addControl = function (control) {
187
- if (!control) {
188
- return this;
189
- }
190
- var index = this._children.indexOf(control);
191
- if (index !== -1) {
192
- return this;
193
- }
194
- control._link(this._host);
195
- control._markAllAsDirty();
196
- this._reOrderControl(control);
197
- this._markAsDirty();
198
- return this;
199
- };
200
- /**
201
- * Removes all controls from the current container
202
- * @returns the current container
203
- */
204
- Container.prototype.clearControls = function () {
205
- var children = this.children.slice();
206
- for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
207
- var child = children_1[_i];
208
- this.removeControl(child);
209
- }
210
- return this;
211
- };
212
- /**
213
- * Removes a control from the current container
214
- * @param control defines the control to remove
215
- * @returns the current container
216
- */
217
- Container.prototype.removeControl = function (control) {
218
- var index = this._children.indexOf(control);
219
- if (index !== -1) {
220
- this._children.splice(index, 1);
221
- control.parent = null;
222
- }
223
- control.linkWithMesh(null);
224
- if (this._host) {
225
- this._host._cleanControlAfterRemoval(control);
226
- }
227
- this._markAsDirty();
228
- return this;
229
- };
230
- /** @hidden */
231
- Container.prototype._reOrderControl = function (control) {
232
- this.removeControl(control);
233
- var wasAdded = false;
234
- for (var index = 0; index < this._children.length; index++) {
235
- if (this._children[index].zIndex > control.zIndex) {
236
- this._children.splice(index, 0, control);
237
- wasAdded = true;
238
- break;
239
- }
240
- }
241
- if (!wasAdded) {
242
- this._children.push(control);
243
- }
244
- control.parent = this;
245
- this._markAsDirty();
246
- };
247
- /** @hidden */
248
- Container.prototype._offsetLeft = function (offset) {
249
- _super.prototype._offsetLeft.call(this, offset);
250
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
251
- var child = _a[_i];
252
- child._offsetLeft(offset);
253
- }
254
- };
255
- /** @hidden */
256
- Container.prototype._offsetTop = function (offset) {
257
- _super.prototype._offsetTop.call(this, offset);
258
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
259
- var child = _a[_i];
260
- child._offsetTop(offset);
261
- }
262
- };
263
- /** @hidden */
264
- Container.prototype._markAllAsDirty = function () {
265
- _super.prototype._markAllAsDirty.call(this);
266
- for (var index = 0; index < this._children.length; index++) {
267
- this._children[index]._markAllAsDirty();
268
- }
269
- };
270
- /** @hidden */
271
- Container.prototype._localDraw = function (context) {
272
- if (this._background) {
273
- context.save();
274
- if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
275
- context.shadowColor = this.shadowColor;
276
- context.shadowBlur = this.shadowBlur;
277
- context.shadowOffsetX = this.shadowOffsetX;
278
- context.shadowOffsetY = this.shadowOffsetY;
279
- }
280
- context.fillStyle = this._background;
281
- context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
282
- context.restore();
283
- }
284
- };
285
- /** @hidden */
286
- Container.prototype._link = function (host) {
287
- _super.prototype._link.call(this, host);
288
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
289
- var child = _a[_i];
290
- child._link(host);
291
- }
292
- };
293
- /** @hidden */
294
- Container.prototype._beforeLayout = function () {
295
- // Do nothing
296
- };
297
- /** @hidden */
298
- Container.prototype._processMeasures = function (parentMeasure, context) {
299
- if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {
300
- _super.prototype._processMeasures.call(this, parentMeasure, context);
301
- this._evaluateClippingState(parentMeasure);
302
- if (this._renderToIntermediateTexture) {
303
- if (this._intermediateTexture && this._host.getScene() != this._intermediateTexture.getScene()) {
304
- this._intermediateTexture.dispose();
305
- this._intermediateTexture = null;
306
- }
307
- if (!this._intermediateTexture) {
308
- this._intermediateTexture = new DynamicTexture('', { width: this._currentMeasure.width, height: this._currentMeasure.height }, this._host.getScene(), false, Texture.NEAREST_SAMPLINGMODE, Constants.TEXTUREFORMAT_RGBA, false);
309
- this._intermediateTexture.hasAlpha = true;
310
- }
311
- else {
312
- this._intermediateTexture.scaleTo(this._currentMeasure.width, this._currentMeasure.height);
313
- }
314
- }
315
- }
316
- };
317
- /** @hidden */
318
- Container.prototype._layout = function (parentMeasure, context) {
319
- var _a, _b;
320
- if (!this.isDirty && (!this.isVisible || this.notRenderable)) {
321
- return false;
322
- }
323
- this.host._numLayoutCalls++;
324
- if (this._isDirty) {
325
- this._currentMeasure.transformToRef(this._transformMatrix, this._prevCurrentMeasureTransformedIntoGlobalSpace);
326
- }
327
- var rebuildCount = 0;
328
- context.save();
329
- this._applyStates(context);
330
- this._beforeLayout();
331
- do {
332
- var computedWidth = -1;
333
- var computedHeight = -1;
334
- this._rebuildLayout = false;
335
- this._processMeasures(parentMeasure, context);
336
- if (!this._isClipped) {
337
- for (var _i = 0, _c = this._children; _i < _c.length; _i++) {
338
- var child = _c[_i];
339
- child._tempParentMeasure.copyFrom(this._measureForChildren);
340
- if (child._layout(this._measureForChildren, context)) {
341
- if (this.adaptWidthToChildren && child._width.isPixel) {
342
- computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);
343
- }
344
- if (this.adaptHeightToChildren && child._height.isPixel) {
345
- computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);
346
- }
347
- }
348
- }
349
- if (this.adaptWidthToChildren && computedWidth >= 0) {
350
- computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;
351
- if (this.width !== computedWidth + "px") {
352
- (_a = this.parent) === null || _a === void 0 ? void 0 : _a._markAsDirty();
353
- this.width = computedWidth + "px";
354
- this._rebuildLayout = true;
355
- }
356
- }
357
- if (this.adaptHeightToChildren && computedHeight >= 0) {
358
- computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;
359
- if (this.height !== computedHeight + "px") {
360
- (_b = this.parent) === null || _b === void 0 ? void 0 : _b._markAsDirty();
361
- this.height = computedHeight + "px";
362
- this._rebuildLayout = true;
363
- }
364
- }
365
- this._postMeasure();
366
- }
367
- rebuildCount++;
368
- } while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);
369
- if (rebuildCount >= 3 && this.logLayoutCycleErrors) {
370
- Logger.Error("Layout cycle detected in GUI (Container name=".concat(this.name, ", uniqueId=").concat(this.uniqueId, ")"));
371
- }
372
- context.restore();
373
- if (this._isDirty) {
374
- this.invalidateRect();
375
- this._isDirty = false;
376
- }
377
- return true;
378
- };
379
- Container.prototype._postMeasure = function () {
380
- // Do nothing by default
381
- };
382
- /** @hidden */
383
- Container.prototype._draw = function (context, invalidatedRectangle) {
384
- var renderToIntermediateTextureThisDraw = this._renderToIntermediateTexture && this._intermediateTexture;
385
- var contextToDrawTo = renderToIntermediateTextureThisDraw ? this._intermediateTexture.getContext() : context;
386
- if (renderToIntermediateTextureThisDraw) {
387
- contextToDrawTo.save();
388
- contextToDrawTo.translate(-this._currentMeasure.left, -this._currentMeasure.top);
389
- if (invalidatedRectangle) {
390
- contextToDrawTo.clearRect(invalidatedRectangle.left, invalidatedRectangle.top, invalidatedRectangle.width, invalidatedRectangle.height);
391
- }
392
- else {
393
- contextToDrawTo.clearRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
394
- }
395
- }
396
- this._localDraw(contextToDrawTo);
397
- context.save();
398
- if (this.clipChildren) {
399
- this._clipForChildren(contextToDrawTo);
400
- }
401
- for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
402
- var child = _a[_i];
403
- // Only redraw parts of the screen that are invalidated
404
- if (invalidatedRectangle) {
405
- if (!child._intersectsRect(invalidatedRectangle)) {
406
- continue;
407
- }
408
- }
409
- child._render(contextToDrawTo, invalidatedRectangle);
410
- }
411
- if (renderToIntermediateTextureThisDraw) {
412
- contextToDrawTo.restore();
413
- context.save();
414
- context.globalAlpha = this.alpha;
415
- context.drawImage(contextToDrawTo.canvas, this._currentMeasure.left, this._currentMeasure.top);
416
- context.restore();
417
- }
418
- context.restore();
419
- };
420
- Container.prototype.getDescendantsToRef = function (results, directDescendantsOnly, predicate) {
421
- if (directDescendantsOnly === void 0) { directDescendantsOnly = false; }
422
- if (!this.children) {
423
- return;
424
- }
425
- for (var index = 0; index < this.children.length; index++) {
426
- var item = this.children[index];
427
- if (!predicate || predicate(item)) {
428
- results.push(item);
429
- }
430
- if (!directDescendantsOnly) {
431
- item.getDescendantsToRef(results, false, predicate);
432
- }
433
- }
434
- };
435
- /** @hidden */
436
- Container.prototype._processPicking = function (x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY) {
437
- if (!this._isEnabled || !this.isVisible || this.notRenderable) {
438
- return false;
439
- }
440
- // checks if the picking position is within the container
441
- var contains = _super.prototype.contains.call(this, x, y);
442
- // if clipChildren is off, we should still pass picking events to children even if we don't contain the pointer
443
- if (!contains && this.clipChildren) {
444
- return false;
445
- }
446
- // Checking backwards to pick closest first
447
- for (var index = this._children.length - 1; index >= 0; index--) {
448
- var child = this._children[index];
449
- if (child._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {
450
- if (child.hoverCursor) {
451
- this._host._changeCursor(child.hoverCursor);
452
- }
453
- return true;
454
- }
455
- }
456
- if (!contains) {
457
- return false;
458
- }
459
- if (!this.isHitTestVisible) {
460
- return false;
461
- }
462
- return this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);
463
- };
464
- /** @hidden */
465
- Container.prototype._additionalProcessing = function (parentMeasure, context) {
466
- _super.prototype._additionalProcessing.call(this, parentMeasure, context);
467
- this._measureForChildren.copyFrom(this._currentMeasure);
468
- };
469
- /**
470
- * Serializes the current control
471
- * @param serializationObject defined the JSON serialized object
472
- */
473
- Container.prototype.serialize = function (serializationObject) {
474
- _super.prototype.serialize.call(this, serializationObject);
475
- if (!this.children.length) {
476
- return;
477
- }
478
- serializationObject.children = [];
479
- for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
480
- var child = _a[_i];
481
- var childSerializationObject = {};
482
- child.serialize(childSerializationObject);
483
- serializationObject.children.push(childSerializationObject);
484
- }
485
- };
486
- /** Releases associated resources */
487
- Container.prototype.dispose = function () {
488
- var _a;
489
- _super.prototype.dispose.call(this);
490
- for (var index = this.children.length - 1; index >= 0; index--) {
491
- this.children[index].dispose();
492
- }
493
- (_a = this._intermediateTexture) === null || _a === void 0 ? void 0 : _a.dispose();
494
- };
495
- /** @hidden */
496
- Container.prototype._parseFromContent = function (serializedObject, host) {
497
- _super.prototype._parseFromContent.call(this, serializedObject, host);
498
- this._link(host);
499
- if (!serializedObject.children) {
500
- return;
501
- }
502
- for (var _i = 0, _a = serializedObject.children; _i < _a.length; _i++) {
503
- var childData = _a[_i];
504
- this.addControl(Control.Parse(childData, host));
505
- }
506
- };
507
- __decorate([
508
- serialize()
509
- ], Container.prototype, "renderToIntermediateTexture", null);
510
- __decorate([
511
- serialize()
512
- ], Container.prototype, "maxLayoutCycle", void 0);
513
- __decorate([
514
- serialize()
515
- ], Container.prototype, "adaptHeightToChildren", null);
516
- __decorate([
517
- serialize()
518
- ], Container.prototype, "adaptWidthToChildren", null);
519
- __decorate([
520
- serialize()
521
- ], Container.prototype, "background", null);
522
- return Container;
523
- }(Control));
524
- export { Container };
525
- RegisterClass("BABYLON.GUI.Container", Container);
1
+ import { __decorate, __extends } from "tslib";
2
+ import { Logger } from "@babylonjs/core/Misc/logger.js";
3
+ import { Control } from "./control";
4
+ import { Measure } from "../measure";
5
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
6
+ import { serialize } from "@babylonjs/core/Misc/decorators.js";
7
+ import { DynamicTexture } from "@babylonjs/core/Materials/Textures/dynamicTexture.js";
8
+ import { Texture } from "@babylonjs/core/Materials/Textures/texture.js";
9
+ import { Constants } from "@babylonjs/core/Engines/constants.js";
10
+ /**
11
+ * Root class for 2D containers
12
+ * @see https://doc.babylonjs.com/how_to/gui#containers
13
+ */
14
+ var Container = /** @class */ (function (_super) {
15
+ __extends(Container, _super);
16
+ /**
17
+ * Creates a new Container
18
+ * @param name defines the name of the container
19
+ */
20
+ function Container(name) {
21
+ var _this = _super.call(this, name) || this;
22
+ _this.name = name;
23
+ /** @hidden */
24
+ _this._children = new Array();
25
+ /** @hidden */
26
+ _this._measureForChildren = Measure.Empty();
27
+ /** @hidden */
28
+ _this._background = "";
29
+ /** @hidden */
30
+ _this._adaptWidthToChildren = false;
31
+ /** @hidden */
32
+ _this._adaptHeightToChildren = false;
33
+ /** @hidden */
34
+ _this._renderToIntermediateTexture = false;
35
+ /** @hidden */
36
+ _this._intermediateTexture = null;
37
+ /**
38
+ * Gets or sets a boolean indicating that layout cycle errors should be displayed on the console
39
+ */
40
+ _this.logLayoutCycleErrors = false;
41
+ /**
42
+ * Gets or sets the number of layout cycles (a change involved by a control while evaluating the layout) allowed
43
+ */
44
+ _this.maxLayoutCycle = 3;
45
+ return _this;
46
+ }
47
+ Object.defineProperty(Container.prototype, "renderToIntermediateTexture", {
48
+ /** Gets or sets boolean indicating if children should be rendered to an intermediate texture rather than directly to host, useful for alpha blending */
49
+ get: function () {
50
+ return this._renderToIntermediateTexture;
51
+ },
52
+ set: function (value) {
53
+ if (this._renderToIntermediateTexture === value) {
54
+ return;
55
+ }
56
+ this._renderToIntermediateTexture = value;
57
+ this._markAsDirty();
58
+ },
59
+ enumerable: false,
60
+ configurable: true
61
+ });
62
+ Object.defineProperty(Container.prototype, "adaptHeightToChildren", {
63
+ /** Gets or sets a boolean indicating if the container should try to adapt to its children height */
64
+ get: function () {
65
+ return this._adaptHeightToChildren;
66
+ },
67
+ set: function (value) {
68
+ if (this._adaptHeightToChildren === value) {
69
+ return;
70
+ }
71
+ this._adaptHeightToChildren = value;
72
+ if (value) {
73
+ this.height = "100%";
74
+ }
75
+ this._markAsDirty();
76
+ },
77
+ enumerable: false,
78
+ configurable: true
79
+ });
80
+ Object.defineProperty(Container.prototype, "adaptWidthToChildren", {
81
+ /** Gets or sets a boolean indicating if the container should try to adapt to its children width */
82
+ get: function () {
83
+ return this._adaptWidthToChildren;
84
+ },
85
+ set: function (value) {
86
+ if (this._adaptWidthToChildren === value) {
87
+ return;
88
+ }
89
+ this._adaptWidthToChildren = value;
90
+ if (value) {
91
+ this.width = "100%";
92
+ }
93
+ this._markAsDirty();
94
+ },
95
+ enumerable: false,
96
+ configurable: true
97
+ });
98
+ Object.defineProperty(Container.prototype, "background", {
99
+ /** Gets or sets background color */
100
+ get: function () {
101
+ return this._background;
102
+ },
103
+ set: function (value) {
104
+ if (this._background === value) {
105
+ return;
106
+ }
107
+ this._background = value;
108
+ this._markAsDirty();
109
+ },
110
+ enumerable: false,
111
+ configurable: true
112
+ });
113
+ Object.defineProperty(Container.prototype, "children", {
114
+ /** Gets the list of children */
115
+ get: function () {
116
+ return this._children;
117
+ },
118
+ enumerable: false,
119
+ configurable: true
120
+ });
121
+ Object.defineProperty(Container.prototype, "isReadOnly", {
122
+ get: function () {
123
+ return this._isReadOnly;
124
+ },
125
+ set: function (value) {
126
+ this._isReadOnly = value;
127
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
128
+ var child = _a[_i];
129
+ child.isReadOnly = value;
130
+ }
131
+ },
132
+ enumerable: false,
133
+ configurable: true
134
+ });
135
+ Container.prototype._getTypeName = function () {
136
+ return "Container";
137
+ };
138
+ Container.prototype._flagDescendantsAsMatrixDirty = function () {
139
+ for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
140
+ var child = _a[_i];
141
+ child._markMatrixAsDirty();
142
+ }
143
+ };
144
+ /**
145
+ * Gets a child using its name
146
+ * @param name defines the child name to look for
147
+ * @returns the child control if found
148
+ */
149
+ Container.prototype.getChildByName = function (name) {
150
+ for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
151
+ var child = _a[_i];
152
+ if (child.name === name) {
153
+ return child;
154
+ }
155
+ }
156
+ return null;
157
+ };
158
+ /**
159
+ * Gets a child using its type and its name
160
+ * @param name defines the child name to look for
161
+ * @param type defines the child type to look for
162
+ * @returns the child control if found
163
+ */
164
+ Container.prototype.getChildByType = function (name, type) {
165
+ for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
166
+ var child = _a[_i];
167
+ if (child.typeName === type) {
168
+ return child;
169
+ }
170
+ }
171
+ return null;
172
+ };
173
+ /**
174
+ * Search for a specific control in children
175
+ * @param control defines the control to look for
176
+ * @returns true if the control is in child list
177
+ */
178
+ Container.prototype.containsControl = function (control) {
179
+ return this.children.indexOf(control) !== -1;
180
+ };
181
+ /**
182
+ * Adds a new control to the current container
183
+ * @param control defines the control to add
184
+ * @returns the current container
185
+ */
186
+ Container.prototype.addControl = function (control) {
187
+ if (!control) {
188
+ return this;
189
+ }
190
+ var index = this._children.indexOf(control);
191
+ if (index !== -1) {
192
+ return this;
193
+ }
194
+ control._link(this._host);
195
+ control._markAllAsDirty();
196
+ this._reOrderControl(control);
197
+ this._markAsDirty();
198
+ return this;
199
+ };
200
+ /**
201
+ * Removes all controls from the current container
202
+ * @returns the current container
203
+ */
204
+ Container.prototype.clearControls = function () {
205
+ var children = this.children.slice();
206
+ for (var _i = 0, children_1 = children; _i < children_1.length; _i++) {
207
+ var child = children_1[_i];
208
+ this.removeControl(child);
209
+ }
210
+ return this;
211
+ };
212
+ /**
213
+ * Removes a control from the current container
214
+ * @param control defines the control to remove
215
+ * @returns the current container
216
+ */
217
+ Container.prototype.removeControl = function (control) {
218
+ var index = this._children.indexOf(control);
219
+ if (index !== -1) {
220
+ this._children.splice(index, 1);
221
+ control.parent = null;
222
+ }
223
+ control.linkWithMesh(null);
224
+ if (this._host) {
225
+ this._host._cleanControlAfterRemoval(control);
226
+ }
227
+ this._markAsDirty();
228
+ return this;
229
+ };
230
+ /**
231
+ * @param control
232
+ * @hidden
233
+ */
234
+ Container.prototype._reOrderControl = function (control) {
235
+ this.removeControl(control);
236
+ var wasAdded = false;
237
+ for (var index = 0; index < this._children.length; index++) {
238
+ if (this._children[index].zIndex > control.zIndex) {
239
+ this._children.splice(index, 0, control);
240
+ wasAdded = true;
241
+ break;
242
+ }
243
+ }
244
+ if (!wasAdded) {
245
+ this._children.push(control);
246
+ }
247
+ control.parent = this;
248
+ this._markAsDirty();
249
+ };
250
+ /**
251
+ * @param offset
252
+ * @hidden
253
+ */
254
+ Container.prototype._offsetLeft = function (offset) {
255
+ _super.prototype._offsetLeft.call(this, offset);
256
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
257
+ var child = _a[_i];
258
+ child._offsetLeft(offset);
259
+ }
260
+ };
261
+ /**
262
+ * @param offset
263
+ * @hidden
264
+ */
265
+ Container.prototype._offsetTop = function (offset) {
266
+ _super.prototype._offsetTop.call(this, offset);
267
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
268
+ var child = _a[_i];
269
+ child._offsetTop(offset);
270
+ }
271
+ };
272
+ /** @hidden */
273
+ Container.prototype._markAllAsDirty = function () {
274
+ _super.prototype._markAllAsDirty.call(this);
275
+ for (var index = 0; index < this._children.length; index++) {
276
+ this._children[index]._markAllAsDirty();
277
+ }
278
+ };
279
+ /**
280
+ * @param context
281
+ * @hidden
282
+ */
283
+ Container.prototype._localDraw = function (context) {
284
+ if (this._background) {
285
+ context.save();
286
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
287
+ context.shadowColor = this.shadowColor;
288
+ context.shadowBlur = this.shadowBlur;
289
+ context.shadowOffsetX = this.shadowOffsetX;
290
+ context.shadowOffsetY = this.shadowOffsetY;
291
+ }
292
+ context.fillStyle = this._background;
293
+ context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
294
+ context.restore();
295
+ }
296
+ };
297
+ /**
298
+ * @param host
299
+ * @hidden
300
+ */
301
+ Container.prototype._link = function (host) {
302
+ _super.prototype._link.call(this, host);
303
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
304
+ var child = _a[_i];
305
+ child._link(host);
306
+ }
307
+ };
308
+ /** @hidden */
309
+ Container.prototype._beforeLayout = function () {
310
+ // Do nothing
311
+ };
312
+ /**
313
+ * @param parentMeasure
314
+ * @param context
315
+ * @hidden
316
+ */
317
+ Container.prototype._processMeasures = function (parentMeasure, context) {
318
+ if (this._isDirty || !this._cachedParentMeasure.isEqualsTo(parentMeasure)) {
319
+ _super.prototype._processMeasures.call(this, parentMeasure, context);
320
+ this._evaluateClippingState(parentMeasure);
321
+ if (this._renderToIntermediateTexture) {
322
+ if (this._intermediateTexture && this._host.getScene() != this._intermediateTexture.getScene()) {
323
+ this._intermediateTexture.dispose();
324
+ this._intermediateTexture = null;
325
+ }
326
+ if (!this._intermediateTexture) {
327
+ this._intermediateTexture = new DynamicTexture("", { width: this._currentMeasure.width, height: this._currentMeasure.height }, this._host.getScene(), false, Texture.NEAREST_SAMPLINGMODE, Constants.TEXTUREFORMAT_RGBA, false);
328
+ this._intermediateTexture.hasAlpha = true;
329
+ }
330
+ else {
331
+ this._intermediateTexture.scaleTo(this._currentMeasure.width, this._currentMeasure.height);
332
+ }
333
+ }
334
+ }
335
+ };
336
+ /**
337
+ * @param parentMeasure
338
+ * @param context
339
+ * @hidden
340
+ */
341
+ Container.prototype._layout = function (parentMeasure, context) {
342
+ var _a, _b;
343
+ if (!this.isDirty && (!this.isVisible || this.notRenderable)) {
344
+ return false;
345
+ }
346
+ this.host._numLayoutCalls++;
347
+ if (this._isDirty) {
348
+ this._currentMeasure.transformToRef(this._transformMatrix, this._prevCurrentMeasureTransformedIntoGlobalSpace);
349
+ }
350
+ var rebuildCount = 0;
351
+ context.save();
352
+ this._applyStates(context);
353
+ this._beforeLayout();
354
+ do {
355
+ var computedWidth = -1;
356
+ var computedHeight = -1;
357
+ this._rebuildLayout = false;
358
+ this._processMeasures(parentMeasure, context);
359
+ if (!this._isClipped) {
360
+ for (var _i = 0, _c = this._children; _i < _c.length; _i++) {
361
+ var child = _c[_i];
362
+ child._tempParentMeasure.copyFrom(this._measureForChildren);
363
+ if (child._layout(this._measureForChildren, context)) {
364
+ if (this.adaptWidthToChildren && child._width.isPixel) {
365
+ computedWidth = Math.max(computedWidth, child._currentMeasure.width + child._paddingLeftInPixels + child._paddingRightInPixels);
366
+ }
367
+ if (this.adaptHeightToChildren && child._height.isPixel) {
368
+ computedHeight = Math.max(computedHeight, child._currentMeasure.height + child._paddingTopInPixels + child._paddingBottomInPixels);
369
+ }
370
+ }
371
+ }
372
+ if (this.adaptWidthToChildren && computedWidth >= 0) {
373
+ computedWidth += this.paddingLeftInPixels + this.paddingRightInPixels;
374
+ if (this.width !== computedWidth + "px") {
375
+ (_a = this.parent) === null || _a === void 0 ? void 0 : _a._markAsDirty();
376
+ this.width = computedWidth + "px";
377
+ this._rebuildLayout = true;
378
+ }
379
+ }
380
+ if (this.adaptHeightToChildren && computedHeight >= 0) {
381
+ computedHeight += this.paddingTopInPixels + this.paddingBottomInPixels;
382
+ if (this.height !== computedHeight + "px") {
383
+ (_b = this.parent) === null || _b === void 0 ? void 0 : _b._markAsDirty();
384
+ this.height = computedHeight + "px";
385
+ this._rebuildLayout = true;
386
+ }
387
+ }
388
+ this._postMeasure();
389
+ }
390
+ rebuildCount++;
391
+ } while (this._rebuildLayout && rebuildCount < this.maxLayoutCycle);
392
+ if (rebuildCount >= 3 && this.logLayoutCycleErrors) {
393
+ Logger.Error("Layout cycle detected in GUI (Container name=".concat(this.name, ", uniqueId=").concat(this.uniqueId, ")"));
394
+ }
395
+ context.restore();
396
+ if (this._isDirty) {
397
+ this.invalidateRect();
398
+ this._isDirty = false;
399
+ }
400
+ return true;
401
+ };
402
+ Container.prototype._postMeasure = function () {
403
+ // Do nothing by default
404
+ };
405
+ /**
406
+ * @param context
407
+ * @param invalidatedRectangle
408
+ * @hidden
409
+ */
410
+ Container.prototype._draw = function (context, invalidatedRectangle) {
411
+ var renderToIntermediateTextureThisDraw = this._renderToIntermediateTexture && this._intermediateTexture;
412
+ var contextToDrawTo = renderToIntermediateTextureThisDraw ? this._intermediateTexture.getContext() : context;
413
+ if (renderToIntermediateTextureThisDraw) {
414
+ contextToDrawTo.save();
415
+ contextToDrawTo.translate(-this._currentMeasure.left, -this._currentMeasure.top);
416
+ if (invalidatedRectangle) {
417
+ contextToDrawTo.clearRect(invalidatedRectangle.left, invalidatedRectangle.top, invalidatedRectangle.width, invalidatedRectangle.height);
418
+ }
419
+ else {
420
+ contextToDrawTo.clearRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
421
+ }
422
+ }
423
+ this._localDraw(contextToDrawTo);
424
+ context.save();
425
+ if (this.clipChildren) {
426
+ this._clipForChildren(contextToDrawTo);
427
+ }
428
+ for (var _i = 0, _a = this._children; _i < _a.length; _i++) {
429
+ var child = _a[_i];
430
+ // Only redraw parts of the screen that are invalidated
431
+ if (invalidatedRectangle) {
432
+ if (!child._intersectsRect(invalidatedRectangle)) {
433
+ continue;
434
+ }
435
+ }
436
+ child._render(contextToDrawTo, invalidatedRectangle);
437
+ }
438
+ if (renderToIntermediateTextureThisDraw) {
439
+ contextToDrawTo.restore();
440
+ context.save();
441
+ context.globalAlpha = this.alpha;
442
+ context.drawImage(contextToDrawTo.canvas, this._currentMeasure.left, this._currentMeasure.top);
443
+ context.restore();
444
+ }
445
+ context.restore();
446
+ };
447
+ Container.prototype.getDescendantsToRef = function (results, directDescendantsOnly, predicate) {
448
+ if (directDescendantsOnly === void 0) { directDescendantsOnly = false; }
449
+ if (!this.children) {
450
+ return;
451
+ }
452
+ for (var index = 0; index < this.children.length; index++) {
453
+ var item = this.children[index];
454
+ if (!predicate || predicate(item)) {
455
+ results.push(item);
456
+ }
457
+ if (!directDescendantsOnly) {
458
+ item.getDescendantsToRef(results, false, predicate);
459
+ }
460
+ }
461
+ };
462
+ /**
463
+ * @param x
464
+ * @param y
465
+ * @param pi
466
+ * @param type
467
+ * @param pointerId
468
+ * @param buttonIndex
469
+ * @param deltaX
470
+ * @param deltaY
471
+ * @hidden
472
+ */
473
+ Container.prototype._processPicking = function (x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY) {
474
+ if (!this._isEnabled || !this.isVisible || this.notRenderable) {
475
+ return false;
476
+ }
477
+ // checks if the picking position is within the container
478
+ var contains = _super.prototype.contains.call(this, x, y);
479
+ // if clipChildren is off, we should still pass picking events to children even if we don't contain the pointer
480
+ if (!contains && this.clipChildren) {
481
+ return false;
482
+ }
483
+ // Checking backwards to pick closest first
484
+ for (var index = this._children.length - 1; index >= 0; index--) {
485
+ var child = this._children[index];
486
+ if (child._processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY)) {
487
+ if (child.hoverCursor) {
488
+ this._host._changeCursor(child.hoverCursor);
489
+ }
490
+ return true;
491
+ }
492
+ }
493
+ if (!contains) {
494
+ return false;
495
+ }
496
+ if (!this.isHitTestVisible) {
497
+ return false;
498
+ }
499
+ return this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);
500
+ };
501
+ /**
502
+ * @param parentMeasure
503
+ * @param context
504
+ * @hidden
505
+ */
506
+ Container.prototype._additionalProcessing = function (parentMeasure, context) {
507
+ _super.prototype._additionalProcessing.call(this, parentMeasure, context);
508
+ this._measureForChildren.copyFrom(this._currentMeasure);
509
+ };
510
+ /**
511
+ * Serializes the current control
512
+ * @param serializationObject defined the JSON serialized object
513
+ */
514
+ Container.prototype.serialize = function (serializationObject) {
515
+ _super.prototype.serialize.call(this, serializationObject);
516
+ if (!this.children.length) {
517
+ return;
518
+ }
519
+ serializationObject.children = [];
520
+ for (var _i = 0, _a = this.children; _i < _a.length; _i++) {
521
+ var child = _a[_i];
522
+ var childSerializationObject = {};
523
+ child.serialize(childSerializationObject);
524
+ serializationObject.children.push(childSerializationObject);
525
+ }
526
+ };
527
+ /** Releases associated resources */
528
+ Container.prototype.dispose = function () {
529
+ var _a;
530
+ _super.prototype.dispose.call(this);
531
+ for (var index = this.children.length - 1; index >= 0; index--) {
532
+ this.children[index].dispose();
533
+ }
534
+ (_a = this._intermediateTexture) === null || _a === void 0 ? void 0 : _a.dispose();
535
+ };
536
+ /**
537
+ * @param serializedObject
538
+ * @param host
539
+ * @hidden
540
+ */
541
+ Container.prototype._parseFromContent = function (serializedObject, host) {
542
+ _super.prototype._parseFromContent.call(this, serializedObject, host);
543
+ this._link(host);
544
+ if (!serializedObject.children) {
545
+ return;
546
+ }
547
+ for (var _i = 0, _a = serializedObject.children; _i < _a.length; _i++) {
548
+ var childData = _a[_i];
549
+ this.addControl(Control.Parse(childData, host));
550
+ }
551
+ };
552
+ __decorate([
553
+ serialize()
554
+ ], Container.prototype, "renderToIntermediateTexture", null);
555
+ __decorate([
556
+ serialize()
557
+ ], Container.prototype, "maxLayoutCycle", void 0);
558
+ __decorate([
559
+ serialize()
560
+ ], Container.prototype, "adaptHeightToChildren", null);
561
+ __decorate([
562
+ serialize()
563
+ ], Container.prototype, "adaptWidthToChildren", null);
564
+ __decorate([
565
+ serialize()
566
+ ], Container.prototype, "background", null);
567
+ return Container;
568
+ }(Control));
569
+ export { Container };
570
+ RegisterClass("BABYLON.GUI.Container", Container);
526
571
  //# sourceMappingURL=container.js.map