babylonjs-gui 5.10.0 → 5.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/babylon.gui.js CHANGED
@@ -7,7 +7,7 @@
7
7
  exports["babylonjs-gui"] = factory(require("babylonjs"));
8
8
  else
9
9
  root["BABYLON"] = root["BABYLON"] || {}, root["BABYLON"]["GUI"] = factory(root["BABYLON"]);
10
- })((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), function(__WEBPACK_EXTERNAL_MODULE_core_Misc_observable__) {
10
+ })((typeof self !== "undefined" ? self : typeof global !== "undefined" ? global : this), (__WEBPACK_EXTERNAL_MODULE_core_Misc_observable__) => {
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ "use strict";
13
13
  /******/ var __webpack_modules__ = ({
@@ -27,6 +27,7 @@ __webpack_require__.r(__webpack_exports__);
27
27
  /* harmony export */ "__await": () => (/* binding */ __await),
28
28
  /* harmony export */ "__awaiter": () => (/* binding */ __awaiter),
29
29
  /* harmony export */ "__classPrivateFieldGet": () => (/* binding */ __classPrivateFieldGet),
30
+ /* harmony export */ "__classPrivateFieldIn": () => (/* binding */ __classPrivateFieldIn),
30
31
  /* harmony export */ "__classPrivateFieldSet": () => (/* binding */ __classPrivateFieldSet),
31
32
  /* harmony export */ "__createBinding": () => (/* binding */ __createBinding),
32
33
  /* harmony export */ "__decorate": () => (/* binding */ __decorate),
@@ -45,7 +46,7 @@ __webpack_require__.r(__webpack_exports__);
45
46
  /* harmony export */ "__spreadArrays": () => (/* binding */ __spreadArrays),
46
47
  /* harmony export */ "__values": () => (/* binding */ __values)
47
48
  /* harmony export */ });
48
- /*! *****************************************************************************
49
+ /******************************************************************************
49
50
  Copyright (c) Microsoft Corporation.
50
51
 
51
52
  Permission to use, copy, modify, and/or distribute this software for any
@@ -154,7 +155,11 @@ function __generator(thisArg, body) {
154
155
 
155
156
  var __createBinding = Object.create ? (function(o, m, k, k2) {
156
157
  if (k2 === undefined) k2 = k;
157
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
158
+ var desc = Object.getOwnPropertyDescriptor(m, k);
159
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
160
+ desc = { enumerable: true, get: function() { return m[k]; } };
161
+ }
162
+ Object.defineProperty(o, k2, desc);
158
163
  }) : (function(o, m, k, k2) {
159
164
  if (k2 === undefined) k2 = k;
160
165
  o[k2] = m[k];
@@ -284,6 +289,11 @@ function __classPrivateFieldSet(receiver, state, value, kind, f) {
284
289
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
285
290
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
286
291
  }
292
+
293
+ function __classPrivateFieldIn(state, receiver) {
294
+ if (receiver === null || (typeof receiver !== "object" && typeof receiver !== "function")) throw new TypeError("Cannot use 'in' operator on non-object");
295
+ return typeof state === "function" ? receiver === state : state.has(receiver);
296
+ }
287
297
 
288
298
 
289
299
  /***/ }),
@@ -8311,6 +8321,7 @@ var Image = /** @class */ (function (_super) {
8311
8321
  };
8312
8322
  if (value) {
8313
8323
  core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.Tools.SetCorsBehavior(value, this._domImage);
8324
+ core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.Tools.SetReferrerPolicyBehavior(this.referrerPolicy, this._domImage);
8314
8325
  this._domImage.src = value;
8315
8326
  }
8316
8327
  },
@@ -8727,41 +8738,42 @@ var Image = /** @class */ (function (_super) {
8727
8738
 
8728
8739
  __webpack_require__.r(__webpack_exports__);
8729
8740
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
8730
- /* harmony export */ "BaseSlider": () => (/* reexport safe */ _sliders_baseSlider__WEBPACK_IMPORTED_MODULE_24__.BaseSlider),
8741
+ /* harmony export */ "BaseSlider": () => (/* reexport safe */ _sliders_baseSlider__WEBPACK_IMPORTED_MODULE_25__.BaseSlider),
8731
8742
  /* harmony export */ "Button": () => (/* reexport safe */ _button__WEBPACK_IMPORTED_MODULE_0__.Button),
8732
8743
  /* harmony export */ "Checkbox": () => (/* reexport safe */ _checkbox__WEBPACK_IMPORTED_MODULE_1__.Checkbox),
8733
- /* harmony export */ "CheckboxGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_16__.CheckboxGroup),
8744
+ /* harmony export */ "CheckboxGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_17__.CheckboxGroup),
8734
8745
  /* harmony export */ "ColorPicker": () => (/* reexport safe */ _colorpicker__WEBPACK_IMPORTED_MODULE_2__.ColorPicker),
8735
8746
  /* harmony export */ "Container": () => (/* reexport safe */ _container__WEBPACK_IMPORTED_MODULE_3__.Container),
8736
8747
  /* harmony export */ "Control": () => (/* reexport safe */ _control__WEBPACK_IMPORTED_MODULE_4__.Control),
8737
- /* harmony export */ "DisplayGrid": () => (/* reexport safe */ _displayGrid__WEBPACK_IMPORTED_MODULE_23__.DisplayGrid),
8748
+ /* harmony export */ "DisplayGrid": () => (/* reexport safe */ _displayGrid__WEBPACK_IMPORTED_MODULE_24__.DisplayGrid),
8738
8749
  /* harmony export */ "Ellipse": () => (/* reexport safe */ _ellipse__WEBPACK_IMPORTED_MODULE_5__.Ellipse),
8739
8750
  /* harmony export */ "FocusableButton": () => (/* reexport safe */ _focusableButton__WEBPACK_IMPORTED_MODULE_6__.FocusableButton),
8740
8751
  /* harmony export */ "Grid": () => (/* reexport safe */ _grid__WEBPACK_IMPORTED_MODULE_8__.Grid),
8741
8752
  /* harmony export */ "Image": () => (/* reexport safe */ _image__WEBPACK_IMPORTED_MODULE_9__.Image),
8742
- /* harmony export */ "ImageBasedSlider": () => (/* reexport safe */ _sliders_imageBasedSlider__WEBPACK_IMPORTED_MODULE_26__.ImageBasedSlider),
8743
- /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_28__.ImageScrollBar),
8744
- /* harmony export */ "InputPassword": () => (/* reexport safe */ _inputPassword__WEBPACK_IMPORTED_MODULE_11__.InputPassword),
8753
+ /* harmony export */ "ImageBasedSlider": () => (/* reexport safe */ _sliders_imageBasedSlider__WEBPACK_IMPORTED_MODULE_27__.ImageBasedSlider),
8754
+ /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_29__.ImageScrollBar),
8755
+ /* harmony export */ "InputPassword": () => (/* reexport safe */ _inputPassword__WEBPACK_IMPORTED_MODULE_12__.InputPassword),
8745
8756
  /* harmony export */ "InputText": () => (/* reexport safe */ _inputText__WEBPACK_IMPORTED_MODULE_10__.InputText),
8746
- /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _virtualKeyboard__WEBPACK_IMPORTED_MODULE_21__.KeyPropertySet),
8747
- /* harmony export */ "Line": () => (/* reexport safe */ _line__WEBPACK_IMPORTED_MODULE_12__.Line),
8748
- /* harmony export */ "MultiLine": () => (/* reexport safe */ _multiLine__WEBPACK_IMPORTED_MODULE_13__.MultiLine),
8749
- /* harmony export */ "RadioButton": () => (/* reexport safe */ _radioButton__WEBPACK_IMPORTED_MODULE_14__.RadioButton),
8750
- /* harmony export */ "RadioGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_16__.RadioGroup),
8751
- /* harmony export */ "Rectangle": () => (/* reexport safe */ _rectangle__WEBPACK_IMPORTED_MODULE_22__.Rectangle),
8752
- /* harmony export */ "ScrollBar": () => (/* reexport safe */ _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_27__.ScrollBar),
8753
- /* harmony export */ "ScrollViewer": () => (/* reexport safe */ _scrollViewers_scrollViewer__WEBPACK_IMPORTED_MODULE_17__.ScrollViewer),
8754
- /* harmony export */ "SelectionPanel": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_16__.SelectionPanel),
8755
- /* harmony export */ "SelectorGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_16__.SelectorGroup),
8756
- /* harmony export */ "Slider": () => (/* reexport safe */ _sliders_slider__WEBPACK_IMPORTED_MODULE_25__.Slider),
8757
- /* harmony export */ "SliderGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_16__.SliderGroup),
8758
- /* harmony export */ "StackPanel": () => (/* reexport safe */ _stackPanel__WEBPACK_IMPORTED_MODULE_15__.StackPanel),
8759
- /* harmony export */ "TextBlock": () => (/* reexport safe */ _textBlock__WEBPACK_IMPORTED_MODULE_18__.TextBlock),
8760
- /* harmony export */ "TextWrapper": () => (/* reexport safe */ _textWrapper__WEBPACK_IMPORTED_MODULE_19__.TextWrapper),
8761
- /* harmony export */ "TextWrapping": () => (/* reexport safe */ _textBlock__WEBPACK_IMPORTED_MODULE_18__.TextWrapping),
8762
- /* harmony export */ "ToggleButton": () => (/* reexport safe */ _toggleButton__WEBPACK_IMPORTED_MODULE_20__.ToggleButton),
8763
- /* harmony export */ "VirtualKeyboard": () => (/* reexport safe */ _virtualKeyboard__WEBPACK_IMPORTED_MODULE_21__.VirtualKeyboard),
8764
- /* harmony export */ "name": () => (/* reexport safe */ _statics__WEBPACK_IMPORTED_MODULE_29__.name)
8757
+ /* harmony export */ "InputTextArea": () => (/* reexport safe */ _inputTextArea__WEBPACK_IMPORTED_MODULE_11__.InputTextArea),
8758
+ /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _virtualKeyboard__WEBPACK_IMPORTED_MODULE_22__.KeyPropertySet),
8759
+ /* harmony export */ "Line": () => (/* reexport safe */ _line__WEBPACK_IMPORTED_MODULE_13__.Line),
8760
+ /* harmony export */ "MultiLine": () => (/* reexport safe */ _multiLine__WEBPACK_IMPORTED_MODULE_14__.MultiLine),
8761
+ /* harmony export */ "RadioButton": () => (/* reexport safe */ _radioButton__WEBPACK_IMPORTED_MODULE_15__.RadioButton),
8762
+ /* harmony export */ "RadioGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_17__.RadioGroup),
8763
+ /* harmony export */ "Rectangle": () => (/* reexport safe */ _rectangle__WEBPACK_IMPORTED_MODULE_23__.Rectangle),
8764
+ /* harmony export */ "ScrollBar": () => (/* reexport safe */ _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_28__.ScrollBar),
8765
+ /* harmony export */ "ScrollViewer": () => (/* reexport safe */ _scrollViewers_scrollViewer__WEBPACK_IMPORTED_MODULE_18__.ScrollViewer),
8766
+ /* harmony export */ "SelectionPanel": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_17__.SelectionPanel),
8767
+ /* harmony export */ "SelectorGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_17__.SelectorGroup),
8768
+ /* harmony export */ "Slider": () => (/* reexport safe */ _sliders_slider__WEBPACK_IMPORTED_MODULE_26__.Slider),
8769
+ /* harmony export */ "SliderGroup": () => (/* reexport safe */ _selector__WEBPACK_IMPORTED_MODULE_17__.SliderGroup),
8770
+ /* harmony export */ "StackPanel": () => (/* reexport safe */ _stackPanel__WEBPACK_IMPORTED_MODULE_16__.StackPanel),
8771
+ /* harmony export */ "TextBlock": () => (/* reexport safe */ _textBlock__WEBPACK_IMPORTED_MODULE_19__.TextBlock),
8772
+ /* harmony export */ "TextWrapper": () => (/* reexport safe */ _textWrapper__WEBPACK_IMPORTED_MODULE_20__.TextWrapper),
8773
+ /* harmony export */ "TextWrapping": () => (/* reexport safe */ _textBlock__WEBPACK_IMPORTED_MODULE_19__.TextWrapping),
8774
+ /* harmony export */ "ToggleButton": () => (/* reexport safe */ _toggleButton__WEBPACK_IMPORTED_MODULE_21__.ToggleButton),
8775
+ /* harmony export */ "VirtualKeyboard": () => (/* reexport safe */ _virtualKeyboard__WEBPACK_IMPORTED_MODULE_22__.VirtualKeyboard),
8776
+ /* harmony export */ "name": () => (/* reexport safe */ _statics__WEBPACK_IMPORTED_MODULE_30__.name)
8765
8777
  /* harmony export */ });
