@babylonjs/gui 9.13.0 → 9.15.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 (325) hide show
  1. package/2D/FrameGraph/pure.d.ts +2 -0
  2. package/2D/FrameGraph/pure.js +3 -0
  3. package/2D/FrameGraph/pure.js.map +1 -0
  4. package/2D/FrameGraph/renderGraphGUIBlock.d.ts +3 -41
  5. package/2D/FrameGraph/renderGraphGUIBlock.js +5 -64
  6. package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -1
  7. package/2D/FrameGraph/renderGraphGUIBlock.pure.d.ts +48 -0
  8. package/2D/FrameGraph/renderGraphGUIBlock.pure.js +78 -0
  9. package/2D/FrameGraph/renderGraphGUIBlock.pure.js.map +1 -0
  10. package/2D/advancedDynamicTexture.d.ts +2 -2
  11. package/2D/advancedDynamicTexture.js +2 -2
  12. package/2D/advancedDynamicTexture.js.map +1 -1
  13. package/2D/controls/button.d.ts +3 -107
  14. package/2D/controls/button.js +5 -243
  15. package/2D/controls/button.js.map +1 -1
  16. package/2D/controls/button.pure.d.ts +114 -0
  17. package/2D/controls/button.pure.js +257 -0
  18. package/2D/controls/button.pure.js.map +1 -0
  19. package/2D/controls/checkbox.d.ts +3 -51
  20. package/2D/controls/checkbox.js +5 -161
  21. package/2D/controls/checkbox.js.map +1 -1
  22. package/2D/controls/checkbox.pure.d.ts +58 -0
  23. package/2D/controls/checkbox.pure.js +175 -0
  24. package/2D/controls/checkbox.pure.js.map +1 -0
  25. package/2D/controls/colorpicker.d.ts +5 -101
  26. package/2D/controls/colorpicker.js +7 -1394
  27. package/2D/controls/colorpicker.js.map +1 -1
  28. package/2D/controls/colorpicker.pure.d.ts +106 -0
  29. package/2D/controls/colorpicker.pure.js +1406 -0
  30. package/2D/controls/colorpicker.pure.js.map +1 -0
  31. package/2D/controls/container.d.ts +3 -177
  32. package/2D/controls/container.js +5 -615
  33. package/2D/controls/container.js.map +1 -1
  34. package/2D/controls/container.pure.d.ts +184 -0
  35. package/2D/controls/container.pure.js +629 -0
  36. package/2D/controls/container.pure.js.map +1 -0
  37. package/2D/controls/control.d.ts +3 -944
  38. package/2D/controls/control.js +5 -2457
  39. package/2D/controls/control.js.map +1 -1
  40. package/2D/controls/control.pure.d.ts +951 -0
  41. package/2D/controls/control.pure.js +2471 -0
  42. package/2D/controls/control.pure.js.map +1 -0
  43. package/2D/controls/displayGrid.d.ts +5 -53
  44. package/2D/controls/displayGrid.js +7 -201
  45. package/2D/controls/displayGrid.js.map +1 -1
  46. package/2D/controls/displayGrid.pure.d.ts +58 -0
  47. package/2D/controls/displayGrid.pure.js +213 -0
  48. package/2D/controls/displayGrid.pure.js.map +1 -0
  49. package/2D/controls/ellipse.d.ts +5 -25
  50. package/2D/controls/ellipse.js +7 -92
  51. package/2D/controls/ellipse.js.map +1 -1
  52. package/2D/controls/ellipse.pure.d.ts +30 -0
  53. package/2D/controls/ellipse.pure.js +104 -0
  54. package/2D/controls/ellipse.pure.js.map +1 -0
  55. package/2D/controls/focusableButton.d.ts +3 -15
  56. package/2D/controls/focusableButton.js +5 -22
  57. package/2D/controls/focusableButton.js.map +1 -1
  58. package/2D/controls/focusableButton.pure.d.ts +22 -0
  59. package/2D/controls/focusableButton.pure.js +36 -0
  60. package/2D/controls/focusableButton.pure.js.map +1 -0
  61. package/2D/controls/gradient/LinearGradient.d.ts +3 -43
  62. package/2D/controls/gradient/LinearGradient.js +5 -70
  63. package/2D/controls/gradient/LinearGradient.js.map +1 -1
  64. package/2D/controls/gradient/LinearGradient.pure.d.ts +50 -0
  65. package/2D/controls/gradient/LinearGradient.pure.js +84 -0
  66. package/2D/controls/gradient/LinearGradient.pure.js.map +1 -0
  67. package/2D/controls/gradient/RadialGradient.d.ts +3 -51
  68. package/2D/controls/gradient/RadialGradient.js +5 -86
  69. package/2D/controls/gradient/RadialGradient.js.map +1 -1
  70. package/2D/controls/gradient/RadialGradient.pure.d.ts +58 -0
  71. package/2D/controls/gradient/RadialGradient.pure.js +100 -0
  72. package/2D/controls/gradient/RadialGradient.pure.js.map +1 -0
  73. package/2D/controls/gradient/pure.d.ts +3 -0
  74. package/2D/controls/gradient/pure.js +4 -0
  75. package/2D/controls/gradient/pure.js.map +1 -0
  76. package/2D/controls/grid.d.ts +3 -149
  77. package/2D/controls/grid.js +5 -525
  78. package/2D/controls/grid.js.map +1 -1
  79. package/2D/controls/grid.pure.d.ts +156 -0
  80. package/2D/controls/grid.pure.js +539 -0
  81. package/2D/controls/grid.pure.js.map +1 -0
  82. package/2D/controls/image.d.ts +3 -226
  83. package/2D/controls/image.js +5 -913
  84. package/2D/controls/image.js.map +1 -1
  85. package/2D/controls/image.pure.d.ts +233 -0
  86. package/2D/controls/image.pure.js +927 -0
  87. package/2D/controls/image.pure.js.map +1 -0
  88. package/2D/controls/inputPassword.d.ts +3 -7
  89. package/2D/controls/inputPassword.js +5 -19
  90. package/2D/controls/inputPassword.js.map +1 -1
  91. package/2D/controls/inputPassword.pure.d.ts +14 -0
  92. package/2D/controls/inputPassword.pure.js +33 -0
  93. package/2D/controls/inputPassword.pure.js.map +1 -0
  94. package/2D/controls/inputText.d.ts +3 -202
  95. package/2D/controls/inputText.js +5 -1050
  96. package/2D/controls/inputText.js.map +1 -1
  97. package/2D/controls/inputText.pure.d.ts +209 -0
  98. package/2D/controls/inputText.pure.js +1064 -0
  99. package/2D/controls/inputText.pure.js.map +1 -0
  100. package/2D/controls/inputTextArea.d.ts +3 -140
  101. package/2D/controls/inputTextArea.js +5 -1023
  102. package/2D/controls/inputTextArea.js.map +1 -1
  103. package/2D/controls/inputTextArea.pure.d.ts +147 -0
  104. package/2D/controls/inputTextArea.pure.js +1037 -0
  105. package/2D/controls/inputTextArea.pure.js.map +1 -0
  106. package/2D/controls/line.d.ts +5 -74
  107. package/2D/controls/line.js +7 -234
  108. package/2D/controls/line.js.map +1 -1
  109. package/2D/controls/line.pure.d.ts +79 -0
  110. package/2D/controls/line.pure.js +246 -0
  111. package/2D/controls/line.pure.js.map +1 -0
  112. package/2D/controls/multiLine.d.ts +3 -73
  113. package/2D/controls/multiLine.js +5 -234
  114. package/2D/controls/multiLine.js.map +1 -1
  115. package/2D/controls/multiLine.pure.d.ts +80 -0
  116. package/2D/controls/multiLine.pure.js +248 -0
  117. package/2D/controls/multiLine.pure.js.map +1 -0
  118. package/2D/controls/pure.d.ts +38 -0
  119. package/2D/controls/pure.js +39 -0
  120. package/2D/controls/pure.js.map +1 -0
  121. package/2D/controls/radioButton.d.ts +3 -47
  122. package/2D/controls/radioButton.js +5 -182
  123. package/2D/controls/radioButton.js.map +1 -1
  124. package/2D/controls/radioButton.pure.d.ts +54 -0
  125. package/2D/controls/radioButton.pure.js +196 -0
  126. package/2D/controls/radioButton.pure.js.map +1 -0
  127. package/2D/controls/rectangle.d.ts +5 -43
  128. package/2D/controls/rectangle.js +7 -205
  129. package/2D/controls/rectangle.js.map +1 -1
  130. package/2D/controls/rectangle.pure.d.ts +48 -0
  131. package/2D/controls/rectangle.pure.js +217 -0
  132. package/2D/controls/rectangle.pure.js.map +1 -0
  133. package/2D/controls/scrollViewers/pure.d.ts +2 -0
  134. package/2D/controls/scrollViewers/pure.js +3 -0
  135. package/2D/controls/scrollViewers/pure.js.map +1 -0
  136. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -176
  137. package/2D/controls/scrollViewers/scrollViewer.js +5 -584
  138. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  139. package/2D/controls/scrollViewers/scrollViewer.pure.d.ts +183 -0
  140. package/2D/controls/scrollViewers/scrollViewer.pure.js +598 -0
  141. package/2D/controls/scrollViewers/scrollViewer.pure.js.map +1 -0
  142. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +1 -1
  143. package/2D/controls/scrollViewers/scrollViewerWindow.js +2 -2
  144. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  145. package/2D/controls/selector.d.ts +2 -2
  146. package/2D/controls/selector.js +8 -8
  147. package/2D/controls/selector.js.map +1 -1
  148. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  149. package/2D/controls/sliders/baseSlider.js +1 -1
  150. package/2D/controls/sliders/baseSlider.js.map +1 -1
  151. package/2D/controls/sliders/imageBasedSlider.d.ts +3 -45
  152. package/2D/controls/sliders/imageBasedSlider.js +5 -165
  153. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  154. package/2D/controls/sliders/imageBasedSlider.pure.d.ts +52 -0
  155. package/2D/controls/sliders/imageBasedSlider.pure.js +179 -0
  156. package/2D/controls/sliders/imageBasedSlider.pure.js.map +1 -0
  157. package/2D/controls/sliders/pure.d.ts +4 -0
  158. package/2D/controls/sliders/pure.js +5 -0
  159. package/2D/controls/sliders/pure.js.map +1 -0
  160. package/2D/controls/sliders/scrollBar.d.ts +3 -48
  161. package/2D/controls/sliders/scrollBar.js +5 -170
  162. package/2D/controls/sliders/scrollBar.js.map +1 -1
  163. package/2D/controls/sliders/scrollBar.pure.d.ts +55 -0
  164. package/2D/controls/sliders/scrollBar.pure.js +184 -0
  165. package/2D/controls/sliders/scrollBar.pure.js.map +1 -0
  166. package/2D/controls/sliders/slider.d.ts +3 -44
  167. package/2D/controls/sliders/slider.js +5 -278
  168. package/2D/controls/sliders/slider.js.map +1 -1
  169. package/2D/controls/sliders/slider.pure.d.ts +51 -0
  170. package/2D/controls/sliders/slider.pure.js +292 -0
  171. package/2D/controls/sliders/slider.pure.js.map +1 -0
  172. package/2D/controls/stackPanel.d.ts +3 -62
  173. package/2D/controls/stackPanel.js +5 -243
  174. package/2D/controls/stackPanel.js.map +1 -1
  175. package/2D/controls/stackPanel.pure.d.ts +69 -0
  176. package/2D/controls/stackPanel.pure.js +257 -0
  177. package/2D/controls/stackPanel.pure.js.map +1 -0
  178. package/2D/controls/statics.d.ts +3 -4
  179. package/2D/controls/statics.js +5 -47
  180. package/2D/controls/statics.js.map +1 -1
  181. package/2D/controls/statics.pure.d.ts +11 -0
  182. package/2D/controls/statics.pure.js +61 -0
  183. package/2D/controls/statics.pure.js.map +1 -0
  184. package/2D/controls/textBlock.d.ts +3 -217
  185. package/2D/controls/textBlock.js +5 -676
  186. package/2D/controls/textBlock.js.map +1 -1
  187. package/2D/controls/textBlock.pure.d.ts +224 -0
  188. package/2D/controls/textBlock.pure.js +690 -0
  189. package/2D/controls/textBlock.pure.js.map +1 -0
  190. package/2D/controls/toggleButton.d.ts +3 -91
  191. package/2D/controls/toggleButton.js +5 -226
  192. package/2D/controls/toggleButton.js.map +1 -1
  193. package/2D/controls/toggleButton.pure.d.ts +98 -0
  194. package/2D/controls/toggleButton.pure.js +240 -0
  195. package/2D/controls/toggleButton.pure.js.map +1 -0
  196. package/2D/controls/virtualKeyboard.d.ts +3 -100
  197. package/2D/controls/virtualKeyboard.js +5 -272
  198. package/2D/controls/virtualKeyboard.js.map +1 -1
  199. package/2D/controls/virtualKeyboard.pure.d.ts +107 -0
  200. package/2D/controls/virtualKeyboard.pure.js +286 -0
  201. package/2D/controls/virtualKeyboard.pure.js.map +1 -0
  202. package/2D/math2D.d.ts +1 -1
  203. package/2D/math2D.js +1 -1
  204. package/2D/math2D.js.map +1 -1
  205. package/2D/measure.js +1 -1
  206. package/2D/measure.js.map +1 -1
  207. package/2D/pure.d.ts +13 -0
  208. package/2D/pure.js +15 -0
  209. package/2D/pure.js.map +1 -0
  210. package/3D/controls/MRTK3/touchHolographicButton.d.ts +4 -4
  211. package/3D/controls/MRTK3/touchHolographicButton.js +10 -10
  212. package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -1
  213. package/3D/controls/holographicBackplate.d.ts +1 -1
  214. package/3D/controls/holographicBackplate.js +1 -1
  215. package/3D/controls/holographicBackplate.js.map +1 -1
  216. package/3D/controls/holographicButton.d.ts +1 -1
  217. package/3D/controls/holographicButton.js +4 -4
  218. package/3D/controls/holographicButton.js.map +1 -1
  219. package/3D/controls/holographicSlate.js +4 -4
  220. package/3D/controls/holographicSlate.js.map +1 -1
  221. package/3D/controls/pure.d.ts +23 -0
  222. package/3D/controls/pure.js +24 -0
  223. package/3D/controls/pure.js.map +1 -0
  224. package/3D/controls/slider3D.d.ts +3 -3
  225. package/3D/controls/slider3D.js +3 -3
  226. package/3D/controls/slider3D.js.map +1 -1
  227. package/3D/controls/touchHolographicButton.d.ts +2 -2
  228. package/3D/controls/touchHolographicButton.js +5 -5
  229. package/3D/controls/touchHolographicButton.js.map +1 -1
  230. package/3D/controls/touchHolographicMenu.js +1 -1
  231. package/3D/controls/touchHolographicMenu.js.map +1 -1
  232. package/3D/gizmos/gizmoHandle.d.ts +1 -1
  233. package/3D/gizmos/gizmoHandle.js +1 -1
  234. package/3D/gizmos/gizmoHandle.js.map +1 -1
  235. package/3D/gizmos/pure.d.ts +3 -0
  236. package/3D/gizmos/pure.js +4 -0
  237. package/3D/gizmos/pure.js.map +1 -0
  238. package/3D/materials/fluent/fluentMaterial.d.ts +5 -100
  239. package/3D/materials/fluent/fluentMaterial.js +7 -305
  240. package/3D/materials/fluent/fluentMaterial.js.map +1 -1
  241. package/3D/materials/fluent/fluentMaterial.pure.d.ts +105 -0
  242. package/3D/materials/fluent/fluentMaterial.pure.js +320 -0
  243. package/3D/materials/fluent/fluentMaterial.pure.js.map +1 -0
  244. package/3D/materials/fluent/pure.d.ts +2 -0
  245. package/3D/materials/fluent/pure.js +3 -0
  246. package/3D/materials/fluent/pure.js.map +1 -0
  247. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +5 -164
  248. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +7 -488
  249. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
  250. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.d.ts +169 -0
  251. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js +503 -0
  252. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js.map +1 -0
  253. package/3D/materials/fluentBackplate/pure.d.ts +2 -0
  254. package/3D/materials/fluentBackplate/pure.js +3 -0
  255. package/3D/materials/fluentBackplate/pure.js.map +1 -0
  256. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +5 -200
  257. package/3D/materials/fluentButton/fluentButtonMaterial.js +7 -563
  258. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
  259. package/3D/materials/fluentButton/fluentButtonMaterial.pure.d.ts +205 -0
  260. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js +578 -0
  261. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js.map +1 -0
  262. package/3D/materials/fluentButton/pure.d.ts +2 -0
  263. package/3D/materials/fluentButton/pure.js +3 -0
  264. package/3D/materials/fluentButton/pure.js.map +1 -0
  265. package/3D/materials/fluentMaterial.d.ts +1 -1
  266. package/3D/materials/fluentMaterial.js +1 -1
  267. package/3D/materials/fluentMaterial.js.map +1 -1
  268. package/3D/materials/handle/handleMaterial.d.ts +5 -66
  269. package/3D/materials/handle/handleMaterial.js +5 -118
  270. package/3D/materials/handle/handleMaterial.js.map +1 -1
  271. package/3D/materials/handle/handleMaterial.pure.d.ts +66 -0
  272. package/3D/materials/handle/handleMaterial.pure.js +121 -0
  273. package/3D/materials/handle/handleMaterial.pure.js.map +1 -0
  274. package/3D/materials/handle/pure.d.ts +2 -0
  275. package/3D/materials/handle/pure.js +3 -0
  276. package/3D/materials/handle/pure.js.map +1 -0
  277. package/3D/materials/mrdl/mrdlBackglowMaterial.d.ts +5 -85
  278. package/3D/materials/mrdl/mrdlBackglowMaterial.js +7 -299
  279. package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -1
  280. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.d.ts +90 -0
  281. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js +314 -0
  282. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js.map +1 -0
  283. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +5 -145
  284. package/3D/materials/mrdl/mrdlBackplateMaterial.js +7 -433
  285. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
  286. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.d.ts +157 -0
  287. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js +455 -0
  288. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js.map +1 -0
  289. package/3D/materials/mrdl/mrdlFrontplateMaterial.d.ts +5 -183
  290. package/3D/materials/mrdl/mrdlFrontplateMaterial.js +7 -532
  291. package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -1
  292. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.d.ts +188 -0
  293. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js +547 -0
  294. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js.map +1 -0
  295. package/3D/materials/mrdl/mrdlInnerquadMaterial.d.ts +5 -54
  296. package/3D/materials/mrdl/mrdlInnerquadMaterial.js +7 -227
  297. package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -1
  298. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.d.ts +59 -0
  299. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js +242 -0
  300. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js.map +1 -0
  301. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +5 -334
  302. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +7 -855
  303. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
  304. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.d.ts +346 -0
  305. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js +877 -0
  306. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js.map +1 -0
  307. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +5 -334
  308. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +7 -855
  309. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
  310. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.d.ts +346 -0
  311. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js +877 -0
  312. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js.map +1 -0
  313. package/3D/materials/mrdl/pure.d.ts +7 -0
  314. package/3D/materials/mrdl/pure.js +8 -0
  315. package/3D/materials/mrdl/pure.js.map +1 -0
  316. package/3D/materials/pure.d.ts +6 -0
  317. package/3D/materials/pure.js +8 -0
  318. package/3D/materials/pure.js.map +1 -0
  319. package/3D/pure.d.ts +6 -0
  320. package/3D/pure.js +8 -0
  321. package/3D/pure.js.map +1 -0
  322. package/package.json +50 -3
  323. package/pure.d.ts +3 -0
  324. package/pure.js +5 -0
  325. package/pure.js.map +1 -0
