babylonjs-gui 5.11.0 → 5.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
 
@@ -10011,6 +10025,1096 @@ var InputText = /** @class */ (function (_super) {
10011
10025
  (0,core_Misc_observable__WEBPACK_IMPORTED_MODULE_1__.RegisterClass)("BABYLON.GUI.InputText", InputText);
10012
10026
 
10013
10027
 
10028
+ /***/ }),
10029
+
10030
+ /***/ "../../../lts/gui/dist/2D/controls/inputTextArea.js":
10031
+ /*!**********************************************************!*\
10032
+ !*** ../../../lts/gui/dist/2D/controls/inputTextArea.js ***!
10033
+ \**********************************************************/
10034
+ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
10035
+
10036
+ __webpack_require__.r(__webpack_exports__);
10037
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
10038
+ /* harmony export */ "InputTextArea": () => (/* binding */ InputTextArea)
10039
+ /* harmony export */ });
10040
+ /* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "../../../../node_modules/tslib/tslib.es6.js");
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__);
10043
+ /* harmony import */ var _control__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./control */ "../../../lts/gui/dist/2D/controls/control.js");
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");
10046
+
10047
+
10048
+
10049
+
10050
+
10051
+
10052
+
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);
10058
+ /**
10059
+ * Creates a new InputTextArea
10060
+ * @param name defines the control name
10061
+ * @param text defines the text of the control
10062
+ */
10063
+ function InputTextArea(name, text) {
10064
+ if (text === void 0) { text = ""; }
10065
+ var _this = _super.call(this, name) || this;
10066
+ _this.name = name;
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
+ };
10092
+ return _this;
10093
+ }
10094
+ Object.defineProperty(InputTextArea.prototype, "outlineWidth", {
10095
+ /**
10096
+ * Gets or sets outlineWidth of the text to display
10097
+ */
10098
+ get: function () {
10099
+ return this._outlineWidth;
10100
+ },
10101
+ /**
10102
+ * Gets or sets outlineWidth of the text to display
10103
+ */
10104
+ set: function (value) {
10105
+ if (this._outlineWidth === value) {
10106
+ return;
10107
+ }
10108
+ this._outlineWidth = value;
10109
+ this._markAsDirty();
10110
+ },
10111
+ enumerable: false,
10112
+ configurable: true
10113
+ });
10114
+ Object.defineProperty(InputTextArea.prototype, "outlineColor", {
10115
+ /**
10116
+ * Gets or sets outlineColor of the text to display
10117
+ */
10118
+ get: function () {
10119
+ return this._outlineColor;
10120
+ },
10121
+ /**
10122
+ * Gets or sets outlineColor of the text to display
10123
+ */
10124
+ set: function (value) {
10125
+ if (this._outlineColor === value) {
10126
+ return;
10127
+ }
10128
+ this._outlineColor = value;
10129
+ this._markAsDirty();
10130
+ },
10131
+ enumerable: false,
10132
+ configurable: true
10133
+ });
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 */
10136
+ get: function () {
10137
+ return this._autoStretchHeight;
10138
+ },
10139
+ set: function (value) {
10140
+ if (this._autoStretchHeight === value) {
10141
+ return;
10142
+ }
10143
+ this._autoStretchHeight = value;
10144
+ this._markAsDirty();
10145
+ },
10146
+ enumerable: false,
10147
+ configurable: true
10148
+ });
10149
+ Object.defineProperty(InputTextArea.prototype, "height", {
10150
+ set: function (value) {
10151
+ this._fixedRatioMasterIsWidth = false;
10152
+ if (this._height.toString(this._host) === value) {
10153
+ return;
10154
+ }
10155
+ if (this._height.fromString(value)) {
10156
+ this._markAsDirty();
10157
+ }
10158
+ this._autoStretchHeight = false;
10159
+ },
10160
+ enumerable: false,
10161
+ configurable: true
10162
+ });
10163
+ Object.defineProperty(InputTextArea.prototype, "maxHeight", {
10164
+ get: function () {
10165
+ return this._maxHeight.toString(this._host);
10166
+ },
10167
+ set: function (value) {
10168
+ if (this._maxHeight.toString(this._host) === value) {
10169
+ return;
10170
+ }
10171
+ if (this._maxHeight.fromString(value)) {
10172
+ this._markAsDirty();
10173
+ }
10174
+ },
10175
+ enumerable: false,
10176
+ configurable: true
10177
+ });
10178
+ Object.defineProperty(InputTextArea.prototype, "maxHeightInPixels", {
10179
+ /** Gets the maximum width allowed by the control in pixels */
10180
+ get: function () {
10181
+ return this._maxHeight.getValueInPixel(this._host, this._cachedParentMeasure.height);
10182
+ },
10183
+ enumerable: false,
10184
+ configurable: true
10185
+ });
10186
+ InputTextArea.prototype._getTypeName = function () {
10187
+ return "InputTextArea";
10188
+ };
10189
+ /**
10190
+ * Handles the keyboard event
10191
+ * @param evt Defines the KeyboardEvent
10192
+ */
10193
+ InputTextArea.prototype.processKeyboard = function (evt) {
10194
+ // process pressed key
10195
+ this.alternativeProcessKey(evt.code, evt.key, evt);
10196
+ this.onKeyboardEventProcessedObservable.notifyObservers(evt);
10197
+ };
10198
+ /**
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
10205
+ */
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;
10210
+ }
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
+
10014
11118
  /***/ }),
