@babylonjs/gui 5.0.0-alpha.9 → 5.0.0-beta.1

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 (276) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +165 -125
  3. package/2D/advancedDynamicTexture.js +342 -181
  4. package/2D/advancedDynamicTexture.js.map +1 -1
  5. package/2D/controls/button.d.ts +8 -0
  6. package/2D/controls/button.js +33 -10
  7. package/2D/controls/button.js.map +1 -1
  8. package/2D/controls/checkbox.d.ts +2 -1
  9. package/2D/controls/checkbox.js +10 -8
  10. package/2D/controls/checkbox.js.map +1 -1
  11. package/2D/controls/colorpicker.d.ts +4 -3
  12. package/2D/controls/colorpicker.js +40 -23
  13. package/2D/controls/colorpicker.js.map +1 -1
  14. package/2D/controls/container.d.ts +16 -5
  15. package/2D/controls/container.js +91 -13
  16. package/2D/controls/container.js.map +1 -1
  17. package/2D/controls/control.d.ts +103 -44
  18. package/2D/controls/control.js +278 -129
  19. package/2D/controls/control.js.map +1 -1
  20. package/2D/controls/displayGrid.d.ts +2 -1
  21. package/2D/controls/displayGrid.js +6 -6
  22. package/2D/controls/displayGrid.js.map +1 -1
  23. package/2D/controls/ellipse.d.ts +5 -3
  24. package/2D/controls/ellipse.js +9 -5
  25. package/2D/controls/ellipse.js.map +1 -1
  26. package/2D/controls/focusableButton.d.ts +1 -0
  27. package/2D/controls/focusableButton.js +9 -6
  28. package/2D/controls/focusableButton.js.map +1 -1
  29. package/2D/controls/grid.d.ts +13 -2
  30. package/2D/controls/grid.js +108 -24
  31. package/2D/controls/grid.js.map +1 -1
  32. package/2D/controls/image.d.ts +5 -4
  33. package/2D/controls/image.js +52 -31
  34. package/2D/controls/image.js.map +1 -1
  35. package/2D/controls/index.js +29 -29
  36. package/2D/controls/inputPassword.js +4 -4
  37. package/2D/controls/inputPassword.js.map +1 -1
  38. package/2D/controls/inputText.d.ts +2 -1
  39. package/2D/controls/inputText.js +40 -14
  40. package/2D/controls/inputText.js.map +1 -1
  41. package/2D/controls/line.d.ts +3 -2
  42. package/2D/controls/line.js +8 -8
  43. package/2D/controls/line.js.map +1 -1
  44. package/2D/controls/multiLine.d.ts +4 -3
  45. package/2D/controls/multiLine.js +6 -6
  46. package/2D/controls/multiLine.js.map +1 -1
  47. package/2D/controls/radioButton.d.ts +2 -1
  48. package/2D/controls/radioButton.js +10 -7
  49. package/2D/controls/radioButton.js.map +1 -1
  50. package/2D/controls/rectangle.d.ts +8 -3
  51. package/2D/controls/rectangle.js +21 -5
  52. package/2D/controls/rectangle.js.map +1 -1
  53. package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -2
  54. package/2D/controls/scrollViewers/scrollViewer.js +9 -9
  55. package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
  56. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +4 -3
  57. package/2D/controls/scrollViewers/scrollViewerWindow.js +4 -4
  58. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  59. package/2D/controls/selector.js +8 -8
  60. package/2D/controls/selector.js.map +1 -1
  61. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  62. package/2D/controls/sliders/baseSlider.js +12 -10
  63. package/2D/controls/sliders/baseSlider.js.map +1 -1
  64. package/2D/controls/sliders/imageBasedSlider.d.ts +10 -1
  65. package/2D/controls/sliders/imageBasedSlider.js +29 -5
  66. package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
  67. package/2D/controls/sliders/imageScrollBar.d.ts +2 -1
  68. package/2D/controls/sliders/imageScrollBar.js +3 -3
  69. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  70. package/2D/controls/sliders/scrollBar.d.ts +2 -1
  71. package/2D/controls/sliders/scrollBar.js +3 -3
  72. package/2D/controls/sliders/scrollBar.js.map +1 -1
  73. package/2D/controls/sliders/slider.d.ts +2 -1
  74. package/2D/controls/sliders/slider.js +4 -4
  75. package/2D/controls/sliders/slider.js.map +1 -1
  76. package/2D/controls/stackPanel.d.ts +10 -3
  77. package/2D/controls/stackPanel.js +35 -13
  78. package/2D/controls/stackPanel.js.map +1 -1
  79. package/2D/controls/statics.js +3 -3
  80. package/2D/controls/statics.js.map +1 -1
  81. package/2D/controls/textBlock.d.ts +16 -9
  82. package/2D/controls/textBlock.js +75 -34
  83. package/2D/controls/textBlock.js.map +1 -1
  84. package/2D/controls/textWrapper.js +2 -2
  85. package/2D/controls/textWrapper.js.map +1 -1
  86. package/2D/controls/toggleButton.d.ts +1 -13
  87. package/2D/controls/toggleButton.js +29 -38
  88. package/2D/controls/toggleButton.js.map +1 -1
  89. package/2D/controls/virtualKeyboard.js +5 -5
  90. package/2D/controls/virtualKeyboard.js.map +1 -1
  91. package/2D/index.d.ts +1 -1
  92. package/2D/index.js +9 -9
  93. package/2D/index.js.map +1 -1
  94. package/2D/math2D.d.ts +5 -0
  95. package/2D/math2D.js +14 -2
  96. package/2D/math2D.js.map +1 -1
  97. package/2D/measure.js +1 -1
  98. package/2D/measure.js.map +1 -1
  99. package/2D/multiLinePoint.js +3 -3
  100. package/2D/style.js +2 -2
  101. package/2D/valueAndUnit.d.ts +21 -6
  102. package/2D/valueAndUnit.js +57 -13
  103. package/2D/valueAndUnit.js.map +1 -1
  104. package/2D/xmlLoader.d.ts +17 -3
  105. package/2D/xmlLoader.js +54 -15
  106. package/2D/xmlLoader.js.map +1 -1
  107. package/3D/behaviors/defaultBehavior.d.ts +73 -0
  108. package/3D/behaviors/defaultBehavior.js +122 -0
  109. package/3D/behaviors/defaultBehavior.js.map +1 -0
  110. package/3D/controls/abstractButton3D.d.ts +2 -2
  111. package/3D/controls/abstractButton3D.js +3 -3
  112. package/3D/controls/abstractButton3D.js.map +1 -1
  113. package/3D/controls/button3D.d.ts +0 -24
  114. package/3D/controls/button3D.js +15 -84
  115. package/3D/controls/button3D.js.map +1 -1
  116. package/3D/controls/container3D.js +2 -2
  117. package/3D/controls/contentDisplay3D.d.ts +30 -0
  118. package/3D/controls/contentDisplay3D.js +79 -0
  119. package/3D/controls/contentDisplay3D.js.map +1 -0
  120. package/3D/controls/control3D.d.ts +10 -7
  121. package/3D/controls/control3D.js +27 -19
  122. package/3D/controls/control3D.js.map +1 -1
  123. package/3D/controls/cylinderPanel.js +5 -5
  124. package/3D/controls/handMenu.d.ts +28 -0
  125. package/3D/controls/handMenu.js +48 -0
  126. package/3D/controls/handMenu.js.map +1 -0
  127. package/3D/controls/holographicBackplate.d.ts +48 -0
  128. package/3D/controls/holographicBackplate.js +121 -0
  129. package/3D/controls/holographicBackplate.js.map +1 -0
  130. package/3D/controls/holographicButton.d.ts +1 -1
  131. package/3D/controls/holographicButton.js +35 -31
  132. package/3D/controls/holographicButton.js.map +1 -1
  133. package/3D/controls/holographicSlate.d.ts +118 -0
  134. package/3D/controls/holographicSlate.js +365 -0
  135. package/3D/controls/holographicSlate.js.map +1 -0
  136. package/3D/controls/index.d.ts +7 -0
  137. package/3D/controls/index.js +22 -15
  138. package/3D/controls/index.js.map +1 -1
  139. package/3D/controls/meshButton3D.js +2 -2
  140. package/3D/controls/meshButton3D.js.map +1 -1
  141. package/3D/controls/nearMenu.d.ts +45 -0
  142. package/3D/controls/nearMenu.js +111 -0
  143. package/3D/controls/nearMenu.js.map +1 -0
  144. package/3D/controls/planePanel.js +3 -3
  145. package/3D/controls/scatterPanel.js +4 -4
  146. package/3D/controls/slider3D.d.ts +80 -0
  147. package/3D/controls/slider3D.js +268 -0
  148. package/3D/controls/slider3D.js.map +1 -0
  149. package/3D/controls/spherePanel.js +5 -5
  150. package/3D/controls/stackPanel3D.js +3 -3
  151. package/3D/controls/touchButton3D.d.ts +9 -21
  152. package/3D/controls/touchButton3D.js +52 -224
  153. package/3D/controls/touchButton3D.js.map +1 -1
  154. package/3D/controls/touchHolographicButton.d.ts +20 -3
  155. package/3D/controls/touchHolographicButton.js +137 -67
  156. package/3D/controls/touchHolographicButton.js.map +1 -1
  157. package/3D/controls/touchHolographicMenu.d.ts +61 -0
  158. package/3D/controls/touchHolographicMenu.js +149 -0
  159. package/3D/controls/touchHolographicMenu.js.map +1 -0
  160. package/3D/controls/touchMeshButton3D.d.ts +3 -6
  161. package/3D/controls/touchMeshButton3D.js +6 -14
  162. package/3D/controls/touchMeshButton3D.js.map +1 -1
  163. package/3D/controls/touchToggleButton3D.d.ts +35 -0
  164. package/3D/controls/touchToggleButton3D.js +60 -0
  165. package/3D/controls/touchToggleButton3D.js.map +1 -0
  166. package/3D/controls/volumeBasedPanel.d.ts +1 -1
  167. package/3D/controls/volumeBasedPanel.js +5 -5
  168. package/3D/controls/volumeBasedPanel.js.map +1 -1
  169. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  170. package/3D/gizmos/gizmoHandle.js +210 -0
  171. package/3D/gizmos/gizmoHandle.js.map +1 -0
  172. package/3D/gizmos/index.d.ts +2 -0
  173. package/3D/gizmos/index.js +3 -0
  174. package/3D/gizmos/index.js.map +1 -0
  175. package/3D/gizmos/slateGizmo.d.ts +59 -0
  176. package/3D/gizmos/slateGizmo.js +364 -0
  177. package/3D/gizmos/slateGizmo.js.map +1 -0
  178. package/3D/gui3DManager.d.ts +15 -2
  179. package/3D/gui3DManager.js +62 -41
  180. package/3D/gui3DManager.js.map +1 -1
  181. package/3D/index.d.ts +3 -2
  182. package/3D/index.js +5 -4
  183. package/3D/index.js.map +1 -1
  184. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  185. package/3D/materials/fluent/fluentMaterial.js +282 -0
  186. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  187. package/3D/materials/fluent/index.d.ts +1 -0
  188. package/3D/materials/fluent/index.js +2 -0
  189. package/3D/materials/fluent/index.js.map +1 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  191. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  192. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  193. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  194. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  195. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  196. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  197. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  198. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  199. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  200. package/3D/materials/fluentBackplate/index.js +2 -0
  201. package/3D/materials/fluentBackplate/index.js.map +1 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  204. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  205. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  206. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  207. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  208. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  209. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  210. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  211. package/3D/materials/fluentButton/index.d.ts +1 -0
  212. package/3D/materials/fluentButton/index.js +2 -0
  213. package/3D/materials/fluentButton/index.js.map +1 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  216. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  217. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  218. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  219. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  220. package/3D/materials/fluentMaterial.d.ts +2 -88
  221. package/3D/materials/fluentMaterial.js +2 -277
  222. package/3D/materials/fluentMaterial.js.map +1 -1
  223. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  224. package/3D/materials/handle/handleMaterial.js +127 -0
  225. package/3D/materials/handle/handleMaterial.js.map +1 -0
  226. package/3D/materials/handle/index.d.ts +1 -0
  227. package/3D/materials/handle/index.js +2 -0
  228. package/3D/materials/handle/index.js.map +1 -0
  229. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  230. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  231. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  232. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  233. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  234. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  235. package/3D/materials/index.d.ts +5 -1
  236. package/3D/materials/index.js +5 -1
  237. package/3D/materials/index.js.map +1 -1
  238. package/3D/materials/mrdl/index.d.ts +3 -0
  239. package/3D/materials/mrdl/index.js +4 -0
  240. package/3D/materials/mrdl/index.js.map +1 -0
  241. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  242. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  243. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  244. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  245. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  246. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  247. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  248. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  249. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  252. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  253. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  254. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  255. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  264. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  265. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  266. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  267. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  268. package/3D/vector3WithInfo.js +1 -1
  269. package/index.d.ts +2 -2
  270. package/index.js +2 -2
  271. package/index.js.map +1 -1
  272. package/legacy/legacy.js +2 -2
  273. package/package.json +117 -9
  274. package/3D/materials/shaders/fluent.fragment.js +0 -7
  275. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  276. package/3D/materials/shaders/fluent.vertex.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"inputText.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/inputText.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\nimport { ClipboardEventTypes, ClipboardInfo } from \"@babylonjs/core/Events/clipboardEvents\";\nimport { PointerInfo, PointerEventTypes, PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\n\nimport { Control } from \"./control\";\nimport { IFocusableControl } from \"./focusableControl\";\nimport { ValueAndUnit } from \"../valueAndUnit\";\nimport { VirtualKeyboard } from \"./virtualKeyboard\";\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\nimport { Measure } from '../measure';\nimport { TextWrapper } from './textWrapper';\nimport { serialize } from '@babylonjs/core/Misc/decorators';\nimport { IKeyboardEvent } from '@babylonjs/core/Events/deviceInputEvents';\n\n/**\n * Class used to create input text control\n */\nexport class InputText extends Control implements IFocusableControl {\n private _textWrapper: TextWrapper;\n private _placeholderText = \"\";\n private _background = \"#222222\";\n private _focusedBackground = \"#000000\";\n private _focusedColor = \"white\";\n private _placeholderColor = \"gray\";\n private _thickness = 1;\n private _margin = new ValueAndUnit(10, ValueAndUnit.UNITMODE_PIXEL);\n private _autoStretchWidth = true;\n private _maxWidth = new ValueAndUnit(1, ValueAndUnit.UNITMODE_PERCENTAGE, false);\n private _isFocused = false;\n private _blinkTimeout: number;\n private _blinkIsEven = false;\n private _cursorOffset = 0;\n private _scrollLeft: Nullable<number>;\n private _textWidth: number;\n private _clickedCoordinate: Nullable<number>;\n private _deadKey = false;\n private _addKey = true;\n private _currentKey = \"\";\n private _isTextHighlightOn = false;\n private _textHighlightColor = \"#d5e0ff\";\n private _highligherOpacity = 0.4;\n private _highlightedText = \"\";\n private _startHighlightIndex = 0;\n private _endHighlightIndex = 0;\n private _cursorIndex = -1;\n private _onFocusSelectAll = false;\n private _isPointerDown = false;\n private _onClipboardObserver: Nullable<Observer<ClipboardInfo>>;\n private _onPointerDblTapObserver: Nullable<Observer<PointerInfo>>;\n\n /** @hidden */\n public _connectedVirtualKeyboard: Nullable<VirtualKeyboard>;\n\n /** Gets or sets a string representing the message displayed on mobile when the control gets the focus */\n @serialize()\n public promptMessage = \"Please enter text:\";\n /** Force disable prompt on mobile device */\n @serialize()\n public disableMobilePrompt = false;\n\n /** Observable raised when the text changes */\n public onTextChangedObservable = new Observable<InputText>();\n /** Observable raised just before an entered character is to be added */\n public onBeforeKeyAddObservable = new Observable<InputText>();\n /** Observable raised when the control gets the focus */\n public onFocusObservable = new Observable<InputText>();\n /** Observable raised when the control loses the focus */\n public onBlurObservable = new Observable<InputText>();\n /**Observable raised when the text is highlighted */\n public onTextHighlightObservable = new Observable<InputText>();\n /**Observable raised when copy event is triggered */\n public onTextCopyObservable = new Observable<InputText>();\n /** Observable raised when cut event is triggered */\n public onTextCutObservable = new Observable<InputText>();\n /** Observable raised when paste event is triggered */\n public onTextPasteObservable = new Observable<InputText>();\n /** Observable raised when a key event was processed */\n public onKeyboardEventProcessedObservable = new Observable<IKeyboardEvent>();\n\n /** Gets or sets the maximum width allowed by the control */\n @serialize()\n public get maxWidth(): string | number {\n return this._maxWidth.toString(this._host);\n }\n\n /** Gets the maximum width allowed by the control in pixels */\n public get maxWidthInPixels(): number {\n return this._maxWidth.getValueInPixel(this._host, this._cachedParentMeasure.width);\n }\n\n public set maxWidth(value: string | number) {\n if (this._maxWidth.toString(this._host) === value) {\n return;\n }\n\n if (this._maxWidth.fromString(value)) {\n this._markAsDirty();\n }\n }\n\n /** Gets or sets the text highlighter transparency; default: 0.4 */\n @serialize()\n public get highligherOpacity(): number {\n return this._highligherOpacity;\n }\n\n public set highligherOpacity(value: number) {\n if (this._highligherOpacity === value) {\n return;\n }\n this._highligherOpacity = value;\n this._markAsDirty();\n }\n /** Gets or sets a boolean indicating whether to select complete text by default on input focus */\n @serialize()\n public get onFocusSelectAll(): boolean {\n return this._onFocusSelectAll;\n }\n\n public set onFocusSelectAll(value: boolean) {\n if (this._onFocusSelectAll === value) {\n return;\n }\n\n this._onFocusSelectAll = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the text hightlight color */\n @serialize()\n public get textHighlightColor(): string {\n return this._textHighlightColor;\n }\n\n public set textHighlightColor(value: string) {\n if (this._textHighlightColor === value) {\n return;\n }\n this._textHighlightColor = value;\n this._markAsDirty();\n }\n\n /** Gets or sets control margin */\n @serialize()\n public get margin(): string {\n return this._margin.toString(this._host);\n }\n\n /** Gets control margin in pixels */\n public get marginInPixels(): number {\n return this._margin.getValueInPixel(this._host, this._cachedParentMeasure.width);\n }\n\n public set margin(value: string) {\n if (this._margin.toString(this._host) === value) {\n return;\n }\n\n if (this._margin.fromString(value)) {\n this._markAsDirty();\n }\n }\n\n /** Gets or sets a boolean indicating if the control can auto stretch its width to adapt to the text */\n @serialize()\n public get autoStretchWidth(): boolean {\n return this._autoStretchWidth;\n }\n\n public set autoStretchWidth(value: boolean) {\n if (this._autoStretchWidth === value) {\n return;\n }\n\n this._autoStretchWidth = value;\n this._markAsDirty();\n }\n\n /** Gets or sets border thickness */\n @serialize()\n public get thickness(): number {\n return this._thickness;\n }\n\n public set thickness(value: number) {\n if (this._thickness === value) {\n return;\n }\n\n this._thickness = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the background color when focused */\n @serialize()\n public get focusedBackground(): string {\n return this._focusedBackground;\n }\n\n public set focusedBackground(value: string) {\n if (this._focusedBackground === value) {\n return;\n }\n\n this._focusedBackground = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the background color when focused */\n @serialize()\n public get focusedColor(): string {\n return this._focusedColor;\n }\n\n public set focusedColor(value: string) {\n if (this._focusedColor === value) {\n return;\n }\n\n this._focusedColor = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the background color */\n @serialize()\n public get background(): string {\n return this._background;\n }\n\n public set background(value: string) {\n if (this._background === value) {\n return;\n }\n\n this._background = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the placeholder color */\n @serialize()\n public get placeholderColor(): string {\n return this._placeholderColor;\n }\n\n public set placeholderColor(value: string) {\n if (this._placeholderColor === value) {\n return;\n }\n\n this._placeholderColor = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the text displayed when the control is empty */\n @serialize()\n public get placeholderText(): string {\n return this._placeholderText;\n }\n\n public set placeholderText(value: string) {\n if (this._placeholderText === value) {\n return;\n }\n this._placeholderText = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the dead key flag */\n @serialize()\n public get deadKey(): boolean {\n return this._deadKey;\n }\n\n public set deadKey(flag: boolean) {\n this._deadKey = flag;\n }\n\n /** Gets or sets the highlight text */\n public get highlightedText(): string {\n return this._highlightedText;\n }\n public set highlightedText(text: string) {\n if (this._highlightedText === text) {\n return;\n }\n this._highlightedText = text;\n this._markAsDirty();\n }\n\n /** Gets or sets if the current key should be added */\n public get addKey(): boolean {\n return this._addKey;\n }\n\n public set addKey(flag: boolean) {\n this._addKey = flag;\n }\n\n /** Gets or sets the value of the current key being entered */\n public get currentKey(): string {\n return this._currentKey;\n }\n\n public set currentKey(key: string) {\n this._currentKey = key;\n }\n\n /** Gets or sets the text displayed in the control */\n @serialize()\n public get text(): string {\n return this._textWrapper.text;\n }\n\n public set text(value: string) {\n let valueAsString = value.toString(); // Forcing convertion\n\n if (!this._textWrapper) {\n this._textWrapper = new TextWrapper();\n }\n\n if (this._textWrapper.text === valueAsString) {\n return;\n }\n this._textWrapper.text = valueAsString;\n this._textHasChanged();\n }\n\n private _textHasChanged(): void {\n this._markAsDirty();\n this.onTextChangedObservable.notifyObservers(this);\n }\n\n /** Gets or sets control width */\n @serialize()\n public get width(): string | number {\n return this._width.toString(this._host);\n }\n\n public set width(value: string | number) {\n if (this._width.toString(this._host) === value) {\n return;\n }\n\n if (this._width.fromString(value)) {\n this._markAsDirty();\n }\n\n this.autoStretchWidth = false;\n }\n\n /**\n * Creates a new InputText\n * @param name defines the control name\n * @param text defines the text of the control\n */\n constructor(public name?: string, text: string = \"\") {\n super(name);\n\n this.text = text;\n this.isPointerBlocker = true;\n }\n\n /** @hidden */\n public onBlur(): void {\n this._isFocused = false;\n this._scrollLeft = null;\n this._cursorOffset = 0;\n clearTimeout(this._blinkTimeout);\n this._markAsDirty();\n\n this.onBlurObservable.notifyObservers(this);\n\n this._host.unRegisterClipboardEvents();\n if (this._onClipboardObserver) {\n this._host.onClipboardObservable.remove(this._onClipboardObserver);\n }\n let scene = this._host.getScene();\n if (this._onPointerDblTapObserver && scene) {\n scene.onPointerObservable.remove(this._onPointerDblTapObserver);\n }\n }\n\n /** @hidden */\n public onFocus(): void {\n if (!this._isEnabled) {\n return;\n }\n this._scrollLeft = null;\n this._isFocused = true;\n this._blinkIsEven = false;\n this._cursorOffset = 0;\n this._markAsDirty();\n\n this.onFocusObservable.notifyObservers(this);\n\n if (navigator.userAgent.indexOf(\"Mobile\") !== -1 && !this.disableMobilePrompt) {\n let value = prompt(this.promptMessage);\n\n if (value !== null) {\n this.text = value;\n }\n this._host.focusedControl = null;\n return;\n }\n\n this._host.registerClipboardEvents();\n\n this._onClipboardObserver = this._host.onClipboardObservable.add((clipboardInfo) => {\n // process clipboard event, can be configured.\n switch (clipboardInfo.type) {\n case ClipboardEventTypes.COPY:\n this._onCopyText(clipboardInfo.event);\n this.onTextCopyObservable.notifyObservers(this);\n break;\n case ClipboardEventTypes.CUT:\n this._onCutText(clipboardInfo.event);\n this.onTextCutObservable.notifyObservers(this);\n break;\n case ClipboardEventTypes.PASTE:\n this._onPasteText(clipboardInfo.event);\n this.onTextPasteObservable.notifyObservers(this);\n break;\n default: return;\n }\n });\n\n let scene = this._host.getScene();\n if (scene) {\n //register the pointer double tap event\n this._onPointerDblTapObserver = scene.onPointerObservable.add((pointerInfo) => {\n if (!this._isFocused) {\n return;\n }\n if (pointerInfo.type === PointerEventTypes.POINTERDOUBLETAP) {\n this._processDblClick(pointerInfo);\n }\n });\n }\n\n if (this._onFocusSelectAll) {\n this._selectAllText();\n }\n\n }\n\n /**\n * Function to focus an inputText programmatically\n */\n public focus() {\n this._host.moveFocusToControl(this);\n }\n\n /**\n * Function to unfocus an inputText programmatically\n */\n public blur() {\n this._host.focusedControl = null;\n }\n\n protected _getTypeName(): string {\n return \"InputText\";\n }\n\n /**\n * Function called to get the list of controls that should not steal the focus from this control\n * @returns an array of controls\n */\n public keepsFocusWith(): Nullable<Control[]> {\n if (!this._connectedVirtualKeyboard) {\n return null;\n }\n return [this._connectedVirtualKeyboard];\n }\n\n /** @hidden */\n public processKey(keyCode: number, key?: string, evt?: IKeyboardEvent) {\n\n //return if clipboard event keys (i.e -ctr/cmd + c,v,x)\n if (evt && (evt.ctrlKey || evt.metaKey) && (keyCode === 67 || keyCode === 86 || keyCode === 88)) {\n return;\n }\n\n //select all\n if (evt && (evt.ctrlKey || evt.metaKey) && keyCode === 65) {\n this._selectAllText();\n evt.preventDefault();\n return;\n }\n // Specific cases\n switch (keyCode) {\n case 32: //SPACE\n key = \" \"; //ie11 key for space is \"Spacebar\"\n break;\n case 191: //SLASH\n if (evt) {\n evt.preventDefault();\n }\n break;\n case 8: // BACKSPACE\n if (this._textWrapper.text && this._textWrapper.length > 0) {\n //delete the highlighted text\n if (this._isTextHighlightOn) {\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex);\n this._textHasChanged();\n this._isTextHighlightOn = false;\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n this._blinkIsEven = false;\n if (evt) {\n evt.preventDefault();\n }\n return;\n }\n //delete single character\n if (this._cursorOffset === 0) {\n this.text = this._textWrapper.substr(0, this._textWrapper.length - 1);\n } else {\n let deletePosition = this._textWrapper.length - this._cursorOffset;\n if (deletePosition > 0) {\n this._textWrapper.removePart(deletePosition - 1, deletePosition);\n this._textHasChanged();\n }\n }\n }\n if (evt) {\n evt.preventDefault();\n }\n return;\n case 46: // DELETE\n if (this._isTextHighlightOn) {\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex);\n this._textHasChanged();\n this._isTextHighlightOn = false;\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n if (evt) {\n evt.preventDefault();\n }\n return;\n }\n if (this._textWrapper.text && this._textWrapper.length > 0 && this._cursorOffset > 0) {\n let deletePosition = this._textWrapper.length - this._cursorOffset;\n this._textWrapper.removePart(deletePosition, deletePosition + 1);\n this._textHasChanged();\n this._cursorOffset--;\n }\n if (evt) {\n evt.preventDefault();\n }\n return;\n case 13: // RETURN\n this._host.focusedControl = null;\n this._isTextHighlightOn = false;\n return;\n case 35: // END\n this._cursorOffset = 0;\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._markAsDirty();\n return;\n case 36: // HOME\n this._cursorOffset = this._textWrapper.length;\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._markAsDirty();\n return;\n case 37: // LEFT\n this._cursorOffset++;\n if (this._cursorOffset > this._textWrapper.length) {\n this._cursorOffset = this._textWrapper.length;\n }\n\n if (evt && evt.shiftKey) {\n // update the cursor\n this._blinkIsEven = false;\n // shift + ctrl/cmd + <-\n if (evt.ctrlKey || evt.metaKey) {\n if (!this._isTextHighlightOn) {\n if (this._textWrapper.length === this._cursorOffset) {\n return;\n }\n else {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset + 1;\n }\n }\n this._startHighlightIndex = 0;\n this._cursorIndex = this._textWrapper.length - this._endHighlightIndex;\n this._cursorOffset = this._textWrapper.length;\n this._isTextHighlightOn = true;\n this._markAsDirty();\n return;\n }\n //store the starting point\n if (!this._isTextHighlightOn) {\n this._isTextHighlightOn = true;\n this._cursorIndex = (this._cursorOffset >= this._textWrapper.length) ? this._textWrapper.length : this._cursorOffset - 1;\n }\n //if text is already highlighted\n else if (this._cursorIndex === -1) {\n this._cursorIndex = this._textWrapper.length - this._endHighlightIndex;\n this._cursorOffset = (this._startHighlightIndex === 0) ? this._textWrapper.length : this._textWrapper.length - this._startHighlightIndex + 1;\n }\n //set the highlight indexes\n if (this._cursorIndex < this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorIndex;\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n }\n else if (this._cursorIndex > this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._startHighlightIndex = this._textWrapper.length - this._cursorIndex;\n }\n else {\n this._isTextHighlightOn = false;\n }\n this._markAsDirty();\n return;\n }\n if (this._isTextHighlightOn) {\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n this._isTextHighlightOn = false;\n }\n if (evt && (evt.ctrlKey || evt.metaKey)) {\n this._cursorOffset = this._textWrapper.length;\n evt.preventDefault();\n }\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._cursorIndex = -1;\n this._markAsDirty();\n return;\n case 39: // RIGHT\n this._cursorOffset--;\n if (this._cursorOffset < 0) {\n this._cursorOffset = 0;\n }\n if (evt && evt.shiftKey) {\n //update the cursor\n this._blinkIsEven = false;\n //shift + ctrl/cmd + ->\n if (evt.ctrlKey || evt.metaKey) {\n if (!this._isTextHighlightOn) {\n if (this._cursorOffset === 0) {\n return;\n }\n else {\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset - 1;\n }\n }\n this._endHighlightIndex = this._textWrapper.length;\n this._isTextHighlightOn = true;\n this._cursorIndex = this._textWrapper.length - this._startHighlightIndex;\n this._cursorOffset = 0;\n this._markAsDirty();\n return;\n }\n\n if (!this._isTextHighlightOn) {\n this._isTextHighlightOn = true;\n this._cursorIndex = (this._cursorOffset <= 0) ? 0 : this._cursorOffset + 1;\n }\n //if text is already highlighted\n else if (this._cursorIndex === -1) {\n this._cursorIndex = this._textWrapper.length - this._startHighlightIndex;\n this._cursorOffset = (this._textWrapper.length === this._endHighlightIndex) ? 0 : this._textWrapper.length - this._endHighlightIndex - 1;\n }\n //set the highlight indexes\n if (this._cursorIndex < this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorIndex;\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n }\n else if (this._cursorIndex > this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._startHighlightIndex = this._textWrapper.length - this._cursorIndex;\n }\n else {\n this._isTextHighlightOn = false;\n }\n this._markAsDirty();\n return;\n }\n if (this._isTextHighlightOn) {\n this._cursorOffset = this._textWrapper.length - this._endHighlightIndex;\n this._isTextHighlightOn = false;\n }\n //ctr + ->\n if (evt && (evt.ctrlKey || evt.metaKey)) {\n this._cursorOffset = 0;\n evt.preventDefault();\n }\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._cursorIndex = -1;\n this._markAsDirty();\n return;\n case 222: // Dead\n if (evt) {\n evt.preventDefault();\n }\n this._cursorIndex = -1;\n this.deadKey = true;\n break;\n }\n // Printable characters\n if (key &&\n ((keyCode === -1) || // Direct access\n (keyCode === 32) || // Space\n (keyCode > 47 && keyCode < 64) || // Numbers\n (keyCode > 64 && keyCode < 91) || // Letters\n (keyCode > 159 && keyCode < 193) || // Special characters\n (keyCode > 218 && keyCode < 223) || // Special characters\n (keyCode > 95 && keyCode < 112))) { // Numpad\n this._currentKey = key;\n this.onBeforeKeyAddObservable.notifyObservers(this);\n key = this._currentKey;\n if (this._addKey) {\n if (this._isTextHighlightOn) {\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex, key);\n this._textHasChanged();\n this._cursorOffset = this._textWrapper.length - (this._startHighlightIndex + 1);\n this._isTextHighlightOn = false;\n this._blinkIsEven = false;\n this._markAsDirty();\n }\n else if (this._cursorOffset === 0) {\n this.text += key;\n } else {\n let insertPosition = this._textWrapper.length - this._cursorOffset;\n this._textWrapper.removePart(insertPosition, insertPosition, key);\n this._textHasChanged();\n }\n }\n }\n }\n\n /** @hidden */\n private _updateValueFromCursorIndex(offset: number) {\n //update the cursor\n this._blinkIsEven = false;\n\n if (this._cursorIndex === -1) {\n this._cursorIndex = offset;\n } else {\n if (this._cursorIndex < this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorIndex;\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n }\n else if (this._cursorIndex > this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._startHighlightIndex = this._textWrapper.length - this._cursorIndex;\n }\n else {\n this._isTextHighlightOn = false;\n this._markAsDirty();\n return;\n }\n }\n this._isTextHighlightOn = true;\n this._markAsDirty();\n }\n /** @hidden */\n private _processDblClick(evt: PointerInfo) {\n //pre-find the start and end index of the word under cursor, speeds up the rendering\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._endHighlightIndex = this._startHighlightIndex;\n let moveLeft, moveRight;\n do {\n moveRight = this._endHighlightIndex < this._textWrapper.length && this._textWrapper.isWord(this._endHighlightIndex) ? ++this._endHighlightIndex : 0;\n moveLeft = this._startHighlightIndex > 0 && this._textWrapper.isWord(this._startHighlightIndex - 1) ? --this._startHighlightIndex : 0;\n } while (moveLeft || moveRight);\n\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n this.onTextHighlightObservable.notifyObservers(this);\n\n this._isTextHighlightOn = true;\n this._clickedCoordinate = null;\n this._blinkIsEven = true;\n this._cursorIndex = -1;\n this._markAsDirty();\n }\n /** @hidden */\n private _selectAllText() {\n this._blinkIsEven = true;\n this._isTextHighlightOn = true;\n\n this._startHighlightIndex = 0;\n this._endHighlightIndex = this._textWrapper.length;\n this._cursorOffset = this._textWrapper.length;\n this._cursorIndex = -1;\n this._markAsDirty();\n }\n\n /**\n * Handles the keyboard event\n * @param evt Defines the KeyboardEvent\n */\n public processKeyboard(evt: IKeyboardEvent): void {\n // process pressed key\n this.processKey(evt.keyCode, evt.key, evt);\n\n this.onKeyboardEventProcessedObservable.notifyObservers(evt);\n }\n\n /** @hidden */\n private _onCopyText(ev: ClipboardEvent): void {\n this._isTextHighlightOn = false;\n //when write permission to clipbaord data is denied\n try {\n ev.clipboardData && ev.clipboardData.setData(\"text/plain\", this._highlightedText);\n }\n catch { } //pass\n this._host.clipboardData = this._highlightedText;\n }\n /** @hidden */\n private _onCutText(ev: ClipboardEvent): void {\n if (!this._highlightedText) {\n return;\n }\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex);\n this._textHasChanged();\n this._isTextHighlightOn = false;\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n //when write permission to clipbaord data is denied\n try {\n ev.clipboardData && ev.clipboardData.setData(\"text/plain\", this._highlightedText);\n }\n catch { } //pass\n\n this._host.clipboardData = this._highlightedText;\n this._highlightedText = \"\";\n }\n /** @hidden */\n private _onPasteText(ev: ClipboardEvent): void {\n let data: string = \"\";\n if (ev.clipboardData && ev.clipboardData.types.indexOf(\"text/plain\") !== -1) {\n data = ev.clipboardData.getData(\"text/plain\");\n }\n else {\n //get the cached data; returns blank string by default\n data = this._host.clipboardData;\n }\n let insertPosition = this._textWrapper.length - this._cursorOffset;\n this._textWrapper.removePart(insertPosition, insertPosition, data);\n this._textHasChanged();\n }\n\n public _draw(context: CanvasRenderingContext2D, invalidatedRectangle?: Nullable<Measure>): void {\n context.save();\n\n this._applyStates(context);\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\n context.shadowColor = this.shadowColor;\n context.shadowBlur = this.shadowBlur;\n context.shadowOffsetX = this.shadowOffsetX;\n context.shadowOffsetY = this.shadowOffsetY;\n }\n\n // Background\n if (this._isFocused) {\n if (this._focusedBackground) {\n context.fillStyle = this._isEnabled ? this._focusedBackground : this._disabledColor;\n\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\n }\n } else if (this._background) {\n context.fillStyle = this._isEnabled ? this._background : this._disabledColor;\n\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\n }\n\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n\n if (!this._fontOffset) {\n this._fontOffset = Control._GetFontOffset(context.font);\n }\n\n // Text\n let clipTextLeft = this._currentMeasure.left + this._margin.getValueInPixel(this._host, this._tempParentMeasure.width);\n if (this.color) {\n context.fillStyle = this.color;\n }\n\n let text = this._beforeRenderText(this._textWrapper);\n\n if (!this._isFocused && !this._textWrapper.text && this._placeholderText) {\n text = new TextWrapper();\n text.text = this._placeholderText;\n\n if (this._placeholderColor) {\n context.fillStyle = this._placeholderColor;\n }\n }\n\n this._textWidth = context.measureText(text.text).width;\n let marginWidth = this._margin.getValueInPixel(this._host, this._tempParentMeasure.width) * 2;\n if (this._autoStretchWidth) {\n this.width = Math.min(this._maxWidth.getValueInPixel(this._host, this._tempParentMeasure.width), this._textWidth + marginWidth) + \"px\";\n }\n\n let rootY = this._fontOffset.ascent + (this._currentMeasure.height - this._fontOffset.height) / 2;\n let availableWidth = this._width.getValueInPixel(this._host, this._tempParentMeasure.width) - marginWidth;\n\n context.save();\n context.beginPath();\n context.rect(clipTextLeft, this._currentMeasure.top + (this._currentMeasure.height - this._fontOffset.height) / 2, availableWidth + 2, this._currentMeasure.height);\n context.clip();\n\n if (this._isFocused && this._textWidth > availableWidth) {\n let textLeft = clipTextLeft - this._textWidth + availableWidth;\n if (!this._scrollLeft) {\n this._scrollLeft = textLeft;\n }\n } else {\n this._scrollLeft = clipTextLeft;\n }\n\n context.fillText(text.text, this._scrollLeft, this._currentMeasure.top + rootY);\n\n // Cursor\n if (this._isFocused) {\n\n // Need to move cursor\n if (this._clickedCoordinate) {\n var rightPosition = this._scrollLeft + this._textWidth;\n var absoluteCursorPosition = rightPosition - this._clickedCoordinate;\n var currentSize = 0;\n this._cursorOffset = 0;\n var previousDist = 0;\n do {\n if (this._cursorOffset) {\n previousDist = Math.abs(absoluteCursorPosition - currentSize);\n }\n this._cursorOffset++;\n currentSize = context.measureText(text.substr(text.length - this._cursorOffset, this._cursorOffset)).width;\n\n } while (currentSize < absoluteCursorPosition && (text.length >= this._cursorOffset));\n\n // Find closest move\n if (Math.abs(absoluteCursorPosition - currentSize) > previousDist) {\n this._cursorOffset--;\n }\n\n this._blinkIsEven = false;\n this._clickedCoordinate = null;\n }\n\n // Render cursor\n if (!this._blinkIsEven) {\n let cursorOffsetText = text.substr(text.length - this._cursorOffset);\n let cursorOffsetWidth = context.measureText(cursorOffsetText).width;\n let cursorLeft = this._scrollLeft + this._textWidth - cursorOffsetWidth;\n\n if (cursorLeft < clipTextLeft) {\n this._scrollLeft += (clipTextLeft - cursorLeft);\n cursorLeft = clipTextLeft;\n this._markAsDirty();\n } else if (cursorLeft > clipTextLeft + availableWidth) {\n this._scrollLeft += (clipTextLeft + availableWidth - cursorLeft);\n cursorLeft = clipTextLeft + availableWidth;\n this._markAsDirty();\n }\n if (!this._isTextHighlightOn) {\n context.fillRect(cursorLeft, this._currentMeasure.top + (this._currentMeasure.height - this._fontOffset.height) / 2, 2, this._fontOffset.height);\n }\n }\n\n clearTimeout(this._blinkTimeout);\n this._blinkTimeout = <any>setTimeout(() => {\n this._blinkIsEven = !this._blinkIsEven;\n this._markAsDirty();\n }, 500);\n\n //show the highlighted text\n if (this._isTextHighlightOn) {\n clearTimeout(this._blinkTimeout);\n let highlightCursorOffsetWidth = context.measureText(text.substring(this._startHighlightIndex)).width;\n let highlightCursorLeft = this._scrollLeft + this._textWidth - highlightCursorOffsetWidth;\n this._highlightedText = text.substring(this._startHighlightIndex, this._endHighlightIndex);\n let width = context.measureText(text.substring(this._startHighlightIndex, this._endHighlightIndex)).width;\n if (highlightCursorLeft < clipTextLeft) {\n width = width - (clipTextLeft - highlightCursorLeft);\n if (!width) {\n // when using left arrow on text.length > availableWidth;\n // assigns the width of the first letter after clipTextLeft\n width = context.measureText(text.charAt(text.length - this._cursorOffset)).width;\n }\n highlightCursorLeft = clipTextLeft;\n }\n //for transparancy\n context.globalAlpha = this._highligherOpacity;\n context.fillStyle = this._textHighlightColor;\n context.fillRect(highlightCursorLeft, this._currentMeasure.top + (this._currentMeasure.height - this._fontOffset.height) / 2, width, this._fontOffset.height);\n context.globalAlpha = 1.0;\n }\n }\n context.restore();\n\n // Border\n if (this._thickness) {\n if (this._isFocused) {\n if (this.focusedColor) {\n context.strokeStyle = this.focusedColor;\n }\n } else {\n if (this.color) {\n context.strokeStyle = this.color;\n }\n }\n\n context.lineWidth = this._thickness;\n\n context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2,\n this._currentMeasure.width - this._thickness, this._currentMeasure.height - this._thickness);\n }\n\n context.restore();\n }\n\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 this._clickedCoordinate = coordinates.x;\n this._isTextHighlightOn = false;\n this._highlightedText = \"\";\n this._cursorIndex = -1;\n this._isPointerDown = true;\n this._host._capturingControl[pointerId] = this;\n if (this._host.focusedControl === this) {\n // Move cursor\n clearTimeout(this._blinkTimeout);\n this._markAsDirty();\n return true;\n }\n if (!this._isEnabled) {\n return false;\n }\n this._host.focusedControl = this;\n\n return true;\n }\n public _onPointerMove(target: Control, coordinates: Vector2, pointerId: number, pi: PointerInfoBase): void {\n if (this._host.focusedControl === this && this._isPointerDown) {\n this._clickedCoordinate = coordinates.x;\n this._markAsDirty();\n this._updateValueFromCursorIndex(this._cursorOffset);\n }\n super._onPointerMove(target, coordinates, pointerId, pi);\n }\n\n public _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean): void {\n\n this._isPointerDown = false;\n delete this._host._capturingControl[pointerId];\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick);\n }\n\n protected _beforeRenderText(textWrapper: TextWrapper): TextWrapper {\n return textWrapper;\n }\n\n public dispose() {\n super.dispose();\n\n this.onBlurObservable.clear();\n this.onFocusObservable.clear();\n this.onTextChangedObservable.clear();\n this.onTextCopyObservable.clear();\n this.onTextCutObservable.clear();\n this.onTextPasteObservable.clear();\n this.onTextHighlightObservable.clear();\n this.onKeyboardEventProcessedObservable.clear();\n }\n}\n_TypeStore.RegisteredTypes[\"BABYLON.GUI.InputText\"] = InputText;"]}
