@babylonjs/gui 9.14.0 → 9.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/2D/advancedDynamicTexture.d.ts +2 -2
  2. package/2D/advancedDynamicTexture.js +2 -2
  3. package/2D/advancedDynamicTexture.js.map +1 -1
  4. package/2D/controls/checkbox.pure.js +164 -153
  5. package/2D/controls/checkbox.pure.js.map +1 -1
  6. package/2D/controls/colorpicker.pure.js +1300 -1289
  7. package/2D/controls/colorpicker.pure.js.map +1 -1
  8. package/2D/controls/container.pure.js +597 -582
  9. package/2D/controls/container.pure.js.map +1 -1
  10. package/2D/controls/control.pure.js +2474 -2434
  11. package/2D/controls/control.pure.js.map +1 -1
  12. package/2D/controls/displayGrid.pure.js +201 -190
  13. package/2D/controls/displayGrid.pure.js.map +1 -1
  14. package/2D/controls/ellipse.pure.js +96 -85
  15. package/2D/controls/ellipse.pure.js.map +1 -1
  16. package/2D/controls/grid.pure.js +511 -500
  17. package/2D/controls/grid.pure.js.map +1 -1
  18. package/2D/controls/image.pure.js +888 -877
  19. package/2D/controls/image.pure.js.map +1 -1
  20. package/2D/controls/inputText.pure.js +988 -973
  21. package/2D/controls/inputText.pure.js.map +1 -1
  22. package/2D/controls/inputTextArea.pure.js +955 -944
  23. package/2D/controls/inputTextArea.pure.js.map +1 -1
  24. package/2D/controls/line.pure.js +237 -226
  25. package/2D/controls/line.pure.js.map +1 -1
  26. package/2D/controls/multiLine.pure.js +233 -222
  27. package/2D/controls/multiLine.pure.js.map +1 -1
  28. package/2D/controls/radioButton.pure.js +182 -169
  29. package/2D/controls/radioButton.pure.js.map +1 -1
  30. package/2D/controls/rectangle.pure.js +211 -200
  31. package/2D/controls/rectangle.pure.js.map +1 -1
  32. package/2D/controls/scrollViewers/scrollViewer.pure.js +579 -567
  33. package/2D/controls/scrollViewers/scrollViewer.pure.js.map +1 -1
  34. package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +1 -1
  35. package/2D/controls/scrollViewers/scrollViewerWindow.js +2 -2
  36. package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
  37. package/2D/controls/selector.d.ts +2 -2
  38. package/2D/controls/selector.js +8 -8
  39. package/2D/controls/selector.js.map +1 -1
  40. package/2D/controls/sliders/baseSlider.d.ts +1 -1
  41. package/2D/controls/sliders/baseSlider.js +292 -281
  42. package/2D/controls/sliders/baseSlider.js.map +1 -1
  43. package/2D/controls/sliders/imageBasedSlider.pure.js +158 -147
  44. package/2D/controls/sliders/imageBasedSlider.pure.js.map +1 -1
  45. package/2D/controls/sliders/imageScrollBar.js +237 -223
  46. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  47. package/2D/controls/sliders/scrollBar.pure.js +169 -158
  48. package/2D/controls/sliders/scrollBar.pure.js.map +1 -1
  49. package/2D/controls/sliders/slider.pure.js +251 -240
  50. package/2D/controls/sliders/slider.pure.js.map +1 -1
  51. package/2D/controls/stackPanel.pure.js +236 -221
  52. package/2D/controls/stackPanel.pure.js.map +1 -1
  53. package/2D/controls/textBlock.pure.js +637 -626
  54. package/2D/controls/textBlock.pure.js.map +1 -1
  55. package/2D/math2D.d.ts +1 -1
  56. package/2D/math2D.js +1 -1
  57. package/2D/math2D.js.map +1 -1
  58. package/2D/measure.js +1 -1
  59. package/2D/measure.js.map +1 -1
  60. package/3D/controls/MRTK3/touchHolographicButton.d.ts +4 -4
  61. package/3D/controls/MRTK3/touchHolographicButton.js +10 -10
  62. package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -1
  63. package/3D/controls/holographicBackplate.d.ts +1 -1
  64. package/3D/controls/holographicBackplate.js +1 -1
  65. package/3D/controls/holographicBackplate.js.map +1 -1
  66. package/3D/controls/holographicButton.d.ts +1 -1
  67. package/3D/controls/holographicButton.js +4 -4
  68. package/3D/controls/holographicButton.js.map +1 -1
  69. package/3D/controls/holographicSlate.js +4 -4
  70. package/3D/controls/holographicSlate.js.map +1 -1
  71. package/3D/controls/slider3D.d.ts +3 -3
  72. package/3D/controls/slider3D.js +3 -3
  73. package/3D/controls/slider3D.js.map +1 -1
  74. package/3D/controls/touchHolographicButton.d.ts +2 -2
  75. package/3D/controls/touchHolographicButton.js +5 -5
  76. package/3D/controls/touchHolographicButton.js.map +1 -1
  77. package/3D/controls/touchHolographicMenu.js +1 -1
  78. package/3D/controls/touchHolographicMenu.js.map +1 -1
  79. package/3D/gizmos/gizmoHandle.d.ts +1 -1
  80. package/3D/gizmos/gizmoHandle.js +1 -1
  81. package/3D/gizmos/gizmoHandle.js.map +1 -1
  82. package/3D/materials/fluent/fluentMaterial.pure.d.ts +4 -4
  83. package/3D/materials/fluent/fluentMaterial.pure.js +322 -270
  84. package/3D/materials/fluent/fluentMaterial.pure.js.map +1 -1
  85. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js +510 -451
  86. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js.map +1 -1
  87. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js +612 -526
  88. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js.map +1 -1
  89. package/3D/materials/fluentMaterial.d.ts +1 -1
  90. package/3D/materials/fluentMaterial.js +1 -1
  91. package/3D/materials/fluentMaterial.js.map +1 -1
  92. package/3D/materials/handle/handleMaterial.pure.js +3 -1
  93. package/3D/materials/handle/handleMaterial.pure.js.map +1 -1
  94. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js +313 -271
  95. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js.map +1 -1
  96. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js +462 -402
  97. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js.map +1 -1
  98. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js +583 -498
  99. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js.map +1 -1
  100. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js +226 -200
  101. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js.map +1 -1
  102. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js +961 -822
  103. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js.map +1 -1
  104. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js +961 -822
  105. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js.map +1 -1
  106. package/package.json +2 -2
