@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,235 +1,269 @@
1
- import { __extends } from "tslib";
2
- import { Observable } from "@babylonjs/core/Misc/observable.js";
3
- import { Rectangle } from "./rectangle.js";
4
- import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
5
- /**
6
- * Class used to create toggle buttons
7
- * @since 5.0.0
8
- */
9
- var ToggleButton = /** @class */ (function (_super) {
10
- __extends(ToggleButton, _super);
11
- /**
12
- * Creates a new ToggleButton
13
- * @param name defines the control name
14
- * @param group defines the toggle group this toggle belongs to
15
- */
16
- function ToggleButton(name, group) {
17
- var _this = _super.call(this, name) || this;
18
- _this.name = name;
19
- /** Observable raised when isActive is changed */
20
- _this.onIsActiveChangedObservable = new Observable();
21
- /**
22
- * Gets or sets a boolean indicating that the toggle button will let internal controls handle picking instead of doing it directly using its bounding info
23
- */
24
- _this.delegatePickingToChildren = false;
25
- _this._isActive = false;
26
- _this.group = group !== null && group !== void 0 ? group : "";
27
- _this.thickness = 0;
28
- _this.isPointerBlocker = true;
29
- var alphaStore = null;
30
- _this.toActiveAnimation = function () {
31
- _this.thickness = 1;
32
- };
33
- _this.toInactiveAnimation = function () {
34
- _this.thickness = 0;
35
- };
36
- _this.pointerEnterActiveAnimation = function () {
37
- alphaStore = _this.alpha;
38
- _this.alpha -= 0.1;
39
- };
40
- _this.pointerOutActiveAnimation = function () {
41
- if (alphaStore !== null) {
42
- _this.alpha = alphaStore;
43
- }
44
- };
45
- _this.pointerDownActiveAnimation = function () {
46
- _this.scaleX -= 0.05;
47
- _this.scaleY -= 0.05;
48
- };
49
- _this.pointerUpActiveAnimation = function () {
50
- _this.scaleX += 0.05;
51
- _this.scaleY += 0.05;
52
- };
53
- _this.pointerEnterInactiveAnimation = function () {
54
- alphaStore = _this.alpha;
55
- _this.alpha -= 0.1;
56
- };
57
- _this.pointerOutInactiveAnimation = function () {
58
- if (alphaStore !== null) {
59
- _this.alpha = alphaStore;
60
- }
61
- };
62
- _this.pointerDownInactiveAnimation = function () {
63
- _this.scaleX -= 0.05;
64
- _this.scaleY -= 0.05;
65
- };
66
- _this.pointerUpInactiveAnimation = function () {
67
- _this.scaleX += 0.05;
68
- _this.scaleY += 0.05;
69
- };
70
- return _this;
71
- }
72
- Object.defineProperty(ToggleButton.prototype, "group", {
73
- /** Gets or sets group name this toggle button belongs to */
74
- get: function () {
75
- return this._group;
76
- },
77
- set: function (value) {
78
- if (this._group === value) {
79
- return;
80
- }
81
- this._group = value;
82
- },
83
- enumerable: false,
84
- configurable: true
85
- });
86
- Object.defineProperty(ToggleButton.prototype, "isActive", {
87
- /** Gets or sets a boolean indicating if the toogle button is active or not */
88
- get: function () {
89
- return this._isActive;
90
- },
91
- set: function (value) {
92
- var _this = this;
93
- var _a, _b;
94
- // Function modeled after radioButton.ts
95
- if (this._isActive === value) {
96
- return;
97
- }
98
- this._isActive = value;
99
- // Update the visual state based on the new value
100
- if (this._isActive) {
101
- (_a = this.toActiveAnimation) === null || _a === void 0 ? void 0 : _a.call(this);
102
- }
103
- else {
104
- (_b = this.toInactiveAnimation) === null || _b === void 0 ? void 0 : _b.call(this);
105
- }
106
- this._markAsDirty();
107
- this.onIsActiveChangedObservable.notifyObservers(value);
108
- if (this._isActive && this._host && this._group) {
109
- // A toggle button in a group can only have 1 active element at a given time.
110
- // If this toggle button has a group, set other toggle buttons in the group to inactive.
111
- this._host.executeOnAllControls(function (control) {
112
- // Check for control type ToggleButton
113
- if (control.typeName === "ToggleButton") {
114
- // Don't do anything to this toggle button
115
- if (control === _this) {
116
- return;
117
- }
118
- var childToggle = control;
119
- // If toggle button is in same group, set isActive to false
120
- if (childToggle.group === _this.group) {
121
- childToggle.isActive = false;
122
- }
123
- }
124
- });
125
- }
126
- },
127
- enumerable: false,
128
- configurable: true
129
- });
130
- ToggleButton.prototype._getTypeName = function () {
131
- return "ToggleButton";
132
- };
133
- // While being a container, the toggle button behaves like a control.
134
- /** @hidden */
135
- ToggleButton.prototype._processPicking = function (x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY) {
136
- if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {
137
- return false;
138
- }
139
- if (!_super.prototype.contains.call(this, x, y)) {
140
- return false;
141
- }
142
- if (this.delegatePickingToChildren) {
143
- var contains = false;
144
- for (var index = this._children.length - 1; index >= 0; index--) {
145
- var child = this._children[index];
146
- if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {
147
- contains = true;
148
- break;
149
- }
150
- }
151
- if (!contains) {
152
- return false;
153
- }
154
- }
155
- this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);
156
- return true;
157
- };
158
- /** @hidden */
159
- ToggleButton.prototype._onPointerEnter = function (target, pi) {
160
- if (!_super.prototype._onPointerEnter.call(this, target, pi)) {
161
- return false;
162
- }
163
- if (this.isReadOnly) {
164
- return true;
165
- }
166
- if (this._isActive) {
167
- if (this.pointerEnterActiveAnimation) {
168
- this.pointerEnterActiveAnimation();
169
- }
170
- }
171
- else {
172
- if (this.pointerEnterInactiveAnimation) {
173
- this.pointerEnterInactiveAnimation();
174
- }
175
- }
176
- return true;
177
- };
178
- /** @hidden */
179
- ToggleButton.prototype._onPointerOut = function (target, pi, force) {
180
- if (force === void 0) { force = false; }
181
- if (!this.isReadOnly) {
182
- if (this._isActive) {
183
- if (this.pointerOutActiveAnimation) {
184
- this.pointerOutActiveAnimation();
185
- }
186
- }
187
- else {
188
- if (this.pointerOutInactiveAnimation) {
189
- this.pointerOutInactiveAnimation();
190
- }
191
- }
192
- }
193
- _super.prototype._onPointerOut.call(this, target, pi, force);
194
- };
195
- /** @hidden */
196
- ToggleButton.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex, pi) {
197
- if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
198
- return false;
199
- }
200
- if (this.isReadOnly) {
201
- return true;
202
- }
203
- if (this._isActive) {
204
- if (this.pointerDownActiveAnimation) {
205
- this.pointerDownActiveAnimation();
206
- }
207
- }
208
- else {
209
- if (this.pointerDownInactiveAnimation) {
210
- this.pointerDownInactiveAnimation();
211
- }
212
- }
213
- return true;
214
- };
215
- /** @hidden */
216
- ToggleButton.prototype._onPointerUp = function (target, coordinates, pointerId, buttonIndex, notifyClick, pi) {
217
- if (!this.isReadOnly) {
218
- if (this._isActive) {
219
- if (this.pointerUpActiveAnimation) {
220
- this.pointerUpActiveAnimation();
221
- }
222
- }
223
- else {
224
- if (this.pointerUpInactiveAnimation) {
225
- this.pointerUpInactiveAnimation();
226
- }
227
- }
228
- }
229
- _super.prototype._onPointerUp.call(this, target, coordinates, pointerId, buttonIndex, notifyClick, pi);
230
- };
231
- return ToggleButton;
232
- }(Rectangle));
233
- export { ToggleButton };
234
- RegisterClass("BABYLON.GUI.ToggleButton", ToggleButton);
1
+ import { __extends } from "tslib";
2
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
3
+ import { Rectangle } from "./rectangle";
4
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
5
+ /**
6
+ * Class used to create toggle buttons
7
+ * @since 5.0.0
8
+ */
9
+ var ToggleButton = /** @class */ (function (_super) {
10
+ __extends(ToggleButton, _super);
11
+ /**
12
+ * Creates a new ToggleButton
13
+ * @param name defines the control name
14
+ * @param group defines the toggle group this toggle belongs to
15
+ */
16
+ function ToggleButton(name, group) {
17
+ var _this = _super.call(this, name) || this;
18
+ _this.name = name;
19
+ /** Observable raised when isActive is changed */
20
+ _this.onIsActiveChangedObservable = new Observable();
21
+ /**
22
+ * Gets or sets a boolean indicating that the toggle button will let internal controls handle picking instead of doing it directly using its bounding info
23
+ */
24
+ _this.delegatePickingToChildren = false;
25
+ _this._isActive = false;
26
+ _this.group = group !== null && group !== void 0 ? group : "";
27
+ _this.thickness = 0;
28
+ _this.isPointerBlocker = true;
29
+ var alphaStore = null;
30
+ _this.toActiveAnimation = function () {
31
+ _this.thickness = 1;
32
+ };
33
+ _this.toInactiveAnimation = function () {
34
+ _this.thickness = 0;
35
+ };
36
+ _this.pointerEnterActiveAnimation = function () {
37
+ alphaStore = _this.alpha;
38
+ _this.alpha -= 0.1;
39
+ };
40
+ _this.pointerOutActiveAnimation = function () {
41
+ if (alphaStore !== null) {
42
+ _this.alpha = alphaStore;
43
+ }
44
+ };
45
+ _this.pointerDownActiveAnimation = function () {
46
+ _this.scaleX -= 0.05;
47
+ _this.scaleY -= 0.05;
48
+ };
49
+ _this.pointerUpActiveAnimation = function () {
50
+ _this.scaleX += 0.05;
51
+ _this.scaleY += 0.05;
52
+ };
53
+ _this.pointerEnterInactiveAnimation = function () {
54
+ alphaStore = _this.alpha;
55
+ _this.alpha -= 0.1;
56
+ };
57
+ _this.pointerOutInactiveAnimation = function () {
58
+ if (alphaStore !== null) {
59
+ _this.alpha = alphaStore;
60
+ }
61
+ };
62
+ _this.pointerDownInactiveAnimation = function () {
63
+ _this.scaleX -= 0.05;
64
+ _this.scaleY -= 0.05;
65
+ };
66
+ _this.pointerUpInactiveAnimation = function () {
67
+ _this.scaleX += 0.05;
68
+ _this.scaleY += 0.05;
69
+ };
70
+ return _this;
71
+ }
72
+ Object.defineProperty(ToggleButton.prototype, "group", {
73
+ /** Gets or sets group name this toggle button belongs to */
74
+ get: function () {
75
+ return this._group;
76
+ },
77
+ set: function (value) {
78
+ if (this._group === value) {
79
+ return;
80
+ }
81
+ this._group = value;
82
+ },
83
+ enumerable: false,
84
+ configurable: true
85
+ });
86
+ Object.defineProperty(ToggleButton.prototype, "isActive", {
87
+ /** Gets or sets a boolean indicating if the toggle button is active or not */
88
+ get: function () {
89
+ return this._isActive;
90
+ },
91
+ set: function (value) {
92
+ var _this = this;
93
+ var _a, _b;
94
+ // Function modeled after radioButton.ts
95
+ if (this._isActive === value) {
96
+ return;
97
+ }
98
+ this._isActive = value;
99
+ // Update the visual state based on the new value
100
+ if (this._isActive) {
101
+ (_a = this.toActiveAnimation) === null || _a === void 0 ? void 0 : _a.call(this);
102
+ }
103
+ else {
104
+ (_b = this.toInactiveAnimation) === null || _b === void 0 ? void 0 : _b.call(this);
105
+ }
106
+ this._markAsDirty();
107
+ this.onIsActiveChangedObservable.notifyObservers(value);
108
+ if (this._isActive && this._host && this._group) {
109
+ // A toggle button in a group can only have 1 active element at a given time.
110
+ // If this toggle button has a group, set other toggle buttons in the group to inactive.
111
+ this._host.executeOnAllControls(function (control) {
112
+ // Check for control type ToggleButton
113
+ if (control.typeName === "ToggleButton") {
114
+ // Don't do anything to this toggle button
115
+ if (control === _this) {
116
+ return;
117
+ }
118
+ var childToggle = control;
119
+ // If toggle button is in same group, set isActive to false
120
+ if (childToggle.group === _this.group) {
121
+ childToggle.isActive = false;
122
+ }
123
+ }
124
+ });
125
+ }
126
+ },
127
+ enumerable: false,
128
+ configurable: true
129
+ });
130
+ ToggleButton.prototype._getTypeName = function () {
131
+ return "ToggleButton";
132
+ };
133
+ // While being a container, the toggle button behaves like a control.
134
+ /**
135
+ * @param x
136
+ * @param y
137
+ * @param pi
138
+ * @param type
139
+ * @param pointerId
140
+ * @param buttonIndex
141
+ * @param deltaX
142
+ * @param deltaY
143
+ * @hidden
144
+ */
145
+ ToggleButton.prototype._processPicking = function (x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY) {
146
+ if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {
147
+ return false;
148
+ }
149
+ if (!_super.prototype.contains.call(this, x, y)) {
150
+ return false;
151
+ }
152
+ if (this.delegatePickingToChildren) {
153
+ var contains = false;
154
+ for (var index = this._children.length - 1; index >= 0; index--) {
155
+ var child = this._children[index];
156
+ if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {
157
+ contains = true;
158
+ break;
159
+ }
160
+ }
161
+ if (!contains) {
162
+ return false;
163
+ }
164
+ }
165
+ this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);
166
+ return true;
167
+ };
168
+ /**
169
+ * @param target
170
+ * @param pi
171
+ * @hidden
172
+ */
173
+ ToggleButton.prototype._onPointerEnter = function (target, pi) {
174
+ if (!_super.prototype._onPointerEnter.call(this, target, pi)) {
175
+ return false;
176
+ }
177
+ if (this.isReadOnly) {
178
+ return true;
179
+ }
180
+ if (this._isActive) {
181
+ if (this.pointerEnterActiveAnimation) {
182
+ this.pointerEnterActiveAnimation();
183
+ }
184
+ }
185
+ else {
186
+ if (this.pointerEnterInactiveAnimation) {
187
+ this.pointerEnterInactiveAnimation();
188
+ }
189
+ }
190
+ return true;
191
+ };
192
+ /**
193
+ * @param target
194
+ * @param pi
195
+ * @param force
196
+ * @hidden
197
+ */
198
+ ToggleButton.prototype._onPointerOut = function (target, pi, force) {
199
+ if (force === void 0) { force = false; }
200
+ if (!this.isReadOnly) {
201
+ if (this._isActive) {
202
+ if (this.pointerOutActiveAnimation) {
203
+ this.pointerOutActiveAnimation();
204
+ }
205
+ }
206
+ else {
207
+ if (this.pointerOutInactiveAnimation) {
208
+ this.pointerOutInactiveAnimation();
209
+ }
210
+ }
211
+ }
212
+ _super.prototype._onPointerOut.call(this, target, pi, force);
213
+ };
214
+ /**
215
+ * @param target
216
+ * @param coordinates
217
+ * @param pointerId
218
+ * @param buttonIndex
219
+ * @param pi
220
+ * @hidden
221
+ */
222
+ ToggleButton.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex, pi) {
223
+ if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
224
+ return false;
225
+ }
226
+ if (this.isReadOnly) {
227
+ return true;
228
+ }
229
+ if (this._isActive) {
230
+ if (this.pointerDownActiveAnimation) {
231
+ this.pointerDownActiveAnimation();
232
+ }
233
+ }
234
+ else {
235
+ if (this.pointerDownInactiveAnimation) {
236
+ this.pointerDownInactiveAnimation();
237
+ }
238
+ }
239
+ return true;
240
+ };
241
+ /**
242
+ * @param target
243
+ * @param coordinates
244
+ * @param pointerId
245
+ * @param buttonIndex
246
+ * @param notifyClick
247
+ * @param pi
248
+ * @hidden
249
+ */
250
+ ToggleButton.prototype._onPointerUp = function (target, coordinates, pointerId, buttonIndex, notifyClick, pi) {
251
+ if (!this.isReadOnly) {
252
+ if (this._isActive) {
253
+ if (this.pointerUpActiveAnimation) {
254
+ this.pointerUpActiveAnimation();
255
+ }
256
+ }
257
+ else {
258
+ if (this.pointerUpInactiveAnimation) {
259
+ this.pointerUpInactiveAnimation();
260
+ }
261
+ }
262
+ }
263
+ _super.prototype._onPointerUp.call(this, target, coordinates, pointerId, buttonIndex, notifyClick, pi);
264
+ };
265
+ return ToggleButton;
266
+ }(Rectangle));
267
+ export { ToggleButton };
268
+ RegisterClass("BABYLON.GUI.ToggleButton", ToggleButton);
235
269
  //# sourceMappingURL=toggleButton.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"toggleButton.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/toggleButton.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\nimport { Observable } from \"@babylonjs/core/Misc/observable\";\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\n\nimport { Rectangle } from \"./rectangle\";\nimport { Control } from \"./control\";\nimport { RegisterClass } from \"@babylonjs/core/Misc/typeStore\";\nimport { PointerInfoBase } from \"@babylonjs/core/Events/pointerEvents\";\n\n/**\n * Class used to create toggle buttons\n * @since 5.0.0\n */\nexport class ToggleButton extends Rectangle {\n /**\n * Function called to generate the toActive animation\n */\n public toActiveAnimation: () => void;\n\n /**\n * Function called to generate the toInactive animation\n */\n public toInactiveAnimation: () => void;\n\n /**\n * Function called to generate a pointer enter animation when the toggle button is active.\n */\n public pointerEnterActiveAnimation: () => void;\n /**\n * Function called to generate a pointer out animation when the toggle button is active.\n */\n public pointerOutActiveAnimation: () => void;\n /**\n * Function called to generate a pointer down animation when the toggle button is active.\n */\n public pointerDownActiveAnimation: () => void;\n /**\n * Function called to generate a pointer up animation when the toggle button is active.\n */\n public pointerUpActiveAnimation: () => void;\n\n /**\n * Function called to generate a pointer enter animation when the toggle button is inactive.\n */\n public pointerEnterInactiveAnimation: () => void;\n /**\n * Function called to generate a pointer out animation when the toggle button is inactive.\n */\n public pointerOutInactiveAnimation: () => void;\n /**\n * Function called to generate a pointer down animation when the toggle button is inactive.\n */\n public pointerDownInactiveAnimation: () => void;\n /**\n * Function called to generate a pointer up animation when the toggle button is inactive.\n */\n public pointerUpInactiveAnimation: () => void;\n\n /** Observable raised when isActive is changed */\n public onIsActiveChangedObservable = new Observable<boolean>();\n\n /**\n * Gets or sets a boolean indicating that the toggle button will let internal controls handle picking instead of doing it directly using its bounding info\n */\n public delegatePickingToChildren = false;\n\n private _group: string;\n /** Gets or sets group name this toggle button belongs to */\n public get group(): string {\n return this._group;\n }\n public set group(value: string) {\n if (this._group === value) {\n return;\n }\n\n this._group = value;\n }\n\n private _isActive = false;\n /** Gets or sets a boolean indicating if the toogle button is active or not */\n public get isActive(): boolean {\n return this._isActive;\n }\n public set isActive(value: boolean) {\n // Function modeled after radioButton.ts\n if (this._isActive === value) {\n return;\n }\n\n this._isActive = value;\n\n // Update the visual state based on the new value\n if (this._isActive) {\n this.toActiveAnimation?.();\n } else {\n this.toInactiveAnimation?.();\n }\n\n this._markAsDirty();\n\n this.onIsActiveChangedObservable.notifyObservers(value);\n\n if (this._isActive && this._host && this._group) {\n // A toggle button in a group can only have 1 active element at a given time.\n // If this toggle button has a group, set other toggle buttons in the group to inactive.\n this._host.executeOnAllControls((control) => {\n // Check for control type ToggleButton\n if (control.typeName === \"ToggleButton\") {\n // Don't do anything to this toggle button\n if (control === this) {\n return;\n }\n\n const childToggle = <ToggleButton>control;\n // If toggle button is in same group, set isActive to false\n if (childToggle.group === this.group) {\n childToggle.isActive = false;\n }\n }\n });\n }\n }\n\n /**\n * Creates a new ToggleButton\n * @param name defines the control name\n * @param group defines the toggle group this toggle belongs to\n */\n constructor(public name?: string, group?: string) {\n super(name);\n this.group = group ?? \"\";\n\n this.thickness = 0;\n this.isPointerBlocker = true;\n\n let alphaStore: Nullable<number> = null;\n\n this.toActiveAnimation = () => {\n this.thickness = 1;\n };\n this.toInactiveAnimation = () => {\n this.thickness = 0;\n };\n\n this.pointerEnterActiveAnimation = () => {\n alphaStore = this.alpha;\n this.alpha -= 0.1;\n };\n\n this.pointerOutActiveAnimation = () => {\n if (alphaStore !== null) {\n this.alpha = alphaStore;\n }\n };\n\n this.pointerDownActiveAnimation = () => {\n this.scaleX -= 0.05;\n this.scaleY -= 0.05;\n };\n\n this.pointerUpActiveAnimation = () => {\n this.scaleX += 0.05;\n this.scaleY += 0.05;\n };\n\n this.pointerEnterInactiveAnimation = () => {\n alphaStore = this.alpha;\n this.alpha -= 0.1;\n };\n\n this.pointerOutInactiveAnimation = () => {\n if (alphaStore !== null) {\n this.alpha = alphaStore;\n }\n };\n\n this.pointerDownInactiveAnimation = () => {\n this.scaleX -= 0.05;\n this.scaleY -= 0.05;\n };\n\n this.pointerUpInactiveAnimation = () => {\n this.scaleX += 0.05;\n this.scaleY += 0.05;\n };\n }\n\n protected _getTypeName(): string {\n return \"ToggleButton\";\n }\n\n // While being a container, the toggle button behaves like a control.\n /** @hidden */\n public _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\n if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {\n return false;\n }\n\n if (!super.contains(x, y)) {\n return false;\n }\n\n if (this.delegatePickingToChildren) {\n let contains = false;\n for (var index = this._children.length - 1; index >= 0; index--) {\n var child = this._children[index];\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\n contains = true;\n break;\n }\n }\n\n if (!contains) {\n return false;\n }\n }\n\n this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\n\n return true;\n }\n\n /** @hidden */\n public _onPointerEnter(target: Control, pi: PointerInfoBase): boolean {\n if (!super._onPointerEnter(target, pi)) {\n return false;\n }\n\n if (this.isReadOnly) {\n return true;\n }\n\n if (this._isActive) {\n if (this.pointerEnterActiveAnimation) {\n this.pointerEnterActiveAnimation();\n }\n } else {\n if (this.pointerEnterInactiveAnimation) {\n this.pointerEnterInactiveAnimation();\n }\n }\n\n return true;\n }\n\n /** @hidden */\n public _onPointerOut(target: Control, pi: PointerInfoBase, force = false): void {\n\n if (!this.isReadOnly) {\n if (this._isActive) {\n if (this.pointerOutActiveAnimation) {\n this.pointerOutActiveAnimation();\n }\n } else {\n if (this.pointerOutInactiveAnimation) {\n this.pointerOutInactiveAnimation();\n }\n }\n }\n\n super._onPointerOut(target, pi, force);\n }\n\n /** @hidden */\n public _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\n return false;\n }\n\n if (this.isReadOnly) {\n return true;\n }\n\n if (this._isActive) {\n if (this.pointerDownActiveAnimation) {\n this.pointerDownActiveAnimation();\n }\n } else {\n if (this.pointerDownInactiveAnimation) {\n this.pointerDownInactiveAnimation();\n }\n }\n\n return true;\n }\n\n /** @hidden */\n public _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean, pi: PointerInfoBase): void {\n if (!this.isReadOnly) {\n if (this._isActive) {\n if (this.pointerUpActiveAnimation) {\n this.pointerUpActiveAnimation();\n }\n } else {\n if (this.pointerUpInactiveAnimation) {\n this.pointerUpInactiveAnimation();\n }\n }\n }\n\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi);\n }\n}\n\nRegisterClass(\"BABYLON.GUI.ToggleButton\", ToggleButton);\n"]}