1
+ {"version":3,"file":"inputText.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/inputText.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\nimport { Observable, Observer } from \"@babylonjs/core/Misc/observable\";\nimport { Vector2 } from \"@babylonjs/core/Maths/math.vector\";\nimport { ClipboardEventTypes, ClipboardInfo } from \"@babylonjs/core/Events/clipboardEvents\";\nimport { PointerInfo, PointerEventTypes, PointerInfoBase } from '@babylonjs/core/Events/pointerEvents';\n\nimport { Control } from \"./control\";\nimport { IFocusableControl } from \"./focusableControl\";\nimport { ValueAndUnit } from \"../valueAndUnit\";\nimport { VirtualKeyboard } from \"./virtualKeyboard\";\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\nimport { Measure } from '../measure';\nimport { TextWrapper } from './textWrapper';\nimport { serialize } from '@babylonjs/core/Misc/decorators';\nimport { IKeyboardEvent } from '@babylonjs/core/Events/deviceInputEvents';\nimport { ICanvasRenderingContext } from \"@babylonjs/core/Engines/ICanvas\";\n\n/**\n * Class used to create input text control\n */\nexport class InputText extends Control implements IFocusableControl {\n private _textWrapper: TextWrapper;\n private _placeholderText = \"\";\n private _background = \"#222222\";\n private _focusedBackground = \"#000000\";\n private _focusedColor = \"white\";\n private _placeholderColor = \"gray\";\n private _thickness = 1;\n private _margin = new ValueAndUnit(10, ValueAndUnit.UNITMODE_PIXEL);\n private _autoStretchWidth = true;\n private _maxWidth = new ValueAndUnit(1, ValueAndUnit.UNITMODE_PERCENTAGE, false);\n private _isFocused = false;\n private _blinkTimeout: number;\n private _blinkIsEven = false;\n private _cursorOffset = 0;\n private _scrollLeft: Nullable<number>;\n private _textWidth: number;\n private _clickedCoordinate: Nullable<number>;\n private _deadKey = false;\n private _addKey = true;\n private _currentKey = \"\";\n private _isTextHighlightOn = false;\n private _textHighlightColor = \"#d5e0ff\";\n private _highligherOpacity = 0.4;\n private _highlightedText = \"\";\n private _startHighlightIndex = 0;\n private _endHighlightIndex = 0;\n private _cursorIndex = -1;\n private _onFocusSelectAll = false;\n private _isPointerDown = false;\n private _onClipboardObserver: Nullable<Observer<ClipboardInfo>>;\n private _onPointerDblTapObserver: Nullable<Observer<PointerInfo>>;\n\n /** @hidden */\n public _connectedVirtualKeyboard: Nullable<VirtualKeyboard>;\n\n /** Gets or sets a string representing the message displayed on mobile when the control gets the focus */\n @serialize()\n public promptMessage = \"Please enter text:\";\n /** Force disable prompt on mobile device */\n @serialize()\n public disableMobilePrompt = false;\n\n /** Observable raised when the text changes */\n public onTextChangedObservable = new Observable<InputText>();\n /** Observable raised just before an entered character is to be added */\n public onBeforeKeyAddObservable = new Observable<InputText>();\n /** Observable raised when the control gets the focus */\n public onFocusObservable = new Observable<InputText>();\n /** Observable raised when the control loses the focus */\n public onBlurObservable = new Observable<InputText>();\n /**Observable raised when the text is highlighted */\n public onTextHighlightObservable = new Observable<InputText>();\n /**Observable raised when copy event is triggered */\n public onTextCopyObservable = new Observable<InputText>();\n /** Observable raised when cut event is triggered */\n public onTextCutObservable = new Observable<InputText>();\n /** Observable raised when paste event is triggered */\n public onTextPasteObservable = new Observable<InputText>();\n /** Observable raised when a key event was processed */\n public onKeyboardEventProcessedObservable = new Observable<IKeyboardEvent>();\n\n /** Gets or sets the maximum width allowed by the control */\n @serialize()\n public get maxWidth(): string | number {\n return this._maxWidth.toString(this._host);\n }\n\n /** Gets the maximum width allowed by the control in pixels */\n public get maxWidthInPixels(): number {\n return this._maxWidth.getValueInPixel(this._host, this._cachedParentMeasure.width);\n }\n\n public set maxWidth(value: string | number) {\n if (this._maxWidth.toString(this._host) === value) {\n return;\n }\n\n if (this._maxWidth.fromString(value)) {\n this._markAsDirty();\n }\n }\n\n /** Gets or sets the text highlighter transparency; default: 0.4 */\n @serialize()\n public get highligherOpacity(): number {\n return this._highligherOpacity;\n }\n\n public set highligherOpacity(value: number) {\n if (this._highligherOpacity === value) {\n return;\n }\n this._highligherOpacity = value;\n this._markAsDirty();\n }\n /** Gets or sets a boolean indicating whether to select complete text by default on input focus */\n @serialize()\n public get onFocusSelectAll(): boolean {\n return this._onFocusSelectAll;\n }\n\n public set onFocusSelectAll(value: boolean) {\n if (this._onFocusSelectAll === value) {\n return;\n }\n\n this._onFocusSelectAll = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the text hightlight color */\n @serialize()\n public get textHighlightColor(): string {\n return this._textHighlightColor;\n }\n\n public set textHighlightColor(value: string) {\n if (this._textHighlightColor === value) {\n return;\n }\n this._textHighlightColor = value;\n this._markAsDirty();\n }\n\n /** Gets or sets control margin */\n @serialize()\n public get margin(): string {\n return this._margin.toString(this._host);\n }\n\n /** Gets control margin in pixels */\n public get marginInPixels(): number {\n return this._margin.getValueInPixel(this._host, this._cachedParentMeasure.width);\n }\n\n public set margin(value: string) {\n if (this._margin.toString(this._host) === value) {\n return;\n }\n\n if (this._margin.fromString(value)) {\n this._markAsDirty();\n }\n }\n\n /** Gets or sets a boolean indicating if the control can auto stretch its width to adapt to the text */\n @serialize()\n public get autoStretchWidth(): boolean {\n return this._autoStretchWidth;\n }\n\n public set autoStretchWidth(value: boolean) {\n if (this._autoStretchWidth === value) {\n return;\n }\n\n this._autoStretchWidth = value;\n this._markAsDirty();\n }\n\n /** Gets or sets border thickness */\n @serialize()\n public get thickness(): number {\n return this._thickness;\n }\n\n public set thickness(value: number) {\n if (this._thickness === value) {\n return;\n }\n\n this._thickness = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the background color when focused */\n @serialize()\n public get focusedBackground(): string {\n return this._focusedBackground;\n }\n\n public set focusedBackground(value: string) {\n if (this._focusedBackground === value) {\n return;\n }\n\n this._focusedBackground = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the background color when focused */\n @serialize()\n public get focusedColor(): string {\n return this._focusedColor;\n }\n\n public set focusedColor(value: string) {\n if (this._focusedColor === value) {\n return;\n }\n\n this._focusedColor = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the background color */\n @serialize()\n public get background(): string {\n return this._background;\n }\n\n public set background(value: string) {\n if (this._background === value) {\n return;\n }\n\n this._background = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the placeholder color */\n @serialize()\n public get placeholderColor(): string {\n return this._placeholderColor;\n }\n\n public set placeholderColor(value: string) {\n if (this._placeholderColor === value) {\n return;\n }\n\n this._placeholderColor = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the text displayed when the control is empty */\n @serialize()\n public get placeholderText(): string {\n return this._placeholderText;\n }\n\n public set placeholderText(value: string) {\n if (this._placeholderText === value) {\n return;\n }\n this._placeholderText = value;\n this._markAsDirty();\n }\n\n /** Gets or sets the dead key flag */\n @serialize()\n public get deadKey(): boolean {\n return this._deadKey;\n }\n\n public set deadKey(flag: boolean) {\n this._deadKey = flag;\n }\n\n /** Gets or sets the highlight text */\n public get highlightedText(): string {\n return this._highlightedText;\n }\n public set highlightedText(text: string) {\n if (this._highlightedText === text) {\n return;\n }\n this._highlightedText = text;\n this._markAsDirty();\n }\n\n /** Gets or sets if the current key should be added */\n public get addKey(): boolean {\n return this._addKey;\n }\n\n public set addKey(flag: boolean) {\n this._addKey = flag;\n }\n\n /** Gets or sets the value of the current key being entered */\n public get currentKey(): string {\n return this._currentKey;\n }\n\n public set currentKey(key: string) {\n this._currentKey = key;\n }\n\n /** Gets or sets the text displayed in the control */\n @serialize()\n public get text(): string {\n return this._textWrapper.text;\n }\n\n public set text(value: string) {\n let valueAsString = value.toString(); // Forcing convertion\n\n if (!this._textWrapper) {\n this._textWrapper = new TextWrapper();\n }\n\n if (this._textWrapper.text === valueAsString) {\n return;\n }\n this._textWrapper.text = valueAsString;\n this._textHasChanged();\n }\n\n private _textHasChanged(): void {\n this._markAsDirty();\n this.onTextChangedObservable.notifyObservers(this);\n }\n\n /** Gets or sets control width */\n @serialize()\n public get width(): string | number {\n return this._width.toString(this._host);\n }\n\n public set width(value: string | number) {\n if (this._width.toString(this._host) === value) {\n return;\n }\n\n if (this._width.fromString(value)) {\n this._markAsDirty();\n }\n\n this.autoStretchWidth = false;\n }\n\n /**\n * Creates a new InputText\n * @param name defines the control name\n * @param text defines the text of the control\n */\n constructor(public name?: string, text: string = \"\") {\n super(name);\n\n this.text = text;\n this.isPointerBlocker = true;\n }\n\n /** @hidden */\n public onBlur(): void {\n this._isFocused = false;\n this._scrollLeft = null;\n this._cursorOffset = 0;\n clearTimeout(this._blinkTimeout);\n this._markAsDirty();\n\n this.onBlurObservable.notifyObservers(this);\n\n this._host.unRegisterClipboardEvents();\n if (this._onClipboardObserver) {\n this._host.onClipboardObservable.remove(this._onClipboardObserver);\n }\n let scene = this._host.getScene();\n if (this._onPointerDblTapObserver && scene) {\n scene.onPointerObservable.remove(this._onPointerDblTapObserver);\n }\n }\n\n /** @hidden */\n public onFocus(): void {\n if (!this._isEnabled) {\n return;\n }\n this._scrollLeft = null;\n this._isFocused = true;\n this._blinkIsEven = false;\n this._cursorOffset = 0;\n this._markAsDirty();\n\n this.onFocusObservable.notifyObservers(this);\n\n if (navigator.userAgent.indexOf(\"Mobile\") !== -1 && !this.disableMobilePrompt) {\n let value = prompt(this.promptMessage);\n\n if (value !== null) {\n this.text = value;\n }\n this._host.focusedControl = null;\n return;\n }\n\n this._host.registerClipboardEvents();\n\n this._onClipboardObserver = this._host.onClipboardObservable.add((clipboardInfo) => {\n // process clipboard event, can be configured.\n switch (clipboardInfo.type) {\n case ClipboardEventTypes.COPY:\n this._onCopyText(clipboardInfo.event);\n this.onTextCopyObservable.notifyObservers(this);\n break;\n case ClipboardEventTypes.CUT:\n this._onCutText(clipboardInfo.event);\n this.onTextCutObservable.notifyObservers(this);\n break;\n case ClipboardEventTypes.PASTE:\n this._onPasteText(clipboardInfo.event);\n this.onTextPasteObservable.notifyObservers(this);\n break;\n default: return;\n }\n });\n\n let scene = this._host.getScene();\n if (scene) {\n //register the pointer double tap event\n this._onPointerDblTapObserver = scene.onPointerObservable.add((pointerInfo) => {\n if (!this._isFocused) {\n return;\n }\n if (pointerInfo.type === PointerEventTypes.POINTERDOUBLETAP) {\n this._processDblClick(pointerInfo);\n }\n });\n }\n\n if (this._onFocusSelectAll) {\n this._selectAllText();\n }\n\n }\n\n /**\n * Function to focus an inputText programmatically\n */\n public focus() {\n this._host.moveFocusToControl(this);\n }\n\n /**\n * Function to unfocus an inputText programmatically\n */\n public blur() {\n this._host.focusedControl = null;\n }\n\n protected _getTypeName(): string {\n return \"InputText\";\n }\n\n /**\n * Function called to get the list of controls that should not steal the focus from this control\n * @returns an array of controls\n */\n public keepsFocusWith(): Nullable<Control[]> {\n if (!this._connectedVirtualKeyboard) {\n return null;\n }\n return [this._connectedVirtualKeyboard];\n }\n\n /** @hidden */\n public processKey(keyCode: number, key?: string, evt?: IKeyboardEvent) {\n if (this.isReadOnly) {\n return;\n }\n\n //return if clipboard event keys (i.e -ctr/cmd + c,v,x)\n if (evt && (evt.ctrlKey || evt.metaKey) && (keyCode === 67 || keyCode === 86 || keyCode === 88)) {\n return;\n }\n\n //select all\n if (evt && (evt.ctrlKey || evt.metaKey) && keyCode === 65) {\n this._selectAllText();\n evt.preventDefault();\n return;\n }\n // Specific cases\n switch (keyCode) {\n case 32: //SPACE\n key = \" \"; //ie11 key for space is \"Spacebar\"\n break;\n case 191: //SLASH\n if (evt) {\n evt.preventDefault();\n }\n break;\n case 8: // BACKSPACE\n if (this._textWrapper.text && this._textWrapper.length > 0) {\n //delete the highlighted text\n if (this._isTextHighlightOn) {\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex);\n this._textHasChanged();\n this._isTextHighlightOn = false;\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n this._blinkIsEven = false;\n if (evt) {\n evt.preventDefault();\n }\n return;\n }\n //delete single character\n if (this._cursorOffset === 0) {\n this.text = this._textWrapper.substr(0, this._textWrapper.length - 1);\n } else {\n let deletePosition = this._textWrapper.length - this._cursorOffset;\n if (deletePosition > 0) {\n this._textWrapper.removePart(deletePosition - 1, deletePosition);\n this._textHasChanged();\n }\n }\n }\n if (evt) {\n evt.preventDefault();\n }\n return;\n case 46: // DELETE\n if (this._isTextHighlightOn) {\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex);\n this._textHasChanged();\n this._isTextHighlightOn = false;\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n if (evt) {\n evt.preventDefault();\n }\n return;\n }\n if (this._textWrapper.text && this._textWrapper.length > 0 && this._cursorOffset > 0) {\n let deletePosition = this._textWrapper.length - this._cursorOffset;\n this._textWrapper.removePart(deletePosition, deletePosition + 1);\n this._textHasChanged();\n this._cursorOffset--;\n }\n if (evt) {\n evt.preventDefault();\n }\n return;\n case 13: // RETURN\n this._host.focusedControl = null;\n this._isTextHighlightOn = false;\n return;\n case 35: // END\n this._cursorOffset = 0;\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._markAsDirty();\n return;\n case 36: // HOME\n this._cursorOffset = this._textWrapper.length;\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._markAsDirty();\n return;\n case 37: // LEFT\n this._cursorOffset++;\n if (this._cursorOffset > this._textWrapper.length) {\n this._cursorOffset = this._textWrapper.length;\n }\n\n if (evt && evt.shiftKey) {\n // update the cursor\n this._blinkIsEven = false;\n // shift + ctrl/cmd + <-\n if (evt.ctrlKey || evt.metaKey) {\n if (!this._isTextHighlightOn) {\n if (this._textWrapper.length === this._cursorOffset) {\n return;\n }\n else {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset + 1;\n }\n }\n this._startHighlightIndex = 0;\n this._cursorIndex = this._textWrapper.length - this._endHighlightIndex;\n this._cursorOffset = this._textWrapper.length;\n this._isTextHighlightOn = true;\n this._markAsDirty();\n return;\n }\n //store the starting point\n if (!this._isTextHighlightOn) {\n this._isTextHighlightOn = true;\n this._cursorIndex = (this._cursorOffset >= this._textWrapper.length) ? this._textWrapper.length : this._cursorOffset - 1;\n }\n //if text is already highlighted\n else if (this._cursorIndex === -1) {\n this._cursorIndex = this._textWrapper.length - this._endHighlightIndex;\n this._cursorOffset = (this._startHighlightIndex === 0) ? this._textWrapper.length : this._textWrapper.length - this._startHighlightIndex + 1;\n }\n //set the highlight indexes\n if (this._cursorIndex < this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorIndex;\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n }\n else if (this._cursorIndex > this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._startHighlightIndex = this._textWrapper.length - this._cursorIndex;\n }\n else {\n this._isTextHighlightOn = false;\n }\n this._markAsDirty();\n return;\n }\n if (this._isTextHighlightOn) {\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n this._isTextHighlightOn = false;\n }\n if (evt && (evt.ctrlKey || evt.metaKey)) {\n this._cursorOffset = this._textWrapper.length;\n evt.preventDefault();\n }\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._cursorIndex = -1;\n this._markAsDirty();\n return;\n case 39: // RIGHT\n this._cursorOffset--;\n if (this._cursorOffset < 0) {\n this._cursorOffset = 0;\n }\n if (evt && evt.shiftKey) {\n //update the cursor\n this._blinkIsEven = false;\n //shift + ctrl/cmd + ->\n if (evt.ctrlKey || evt.metaKey) {\n if (!this._isTextHighlightOn) {\n if (this._cursorOffset === 0) {\n return;\n }\n else {\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset - 1;\n }\n }\n this._endHighlightIndex = this._textWrapper.length;\n this._isTextHighlightOn = true;\n this._cursorIndex = this._textWrapper.length - this._startHighlightIndex;\n this._cursorOffset = 0;\n this._markAsDirty();\n return;\n }\n\n if (!this._isTextHighlightOn) {\n this._isTextHighlightOn = true;\n this._cursorIndex = (this._cursorOffset <= 0) ? 0 : this._cursorOffset + 1;\n }\n //if text is already highlighted\n else if (this._cursorIndex === -1) {\n this._cursorIndex = this._textWrapper.length - this._startHighlightIndex;\n this._cursorOffset = (this._textWrapper.length === this._endHighlightIndex) ? 0 : this._textWrapper.length - this._endHighlightIndex - 1;\n }\n //set the highlight indexes\n if (this._cursorIndex < this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorIndex;\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n }\n else if (this._cursorIndex > this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._startHighlightIndex = this._textWrapper.length - this._cursorIndex;\n }\n else {\n this._isTextHighlightOn = false;\n }\n this._markAsDirty();\n return;\n }\n if (this._isTextHighlightOn) {\n this._cursorOffset = this._textWrapper.length - this._endHighlightIndex;\n this._isTextHighlightOn = false;\n }\n //ctr + ->\n if (evt && (evt.ctrlKey || evt.metaKey)) {\n this._cursorOffset = 0;\n evt.preventDefault();\n }\n this._blinkIsEven = false;\n this._isTextHighlightOn = false;\n this._cursorIndex = -1;\n this._markAsDirty();\n return;\n case 222: // Dead\n if (evt) {\n //add support for single and double quotes\n if (evt.code == \"Quote\") {\n if (evt.shiftKey) {\n keyCode = 34;\n key = '\"';\n } else {\n keyCode = 39;\n key = \"'\";\n }\n } else {\n evt.preventDefault();\n this._cursorIndex = -1;\n this.deadKey = true;\n }\n } else {\n this._cursorIndex = -1;\n this.deadKey = true;\n }\n break;\n }\n // Printable characters\n if (key &&\n ((keyCode === -1) || // Direct access\n (keyCode === 32) || // Space\n (keyCode === 34) || // \" add support for single and double quotes\n (keyCode === 39) || // '\n (keyCode > 47 && keyCode < 64) || // Numbers\n (keyCode > 64 && keyCode < 91) || // Letters\n (keyCode > 159 && keyCode < 193) || // Special characters\n (keyCode > 218 && keyCode < 223) || // Special characters\n (keyCode > 95 && keyCode < 112))) { // Numpad\n this._currentKey = key;\n this.onBeforeKeyAddObservable.notifyObservers(this);\n key = this._currentKey;\n if (this._addKey) {\n if (this._isTextHighlightOn) {\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex, key);\n this._textHasChanged();\n this._cursorOffset = this._textWrapper.length - (this._startHighlightIndex + 1);\n this._isTextHighlightOn = false;\n this._blinkIsEven = false;\n this._markAsDirty();\n }\n else if (this._cursorOffset === 0) {\n this.text += key;\n } else {\n let insertPosition = this._textWrapper.length - this._cursorOffset;\n this._textWrapper.removePart(insertPosition, insertPosition, key);\n this._textHasChanged();\n }\n }\n }\n }\n\n /** @hidden */\n private _updateValueFromCursorIndex(offset: number) {\n //update the cursor\n this._blinkIsEven = false;\n\n if (this._cursorIndex === -1) {\n this._cursorIndex = offset;\n } else {\n if (this._cursorIndex < this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorIndex;\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n }\n else if (this._cursorIndex > this._cursorOffset) {\n this._endHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._startHighlightIndex = this._textWrapper.length - this._cursorIndex;\n }\n else {\n this._isTextHighlightOn = false;\n this._markAsDirty();\n return;\n }\n }\n this._isTextHighlightOn = true;\n this._markAsDirty();\n }\n /** @hidden */\n private _processDblClick(evt: PointerInfo) {\n //pre-find the start and end index of the word under cursor, speeds up the rendering\n this._startHighlightIndex = this._textWrapper.length - this._cursorOffset;\n this._endHighlightIndex = this._startHighlightIndex;\n let moveLeft, moveRight;\n do {\n moveRight = this._endHighlightIndex < this._textWrapper.length && this._textWrapper.isWord(this._endHighlightIndex) ? ++this._endHighlightIndex : 0;\n moveLeft = this._startHighlightIndex > 0 && this._textWrapper.isWord(this._startHighlightIndex - 1) ? --this._startHighlightIndex : 0;\n } while (moveLeft || moveRight);\n\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n this.onTextHighlightObservable.notifyObservers(this);\n\n this._isTextHighlightOn = true;\n this._clickedCoordinate = null;\n this._blinkIsEven = true;\n this._cursorIndex = -1;\n this._markAsDirty();\n }\n /** @hidden */\n private _selectAllText() {\n this._blinkIsEven = true;\n this._isTextHighlightOn = true;\n\n this._startHighlightIndex = 0;\n this._endHighlightIndex = this._textWrapper.length;\n this._cursorOffset = this._textWrapper.length;\n this._cursorIndex = -1;\n this._markAsDirty();\n }\n\n /**\n * Handles the keyboard event\n * @param evt Defines the KeyboardEvent\n */\n public processKeyboard(evt: IKeyboardEvent): void {\n // process pressed key\n this.processKey(evt.keyCode, evt.key, evt);\n\n this.onKeyboardEventProcessedObservable.notifyObservers(evt);\n }\n\n /** @hidden */\n private _onCopyText(ev: ClipboardEvent): void {\n this._isTextHighlightOn = false;\n //when write permission to clipbaord data is denied\n try {\n ev.clipboardData && ev.clipboardData.setData(\"text/plain\", this._highlightedText);\n }\n catch { } //pass\n this._host.clipboardData = this._highlightedText;\n }\n /** @hidden */\n private _onCutText(ev: ClipboardEvent): void {\n if (!this._highlightedText) {\n return;\n }\n this._textWrapper.removePart(this._startHighlightIndex, this._endHighlightIndex);\n this._textHasChanged();\n this._isTextHighlightOn = false;\n this._cursorOffset = this._textWrapper.length - this._startHighlightIndex;\n //when write permission to clipbaord data is denied\n try {\n ev.clipboardData && ev.clipboardData.setData(\"text/plain\", this._highlightedText);\n }\n catch { } //pass\n\n this._host.clipboardData = this._highlightedText;\n this._highlightedText = \"\";\n }\n /** @hidden */\n private _onPasteText(ev: ClipboardEvent): void {\n let data: string = \"\";\n if (ev.clipboardData && ev.clipboardData.types.indexOf(\"text/plain\") !== -1) {\n data = ev.clipboardData.getData(\"text/plain\");\n }\n else {\n //get the cached data; returns blank string by default\n data = this._host.clipboardData;\n }\n let insertPosition = this._textWrapper.length - this._cursorOffset;\n this._textWrapper.removePart(insertPosition, insertPosition, data);\n this._textHasChanged();\n }\n\n public _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Nullable<Measure>): void {\n context.save();\n\n this._applyStates(context);\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\n context.shadowColor = this.shadowColor;\n context.shadowBlur = this.shadowBlur;\n context.shadowOffsetX = this.shadowOffsetX;\n context.shadowOffsetY = this.shadowOffsetY;\n }\n\n // Background\n if (this._isFocused) {\n if (this._focusedBackground) {\n context.fillStyle = this._isEnabled ? this._focusedBackground : this._disabledColor;\n\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\n }\n } else if (this._background) {\n context.fillStyle = this._isEnabled ? this._background : this._disabledColor;\n\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\n }\n\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\n context.shadowBlur = 0;\n context.shadowOffsetX = 0;\n context.shadowOffsetY = 0;\n }\n\n if (!this._fontOffset || this._wasDirty) {\n this._fontOffset = Control._GetFontOffset(context.font);\n }\n\n // Text\n let clipTextLeft = this._currentMeasure.left + this._margin.getValueInPixel(this._host, this._tempParentMeasure.width);\n if (this.color) {\n context.fillStyle = this.color;\n }\n\n let text = this._beforeRenderText(this._textWrapper);\n\n if (!this._isFocused && !this._textWrapper.text && this._placeholderText) {\n text = new TextWrapper();\n text.text = this._placeholderText;\n\n if (this._placeholderColor) {\n context.fillStyle = this._placeholderColor;\n }\n }\n\n this._textWidth = context.measureText(text.text).width;\n let marginWidth = this._margin.getValueInPixel(this._host, this._tempParentMeasure.width) * 2;\n if (this._autoStretchWidth) {\n this.width = Math.min(this._maxWidth.getValueInPixel(this._host, this._tempParentMeasure.width), this._textWidth + marginWidth) + \"px\";\n this._autoStretchWidth = true; // setting the width will have reset _autoStretchWidth to false!\n }\n\n let rootY = this._fontOffset.ascent + (this._currentMeasure.height - this._fontOffset.height) / 2;\n let availableWidth = this._width.getValueInPixel(this._host, this._tempParentMeasure.width) - marginWidth;\n\n context.save();\n context.beginPath();\n context.rect(clipTextLeft, this._currentMeasure.top + (this._currentMeasure.height - this._fontOffset.height) / 2, availableWidth + 2, this._currentMeasure.height);\n context.clip();\n\n if (this._isFocused && this._textWidth > availableWidth) {\n let textLeft = clipTextLeft - this._textWidth + availableWidth;\n if (!this._scrollLeft) {\n this._scrollLeft = textLeft;\n }\n } else {\n this._scrollLeft = clipTextLeft;\n }\n\n context.fillText(text.text, this._scrollLeft, this._currentMeasure.top + rootY);\n\n // Cursor\n if (this._isFocused) {\n\n // Need to move cursor\n if (this._clickedCoordinate) {\n var rightPosition = this._scrollLeft + this._textWidth;\n var absoluteCursorPosition = rightPosition - this._clickedCoordinate;\n var currentSize = 0;\n this._cursorOffset = 0;\n var previousDist = 0;\n do {\n if (this._cursorOffset) {\n previousDist = Math.abs(absoluteCursorPosition - currentSize);\n }\n this._cursorOffset++;\n currentSize = context.measureText(text.substr(text.length - this._cursorOffset, this._cursorOffset)).width;\n\n } while (currentSize < absoluteCursorPosition && (text.length >= this._cursorOffset));\n\n // Find closest move\n if (Math.abs(absoluteCursorPosition - currentSize) > previousDist) {\n this._cursorOffset--;\n }\n\n this._blinkIsEven = false;\n this._clickedCoordinate = null;\n }\n\n // Render cursor\n if (!this._blinkIsEven) {\n let cursorOffsetText = text.substr(text.length - this._cursorOffset);\n let cursorOffsetWidth = context.measureText(cursorOffsetText).width;\n let cursorLeft = this._scrollLeft + this._textWidth - cursorOffsetWidth;\n\n if (cursorLeft < clipTextLeft) {\n this._scrollLeft += (clipTextLeft - cursorLeft);\n cursorLeft = clipTextLeft;\n this._markAsDirty();\n } else if (cursorLeft > clipTextLeft + availableWidth) {\n this._scrollLeft += (clipTextLeft + availableWidth - cursorLeft);\n cursorLeft = clipTextLeft + availableWidth;\n this._markAsDirty();\n }\n if (!this._isTextHighlightOn) {\n context.fillRect(cursorLeft, this._currentMeasure.top + (this._currentMeasure.height - this._fontOffset.height) / 2, 2, this._fontOffset.height);\n }\n }\n\n clearTimeout(this._blinkTimeout);\n this._blinkTimeout = <any>setTimeout(() => {\n this._blinkIsEven = !this._blinkIsEven;\n this._markAsDirty();\n }, 500);\n\n //show the highlighted text\n if (this._isTextHighlightOn) {\n clearTimeout(this._blinkTimeout);\n let highlightCursorOffsetWidth = context.measureText(text.substring(this._startHighlightIndex)).width;\n let highlightCursorLeft = this._scrollLeft + this._textWidth - highlightCursorOffsetWidth;\n this._highlightedText = text.substring(this._startHighlightIndex, this._endHighlightIndex);\n let width = context.measureText(text.substring(this._startHighlightIndex, this._endHighlightIndex)).width;\n if (highlightCursorLeft < clipTextLeft) {\n width = width - (clipTextLeft - highlightCursorLeft);\n if (!width) {\n // when using left arrow on text.length > availableWidth;\n // assigns the width of the first letter after clipTextLeft\n width = context.measureText(text.charAt(text.length - this._cursorOffset)).width;\n }\n highlightCursorLeft = clipTextLeft;\n }\n //for transparancy\n context.globalAlpha = this._highligherOpacity;\n context.fillStyle = this._textHighlightColor;\n context.fillRect(highlightCursorLeft, this._currentMeasure.top + (this._currentMeasure.height - this._fontOffset.height) / 2, width, this._fontOffset.height);\n context.globalAlpha = 1.0;\n }\n }\n context.restore();\n\n // Border\n if (this._thickness) {\n if (this._isFocused) {\n if (this.focusedColor) {\n context.strokeStyle = this.focusedColor;\n }\n } else {\n if (this.color) {\n context.strokeStyle = this.color;\n }\n }\n\n context.lineWidth = this._thickness;\n\n context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2,\n this._currentMeasure.width - this._thickness, this._currentMeasure.height - this._thickness);\n }\n\n context.restore();\n }\n\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 this._clickedCoordinate = coordinates.x;\n this._isTextHighlightOn = false;\n this._highlightedText = \"\";\n this._cursorIndex = -1;\n this._isPointerDown = true;\n this._host._capturingControl[pointerId] = this;\n if (this._host.focusedControl === this) {\n // Move cursor\n clearTimeout(this._blinkTimeout);\n this._markAsDirty();\n return true;\n }\n if (!this._isEnabled) {\n return false;\n }\n this._host.focusedControl = this;\n\n return true;\n }\n public _onPointerMove(target: Control, coordinates: Vector2, pointerId: number, pi: PointerInfoBase): void {\n if (this._host.focusedControl === this && this._isPointerDown && !this.isReadOnly) {\n this._clickedCoordinate = coordinates.x;\n this._markAsDirty();\n this._updateValueFromCursorIndex(this._cursorOffset);\n }\n super._onPointerMove(target, coordinates, pointerId, pi);\n }\n\n public _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean): void {\n\n this._isPointerDown = false;\n delete this._host._capturingControl[pointerId];\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick);\n }\n\n protected _beforeRenderText(textWrapper: TextWrapper): TextWrapper {\n return textWrapper;\n }\n\n public dispose() {\n super.dispose();\n\n this.onBlurObservable.clear();\n this.onFocusObservable.clear();\n this.onTextChangedObservable.clear();\n this.onTextCopyObservable.clear();\n this.onTextCutObservable.clear();\n this.onTextPasteObservable.clear();\n this.onTextHighlightObservable.clear();\n this.onKeyboardEventProcessedObservable.clear();\n }\n}\nRegisterClass(\"BABYLON.GUI.InputText\", InputText);\n"]}
@@ -2,6 +2,7 @@ import { Vector3 } from "@babylonjs/core/Maths/math.vector";
2
2
  import { Scene } from "@babylonjs/core/scene";