10015
11119
 
10016
11120
  /***/ "../../../lts/gui/dist/2D/controls/line.js":
@@ -14871,7 +15975,7 @@ var TextBlock = /** @class */ (function (_super) {
14871
15975
  return lines;
14872
15976
  };
14873
15977
  TextBlock.prototype._renderLines = function (context) {
14874
- if (!this._fontOffset) {
15978
+ if (!this._fontOffset || !this._lines) {
14875
15979
  return;
14876
15980
  }
14877
15981
  var height = this._currentMeasure.height;
@@ -15713,6 +16817,7 @@ __webpack_require__.r(__webpack_exports__);
15713
16817
  /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.ImageScrollBar),
15714
16818
  /* harmony export */ "InputPassword": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.InputPassword),
15715
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),
15716
16821
  /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.KeyPropertySet),
15717
16822
  /* harmony export */ "Line": () => (/* reexport safe */ _controls_index__WEBPACK_IMPORTED_MODULE_0__.Line),
15718
16823
  /* harmony export */ "Matrix2D": () => (/* reexport safe */ _math2D__WEBPACK_IMPORTED_MODULE_3__.Matrix2D),
@@ -26474,6 +27579,7 @@ __webpack_require__.r(__webpack_exports__);
26474
27579
  /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.ImageScrollBar),
26475
27580
  /* harmony export */ "InputPassword": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.InputPassword),
26476
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),
26477
27583
  /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.KeyPropertySet),
26478
27584
  /* harmony export */ "Line": () => (/* reexport safe */ _2D_index__WEBPACK_IMPORTED_MODULE_0__.Line),
26479
27585
  /* harmony export */ "MRDLBackplateMaterial": () => (/* reexport safe */ _3D_index__WEBPACK_IMPORTED_MODULE_1__.MRDLBackplateMaterial),
@@ -26572,6 +27678,7 @@ __webpack_require__.r(__webpack_exports__);
26572
27678
  /* harmony export */ "ImageScrollBar": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.ImageScrollBar),
26573
27679
  /* harmony export */ "InputPassword": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.InputPassword),
26574
27680
  /* harmony export */ "InputText": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.InputText),
27681
+ /* harmony export */ "InputTextArea": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.InputTextArea),
26575
27682
  /* harmony export */ "KeyPropertySet": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.KeyPropertySet),
26576
27683
  /* harmony export */ "Line": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.Line),
26577
27684
  /* harmony export */ "MRDLBackplateMaterial": () => (/* reexport safe */ _index__WEBPACK_IMPORTED_MODULE_0__.MRDLBackplateMaterial),