@babylonjs/gui 5.0.0-rc.6 → 5.0.0

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 (277) 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 -448
  5. package/2D/advancedDynamicTexture.js +1318 -1318
  6. package/2D/advancedDynamicTexture.js.map +1 -1
  7. package/2D/controls/button.d.ts +135 -135
  8. package/2D/controls/button.js +276 -276
  9. package/2D/controls/button.js.map +1 -1
  10. package/2D/controls/checkbox.d.ts +59 -59
  11. package/2D/controls/checkbox.js +188 -188
  12. package/2D/controls/checkbox.js.map +1 -1
  13. package/2D/controls/colorpicker.d.ts +103 -103
  14. package/2D/controls/colorpicker.js +1417 -1417
  15. package/2D/controls/colorpicker.js.map +1 -1
  16. package/2D/controls/container.d.ts +175 -175
  17. package/2D/controls/container.js +570 -570
  18. package/2D/controls/container.js.map +1 -1
  19. package/2D/controls/control.d.ts +866 -866
  20. package/2D/controls/control.js +2433 -2433
  21. package/2D/controls/control.js.map +1 -1
  22. package/2D/controls/displayGrid.d.ts +53 -53
  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 -59
  29. package/2D/controls/focusableButton.js +99 -99
  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 -139
  35. package/2D/controls/grid.js +529 -529
  36. package/2D/controls/grid.js.map +1 -1
  37. package/2D/controls/image.d.ts +204 -204
  38. package/2D/controls/image.js +887 -887
  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/inputPassword.d.ts +9 -8
  43. package/2D/controls/inputPassword.js +28 -25
  44. package/2D/controls/inputPassword.js.map +1 -1
  45. package/2D/controls/inputText.d.ts +201 -201
  46. package/2D/controls/inputText.js +1119 -1119
  47. package/2D/controls/inputText.js.map +1 -1
  48. package/2D/controls/line.d.ts +66 -66
  49. package/2D/controls/line.js +271 -271
  50. package/2D/controls/line.js.map +1 -1
  51. package/2D/controls/multiLine.d.ts +75 -75
  52. package/2D/controls/multiLine.js +262 -262
  53. package/2D/controls/multiLine.js.map +1 -1
  54. package/2D/controls/radioButton.d.ts +49 -49
  55. package/2D/controls/radioButton.js +205 -205
  56. package/2D/controls/radioButton.js.map +1 -1
  57. package/2D/controls/rectangle.d.ts +29 -29
  58. package/2D/controls/rectangle.js +150 -150
  59. package/2D/controls/rectangle.js.map +1 -1
  60. package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -182
  61. package/2D/controls/scrollViewers/scrollViewer.js +677 -677
  62. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  63. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -57
  64. package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -278
  65. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  66. package/2D/controls/selector.d.ts +263 -263
  67. package/2D/controls/selector.js +692 -692
  68. package/2D/controls/sliders/baseSlider.d.ts +82 -82
  69. package/2D/controls/sliders/baseSlider.js +347 -347
  70. package/2D/controls/sliders/baseSlider.js.map +1 -1
  71. package/2D/controls/sliders/imageBasedSlider.d.ts +49 -49
  72. package/2D/controls/sliders/imageBasedSlider.js +192 -192
  73. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  74. package/2D/controls/sliders/imageScrollBar.d.ts +65 -65
  75. package/2D/controls/sliders/imageScrollBar.js +263 -263
  76. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  77. package/2D/controls/sliders/scrollBar.d.ts +38 -38
  78. package/2D/controls/sliders/scrollBar.js +143 -143
  79. package/2D/controls/sliders/scrollBar.js.map +1 -1
  80. package/2D/controls/sliders/slider.d.ts +35 -35
  81. package/2D/controls/sliders/slider.js +271 -271
  82. package/2D/controls/sliders/slider.js.map +1 -1
  83. package/2D/controls/stackPanel.d.ts +64 -64
  84. package/2D/controls/stackPanel.js +246 -246
  85. package/2D/controls/stackPanel.js.map +1 -1
  86. package/2D/controls/statics.d.ts +6 -6
  87. package/2D/controls/statics.js +49 -49
  88. package/2D/controls/textBlock.d.ts +175 -175
  89. package/2D/controls/textBlock.js +603 -603
  90. package/2D/controls/textBlock.js.map +1 -1
  91. package/2D/controls/textWrapper.d.ts +13 -13
  92. package/2D/controls/textWrapper.js +101 -101
  93. package/2D/controls/toggleButton.d.ts +117 -117
  94. package/2D/controls/toggleButton.js +268 -268
  95. package/2D/controls/toggleButton.js.map +1 -1
  96. package/2D/controls/virtualKeyboard.d.ts +96 -96
  97. package/2D/controls/virtualKeyboard.js +256 -256
  98. package/2D/controls/virtualKeyboard.js.map +1 -1
  99. package/2D/index.d.ts +9 -9
  100. package/2D/index.js +10 -9
  101. package/2D/index.js.map +1 -1
  102. package/2D/math2D.d.ts +117 -117
  103. package/2D/math2D.js +221 -221
  104. package/2D/math2D.js.map +1 -1
  105. package/2D/measure.d.ts +77 -77
  106. package/2D/measure.js +139 -139
  107. package/2D/measure.js.map +1 -1
  108. package/2D/multiLinePoint.d.ts +47 -47
  109. package/2D/multiLinePoint.js +127 -127
  110. package/2D/multiLinePoint.js.map +1 -1
  111. package/2D/style.d.ts +46 -46
  112. package/2D/style.js +97 -97
  113. package/2D/style.js.map +1 -1
  114. package/2D/valueAndUnit.d.ts +89 -89
  115. package/2D/valueAndUnit.js +226 -226
  116. package/2D/valueAndUnit.js.map +1 -1
  117. package/2D/xmlLoader.d.ts +60 -60
  118. package/2D/xmlLoader.js +348 -348
  119. package/2D/xmlLoader.js.map +1 -1
  120. package/3D/behaviors/defaultBehavior.d.ts +73 -73
  121. package/3D/behaviors/defaultBehavior.js +121 -121
  122. package/3D/behaviors/defaultBehavior.js.map +1 -1
  123. package/3D/controls/abstractButton3D.d.ts +15 -15
  124. package/3D/controls/abstractButton3D.js +25 -25
  125. package/3D/controls/abstractButton3D.js.map +1 -1
  126. package/3D/controls/button3D.d.ts +30 -30
  127. package/3D/controls/button3D.js +93 -93
  128. package/3D/controls/button3D.js.map +1 -1
  129. package/3D/controls/container3D.d.ts +72 -72
  130. package/3D/controls/container3D.js +139 -139
  131. package/3D/controls/container3D.js.map +1 -1
  132. package/3D/controls/contentDisplay3D.d.ts +30 -30
  133. package/3D/controls/contentDisplay3D.js +79 -79
  134. package/3D/controls/contentDisplay3D.js.map +1 -1
  135. package/3D/controls/control3D.d.ts +201 -201
  136. package/3D/controls/control3D.js +445 -445
  137. package/3D/controls/control3D.js.map +1 -1
  138. package/3D/controls/cylinderPanel.d.ts +17 -17
  139. package/3D/controls/cylinderPanel.js +66 -66
  140. package/3D/controls/cylinderPanel.js.map +1 -1
  141. package/3D/controls/handMenu.d.ts +28 -28
  142. package/3D/controls/handMenu.js +47 -47
  143. package/3D/controls/handMenu.js.map +1 -1
  144. package/3D/controls/holographicBackplate.d.ts +49 -49
  145. package/3D/controls/holographicBackplate.js +120 -120
  146. package/3D/controls/holographicBackplate.js.map +1 -1
  147. package/3D/controls/holographicButton.d.ts +84 -84
  148. package/3D/controls/holographicButton.js +339 -339
  149. package/3D/controls/holographicButton.js.map +1 -1
  150. package/3D/controls/holographicSlate.d.ts +131 -131
  151. package/3D/controls/holographicSlate.js +431 -431
  152. package/3D/controls/holographicSlate.js.map +1 -1
  153. package/3D/controls/index.d.ts +21 -21
  154. package/3D/controls/index.js +21 -21
  155. package/3D/controls/meshButton3D.d.ts +21 -21
  156. package/3D/controls/meshButton3D.js +62 -62
  157. package/3D/controls/meshButton3D.js.map +1 -1
  158. package/3D/controls/nearMenu.d.ts +44 -44
  159. package/3D/controls/nearMenu.js +114 -114
  160. package/3D/controls/nearMenu.js.map +1 -1
  161. package/3D/controls/planePanel.d.ts +9 -9
  162. package/3D/controls/planePanel.js +36 -36
  163. package/3D/controls/planePanel.js.map +1 -1
  164. package/3D/controls/scatterPanel.d.ts +18 -18
  165. package/3D/controls/scatterPanel.js +108 -108
  166. package/3D/controls/scatterPanel.js.map +1 -1
  167. package/3D/controls/slider3D.d.ts +81 -81
  168. package/3D/controls/slider3D.js +268 -268
  169. package/3D/controls/slider3D.js.map +1 -1
  170. package/3D/controls/spherePanel.d.ts +17 -17
  171. package/3D/controls/spherePanel.js +67 -67
  172. package/3D/controls/spherePanel.js.map +1 -1
  173. package/3D/controls/stackPanel3D.d.ts +22 -22
  174. package/3D/controls/stackPanel3D.js +107 -107
  175. package/3D/controls/touchButton3D.d.ts +80 -80
  176. package/3D/controls/touchButton3D.js +233 -233
  177. package/3D/controls/touchButton3D.js.map +1 -1
  178. package/3D/controls/touchHolographicButton.d.ts +110 -110
  179. package/3D/controls/touchHolographicButton.js +445 -445
  180. package/3D/controls/touchHolographicButton.js.map +1 -1
  181. package/3D/controls/touchHolographicMenu.d.ts +61 -61
  182. package/3D/controls/touchHolographicMenu.js +149 -149
  183. package/3D/controls/touchHolographicMenu.js.map +1 -1
  184. package/3D/controls/touchMeshButton3D.d.ts +21 -21
  185. package/3D/controls/touchMeshButton3D.js +62 -62
  186. package/3D/controls/touchMeshButton3D.js.map +1 -1
  187. package/3D/controls/volumeBasedPanel.d.ts +53 -53
  188. package/3D/controls/volumeBasedPanel.js +174 -174
  189. package/3D/controls/volumeBasedPanel.js.map +1 -1
  190. package/3D/gizmos/gizmoHandle.d.ts +108 -108
  191. package/3D/gizmos/gizmoHandle.js +209 -209
  192. package/3D/gizmos/gizmoHandle.js.map +1 -1
  193. package/3D/gizmos/index.d.ts +2 -2
  194. package/3D/gizmos/index.js +2 -2
  195. package/3D/gizmos/slateGizmo.d.ts +57 -57
  196. package/3D/gizmos/slateGizmo.js +369 -369
  197. package/3D/gizmos/slateGizmo.js.map +1 -1
  198. package/3D/gui3DManager.d.ts +94 -94
  199. package/3D/gui3DManager.js +257 -257
  200. package/3D/gui3DManager.js.map +1 -1
  201. package/3D/index.d.ts +5 -5
  202. package/3D/index.js +6 -5
  203. package/3D/index.js.map +1 -1
  204. package/3D/materials/fluent/fluentMaterial.d.ts +91 -90
  205. package/3D/materials/fluent/fluentMaterial.js +292 -292
  206. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  207. package/3D/materials/fluent/index.d.ts +1 -1
  208. package/3D/materials/fluent/index.js +1 -1
  209. package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
  210. package/3D/materials/fluent/shaders/fluent.fragment.js +8 -8
  211. package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
  212. package/3D/materials/fluent/shaders/fluent.vertex.js +8 -8
  213. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -154
  214. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -469
  215. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  216. package/3D/materials/fluentBackplate/index.d.ts +1 -1
  217. package/3D/materials/fluentBackplate/index.js +1 -1
  218. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
  219. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -8
  220. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
  221. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -8
  222. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -189
  223. package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -539
  224. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  225. package/3D/materials/fluentButton/index.d.ts +1 -1
  226. package/3D/materials/fluentButton/index.js +1 -1
  227. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
  228. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -8
  229. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
  230. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -8
  231. package/3D/materials/fluentMaterial.d.ts +4 -4
  232. package/3D/materials/fluentMaterial.js +4 -4
  233. package/3D/materials/handle/handleMaterial.d.ts +68 -68
  234. package/3D/materials/handle/handleMaterial.js +126 -126
  235. package/3D/materials/handle/handleMaterial.js.map +1 -1
  236. package/3D/materials/handle/index.d.ts +1 -1
  237. package/3D/materials/handle/index.js +1 -1
  238. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
  239. package/3D/materials/handle/shaders/handle.fragment.js +8 -8
  240. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
  241. package/3D/materials/handle/shaders/handle.vertex.js +8 -8
  242. package/3D/materials/index.d.ts +5 -5
  243. package/3D/materials/index.js +6 -5
  244. package/3D/materials/index.js.map +1 -1
  245. package/3D/materials/mrdl/index.d.ts +3 -3
  246. package/3D/materials/mrdl/index.js +3 -3
  247. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -147
  248. package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -436
  249. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  250. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +334 -333
  251. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -851
  252. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  253. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +334 -333
  254. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -851
  255. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  256. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
  257. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -8
  258. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
  259. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -8
  260. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
  261. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -8
  262. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
  263. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -8
  264. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
  265. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -8
  266. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
  267. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -8
  268. package/3D/vector3WithInfo.d.ts +16 -16
  269. package/3D/vector3WithInfo.js +23 -23
  270. package/index.d.ts +2 -2
  271. package/index.js +3 -2
  272. package/index.js.map +1 -1
  273. package/legacy/legacy.d.ts +1 -1
  274. package/legacy/legacy.js +14 -13
  275. package/legacy/legacy.js.map +1 -1
  276. package/license.md +71 -0
  277. package/package.json +24 -5
@@ -1,571 +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
- /**
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);
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
+ /**
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);
571
571
  //# sourceMappingURL=container.js.map