3
3
  import { Control } from "./control";
4
4
  import { Measure } from "../measure";
5
+ import { ICanvasRenderingContext } from "@babylonjs/core/Engines/ICanvas";
5
6
  /** Class used to render 2D lines */
6
7
  export declare class Line extends Control {
7
8
  name?: string | undefined;
@@ -46,9 +47,9 @@ export declare class Line extends Control {
46
47
  */
47
48
  constructor(name?: string | undefined);
48
49
  protected _getTypeName(): string;
49
- _draw(context: CanvasRenderingContext2D): void;
50
+ _draw(context: ICanvasRenderingContext): void;
50
51
  _measure(): void;
51
- protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
52
+ protected _computeAlignment(parentMeasure: Measure, context: ICanvasRenderingContext): void;
52
53
  /**
53
54
  * Move one end of the line given 3D cartesian coordinates.
54
55
  * @param position Targeted world position
@@ -1,10 +1,10 @@
1
1
  import { __decorate, __extends } from "tslib";
2
- import { Vector3, Matrix } from "@babylonjs/core/Maths/math.vector";
3
- import { Tools } from "@babylonjs/core/Misc/tools";
4
- import { Control } from "./control";
5
- import { ValueAndUnit } from "../valueAndUnit";
6
- import { _TypeStore } from '@babylonjs/core/Misc/typeStore';
7
- import { serialize } from '@babylonjs/core/Misc/decorators';
2
+ import { Vector3, Matrix } from "@babylonjs/core/Maths/math.vector.js";
3
+ import { Tools } from "@babylonjs/core/Misc/tools.js";
4
+ import { Control } from "./control.js";
5
+ import { ValueAndUnit } from "../valueAndUnit.js";
6
+ import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
7
+ import { serialize } from '@babylonjs/core/Misc/decorators.js';
8
8
  /** Class used to render 2D lines */
9
9
  var Line = /** @class */ (function (_super) {
10
10
  __extends(Line, _super);
@@ -216,7 +216,7 @@ var Line = /** @class */ (function (_super) {
216
216
  Tools.Error("Cannot move a control to a vector3 if the control is not at root level");
217
217
  return;
218
218
  }
219
- var globalViewport = this._host._getGlobalViewport(scene);
219
+ var globalViewport = this._host._getGlobalViewport();
220
220
  var projectedPosition = Vector3.Project(position, Matrix.Identity(), scene.getTransformMatrix(), globalViewport);
221
221
  this._moveToProjectedPosition(projectedPosition, end);
222
222
  if (projectedPosition.z < 0 || projectedPosition.z > 1) {
@@ -268,5 +268,5 @@ var Line = /** @class */ (function (_super) {
268
268
  return Line;
269
269
  }(Control));
270
270
  export { Line };
271
- _TypeStore.RegisteredTypes["BABYLON.GUI.Line"] = Line;
271
+ RegisterClass("BABYLON.GUI.Line", Line);
272
272
  //# sourceMappingURL=line.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/line.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3, Matrix } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Tools } from \"@babylonjs/core/Misc/tools\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Control } from \"./control\";\r\nimport { ValueAndUnit } from \"../valueAndUnit\";\r\nimport { Measure } from \"../measure\";\r\nimport { _TypeStore } from '@babylonjs/core/Misc/typeStore';\r\nimport { serialize } from '@babylonjs/core/Misc/decorators';\r\n\r\n/** Class used to render 2D lines */\r\nexport class Line extends Control {\r\n private _lineWidth = 1;\r\n private _x1 = new ValueAndUnit(0);\r\n private _y1 = new ValueAndUnit(0);\r\n private _x2 = new ValueAndUnit(0);\r\n private _y2 = new ValueAndUnit(0);\r\n private _dash = new Array<number>();\r\n private _connectedControl: Control;\r\n private _connectedControlDirtyObserver: Nullable<Observer<Control>>;\r\n\r\n /** Gets or sets the dash pattern */\r\n @serialize()\r\n public get dash(): Array<number> {\r\n return this._dash;\r\n }\r\n\r\n public set dash(value: Array<number>) {\r\n if (this._dash === value) {\r\n return;\r\n }\r\n\r\n this._dash = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the control connected with the line end */\r\n public get connectedControl(): Control {\r\n return this._connectedControl;\r\n }\r\n\r\n public set connectedControl(value: Control) {\r\n if (this._connectedControl === value) {\r\n return;\r\n }\r\n\r\n if (this._connectedControlDirtyObserver && this._connectedControl) {\r\n this._connectedControl.onDirtyObservable.remove(this._connectedControlDirtyObserver);\r\n this._connectedControlDirtyObserver = null;\r\n }\r\n\r\n if (value) {\r\n this._connectedControlDirtyObserver = value.onDirtyObservable.add(() => this._markAsDirty());\r\n }\r\n\r\n this._connectedControl = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets start coordinates on X axis */\r\n @serialize()\r\n public get x1(): string | number {\r\n return this._x1.toString(this._host);\r\n }\r\n\r\n public set x1(value: string | number) {\r\n if (this._x1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets start coordinates on Y axis */\r\n @serialize()\r\n public get y1(): string | number {\r\n return this._y1.toString(this._host);\r\n }\r\n\r\n public set y1(value: string | number) {\r\n if (this._y1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on X axis */\r\n @serialize()\r\n public get x2(): string | number {\r\n return this._x2.toString(this._host);\r\n }\r\n\r\n public set x2(value: string | number) {\r\n if (this._x2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on Y axis */\r\n @serialize()\r\n public get y2(): string | number {\r\n return this._y2.toString(this._host);\r\n }\r\n\r\n public set y2(value: string | number) {\r\n if (this._y2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets line width */\r\n @serialize()\r\n public get lineWidth(): number {\r\n return this._lineWidth;\r\n }\r\n\r\n public set lineWidth(value: number) {\r\n if (this._lineWidth === value) {\r\n return;\r\n }\r\n\r\n this._lineWidth = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets horizontal alignment */\r\n public set horizontalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n /** Gets or sets vertical alignment */\r\n public set verticalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n private get _effectiveX2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerX : 0) + this._x2.getValue(this._host);\r\n }\r\n\r\n private get _effectiveY2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerY : 0) + this._y2.getValue(this._host);\r\n }\r\n\r\n /**\r\n * Creates a new Line\r\n * @param name defines the control name\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n\r\n this._automaticSize = true;\r\n\r\n this.isHitTestVisible = false;\r\n this._horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n this._verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Line\";\r\n }\r\n\r\n public _draw(context: CanvasRenderingContext2D): void {\r\n context.save();\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX;\r\n context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n\r\n this._applyStates(context);\r\n context.strokeStyle = this.color;\r\n context.lineWidth = this._lineWidth;\r\n context.setLineDash(this._dash);\r\n\r\n context.beginPath();\r\n context.moveTo(this._cachedParentMeasure.left + this._x1.getValue(this._host), this._cachedParentMeasure.top + this._y1.getValue(this._host));\r\n\r\n context.lineTo(this._cachedParentMeasure.left + this._effectiveX2, this._cachedParentMeasure.top + this._effectiveY2);\r\n context.stroke();\r\n\r\n context.restore();\r\n }\r\n\r\n public _measure(): void {\r\n // Width / Height\r\n this._currentMeasure.width = Math.abs(this._x1.getValue(this._host) - this._effectiveX2) + this._lineWidth;\r\n this._currentMeasure.height = Math.abs(this._y1.getValue(this._host) - this._effectiveY2) + this._lineWidth;\r\n }\r\n\r\n protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void {\r\n this._currentMeasure.left = parentMeasure.left + Math.min(this._x1.getValue(this._host), this._effectiveX2) - this._lineWidth / 2;\r\n this._currentMeasure.top = parentMeasure.top + Math.min(this._y1.getValue(this._host), this._effectiveY2) - this._lineWidth / 2;\r\n }\r\n\r\n /**\r\n * Move one end of the line given 3D cartesian coordinates.\r\n * @param position Targeted world position\r\n * @param scene Scene\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public moveToVector3(position: Vector3, scene: Scene, end: boolean = false): void {\r\n if (!this._host || this.parent !== this._host._rootContainer) {\r\n Tools.Error(\"Cannot move a control to a vector3 if the control is not at root level\");\r\n return;\r\n }\r\n\r\n var globalViewport = this._host._getGlobalViewport(scene);\r\n var projectedPosition = Vector3.Project(position, Matrix.Identity(), scene.getTransformMatrix(), globalViewport);\r\n\r\n this._moveToProjectedPosition(projectedPosition, end);\r\n\r\n if (projectedPosition.z < 0 || projectedPosition.z > 1) {\r\n this.notRenderable = true;\r\n return;\r\n }\r\n this.notRenderable = false;\r\n }\r\n\r\n /**\r\n * Move one end of the line to a position in screen absolute space.\r\n * @param projectedPosition Position in screen absolute space (X, Y)\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public _moveToProjectedPosition(projectedPosition: Vector3, end: boolean = false): void {\r\n let x: string = (projectedPosition.x + this._linkOffsetX.getValue(this._host)) + \"px\";\r\n let y: string = (projectedPosition.y + this._linkOffsetY.getValue(this._host)) + \"px\";\r\n\r\n if (end) {\r\n this.x2 = x;\r\n this.y2 = y;\r\n this._x2.ignoreAdaptiveScaling = true;\r\n this._y2.ignoreAdaptiveScaling = true;\r\n } else {\r\n this.x1 = x;\r\n this.y1 = y;\r\n this._x1.ignoreAdaptiveScaling = true;\r\n this._y1.ignoreAdaptiveScaling = true;\r\n }\r\n }\r\n}\r\n_TypeStore.RegisteredTypes[\"BABYLON.GUI.Line\"] = Line;\r\n"]}
1
+ {"version":3,"file":"line.js","sourceRoot":"","sources":["../../../../sourceES6/gui/src/2D/controls/line.ts"],"names":[],"mappings":"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","sourcesContent":["import { Nullable } from \"@babylonjs/core/types\";\r\nimport { Observer } from \"@babylonjs/core/Misc/observable\";\r\nimport { Vector3, Matrix } from \"@babylonjs/core/Maths/math.vector\";\r\nimport { Tools } from \"@babylonjs/core/Misc/tools\";\r\nimport { Scene } from \"@babylonjs/core/scene\";\r\n\r\nimport { Control } from \"./control\";\r\nimport { ValueAndUnit } from \"../valueAndUnit\";\r\nimport { Measure } from \"../measure\";\r\nimport { RegisterClass } from '@babylonjs/core/Misc/typeStore';\r\nimport { serialize } from '@babylonjs/core/Misc/decorators';\r\nimport { ICanvasRenderingContext } from \"@babylonjs/core/Engines/ICanvas\";\r\n\r\n/** Class used to render 2D lines */\r\nexport class Line extends Control {\r\n private _lineWidth = 1;\r\n private _x1 = new ValueAndUnit(0);\r\n private _y1 = new ValueAndUnit(0);\r\n private _x2 = new ValueAndUnit(0);\r\n private _y2 = new ValueAndUnit(0);\r\n private _dash = new Array<number>();\r\n private _connectedControl: Control;\r\n private _connectedControlDirtyObserver: Nullable<Observer<Control>>;\r\n\r\n /** Gets or sets the dash pattern */\r\n @serialize()\r\n public get dash(): Array<number> {\r\n return this._dash;\r\n }\r\n\r\n public set dash(value: Array<number>) {\r\n if (this._dash === value) {\r\n return;\r\n }\r\n\r\n this._dash = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the control connected with the line end */\r\n public get connectedControl(): Control {\r\n return this._connectedControl;\r\n }\r\n\r\n public set connectedControl(value: Control) {\r\n if (this._connectedControl === value) {\r\n return;\r\n }\r\n\r\n if (this._connectedControlDirtyObserver && this._connectedControl) {\r\n this._connectedControl.onDirtyObservable.remove(this._connectedControlDirtyObserver);\r\n this._connectedControlDirtyObserver = null;\r\n }\r\n\r\n if (value) {\r\n this._connectedControlDirtyObserver = value.onDirtyObservable.add(() => this._markAsDirty());\r\n }\r\n\r\n this._connectedControl = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets start coordinates on X axis */\r\n @serialize()\r\n public get x1(): string | number {\r\n return this._x1.toString(this._host);\r\n }\r\n\r\n public set x1(value: string | number) {\r\n if (this._x1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets start coordinates on Y axis */\r\n @serialize()\r\n public get y1(): string | number {\r\n return this._y1.toString(this._host);\r\n }\r\n\r\n public set y1(value: string | number) {\r\n if (this._y1.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y1.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on X axis */\r\n @serialize()\r\n public get x2(): string | number {\r\n return this._x2.toString(this._host);\r\n }\r\n\r\n public set x2(value: string | number) {\r\n if (this._x2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._x2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets end coordinates on Y axis */\r\n @serialize()\r\n public get y2(): string | number {\r\n return this._y2.toString(this._host);\r\n }\r\n\r\n public set y2(value: string | number) {\r\n if (this._y2.toString(this._host) === value) {\r\n return;\r\n }\r\n\r\n if (this._y2.fromString(value)) {\r\n this._markAsDirty();\r\n }\r\n }\r\n\r\n /** Gets or sets line width */\r\n @serialize()\r\n public get lineWidth(): number {\r\n return this._lineWidth;\r\n }\r\n\r\n public set lineWidth(value: number) {\r\n if (this._lineWidth === value) {\r\n return;\r\n }\r\n\r\n this._lineWidth = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets horizontal alignment */\r\n public set horizontalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n /** Gets or sets vertical alignment */\r\n public set verticalAlignment(value: number) {\r\n return;\r\n }\r\n\r\n private get _effectiveX2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerX : 0) + this._x2.getValue(this._host);\r\n }\r\n\r\n private get _effectiveY2(): number {\r\n return (this._connectedControl ? this._connectedControl.centerY : 0) + this._y2.getValue(this._host);\r\n }\r\n\r\n /**\r\n * Creates a new Line\r\n * @param name defines the control name\r\n */\r\n constructor(public name?: string) {\r\n super(name);\r\n\r\n this._automaticSize = true;\r\n\r\n this.isHitTestVisible = false;\r\n this._horizontalAlignment = Control.HORIZONTAL_ALIGNMENT_LEFT;\r\n this._verticalAlignment = Control.VERTICAL_ALIGNMENT_TOP;\r\n }\r\n\r\n protected _getTypeName(): string {\r\n return \"Line\";\r\n }\r\n\r\n public _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX;\r\n context.shadowOffsetY = this.shadowOffsetY;\r\n }\r\n\r\n this._applyStates(context);\r\n context.strokeStyle = this.color;\r\n context.lineWidth = this._lineWidth;\r\n context.setLineDash(this._dash);\r\n\r\n context.beginPath();\r\n context.moveTo(this._cachedParentMeasure.left + this._x1.getValue(this._host), this._cachedParentMeasure.top + this._y1.getValue(this._host));\r\n\r\n context.lineTo(this._cachedParentMeasure.left + this._effectiveX2, this._cachedParentMeasure.top + this._effectiveY2);\r\n context.stroke();\r\n\r\n context.restore();\r\n }\r\n\r\n public _measure(): void {\r\n // Width / Height\r\n this._currentMeasure.width = Math.abs(this._x1.getValue(this._host) - this._effectiveX2) + this._lineWidth;\r\n this._currentMeasure.height = Math.abs(this._y1.getValue(this._host) - this._effectiveY2) + this._lineWidth;\r\n }\r\n\r\n protected _computeAlignment(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n this._currentMeasure.left = parentMeasure.left + Math.min(this._x1.getValue(this._host), this._effectiveX2) - this._lineWidth / 2;\r\n this._currentMeasure.top = parentMeasure.top + Math.min(this._y1.getValue(this._host), this._effectiveY2) - this._lineWidth / 2;\r\n }\r\n\r\n /**\r\n * Move one end of the line given 3D cartesian coordinates.\r\n * @param position Targeted world position\r\n * @param scene Scene\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public moveToVector3(position: Vector3, scene: Scene, end: boolean = false): void {\r\n if (!this._host || this.parent !== this._host._rootContainer) {\r\n Tools.Error(\"Cannot move a control to a vector3 if the control is not at root level\");\r\n return;\r\n }\r\n\r\n var globalViewport = this._host._getGlobalViewport();\r\n var projectedPosition = Vector3.Project(position, Matrix.Identity(), scene.getTransformMatrix(), globalViewport);\r\n\r\n this._moveToProjectedPosition(projectedPosition, end);\r\n\r\n if (projectedPosition.z < 0 || projectedPosition.z > 1) {\r\n this.notRenderable = true;\r\n return;\r\n }\r\n this.notRenderable = false;\r\n }\r\n\r\n /**\r\n * Move one end of the line to a position in screen absolute space.\r\n * @param projectedPosition Position in screen absolute space (X, Y)\r\n * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.\r\n */\r\n public _moveToProjectedPosition(projectedPosition: Vector3, end: boolean = false): void {\r\n let x: string = (projectedPosition.x + this._linkOffsetX.getValue(this._host)) + \"px\";\r\n let y: string = (projectedPosition.y + this._linkOffsetY.getValue(this._host)) + \"px\";\r\n\r\n if (end) {\r\n this.x2 = x;\r\n this.y2 = y;\r\n this._x2.ignoreAdaptiveScaling = true;\r\n this._y2.ignoreAdaptiveScaling = true;\r\n } else {\r\n this.x1 = x;\r\n this.y1 = y;\r\n this._x1.ignoreAdaptiveScaling = true;\r\n this._y1.ignoreAdaptiveScaling = true;\r\n }\r\n }\r\n}\r\nRegisterClass(\"BABYLON.GUI.Line\", Line);\r\n"]}
@@ -3,6 +3,7 @@ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
3
3
  import { Control } from "./control";
4
4
  import { MultiLinePoint } from "../multiLinePoint";
5
5
  import { Measure } from "../measure";
6
+ import { ICanvasRenderingContext } from "@babylonjs/core/Engines/ICanvas";
6
7
  /**
7
8
  * Class used to create multi line control
8
9
  */
@@ -68,9 +69,9 @@ export declare class MultiLine extends Control {
68
69
  set horizontalAlignment(value: number);
69
70
  set verticalAlignment(value: number);
70
71
  protected _getTypeName(): string;
71
- _draw(context: CanvasRenderingContext2D, invalidatedRectangle?: Nullable<Measure>): void;
72
- protected _additionalProcessing(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
72
+ _draw(context: ICanvasRenderingContext, invalidatedRectangle?: Nullable<Measure>): void;
73
+ protected _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void;
73
74
  _measure(): void;
74
- protected _computeAlignment(parentMeasure: Measure, context: CanvasRenderingContext2D): void;
75
+ protected _computeAlignment(parentMeasure: Measure, context: ICanvasRenderingContext): void;
75
76
  dispose(): void;
76
77
  }
@@ -1,9 +1,9 @@
1
1
  import { __decorate, __extends } from "tslib";
2
- import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh";
3
- import { Control } from "./control";
4
- import { MultiLinePoint } from "../multiLinePoint";
5
- import { _TypeStore } from '@babylonjs/core/Misc/typeStore';
6
- import { serialize } from '@babylonjs/core/Misc/decorators';
2
+ import { AbstractMesh } from "@babylonjs/core/Meshes/abstractMesh.js";
3
+ import { Control } from "./control.js";
4
+ import { MultiLinePoint } from "../multiLinePoint.js";
5
+ import { RegisterClass } from '@babylonjs/core/Misc/typeStore.js';
6
+ import { serialize } from '@babylonjs/core/Misc/decorators.js';
7
7
  /**
8
8
  * Class used to create multi line control
9
9
  */
@@ -259,5 +259,5 @@ var MultiLine = /** @class */ (function (_super) {
259
259
  return MultiLine;
260
260
  }(Control));
261
261
  export { MultiLine };
262
- _TypeStore.RegisteredTypes["BABYLON.GUI.MultiLine"] = MultiLine;
262
+ RegisterClass("BABYLON.GUI.MultiLine", MultiLine);
263
263
  //# sourceMappingURL=multiLine.js.map