8766
8778
  /* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./button */ "../../../lts/gui/dist/2D/controls/button.js");
8767
8779
  /* harmony import */ var _checkbox__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./checkbox */ "../../../lts/gui/dist/2D/controls/checkbox.js");
@@ -8774,25 +8786,27 @@ __webpack_require__.r(__webpack_exports__);
8774
8786
  /* harmony import */ var _grid__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./grid */ "../../../lts/gui/dist/2D/controls/grid.js");
8775
8787
  /* harmony import */ var _image__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./image */ "../../../lts/gui/dist/2D/controls/image.js");
8776
8788
  /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./inputText */ "../../../lts/gui/dist/2D/controls/inputText.js");
8777
- /* harmony import */ var _inputPassword__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inputPassword */ "../../../lts/gui/dist/2D/controls/inputPassword.js");
8778
- /* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./line */ "../../../lts/gui/dist/2D/controls/line.js");
8779
- /* harmony import */ var _multiLine__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./multiLine */ "../../../lts/gui/dist/2D/controls/multiLine.js");
8780
- /* harmony import */ var _radioButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./radioButton */ "../../../lts/gui/dist/2D/controls/radioButton.js");
8781
- /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./stackPanel */ "../../../lts/gui/dist/2D/controls/stackPanel.js");
8782
- /* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./selector */ "../../../lts/gui/dist/2D/controls/selector.js");
8783
- /* harmony import */ var _scrollViewers_scrollViewer__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./scrollViewers/scrollViewer */ "../../../lts/gui/dist/2D/controls/scrollViewers/scrollViewer.js");
8784
- /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./textBlock */ "../../../lts/gui/dist/2D/controls/textBlock.js");
8785
- /* harmony import */ var _textWrapper__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./textWrapper */ "../../../lts/gui/dist/2D/controls/textWrapper.js");
8786
- /* harmony import */ var _toggleButton__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./toggleButton */ "../../../lts/gui/dist/2D/controls/toggleButton.js");
8787
- /* harmony import */ var _virtualKeyboard__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./virtualKeyboard */ "../../../lts/gui/dist/2D/controls/virtualKeyboard.js");
8788
- /* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./rectangle */ "../../../lts/gui/dist/2D/controls/rectangle.js");
8789
- /* harmony import */ var _displayGrid__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./displayGrid */ "../../../lts/gui/dist/2D/controls/displayGrid.js");
8790
- /* harmony import */ var _sliders_baseSlider__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./sliders/baseSlider */ "../../../lts/gui/dist/2D/controls/sliders/baseSlider.js");
8791
- /* harmony import */ var _sliders_slider__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sliders/slider */ "../../../lts/gui/dist/2D/controls/sliders/slider.js");
8792
- /* harmony import */ var _sliders_imageBasedSlider__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./sliders/imageBasedSlider */ "../../../lts/gui/dist/2D/controls/sliders/imageBasedSlider.js");
8793
- /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./sliders/scrollBar */ "../../../lts/gui/dist/2D/controls/sliders/scrollBar.js");
8794
- /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./sliders/imageScrollBar */ "../../../lts/gui/dist/2D/controls/sliders/imageScrollBar.js");
8795
- /* harmony import */ var _statics__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./statics */ "../../../lts/gui/dist/2D/controls/statics.js");
8789
+ /* harmony import */ var _inputTextArea__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./inputTextArea */ "../../../lts/gui/dist/2D/controls/inputTextArea.js");
8790
+ /* harmony import */ var _inputPassword__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./inputPassword */ "../../../lts/gui/dist/2D/controls/inputPassword.js");
8791
+ /* harmony import */ var _line__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./line */ "../../../lts/gui/dist/2D/controls/line.js");
8792
+ /* harmony import */ var _multiLine__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./multiLine */ "../../../lts/gui/dist/2D/controls/multiLine.js");
8793
+ /* harmony import */ var _radioButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./radioButton */ "../../../lts/gui/dist/2D/controls/radioButton.js");
8794
+ /* harmony import */ var _stackPanel__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./stackPanel */ "../../../lts/gui/dist/2D/controls/stackPanel.js");
8795
+ /* harmony import */ var _selector__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./selector */ "../../../lts/gui/dist/2D/controls/selector.js");
8796
+ /* harmony import */ var _scrollViewers_scrollViewer__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./scrollViewers/scrollViewer */ "../../../lts/gui/dist/2D/controls/scrollViewers/scrollViewer.js");
8797
+ /* harmony import */ var _textBlock__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./textBlock */ "../../../lts/gui/dist/2D/controls/textBlock.js");
8798
+ /* harmony import */ var _textWrapper__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./textWrapper */ "../../../lts/gui/dist/2D/controls/textWrapper.js");
8799
+ /* harmony import */ var _toggleButton__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./toggleButton */ "../../../lts/gui/dist/2D/controls/toggleButton.js");
8800
+ /* harmony import */ var _virtualKeyboard__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./virtualKeyboard */ "../../../lts/gui/dist/2D/controls/virtualKeyboard.js");
8801
+ /* harmony import */ var _rectangle__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./rectangle */ "../../../lts/gui/dist/2D/controls/rectangle.js");
8802
+ /* harmony import */ var _displayGrid__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./displayGrid */ "../../../lts/gui/dist/2D/controls/displayGrid.js");
8803
+ /* harmony import */ var _sliders_baseSlider__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./sliders/baseSlider */ "../../../lts/gui/dist/2D/controls/sliders/baseSlider.js");
8804
+ /* harmony import */ var _sliders_slider__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./sliders/slider */ "../../../lts/gui/dist/2D/controls/sliders/slider.js");
8805
+ /* harmony import */ var _sliders_imageBasedSlider__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./sliders/imageBasedSlider */ "../../../lts/gui/dist/2D/controls/sliders/imageBasedSlider.js");
8806
+ /* harmony import */ var _sliders_scrollBar__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./sliders/scrollBar */ "../../../lts/gui/dist/2D/controls/sliders/scrollBar.js");
8807
+ /* harmony import */ var _sliders_imageScrollBar__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./sliders/imageScrollBar */ "../../../lts/gui/dist/2D/controls/sliders/imageScrollBar.js");
8808
+ /* harmony import */ var _statics__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./statics */ "../../../lts/gui/dist/2D/controls/statics.js");
8809
+
8796
8810
 
8797
8811
 
8798
8812
 
@@ -10013,21 +10027,22 @@ var InputText = /** @class */ (function (_super) {
10013
10027
 
10014
10028
  /***/ }),
10015
10029
 
10016
- /***/ "../../../lts/gui/dist/2D/controls/line.js":
10017
- /*!*************************************************!*\
10018
- !*** ../../../lts/gui/dist/2D/controls/line.js ***!
10019
- \*************************************************/
10030
+ /***/ "../../../lts/gui/dist/2D/controls/inputTextArea.js":
10031
+ /*!**********************************************************!*\
10032
+ !*** ../../../lts/gui/dist/2D/controls/inputTextArea.js ***!
10033
+ \**********************************************************/
10020
10034
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10021
10035
 
10022
10036
  __webpack_require__.r(__webpack_exports__);
10023
10037
  /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10024
- /* harmony export */ "Line": () => (/* binding */ Line)
10038
+ /* harmony export */ "InputTextArea": () => (/* binding */ InputTextArea)
10025
10039
  /* harmony export */ });
10026
10040
  /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../../../node_modules/tslib/tslib.es6.js");
10027
- /* harmony import */ var core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core/Misc/decorators */ "core/Misc/observable");
10028
- /* harmony import */ var core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
10041
+ /* harmony import */ var core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core/Misc/decorators */ "core/Misc/observable");
10042
+ /* harmony import */ var core_Misc_observable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__);
10029
10043
  /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "../../../lts/gui/dist/2D/controls/control.js");
10030
10044
  /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "../../../lts/gui/dist/2D/valueAndUnit.js");
10045
+ /* harmony import */ var _inputText__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inputText */ "../../../lts/gui/dist/2D/controls/inputText.js");
10031
10046
 
10032
10047
 
10033
10048
 
@@ -10035,269 +10050,1358 @@ __webpack_require__.r(__webpack_exports__);
10035
10050
 
10036
10051
 
10037
10052
 