@@ -1 +1 @@
1
- {"version":3,"file":"virtualKeyboard.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/virtualKeyboard.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type Observer, Observable } from \"core/Misc/observable\";\r\n\r\nimport { StackPanel } from \"./stackPanel\";\r\nimport { Button } from \"./button\";\r\nimport { type Container } from \"./container\";\r\nimport { type TextBlock } from \"./textBlock\";\r\nimport { type InputText } from \"./inputText\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { type AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { InputTextArea } from \"./inputTextArea\";\r\nimport { type Control } from \"./control\";\r\n\r\n/**\r\n * Class used to store key control properties\r\n */\r\nexport class KeyPropertySet {\r\n /** Width */\r\n width?: string;\r\n /** Height */\r\n height?: string;\r\n /** Left padding */\r\n paddingLeft?: string;\r\n /** Right padding */\r\n paddingRight?: string;\r\n /** Top padding */\r\n paddingTop?: string;\r\n /** Bottom padding */\r\n paddingBottom?: string;\r\n /** Foreground color */\r\n color?: string;\r\n /** Background color */\r\n background?: string;\r\n}\r\n\r\ntype ConnectedInputText = {\r\n input: InputText;\r\n onFocusObserver: Nullable<Observer<Control>>;\r\n onBlurObserver: Nullable<Observer<Control>>;\r\n};\r\n\r\n/**\r\n * Class used to create virtual keyboard\r\n */\r\nexport class VirtualKeyboard extends StackPanel {\r\n /** Observable raised when a key is pressed */\r\n public onKeyPressObservable = new Observable<string>();\r\n\r\n /** Gets or sets default key button width */\r\n public defaultButtonWidth = \"40px\";\r\n /** Gets or sets default key button height */\r\n public defaultButtonHeight = \"40px\";\r\n\r\n /** Gets or sets default key button left padding */\r\n public defaultButtonPaddingLeft = \"2px\";\r\n /** Gets or sets default key button right padding */\r\n public defaultButtonPaddingRight = \"2px\";\r\n /** Gets or sets default key button top padding */\r\n public defaultButtonPaddingTop = \"2px\";\r\n /** Gets or sets default key button bottom padding */\r\n public defaultButtonPaddingBottom = \"2px\";\r\n\r\n /** Gets or sets default key button foreground color */\r\n public defaultButtonColor = \"#DDD\";\r\n /** Gets or sets default key button background color */\r\n public defaultButtonBackground = \"#070707\";\r\n\r\n /** Gets or sets shift button foreground color */\r\n public shiftButtonColor = \"#7799FF\";\r\n /** Gets or sets shift button thickness*/\r\n public selectedShiftThickness = 1;\r\n\r\n /** Gets shift key state */\r\n public shiftState = 0;\r\n\r\n protected override _getTypeName(): string {\r\n return \"VirtualKeyboard\";\r\n }\r\n\r\n private _createKey(key: string, propertySet: Nullable<KeyPropertySet>) {\r\n const button = Button.CreateSimpleButton(key, key);\r\n\r\n button.width = propertySet && propertySet.width ? propertySet.width : this.defaultButtonWidth;\r\n button.height = propertySet && propertySet.height ? propertySet.height : this.defaultButtonHeight;\r\n button.color = propertySet && propertySet.color ? propertySet.color : this.defaultButtonColor;\r\n button.background = propertySet && propertySet.background ? propertySet.background : this.defaultButtonBackground;\r\n button.paddingLeft = propertySet && propertySet.paddingLeft ? propertySet.paddingLeft : this.defaultButtonPaddingLeft;\r\n button.paddingRight = propertySet && propertySet.paddingRight ? propertySet.paddingRight : this.defaultButtonPaddingRight;\r\n button.paddingTop = propertySet && propertySet.paddingTop ? propertySet.paddingTop : this.defaultButtonPaddingTop;\r\n button.paddingBottom = propertySet && propertySet.paddingBottom ? propertySet.paddingBottom : this.defaultButtonPaddingBottom;\r\n\r\n button.thickness = 0;\r\n button.isFocusInvisible = true;\r\n\r\n button.shadowColor = this.shadowColor;\r\n button.shadowBlur = this.shadowBlur;\r\n button.shadowOffsetX = this.shadowOffsetX;\r\n button.shadowOffsetY = this.shadowOffsetY;\r\n\r\n button.onPointerUpObservable.add(() => {\r\n this.onKeyPressObservable.notifyObservers(key);\r\n });\r\n\r\n return button;\r\n }\r\n\r\n /**\r\n * Adds a new row of keys\r\n * @param keys defines the list of keys to add\r\n * @param propertySets defines the associated property sets\r\n */\r\n public addKeysRow(keys: Array<string>, propertySets?: Array<KeyPropertySet>): void {\r\n const panel = new StackPanel();\r\n panel.isVertical = false;\r\n panel.isFocusInvisible = true;\r\n\r\n let maxKey: Nullable<Button> = null;\r\n for (let i = 0; i < keys.length; i++) {\r\n let properties = null;\r\n\r\n if (propertySets && propertySets.length === keys.length) {\r\n properties = propertySets[i];\r\n }\r\n\r\n const key = this._createKey(keys[i], properties);\r\n if (!maxKey || key.heightInPixels > maxKey.heightInPixels) {\r\n maxKey = key;\r\n }\r\n\r\n panel.addControl(key);\r\n }\r\n\r\n panel.height = maxKey ? maxKey.height : this.defaultButtonHeight;\r\n\r\n this.addControl(panel);\r\n }\r\n\r\n /**\r\n * Set the shift key to a specific state\r\n * @param shiftState defines the new shift state\r\n */\r\n public applyShiftState(shiftState: number): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.children.length; i++) {\r\n const row = this.children[i];\r\n if (!row || !(<Container>row).children) {\r\n continue;\r\n }\r\n\r\n const rowContainer = <Container>row;\r\n for (let j = 0; j < rowContainer.children.length; j++) {\r\n const button = rowContainer.children[j] as Button;\r\n\r\n if (!button || !button.children[0]) {\r\n continue;\r\n }\r\n\r\n const buttonTblock = button.children[0] as TextBlock;\r\n\r\n if (buttonTblock.text === \"\\u21E7\") {\r\n button.color = shiftState ? this.shiftButtonColor : this.defaultButtonColor;\r\n button.thickness = shiftState > 1 ? this.selectedShiftThickness : 0;\r\n }\r\n\r\n buttonTblock.text = shiftState > 0 ? buttonTblock.text.toUpperCase() : buttonTblock.text.toLowerCase();\r\n }\r\n }\r\n }\r\n\r\n private _currentlyConnectedInputText: Nullable<InputText | InputTextArea> = null;\r\n private _connectedInputTexts: ConnectedInputText[] = [];\r\n private _onKeyPressObserver: Nullable<Observer<string>> = null;\r\n\r\n /** Gets the input text control currently attached to the keyboard */\r\n public get connectedInputText(): Nullable<InputText | InputTextArea> {\r\n return this._currentlyConnectedInputText;\r\n }\r\n\r\n /**\r\n * Connects the keyboard with an input text control\r\n *\r\n * @param input defines the target control\r\n */\r\n public connect(input: InputText): void {\r\n const inputTextAlreadyConnected = this._connectedInputTexts.some((a) => a.input === input);\r\n if (inputTextAlreadyConnected) {\r\n return;\r\n }\r\n\r\n if (this._onKeyPressObserver === null) {\r\n this._onKeyPressObserver = this.onKeyPressObservable.add((key) => {\r\n if (!this._currentlyConnectedInputText) {\r\n return;\r\n }\r\n\r\n this._currentlyConnectedInputText._host.focusedControl = this._currentlyConnectedInputText;\r\n\r\n switch (key) {\r\n case \"\\u21E7\":\r\n this.shiftState++;\r\n if (this.shiftState > 2) {\r\n this.shiftState = 0;\r\n }\r\n this.applyShiftState(this.shiftState);\r\n return;\r\n case \"\\u2190\":\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"Backspace\");\r\n } else {\r\n this._currentlyConnectedInputText.processKey(8);\r\n }\r\n return;\r\n case \"\\u21B5\":\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"Enter\");\r\n } else {\r\n this._currentlyConnectedInputText.processKey(13);\r\n }\r\n return;\r\n }\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"\", this.shiftState ? key.toUpperCase() : key);\r\n } else {\r\n this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key);\r\n }\r\n\r\n if (this.shiftState === 1) {\r\n this.shiftState = 0;\r\n this.applyShiftState(this.shiftState);\r\n }\r\n });\r\n }\r\n\r\n this.isVisible = false;\r\n this._currentlyConnectedInputText = input;\r\n input._connectedVirtualKeyboard = this;\r\n\r\n // Events hooking\r\n const onFocusObserver: Nullable<Observer<Control>> = input.onFocusObservable.add(() => {\r\n this._currentlyConnectedInputText = input;\r\n input._connectedVirtualKeyboard = this;\r\n this.isVisible = true;\r\n });\r\n\r\n const onBlurObserver: Nullable<Observer<Control>> = input.onBlurObservable.add(() => {\r\n input._connectedVirtualKeyboard = null;\r\n this._currentlyConnectedInputText = null;\r\n this.isVisible = false;\r\n });\r\n\r\n this._connectedInputTexts.push({\r\n input,\r\n onBlurObserver,\r\n onFocusObserver,\r\n });\r\n }\r\n\r\n /**\r\n * Disconnects the keyboard from connected InputText controls\r\n *\r\n * @param input optionally defines a target control, otherwise all are disconnected\r\n */\r\n public disconnect(input?: InputText): void {\r\n if (input) {\r\n // .find not available on IE\r\n const filtered = this._connectedInputTexts.filter((a) => a.input === input);\r\n if (filtered.length === 1) {\r\n this._removeConnectedInputObservables(filtered[0]);\r\n\r\n this._connectedInputTexts = this._connectedInputTexts.filter((a) => a.input !== input);\r\n if (this._currentlyConnectedInputText === input) {\r\n this._currentlyConnectedInputText = null;\r\n }\r\n }\r\n } else {\r\n for (const connectedInputText of this._connectedInputTexts) {\r\n this._removeConnectedInputObservables(connectedInputText);\r\n }\r\n this._connectedInputTexts.length = 0;\r\n }\r\n\r\n if (this._connectedInputTexts.length === 0) {\r\n this._currentlyConnectedInputText = null;\r\n this.onKeyPressObservable.remove(this._onKeyPressObserver);\r\n this._onKeyPressObserver = null;\r\n }\r\n }\r\n\r\n private _removeConnectedInputObservables(connectedInputText: ConnectedInputText): void {\r\n connectedInputText.input._connectedVirtualKeyboard = null;\r\n connectedInputText.input.onFocusObservable.remove(connectedInputText.onFocusObserver);\r\n connectedInputText.input.onBlurObservable.remove(connectedInputText.onBlurObserver);\r\n }\r\n\r\n /**\r\n * Release all resources\r\n */\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n this.disconnect();\r\n }\r\n\r\n // Statics\r\n\r\n /**\r\n * Creates a new keyboard using a default layout\r\n *\r\n * @param name defines control name\r\n * @returns a new VirtualKeyboard\r\n */\r\n public static CreateDefaultLayout(name?: string): VirtualKeyboard {\r\n const returnValue = new VirtualKeyboard(name);\r\n\r\n returnValue.addKeysRow([\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\", \"\\u2190\"]);\r\n returnValue.addKeysRow([\"q\", \"w\", \"e\", \"r\", \"t\", \"y\", \"u\", \"i\", \"o\", \"p\"]);\r\n returnValue.addKeysRow([\"a\", \"s\", \"d\", \"f\", \"g\", \"h\", \"j\", \"k\", \"l\", \";\", \"'\", \"\\u21B5\"]);\r\n returnValue.addKeysRow([\"\\u21E7\", \"z\", \"x\", \"c\", \"v\", \"b\", \"n\", \"m\", \",\", \".\", \"/\"]);\r\n returnValue.addKeysRow([\" \"], [{ width: \"200px\" }]);\r\n\r\n return returnValue;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializedObject, host);\r\n for (const row of this.children) {\r\n if (row.getClassName() === \"StackPanel\") {\r\n const stackPanel = row as StackPanel;\r\n for (const key of stackPanel.children) {\r\n if (key.getClassName() === \"Button\" && key.name) {\r\n key.onPointerUpObservable.add(() => {\r\n this.onKeyPressObservable.notifyObservers(key.name as string);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.VirtualKeyboard\", VirtualKeyboard);\r\n"]}
1
+ {"version":3,"file":"virtualKeyboard.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/virtualKeyboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,uBAAuB,EAAE,CAAC","sourcesContent":["/**\r\n * Re-exports the pure implementation and applies the runtime registration side effect.\r\n * Import \"./virtualKeyboard.pure\" for tree-shakeable, side-effect-free usage.\r\n */\r\nexport * from \"./virtualKeyboard.pure\";\r\n\r\nimport { RegisterVirtualKeyboard } from \"./virtualKeyboard.pure\";\r\nRegisterVirtualKeyboard();\r\n"]}
@@ -0,0 +1,107 @@
1
+ import { type Nullable } from "@babylonjs/core/types.js";
2
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
3
+ import { StackPanel } from "./stackPanel.pure.js";
4
+ import { type InputText } from "./inputText.pure.js";
5
+ import { type AdvancedDynamicTexture } from "../advancedDynamicTexture.js";
6
+ import { InputTextArea } from "./inputTextArea.pure.js";
7
+ /**
8
+ * Class used to store key control properties
9
+ */
10
+ export declare class KeyPropertySet {
11
+ /** Width */
12
+ width?: string;
13
+ /** Height */
14
+ height?: string;
15
+ /** Left padding */
16
+ paddingLeft?: string;
17
+ /** Right padding */
18
+ paddingRight?: string;
19
+ /** Top padding */
20
+ paddingTop?: string;
21
+ /** Bottom padding */
22
+ paddingBottom?: string;
23
+ /** Foreground color */
24
+ color?: string;
25
+ /** Background color */
26
+ background?: string;
27
+ }
28
+ /**
29
+ * Class used to create virtual keyboard
30
+ */
31
+ export declare class VirtualKeyboard extends StackPanel {
32
+ /** Observable raised when a key is pressed */
33
+ onKeyPressObservable: Observable<string>;
34
+ /** Gets or sets default key button width */
35
+ defaultButtonWidth: string;
36
+ /** Gets or sets default key button height */
37
+ defaultButtonHeight: string;
38
+ /** Gets or sets default key button left padding */
39
+ defaultButtonPaddingLeft: string;
40
+ /** Gets or sets default key button right padding */
41
+ defaultButtonPaddingRight: string;
42
+ /** Gets or sets default key button top padding */
43
+ defaultButtonPaddingTop: string;
44
+ /** Gets or sets default key button bottom padding */
45
+ defaultButtonPaddingBottom: string;
46
+ /** Gets or sets default key button foreground color */
47
+ defaultButtonColor: string;
48
+ /** Gets or sets default key button background color */
49
+ defaultButtonBackground: string;
50
+ /** Gets or sets shift button foreground color */
51
+ shiftButtonColor: string;
52
+ /** Gets or sets shift button thickness*/
53
+ selectedShiftThickness: number;
54
+ /** Gets shift key state */
55
+ shiftState: number;
56
+ protected _getTypeName(): string;
57
+ private _createKey;
58
+ /**
59
+ * Adds a new row of keys
60
+ * @param keys defines the list of keys to add
61
+ * @param propertySets defines the associated property sets
62
+ */
63
+ addKeysRow(keys: Array<string>, propertySets?: Array<KeyPropertySet>): void;
64
+ /**
65
+ * Set the shift key to a specific state
66
+ * @param shiftState defines the new shift state
67
+ */
68
+ applyShiftState(shiftState: number): void;
69
+ private _currentlyConnectedInputText;
70
+ private _connectedInputTexts;
71
+ private _onKeyPressObserver;
72
+ /** Gets the input text control currently attached to the keyboard */
73
+ get connectedInputText(): Nullable<InputText | InputTextArea>;
74
+ /**
75
+ * Connects the keyboard with an input text control
76
+ *
77
+ * @param input defines the target control
78
+ */
79
+ connect(input: InputText): void;
80
+ /**
81
+ * Disconnects the keyboard from connected InputText controls
82
+ *
83
+ * @param input optionally defines a target control, otherwise all are disconnected
84
+ */
85
+ disconnect(input?: InputText): void;
86
+ private _removeConnectedInputObservables;
87
+ /**
88
+ * Release all resources
89
+ */
90
+ dispose(): void;
91
+ /**
92
+ * Creates a new keyboard using a default layout
93
+ *
94
+ * @param name defines control name
95
+ * @returns a new VirtualKeyboard
96
+ */
97
+ static CreateDefaultLayout(name?: string): VirtualKeyboard;
98
+ /**
99
+ * @internal
100
+ */
101
+ _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture): void;
102
+ }
103
+ /**
104
+ * Registers the VirtualKeyboard class with the type store for serialization support.
105
+ * Safe to call multiple times; only the first call has an effect.
106
+ */
107
+ export declare function RegisterVirtualKeyboard(): void;
@@ -0,0 +1,286 @@
1
+ import { Observable } from "@babylonjs/core/Misc/observable.js";
2
+ import { StackPanel } from "./stackPanel.pure.js";
3
+ import { Button } from "./button.pure.js";
4
+ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
5
+ import { InputTextArea } from "./inputTextArea.pure.js";
6
+ /**
7
+ * Class used to store key control properties
8
+ */
9
+ export class KeyPropertySet {
10
+ }
11
+ /**
12
+ * Class used to create virtual keyboard
13
+ */
14
+ export class VirtualKeyboard extends StackPanel {
15
+ constructor() {
16
+ super(...arguments);
17
+ /** Observable raised when a key is pressed */
18
+ this.onKeyPressObservable = new Observable();
19
+ /** Gets or sets default key button width */
20
+ this.defaultButtonWidth = "40px";
21
+ /** Gets or sets default key button height */
22
+ this.defaultButtonHeight = "40px";
23
+ /** Gets or sets default key button left padding */
24
+ this.defaultButtonPaddingLeft = "2px";
25
+ /** Gets or sets default key button right padding */
26
+ this.defaultButtonPaddingRight = "2px";
27
+ /** Gets or sets default key button top padding */
28
+ this.defaultButtonPaddingTop = "2px";
29
+ /** Gets or sets default key button bottom padding */
30
+ this.defaultButtonPaddingBottom = "2px";
31
+ /** Gets or sets default key button foreground color */
32
+ this.defaultButtonColor = "#DDD";
33
+ /** Gets or sets default key button background color */
34
+ this.defaultButtonBackground = "#070707";
35
+ /** Gets or sets shift button foreground color */
36
+ this.shiftButtonColor = "#7799FF";
37
+ /** Gets or sets shift button thickness*/
38
+ this.selectedShiftThickness = 1;
39
+ /** Gets shift key state */
40
+ this.shiftState = 0;
41
+ this._currentlyConnectedInputText = null;
42
+ this._connectedInputTexts = [];
43
+ this._onKeyPressObserver = null;
44
+ }
45
+ _getTypeName() {
46
+ return "VirtualKeyboard";
47
+ }
48
+ _createKey(key, propertySet) {
49
+ const button = Button.CreateSimpleButton(key, key);
50
+ button.width = propertySet && propertySet.width ? propertySet.width : this.defaultButtonWidth;
51
+ button.height = propertySet && propertySet.height ? propertySet.height : this.defaultButtonHeight;
52
+ button.color = propertySet && propertySet.color ? propertySet.color : this.defaultButtonColor;
53
+ button.background = propertySet && propertySet.background ? propertySet.background : this.defaultButtonBackground;
54
+ button.paddingLeft = propertySet && propertySet.paddingLeft ? propertySet.paddingLeft : this.defaultButtonPaddingLeft;
55
+ button.paddingRight = propertySet && propertySet.paddingRight ? propertySet.paddingRight : this.defaultButtonPaddingRight;
56
+ button.paddingTop = propertySet && propertySet.paddingTop ? propertySet.paddingTop : this.defaultButtonPaddingTop;
57
+ button.paddingBottom = propertySet && propertySet.paddingBottom ? propertySet.paddingBottom : this.defaultButtonPaddingBottom;
58
+ button.thickness = 0;
59
+ button.isFocusInvisible = true;
60
+ button.shadowColor = this.shadowColor;
61
+ button.shadowBlur = this.shadowBlur;
62
+ button.shadowOffsetX = this.shadowOffsetX;
63
+ button.shadowOffsetY = this.shadowOffsetY;
64
+ button.onPointerUpObservable.add(() => {
65
+ this.onKeyPressObservable.notifyObservers(key);
66
+ });
67
+ return button;
68
+ }
69
+ /**
70
+ * Adds a new row of keys
71
+ * @param keys defines the list of keys to add
72
+ * @param propertySets defines the associated property sets
73
+ */
74
+ addKeysRow(keys, propertySets) {
75
+ const panel = new StackPanel();
76
+ panel.isVertical = false;
77
+ panel.isFocusInvisible = true;
78
+ let maxKey = null;
79
+ for (let i = 0; i < keys.length; i++) {
80
+ let properties = null;
81
+ if (propertySets && propertySets.length === keys.length) {
82
+ properties = propertySets[i];
83
+ }
84
+ const key = this._createKey(keys[i], properties);
85
+ if (!maxKey || key.heightInPixels > maxKey.heightInPixels) {
86
+ maxKey = key;
87
+ }
88
+ panel.addControl(key);
89
+ }
90
+ panel.height = maxKey ? maxKey.height : this.defaultButtonHeight;
91
+ this.addControl(panel);
92
+ }
93
+ /**
94
+ * Set the shift key to a specific state
95
+ * @param shiftState defines the new shift state
96
+ */
97
+ applyShiftState(shiftState) {
98
+ if (!this.children) {
99
+ return;
100
+ }
101
+ for (let i = 0; i < this.children.length; i++) {
102
+ const row = this.children[i];
103
+ if (!row || !row.children) {
104
+ continue;
105
+ }
106
+ const rowContainer = row;
107
+ for (let j = 0; j < rowContainer.children.length; j++) {
108
+ const button = rowContainer.children[j];
109
+ if (!button || !button.children[0]) {
110
+ continue;
111
+ }
112
+ const buttonTblock = button.children[0];
113
+ if (buttonTblock.text === "\u21E7") {
114
+ button.color = shiftState ? this.shiftButtonColor : this.defaultButtonColor;
115
+ button.thickness = shiftState > 1 ? this.selectedShiftThickness : 0;
116
+ }
117
+ buttonTblock.text = shiftState > 0 ? buttonTblock.text.toUpperCase() : buttonTblock.text.toLowerCase();
118
+ }
119
+ }
120
+ }
121
+ /** Gets the input text control currently attached to the keyboard */
122
+ get connectedInputText() {
123
+ return this._currentlyConnectedInputText;
124
+ }
125
+ /**
126
+ * Connects the keyboard with an input text control
127
+ *
128
+ * @param input defines the target control
129
+ */
130
+ connect(input) {
131
+ const inputTextAlreadyConnected = this._connectedInputTexts.some((a) => a.input === input);
132
+ if (inputTextAlreadyConnected) {
133
+ return;
134
+ }
135
+ if (this._onKeyPressObserver === null) {
136
+ this._onKeyPressObserver = this.onKeyPressObservable.add((key) => {
137
+ if (!this._currentlyConnectedInputText) {
138
+ return;
139
+ }
140
+ this._currentlyConnectedInputText._host.focusedControl = this._currentlyConnectedInputText;
141
+ switch (key) {
142
+ case "\u21E7":
143
+ this.shiftState++;
144
+ if (this.shiftState > 2) {
145
+ this.shiftState = 0;
146
+ }
147
+ this.applyShiftState(this.shiftState);
148
+ return;
149
+ case "\u2190":
150
+ if (this._currentlyConnectedInputText instanceof InputTextArea) {
151
+ this._currentlyConnectedInputText.alternativeProcessKey("Backspace");
152
+ }
153
+ else {
154
+ this._currentlyConnectedInputText.processKey(8);
155
+ }
156
+ return;
157
+ case "\u21B5":
158
+ if (this._currentlyConnectedInputText instanceof InputTextArea) {
159
+ this._currentlyConnectedInputText.alternativeProcessKey("Enter");
160
+ }
161
+ else {
162
+ this._currentlyConnectedInputText.processKey(13);
163
+ }
164
+ return;
165
+ }
166
+ if (this._currentlyConnectedInputText instanceof InputTextArea) {
167
+ this._currentlyConnectedInputText.alternativeProcessKey("", this.shiftState ? key.toUpperCase() : key);
168
+ }
169
+ else {
170
+ this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key);
171
+ }
172
+ if (this.shiftState === 1) {
173
+ this.shiftState = 0;
174
+ this.applyShiftState(this.shiftState);
175
+ }
176
+ });
177
+ }
178
+ this.isVisible = false;
179
+ this._currentlyConnectedInputText = input;
180
+ input._connectedVirtualKeyboard = this;
181
+ // Events hooking
182
+ const onFocusObserver = input.onFocusObservable.add(() => {
183
+ this._currentlyConnectedInputText = input;
184
+ input._connectedVirtualKeyboard = this;
185
+ this.isVisible = true;
186
+ });
187
+ const onBlurObserver = input.onBlurObservable.add(() => {
188
+ input._connectedVirtualKeyboard = null;
189
+ this._currentlyConnectedInputText = null;
190
+ this.isVisible = false;
191
+ });
192
+ this._connectedInputTexts.push({
193
+ input,
194
+ onBlurObserver,
195
+ onFocusObserver,
196
+ });
197
+ }
198
+ /**
199
+ * Disconnects the keyboard from connected InputText controls
200
+ *
201
+ * @param input optionally defines a target control, otherwise all are disconnected
202
+ */
203
+ disconnect(input) {
204
+ if (input) {
205
+ // .find not available on IE
206
+ const filtered = this._connectedInputTexts.filter((a) => a.input === input);
207
+ if (filtered.length === 1) {
208
+ this._removeConnectedInputObservables(filtered[0]);
209
+ this._connectedInputTexts = this._connectedInputTexts.filter((a) => a.input !== input);
210
+ if (this._currentlyConnectedInputText === input) {
211
+ this._currentlyConnectedInputText = null;
212
+ }
213
+ }
214
+ }
215
+ else {
216
+ for (const connectedInputText of this._connectedInputTexts) {
217
+ this._removeConnectedInputObservables(connectedInputText);
218
+ }
219
+ this._connectedInputTexts.length = 0;
220
+ }
221
+ if (this._connectedInputTexts.length === 0) {
222
+ this._currentlyConnectedInputText = null;
223
+ this.onKeyPressObservable.remove(this._onKeyPressObserver);
224
+ this._onKeyPressObserver = null;
225
+ }
226
+ }
227
+ _removeConnectedInputObservables(connectedInputText) {
228
+ connectedInputText.input._connectedVirtualKeyboard = null;
229
+ connectedInputText.input.onFocusObservable.remove(connectedInputText.onFocusObserver);
230
+ connectedInputText.input.onBlurObservable.remove(connectedInputText.onBlurObserver);
231
+ }
232
+ /**
233
+ * Release all resources
234
+ */
235
+ dispose() {
236
+ super.dispose();
237
+ this.disconnect();
238
+ }
239
+ // Statics
240
+ /**
241
+ * Creates a new keyboard using a default layout
242
+ *
243
+ * @param name defines control name
244
+ * @returns a new VirtualKeyboard
245
+ */
246
+ static CreateDefaultLayout(name) {
247
+ const returnValue = new VirtualKeyboard(name);
248
+ returnValue.addKeysRow(["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\u2190"]);
249
+ returnValue.addKeysRow(["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"]);
250
+ returnValue.addKeysRow(["a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "\u21B5"]);
251
+ returnValue.addKeysRow(["\u21E7", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/"]);
252
+ returnValue.addKeysRow([" "], [{ width: "200px" }]);
253
+ return returnValue;
254
+ }
255
+ /**
256
+ * @internal
257
+ */
258
+ _parseFromContent(serializedObject, host) {
259
+ super._parseFromContent(serializedObject, host);
260
+ for (const row of this.children) {
261
+ if (row.getClassName() === "StackPanel") {
262
+ const stackPanel = row;
263
+ for (const key of stackPanel.children) {
264
+ if (key.getClassName() === "Button" && key.name) {
265
+ key.onPointerUpObservable.add(() => {
266
+ this.onKeyPressObservable.notifyObservers(key.name);
267
+ });
268
+ }
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ let _Registered = false;
275
+ /**
276
+ * Registers the VirtualKeyboard class with the type store for serialization support.
277
+ * Safe to call multiple times; only the first call has an effect.
278
+ */
279
+ export function RegisterVirtualKeyboard() {
280
+ if (_Registered) {
281
+ return;
282
+ }
283
+ _Registered = true;
284
+ RegisterClass("BABYLON.GUI.VirtualKeyboard", VirtualKeyboard);
285
+ }
286
+ //# sourceMappingURL=virtualKeyboard.pure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"virtualKeyboard.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/virtualKeyboard.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { type Observer, Observable } from \"core/Misc/observable\";\r\n\r\nimport { StackPanel } from \"./stackPanel.pure\";\r\nimport { Button } from \"./button.pure\";\r\nimport { type Container } from \"./container.pure\";\r\nimport { type TextBlock } from \"./textBlock.pure\";\r\nimport { type InputText } from \"./inputText.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { type AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { InputTextArea } from \"./inputTextArea.pure\";\r\nimport { type Control } from \"./control.pure\";\r\n\r\n/**\r\n * Class used to store key control properties\r\n */\r\nexport class KeyPropertySet {\r\n /** Width */\r\n width?: string;\r\n /** Height */\r\n height?: string;\r\n /** Left padding */\r\n paddingLeft?: string;\r\n /** Right padding */\r\n paddingRight?: string;\r\n /** Top padding */\r\n paddingTop?: string;\r\n /** Bottom padding */\r\n paddingBottom?: string;\r\n /** Foreground color */\r\n color?: string;\r\n /** Background color */\r\n background?: string;\r\n}\r\n\r\ntype ConnectedInputText = {\r\n input: InputText;\r\n onFocusObserver: Nullable<Observer<Control>>;\r\n onBlurObserver: Nullable<Observer<Control>>;\r\n};\r\n\r\n/**\r\n * Class used to create virtual keyboard\r\n */\r\nexport class VirtualKeyboard extends StackPanel {\r\n /** Observable raised when a key is pressed */\r\n public onKeyPressObservable = new Observable<string>();\r\n\r\n /** Gets or sets default key button width */\r\n public defaultButtonWidth = \"40px\";\r\n /** Gets or sets default key button height */\r\n public defaultButtonHeight = \"40px\";\r\n\r\n /** Gets or sets default key button left padding */\r\n public defaultButtonPaddingLeft = \"2px\";\r\n /** Gets or sets default key button right padding */\r\n public defaultButtonPaddingRight = \"2px\";\r\n /** Gets or sets default key button top padding */\r\n public defaultButtonPaddingTop = \"2px\";\r\n /** Gets or sets default key button bottom padding */\r\n public defaultButtonPaddingBottom = \"2px\";\r\n\r\n /** Gets or sets default key button foreground color */\r\n public defaultButtonColor = \"#DDD\";\r\n /** Gets or sets default key button background color */\r\n public defaultButtonBackground = \"#070707\";\r\n\r\n /** Gets or sets shift button foreground color */\r\n public shiftButtonColor = \"#7799FF\";\r\n /** Gets or sets shift button thickness*/\r\n public selectedShiftThickness = 1;\r\n\r\n /** Gets shift key state */\r\n public shiftState = 0;\r\n\r\n protected override _getTypeName(): string {\r\n return \"VirtualKeyboard\";\r\n }\r\n\r\n private _createKey(key: string, propertySet: Nullable<KeyPropertySet>) {\r\n const button = Button.CreateSimpleButton(key, key);\r\n\r\n button.width = propertySet && propertySet.width ? propertySet.width : this.defaultButtonWidth;\r\n button.height = propertySet && propertySet.height ? propertySet.height : this.defaultButtonHeight;\r\n button.color = propertySet && propertySet.color ? propertySet.color : this.defaultButtonColor;\r\n button.background = propertySet && propertySet.background ? propertySet.background : this.defaultButtonBackground;\r\n button.paddingLeft = propertySet && propertySet.paddingLeft ? propertySet.paddingLeft : this.defaultButtonPaddingLeft;\r\n button.paddingRight = propertySet && propertySet.paddingRight ? propertySet.paddingRight : this.defaultButtonPaddingRight;\r\n button.paddingTop = propertySet && propertySet.paddingTop ? propertySet.paddingTop : this.defaultButtonPaddingTop;\r\n button.paddingBottom = propertySet && propertySet.paddingBottom ? propertySet.paddingBottom : this.defaultButtonPaddingBottom;\r\n\r\n button.thickness = 0;\r\n button.isFocusInvisible = true;\r\n\r\n button.shadowColor = this.shadowColor;\r\n button.shadowBlur = this.shadowBlur;\r\n button.shadowOffsetX = this.shadowOffsetX;\r\n button.shadowOffsetY = this.shadowOffsetY;\r\n\r\n button.onPointerUpObservable.add(() => {\r\n this.onKeyPressObservable.notifyObservers(key);\r\n });\r\n\r\n return button;\r\n }\r\n\r\n /**\r\n * Adds a new row of keys\r\n * @param keys defines the list of keys to add\r\n * @param propertySets defines the associated property sets\r\n */\r\n public addKeysRow(keys: Array<string>, propertySets?: Array<KeyPropertySet>): void {\r\n const panel = new StackPanel();\r\n panel.isVertical = false;\r\n panel.isFocusInvisible = true;\r\n\r\n let maxKey: Nullable<Button> = null;\r\n for (let i = 0; i < keys.length; i++) {\r\n let properties = null;\r\n\r\n if (propertySets && propertySets.length === keys.length) {\r\n properties = propertySets[i];\r\n }\r\n\r\n const key = this._createKey(keys[i], properties);\r\n if (!maxKey || key.heightInPixels > maxKey.heightInPixels) {\r\n maxKey = key;\r\n }\r\n\r\n panel.addControl(key);\r\n }\r\n\r\n panel.height = maxKey ? maxKey.height : this.defaultButtonHeight;\r\n\r\n this.addControl(panel);\r\n }\r\n\r\n /**\r\n * Set the shift key to a specific state\r\n * @param shiftState defines the new shift state\r\n */\r\n public applyShiftState(shiftState: number): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.children.length; i++) {\r\n const row = this.children[i];\r\n if (!row || !(<Container>row).children) {\r\n continue;\r\n }\r\n\r\n const rowContainer = <Container>row;\r\n for (let j = 0; j < rowContainer.children.length; j++) {\r\n const button = rowContainer.children[j] as Button;\r\n\r\n if (!button || !button.children[0]) {\r\n continue;\r\n }\r\n\r\n const buttonTblock = button.children[0] as TextBlock;\r\n\r\n if (buttonTblock.text === \"\\u21E7\") {\r\n button.color = shiftState ? this.shiftButtonColor : this.defaultButtonColor;\r\n button.thickness = shiftState > 1 ? this.selectedShiftThickness : 0;\r\n }\r\n\r\n buttonTblock.text = shiftState > 0 ? buttonTblock.text.toUpperCase() : buttonTblock.text.toLowerCase();\r\n }\r\n }\r\n }\r\n\r\n private _currentlyConnectedInputText: Nullable<InputText | InputTextArea> = null;\r\n private _connectedInputTexts: ConnectedInputText[] = [];\r\n private _onKeyPressObserver: Nullable<Observer<string>> = null;\r\n\r\n /** Gets the input text control currently attached to the keyboard */\r\n public get connectedInputText(): Nullable<InputText | InputTextArea> {\r\n return this._currentlyConnectedInputText;\r\n }\r\n\r\n /**\r\n * Connects the keyboard with an input text control\r\n *\r\n * @param input defines the target control\r\n */\r\n public connect(input: InputText): void {\r\n const inputTextAlreadyConnected = this._connectedInputTexts.some((a) => a.input === input);\r\n if (inputTextAlreadyConnected) {\r\n return;\r\n }\r\n\r\n if (this._onKeyPressObserver === null) {\r\n this._onKeyPressObserver = this.onKeyPressObservable.add((key) => {\r\n if (!this._currentlyConnectedInputText) {\r\n return;\r\n }\r\n\r\n this._currentlyConnectedInputText._host.focusedControl = this._currentlyConnectedInputText;\r\n\r\n switch (key) {\r\n case \"\\u21E7\":\r\n this.shiftState++;\r\n if (this.shiftState > 2) {\r\n this.shiftState = 0;\r\n }\r\n this.applyShiftState(this.shiftState);\r\n return;\r\n case \"\\u2190\":\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"Backspace\");\r\n } else {\r\n this._currentlyConnectedInputText.processKey(8);\r\n }\r\n return;\r\n case \"\\u21B5\":\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"Enter\");\r\n } else {\r\n this._currentlyConnectedInputText.processKey(13);\r\n }\r\n return;\r\n }\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"\", this.shiftState ? key.toUpperCase() : key);\r\n } else {\r\n this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key);\r\n }\r\n\r\n if (this.shiftState === 1) {\r\n this.shiftState = 0;\r\n this.applyShiftState(this.shiftState);\r\n }\r\n });\r\n }\r\n\r\n this.isVisible = false;\r\n this._currentlyConnectedInputText = input;\r\n input._connectedVirtualKeyboard = this;\r\n\r\n // Events hooking\r\n const onFocusObserver: Nullable<Observer<Control>> = input.onFocusObservable.add(() => {\r\n this._currentlyConnectedInputText = input;\r\n input._connectedVirtualKeyboard = this;\r\n this.isVisible = true;\r\n });\r\n\r\n const onBlurObserver: Nullable<Observer<Control>> = input.onBlurObservable.add(() => {\r\n input._connectedVirtualKeyboard = null;\r\n this._currentlyConnectedInputText = null;\r\n this.isVisible = false;\r\n });\r\n\r\n this._connectedInputTexts.push({\r\n input,\r\n onBlurObserver,\r\n onFocusObserver,\r\n });\r\n }\r\n\r\n /**\r\n * Disconnects the keyboard from connected InputText controls\r\n *\r\n * @param input optionally defines a target control, otherwise all are disconnected\r\n */\r\n public disconnect(input?: InputText): void {\r\n if (input) {\r\n // .find not available on IE\r\n const filtered = this._connectedInputTexts.filter((a) => a.input === input);\r\n if (filtered.length === 1) {\r\n this._removeConnectedInputObservables(filtered[0]);\r\n\r\n this._connectedInputTexts = this._connectedInputTexts.filter((a) => a.input !== input);\r\n if (this._currentlyConnectedInputText === input) {\r\n this._currentlyConnectedInputText = null;\r\n }\r\n }\r\n } else {\r\n for (const connectedInputText of this._connectedInputTexts) {\r\n this._removeConnectedInputObservables(connectedInputText);\r\n }\r\n this._connectedInputTexts.length = 0;\r\n }\r\n\r\n if (this._connectedInputTexts.length === 0) {\r\n this._currentlyConnectedInputText = null;\r\n this.onKeyPressObservable.remove(this._onKeyPressObserver);\r\n this._onKeyPressObserver = null;\r\n }\r\n }\r\n\r\n private _removeConnectedInputObservables(connectedInputText: ConnectedInputText): void {\r\n connectedInputText.input._connectedVirtualKeyboard = null;\r\n connectedInputText.input.onFocusObservable.remove(connectedInputText.onFocusObserver);\r\n connectedInputText.input.onBlurObservable.remove(connectedInputText.onBlurObserver);\r\n }\r\n\r\n /**\r\n * Release all resources\r\n */\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n this.disconnect();\r\n }\r\n\r\n // Statics\r\n\r\n /**\r\n * Creates a new keyboard using a default layout\r\n *\r\n * @param name defines control name\r\n * @returns a new VirtualKeyboard\r\n */\r\n public static CreateDefaultLayout(name?: string): VirtualKeyboard {\r\n const returnValue = new VirtualKeyboard(name);\r\n\r\n returnValue.addKeysRow([\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\", \"\\u2190\"]);\r\n returnValue.addKeysRow([\"q\", \"w\", \"e\", \"r\", \"t\", \"y\", \"u\", \"i\", \"o\", \"p\"]);\r\n returnValue.addKeysRow([\"a\", \"s\", \"d\", \"f\", \"g\", \"h\", \"j\", \"k\", \"l\", \";\", \"'\", \"\\u21B5\"]);\r\n returnValue.addKeysRow([\"\\u21E7\", \"z\", \"x\", \"c\", \"v\", \"b\", \"n\", \"m\", \",\", \".\", \"/\"]);\r\n returnValue.addKeysRow([\" \"], [{ width: \"200px\" }]);\r\n\r\n return returnValue;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializedObject, host);\r\n for (const row of this.children) {\r\n if (row.getClassName() === \"StackPanel\") {\r\n const stackPanel = row as StackPanel;\r\n for (const key of stackPanel.children) {\r\n if (key.getClassName() === \"Button\" && key.name) {\r\n key.onPointerUpObservable.add(() => {\r\n this.onKeyPressObservable.notifyObservers(key.name as string);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the VirtualKeyboard class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterVirtualKeyboard(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.VirtualKeyboard\", VirtualKeyboard);\r\n}\r\n"]}
package/2D/math2D.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Nullable } from "@babylonjs/core/types.js";
2
- import { Vector2 } from "@babylonjs/core/Maths/math.vector.js";
2
+ import { Vector2 } from "@babylonjs/core/Maths/math.vector.pure.js";
3
3
  /**
4
4
  * Class used to transport Vector2 information for pointer events
5
5
  */
package/2D/math2D.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Vector2 } from "@babylonjs/core/Maths/math.vector.js";
1
+ import { Vector2 } from "@babylonjs/core/Maths/math.vector.pure.js";
2
2
  import { Epsilon } from "@babylonjs/core/Maths/math.constants.js";
3
3
  /**
4
4
  * Class used to transport Vector2 information for pointer events
package/2D/math2D.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"math2D.js","sourceRoot":"","sources":["../../../../dev/gui/src/2D/math2D.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { Vector2 } from \"core/Maths/math.vector\";\r\nimport { Epsilon } from \"core/Maths/math.constants\";\r\n\r\n/**\r\n * Class used to transport Vector2 information for pointer events\r\n */\r\nexport class Vector2WithInfo extends Vector2 {\r\n /**\r\n * Creates a new Vector2WithInfo\r\n * @param source defines the vector2 data to transport\r\n * @param buttonIndex defines the current mouse button index\r\n */\r\n public constructor(\r\n source: Vector2,\r\n /** defines the current mouse button index */\r\n public buttonIndex: number = 0\r\n ) {\r\n super(source.x, source.y);\r\n }\r\n}\r\n\r\n/** Class used to provide 2D matrix features */\r\nexport class Matrix2D {\r\n /** Gets the internal array of 6 floats used to store matrix data */\r\n public m = new Float32Array(6);\r\n\r\n /**\r\n * Creates a new matrix\r\n * @param m00 defines value for (0, 0)\r\n * @param m01 defines value for (0, 1)\r\n * @param m10 defines value for (1, 0)\r\n * @param m11 defines value for (1, 1)\r\n * @param m20 defines value for (2, 0)\r\n * @param m21 defines value for (2, 1)\r\n */\r\n constructor(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number) {\r\n this.fromValues(m00, m01, m10, m11, m20, m21);\r\n }\r\n\r\n /**\r\n * Fills the matrix from direct values\r\n * @param m00 defines value for (0, 0)\r\n * @param m01 defines value for (0, 1)\r\n * @param m10 defines value for (1, 0)\r\n * @param m11 defines value for (1, 1)\r\n * @param m20 defines value for (2, 0)\r\n * @param m21 defines value for (2, 1)\r\n * @returns the current modified matrix\r\n */\r\n public fromValues(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number): Matrix2D {\r\n this.m[0] = m00;\r\n this.m[1] = m01;\r\n this.m[2] = m10;\r\n this.m[3] = m11;\r\n this.m[4] = m20;\r\n this.m[5] = m21;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets matrix determinant\r\n * @returns the determinant\r\n */\r\n public determinant(): number {\r\n return this.m[0] * this.m[3] - this.m[1] * this.m[2];\r\n }\r\n\r\n /**\r\n * Inverses the matrix and stores it in a target matrix\r\n * @param result defines the target matrix\r\n * @returns the current matrix\r\n */\r\n public invertToRef(result: Matrix2D): Matrix2D {\r\n const l0 = this.m[0];\r\n const l1 = this.m[1];\r\n const l2 = this.m[2];\r\n const l3 = this.m[3];\r\n const l4 = this.m[4];\r\n const l5 = this.m[5];\r\n\r\n const det = this.determinant();\r\n if (det < Epsilon * Epsilon) {\r\n result.m[0] = 0;\r\n result.m[1] = 0;\r\n result.m[2] = 0;\r\n result.m[3] = 0;\r\n result.m[4] = 0;\r\n result.m[5] = 0;\r\n return this;\r\n }\r\n\r\n const detDiv = 1 / det;\r\n\r\n const det4 = l2 * l5 - l3 * l4;\r\n const det5 = l1 * l4 - l0 * l5;\r\n\r\n result.m[0] = l3 * detDiv;\r\n result.m[1] = -l1 * detDiv;\r\n result.m[2] = -l2 * detDiv;\r\n result.m[3] = l0 * detDiv;\r\n result.m[4] = det4 * detDiv;\r\n result.m[5] = det5 * detDiv;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Multiplies the current matrix with another one\r\n * @param other defines the second operand\r\n * @param result defines the target matrix\r\n * @returns the current matrix\r\n */\r\n public multiplyToRef(other: Matrix2D, result: Matrix2D): Matrix2D {\r\n const l0 = this.m[0];\r\n const l1 = this.m[1];\r\n const l2 = this.m[2];\r\n const l3 = this.m[3];\r\n const l4 = this.m[4];\r\n const l5 = this.m[5];\r\n\r\n const r0 = other.m[0];\r\n const r1 = other.m[1];\r\n const r2 = other.m[2];\r\n const r3 = other.m[3];\r\n const r4 = other.m[4];\r\n const r5 = other.m[5];\r\n\r\n result.m[0] = l0 * r0 + l1 * r2;\r\n result.m[1] = l0 * r1 + l1 * r3;\r\n result.m[2] = l2 * r0 + l3 * r2;\r\n result.m[3] = l2 * r1 + l3 * r3;\r\n result.m[4] = l4 * r0 + l5 * r2 + r4;\r\n result.m[5] = l4 * r1 + l5 * r3 + r5;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Applies the current matrix to a set of 2 floats and stores the result in a vector2\r\n * @param x defines the x coordinate to transform\r\n * @param y defines the x coordinate to transform\r\n * @param result defines the target vector2\r\n * @returns the current matrix\r\n */\r\n public transformCoordinates(x: number, y: number, result: Vector2): Matrix2D {\r\n result.x = x * this.m[0] + y * this.m[2] + this.m[4];\r\n result.y = x * this.m[1] + y * this.m[3] + this.m[5];\r\n\r\n return this;\r\n }\r\n\r\n // Statics\r\n /**\r\n * Creates an identity matrix\r\n * @returns a new matrix\r\n */\r\n public static Identity(): Matrix2D {\r\n return new Matrix2D(1, 0, 0, 1, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates an identity matrix and stores it in a target matrix\r\n * @param result defines the target matrix\r\n */\r\n public static IdentityToRef(result: Matrix2D): void {\r\n result.m[0] = 1;\r\n result.m[1] = 0;\r\n result.m[2] = 0;\r\n result.m[3] = 1;\r\n result.m[4] = 0;\r\n result.m[5] = 0;\r\n }\r\n\r\n /**\r\n * Creates a translation matrix and stores it in a target matrix\r\n * @param x defines the x coordinate of the translation\r\n * @param y defines the y coordinate of the translation\r\n * @param result defines the target matrix\r\n */\r\n public static TranslationToRef(x: number, y: number, result: Matrix2D): void {\r\n result.fromValues(1, 0, 0, 1, x, y);\r\n }\r\n\r\n /**\r\n * Creates a scaling matrix and stores it in a target matrix\r\n * @param x defines the x coordinate of the scaling\r\n * @param y defines the y coordinate of the scaling\r\n * @param result defines the target matrix\r\n */\r\n public static ScalingToRef(x: number, y: number, result: Matrix2D): void {\r\n result.fromValues(x, 0, 0, y, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates a rotation matrix and stores it in a target matrix\r\n * @param angle defines the rotation angle\r\n * @param result defines the target matrix\r\n */\r\n public static RotationToRef(angle: number, result: Matrix2D): void {\r\n const s = Math.sin(angle);\r\n const c = Math.cos(angle);\r\n\r\n result.fromValues(c, s, -s, c, 0, 0);\r\n }\r\n\r\n private static _TempPreTranslationMatrix = Matrix2D.Identity();\r\n private static _TempPostTranslationMatrix = Matrix2D.Identity();\r\n private static _TempRotationMatrix = Matrix2D.Identity();\r\n private static _TempScalingMatrix = Matrix2D.Identity();\r\n private static _TempCompose0 = Matrix2D.Identity();\r\n private static _TempCompose1 = Matrix2D.Identity();\r\n private static _TempCompose2 = Matrix2D.Identity();\r\n\r\n /**\r\n * Composes a matrix from translation, rotation, scaling and parent matrix and stores it in a target matrix\r\n * @param tx defines the x coordinate of the translation\r\n * @param ty defines the y coordinate of the translation\r\n * @param angle defines the rotation angle\r\n * @param scaleX defines the x coordinate of the scaling\r\n * @param scaleY defines the y coordinate of the scaling\r\n * @param parentMatrix defines the parent matrix to multiply by (can be null)\r\n * @param result defines the target matrix\r\n */\r\n public static ComposeToRef(tx: number, ty: number, angle: number, scaleX: number, scaleY: number, parentMatrix: Nullable<Matrix2D>, result: Matrix2D): void {\r\n Matrix2D.TranslationToRef(tx, ty, Matrix2D._TempPreTranslationMatrix);\r\n\r\n Matrix2D.ScalingToRef(scaleX, scaleY, Matrix2D._TempScalingMatrix);\r\n\r\n Matrix2D.RotationToRef(angle, Matrix2D._TempRotationMatrix);\r\n\r\n Matrix2D.TranslationToRef(-tx, -ty, Matrix2D._TempPostTranslationMatrix);\r\n\r\n Matrix2D._TempPreTranslationMatrix.multiplyToRef(Matrix2D._TempScalingMatrix, Matrix2D._TempCompose0);\r\n Matrix2D._TempCompose0.multiplyToRef(Matrix2D._TempRotationMatrix, Matrix2D._TempCompose1);\r\n if (parentMatrix) {\r\n Matrix2D._TempCompose1.multiplyToRef(Matrix2D._TempPostTranslationMatrix, Matrix2D._TempCompose2);\r\n Matrix2D._TempCompose2.multiplyToRef(parentMatrix, result);\r\n } else {\r\n Matrix2D._TempCompose1.multiplyToRef(Matrix2D._TempPostTranslationMatrix, result);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Useful math functions\r\n */\r\nexport class MathTools {\r\n /**\r\n * Default rounding precision for GUI elements. It should be\r\n * set to a power of ten, where the exponent means the number\r\n * of decimal digits to round to, i.e, 100 means 2 decimal digits,\r\n * 1000 means 3 decimal digits, etc. Default is 100 (2 decimal digits).\r\n */\r\n public static DefaultRoundingPrecision = 100;\r\n\r\n /**\r\n * Rounds a number to the nearest multiple of a given precision\r\n * @param value the value to be rounded\r\n * @param precision the multiple to which the value will be rounded. Default is 100 (2 decimal digits)\r\n * @returns\r\n */\r\n public static Round(value: number, precision: number = MathTools.DefaultRoundingPrecision): number {\r\n return Math.round(value * precision) / precision;\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"math2D.js","sourceRoot":"","sources":["../../../../dev/gui/src/2D/math2D.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { Epsilon } from \"core/Maths/math.constants\";\r\n\r\n/**\r\n * Class used to transport Vector2 information for pointer events\r\n */\r\nexport class Vector2WithInfo extends Vector2 {\r\n /**\r\n * Creates a new Vector2WithInfo\r\n * @param source defines the vector2 data to transport\r\n * @param buttonIndex defines the current mouse button index\r\n */\r\n public constructor(\r\n source: Vector2,\r\n /** defines the current mouse button index */\r\n public buttonIndex: number = 0\r\n ) {\r\n super(source.x, source.y);\r\n }\r\n}\r\n\r\n/** Class used to provide 2D matrix features */\r\nexport class Matrix2D {\r\n /** Gets the internal array of 6 floats used to store matrix data */\r\n public m = new Float32Array(6);\r\n\r\n /**\r\n * Creates a new matrix\r\n * @param m00 defines value for (0, 0)\r\n * @param m01 defines value for (0, 1)\r\n * @param m10 defines value for (1, 0)\r\n * @param m11 defines value for (1, 1)\r\n * @param m20 defines value for (2, 0)\r\n * @param m21 defines value for (2, 1)\r\n */\r\n constructor(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number) {\r\n this.fromValues(m00, m01, m10, m11, m20, m21);\r\n }\r\n\r\n /**\r\n * Fills the matrix from direct values\r\n * @param m00 defines value for (0, 0)\r\n * @param m01 defines value for (0, 1)\r\n * @param m10 defines value for (1, 0)\r\n * @param m11 defines value for (1, 1)\r\n * @param m20 defines value for (2, 0)\r\n * @param m21 defines value for (2, 1)\r\n * @returns the current modified matrix\r\n */\r\n public fromValues(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number): Matrix2D {\r\n this.m[0] = m00;\r\n this.m[1] = m01;\r\n this.m[2] = m10;\r\n this.m[3] = m11;\r\n this.m[4] = m20;\r\n this.m[5] = m21;\r\n return this;\r\n }\r\n\r\n /**\r\n * Gets matrix determinant\r\n * @returns the determinant\r\n */\r\n public determinant(): number {\r\n return this.m[0] * this.m[3] - this.m[1] * this.m[2];\r\n }\r\n\r\n /**\r\n * Inverses the matrix and stores it in a target matrix\r\n * @param result defines the target matrix\r\n * @returns the current matrix\r\n */\r\n public invertToRef(result: Matrix2D): Matrix2D {\r\n const l0 = this.m[0];\r\n const l1 = this.m[1];\r\n const l2 = this.m[2];\r\n const l3 = this.m[3];\r\n const l4 = this.m[4];\r\n const l5 = this.m[5];\r\n\r\n const det = this.determinant();\r\n if (det < Epsilon * Epsilon) {\r\n result.m[0] = 0;\r\n result.m[1] = 0;\r\n result.m[2] = 0;\r\n result.m[3] = 0;\r\n result.m[4] = 0;\r\n result.m[5] = 0;\r\n return this;\r\n }\r\n\r\n const detDiv = 1 / det;\r\n\r\n const det4 = l2 * l5 - l3 * l4;\r\n const det5 = l1 * l4 - l0 * l5;\r\n\r\n result.m[0] = l3 * detDiv;\r\n result.m[1] = -l1 * detDiv;\r\n result.m[2] = -l2 * detDiv;\r\n result.m[3] = l0 * detDiv;\r\n result.m[4] = det4 * detDiv;\r\n result.m[5] = det5 * detDiv;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Multiplies the current matrix with another one\r\n * @param other defines the second operand\r\n * @param result defines the target matrix\r\n * @returns the current matrix\r\n */\r\n public multiplyToRef(other: Matrix2D, result: Matrix2D): Matrix2D {\r\n const l0 = this.m[0];\r\n const l1 = this.m[1];\r\n const l2 = this.m[2];\r\n const l3 = this.m[3];\r\n const l4 = this.m[4];\r\n const l5 = this.m[5];\r\n\r\n const r0 = other.m[0];\r\n const r1 = other.m[1];\r\n const r2 = other.m[2];\r\n const r3 = other.m[3];\r\n const r4 = other.m[4];\r\n const r5 = other.m[5];\r\n\r\n result.m[0] = l0 * r0 + l1 * r2;\r\n result.m[1] = l0 * r1 + l1 * r3;\r\n result.m[2] = l2 * r0 + l3 * r2;\r\n result.m[3] = l2 * r1 + l3 * r3;\r\n result.m[4] = l4 * r0 + l5 * r2 + r4;\r\n result.m[5] = l4 * r1 + l5 * r3 + r5;\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Applies the current matrix to a set of 2 floats and stores the result in a vector2\r\n * @param x defines the x coordinate to transform\r\n * @param y defines the x coordinate to transform\r\n * @param result defines the target vector2\r\n * @returns the current matrix\r\n */\r\n public transformCoordinates(x: number, y: number, result: Vector2): Matrix2D {\r\n result.x = x * this.m[0] + y * this.m[2] + this.m[4];\r\n result.y = x * this.m[1] + y * this.m[3] + this.m[5];\r\n\r\n return this;\r\n }\r\n\r\n // Statics\r\n /**\r\n * Creates an identity matrix\r\n * @returns a new matrix\r\n */\r\n public static Identity(): Matrix2D {\r\n return new Matrix2D(1, 0, 0, 1, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates an identity matrix and stores it in a target matrix\r\n * @param result defines the target matrix\r\n */\r\n public static IdentityToRef(result: Matrix2D): void {\r\n result.m[0] = 1;\r\n result.m[1] = 0;\r\n result.m[2] = 0;\r\n result.m[3] = 1;\r\n result.m[4] = 0;\r\n result.m[5] = 0;\r\n }\r\n\r\n /**\r\n * Creates a translation matrix and stores it in a target matrix\r\n * @param x defines the x coordinate of the translation\r\n * @param y defines the y coordinate of the translation\r\n * @param result defines the target matrix\r\n */\r\n public static TranslationToRef(x: number, y: number, result: Matrix2D): void {\r\n result.fromValues(1, 0, 0, 1, x, y);\r\n }\r\n\r\n /**\r\n * Creates a scaling matrix and stores it in a target matrix\r\n * @param x defines the x coordinate of the scaling\r\n * @param y defines the y coordinate of the scaling\r\n * @param result defines the target matrix\r\n */\r\n public static ScalingToRef(x: number, y: number, result: Matrix2D): void {\r\n result.fromValues(x, 0, 0, y, 0, 0);\r\n }\r\n\r\n /**\r\n * Creates a rotation matrix and stores it in a target matrix\r\n * @param angle defines the rotation angle\r\n * @param result defines the target matrix\r\n */\r\n public static RotationToRef(angle: number, result: Matrix2D): void {\r\n const s = Math.sin(angle);\r\n const c = Math.cos(angle);\r\n\r\n result.fromValues(c, s, -s, c, 0, 0);\r\n }\r\n\r\n private static _TempPreTranslationMatrix = Matrix2D.Identity();\r\n private static _TempPostTranslationMatrix = Matrix2D.Identity();\r\n private static _TempRotationMatrix = Matrix2D.Identity();\r\n private static _TempScalingMatrix = Matrix2D.Identity();\r\n private static _TempCompose0 = Matrix2D.Identity();\r\n private static _TempCompose1 = Matrix2D.Identity();\r\n private static _TempCompose2 = Matrix2D.Identity();\r\n\r\n /**\r\n * Composes a matrix from translation, rotation, scaling and parent matrix and stores it in a target matrix\r\n * @param tx defines the x coordinate of the translation\r\n * @param ty defines the y coordinate of the translation\r\n * @param angle defines the rotation angle\r\n * @param scaleX defines the x coordinate of the scaling\r\n * @param scaleY defines the y coordinate of the scaling\r\n * @param parentMatrix defines the parent matrix to multiply by (can be null)\r\n * @param result defines the target matrix\r\n */\r\n public static ComposeToRef(tx: number, ty: number, angle: number, scaleX: number, scaleY: number, parentMatrix: Nullable<Matrix2D>, result: Matrix2D): void {\r\n Matrix2D.TranslationToRef(tx, ty, Matrix2D._TempPreTranslationMatrix);\r\n\r\n Matrix2D.ScalingToRef(scaleX, scaleY, Matrix2D._TempScalingMatrix);\r\n\r\n Matrix2D.RotationToRef(angle, Matrix2D._TempRotationMatrix);\r\n\r\n Matrix2D.TranslationToRef(-tx, -ty, Matrix2D._TempPostTranslationMatrix);\r\n\r\n Matrix2D._TempPreTranslationMatrix.multiplyToRef(Matrix2D._TempScalingMatrix, Matrix2D._TempCompose0);\r\n Matrix2D._TempCompose0.multiplyToRef(Matrix2D._TempRotationMatrix, Matrix2D._TempCompose1);\r\n if (parentMatrix) {\r\n Matrix2D._TempCompose1.multiplyToRef(Matrix2D._TempPostTranslationMatrix, Matrix2D._TempCompose2);\r\n Matrix2D._TempCompose2.multiplyToRef(parentMatrix, result);\r\n } else {\r\n Matrix2D._TempCompose1.multiplyToRef(Matrix2D._TempPostTranslationMatrix, result);\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Useful math functions\r\n */\r\nexport class MathTools {\r\n /**\r\n * Default rounding precision for GUI elements. It should be\r\n * set to a power of ten, where the exponent means the number\r\n * of decimal digits to round to, i.e, 100 means 2 decimal digits,\r\n * 1000 means 3 decimal digits, etc. Default is 100 (2 decimal digits).\r\n */\r\n public static DefaultRoundingPrecision = 100;\r\n\r\n /**\r\n * Rounds a number to the nearest multiple of a given precision\r\n * @param value the value to be rounded\r\n * @param precision the multiple to which the value will be rounded. Default is 100 (2 decimal digits)\r\n * @returns\r\n */\r\n public static Round(value: number, precision: number = MathTools.DefaultRoundingPrecision): number {\r\n return Math.round(value * precision) / precision;\r\n }\r\n}\r\n"]}
package/2D/measure.js CHANGED
@@ -1,4 +1,4 @@
1
- import { Vector2 } from "@babylonjs/core/Maths/math.vector.js";
1
+ import { Vector2 } from "@babylonjs/core/Maths/math.vector.pure.js";
2
2
  const TmpRect = [new Vector2(0, 0), new Vector2(0, 0), new Vector2(0, 0), new Vector2(0, 0)];
3
3
  const TmpRect2 = [new Vector2(0, 0), new Vector2(0, 0), new Vector2(0, 0), new Vector2(0, 0)];
4
4
  const TmpV1 = new Vector2(0, 0);