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

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 (273) hide show
  1. package/2D/adtInstrumentation.js +1 -1
  2. package/2D/advancedDynamicTexture.d.ts +165 -125
  3. package/2D/advancedDynamicTexture.js +347 -183
  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 +112 -44
  18. package/2D/controls/control.js +291 -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 +366 -0
  135. package/3D/controls/holographicSlate.js.map +1 -0
  136. package/3D/controls/index.d.ts +6 -0
  137. package/3D/controls/index.js +21 -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 +44 -0
  142. package/3D/controls/nearMenu.js +113 -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 +30 -21
  152. package/3D/controls/touchButton3D.js +109 -223
  153. package/3D/controls/touchButton3D.js.map +1 -1
  154. package/3D/controls/touchHolographicButton.d.ts +23 -2
  155. package/3D/controls/touchHolographicButton.js +162 -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/volumeBasedPanel.d.ts +1 -1
  164. package/3D/controls/volumeBasedPanel.js +5 -5
  165. package/3D/controls/volumeBasedPanel.js.map +1 -1
  166. package/3D/gizmos/gizmoHandle.d.ts +108 -0
  167. package/3D/gizmos/gizmoHandle.js +210 -0
  168. package/3D/gizmos/gizmoHandle.js.map +1 -0
  169. package/3D/gizmos/index.d.ts +2 -0
  170. package/3D/gizmos/index.js +3 -0
  171. package/3D/gizmos/index.js.map +1 -0
  172. package/3D/gizmos/slateGizmo.d.ts +59 -0
  173. package/3D/gizmos/slateGizmo.js +364 -0
  174. package/3D/gizmos/slateGizmo.js.map +1 -0
  175. package/3D/gui3DManager.d.ts +15 -2
  176. package/3D/gui3DManager.js +62 -41
  177. package/3D/gui3DManager.js.map +1 -1
  178. package/3D/index.d.ts +3 -2
  179. package/3D/index.js +5 -4
  180. package/3D/index.js.map +1 -1
  181. package/3D/materials/fluent/fluentMaterial.d.ts +90 -0
  182. package/3D/materials/fluent/fluentMaterial.js +282 -0
  183. package/3D/materials/fluent/fluentMaterial.js.map +1 -0
  184. package/3D/materials/fluent/index.d.ts +1 -0
  185. package/3D/materials/fluent/index.js +2 -0
  186. package/3D/materials/fluent/index.js.map +1 -0
  187. package/3D/materials/{shaders → fluent/shaders}/fluent.fragment.d.ts +0 -0
  188. package/3D/materials/fluent/shaders/fluent.fragment.js +7 -0
  189. package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
  190. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.d.ts +0 -0
  191. package/3D/materials/{shaders → fluent/shaders}/fluent.vertex.js +2 -2
  192. package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
  193. package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -0
  194. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +435 -0
  195. package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
  196. package/3D/materials/fluentBackplate/index.d.ts +1 -0
  197. package/3D/materials/fluentBackplate/index.js +2 -0
  198. package/3D/materials/fluentBackplate/index.js.map +1 -0
  199. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
  200. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +7 -0
  201. package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
  202. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
  203. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +7 -0
  204. package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
  205. package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -0
  206. package/3D/materials/fluentButton/fluentButtonMaterial.js +538 -0
  207. package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
  208. package/3D/materials/fluentButton/index.d.ts +1 -0
  209. package/3D/materials/fluentButton/index.js +2 -0
  210. package/3D/materials/fluentButton/index.js.map +1 -0
  211. package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
  212. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +7 -0
  213. package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
  214. package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
  215. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +7 -0
  216. package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
  217. package/3D/materials/fluentMaterial.d.ts +2 -88
  218. package/3D/materials/fluentMaterial.js +2 -277
  219. package/3D/materials/fluentMaterial.js.map +1 -1
  220. package/3D/materials/handle/handleMaterial.d.ts +68 -0
  221. package/3D/materials/handle/handleMaterial.js +127 -0
  222. package/3D/materials/handle/handleMaterial.js.map +1 -0
  223. package/3D/materials/handle/index.d.ts +1 -0
  224. package/3D/materials/handle/index.js +2 -0
  225. package/3D/materials/handle/index.js.map +1 -0
  226. package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
  227. package/3D/materials/handle/shaders/handle.fragment.js +7 -0
  228. package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
  229. package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
  230. package/3D/materials/handle/shaders/handle.vertex.js +7 -0
  231. package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
  232. package/3D/materials/index.d.ts +5 -1
  233. package/3D/materials/index.js +5 -1
  234. package/3D/materials/index.js.map +1 -1
  235. package/3D/materials/mrdl/index.d.ts +3 -0
  236. package/3D/materials/mrdl/index.js +4 -0
  237. package/3D/materials/mrdl/index.js.map +1 -0
  238. package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -0
  239. package/3D/materials/mrdl/mrdlBackplateMaterial.js +410 -0
  240. package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
  241. package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -0
  242. package/3D/materials/mrdl/mrdlSliderBarMaterial.js +787 -0
  243. package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
  244. package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -0
  245. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +787 -0
  246. package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
  247. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
  248. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +7 -0
  249. package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
  250. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
  251. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +7 -0
  252. package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
  253. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
  254. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +7 -0
  255. package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
  256. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
  257. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +7 -0
  258. package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
  259. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
  260. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +7 -0
  261. package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
  262. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
  263. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +7 -0
  264. package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
  265. package/3D/vector3WithInfo.js +1 -1
  266. package/index.d.ts +2 -2
  267. package/index.js +2 -2
  268. package/index.js.map +1 -1
  269. package/legacy/legacy.js +2 -2
  270. package/package.json +114 -9
  271. package/3D/materials/shaders/fluent.fragment.js +0 -7
  272. package/3D/materials/shaders/fluent.fragment.js.map +0 -1
  273. 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":";AACA,OAAO,EAAE,UAAU,EAAY,MAAM,iCAAiC,CAAC;AAEvE,OAAO,EAAE,mBAAmB,EAAiB,MAAM,wCAAwC,CAAC;AAC5F,OAAO,EAAe,iBAAiB,EAAmB,MAAM,sCAAsC,CAAC;AAEvG,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAI5D;;GAEG;AACH;IAA+B,6BAAO;IA6UlC;;;;OAIG;IACH,mBAAmB,IAAa,EAAE,IAAiB;QAAjB,qBAAA,EAAA,SAAiB;QAAnD,YACI,kBAAM,IAAI,CAAC,SAId;QALkB,UAAI,GAAJ,IAAI,CAAS;QAhVxB,sBAAgB,GAAG,EAAE,CAAC;QACtB,iBAAW,GAAG,SAAS,CAAC;QACxB,wBAAkB,GAAG,SAAS,CAAC;QAC/B,mBAAa,GAAG,OAAO,CAAC;QACxB,uBAAiB,GAAG,MAAM,CAAC;QAC3B,gBAAU,GAAG,CAAC,CAAC;QACf,aAAO,GAAG,IAAI,YAAY,CAAC,EAAE,EAAE,YAAY,CAAC,cAAc,CAAC,CAAC;QAC5D,uBAAiB,GAAG,IAAI,CAAC;QACzB,eAAS,GAAG,IAAI,YAAY,CAAC,CAAC,EAAE,YAAY,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;QACzE,gBAAU,GAAG,KAAK,CAAC;QAEnB,kBAAY,GAAG,KAAK,CAAC;QACrB,mBAAa,GAAG,CAAC,CAAC;QAIlB,cAAQ,GAAG,KAAK,CAAC;QACjB,aAAO,GAAG,IAAI,CAAC;QACf,iBAAW,GAAG,EAAE,CAAC;QACjB,wBAAkB,GAAG,KAAK,CAAC;QAC3B,yBAAmB,GAAG,SAAS,CAAC;QAChC,wBAAkB,GAAG,GAAG,CAAC;QACzB,sBAAgB,GAAG,EAAE,CAAC;QACtB,0BAAoB,GAAG,CAAC,CAAC;QACzB,wBAAkB,GAAG,CAAC,CAAC;QACvB,kBAAY,GAAG,CAAC,CAAC,CAAC;QAClB,uBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAc,GAAG,KAAK,CAAC;QAO/B,yGAAyG;QAElG,mBAAa,GAAG,oBAAoB,CAAC;QAC5C,4CAA4C;QAErC,yBAAmB,GAAG,KAAK,CAAC;QAEnC,8CAA8C;QACvC,6BAAuB,GAAG,IAAI,UAAU,EAAa,CAAC;QAC7D,wEAAwE;QACjE,8BAAwB,GAAG,IAAI,UAAU,EAAa,CAAC;QAC9D,wDAAwD;QACjD,uBAAiB,GAAG,IAAI,UAAU,EAAa,CAAC;QACvD,yDAAyD;QAClD,sBAAgB,GAAG,IAAI,UAAU,EAAa,CAAC;QACtD,oDAAoD;QAC7C,+BAAyB,GAAG,IAAI,UAAU,EAAa,CAAC;QAC/D,oDAAoD;QAC7C,0BAAoB,GAAG,IAAI,UAAU,EAAa,CAAC;QAC1D,oDAAoD;QAC7C,yBAAmB,GAAG,IAAI,UAAU,EAAa,CAAC;QACzD,sDAAsD;QAC/C,2BAAqB,GAAG,IAAI,UAAU,EAAa,CAAC;QAC3D,uDAAuD;QAChD,wCAAkC,GAAG,IAAI,UAAU,EAAkB,CAAC;QAyRzE,KAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,KAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;;IACjC,CAAC;IAvRD,sBAAW,+BAAQ;QAFnB,4DAA4D;aAE5D;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,CAAC;aAOD,UAAoB,KAAsB;YACtC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;gBAC/C,OAAO;aACV;YAED,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAClC,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;QACL,CAAC;;;OAfA;IAGD,sBAAW,uCAAgB;QAD3B,8DAA8D;aAC9D;YACI,OAAO,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACvF,CAAC;;;OAAA;IAcD,sBAAW,wCAAiB;QAF5B,mEAAmE;aAEnE;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;aAED,UAA6B,KAAa;YACtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBACnC,OAAO;aACV;YACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OARA;IAWD,sBAAW,uCAAgB;QAF3B,kGAAkG;aAElG;YACI,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;aAED,UAA4B,KAAc;YACtC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;gBAClC,OAAO;aACV;YAED,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,yCAAkB;QAF7B,6CAA6C;aAE7C;YACI,OAAO,IAAI,CAAC,mBAAmB,CAAC;QACpC,CAAC;aAED,UAA8B,KAAa;YACvC,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAAE;gBACpC,OAAO;aACV;YACD,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OARA;IAYD,sBAAW,6BAAM;QAFjB,kCAAkC;aAElC;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7C,CAAC;aAOD,UAAkB,KAAa;YAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;gBAC7C,OAAO;aACV;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;QACL,CAAC;;;OAfA;IAGD,sBAAW,qCAAc;QADzB,oCAAoC;aACpC;YACI,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACrF,CAAC;;;OAAA;IAcD,sBAAW,uCAAgB;QAF3B,uGAAuG;aAEvG;YACI,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;aAED,UAA4B,KAAc;YACtC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;gBAClC,OAAO;aACV;YAED,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,gCAAS;QAFpB,oCAAoC;aAEpC;YACI,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;aAED,UAAqB,KAAa;YAC9B,IAAI,IAAI,CAAC,UAAU,KAAK,KAAK,EAAE;gBAC3B,OAAO;aACV;YAED,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,wCAAiB;QAF5B,qDAAqD;aAErD;YACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;QACnC,CAAC;aAED,UAA6B,KAAa;YACtC,IAAI,IAAI,CAAC,kBAAkB,KAAK,KAAK,EAAE;gBACnC,OAAO;aACV;YAED,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,mCAAY;QAFvB,qDAAqD;aAErD;YACI,OAAO,IAAI,CAAC,aAAa,CAAC;QAC9B,CAAC;aAED,UAAwB,KAAa;YACjC,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK,EAAE;gBAC9B,OAAO;aACV;YAED,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,iCAAU;QAFrB,wCAAwC;aAExC;YACI,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;aAED,UAAsB,KAAa;YAC/B,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;gBAC5B,OAAO;aACV;YAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,uCAAgB;QAF3B,yCAAyC;aAEzC;YACI,OAAO,IAAI,CAAC,iBAAiB,CAAC;QAClC,CAAC;aAED,UAA4B,KAAa;YACrC,IAAI,IAAI,CAAC,iBAAiB,KAAK,KAAK,EAAE;gBAClC,OAAO;aACV;YAED,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OATA;IAaD,sBAAW,sCAAe;QAF1B,gEAAgE;aAEhE;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;aAED,UAA2B,KAAa;YACpC,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBACjC,OAAO;aACV;YACD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OARA;IAYD,sBAAW,8BAAO;QAFlB,qCAAqC;aAErC;YACI,OAAO,IAAI,CAAC,QAAQ,CAAC;QACzB,CAAC;aAED,UAAmB,IAAa;YAC5B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACzB,CAAC;;;OAJA;IAOD,sBAAW,sCAAe;QAD1B,sCAAsC;aACtC;YACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;QACjC,CAAC;aACD,UAA2B,IAAY;YACnC,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,EAAE;gBAChC,OAAO;aACV;YACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,CAAC;;;OAPA;IAUD,sBAAW,6BAAM;QADjB,sDAAsD;aACtD;YACI,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;aAED,UAAkB,IAAa;YAC3B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;;;OAJA;IAOD,sBAAW,iCAAU;QADrB,8DAA8D;aAC9D;YACI,OAAO,IAAI,CAAC,WAAW,CAAC;QAC5B,CAAC;aAED,UAAsB,GAAW;YAC7B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QAC3B,CAAC;;;OAJA;IAQD,sBAAW,2BAAI;QAFf,qDAAqD;aAErD;YACI,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAClC,CAAC;aAED,UAAgB,KAAa;YACzB,IAAI,aAAa,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,qBAAqB;YAE3D,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACpB,IAAI,CAAC,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;aACzC;YAED,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,KAAK,aAAa,EAAE;gBAC1C,OAAO;aACV;YACD,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC;YACvC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;;;OAdA;IAgBO,mCAAe,GAAvB;QACI,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAID,sBAAW,4BAAK;QAFhB,iCAAiC;aAEjC;YACI,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;aAED,UAAiB,KAAsB;YACnC,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,KAAK,EAAE;gBAC5C,OAAO;aACV;YAED,IAAI,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;aACvB;YAED,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAClC,CAAC;;;OAZA;IA0BD,cAAc;IACP,0BAAM,GAAb;QACI,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE5C,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;SACtE;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,wBAAwB,IAAI,KAAK,EAAE;YACxC,KAAK,CAAC,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;SACnE;IACL,CAAC;IAED,cAAc;IACP,2BAAO,GAAd;QAAA,iBA4DC;QA3DG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO;SACV;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,IAAI,CAAC,iBAAiB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAE7C,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC3E,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAEvC,IAAI,KAAK,KAAK,IAAI,EAAE;gBAChB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;aACrB;YACD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;YACjC,OAAO;SACV;QAED,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;QAErC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,UAAC,aAAa;YAC3E,8CAA8C;YAC9C,QAAQ,aAAa,CAAC,IAAI,EAAE;gBACxB,KAAK,mBAAmB,CAAC,IAAI;oBACzB,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACtC,KAAI,CAAC,oBAAoB,CAAC,eAAe,CAAC,KAAI,CAAC,CAAC;oBAChD,MAAM;gBACV,KAAK,mBAAmB,CAAC,GAAG;oBACxB,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACrC,KAAI,CAAC,mBAAmB,CAAC,eAAe,CAAC,KAAI,CAAC,CAAC;oBAC/C,MAAM;gBACV,KAAK,mBAAmB,CAAC,KAAK;oBAC1B,KAAI,CAAC,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;oBACvC,KAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,KAAI,CAAC,CAAC;oBACjD,MAAM;gBACV,OAAO,CAAC,CAAC,OAAO;aACnB;QACL,CAAC,CAAC,CAAC;QAEH,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,KAAK,EAAE;YACP,uCAAuC;YACvC,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAC,WAAW;gBACtE,IAAI,CAAC,KAAI,CAAC,UAAU,EAAE;oBAClB,OAAO;iBACV;gBACD,IAAI,WAAW,CAAC,IAAI,KAAK,iBAAiB,CAAC,gBAAgB,EAAE;oBACzD,KAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;iBACtC;YACL,CAAC,CAAC,CAAC;SACN;QAED,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;SACzB;IAEL,CAAC;IAED;;OAEG;IACI,yBAAK,GAAZ;QACI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACI,wBAAI,GAAX;QACI,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;IACrC,CAAC;IAES,gCAAY,GAAtB;QACI,OAAO,WAAW,CAAC;IACvB,CAAC;IAED;;;OAGG;IACI,kCAAc,GAArB;QACI,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;YACjC,OAAO,IAAI,CAAC;SACf;QACD,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC5C,CAAC;IAED,cAAc;IACP,8BAAU,GAAjB,UAAkB,OAAe,EAAE,GAAY,EAAE,GAAoB;QACjE,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO;SACV;QAED,uDAAuD;QACvD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,IAAI,OAAO,KAAK,EAAE,CAAC,EAAE;YAC7F,OAAO;SACV;QAED,YAAY;QACZ,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,KAAK,EAAE,EAAE;YACvD,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,GAAG,CAAC,cAAc,EAAE,CAAC;YACrB,OAAO;SACV;QACD,iBAAiB;QACjB,QAAQ,OAAO,EAAE;YACb,KAAK,EAAE,EAAE,OAAO;gBACZ,GAAG,GAAG,GAAG,CAAC,CAAC,kCAAkC;gBAC7C,MAAM;YACV,KAAK,GAAG,EAAE,OAAO;gBACb,IAAI,GAAG,EAAE;oBACL,GAAG,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,MAAM;YACV,KAAK,CAAC,EAAE,YAAY;gBAChB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxD,6BAA6B;oBAC7B,IAAI,IAAI,CAAC,kBAAkB,EAAE;wBACzB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;wBACjF,IAAI,CAAC,eAAe,EAAE,CAAC;wBACvB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;wBAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;wBAC1E,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC1B,IAAI,GAAG,EAAE;4BACL,GAAG,CAAC,cAAc,EAAE,CAAC;yBACxB;wBACD,OAAO;qBACV;oBACD,yBAAyB;oBACzB,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE;wBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;qBACzE;yBAAM;wBACH,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;wBACnE,IAAI,cAAc,GAAG,CAAC,EAAE;4BACpB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,GAAG,CAAC,EAAE,cAAc,CAAC,CAAC;4BACjE,IAAI,CAAC,eAAe,EAAE,CAAC;yBAC1B;qBACJ;iBACJ;gBACD,IAAI,GAAG,EAAE;oBACL,GAAG,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,OAAO;YACX,KAAK,EAAE,EAAE,SAAS;gBACd,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBACjF,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;oBAC1E,IAAI,GAAG,EAAE;wBACL,GAAG,CAAC,cAAc,EAAE,CAAC;qBACxB;oBACD,OAAO;iBACV;gBACD,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;oBAClF,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;oBACnE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,GAAG,CAAC,CAAC,CAAC;oBACjE,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,IAAI,CAAC,aAAa,EAAE,CAAC;iBACxB;gBACD,IAAI,GAAG,EAAE;oBACL,GAAG,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,OAAO;YACX,KAAK,EAAE,EAAE,SAAS;gBACd,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,OAAO;YACX,KAAK,EAAE,EAAE,MAAM;gBACX,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;YACX,KAAK,EAAE,EAAE,OAAO;gBACZ,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;gBAC9C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;YACX,KAAK,EAAE,EAAE,OAAO;gBACZ,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC/C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;iBACjD;gBAED,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACrB,oBAAoB;oBACpB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,wBAAwB;oBACxB,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;wBAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;4BAC1B,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,aAAa,EAAE;gCACjD,OAAO;6BACV;iCACI;gCACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;6BAC/E;yBACJ;wBACD,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;wBAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;wBACvE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;wBAC9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;wBACpB,OAAO;qBACV;oBACD,0BAA0B;oBAC1B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;wBAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBAC/B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;qBAC5H;oBACD,gCAAgC;yBAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;wBAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;wBACvE,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;qBAChJ;oBACD,2BAA2B;oBAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;wBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;wBACvE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;qBAC7E;yBACI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;wBAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;wBACxE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;qBAC5E;yBACI;wBACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;qBACnC;oBACD,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,OAAO;iBACV;gBACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;oBAC1E,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;iBACnC;gBACD,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE;oBACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;oBAC9C,GAAG,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;YACX,KAAK,EAAE,EAAE,QAAQ;gBACb,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,IAAI,IAAI,CAAC,aAAa,GAAG,CAAC,EAAE;oBACxB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;iBAC1B;gBACD,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACrB,mBAAmB;oBACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,uBAAuB;oBACvB,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;wBAC5B,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;4BAC1B,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE;gCAC1B,OAAO;6BACV;iCACI;gCACD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;6BACjF;yBACJ;wBACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;wBACnD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;wBACzE,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;wBACvB,IAAI,CAAC,YAAY,EAAE,CAAC;wBACpB,OAAO;qBACV;oBAED,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;wBAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;wBAC/B,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;qBAC9E;oBACD,gCAAgC;yBAC3B,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;wBAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;wBACzE,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,GAAG,CAAC,CAAC;qBAC5I;oBACD,2BAA2B;oBAC3B,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;wBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;wBACvE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;qBAC7E;yBACI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;wBAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;wBACxE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;qBAC5E;yBACI;wBACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;qBACnC;oBACD,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,OAAO;iBACV;gBACD,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,kBAAkB,CAAC;oBACxE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;iBACnC;gBACD,UAAU;gBACV,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE;oBACrC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;oBACvB,GAAG,CAAC,cAAc,EAAE,CAAC;iBACxB;gBACD,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;gBACvB,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;YACX,KAAK,GAAG,EAAE,OAAO;gBACb,IAAI,GAAG,EAAE;oBACL,0CAA0C;oBAC1C,IAAI,GAAG,CAAC,IAAI,IAAI,OAAO,EAAE;wBACrB,IAAI,GAAG,CAAC,QAAQ,EAAE;4BACd,OAAO,GAAG,EAAE,CAAC;4BACb,GAAG,GAAG,GAAG,CAAC;yBACb;6BAAM;4BACH,OAAO,GAAG,EAAE,CAAC;4BACb,GAAG,GAAG,GAAG,CAAC;yBACb;qBACJ;yBAAM;wBACH,GAAG,CAAC,cAAc,EAAE,CAAC;wBACrB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;wBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;qBACvB;iBACJ;qBAAM;oBACH,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;oBACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;iBACvB;gBACD,MAAM;SACb;QACD,uBAAuB;QACvB,IAAI,GAAG;YACH,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,IAAwB,gBAAgB;gBACrD,CAAC,OAAO,KAAK,EAAE,CAAC,IAAwB,QAAQ;gBAChD,CAAC,OAAO,KAAK,EAAE,CAAC,IAAwB,gDAAgD;gBACxF,CAAC,OAAO,KAAK,EAAE,CAAC,IAAwB,IAAI;gBAC5C,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC,IAAU,UAAU;gBAClD,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC,IAAU,UAAU;gBAClD,CAAC,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC,IAAQ,qBAAqB;gBAC7D,CAAC,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC,IAAQ,qBAAqB;gBAC7D,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC,CAAC,EAAE,EAAM,SAAS;YACrD,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;YACvB,IAAI,CAAC,wBAAwB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACpD,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;YACvB,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,IAAI,IAAI,CAAC,kBAAkB,EAAE;oBACzB,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;oBACtF,IAAI,CAAC,eAAe,EAAE,CAAC;oBACvB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC;oBAChF,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;oBAChC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;qBACI,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC,EAAE;oBAC/B,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;iBACpB;qBAAM;oBACH,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;oBACnE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,GAAG,CAAC,CAAC;oBAClE,IAAI,CAAC,eAAe,EAAE,CAAC;iBAC1B;aACJ;SACJ;IACL,CAAC;IAED,cAAc;IACN,+CAA2B,GAAnC,UAAoC,MAAc;QAC9C,mBAAmB;QACnB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAE1B,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,EAAE;YAC1B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;SAC9B;aAAM;YACH,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;gBACxC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;aAC7E;iBACI,IAAI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,EAAE;gBAC7C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;gBACxE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;aAC5E;iBACI;gBACD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO;aACV;SACJ;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IACD,cAAc;IACN,oCAAgB,GAAxB,UAAyB,GAAgB;QACrC,oFAAoF;QACpF,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAC1E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACpD,IAAI,QAAQ,EAAE,SAAS,CAAC;QACxB,GAAG;YACC,SAAS,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;YACpJ,QAAQ,GAAG,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;SACzI,QAAQ,QAAQ,IAAI,SAAS,EAAE;QAEhC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1E,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IACD,cAAc;IACN,kCAAc,GAAtB;QACI,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAE/B,IAAI,CAAC,oBAAoB,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;IACxB,CAAC;IAED;;;OAGG;IACI,mCAAe,GAAtB,UAAuB,GAAmB;QACtC,sBAAsB;QACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAE3C,IAAI,CAAC,kCAAkC,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACjE,CAAC;IAED,cAAc;IACN,+BAAW,GAAnB,UAAoB,EAAkB;QAClC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,mDAAmD;QACnD,IAAI;YACA,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACrF;QACD,WAAM,GAAG,CAAC,MAAM;QAChB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;IACrD,CAAC;IACD,cAAc;IACN,8BAAU,GAAlB,UAAmB,EAAkB;QACjC,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YACxB,OAAO;SACV;QACD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACjF,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC1E,mDAAmD;QACnD,IAAI;YACA,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACrF;QACD,WAAM,GAAG,CAAC,MAAM;QAEhB,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACjD,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC/B,CAAC;IACD,cAAc;IACN,gCAAY,GAApB,UAAqB,EAAkB;QACnC,IAAI,IAAI,GAAW,EAAE,CAAC;QACtB,IAAI,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE;YACzE,IAAI,GAAG,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;SACjD;aACI;YACD,sDAAsD;YACtD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;SACnC;QACD,IAAI,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,cAAc,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAEM,yBAAK,GAAZ,UAAa,OAAgC,EAAE,oBAAwC;QAAvF,iBA+KC;QA9KG,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE;YAC7D,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACvC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACrC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAC3C,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;SAC9C;QAED,aAAa;QACb,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;gBAEpF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;aAClI;SACJ;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;YAE7E,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAClI;QAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,EAAE;YAC7D,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;YACvB,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;YAC1B,OAAO,CAAC,aAAa,GAAG,CAAC,CAAC;SAC7B;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC3D;QAED,OAAO;QACP,IAAI,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACvH,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;SAClC;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACtE,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;YACzB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;YAElC,IAAI,IAAI,CAAC,iBAAiB,EAAE;gBACxB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC;aAC9C;SACJ;QAED,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;QACvD,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9F,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC,GAAG,IAAI,CAAC;YACvI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC,gEAAgE;SAClG;QAED,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAClG,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC;QAE1G,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,cAAc,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACpK,OAAO,CAAC,IAAI,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,GAAG,cAAc,EAAE;YACrD,IAAI,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,cAAc,CAAC;YAC/D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACnB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;aAC/B;SACJ;aAAM;YACH,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC;SACnC;QAED,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;QAEhF,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YAEjB,sBAAsB;YACtB,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,IAAI,aAAa,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;gBACvD,IAAI,sBAAsB,GAAG,aAAa,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBACrE,IAAI,WAAW,GAAG,CAAC,CAAC;gBACpB,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC;gBACvB,IAAI,YAAY,GAAG,CAAC,CAAC;gBACrB,GAAG;oBACC,IAAI,IAAI,CAAC,aAAa,EAAE;wBACpB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,sBAAsB,GAAG,WAAW,CAAC,CAAC;qBACjE;oBACD,IAAI,CAAC,aAAa,EAAE,CAAC;oBACrB,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;iBAE9G,QAAQ,WAAW,GAAG,sBAAsB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,CAAC,EAAE;gBAEtF,oBAAoB;gBACpB,IAAI,IAAI,CAAC,GAAG,CAAC,sBAAsB,GAAG,WAAW,CAAC,GAAG,YAAY,EAAE;oBAC/D,IAAI,CAAC,aAAa,EAAE,CAAC;iBACxB;gBAED,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;aAClC;YAED,gBAAgB;YAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;gBACpB,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;gBACrE,IAAI,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC;gBACpE,IAAI,UAAU,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,iBAAiB,CAAC;gBAExE,IAAI,UAAU,GAAG,YAAY,EAAE;oBAC3B,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,CAAC;oBAChD,UAAU,GAAG,YAAY,CAAC;oBAC1B,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;qBAAM,IAAI,UAAU,GAAG,YAAY,GAAG,cAAc,EAAE;oBACnD,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY,GAAG,cAAc,GAAG,UAAU,CAAC,CAAC;oBACjE,UAAU,GAAG,YAAY,GAAG,cAAc,CAAC;oBAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;gBACD,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;oBAC1B,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;iBACpJ;aACJ;YAED,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,CAAC,aAAa,GAAQ,UAAU,CAAC;gBACjC,KAAI,CAAC,YAAY,GAAG,CAAC,KAAI,CAAC,YAAY,CAAC;gBACvC,KAAI,CAAC,YAAY,EAAE,CAAC;YACxB,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,2BAA2B;YAC3B,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBACzB,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACjC,IAAI,0BAA0B,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC;gBACtG,IAAI,mBAAmB,GAAG,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,GAAG,0BAA0B,CAAC;gBAC1F,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC3F,IAAI,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,KAAK,CAAC;gBAC1G,IAAI,mBAAmB,GAAG,YAAY,EAAE;oBACpC,KAAK,GAAG,KAAK,GAAG,CAAC,YAAY,GAAG,mBAAmB,CAAC,CAAC;oBACrD,IAAI,CAAC,KAAK,EAAE;wBACR,yDAAyD;wBACzD,2DAA2D;wBAC3D,KAAK,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;qBACpF;oBACD,mBAAmB,GAAG,YAAY,CAAC;iBACtC;gBACD,kBAAkB;gBAClB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAC9C,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC;gBAC7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAC9J,OAAO,CAAC,WAAW,GAAG,GAAG,CAAC;aAC7B;SACJ;QACD,OAAO,CAAC,OAAO,EAAE,CAAC;QAElB,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,IAAI,CAAC,YAAY,EAAE;oBACnB,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC;iBAC3C;aACJ;iBAAM;gBACH,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC;iBACpC;aACJ;YAED,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;YAEpC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,EAC9G,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;SACpG;QAED,OAAO,CAAC,OAAO,EAAE,CAAC;IACtB,CAAC;IAEM,kCAAc,GAArB,UAAsB,MAAe,EAAE,WAAoB,EAAE,SAAiB,EAAE,WAAmB,EAAE,EAAmB;QACpH,IAAI,CAAC,iBAAM,cAAc,YAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,EAAE;YACxE,OAAO,KAAK,CAAC;SAChB;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,IAAI,CAAC;SACf;QAED,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QAC/C,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,EAAE;YACpC,cAAc;YACd,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YACjC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC;SACf;QACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAClB,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC;QAEjC,OAAO,IAAI,CAAC;IAChB,CAAC;IACM,kCAAc,GAArB,UAAsB,MAAe,EAAE,WAAoB,EAAE,SAAiB,EAAE,EAAmB;QAC/F,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC/E,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC;YACxC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;SACxD;QACD,iBAAM,cAAc,YAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEM,gCAAY,GAAnB,UAAoB,MAAe,EAAE,WAAoB,EAAE,SAAiB,EAAE,WAAmB,EAAE,WAAoB;QAEnH,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,OAAO,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAC/C,iBAAM,YAAY,YAAC,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;IACjF,CAAC;IAES,qCAAiB,GAA3B,UAA4B,WAAwB;QAChD,OAAO,WAAW,CAAC;IACvB,CAAC;IAEM,2BAAO,GAAd;QACI,iBAAM,OAAO,WAAE,CAAC;QAEhB,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;QACjC,IAAI,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,CAAC;QACvC,IAAI,CAAC,kCAAkC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAnhCD;QADC,SAAS,EAAE;oDACgC;IAG5C;QADC,SAAS,EAAE;0DACuB;IAuBnC;QADC,SAAS,EAAE;6CAGX;IAmBD;QADC,SAAS,EAAE;sDAGX;IAWD;QADC,SAAS,EAAE;qDAGX;IAaD;QADC,SAAS,EAAE;uDAGX;IAYD;QADC,SAAS,EAAE;2CAGX;IAmBD;QADC,SAAS,EAAE;qDAGX;IAaD;QADC,SAAS,EAAE;8CAGX;IAaD;QADC,SAAS,EAAE;sDAGX;IAaD;QADC,SAAS,EAAE;iDAGX;IAaD;QADC,SAAS,EAAE;+CAGX;IAaD;QADC,SAAS,EAAE;qDAGX;IAaD;QADC,SAAS,EAAE;oDAGX;IAYD;QADC,SAAS,EAAE;4CAGX;IAsCD;QADC,SAAS,EAAE;yCAGX;IAuBD;QADC,SAAS,EAAE;0CAGX;IA2vBL,gBAAC;CAAA,AA1jCD,CAA+B,OAAO,GA0jCrC;SA1jCY,SAAS;AA2jCtB,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC","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