10038
- /** Class used to render 2D lines */
10039
- var Line = /** @class */ (function (_super) {
10040
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(Line, _super);
10053
+ /**
10054
+ * Class used to create input text control
10055
+ */
10056
+ var InputTextArea = /** @class */ (function (_super) {
10057
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(InputTextArea, _super);
10041
10058
  /**
10042
- * Creates a new Line
10059
+ * Creates a new InputTextArea
10043
10060
  * @param name defines the control name
10061
+ * @param text defines the text of the control
10044
10062
  */
10045
- function Line(name) {
10063
+ function InputTextArea(name, text) {
10064
+ if (text === void 0) { text = ""; }
10046
10065
  var _this = _super.call(this, name) || this;
10047
10066
  _this.name = name;
10048
- _this._lineWidth = 1;
10049
- _this._x1 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
10050
- _this._y1 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
10051
- _this._x2 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
10052
- _this._y2 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
10053
- _this._dash = new Array();
10054
- _this._automaticSize = true;
10055
- _this.isHitTestVisible = false;
10056
- _this._horizontalAlignment = _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_LEFT;
10057
- _this._verticalAlignment = _control__WEBPACK_IMPORTED_MODULE_2__.Control.VERTICAL_ALIGNMENT_TOP;
10067
+ _this._textHorizontalAlignment = _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_LEFT;
10068
+ _this._textVerticalAlignment = _control__WEBPACK_IMPORTED_MODULE_2__.Control.VERTICAL_ALIGNMENT_TOP;
10069
+ _this._lineSpacing = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
10070
+ _this._outlineWidth = 0;
10071
+ _this._outlineColor = "white";
10072
+ _this._maxHeight = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(1, _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit.UNITMODE_PERCENTAGE, false);
10073
+ /**
10074
+ * An event triggered after the text was broken up into lines
10075
+ */
10076
+ _this.onLinesReadyObservable = new core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.Observable();
10077
+ _this.text = text;
10078
+ _this.isPointerBlocker = true;
10079
+ _this.onLinesReadyObservable.add(function () { return _this._updateCursorPosition(); });
10080
+ _this._highlightCursorInfo = {
10081
+ initialStartIndex: -1,
10082
+ initialRelativeStartIndex: -1,
10083
+ initialLineIndex: -1,
10084
+ };
10085
+ _this._cursorInfo = {
10086
+ globalStartIndex: 0,
10087
+ globalEndIndex: 0,
10088
+ relativeEndIndex: 0,
10089
+ relativeStartIndex: 0,
10090
+ currentLineIndex: 0,
10091
+ };
10058
10092
  return _this;
10059
10093
  }
10060
- Object.defineProperty(Line.prototype, "dash", {
10061
- /** Gets or sets the dash pattern */
10094
+ Object.defineProperty(InputTextArea.prototype, "outlineWidth", {
10095
+ /**
10096
+ * Gets or sets outlineWidth of the text to display
10097
+ */
10062
10098
  get: function () {
10063
- return this._dash;
10099
+ return this._outlineWidth;
10064
10100
  },
10101
+ /**
10102
+ * Gets or sets outlineWidth of the text to display
10103
+ */
10065
10104
  set: function (value) {
10066
- if (this._dash === value) {
10105
+ if (this._outlineWidth === value) {
10067
10106
  return;
10068
10107
  }
10069
- this._dash = value;
10108
+ this._outlineWidth = value;
10070
10109
  this._markAsDirty();
10071
10110
  },
10072
10111
  enumerable: false,
10073
10112
  configurable: true
10074
10113
  });
10075
- Object.defineProperty(Line.prototype, "connectedControl", {
10076
- /** Gets or sets the control connected with the line end */
10114
+ Object.defineProperty(InputTextArea.prototype, "outlineColor", {
10115
+ /**
10116
+ * Gets or sets outlineColor of the text to display
10117
+ */
10077
10118
  get: function () {
10078
- return this._connectedControl;
10119
+ return this._outlineColor;
10079
10120
  },
10121
+ /**
10122
+ * Gets or sets outlineColor of the text to display
10123
+ */
10080
10124
  set: function (value) {
10081
- var _this = this;
10082
- if (this._connectedControl === value) {
10125
+ if (this._outlineColor === value) {
10083
10126
  return;
10084
10127
  }
10085
- if (this._connectedControlDirtyObserver && this._connectedControl) {
10086
- this._connectedControl.onDirtyObservable.remove(this._connectedControlDirtyObserver);
10087
- this._connectedControlDirtyObserver = null;
10088
- }
10089
- if (value) {
10090
- this._connectedControlDirtyObserver = value.onDirtyObservable.add(function () { return _this._markAsDirty(); });
10091
- }
10092
- this._connectedControl = value;
10128
+ this._outlineColor = value;
10093
10129
  this._markAsDirty();
10094
10130
  },
10095
10131
  enumerable: false,
10096
10132
  configurable: true
10097
10133
  });
10098
- Object.defineProperty(Line.prototype, "x1", {
10099
- /** Gets or sets start coordinates on X axis */
10100
- get: function () {
10101
- return this._x1.toString(this._host);
10102
- },
10103
- set: function (value) {
10104
- if (this._x1.toString(this._host) === value) {
10105
- return;
10106
- }
10107
- if (this._x1.fromString(value)) {
10108
- this._markAsDirty();
10109
- }
10110
- },
10111
- enumerable: false,
10112
- configurable: true
10113
- });
10114
- Object.defineProperty(Line.prototype, "y1", {
10115
- /** Gets or sets start coordinates on Y axis */
10134
+ Object.defineProperty(InputTextArea.prototype, "autoStretchHeight", {
10135
+ /** Gets or sets a boolean indicating if the control can auto stretch its height to adapt to the text */
10116
10136
  get: function () {
10117
- return this._y1.toString(this._host);
10137
+ return this._autoStretchHeight;
10118
10138
  },
10119
10139
  set: function (value) {
10120
- if (this._y1.toString(this._host) === value) {
10140
+ if (this._autoStretchHeight === value) {
10121
10141
  return;
10122
10142
  }
10123
- if (this._y1.fromString(value)) {
10124
- this._markAsDirty();
10125
- }
10143
+ this._autoStretchHeight = value;
10144
+ this._markAsDirty();
10126
10145
  },
10127
10146
  enumerable: false,
10128
10147
  configurable: true
10129
10148
  });
10130
- Object.defineProperty(Line.prototype, "x2", {
10131
- /** Gets or sets end coordinates on X axis */
10132
- get: function () {
10133
- return this._x2.toString(this._host);
10134
- },
10149
+ Object.defineProperty(InputTextArea.prototype, "height", {
10135
10150
  set: function (value) {
10136
- if (this._x2.toString(this._host) === value) {
10151
+ this._fixedRatioMasterIsWidth = false;
10152
+ if (this._height.toString(this._host) === value) {
10137
10153
  return;
10138
10154
  }
10139
- if (this._x2.fromString(value)) {
10155
+ if (this._height.fromString(value)) {
10140
10156
  this._markAsDirty();
10141
10157
  }
10158
+ this._autoStretchHeight = false;
10142
10159
  },
10143
10160
  enumerable: false,
10144
10161
  configurable: true
10145
10162
  });
10146
- Object.defineProperty(Line.prototype, "y2", {
10147
- /** Gets or sets end coordinates on Y axis */
10163
+ Object.defineProperty(InputTextArea.prototype, "maxHeight", {
10148
10164
  get: function () {
10149
- return this._y2.toString(this._host);
10165
+ return this._maxHeight.toString(this._host);
10150
10166
  },
10151
10167
  set: function (value) {
10152
- if (this._y2.toString(this._host) === value) {
10168
+ if (this._maxHeight.toString(this._host) === value) {
10153
10169
  return;
10154
10170
  }
10155
- if (this._y2.fromString(value)) {
10171
+ if (this._maxHeight.fromString(value)) {
10156
10172
  this._markAsDirty();
10157
10173
  }
10158
10174
  },
10159
10175
  enumerable: false,
10160
10176
  configurable: true
10161
10177
  });
10162
- Object.defineProperty(Line.prototype, "lineWidth", {
10163
- /** Gets or sets line width */
10164
- get: function () {
10165
- return this._lineWidth;
10166
- },
10167
- set: function (value) {
10168
- if (this._lineWidth === value) {
10169
- return;
10170
- }
10171
- this._lineWidth = value;
10172
- this._markAsDirty();
10173
- },
10174
- enumerable: false,
10175
- configurable: true
10176
- });
10177
- Object.defineProperty(Line.prototype, "horizontalAlignment", {
10178
- /** Gets or sets horizontal alignment */
10179
- set: function (value) {
10180
- return;
10181
- },
10182
- enumerable: false,
10183
- configurable: true
10184
- });
10185
- Object.defineProperty(Line.prototype, "verticalAlignment", {
10186
- /** Gets or sets vertical alignment */
10187
- set: function (value) {
10188
- return;
10189
- },
10190
- enumerable: false,
10191
- configurable: true
10192
- });
10193
- Object.defineProperty(Line.prototype, "_effectiveX2", {
10194
- get: function () {
10195
- return (this._connectedControl ? this._connectedControl.centerX : 0) + this._x2.getValue(this._host);
10196
- },
10197
- enumerable: false,
10198
- configurable: true
10199
- });
10200
- Object.defineProperty(Line.prototype, "_effectiveY2", {
10178
+ Object.defineProperty(InputTextArea.prototype, "maxHeightInPixels", {
10179
+ /** Gets the maximum width allowed by the control in pixels */
10201
10180
  get: function () {
10202
- return (this._connectedControl ? this._connectedControl.centerY : 0) + this._y2.getValue(this._host);
10181
+ return this._maxHeight.getValueInPixel(this._host, this._cachedParentMeasure.height);
10203
10182
  },
10204
10183
  enumerable: false,
10205
10184
  configurable: true
10206
10185
  });
10207
- Line.prototype._getTypeName = function () {
10208
- return "Line";
10209
- };
10210
- Line.prototype._draw = function (context) {
10211
- context.save();
10212
- if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
10213
- context.shadowColor = this.shadowColor;
10214
- context.shadowBlur = this.shadowBlur;
10215
- context.shadowOffsetX = this.shadowOffsetX;
10216
- context.shadowOffsetY = this.shadowOffsetY;
10217
- }
10218
- this._applyStates(context);
10219
- context.strokeStyle = this.color;
10220
- context.lineWidth = this._lineWidth;
10221
- context.setLineDash(this._dash);
10222
- context.beginPath();
10223
- context.moveTo(this._cachedParentMeasure.left + this._x1.getValue(this._host), this._cachedParentMeasure.top + this._y1.getValue(this._host));
10224
- context.lineTo(this._cachedParentMeasure.left + this._effectiveX2, this._cachedParentMeasure.top + this._effectiveY2);
10225
- context.stroke();
10226
- context.restore();
10227
- };
10228
- Line.prototype._measure = function () {
10229
- // Width / Height
10230
- this._currentMeasure.width = Math.abs(this._x1.getValue(this._host) - this._effectiveX2) + this._lineWidth;
10231
- this._currentMeasure.height = Math.abs(this._y1.getValue(this._host) - this._effectiveY2) + this._lineWidth;
10232
- };
10233
- Line.prototype._computeAlignment = function (parentMeasure) {
10234
- this._currentMeasure.left = parentMeasure.left + Math.min(this._x1.getValue(this._host), this._effectiveX2) - this._lineWidth / 2;
10235
- this._currentMeasure.top = parentMeasure.top + Math.min(this._y1.getValue(this._host), this._effectiveY2) - this._lineWidth / 2;
10186
+ InputTextArea.prototype._getTypeName = function () {
10187
+ return "InputTextArea";
10236
10188
  };
10237
10189
  /**
10238
- * Move one end of the line given 3D cartesian coordinates.
10239
- * @param position Targeted world position
10240
- * @param scene Scene
10241
- * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.
10190
+ * Handles the keyboard event
10191
+ * @param evt Defines the KeyboardEvent
10242
10192
  */
10243
- Line.prototype.moveToVector3 = function (position, scene, end) {
10244
- if (end === void 0) { end = false; }
10245
- if (!this._host || this.parent !== this._host._rootContainer) {
10246
- core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.Tools.Error("Cannot move a control to a vector3 if the control is not at root level");
10247
- return;
10248
- }
10249
- var globalViewport = this._host._getGlobalViewport();
10250
- var projectedPosition = core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.Vector3.Project(position, core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.Matrix.Identity(), scene.getTransformMatrix(), globalViewport);
10251
- this._moveToProjectedPosition(projectedPosition, end);
10252
- if (projectedPosition.z < 0 || projectedPosition.z > 1) {
10253
- this.notRenderable = true;
10254
- return;
10255
- }
10256
- this.notRenderable = false;
10193
+ InputTextArea.prototype.processKeyboard = function (evt) {
10194
+ // process pressed key
10195
+ this.alternativeProcessKey(evt.code, evt.key, evt);
10196
+ this.onKeyboardEventProcessedObservable.notifyObservers(evt);
10257
10197
  };
10258
10198
  /**
10259
- * Move one end of the line to a position in screen absolute space.
10260
- * @param projectedPosition Position in screen absolute space (X, Y)
10261
- * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.
10199
+ * Process the last keyboard input
10200
+ *
10201
+ * @param code The ascii input number
10202
+ * @param key The key string representation
10203
+ * @param evt The keyboard event emits with input
10204
+ * @hidden
10262
10205
  */
10263
- Line.prototype._moveToProjectedPosition = function (projectedPosition, end) {
10264
- if (end === void 0) { end = false; }
10265
- var x = projectedPosition.x + this._linkOffsetX.getValue(this._host) + "px";
10266
- var y = projectedPosition.y + this._linkOffsetY.getValue(this._host) + "px";
10267
- if (end) {
10268
- this.x2 = x;
10269
- this.y2 = y;
10270
- this._x2.ignoreAdaptiveScaling = true;
10271
- this._y2.ignoreAdaptiveScaling = true;
10272
- }
10273
- else {
10274
- this.x1 = x;
10275
- this.y1 = y;
10276
- this._x1.ignoreAdaptiveScaling = true;
10277
- this._y1.ignoreAdaptiveScaling = true;
10206
+ InputTextArea.prototype.alternativeProcessKey = function (code, key, evt) {
10207
+ //return if clipboard event keys (i.e -ctr/cmd + c,v,x)
10208
+ if (evt && (evt.ctrlKey || evt.metaKey) && (code === "KeyC" || code === "KeyV" || code === "KeyX")) {
10209
+ return;
10278
10210
  }
10279
- };
10280
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
10281
- (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
10282
- ], Line.prototype, "dash", null);
10283
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
10284
- (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
10285
- ], Line.prototype, "x1", null);
10286
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
10287
- (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
10288
- ], Line.prototype, "y1", null);
10289
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
10290
- (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
10291
- ], Line.prototype, "x2", null);
10292
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
10293
- (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
10294
- ], Line.prototype, "y2", null);
10295
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
10296
- (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
10297
- ], Line.prototype, "lineWidth", null);
10298
- return Line;
10299
- }(_control__WEBPACK_IMPORTED_MODULE_2__.Control));
10300
-
10211
+ // Specific cases
10212
+ switch (code) {
10213
+ case "KeyA": // A - select all
10214
+ if (evt && (evt.ctrlKey || evt.metaKey)) {
10215
+ this._selectAllText();
10216
+ evt.preventDefault();
10217
+ return;
10218
+ }
10219
+ break;
10220
+ case "Period": //SLASH
10221
+ if (evt && evt.shiftKey) {
10222
+ evt.preventDefault();
10223
+ }
10224
+ break;
10225
+ case "Backspace": // BACKSPACE
10226
+ if (!this._isTextHighlightOn && this._cursorInfo.globalStartIndex > 0) {
10227
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10228
+ this._cursorInfo.globalStartIndex--;
10229
+ }
10230
+ this._textWrapper.removePart(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex);
10231
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10232
+ if (evt) {
10233
+ evt.preventDefault();
10234
+ }
10235
+ this._blinkIsEven = false;
10236
+ this._isTextHighlightOn = false;
10237
+ this._textHasChanged();
10238
+ break;
10239
+ case "Delete": // DELETE
10240
+ if (!this._isTextHighlightOn && this._cursorInfo.globalEndIndex < this.text.length) {
10241
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex + 1;
10242
+ }
10243
+ this._textWrapper.removePart(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex);
10244
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10245
+ if (evt) {
10246
+ evt.preventDefault();
10247
+ }
10248
+ this._blinkIsEven = false;
10249
+ this._isTextHighlightOn = false;
10250
+ this._textHasChanged();
10251
+ break;
10252
+ case "Enter": // RETURN
10253
+ this._textWrapper.removePart(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex, "\n");
10254
+ this._cursorInfo.globalStartIndex++;
10255
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10256
+ this._blinkIsEven = false;
10257
+ this._isTextHighlightOn = false;
10258
+ this._textHasChanged();
10259
+ return;
10260
+ case "End": // END
10261
+ this._cursorInfo.globalStartIndex = this.text.length;
10262
+ this._blinkIsEven = false;
10263
+ this._isTextHighlightOn = false;
10264
+ this._markAsDirty();
10265
+ return;
10266
+ case "Home": // HOME
10267
+ this._cursorInfo.globalStartIndex = 0;
10268
+ this._blinkIsEven = false;
10269
+ this._isTextHighlightOn = false;
10270
+ this._markAsDirty();
10271
+ return;
10272
+ case "ArrowLeft": // LEFT
10273
+ this._markAsDirty();
10274
+ if (evt && evt.shiftKey) {
10275
+ // shift + ctrl/cmd + <-
10276
+ if (evt.ctrlKey || evt.metaKey) {
10277
+ // Go to line's start by substract the relativeStartIndex to the globalStartIndex
10278
+ this._cursorInfo.globalStartIndex -= this._cursorInfo.relativeStartIndex;
10279
+ this._cursorInfo.globalEndIndex = this._highlightCursorInfo.initialStartIndex;
10280
+ }
10281
+ // store the starting point
10282
+ if (!this._isTextHighlightOn) {
10283
+ this._highlightCursorInfo.initialLineIndex = this._cursorInfo.currentLineIndex;
10284
+ this._highlightCursorInfo.initialStartIndex = this._cursorInfo.globalStartIndex;
10285
+ this._highlightCursorInfo.initialRelativeStartIndex = this._cursorInfo.relativeStartIndex;
10286
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10287
+ this._cursorInfo.globalStartIndex--;
10288
+ this._isTextHighlightOn = true;
10289
+ }
10290
+ else {
10291
+ if (this._cursorInfo.globalEndIndex > this._highlightCursorInfo.initialStartIndex) {
10292
+ this._cursorInfo.globalEndIndex--;
10293
+ }
10294
+ else {
10295
+ this._cursorInfo.globalStartIndex--;
10296
+ }
10297
+ }
10298
+ this._blinkIsEven = true;
10299
+ evt.preventDefault();
10300
+ return;
10301
+ }
10302
+ if (this._isTextHighlightOn) {
10303
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10304
+ }
10305
+ else if (evt && (evt.ctrlKey || evt.metaKey)) {
10306
+ // ctr + <-
10307
+ this._cursorInfo.globalStartIndex -= this._cursorInfo.relativeStartIndex;
10308
+ evt.preventDefault();
10309
+ }
10310
+ else if (this._cursorInfo.globalStartIndex > 0) {
10311
+ this._cursorInfo.globalStartIndex--;
10312
+ }
10313
+ // update the cursor
10314
+ this._blinkIsEven = false;
10315
+ this._isTextHighlightOn = false;
10316
+ return;
10317
+ case "ArrowRight": // RIGHT
10318
+ this._markAsDirty();
10319
+ if (evt && evt.shiftKey) {
10320
+ // shift + ctrl/cmd + ->
10321
+ if (evt.ctrlKey || evt.metaKey) {
10322
+ var rightDelta = this._lines[this._cursorInfo.currentLineIndex].text.length - this._cursorInfo.relativeEndIndex - 1;
10323
+ this._cursorInfo.globalEndIndex += rightDelta;
10324
+ this._cursorInfo.globalStartIndex = this._highlightCursorInfo.initialStartIndex;
10325
+ }
10326
+ // store the starting point
10327
+ if (!this._isTextHighlightOn) {
10328
+ this._highlightCursorInfo.initialLineIndex = this._cursorInfo.currentLineIndex;
10329
+ this._highlightCursorInfo.initialStartIndex = this._cursorInfo.globalStartIndex;
10330
+ this._highlightCursorInfo.initialRelativeStartIndex = this._cursorInfo.relativeStartIndex;
10331
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10332
+ this._cursorInfo.globalEndIndex++;
10333
+ this._isTextHighlightOn = true;
10334
+ }
10335
+ else {
10336
+ if (this._cursorInfo.globalStartIndex < this._highlightCursorInfo.initialStartIndex) {
10337
+ this._cursorInfo.globalStartIndex++;
10338
+ }
10339
+ else {
10340
+ this._cursorInfo.globalEndIndex++;
10341
+ }
10342
+ }
10343
+ this._blinkIsEven = true;
10344
+ evt.preventDefault();
10345
+ return;
10346
+ }
10347
+ if (this._isTextHighlightOn) {
10348
+ this._cursorInfo.globalStartIndex = this._cursorInfo.globalEndIndex;
10349
+ }
10350
+ else if (evt && (evt.ctrlKey || evt.metaKey)) {
10351
+ //ctr + ->
10352
+ var rightDelta = this._lines[this._cursorInfo.currentLineIndex].text.length - this._cursorInfo.relativeEndIndex;
10353
+ this._cursorInfo.globalStartIndex += rightDelta;
10354
+ }
10355
+ else if (this._cursorInfo.globalStartIndex < this.text.length) {
10356
+ this._cursorInfo.globalStartIndex++;
10357
+ }
10358
+ // update the cursor
10359
+ this._blinkIsEven = false;
10360
+ this._isTextHighlightOn = false;
10361
+ return;
10362
+ case "ArrowUp": // UP
10363
+ // update the cursor
10364
+ this._blinkIsEven = false;
10365
+ if (evt) {
10366
+ if (evt.shiftKey) {
10367
+ if (!this._isTextHighlightOn) {
10368
+ this._highlightCursorInfo.initialLineIndex = this._cursorInfo.currentLineIndex;
10369
+ this._highlightCursorInfo.initialStartIndex = this._cursorInfo.globalStartIndex;
10370
+ this._highlightCursorInfo.initialRelativeStartIndex = this._cursorInfo.relativeStartIndex;
10371
+ }
10372
+ this._isTextHighlightOn = true;
10373
+ this._blinkIsEven = true;
10374
+ }
10375
+ else {
10376
+ this._isTextHighlightOn = false;
10377
+ }
10378
+ evt.preventDefault();
10379
+ }
10380
+ if (this._cursorInfo.currentLineIndex === 0) {
10381
+ // First line
10382
+ this._cursorInfo.globalStartIndex = 0;
10383
+ }
10384
+ else {
10385
+ var currentLine = this._lines[this._cursorInfo.currentLineIndex];
10386
+ var upperLine = this._lines[this._cursorInfo.currentLineIndex - 1];
10387
+ var tmpIndex = 0;
10388
+ var relativeIndex = 0;
10389
+ if (!this._isTextHighlightOn || this._cursorInfo.currentLineIndex < this._highlightCursorInfo.initialLineIndex) {
10390
+ tmpIndex = this._cursorInfo.globalStartIndex;
10391
+ relativeIndex = this._cursorInfo.relativeStartIndex;
10392
+ }
10393
+ else {
10394
+ tmpIndex = this._cursorInfo.globalEndIndex;
10395
+ relativeIndex = this._cursorInfo.relativeEndIndex;
10396
+ }
10397
+ var currentText = currentLine.text.substr(0, relativeIndex);
10398
+ var currentWidth = this._contextForBreakLines.measureText(currentText).width;
10399
+ var upperWidth = 0;
10400
+ var previousWidth = 0;
10401
+ tmpIndex -= relativeIndex; // Start of current line
10402
+ tmpIndex -= upperLine.text.length + upperLine.lineEnding.length; // Start of upper line
10403
+ var upperLineRelativeIndex = 0;
10404
+ while (upperWidth < currentWidth && upperLineRelativeIndex < upperLine.text.length) {
10405
+ tmpIndex++;
10406
+ upperLineRelativeIndex++;
10407
+ previousWidth = Math.abs(currentWidth - upperWidth);
10408
+ upperWidth = this._contextForBreakLines.measureText(upperLine.text.substr(0, upperLineRelativeIndex)).width;
10409
+ }
10410
+ // Find closest move
10411
+ if (Math.abs(currentWidth - upperWidth) > previousWidth && upperLineRelativeIndex > 0) {
10412
+ tmpIndex--;
10413
+ }
10414
+ if (!this._isTextHighlightOn) {
10415
+ this._cursorInfo.globalStartIndex = tmpIndex;
10416
+ }
10417
+ else if (this._cursorInfo.currentLineIndex <= this._highlightCursorInfo.initialLineIndex) {
10418
+ this._cursorInfo.globalStartIndex = tmpIndex;
10419
+ this._cursorInfo.globalEndIndex = this._highlightCursorInfo.initialStartIndex;
10420
+ this._cursorInfo.relativeEndIndex = this._highlightCursorInfo.initialRelativeStartIndex;
10421
+ }
10422
+ else {
10423
+ this._cursorInfo.globalEndIndex = tmpIndex;
10424
+ }
10425
+ }
10426
+ this._markAsDirty();
10427
+ return;
10428
+ case "ArrowDown": // DOWN
10429
+ // update the cursor
10430
+ this._blinkIsEven = false;
10431
+ if (evt) {
10432
+ if (evt.shiftKey) {
10433
+ if (!this._isTextHighlightOn) {
10434
+ this._highlightCursorInfo.initialLineIndex = this._cursorInfo.currentLineIndex;
10435
+ this._highlightCursorInfo.initialStartIndex = this._cursorInfo.globalStartIndex;
10436
+ this._highlightCursorInfo.initialRelativeStartIndex = this._cursorInfo.relativeStartIndex;
10437
+ }
10438
+ this._isTextHighlightOn = true;
10439
+ this._blinkIsEven = true;
10440
+ }
10441
+ else {
10442
+ this._isTextHighlightOn = false;
10443
+ }
10444
+ evt.preventDefault();
10445
+ }
10446
+ if (this._cursorInfo.currentLineIndex === this._lines.length - 1) {
10447
+ // Last line
10448
+ this._cursorInfo.globalStartIndex = this.text.length;
10449
+ }
10450
+ else {
10451
+ var currentLine = this._lines[this._cursorInfo.currentLineIndex];
10452
+ var underLine = this._lines[this._cursorInfo.currentLineIndex + 1];
10453
+ var tmpIndex = 0;
10454
+ var relativeIndex = 0;
10455
+ if (!this._isTextHighlightOn || this._cursorInfo.currentLineIndex < this._highlightCursorInfo.initialLineIndex) {
10456
+ tmpIndex = this._cursorInfo.globalStartIndex;
10457
+ relativeIndex = this._cursorInfo.relativeStartIndex;
10458
+ }
10459
+ else {
10460
+ tmpIndex = this._cursorInfo.globalEndIndex;
10461
+ relativeIndex = this._cursorInfo.relativeEndIndex;
10462
+ }
10463
+ var currentText = currentLine.text.substr(0, relativeIndex);
10464
+ var currentWidth = this._contextForBreakLines.measureText(currentText).width;
10465
+ var underWidth = 0;
10466
+ var previousWidth = 0;
10467
+ tmpIndex += currentLine.text.length - relativeIndex + currentLine.lineEnding.length; // Start of current line
10468
+ var underLineRelativeIndex = 0;
10469
+ while (underWidth < currentWidth && underLineRelativeIndex < underLine.text.length) {
10470
+ tmpIndex++;
10471
+ underLineRelativeIndex++;
10472
+ previousWidth = Math.abs(currentWidth - underWidth);
10473
+ underWidth = this._contextForBreakLines.measureText(underLine.text.substr(0, underLineRelativeIndex)).width;
10474
+ }
10475
+ // Find closest move
10476
+ if (Math.abs(currentWidth - underWidth) > previousWidth && underLineRelativeIndex > 0) {
10477
+ tmpIndex--;
10478
+ }
10479
+ if (!this._isTextHighlightOn) {
10480
+ this._cursorInfo.globalStartIndex = tmpIndex;
10481
+ }
10482
+ else if (this._cursorInfo.currentLineIndex < this._highlightCursorInfo.initialLineIndex) {
10483
+ this._cursorInfo.globalStartIndex = tmpIndex;
10484
+ if (this._cursorInfo.globalStartIndex > this._cursorInfo.globalEndIndex) {
10485
+ this._cursorInfo.globalEndIndex += this._cursorInfo.globalStartIndex;
10486
+ this._cursorInfo.globalStartIndex = this._cursorInfo.globalEndIndex - this._cursorInfo.globalStartIndex;
10487
+ this._cursorInfo.globalEndIndex -= this._cursorInfo.globalStartIndex;
10488
+ }
10489
+ }
10490
+ else {
10491
+ this._cursorInfo.globalEndIndex = tmpIndex;
10492
+ this._cursorInfo.globalStartIndex = this._highlightCursorInfo.initialStartIndex;
10493
+ }
10494
+ }
10495
+ this._markAsDirty();
10496
+ return;
10497
+ }
10498
+ // Printable characters
10499
+ if ((key === null || key === void 0 ? void 0 : key.length) === 1) {
10500
+ evt === null || evt === void 0 ? void 0 : evt.preventDefault();
10501
+ this._currentKey = key;
10502
+ this.onBeforeKeyAddObservable.notifyObservers(this);
10503
+ key = this._currentKey;
10504
+ if (this._addKey) {
10505
+ this._isTextHighlightOn = false;
10506
+ this._blinkIsEven = false;
10507
+ this._textWrapper.removePart(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex, key);
10508
+ this._cursorInfo.globalStartIndex += key.length;
10509
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10510
+ this._textHasChanged();
10511
+ }
10512
+ }
10513
+ };
10514
+ InputTextArea.prototype._parseLineWordWrap = function (line, width, context) {
10515
+ if (line === void 0) { line = ""; }
10516
+ var lines = [];
10517
+ var words = line.split(" ");
10518
+ var lineWidth = 0;
10519
+ var _loop_1 = function (n) {
10520
+ var testLine = n > 0 ? line + " " + words[n] : words[0];
10521
+ var metrics = context.measureText(testLine);
10522
+ var testWidth = metrics.width;
10523
+ if (testWidth > width) {
10524
+ if (n > 0) {
10525
+ // Avoid first word duplication if of too long
10526
+ lineWidth = context.measureText(line).width;
10527
+ lines.push({ text: line, width: lineWidth, lineEnding: " " });
10528
+ }
10529
+ line = words[n];
10530
+ var flushedLine_1 = "";
10531
+ line.split("").map(function (char) {
10532
+ if (context.measureText(flushedLine_1 + char).width > width) {
10533
+ lines.push({ text: flushedLine_1, width: context.measureText(flushedLine_1).width, lineEnding: "\n" });
10534
+ flushedLine_1 = "";
10535
+ }
10536
+ flushedLine_1 += char;
10537
+ });
10538
+ line = flushedLine_1;
10539
+ // Measure remaining characters
10540
+ lineWidth = context.measureText(line).width;
10541
+ }
10542
+ else {
10543
+ lineWidth = testWidth;
10544
+ line = testLine;
10545
+ }
10546
+ };
10547
+ for (var n = 0; n < words.length; n++) {
10548
+ _loop_1(n);
10549
+ }
10550
+ lines.push({ text: line, width: lineWidth, lineEnding: " " });
10551
+ return lines;
10552
+ };
10553
+ InputTextArea.prototype._breakLines = function (refWidth, context) {
10554
+ var lines = [];
10555
+ var _lines = this.text.split("\n");
10556
+ if (this.clipContent) {
10557
+ for (var _i = 0, _lines_1 = _lines; _i < _lines_1.length; _i++) {
10558
+ var _line = _lines_1[_i];
10559
+ lines.push.apply(lines, this._parseLineWordWrap(_line, refWidth, context));
10560
+ }
10561
+ }
10562
+ else {
10563
+ for (var _a = 0, _lines_2 = _lines; _a < _lines_2.length; _a++) {
10564
+ var _line = _lines_2[_a];
10565
+ lines.push(this._parseLine(_line, context));
10566
+ }
10567
+ }
10568
+ lines[lines.length - 1].lineEnding = "\n";
10569
+ return lines;
10570
+ };
10571
+ InputTextArea.prototype._parseLine = function (line, context) {
10572
+ if (line === void 0) { line = ""; }
10573
+ return { text: line, width: context.measureText(line).width, lineEnding: " " };
10574
+ };
10575
+ /**
10576
+ * Processing of child right before the parent measurement update
10577
+ *
10578
+ * @param parentMeasure The parent measure
10579
+ * @param context The rendering canvas
10580
+ * @hidden
10581
+ */
10582
+ InputTextArea.prototype._preMeasure = function (parentMeasure, context) {
10583
+ if (!this._fontOffset || this._wasDirty) {
10584
+ this._fontOffset = _control__WEBPACK_IMPORTED_MODULE_2__.Control._GetFontOffset(context.font);
10585
+ }
10586
+ var text = this._beforeRenderText(this._textWrapper).text;
10587
+ // placeholder conditions and color setting
10588
+ if (!this._isFocused && !this.text && this._placeholderText) {
10589
+ text = this._placeholderText;
10590
+ if (this._placeholderColor) {
10591
+ context.fillStyle = this._placeholderColor;
10592
+ }
10593
+ }
10594
+ // measures the textlength -> this.measure.width
10595
+ this._textWidth = context.measureText(text).width;
10596
+ // we double up the margin width
10597
+ var marginWidth = this._margin.getValueInPixel(this._host, parentMeasure.width) * 2;
10598
+ if (this._autoStretchWidth) {
10599
+ var tmpLines = text.split("\n");
10600
+ var longerString = tmpLines.reduce(function (acc, val) {
10601
+ var valueLength = context.measureText(val).width;
10602
+ var accLength = context.measureText(acc).width;
10603
+ return valueLength > accLength ? val : acc;
10604
+ }, "");
10605
+ var longerStringWidth = context.measureText(longerString).width;
10606
+ this.width = Math.min(this._maxWidth.getValueInPixel(this._host, parentMeasure.width), longerStringWidth + marginWidth) + "px";
10607
+ this.autoStretchWidth = true;
10608
+ }
10609
+ this._availableWidth = this._width.getValueInPixel(this._host, parentMeasure.width) - marginWidth;
10610
+ // Prepare lines
10611
+ this._lines = this._breakLines(this._availableWidth, context);
10612
+ // can we find a cleaner implementation here?
10613
+ this._contextForBreakLines = context;
10614
+ if (this._autoStretchHeight) {
10615
+ var textHeight = this._lines.length * this._fontOffset.height;
10616
+ var totalHeight = textHeight + this._margin.getValueInPixel(this._host, parentMeasure.height) * 2;
10617
+ this.height = Math.min(this._maxHeight.getValueInPixel(this._host, parentMeasure.height), totalHeight) + "px";
10618
+ this._autoStretchHeight = true;
10619
+ }
10620
+ this._availableHeight = this._height.getValueInPixel(this._host, parentMeasure.height) - marginWidth;
10621
+ if (this._isFocused) {
10622
+ this._cursorInfo.currentLineIndex = 0;
10623
+ var lineLength = this._lines[this._cursorInfo.currentLineIndex].text.length + this._lines[this._cursorInfo.currentLineIndex].lineEnding.length;
10624
+ var tmpLength = 0;
10625
+ while (tmpLength + lineLength <= this._cursorInfo.globalStartIndex) {
10626
+ tmpLength += lineLength;
10627
+ if (this._cursorInfo.currentLineIndex < this._lines.length - 1) {
10628
+ this._cursorInfo.currentLineIndex++;
10629
+ lineLength = this._lines[this._cursorInfo.currentLineIndex].text.length + this._lines[this._cursorInfo.currentLineIndex].lineEnding.length;
10630
+ }
10631
+ }
10632
+ }
10633
+ };
10634
+ /**
10635
+ * Processing of child after the parent measurement update
10636
+ *
10637
+ * @param parentMeasure The parent measure
10638
+ * @param context The rendering canvas
10639
+ * @hidden
10640
+ */
10641
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
10642
+ InputTextArea.prototype._additionalProcessing = function (parentMeasure, context) {
10643
+ this._clipTextLeft = this._currentMeasure.left + this._margin.getValueInPixel(this._host, parentMeasure.width);
10644
+ this._clipTextTop = this._currentMeasure.top + this._margin.getValueInPixel(this._host, parentMeasure.height);
10645
+ if (this._isFocused && this._lines[this._cursorInfo.currentLineIndex].width > this._availableWidth) {
10646
+ var textLeft = this._clipTextLeft - this._lines[this._cursorInfo.currentLineIndex].width + this._availableWidth;
10647
+ if (!this._scrollLeft) {
10648
+ this._scrollLeft = textLeft;
10649
+ }
10650
+ }
10651
+ else {
10652
+ this._scrollLeft = this._clipTextLeft;
10653
+ }
10654
+ if (this._isFocused && !this._autoStretchHeight) {
10655
+ var selectedHeight = (this._cursorInfo.currentLineIndex + 1) * this._fontOffset.height;
10656
+ var textTop = this._clipTextTop - selectedHeight;
10657
+ if (!this._scrollTop) {
10658
+ this._scrollTop = textTop;
10659
+ }
10660
+ }
10661
+ else {
10662
+ this._scrollTop = this._clipTextTop;
10663
+ }
10664
+ // Flush the highlighted text each frame
10665
+ this.highlightedText = "";
10666
+ this.onLinesReadyObservable.notifyObservers(this);
10667
+ };
10668
+ InputTextArea.prototype._drawText = function (text, textWidth, y, context) {
10669
+ var width = this._currentMeasure.width;
10670
+ var x = this._scrollLeft;
10671
+ switch (this._textHorizontalAlignment) {
10672
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_LEFT:
10673
+ x += 0;
10674
+ break;
10675
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_RIGHT:
10676
+ x += width - textWidth;
10677
+ break;
10678
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_CENTER:
10679
+ x += (width - textWidth) / 2;
10680
+ break;
10681
+ }
10682
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
10683
+ context.shadowColor = this.shadowColor;
10684
+ context.shadowBlur = this.shadowBlur;
10685
+ context.shadowOffsetX = this.shadowOffsetX;
10686
+ context.shadowOffsetY = this.shadowOffsetY;
10687
+ }
10688
+ if (this.outlineWidth) {
10689
+ context.strokeText(text, this._currentMeasure.left + x, y);
10690
+ }
10691
+ context.fillText(text, x, y);
10692
+ };
10693
+ /**
10694
+ * Copy the text in the clipboard
10695
+ *
10696
+ * @param ev The clipboard event
10697
+ * @hidden
10698
+ */
10699
+ InputTextArea.prototype._onCopyText = function (ev) {
10700
+ this._isTextHighlightOn = false;
10701
+ //when write permission to clipbaord data is denied
10702
+ try {
10703
+ ev.clipboardData && ev.clipboardData.setData("text/plain", this._highlightedText);
10704
+ }
10705
+ catch (_a) { } //pass
10706
+ this._host.clipboardData = this._highlightedText;
10707
+ };
10708
+ /**
10709
+ * Cut the text and copy it in the clipboard
10710
+ *
10711
+ * @param ev The clipboard event
10712
+ * @hidden
10713
+ */
10714
+ InputTextArea.prototype._onCutText = function (ev) {
10715
+ if (!this._highlightedText) {
10716
+ return;
10717
+ }
10718
+ //when write permission to clipbaord data is denied
10719
+ try {
10720
+ ev.clipboardData && ev.clipboardData.setData("text/plain", this._highlightedText);
10721
+ }
10722
+ catch (_a) { } //pass
10723
+ this._host.clipboardData = this._highlightedText;
10724
+ this._textWrapper.removePart(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex);
10725
+ this._textHasChanged();
10726
+ };
10727
+ /**
10728
+ * Paste the copied text from the clipboard
10729
+ *
10730
+ * @param ev The clipboard event
10731
+ * @hidden
10732
+ */
10733
+ InputTextArea.prototype._onPasteText = function (ev) {
10734
+ var data = "";
10735
+ if (ev.clipboardData && ev.clipboardData.types.indexOf("text/plain") !== -1) {
10736
+ data = ev.clipboardData.getData("text/plain");
10737
+ }
10738
+ else {
10739
+ //get the cached data; returns blank string by default
10740
+ data = this._host.clipboardData;
10741
+ }
10742
+ this._isTextHighlightOn = false;
10743
+ this._textWrapper.removePart(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex, data);
10744
+ var deltaIndex = data.length - (this._cursorInfo.globalEndIndex - this._cursorInfo.globalStartIndex);
10745
+ this._cursorInfo.globalStartIndex += deltaIndex;
10746
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
10747
+ this._textHasChanged();
10748
+ };
10749
+ InputTextArea.prototype._draw = function (context) {
10750
+ var _a, _b;
10751
+ this._scrollLeft = (_a = this._scrollLeft) !== null && _a !== void 0 ? _a : 0;
10752
+ this._scrollTop = (_b = this._scrollTop) !== null && _b !== void 0 ? _b : 0;
10753
+ context.save();
10754
+ this._applyStates(context);
10755
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
10756
+ context.shadowColor = this.shadowColor;
10757
+ context.shadowBlur = this.shadowBlur;
10758
+ context.shadowOffsetX = this.shadowOffsetX;
10759
+ context.shadowOffsetY = this.shadowOffsetY;
10760
+ }
10761
+ // Background
10762
+ if (this._isFocused) {
10763
+ if (this._focusedBackground) {
10764
+ context.fillStyle = this._isEnabled ? this._focusedBackground : this._disabledColor;
10765
+ context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
10766
+ }
10767
+ }
10768
+ else if (this._background) {
10769
+ context.fillStyle = this._isEnabled ? this._background : this._disabledColor;
10770
+ context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
10771
+ }
10772
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
10773
+ context.shadowBlur = 0;
10774
+ context.shadowOffsetX = 0;
10775
+ context.shadowOffsetY = 0;
10776
+ }
10777
+ // sets the color of the rectangle (border if background available)
10778
+ if (this.color) {
10779
+ context.fillStyle = this.color;
10780
+ }
10781
+ var height = this._currentMeasure.height;
10782
+ var width = this._currentMeasure.width;
10783
+ var rootY = 0;
10784
+ switch (this._textVerticalAlignment) {
10785
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.VERTICAL_ALIGNMENT_TOP:
10786
+ rootY = this._fontOffset.ascent;
10787
+ break;
10788
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.VERTICAL_ALIGNMENT_BOTTOM:
10789
+ rootY = height - this._fontOffset.height * (this._lines.length - 1) - this._fontOffset.descent;
10790
+ break;
10791
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.VERTICAL_ALIGNMENT_CENTER:
10792
+ rootY = this._fontOffset.ascent + (height - this._fontOffset.height * this._lines.length) / 2;
10793
+ break;
10794
+ }
10795
+ context.save();
10796
+ context.beginPath();
10797
+ context.fillStyle = this.fontStyle;
10798
+ // here we define the visible reactangle to clip it in next line
10799
+ context.rect(this._clipTextLeft, this._clipTextTop, this._availableWidth + 2, this._availableHeight + 2);
10800
+ context.clip();
10801
+ // Text
10802
+ rootY += this._scrollTop;
10803
+ for (var i = 0; i < this._lines.length; i++) {
10804
+ var line = this._lines[i];
10805
+ if (i !== 0 && this._lineSpacing.internalValue !== 0) {
10806
+ if (this._lineSpacing.isPixel) {
10807
+ rootY += this._lineSpacing.getValue(this._host);
10808
+ }
10809
+ else {
10810
+ rootY = rootY + this._lineSpacing.getValue(this._host) * this._height.getValueInPixel(this._host, this._cachedParentMeasure.height);
10811
+ }
10812
+ }
10813
+ this._drawText(line.text, line.width, rootY, context);
10814
+ rootY += this._fontOffset.height;
10815
+ }
10816
+ context.restore();
10817
+ // Cursor
10818
+ if (this._isFocused) {
10819
+ // Render cursor
10820
+ if (!this._blinkIsEven || this._isTextHighlightOn) {
10821
+ var cursorLeft = this._scrollLeft + context.measureText(this._lines[this._cursorInfo.currentLineIndex].text.substr(0, this._cursorInfo.relativeStartIndex)).width;
10822
+ if (cursorLeft < this._clipTextLeft) {
10823
+ this._scrollLeft += this._clipTextLeft - cursorLeft;
10824
+ cursorLeft = this._clipTextLeft;
10825
+ this._markAsDirty();
10826
+ }
10827
+ else if (cursorLeft > this._clipTextLeft + this._availableWidth) {
10828
+ this._scrollLeft += this._clipTextLeft + this._availableWidth - cursorLeft;
10829
+ cursorLeft = this._clipTextLeft + this._availableWidth;
10830
+ this._markAsDirty();
10831
+ }
10832
+ var cursorTop = this._scrollTop + this._cursorInfo.currentLineIndex * this._fontOffset.height; //cursorTop distance from top to cursor start
10833
+ if (cursorTop < this._clipTextTop) {
10834
+ this._scrollTop += this._clipTextTop - cursorTop;
10835
+ cursorTop = this._clipTextTop;
10836
+ this._markAsDirty();
10837
+ }
10838
+ else if (cursorTop + this._fontOffset.height > this._clipTextTop + this._availableHeight) {
10839
+ this._scrollTop += this._clipTextTop + this._availableHeight - cursorTop - this._fontOffset.height;
10840
+ cursorTop = this._clipTextTop + this._availableHeight - this._fontOffset.height;
10841
+ this._markAsDirty();
10842
+ }
10843
+ if (!this._isTextHighlightOn) {
10844
+ context.fillRect(cursorLeft, cursorTop, 2, this._fontOffset.height);
10845
+ }
10846
+ }
10847
+ this._resetBlinking();
10848
+ //show the highlighted text
10849
+ if (this._isTextHighlightOn) {
10850
+ clearTimeout(this._blinkTimeout);
10851
+ this._highlightedText = this.text.substring(this._cursorInfo.globalStartIndex, this._cursorInfo.globalEndIndex);
10852
+ context.globalAlpha = this._highligherOpacity;
10853
+ context.fillStyle = this._textHighlightColor;
10854
+ var startLineIndex = Math.min(this._cursorInfo.currentLineIndex, this._highlightCursorInfo.initialLineIndex);
10855
+ var endLineIndex = Math.max(this._cursorInfo.currentLineIndex, this._highlightCursorInfo.initialLineIndex);
10856
+ var highlightRootY = this._scrollTop + startLineIndex * this._fontOffset.height;
10857
+ for (var i = startLineIndex; i <= endLineIndex; i++) {
10858
+ var line = this._lines[i];
10859
+ var highlightRootX = this._scrollLeft;
10860
+ switch (this._textHorizontalAlignment) {
10861
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_LEFT:
10862
+ highlightRootX += 0;
10863
+ break;
10864
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_RIGHT:
10865
+ highlightRootX += width - line.width;
10866
+ break;
10867
+ case _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_CENTER:
10868
+ highlightRootX += (width - line.width) / 2;
10869
+ break;
10870
+ }
10871
+ var begin = i === startLineIndex ? this._cursorInfo.relativeStartIndex : 0;
10872
+ var end = i === endLineIndex ? this._cursorInfo.relativeEndIndex : line.text.length;
10873
+ var leftOffsetWidth = context.measureText(line.text.substr(0, begin)).width;
10874
+ var selectedText = line.text.substring(begin, end);
10875
+ var hightlightWidth = context.measureText(selectedText).width;
10876
+ context.fillRect(highlightRootX + leftOffsetWidth, highlightRootY, hightlightWidth, this._fontOffset.height);
10877
+ highlightRootY += this._fontOffset.height;
10878
+ }
10879
+ if (this._cursorInfo.globalEndIndex === this._cursorInfo.globalStartIndex) {
10880
+ this._resetBlinking();
10881
+ }
10882
+ }
10883
+ }
10884
+ context.restore();
10885
+ // Border
10886
+ if (this._thickness) {
10887
+ if (this._isFocused) {
10888
+ if (this.focusedColor) {
10889
+ context.strokeStyle = this.focusedColor;
10890
+ }
10891
+ }
10892
+ else {
10893
+ if (this.color) {
10894
+ context.strokeStyle = this.color;
10895
+ }
10896
+ }
10897
+ context.lineWidth = this._thickness;
10898
+ context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, this._currentMeasure.width - this._thickness, this._currentMeasure.height - this._thickness);
10899
+ }
10900
+ };
10901
+ InputTextArea.prototype._resetBlinking = function () {
10902
+ var _this = this;
10903
+ clearTimeout(this._blinkTimeout);
10904
+ this._blinkTimeout = setTimeout(function () {
10905
+ _this._blinkIsEven = !_this._blinkIsEven;
10906
+ _this._markAsDirty();
10907
+ }, 500);
10908
+ };
10909
+ InputTextArea.prototype._applyStates = function (context) {
10910
+ _super.prototype._applyStates.call(this, context);
10911
+ if (this.outlineWidth) {
10912
+ context.lineWidth = this.outlineWidth;
10913
+ context.strokeStyle = this.outlineColor;
10914
+ }
10915
+ };
10916
+ InputTextArea.prototype._onPointerDown = function (target, coordinates, pointerId, buttonIndex, pi) {
10917
+ if (!_super.prototype._onPointerDown.call(this, target, coordinates, pointerId, buttonIndex, pi)) {
10918
+ return false;
10919
+ }
10920
+ this._clickedCoordinateX = coordinates.x;
10921
+ this._clickedCoordinateY = coordinates.y;
10922
+ this._isTextHighlightOn = false;
10923
+ this._highlightedText = "";
10924
+ this._isPointerDown = true;
10925
+ this._host._capturingControl[pointerId] = this;
10926
+ if (this._host.focusedControl === this) {
10927
+ // Move cursor
10928
+ clearTimeout(this._blinkTimeout);
10929
+ this._markAsDirty();
10930
+ return true;
10931
+ }
10932
+ if (!this._isEnabled) {
10933
+ return false;
10934
+ }
10935
+ this._host.focusedControl = this;
10936
+ return true;
10937
+ };
10938
+ // for textselection
10939
+ InputTextArea.prototype._onPointerMove = function (target, coordinates, pointerId, pi) {
10940
+ // Avoid Chromium-like beahavior when this event is fired right after onPointerDown
10941
+ if (pi.event.movementX === 0 && pi.event.movementY === 0) {
10942
+ return;
10943
+ }
10944
+ if (this._host.focusedControl === this && this._isPointerDown) {
10945
+ this._clickedCoordinateX = coordinates.x;
10946
+ this._clickedCoordinateY = coordinates.y;
10947
+ if (!this._isTextHighlightOn) {
10948
+ this._highlightCursorInfo.initialLineIndex = this._cursorInfo.currentLineIndex;
10949
+ this._highlightCursorInfo.initialStartIndex = this._cursorInfo.globalStartIndex;
10950
+ this._highlightCursorInfo.initialRelativeStartIndex = this._cursorInfo.relativeStartIndex;
10951
+ this._isTextHighlightOn = true;
10952
+ }
10953
+ this._markAsDirty();
10954
+ }
10955
+ _super.prototype._onPointerMove.call(this, target, coordinates, pointerId, pi);
10956
+ };
10957
+ /**
10958
+ * Apply the correct position of cursor according to current modification
10959
+ */
10960
+ InputTextArea.prototype._updateCursorPosition = function () {
10961
+ var _a;
10962
+ if (!this._isFocused) {
10963
+ return;
10964
+ }
10965
+ if (this._clickedCoordinateX && this._clickedCoordinateY) {
10966
+ if (!this._isTextHighlightOn) {
10967
+ this._cursorInfo = {
10968
+ globalStartIndex: 0,
10969
+ globalEndIndex: 0,
10970
+ relativeStartIndex: 0,
10971
+ relativeEndIndex: 0,
10972
+ currentLineIndex: 0,
10973
+ };
10974
+ }
10975
+ var globalIndex = 0;
10976
+ var relativeIndex = 0;
10977
+ var lastClickedCoordinateY = this._clickedCoordinateY - this._scrollTop;
10978
+ var relativeCoordinateY = Math.floor(lastClickedCoordinateY / this._fontOffset.height);
10979
+ this._cursorInfo.currentLineIndex = Math.min(Math.max(relativeCoordinateY, 0), this._lines.length - 1);
10980
+ var currentSize = 0;
10981
+ var relativeXPosition = this._clickedCoordinateX - ((_a = this._scrollLeft) !== null && _a !== void 0 ? _a : 0);
10982
+ var previousDist = 0;
10983
+ for (var index = 0; index < this._cursorInfo.currentLineIndex; index++) {
10984
+ var line = this._lines[index];
10985
+ globalIndex += line.text.length + line.lineEnding.length;
10986
+ }
10987
+ while (currentSize < relativeXPosition && this._lines[this._cursorInfo.currentLineIndex].text.length > relativeIndex) {
10988
+ relativeIndex++;
10989
+ previousDist = Math.abs(relativeXPosition - currentSize);
10990
+ currentSize = this._contextForBreakLines.measureText(this._lines[this._cursorInfo.currentLineIndex].text.substr(0, relativeIndex)).width;
10991
+ }
10992
+ // Find closest move
10993
+ if (Math.abs(relativeXPosition - currentSize) > previousDist && relativeIndex > 0) {
10994
+ relativeIndex--;
10995
+ }
10996
+ globalIndex += relativeIndex;
10997
+ if (!this._isTextHighlightOn) {
10998
+ this._cursorInfo.globalStartIndex = globalIndex;
10999
+ this._cursorInfo.relativeStartIndex = relativeIndex;
11000
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
11001
+ this._cursorInfo.relativeEndIndex = this._cursorInfo.relativeStartIndex;
11002
+ }
11003
+ else {
11004
+ if (globalIndex < this._highlightCursorInfo.initialStartIndex) {
11005
+ this._cursorInfo.globalStartIndex = globalIndex;
11006
+ this._cursorInfo.relativeStartIndex = relativeIndex;
11007
+ this._cursorInfo.globalEndIndex = this._highlightCursorInfo.initialStartIndex;
11008
+ this._cursorInfo.relativeEndIndex = this._highlightCursorInfo.initialRelativeStartIndex;
11009
+ }
11010
+ else {
11011
+ this._cursorInfo.globalStartIndex = this._highlightCursorInfo.initialStartIndex;
11012
+ this._cursorInfo.relativeStartIndex = this._highlightCursorInfo.initialRelativeStartIndex;
11013
+ this._cursorInfo.globalEndIndex = globalIndex;
11014
+ this._cursorInfo.relativeEndIndex = relativeIndex;
11015
+ }
11016
+ }
11017
+ // Avoid the caret during highlighting
11018
+ this._blinkIsEven = this._isTextHighlightOn;
11019
+ this._clickedCoordinateX = null;
11020
+ this._clickedCoordinateY = null;
11021
+ }
11022
+ else {
11023
+ // Standard behavior same as Current line is at least above the initial highlight index
11024
+ this._cursorInfo.relativeStartIndex = 0;
11025
+ this._cursorInfo.currentLineIndex = 0;
11026
+ var lineLength = this._lines[this._cursorInfo.currentLineIndex].text.length + this._lines[this._cursorInfo.currentLineIndex].lineEnding.length;
11027
+ var tmpLength = 0;
11028
+ while (tmpLength + lineLength <= this._cursorInfo.globalStartIndex) {
11029
+ tmpLength += lineLength;
11030
+ if (this._cursorInfo.currentLineIndex < this._lines.length - 1) {
11031
+ this._cursorInfo.currentLineIndex++;
11032
+ lineLength = this._lines[this._cursorInfo.currentLineIndex].text.length + this._lines[this._cursorInfo.currentLineIndex].lineEnding.length;
11033
+ }
11034
+ }
11035
+ this._cursorInfo.relativeStartIndex = this._cursorInfo.globalStartIndex - tmpLength;
11036
+ if (this._highlightCursorInfo.initialStartIndex !== -1 && this._cursorInfo.globalStartIndex >= this._highlightCursorInfo.initialStartIndex) {
11037
+ // Current line is at least below the initial highlight index
11038
+ while (tmpLength + lineLength <= this._cursorInfo.globalEndIndex) {
11039
+ tmpLength += lineLength;
11040
+ if (this._cursorInfo.currentLineIndex < this._lines.length - 1) {
11041
+ this._cursorInfo.currentLineIndex++;
11042
+ lineLength = this._lines[this._cursorInfo.currentLineIndex].text.length + this._lines[this._cursorInfo.currentLineIndex].lineEnding.length;
11043
+ }
11044
+ }
11045
+ this._cursorInfo.relativeEndIndex = this._cursorInfo.globalEndIndex - tmpLength;
11046
+ }
11047
+ else if (!this._isTextHighlightOn) {
11048
+ this._cursorInfo.relativeEndIndex = this._cursorInfo.relativeStartIndex;
11049
+ this._cursorInfo.globalEndIndex = this._cursorInfo.globalStartIndex;
11050
+ }
11051
+ }
11052
+ };
11053
+ /**
11054
+ * Update all values of cursor information based on cursorIndex value
11055
+ *
11056
+ * @param offset The index to take care of
11057
+ * @hidden
11058
+ */
11059
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
11060
+ InputTextArea.prototype._updateValueFromCursorIndex = function (offset) {
11061
+ // Override to avoid parent behavior during _onPointerMove
11062
+ };
11063
+ /**
11064
+ * Select the word immediatly under the cursor on double click
11065
+ *
11066
+ * @param _evt Pointer informations of double click
11067
+ * @hidden
11068
+ */
11069
+ InputTextArea.prototype._processDblClick = function (_evt) {
11070
+ //pre-find the start and end index of the word under cursor, speeds up the rendering
11071
+ var moveLeft, moveRight;
11072
+ do {
11073
+ moveLeft = this._cursorInfo.globalStartIndex > 0 && this._textWrapper.isWord(this._cursorInfo.globalStartIndex - 1) ? --this._cursorInfo.globalStartIndex : 0;
11074
+ moveRight =
11075
+ this._cursorInfo.globalEndIndex < this._textWrapper.length && this._textWrapper.isWord(this._cursorInfo.globalEndIndex) ? ++this._cursorInfo.globalEndIndex : 0;
11076
+ } while (moveLeft || moveRight);
11077
+ this._highlightCursorInfo.initialLineIndex = this._cursorInfo.currentLineIndex;
11078
+ this._highlightCursorInfo.initialStartIndex = this._cursorInfo.globalStartIndex;
11079
+ this.onTextHighlightObservable.notifyObservers(this);
11080
+ this._isTextHighlightOn = true;
11081
+ this._blinkIsEven = true;
11082
+ this._markAsDirty();
11083
+ };
11084
+ /** @hidden */
11085
+ InputTextArea.prototype._selectAllText = function () {
11086
+ this._isTextHighlightOn = true;
11087
+ this._blinkIsEven = true;
11088
+ this._highlightCursorInfo = {
11089
+ initialStartIndex: 0,
11090
+ initialRelativeStartIndex: 0,
11091
+ initialLineIndex: 0,
11092
+ };
11093
+ this._cursorInfo = {
11094
+ globalStartIndex: 0,
11095
+ globalEndIndex: this._textWrapper.length,
11096
+ relativeEndIndex: this._lines[this._lines.length - 1].text.length,
11097
+ relativeStartIndex: 0,
11098
+ currentLineIndex: this._lines.length - 1,
11099
+ };
11100
+ this._markAsDirty();
11101
+ };
11102
+ InputTextArea.prototype.dipose = function () {
11103
+ _super.prototype.dispose.call(this);
11104
+ this.onLinesReadyObservable.clear();
11105
+ };
11106
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11107
+ (0,core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11108
+ ], InputTextArea.prototype, "autoStretchHeight", null);
11109
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11110
+ (0,core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11111
+ ], InputTextArea.prototype, "maxHeight", null);
11112
+ return InputTextArea;
11113
+ }(_inputText__WEBPACK_IMPORTED_MODULE_4__.InputText));
11114
+
11115
+ (0,core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.RegisterClass)("BABYLON.GUI.InputTextArea", InputTextArea);
11116
+
11117
+
11118
+ /***/ }),
11119
+
11120
+ /***/ "../../../lts/gui/dist/2D/controls/line.js":
11121
+ /*!*************************************************!*\
11122
+ !*** ../../../lts/gui/dist/2D/controls/line.js ***!
11123
+ \*************************************************/
11124
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
11125
+
11126
+ __webpack_require__.r(__webpack_exports__);
11127
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
11128
+ /* harmony export */ "Line": () => (/* binding */ Line)
11129
+ /* harmony export */ });
11130
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../../../node_modules/tslib/tslib.es6.js");
11131
+ /* harmony import */ var core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core/Misc/decorators */ "core/Misc/observable");
11132
+ /* harmony import */ var core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__);
11133
+ /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "../../../lts/gui/dist/2D/controls/control.js");
11134
+ /* harmony import */ var _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../valueAndUnit */ "../../../lts/gui/dist/2D/valueAndUnit.js");
11135
+
11136
+
11137
+
11138
+
11139
+
11140
+
11141
+
11142
+ /** Class used to render 2D lines */
11143
+ var Line = /** @class */ (function (_super) {
11144
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(Line, _super);
11145
+ /**
11146
+ * Creates a new Line
11147
+ * @param name defines the control name
11148
+ */
11149
+ function Line(name) {
11150
+ var _this = _super.call(this, name) || this;
11151
+ _this.name = name;
11152
+ _this._lineWidth = 1;
11153
+ _this._x1 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
11154
+ _this._y1 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
11155
+ _this._x2 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
11156
+ _this._y2 = new _valueAndUnit__WEBPACK_IMPORTED_MODULE_3__.ValueAndUnit(0);
11157
+ _this._dash = new Array();
11158
+ _this._automaticSize = true;
11159
+ _this.isHitTestVisible = false;
11160
+ _this._horizontalAlignment = _control__WEBPACK_IMPORTED_MODULE_2__.Control.HORIZONTAL_ALIGNMENT_LEFT;
11161
+ _this._verticalAlignment = _control__WEBPACK_IMPORTED_MODULE_2__.Control.VERTICAL_ALIGNMENT_TOP;
11162
+ return _this;
11163
+ }
11164
+ Object.defineProperty(Line.prototype, "dash", {
11165
+ /** Gets or sets the dash pattern */
11166
+ get: function () {
11167
+ return this._dash;
11168
+ },
11169
+ set: function (value) {
11170
+ if (this._dash === value) {
11171
+ return;
11172
+ }
11173
+ this._dash = value;
11174
+ this._markAsDirty();
11175
+ },
11176
+ enumerable: false,
11177
+ configurable: true
11178
+ });
11179
+ Object.defineProperty(Line.prototype, "connectedControl", {
11180
+ /** Gets or sets the control connected with the line end */
11181
+ get: function () {
11182
+ return this._connectedControl;
11183
+ },
11184
+ set: function (value) {
11185
+ var _this = this;
11186
+ if (this._connectedControl === value) {
11187
+ return;
11188
+ }
11189
+ if (this._connectedControlDirtyObserver && this._connectedControl) {
11190
+ this._connectedControl.onDirtyObservable.remove(this._connectedControlDirtyObserver);
11191
+ this._connectedControlDirtyObserver = null;
11192
+ }
11193
+ if (value) {
11194
+ this._connectedControlDirtyObserver = value.onDirtyObservable.add(function () { return _this._markAsDirty(); });
11195
+ }
11196
+ this._connectedControl = value;
11197
+ this._markAsDirty();
11198
+ },
11199
+ enumerable: false,
11200
+ configurable: true
11201
+ });
11202
+ Object.defineProperty(Line.prototype, "x1", {
11203
+ /** Gets or sets start coordinates on X axis */
11204
+ get: function () {
11205
+ return this._x1.toString(this._host);
11206
+ },
11207
+ set: function (value) {
11208
+ if (this._x1.toString(this._host) === value) {
11209
+ return;
11210
+ }
11211
+ if (this._x1.fromString(value)) {
11212
+ this._markAsDirty();
11213
+ }
11214
+ },
11215
+ enumerable: false,
11216
+ configurable: true
11217
+ });
11218
+ Object.defineProperty(Line.prototype, "y1", {
11219
+ /** Gets or sets start coordinates on Y axis */
11220
+ get: function () {
11221
+ return this._y1.toString(this._host);
11222
+ },
11223
+ set: function (value) {
11224
+ if (this._y1.toString(this._host) === value) {
11225
+ return;
11226
+ }
11227
+ if (this._y1.fromString(value)) {
11228
+ this._markAsDirty();
11229
+ }
11230
+ },
11231
+ enumerable: false,
11232
+ configurable: true
11233
+ });
11234
+ Object.defineProperty(Line.prototype, "x2", {
11235
+ /** Gets or sets end coordinates on X axis */
11236
+ get: function () {
11237
+ return this._x2.toString(this._host);
11238
+ },
11239
+ set: function (value) {
11240
+ if (this._x2.toString(this._host) === value) {
11241
+ return;
11242
+ }
11243
+ if (this._x2.fromString(value)) {
11244
+ this._markAsDirty();
11245
+ }
11246
+ },
11247
+ enumerable: false,
11248
+ configurable: true
11249
+ });
11250
+ Object.defineProperty(Line.prototype, "y2", {
11251
+ /** Gets or sets end coordinates on Y axis */
11252
+ get: function () {
11253
+ return this._y2.toString(this._host);
11254
+ },
11255
+ set: function (value) {
11256
+ if (this._y2.toString(this._host) === value) {
11257
+ return;
11258
+ }
11259
+ if (this._y2.fromString(value)) {
11260
+ this._markAsDirty();
11261
+ }
11262
+ },
11263
+ enumerable: false,
11264
+ configurable: true
11265
+ });
11266
+ Object.defineProperty(Line.prototype, "lineWidth", {
11267
+ /** Gets or sets line width */
11268
+ get: function () {
11269
+ return this._lineWidth;
11270
+ },
11271
+ set: function (value) {
11272
+ if (this._lineWidth === value) {
11273
+ return;
11274
+ }
11275
+ this._lineWidth = value;
11276
+ this._markAsDirty();
11277
+ },
11278
+ enumerable: false,
11279
+ configurable: true
11280
+ });
11281
+ Object.defineProperty(Line.prototype, "horizontalAlignment", {
11282
+ /** Gets or sets horizontal alignment */
11283
+ set: function (value) {
11284
+ return;
11285
+ },
11286
+ enumerable: false,
11287
+ configurable: true
11288
+ });
11289
+ Object.defineProperty(Line.prototype, "verticalAlignment", {
11290
+ /** Gets or sets vertical alignment */
11291
+ set: function (value) {
11292
+ return;
11293
+ },
11294
+ enumerable: false,
11295
+ configurable: true
11296
+ });
11297
+ Object.defineProperty(Line.prototype, "_effectiveX2", {
11298
+ get: function () {
11299
+ return (this._connectedControl ? this._connectedControl.centerX : 0) + this._x2.getValue(this._host);
11300
+ },
11301
+ enumerable: false,
11302
+ configurable: true
11303
+ });
11304
+ Object.defineProperty(Line.prototype, "_effectiveY2", {
11305
+ get: function () {
11306
+ return (this._connectedControl ? this._connectedControl.centerY : 0) + this._y2.getValue(this._host);
11307
+ },
11308
+ enumerable: false,
11309
+ configurable: true
11310
+ });
11311
+ Line.prototype._getTypeName = function () {
11312
+ return "Line";
11313
+ };
11314
+ Line.prototype._draw = function (context) {
11315
+ context.save();
11316
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
11317
+ context.shadowColor = this.shadowColor;
11318
+ context.shadowBlur = this.shadowBlur;
11319
+ context.shadowOffsetX = this.shadowOffsetX;
11320
+ context.shadowOffsetY = this.shadowOffsetY;
11321
+ }
11322
+ this._applyStates(context);
11323
+ context.strokeStyle = this.color;
11324
+ context.lineWidth = this._lineWidth;
11325
+ context.setLineDash(this._dash);
11326
+ context.beginPath();
11327
+ context.moveTo(this._cachedParentMeasure.left + this._x1.getValue(this._host), this._cachedParentMeasure.top + this._y1.getValue(this._host));
11328
+ context.lineTo(this._cachedParentMeasure.left + this._effectiveX2, this._cachedParentMeasure.top + this._effectiveY2);
11329
+ context.stroke();
11330
+ context.restore();
11331
+ };
11332
+ Line.prototype._measure = function () {
11333
+ // Width / Height
11334
+ this._currentMeasure.width = Math.abs(this._x1.getValue(this._host) - this._effectiveX2) + this._lineWidth;
11335
+ this._currentMeasure.height = Math.abs(this._y1.getValue(this._host) - this._effectiveY2) + this._lineWidth;
11336
+ };
11337
+ Line.prototype._computeAlignment = function (parentMeasure) {
11338
+ this._currentMeasure.left = parentMeasure.left + Math.min(this._x1.getValue(this._host), this._effectiveX2) - this._lineWidth / 2;
11339
+ this._currentMeasure.top = parentMeasure.top + Math.min(this._y1.getValue(this._host), this._effectiveY2) - this._lineWidth / 2;
11340
+ };
11341
+ /**
11342
+ * Move one end of the line given 3D cartesian coordinates.
11343
+ * @param position Targeted world position
11344
+ * @param scene Scene
11345
+ * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.
11346
+ */
11347
+ Line.prototype.moveToVector3 = function (position, scene, end) {
11348
+ if (end === void 0) { end = false; }
11349
+ if (!this._host || this.parent !== this._host._rootContainer) {
11350
+ core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.Tools.Error("Cannot move a control to a vector3 if the control is not at root level");
11351
+ return;
11352
+ }
11353
+ var globalViewport = this._host._getGlobalViewport();
11354
+ var projectedPosition = core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.Vector3.Project(position, core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.Matrix.Identity(), scene.getTransformMatrix(), globalViewport);
11355
+ this._moveToProjectedPosition(projectedPosition, end);
11356
+ if (projectedPosition.z < 0 || projectedPosition.z > 1) {
11357
+ this.notRenderable = true;
11358
+ return;
11359
+ }
11360
+ this.notRenderable = false;
11361
+ };
11362
+ /**
11363
+ * Move one end of the line to a position in screen absolute space.
11364
+ * @param projectedPosition Position in screen absolute space (X, Y)
11365
+ * @param end (opt) Set to true to assign x2 and y2 coordinates of the line. Default assign to x1 and y1.
11366
+ */
11367
+ Line.prototype._moveToProjectedPosition = function (projectedPosition, end) {
11368
+ if (end === void 0) { end = false; }
11369
+ var x = projectedPosition.x + this._linkOffsetX.getValue(this._host) + "px";
11370
+ var y = projectedPosition.y + this._linkOffsetY.getValue(this._host) + "px";
11371
+ if (end) {
11372
+ this.x2 = x;
11373
+ this.y2 = y;
11374
+ this._x2.ignoreAdaptiveScaling = true;
11375
+ this._y2.ignoreAdaptiveScaling = true;
11376
+ }
11377
+ else {
11378
+ this.x1 = x;
11379
+ this.y1 = y;
11380
+ this._x1.ignoreAdaptiveScaling = true;
11381
+ this._y1.ignoreAdaptiveScaling = true;
11382
+ }
11383
+ };
11384
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11385
+ (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11386
+ ], Line.prototype, "dash", null);
11387
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11388
+ (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11389
+ ], Line.prototype, "x1", null);
11390
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11391
+ (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11392
+ ], Line.prototype, "y1", null);
11393
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11394
+ (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11395
+ ], Line.prototype, "x2", null);
11396
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11397
+ (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11398
+ ], Line.prototype, "y2", null);
11399
+ (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__decorate)([
11400
+ (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.serialize)()
11401
+ ], Line.prototype, "lineWidth", null);
11402
+ return Line;
11403
+ }(_control__WEBPACK_IMPORTED_MODULE_2__.Control));
11404
+
10301
11405
  (0,core_Maths_math_vector__WEBPACK_IMPORTED_MODULE_1__.RegisterClass)("BABYLON.GUI.Line", Line);