@@ -1,4 +1,4 @@
1
- import { __decorate } from "@babylonjs/core/tslib.es6.js";
1
+ import { __esDecorate, __runInitializers } from "@babylonjs/core/tslib.es6.js";
2
2
  import { BaseSlider } from "./baseSlider.js";
3
3
  import { Measure } from "../../measure.js";
4
4
  import { serialize } from "@babylonjs/core/Misc/decorators.js";
@@ -7,168 +7,179 @@ import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
7
7
  /**
8
8
  * Class used to create slider controls
9
9
  */
10
- export class ScrollBar extends BaseSlider {
11
- /** Gets or sets border color */
12
- get borderColor() {
13
- return this._borderColor;
14
- }
15
- set borderColor(value) {
16
- if (this._borderColor === value) {
17
- return;
18
- }
19
- this._borderColor = value;
20
- this._markAsDirty();
21
- }
22
- /** Gets or sets background color */
23
- get background() {
24
- return this._background;
25
- }
26
- set background(value) {
27
- if (this._background === value) {
28
- return;
29
- }
30
- this._background = value;
31
- this._markAsDirty();
32
- }
33
- /** Gets or sets background gradient. Takes precedence over gradient. */
34
- get backgroundGradient() {
35
- return this._backgroundGradient;
36
- }
37
- set backgroundGradient(value) {
38
- if (this._backgroundGradient === value) {
39
- return;
40
- }
41
- this._backgroundGradient = value;
42
- this._markAsDirty();
43
- }
44
- /** Inverts the scrolling direction (default: false) */
45
- get invertScrollDirection() {
46
- return this._invertScrollDirection;
47
- }
48
- set invertScrollDirection(invert) {
49
- this._invertScrollDirection = invert;
50
- }
51
- /**
52
- * Creates a new Slider
53
- * @param name defines the control name
54
- */
55
- constructor(name) {
56
- super(name);
57
- this.name = name;
58
- this._background = "black";
59
- this._borderColor = "white";
60
- this._tempMeasure = new Measure(0, 0, 0, 0);
61
- this._invertScrollDirection = false;
62
- this._backgroundGradient = null;
63
- }
64
- _getTypeName() {
65
- return "Scrollbar";
66
- }
67
- _getThumbThickness() {
68
- let thumbThickness;
69
- if (this._thumbWidth.isPixel) {
70
- thumbThickness = this._thumbWidth.getValue(this._host);
71
- }
72
- else {
73
- thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);
74
- }
75
- return thumbThickness;
76
- }
77
- _getBackgroundColor(context) {
78
- return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;
79
- }
80
- _draw(context) {
81
- context.save();
82
- this._applyStates(context);
83
- this._prepareRenderingData("rectangle");
84
- const left = this._renderLeft;
85
- const thumbPosition = this._getThumbPosition();
86
- context.fillStyle = this._getBackgroundColor(context);
87
- context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
88
- // Value bar
89
- context.fillStyle = this._getColor(context);
90
- // Thumb
91
- if (this.isVertical) {
92
- this._tempMeasure.left = left - this._effectiveBarOffset;
93
- this._tempMeasure.top = this._currentMeasure.top + thumbPosition;
94
- this._tempMeasure.width = this._currentMeasure.width;
95
- this._tempMeasure.height = this._effectiveThumbThickness;
96
- }
97
- else {
98
- this._tempMeasure.left = this._currentMeasure.left + thumbPosition;
99
- this._tempMeasure.top = this._currentMeasure.top;
100
- this._tempMeasure.width = this._effectiveThumbThickness;
101
- this._tempMeasure.height = this._currentMeasure.height;
102
- }
103
- context.fillRect(this._tempMeasure.left, this._tempMeasure.top, this._tempMeasure.width, this._tempMeasure.height);
104
- context.restore();
105
- }
106
- /**
107
- * @internal
108
- */
109
- _updateValueFromPointer(x, y) {
110
- this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);
111
- x = this._transformedPosition.x;
112
- y = this._transformedPosition.y;
113
- const sign = this._invertScrollDirection ? -1 : 1;
114
- if (this._first) {
115
- this._first = false;
116
- this._originX = x;
117
- this._originY = y;
118
- // Check if move is required
119
- if (x < this._tempMeasure.left ||
120
- x > this._tempMeasure.left + this._tempMeasure.width ||
121
- y < this._tempMeasure.top ||
122
- y > this._tempMeasure.top + this._tempMeasure.height) {
10
+ let ScrollBar = (() => {
11
+ var _a;
12
+ let _classSuper = BaseSlider;
13
+ let _instanceExtraInitializers = [];
14
+ let _get_borderColor_decorators;
15
+ let _get_background_decorators;
16
+ let _get_invertScrollDirection_decorators;
17
+ return _a = class ScrollBar extends _classSuper {
18
+ /** Gets or sets border color */
19
+ get borderColor() {
20
+ return this._borderColor;
21
+ }
22
+ set borderColor(value) {
23
+ if (this._borderColor === value) {
24
+ return;
25
+ }
26
+ this._borderColor = value;
27
+ this._markAsDirty();
28
+ }
29
+ /** Gets or sets background color */
30
+ get background() {
31
+ return this._background;
32
+ }
33
+ set background(value) {
34
+ if (this._background === value) {
35
+ return;
36
+ }
37
+ this._background = value;
38
+ this._markAsDirty();
39
+ }
40
+ /** Gets or sets background gradient. Takes precedence over gradient. */
41
+ get backgroundGradient() {
42
+ return this._backgroundGradient;
43
+ }
44
+ set backgroundGradient(value) {
45
+ if (this._backgroundGradient === value) {
46
+ return;
47
+ }
48
+ this._backgroundGradient = value;
49
+ this._markAsDirty();
50
+ }
51
+ /** Inverts the scrolling direction (default: false) */
52
+ get invertScrollDirection() {
53
+ return this._invertScrollDirection;
54
+ }
55
+ set invertScrollDirection(invert) {
56
+ this._invertScrollDirection = invert;
57
+ }
58
+ /**
59
+ * Creates a new Slider
60
+ * @param name defines the control name
61
+ */
62
+ constructor(name) {
63
+ super(name);
64
+ this.name = (__runInitializers(this, _instanceExtraInitializers), name);
65
+ this._background = "black";
66
+ this._borderColor = "white";
67
+ this._tempMeasure = new Measure(0, 0, 0, 0);
68
+ this._invertScrollDirection = false;
69
+ this._backgroundGradient = null;
70
+ }
71
+ _getTypeName() {
72
+ return "Scrollbar";
73
+ }
74
+ _getThumbThickness() {
75
+ let thumbThickness;
76
+ if (this._thumbWidth.isPixel) {
77
+ thumbThickness = this._thumbWidth.getValue(this._host);
78
+ }
79
+ else {
80
+ thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);
81
+ }
82
+ return thumbThickness;
83
+ }
84
+ _getBackgroundColor(context) {
85
+ return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;
86
+ }
87
+ _draw(context) {
88
+ context.save();
89
+ this._applyStates(context);
90
+ this._prepareRenderingData("rectangle");
91
+ const left = this._renderLeft;
92
+ const thumbPosition = this._getThumbPosition();
93
+ context.fillStyle = this._getBackgroundColor(context);
94
+ context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
95
+ // Value bar
96
+ context.fillStyle = this._getColor(context);
97
+ // Thumb
123
98
  if (this.isVertical) {
124
- this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);
99
+ this._tempMeasure.left = left - this._effectiveBarOffset;
100
+ this._tempMeasure.top = this._currentMeasure.top + thumbPosition;
101
+ this._tempMeasure.width = this._currentMeasure.width;
102
+ this._tempMeasure.height = this._effectiveThumbThickness;
125
103
  }
126
104
  else {
127
- this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);
105
+ this._tempMeasure.left = this._currentMeasure.left + thumbPosition;
106
+ this._tempMeasure.top = this._currentMeasure.top;
107
+ this._tempMeasure.width = this._effectiveThumbThickness;
108
+ this._tempMeasure.height = this._currentMeasure.height;
128
109
  }
110
+ context.fillRect(this._tempMeasure.left, this._tempMeasure.top, this._tempMeasure.width, this._tempMeasure.height);
111
+ context.restore();
129
112
  }
130
- }
131
- // Delta mode
132
- let delta;
133
- if (this.isVertical) {
134
- delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));
135
- }
136
- else {
137
- delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);
138
- }
139
- this.value += sign * delta * (this.maximum - this.minimum);
140
- this._originX = x;
141
- this._originY = y;
142
- }
143
- _onPointerDown(target, coordinates, pointerId, buttonIndex, pi) {
144
- this._first = true;
145
- return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);
146
- }
147
- serialize(serializationObject) {
148
- super.serialize(serializationObject);
149
- if (this.backgroundGradient) {
150
- serializationObject.backgroundGradient = {};
151
- this.backgroundGradient.serialize(serializationObject.backgroundGradient);
152
- }
153
- }
154
- _parseFromContent(serializationObject, host) {
155
- super._parseFromContent(serializationObject, host);
156
- if (serializationObject.backgroundGradient) {
157
- const className = Tools.Instantiate("BABYLON.GUI." + serializationObject.backgroundGradient.className);
158
- this.backgroundGradient = new className();
159
- this.backgroundGradient.parse(serializationObject.backgroundGradient);
160
- }
161
- }
162
- }
163
- __decorate([
164
- serialize()
165
- ], ScrollBar.prototype, "borderColor", null);
166
- __decorate([
167
- serialize()
168
- ], ScrollBar.prototype, "background", null);
169
- __decorate([
170
- serialize()
171
- ], ScrollBar.prototype, "invertScrollDirection", null);
113
+ /**
114
+ * @internal
115
+ */
116
+ _updateValueFromPointer(x, y) {
117
+ this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);
118
+ x = this._transformedPosition.x;
119
+ y = this._transformedPosition.y;
120
+ const sign = this._invertScrollDirection ? -1 : 1;
121
+ if (this._first) {
122
+ this._first = false;
123
+ this._originX = x;
124
+ this._originY = y;
125
+ // Check if move is required
126
+ if (x < this._tempMeasure.left ||
127
+ x > this._tempMeasure.left + this._tempMeasure.width ||
128
+ y < this._tempMeasure.top ||
129
+ y > this._tempMeasure.top + this._tempMeasure.height) {
130
+ if (this.isVertical) {
131
+ this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);
132
+ }
133
+ else {
134
+ this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);
135
+ }
136
+ }
137
+ }
138
+ // Delta mode
139
+ let delta;
140
+ if (this.isVertical) {
141
+ delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));
142
+ }
143
+ else {
144
+ delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);
145
+ }
146
+ this.value += sign * delta * (this.maximum - this.minimum);
147
+ this._originX = x;
148
+ this._originY = y;
149
+ }
150
+ _onPointerDown(target, coordinates, pointerId, buttonIndex, pi) {
151
+ this._first = true;
152
+ return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);
153
+ }
154
+ serialize(serializationObject) {
155
+ super.serialize(serializationObject);
156
+ if (this.backgroundGradient) {
157
+ serializationObject.backgroundGradient = {};
158
+ this.backgroundGradient.serialize(serializationObject.backgroundGradient);
159
+ }
160
+ }
161
+ _parseFromContent(serializationObject, host) {
162
+ super._parseFromContent(serializationObject, host);
163
+ if (serializationObject.backgroundGradient) {
164
+ const className = Tools.Instantiate("BABYLON.GUI." + serializationObject.backgroundGradient.className);
165
+ this.backgroundGradient = new className();
166
+ this.backgroundGradient.parse(serializationObject.backgroundGradient);
167
+ }
168
+ }
169
+ },
170
+ (() => {
171
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
172
+ _get_borderColor_decorators = [serialize()];
173
+ _get_background_decorators = [serialize()];
174
+ _get_invertScrollDirection_decorators = [serialize()];
175
+ __esDecorate(_a, null, _get_borderColor_decorators, { kind: "getter", name: "borderColor", static: false, private: false, access: { has: obj => "borderColor" in obj, get: obj => obj.borderColor }, metadata: _metadata }, null, _instanceExtraInitializers);
176
+ __esDecorate(_a, null, _get_background_decorators, { kind: "getter", name: "background", static: false, private: false, access: { has: obj => "background" in obj, get: obj => obj.background }, metadata: _metadata }, null, _instanceExtraInitializers);
177
+ __esDecorate(_a, null, _get_invertScrollDirection_decorators, { kind: "getter", name: "invertScrollDirection", static: false, private: false, access: { has: obj => "invertScrollDirection" in obj, get: obj => obj.invertScrollDirection }, metadata: _metadata }, null, _instanceExtraInitializers);
178
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
179
+ })(),
180
+ _a;
181
+ })();
182
+ export { ScrollBar };
172
183
  let _Registered = false;