1
+ {"version":3,"file":"toggleButton.js","sourceRoot":"","sources":["../../../../../../lts/gui/generated/2D/controls/toggleButton.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport type { Vector2 } from \"core/Maths/math.vector\";\r\n\r\nimport { Rectangle } from \"./rectangle\";\r\nimport type { Control } from \"./control\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport type { PointerInfoBase } from \"core/Events/pointerEvents\";\r\n\r\n/**\r\n * Class used to create toggle buttons\r\n * @since 5.0.0\r\n */\r\nexport class ToggleButton extends Rectangle {\r\n /**\r\n * Function called to generate the toActive animation\r\n */\r\n public toActiveAnimation: () => void;\r\n\r\n /**\r\n * Function called to generate the toInactive animation\r\n */\r\n public toInactiveAnimation: () => void;\r\n\r\n /**\r\n * Function called to generate a pointer enter animation when the toggle button is active.\r\n */\r\n public pointerEnterActiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer out animation when the toggle button is active.\r\n */\r\n public pointerOutActiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer down animation when the toggle button is active.\r\n */\r\n public pointerDownActiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer up animation when the toggle button is active.\r\n */\r\n public pointerUpActiveAnimation: () => void;\r\n\r\n /**\r\n * Function called to generate a pointer enter animation when the toggle button is inactive.\r\n */\r\n public pointerEnterInactiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer out animation when the toggle button is inactive.\r\n */\r\n public pointerOutInactiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer down animation when the toggle button is inactive.\r\n */\r\n public pointerDownInactiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer up animation when the toggle button is inactive.\r\n */\r\n public pointerUpInactiveAnimation: () => void;\r\n\r\n /** Observable raised when isActive is changed */\r\n public onIsActiveChangedObservable = new Observable<boolean>();\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the toggle button will let internal controls handle picking instead of doing it directly using its bounding info\r\n */\r\n public delegatePickingToChildren = false;\r\n\r\n private _group: string;\r\n /** Gets or sets group name this toggle button belongs to */\r\n public get group(): string {\r\n return this._group;\r\n }\r\n public set group(value: string) {\r\n if (this._group === value) {\r\n return;\r\n }\r\n\r\n this._group = value;\r\n }\r\n\r\n private _isActive = false;\r\n /** Gets or sets a boolean indicating if the toggle button is active or not */\r\n public get isActive(): boolean {\r\n return this._isActive;\r\n }\r\n public set isActive(value: boolean) {\r\n // Function modeled after radioButton.ts\r\n if (this._isActive === value) {\r\n return;\r\n }\r\n\r\n this._isActive = value;\r\n\r\n // Update the visual state based on the new value\r\n if (this._isActive) {\r\n this.toActiveAnimation?.();\r\n } else {\r\n this.toInactiveAnimation?.();\r\n }\r\n\r\n this._markAsDirty();\r\n\r\n this.onIsActiveChangedObservable.notifyObservers(value);\r\n\r\n if (this._isActive && this._host && this._group) {\r\n // A toggle button in a group can only have 1 active element at a given time.\r\n // If this toggle button has a group, set other toggle buttons in the group to inactive.\r\n this._host.executeOnAllControls((control) => {\r\n // Check for control type ToggleButton\r\n if (control.typeName === \"ToggleButton\") {\r\n // Don't do anything to this toggle button\r\n if (control === this) {\r\n return;\r\n }\r\n\r\n const childToggle = <ToggleButton>control;\r\n // If toggle button is in same group, set isActive to false\r\n if (childToggle.group === this.group) {\r\n childToggle.isActive = false;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new ToggleButton\r\n * @param name defines the control name\r\n * @param group defines the toggle group this toggle belongs to\r\n */\r\n constructor(public name?: string, group?: string) {\r\n super(name);\r\n this.group = group ?? \"\";\r\n\r\n this.thickness = 0;\r\n this.isPointerBlocker = true;\r\n\r\n let alphaStore: Nullable<number> = null;\r\n\r\n this.toActiveAnimation = () => {\r\n this.thickness = 1;\r\n };\r\n this.toInactiveAnimation = () => {\r\n this.thickness = 0;\r\n };\r\n\r\n this.pointerEnterActiveAnimation = () => {\r\n alphaStore = this.alpha;\r\n this.alpha -= 0.1;\r\n };\r\n\r\n this.pointerOutActiveAnimation = () => {\r\n if (alphaStore !== null) {\r\n this.alpha = alphaStore;\r\n }\r\n };\r\n\r\n this.pointerDownActiveAnimation = () => {\r\n this.scaleX -= 0.05;\r\n this.scaleY -= 0.05;\r\n };\r\n\r\n this.pointerUpActiveAnimation = () => {\r\n this.scaleX += 0.05;\r\n this.scaleY += 0.05;\r\n };\r\n\r\n this.pointerEnterInactiveAnimation = () => {\r\n alphaStore = this.alpha;\r\n this.alpha -= 0.1;\r\n };\r\n\r\n this.pointerOutInactiveAnimation = () => {\r\n if (alphaStore !== null) {\r\n this.alpha = alphaStore;\r\n }\r\n };\r\n\r\n this.pointerDownInactiveAnimation = () => {\r\n this.scaleX -= 0.05;\r\n this.scaleY -= 0.05;\r\n };\r\n\r\n this.pointerUpInactiveAnimation = () => {\r\n this.scaleX += 0.05;\r\n this.scaleY += 0.05;\r\n };\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"ToggleButton\";\r\n }\r\n\r\n // While being a container, the toggle button behaves like a control.\r\n /**\r\n * @param x\r\n * @param y\r\n * @param pi\r\n * @param type\r\n * @param pointerId\r\n * @param buttonIndex\r\n * @param deltaX\r\n * @param deltaY\r\n * @hidden\r\n */\r\n public _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\r\n if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n if (!super.contains(x, y)) {\r\n return false;\r\n }\r\n\r\n if (this.delegatePickingToChildren) {\r\n let contains = false;\r\n for (let index = this._children.length - 1; index >= 0; index--) {\r\n const child = this._children[index];\r\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n }\r\n\r\n this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param target\r\n * @param pi\r\n * @hidden\r\n */\r\n public _onPointerEnter(target: Control, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerEnter(target, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n return true;\r\n }\r\n\r\n if (this._isActive) {\r\n if (this.pointerEnterActiveAnimation) {\r\n this.pointerEnterActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerEnterInactiveAnimation) {\r\n this.pointerEnterInactiveAnimation();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param target\r\n * @param pi\r\n * @param force\r\n * @hidden\r\n */\r\n public _onPointerOut(target: Control, pi: PointerInfoBase, force = false): void {\r\n if (!this.isReadOnly) {\r\n if (this._isActive) {\r\n if (this.pointerOutActiveAnimation) {\r\n this.pointerOutActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerOutInactiveAnimation) {\r\n this.pointerOutInactiveAnimation();\r\n }\r\n }\r\n }\r\n\r\n super._onPointerOut(target, pi, force);\r\n }\r\n\r\n /**\r\n * @param target\r\n * @param coordinates\r\n * @param pointerId\r\n * @param buttonIndex\r\n * @param pi\r\n * @hidden\r\n */\r\n public _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n return true;\r\n }\r\n\r\n if (this._isActive) {\r\n if (this.pointerDownActiveAnimation) {\r\n this.pointerDownActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerDownInactiveAnimation) {\r\n this.pointerDownInactiveAnimation();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @param target\r\n * @param coordinates\r\n * @param pointerId\r\n * @param buttonIndex\r\n * @param notifyClick\r\n * @param pi\r\n * @hidden\r\n */\r\n public _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean, pi: PointerInfoBase): void {\r\n if (!this.isReadOnly) {\r\n if (this._isActive) {\r\n if (this.pointerUpActiveAnimation) {\r\n this.pointerUpActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerUpInactiveAnimation) {\r\n this.pointerUpInactiveAnimation();\r\n }\r\n }\r\n }\r\n\r\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi);\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.ToggleButton\", ToggleButton);\r\n"]}