10302
11406
 
10303
11407
 
@@ -14871,6 +15975,9 @@ var TextBlock = /** @class */ (function (_super) {
14871
15975
  return lines;
14872
15976
  };
14873
15977
  TextBlock.prototype._renderLines = function (context) {
15978
+ if (!this._fontOffset || !this._lines) {
15979
+ return;
15980
+ }
14874
15981
  var height = this._currentMeasure.height;
14875
15982
  var rootY = 0;
14876
15983
  switch (this._textVerticalAlignment) {
@@ -15710,6 +16817,7 @@ __webpack_require__.r(__webpack_exports__);
15710
16817
  /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.ImageScrollBar),
15711
16818
  /* harmony export */ "InputPassword": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.InputPassword),
15712
16819
  /* harmony export */ "InputText": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.InputText),
16820
+ /* harmony export */ "InputTextArea": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.InputTextArea),
15713
16821
  /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.KeyPropertySet),
15714
16822
  /* harmony export */ "Line": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.Line),
15715
16823
  /* harmony export */ "Matrix2D": () => (/* reexport safe */ _math2D__WEBPACK_IMPORTED_MODULE_3__.Matrix2D),
@@ -26471,6 +27579,7 @@ __webpack_require__.r(__webpack_exports__);
26471
27579
  /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.ImageScrollBar),
26472
27580
  /* harmony export */ "InputPassword": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.InputPassword),
26473
27581
  /* harmony export */ "InputText": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.InputText),
27582
+ /* harmony export */ "InputTextArea": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.InputTextArea),
26474
27583
  /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.KeyPropertySet),
26475
27584
  /* harmony export */ "Line": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.Line),
26476
27585
  /* harmony export */ "MRDLBackplateMaterial": () => (/* reexport safe */ _3D_index__WEBPACK_IMPORTED_MODULE_1__.MRDLBackplateMaterial),
@@ -26569,6 +27678,7 @@ __webpack_require__.r(__webpack_exports__);
26569
27678
  /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.ImageScrollBar),
26570
27679
  /* harmony export */ "InputPassword": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.InputPassword),
26571
27680
  /* harmony export */ "InputText": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.InputText),
27681
+ /* harmony export */ "InputTextArea": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.InputTextArea),
26572
27682
  /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.KeyPropertySet),
26573
27683
  /* harmony export */ "Line": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.Line),
26574
27684
  /* harmony export */ "MRDLBackplateMaterial": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.MRDLBackplateMaterial),