173
184
  /**
174
185
  * Registers the ScrollBar class with the type store for serialization support.
@@ -1 +1 @@
1
- {"version":3,"file":"scrollBar.pure.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/scrollBar.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { BaseSlider } from \"./baseSlider\";\r\nimport { type Control } from \"../control.pure\";\r\nimport { Measure } from \"../../measure\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseGradient } from \"../gradient/BaseGradient\";\r\nimport { type AdvancedDynamicTexture } from \"gui/2D/advancedDynamicTexture\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class ScrollBar extends BaseSlider {\r\n private _background = \"black\";\r\n private _borderColor = \"white\";\r\n private _tempMeasure = new Measure(0, 0, 0, 0);\r\n private _invertScrollDirection = false;\r\n private _backgroundGradient: Nullable<BaseGradient> = null;\r\n\r\n /** Gets or sets border color */\r\n @serialize()\r\n public get borderColor(): string {\r\n return this._borderColor;\r\n }\r\n\r\n public set borderColor(value: string) {\r\n if (this._borderColor === value) {\r\n return;\r\n }\r\n\r\n this._borderColor = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background gradient. Takes precedence over gradient. */\r\n public get backgroundGradient(): Nullable<BaseGradient> {\r\n return this._backgroundGradient;\r\n }\r\n\r\n public set backgroundGradient(value: Nullable<BaseGradient>) {\r\n if (this._backgroundGradient === value) {\r\n return;\r\n }\r\n\r\n this._backgroundGradient = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Inverts the scrolling direction (default: false) */\r\n @serialize()\r\n public get invertScrollDirection() {\r\n return this._invertScrollDirection;\r\n }\r\n\r\n public set invertScrollDirection(invert: boolean) {\r\n this._invertScrollDirection = invert;\r\n }\r\n\r\n /**\r\n * Creates a new Slider\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Scrollbar\";\r\n }\r\n\r\n protected override _getThumbThickness(): number {\r\n let thumbThickness: number;\r\n if (this._thumbWidth.isPixel) {\r\n thumbThickness = this._thumbWidth.getValue(this._host);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n private _getBackgroundColor(context: ICanvasRenderingContext) {\r\n return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n this._prepareRenderingData(\"rectangle\");\r\n const left = this._renderLeft;\r\n\r\n const thumbPosition = this._getThumbPosition();\r\n context.fillStyle = this._getBackgroundColor(context);\r\n\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n\r\n // Value bar\r\n context.fillStyle = this._getColor(context);\r\n\r\n // Thumb\r\n if (this.isVertical) {\r\n this._tempMeasure.left = left - this._effectiveBarOffset;\r\n this._tempMeasure.top = this._currentMeasure.top + thumbPosition;\r\n this._tempMeasure.width = this._currentMeasure.width;\r\n this._tempMeasure.height = this._effectiveThumbThickness;\r\n } else {\r\n this._tempMeasure.left = this._currentMeasure.left + thumbPosition;\r\n this._tempMeasure.top = this._currentMeasure.top;\r\n this._tempMeasure.width = this._effectiveThumbThickness;\r\n this._tempMeasure.height = this._currentMeasure.height;\r\n }\r\n\r\n context.fillRect(this._tempMeasure.left, this._tempMeasure.top, this._tempMeasure.width, this._tempMeasure.height);\r\n\r\n context.restore();\r\n }\r\n\r\n private _first: boolean;\r\n private _originX: number;\r\n private _originY: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n const sign = this._invertScrollDirection ? -1 : 1;\r\n\r\n if (this._first) {\r\n this._first = false;\r\n this._originX = x;\r\n this._originY = y;\r\n\r\n // Check if move is required\r\n if (\r\n x < this._tempMeasure.left ||\r\n x > this._tempMeasure.left + this._tempMeasure.width ||\r\n y < this._tempMeasure.top ||\r\n y > this._tempMeasure.top + this._tempMeasure.height\r\n ) {\r\n if (this.isVertical) {\r\n this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);\r\n } else {\r\n this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);\r\n }\r\n }\r\n }\r\n\r\n // Delta mode\r\n let delta: number;\r\n if (this.isVertical) {\r\n delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));\r\n } else {\r\n delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);\r\n }\r\n\r\n this.value += sign * delta * (this.maximum - this.minimum);\r\n\r\n this._originX = x;\r\n this._originY = y;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n this._first = true;\r\n\r\n return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);\r\n }\r\n\r\n public override serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n\r\n if (this.backgroundGradient) {\r\n serializationObject.backgroundGradient = {};\r\n this.backgroundGradient.serialize(serializationObject.backgroundGradient);\r\n }\r\n }\r\n\r\n public override _parseFromContent(serializationObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializationObject, host);\r\n\r\n if (serializationObject.backgroundGradient) {\r\n const className = Tools.Instantiate(\"BABYLON.GUI.\" + serializationObject.backgroundGradient.className);\r\n this.backgroundGradient = new className();\r\n this.backgroundGradient!.parse(serializationObject.backgroundGradient);\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the ScrollBar class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterScrollBar(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Scrollbar\", ScrollBar);\r\n}\r\n"]}
1
+ {"version":3,"file":"scrollBar.pure.js","sourceRoot":"","sources":["../../../../../../dev/gui/src/2D/controls/sliders/scrollBar.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Vector2 } from \"core/Maths/math.vector.pure\";\r\nimport { BaseSlider } from \"./baseSlider\";\r\nimport { type Control } from \"../control.pure\";\r\nimport { Measure } from \"../../measure\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\nimport { type Nullable } from \"core/types\";\r\nimport { type BaseGradient } from \"../gradient/BaseGradient\";\r\nimport { type AdvancedDynamicTexture } from \"gui/2D/advancedDynamicTexture\";\r\nimport { Tools } from \"core/Misc/tools.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\n\r\n/**\r\n * Class used to create slider controls\r\n */\r\nexport class ScrollBar extends BaseSlider {\r\n private _background = \"black\";\r\n private _borderColor = \"white\";\r\n private _tempMeasure = new Measure(0, 0, 0, 0);\r\n private _invertScrollDirection = false;\r\n private _backgroundGradient: Nullable<BaseGradient> = null;\r\n\r\n /** Gets or sets border color */\r\n @serialize()\r\n public get borderColor(): string {\r\n return this._borderColor;\r\n }\r\n\r\n public set borderColor(value: string) {\r\n if (this._borderColor === value) {\r\n return;\r\n }\r\n\r\n this._borderColor = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background color */\r\n @serialize()\r\n public get background(): string {\r\n return this._background;\r\n }\r\n\r\n public set background(value: string) {\r\n if (this._background === value) {\r\n return;\r\n }\r\n\r\n this._background = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets background gradient. Takes precedence over gradient. */\r\n public get backgroundGradient(): Nullable<BaseGradient> {\r\n return this._backgroundGradient;\r\n }\r\n\r\n public set backgroundGradient(value: Nullable<BaseGradient>) {\r\n if (this._backgroundGradient === value) {\r\n return;\r\n }\r\n\r\n this._backgroundGradient = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Inverts the scrolling direction (default: false) */\r\n @serialize()\r\n public get invertScrollDirection() {\r\n return this._invertScrollDirection;\r\n }\r\n\r\n public set invertScrollDirection(invert: boolean) {\r\n this._invertScrollDirection = invert;\r\n }\r\n\r\n /**\r\n * Creates a new Slider\r\n * @param name defines the control name\r\n */\r\n constructor(public override name?: string) {\r\n super(name);\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"Scrollbar\";\r\n }\r\n\r\n protected override _getThumbThickness(): number {\r\n let thumbThickness: number;\r\n if (this._thumbWidth.isPixel) {\r\n thumbThickness = this._thumbWidth.getValue(this._host);\r\n } else {\r\n thumbThickness = this._backgroundBoxThickness * this._thumbWidth.getValue(this._host);\r\n }\r\n return thumbThickness;\r\n }\r\n\r\n private _getBackgroundColor(context: ICanvasRenderingContext) {\r\n return this._backgroundGradient ? this._backgroundGradient.getCanvasGradient(context) : this._background;\r\n }\r\n\r\n public override _draw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n this._applyStates(context);\r\n this._prepareRenderingData(\"rectangle\");\r\n const left = this._renderLeft;\r\n\r\n const thumbPosition = this._getThumbPosition();\r\n context.fillStyle = this._getBackgroundColor(context);\r\n\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n\r\n // Value bar\r\n context.fillStyle = this._getColor(context);\r\n\r\n // Thumb\r\n if (this.isVertical) {\r\n this._tempMeasure.left = left - this._effectiveBarOffset;\r\n this._tempMeasure.top = this._currentMeasure.top + thumbPosition;\r\n this._tempMeasure.width = this._currentMeasure.width;\r\n this._tempMeasure.height = this._effectiveThumbThickness;\r\n } else {\r\n this._tempMeasure.left = this._currentMeasure.left + thumbPosition;\r\n this._tempMeasure.top = this._currentMeasure.top;\r\n this._tempMeasure.width = this._effectiveThumbThickness;\r\n this._tempMeasure.height = this._currentMeasure.height;\r\n }\r\n\r\n context.fillRect(this._tempMeasure.left, this._tempMeasure.top, this._tempMeasure.width, this._tempMeasure.height);\r\n\r\n context.restore();\r\n }\r\n\r\n private _first: boolean;\r\n private _originX: number;\r\n private _originY: number;\r\n\r\n /**\r\n * @internal\r\n */\r\n protected override _updateValueFromPointer(x: number, y: number): void {\r\n this._invertTransformMatrix.transformCoordinates(x, y, this._transformedPosition);\r\n x = this._transformedPosition.x;\r\n y = this._transformedPosition.y;\r\n\r\n const sign = this._invertScrollDirection ? -1 : 1;\r\n\r\n if (this._first) {\r\n this._first = false;\r\n this._originX = x;\r\n this._originY = y;\r\n\r\n // Check if move is required\r\n if (\r\n x < this._tempMeasure.left ||\r\n x > this._tempMeasure.left + this._tempMeasure.width ||\r\n y < this._tempMeasure.top ||\r\n y > this._tempMeasure.top + this._tempMeasure.height\r\n ) {\r\n if (this.isVertical) {\r\n this.value = this.minimum + (1 - (y - this._currentMeasure.top) / this._currentMeasure.height) * (this.maximum - this.minimum);\r\n } else {\r\n this.value = this.minimum + ((x - this._currentMeasure.left) / this._currentMeasure.width) * (this.maximum - this.minimum);\r\n }\r\n }\r\n }\r\n\r\n // Delta mode\r\n let delta: number;\r\n if (this.isVertical) {\r\n delta = -((y - this._originY) / (this._currentMeasure.height - this._effectiveThumbThickness));\r\n } else {\r\n delta = (x - this._originX) / (this._currentMeasure.width - this._effectiveThumbThickness);\r\n }\r\n\r\n this.value += sign * delta * (this.maximum - this.minimum);\r\n\r\n this._originX = x;\r\n this._originY = y;\r\n }\r\n\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n this._first = true;\r\n\r\n return super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi);\r\n }\r\n\r\n public override serialize(serializationObject: any) {\r\n super.serialize(serializationObject);\r\n\r\n if (this.backgroundGradient) {\r\n serializationObject.backgroundGradient = {};\r\n this.backgroundGradient.serialize(serializationObject.backgroundGradient);\r\n }\r\n }\r\n\r\n public override _parseFromContent(serializationObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializationObject, host);\r\n\r\n if (serializationObject.backgroundGradient) {\r\n const className = Tools.Instantiate(\"BABYLON.GUI.\" + serializationObject.backgroundGradient.className);\r\n this.backgroundGradient = new className();\r\n this.backgroundGradient!.parse(serializationObject.backgroundGradient);\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the ScrollBar class with the type store for serialization support.\r\n * Safe to call multiple times; only the first call has an effect.\r\n */\r\nexport function RegisterScrollBar(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Scrollbar\", ScrollBar);\r\n}\r\n"]}