@babylonjs/gui 9.15.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 (64) hide show
  1. package/2D/controls/checkbox.pure.js +164 -153
  2. package/2D/controls/checkbox.pure.js.map +1 -1
  3. package/2D/controls/colorpicker.pure.js +1300 -1289
  4. package/2D/controls/colorpicker.pure.js.map +1 -1
  5. package/2D/controls/container.pure.js +597 -582
  6. package/2D/controls/container.pure.js.map +1 -1
  7. package/2D/controls/control.pure.js +2474 -2434
  8. package/2D/controls/control.pure.js.map +1 -1
  9. package/2D/controls/displayGrid.pure.js +201 -190
  10. package/2D/controls/displayGrid.pure.js.map +1 -1
  11. package/2D/controls/ellipse.pure.js +96 -85
  12. package/2D/controls/ellipse.pure.js.map +1 -1
  13. package/2D/controls/grid.pure.js +511 -500
  14. package/2D/controls/grid.pure.js.map +1 -1
  15. package/2D/controls/image.pure.js +888 -877
  16. package/2D/controls/image.pure.js.map +1 -1
  17. package/2D/controls/inputText.pure.js +988 -973
  18. package/2D/controls/inputText.pure.js.map +1 -1
  19. package/2D/controls/inputTextArea.pure.js +955 -944
  20. package/2D/controls/inputTextArea.pure.js.map +1 -1
  21. package/2D/controls/line.pure.js +237 -226
  22. package/2D/controls/line.pure.js.map +1 -1
  23. package/2D/controls/multiLine.pure.js +233 -222
  24. package/2D/controls/multiLine.pure.js.map +1 -1
  25. package/2D/controls/radioButton.pure.js +182 -169
  26. package/2D/controls/radioButton.pure.js.map +1 -1
  27. package/2D/controls/rectangle.pure.js +211 -200
  28. package/2D/controls/rectangle.pure.js.map +1 -1
  29. package/2D/controls/scrollViewers/scrollViewer.pure.js +579 -567
  30. package/2D/controls/scrollViewers/scrollViewer.pure.js.map +1 -1
  31. package/2D/controls/sliders/baseSlider.js +291 -280
  32. package/2D/controls/sliders/baseSlider.js.map +1 -1
  33. package/2D/controls/sliders/imageBasedSlider.pure.js +158 -147
  34. package/2D/controls/sliders/imageBasedSlider.pure.js.map +1 -1
  35. package/2D/controls/sliders/imageScrollBar.js +237 -223
  36. package/2D/controls/sliders/imageScrollBar.js.map +1 -1
  37. package/2D/controls/sliders/scrollBar.pure.js +169 -158
  38. package/2D/controls/sliders/scrollBar.pure.js.map +1 -1
  39. package/2D/controls/sliders/slider.pure.js +251 -240
  40. package/2D/controls/sliders/slider.pure.js.map +1 -1
  41. package/2D/controls/stackPanel.pure.js +236 -221
  42. package/2D/controls/stackPanel.pure.js.map +1 -1
  43. package/2D/controls/textBlock.pure.js +637 -626
  44. package/2D/controls/textBlock.pure.js.map +1 -1
  45. package/3D/materials/fluent/fluentMaterial.pure.d.ts +4 -4
  46. package/3D/materials/fluent/fluentMaterial.pure.js +322 -273
  47. package/3D/materials/fluent/fluentMaterial.pure.js.map +1 -1
  48. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js +510 -454
  49. package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js.map +1 -1
  50. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js +612 -529
  51. package/3D/materials/fluentButton/fluentButtonMaterial.pure.js.map +1 -1
  52. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js +313 -274
  53. package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js.map +1 -1
  54. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js +462 -405
  55. package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js.map +1 -1
  56. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js +583 -501
  57. package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js.map +1 -1
  58. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js +226 -203
  59. package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js.map +1 -1
  60. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js +961 -825
  61. package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js.map +1 -1
  62. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js +961 -825
  63. package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js.map +1 -1
  64. package/package.json +2 -2
@@ -1,207 +1,218 @@
1
- import { __decorate } from "@babylonjs/core/tslib.es6.js";
1
+ import { __esDecorate, __runInitializers } from "@babylonjs/core/tslib.es6.js";
2
2
  import { Container } from "./container.pure.js";
3
3
  import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
4
4
  import { serialize } from "@babylonjs/core/Misc/decorators.js";
5
5
  /** Class used to create rectangle container */
6
- export class Rectangle extends Container {
7
- /** Gets or sets border thickness */
8
- get thickness() {
9
- return this._thickness;
10
- }
11
- set thickness(value) {
12
- if (this._thickness === value) {
13
- return;
14
- }
15
- this._thickness = value;
16
- this._markAsDirty();
17
- }
18
- /** Gets or sets the corner radius of all angles */
19
- get cornerRadius() {
20
- return this._cornerRadius[0];
21
- }
22
- set cornerRadius(value) {
23
- if (value < 0) {
24
- value = 0;
25
- }
26
- if (this._cornerRadius[0] === value && this._cornerRadius[1] === value && this._cornerRadius[2] === value && this._cornerRadius[3] === value) {
27
- return;
28
- }
29
- this._cornerRadius[0] = this._cornerRadius[1] = this._cornerRadius[2] = this._cornerRadius[3] = value;
30
- this._markAsDirty();
31
- }
32
- /** Gets or sets the corner radius top left angle */
33
- get cornerRadiusX() {
34
- return this._cornerRadius[0];
35
- }
36
- set cornerRadiusX(value) {
37
- if (this._cornerRadius[0] === value) {
38
- return;
39
- }
40
- this._cornerRadius[0] = value;
41
- }
42
- /** Gets or sets the corner radius top right angle */
43
- get cornerRadiusY() {
44
- return this._cornerRadius[1];
45
- }
46
- set cornerRadiusY(value) {
47
- if (this._cornerRadius[1] === value) {
48
- return;
49
- }
50
- this._cornerRadius[1] = value;
51
- }
52
- /** Gets or sets the corner radius bottom left angle */
53
- get cornerRadiusZ() {
54
- return this._cornerRadius[2];
55
- }
56
- set cornerRadiusZ(value) {
57
- if (this._cornerRadius[2] === value) {
58
- return;
59
- }
60
- this._cornerRadius[2] = value;
61
- }
62
- /** Gets or sets the corner radius bottom right angle */
63
- get cornerRadiusW() {
64
- return this._cornerRadius[3];
65
- }
66
- set cornerRadiusW(value) {
67
- if (this._cornerRadius[3] === value) {
68
- return;
69
- }
70
- this._cornerRadius[3] = value;
71
- }
72
- /**
73
- * Creates a new Rectangle
74
- * @param name defines the control name
75
- */
76
- constructor(name) {
77
- super(name);
78
- this.name = name;
79
- this._thickness = 1;
80
- this._cornerRadius = [0, 0, 0, 0];
81
- this._cachedRadius = [0, 0, 0, 0];
82
- }
83
- _getTypeName() {
84
- return "Rectangle";
85
- }
86
- /** @internal */
87
- _computeAdditionalOffsetX() {
88
- let additionalWidth = 0;
89
- if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
90
- // Take in account the aliasing
91
- additionalWidth += 1;
92
- }
93
- if (this.thickness) {
94
- additionalWidth += this.thickness / 2;
95
- }
96
- return additionalWidth;
97
- }
98
- /** @internal */
99
- _computeAdditionalOffsetY() {
100
- let additionalHeight = 0;
101
- if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
102
- // Take in account the aliasing
103
- additionalHeight += 1;
104
- }
105
- if (this.thickness) {
106
- additionalHeight += this.thickness / 2;
107
- }
108
- return additionalHeight;
109
- }
110
- _getRectangleFill(context) {
111
- return this._getBackgroundColor(context);
112
- }
113
- _localDraw(context) {
114
- context.save();
115
- if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
116
- context.shadowColor = this.shadowColor;
117
- context.shadowBlur = this.shadowBlur;
118
- context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;
119
- context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;
120
- }
121
- if (this._background || this._backgroundGradient) {
122
- context.fillStyle = this._getRectangleFill(context);
123
- if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
124
- this._drawRoundedRect(context, this._thickness / 2);
125
- context.fill();
126
- }
127
- else {
128
- context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
129
- }
130
- }
131
- if (this._thickness) {
132
- if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
133
- context.shadowBlur = 0;
134
- context.shadowOffsetX = 0;
135
- context.shadowOffsetY = 0;
136
- }
137
- if (this.color || this.gradient) {
138
- context.strokeStyle = this.gradient ? this.gradient.getCanvasGradient(context) : this.color;
139
- }
140
- context.lineWidth = this._thickness;
141
- if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
142
- this._drawRoundedRect(context, this._thickness / 2);
143
- context.stroke();
144
- }
145
- else {
146
- context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, this._currentMeasure.width - this._thickness, this._currentMeasure.height - this._thickness);
147
- }
148
- }
149
- context.restore();
150
- }
151
- _additionalProcessing(parentMeasure, context) {
152
- super._additionalProcessing(parentMeasure, context);
153
- this._measureForChildren.width -= 2 * this._thickness;
154
- this._measureForChildren.height -= 2 * this._thickness;
155
- this._measureForChildren.left += this._thickness;
156
- this._measureForChildren.top += this._thickness;
157
- }
158
- _drawRoundedRect(context, offset = 0) {
159
- const x = this._currentMeasure.left + offset;
160
- const y = this._currentMeasure.top + offset;
161
- const width = this._currentMeasure.width - offset * 2;
162
- const height = this._currentMeasure.height - offset * 2;
163
- // Scale cornerRadius using idealRatio (same pattern as shadowOffset/spacing)
164
- const idealRatio = this._host.idealRatio;
165
- for (let index = 0; index < this._cornerRadius.length; index++) {
166
- this._cachedRadius[index] = Math.abs(Math.min(height / 2, Math.min(width / 2, this._cornerRadius[index] * idealRatio)));
167
- }
168
- context.beginPath();
169
- context.moveTo(x + this._cachedRadius[0], y);
170
- context.lineTo(x + width - this._cachedRadius[1], y);
171
- context.arc(x + width - this._cachedRadius[1], y + this._cachedRadius[1], this._cachedRadius[1], (3 * Math.PI) / 2, Math.PI * 2);
172
- context.lineTo(x + width, y + height - this._cachedRadius[2]);
173
- context.arc(x + width - this._cachedRadius[2], y + height - this._cachedRadius[2], this._cachedRadius[2], 0, Math.PI / 2);
174
- context.lineTo(x + this._cachedRadius[3], y + height);
175
- context.arc(x + this._cachedRadius[3], y + height - this._cachedRadius[3], this._cachedRadius[3], Math.PI / 2, Math.PI);
176
- context.lineTo(x, y + this._cachedRadius[0]);
177
- context.arc(x + this._cachedRadius[0], y + this._cachedRadius[0], this._cachedRadius[0], Math.PI, (3 * Math.PI) / 2);
178
- context.closePath();
179
- }
180
- _clipForChildren(context) {
181
- if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
182
- this._drawRoundedRect(context, this._thickness);
183
- context.clip();
184
- }
185
- }
186
- }
187
- __decorate([
188
- serialize()
189
- ], Rectangle.prototype, "thickness", null);
190
- __decorate([
191
- serialize()
192
- ], Rectangle.prototype, "cornerRadius", null);
193
- __decorate([
194
- serialize()
195
- ], Rectangle.prototype, "cornerRadiusX", null);
196
- __decorate([
197
- serialize()
198
- ], Rectangle.prototype, "cornerRadiusY", null);
199
- __decorate([
200
- serialize()
201
- ], Rectangle.prototype, "cornerRadiusZ", null);
202
- __decorate([
203
- serialize()
204
- ], Rectangle.prototype, "cornerRadiusW", null);
6
+ let Rectangle = (() => {
7
+ var _a;
8
+ let _classSuper = Container;
9
+ let _instanceExtraInitializers = [];
10
+ let _get_thickness_decorators;
11
+ let _get_cornerRadius_decorators;
12
+ let _get_cornerRadiusX_decorators;
13
+ let _get_cornerRadiusY_decorators;
14
+ let _get_cornerRadiusZ_decorators;
15
+ let _get_cornerRadiusW_decorators;
16
+ return _a = class Rectangle extends _classSuper {
17
+ /** Gets or sets border thickness */
18
+ get thickness() {
19
+ return this._thickness;
20
+ }
21
+ set thickness(value) {
22
+ if (this._thickness === value) {
23
+ return;
24
+ }
25
+ this._thickness = value;
26
+ this._markAsDirty();
27
+ }
28
+ /** Gets or sets the corner radius of all angles */
29
+ get cornerRadius() {
30
+ return this._cornerRadius[0];
31
+ }
32
+ set cornerRadius(value) {
33
+ if (value < 0) {
34
+ value = 0;
35
+ }
36
+ if (this._cornerRadius[0] === value && this._cornerRadius[1] === value && this._cornerRadius[2] === value && this._cornerRadius[3] === value) {
37
+ return;
38
+ }
39
+ this._cornerRadius[0] = this._cornerRadius[1] = this._cornerRadius[2] = this._cornerRadius[3] = value;
40
+ this._markAsDirty();
41
+ }
42
+ /** Gets or sets the corner radius top left angle */
43
+ get cornerRadiusX() {
44
+ return this._cornerRadius[0];
45
+ }
46
+ set cornerRadiusX(value) {
47
+ if (this._cornerRadius[0] === value) {
48
+ return;
49
+ }
50
+ this._cornerRadius[0] = value;
51
+ }
52
+ /** Gets or sets the corner radius top right angle */
53
+ get cornerRadiusY() {
54
+ return this._cornerRadius[1];
55
+ }
56
+ set cornerRadiusY(value) {
57
+ if (this._cornerRadius[1] === value) {
58
+ return;
59
+ }
60
+ this._cornerRadius[1] = value;
61
+ }
62
+ /** Gets or sets the corner radius bottom left angle */
63
+ get cornerRadiusZ() {
64
+ return this._cornerRadius[2];
65
+ }
66
+ set cornerRadiusZ(value) {
67
+ if (this._cornerRadius[2] === value) {
68
+ return;
69
+ }
70
+ this._cornerRadius[2] = value;
71
+ }
72
+ /** Gets or sets the corner radius bottom right angle */
73
+ get cornerRadiusW() {
74
+ return this._cornerRadius[3];
75
+ }
76
+ set cornerRadiusW(value) {
77
+ if (this._cornerRadius[3] === value) {
78
+ return;
79
+ }
80
+ this._cornerRadius[3] = value;
81
+ }
82
+ /**
83
+ * Creates a new Rectangle
84
+ * @param name defines the control name
85
+ */
86
+ constructor(name) {
87
+ super(name);
88
+ this.name = (__runInitializers(this, _instanceExtraInitializers), name);
89
+ this._thickness = 1;
90
+ this._cornerRadius = [0, 0, 0, 0];
91
+ this._cachedRadius = [0, 0, 0, 0];
92
+ }
93
+ _getTypeName() {
94
+ return "Rectangle";
95
+ }
96
+ /** @internal */
97
+ _computeAdditionalOffsetX() {
98
+ let additionalWidth = 0;
99
+ if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
100
+ // Take in account the aliasing
101
+ additionalWidth += 1;
102
+ }
103
+ if (this.thickness) {
104
+ additionalWidth += this.thickness / 2;
105
+ }
106
+ return additionalWidth;
107
+ }
108
+ /** @internal */
109
+ _computeAdditionalOffsetY() {
110
+ let additionalHeight = 0;
111
+ if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
112
+ // Take in account the aliasing
113
+ additionalHeight += 1;
114
+ }
115
+ if (this.thickness) {
116
+ additionalHeight += this.thickness / 2;
117
+ }
118
+ return additionalHeight;
119
+ }
120
+ _getRectangleFill(context) {
121
+ return this._getBackgroundColor(context);
122
+ }
123
+ _localDraw(context) {
124
+ context.save();
125
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
126
+ context.shadowColor = this.shadowColor;
127
+ context.shadowBlur = this.shadowBlur;
128
+ context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;
129
+ context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;
130
+ }
131
+ if (this._background || this._backgroundGradient) {
132
+ context.fillStyle = this._getRectangleFill(context);
133
+ if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
134
+ this._drawRoundedRect(context, this._thickness / 2);
135
+ context.fill();
136
+ }
137
+ else {
138
+ context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);
139
+ }
140
+ }
141
+ if (this._thickness) {
142
+ if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {
143
+ context.shadowBlur = 0;
144
+ context.shadowOffsetX = 0;
145
+ context.shadowOffsetY = 0;
146
+ }
147
+ if (this.color || this.gradient) {
148
+ context.strokeStyle = this.gradient ? this.gradient.getCanvasGradient(context) : this.color;
149
+ }
150
+ context.lineWidth = this._thickness;
151
+ if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
152
+ this._drawRoundedRect(context, this._thickness / 2);
153
+ context.stroke();
154
+ }
155
+ else {
156
+ context.strokeRect(this._currentMeasure.left + this._thickness / 2, this._currentMeasure.top + this._thickness / 2, this._currentMeasure.width - this._thickness, this._currentMeasure.height - this._thickness);
157
+ }
158
+ }
159
+ context.restore();
160
+ }
161
+ _additionalProcessing(parentMeasure, context) {
162
+ super._additionalProcessing(parentMeasure, context);
163
+ this._measureForChildren.width -= 2 * this._thickness;
164
+ this._measureForChildren.height -= 2 * this._thickness;
165
+ this._measureForChildren.left += this._thickness;
166
+ this._measureForChildren.top += this._thickness;
167
+ }
168
+ _drawRoundedRect(context, offset = 0) {
169
+ const x = this._currentMeasure.left + offset;
170
+ const y = this._currentMeasure.top + offset;
171
+ const width = this._currentMeasure.width - offset * 2;
172
+ const height = this._currentMeasure.height - offset * 2;
173
+ // Scale cornerRadius using idealRatio (same pattern as shadowOffset/spacing)
174
+ const idealRatio = this._host.idealRatio;
175
+ for (let index = 0; index < this._cornerRadius.length; index++) {
176
+ this._cachedRadius[index] = Math.abs(Math.min(height / 2, Math.min(width / 2, this._cornerRadius[index] * idealRatio)));
177
+ }
178
+ context.beginPath();
179
+ context.moveTo(x + this._cachedRadius[0], y);
180
+ context.lineTo(x + width - this._cachedRadius[1], y);
181
+ context.arc(x + width - this._cachedRadius[1], y + this._cachedRadius[1], this._cachedRadius[1], (3 * Math.PI) / 2, Math.PI * 2);
182
+ context.lineTo(x + width, y + height - this._cachedRadius[2]);
183
+ context.arc(x + width - this._cachedRadius[2], y + height - this._cachedRadius[2], this._cachedRadius[2], 0, Math.PI / 2);
184
+ context.lineTo(x + this._cachedRadius[3], y + height);
185
+ context.arc(x + this._cachedRadius[3], y + height - this._cachedRadius[3], this._cachedRadius[3], Math.PI / 2, Math.PI);
186
+ context.lineTo(x, y + this._cachedRadius[0]);
187
+ context.arc(x + this._cachedRadius[0], y + this._cachedRadius[0], this._cachedRadius[0], Math.PI, (3 * Math.PI) / 2);
188
+ context.closePath();
189
+ }
190
+ _clipForChildren(context) {
191
+ if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {
192
+ this._drawRoundedRect(context, this._thickness);
193
+ context.clip();
194
+ }
195
+ }
196
+ },
197
+ (() => {
198
+ const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
199
+ _get_thickness_decorators = [serialize()];
200
+ _get_cornerRadius_decorators = [serialize()];
201
+ _get_cornerRadiusX_decorators = [serialize()];
202
+ _get_cornerRadiusY_decorators = [serialize()];
203
+ _get_cornerRadiusZ_decorators = [serialize()];
204
+ _get_cornerRadiusW_decorators = [serialize()];
205
+ __esDecorate(_a, null, _get_thickness_decorators, { kind: "getter", name: "thickness", static: false, private: false, access: { has: obj => "thickness" in obj, get: obj => obj.thickness }, metadata: _metadata }, null, _instanceExtraInitializers);
206
+ __esDecorate(_a, null, _get_cornerRadius_decorators, { kind: "getter", name: "cornerRadius", static: false, private: false, access: { has: obj => "cornerRadius" in obj, get: obj => obj.cornerRadius }, metadata: _metadata }, null, _instanceExtraInitializers);
207
+ __esDecorate(_a, null, _get_cornerRadiusX_decorators, { kind: "getter", name: "cornerRadiusX", static: false, private: false, access: { has: obj => "cornerRadiusX" in obj, get: obj => obj.cornerRadiusX }, metadata: _metadata }, null, _instanceExtraInitializers);
208
+ __esDecorate(_a, null, _get_cornerRadiusY_decorators, { kind: "getter", name: "cornerRadiusY", static: false, private: false, access: { has: obj => "cornerRadiusY" in obj, get: obj => obj.cornerRadiusY }, metadata: _metadata }, null, _instanceExtraInitializers);
209
+ __esDecorate(_a, null, _get_cornerRadiusZ_decorators, { kind: "getter", name: "cornerRadiusZ", static: false, private: false, access: { has: obj => "cornerRadiusZ" in obj, get: obj => obj.cornerRadiusZ }, metadata: _metadata }, null, _instanceExtraInitializers);
210
+ __esDecorate(_a, null, _get_cornerRadiusW_decorators, { kind: "getter", name: "cornerRadiusW", static: false, private: false, access: { has: obj => "cornerRadiusW" in obj, get: obj => obj.cornerRadiusW }, metadata: _metadata }, null, _instanceExtraInitializers);
211
+ if (_metadata) Object.defineProperty(_a, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
212
+ })(),
213
+ _a;
214
+ })();
215
+ export { Rectangle };
205
216
  let _Registered = false;
206
217
  /**
207
218
  * Registers the Rectangle class with the type store for serialization support.
@@ -1 +1 @@
1
- {"version":3,"file":"rectangle.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/rectangle.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { Container } from \"./container.pure\";\r\nimport { type Measure } from \"../measure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\n\r\n/** Class used to create rectangle container */\r\nexport class Rectangle extends Container {\r\n private _thickness = 1;\r\n private _cornerRadius = [0, 0, 0, 0];\r\n private _cachedRadius = [0, 0, 0, 0];\r\n\r\n /** Gets or sets border thickness */\r\n @serialize()\r\n public get thickness(): number {\r\n return this._thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n if (this._thickness === value) {\r\n return;\r\n }\r\n\r\n this._thickness = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the corner radius of all angles */\r\n @serialize()\r\n public get cornerRadius(): number {\r\n return this._cornerRadius[0];\r\n }\r\n\r\n public set cornerRadius(value: number) {\r\n if (value < 0) {\r\n value = 0;\r\n }\r\n\r\n if (this._cornerRadius[0] === value && this._cornerRadius[1] === value && this._cornerRadius[2] === value && this._cornerRadius[3] === value) {\r\n return;\r\n }\r\n\r\n this._cornerRadius[0] = this._cornerRadius[1] = this._cornerRadius[2] = this._cornerRadius[3] = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the corner radius top left angle */\r\n @serialize()\r\n public get cornerRadiusX(): number {\r\n return this._cornerRadius[0];\r\n }\r\n\r\n public set cornerRadiusX(value: number) {\r\n if (this._cornerRadius[0] === value) {\r\n return;\r\n }\r\n this._cornerRadius[0] = value;\r\n }\r\n\r\n /** Gets or sets the corner radius top right angle */\r\n @serialize()\r\n public get cornerRadiusY(): number {\r\n return this._cornerRadius[1];\r\n }\r\n\r\n public set cornerRadiusY(value: number) {\r\n if (this._cornerRadius[1] === value) {\r\n return;\r\n }\r\n this._cornerRadius[1] = value;\r\n }\r\n\r\n /** Gets or sets the corner radius bottom left angle */\r\n @serialize()\r\n public get cornerRadiusZ(): number {\r\n return this._cornerRadius[2];\r\n }\r\n\r\n public set cornerRadiusZ(value: number) {\r\n if (this._cornerRadius[2] === value) {\r\n return;\r\n }\r\n this._cornerRadius[2] = value;\r\n }\r\n\r\n /** Gets or sets the corner radius bottom right angle */\r\n @serialize()\r\n public get cornerRadiusW(): number {\r\n return this._cornerRadius[3];\r\n }\r\n\r\n public set cornerRadiusW(value: number) {\r\n if (this._cornerRadius[3] === value) {\r\n return;\r\n }\r\n this._cornerRadius[3] = value;\r\n }\r\n\r\n /**\r\n * Creates a new Rectangle\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 \"Rectangle\";\r\n }\r\n\r\n /** @internal */\r\n protected override _computeAdditionalOffsetX() {\r\n let additionalWidth = 0;\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n // Take in account the aliasing\r\n additionalWidth += 1;\r\n }\r\n if (this.thickness) {\r\n additionalWidth += this.thickness / 2;\r\n }\r\n return additionalWidth;\r\n }\r\n\r\n /** @internal */\r\n protected override _computeAdditionalOffsetY() {\r\n let additionalHeight = 0;\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n // Take in account the aliasing\r\n additionalHeight += 1;\r\n }\r\n if (this.thickness) {\r\n additionalHeight += this.thickness / 2;\r\n }\r\n return additionalHeight;\r\n }\r\n\r\n protected _getRectangleFill(context: ICanvasRenderingContext) {\r\n return this._getBackgroundColor(context);\r\n }\r\n\r\n protected override _localDraw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;\r\n context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;\r\n }\r\n\r\n if (this._background || this._backgroundGradient) {\r\n context.fillStyle = this._getRectangleFill(context);\r\n\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n this._drawRoundedRect(context, this._thickness / 2);\r\n context.fill();\r\n } else {\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n\r\n if (this._thickness) {\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n\r\n if (this.color || this.gradient) {\r\n context.strokeStyle = this.gradient ? this.gradient.getCanvasGradient(context) : this.color;\r\n }\r\n context.lineWidth = this._thickness;\r\n\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n this._drawRoundedRect(context, this._thickness / 2);\r\n context.stroke();\r\n } else {\r\n context.strokeRect(\r\n this._currentMeasure.left + this._thickness / 2,\r\n this._currentMeasure.top + this._thickness / 2,\r\n this._currentMeasure.width - this._thickness,\r\n this._currentMeasure.height - this._thickness\r\n );\r\n }\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n protected override _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.width -= 2 * this._thickness;\r\n this._measureForChildren.height -= 2 * this._thickness;\r\n this._measureForChildren.left += this._thickness;\r\n this._measureForChildren.top += this._thickness;\r\n }\r\n\r\n private _drawRoundedRect(context: ICanvasRenderingContext, offset: number = 0): void {\r\n const x = this._currentMeasure.left + offset;\r\n const y = this._currentMeasure.top + offset;\r\n const width = this._currentMeasure.width - offset * 2;\r\n const height = this._currentMeasure.height - offset * 2;\r\n\r\n // Scale cornerRadius using idealRatio (same pattern as shadowOffset/spacing)\r\n const idealRatio = this._host.idealRatio;\r\n for (let index = 0; index < this._cornerRadius.length; index++) {\r\n this._cachedRadius[index] = Math.abs(Math.min(height / 2, Math.min(width / 2, this._cornerRadius[index] * idealRatio)));\r\n }\r\n\r\n context.beginPath();\r\n context.moveTo(x + this._cachedRadius[0], y);\r\n context.lineTo(x + width - this._cachedRadius[1], y);\r\n context.arc(x + width - this._cachedRadius[1], y + this._cachedRadius[1], this._cachedRadius[1], (3 * Math.PI) / 2, Math.PI * 2);\r\n context.lineTo(x + width, y + height - this._cachedRadius[2]);\r\n context.arc(x + width - this._cachedRadius[2], y + height - this._cachedRadius[2], this._cachedRadius[2], 0, Math.PI / 2);\r\n context.lineTo(x + this._cachedRadius[3], y + height);\r\n context.arc(x + this._cachedRadius[3], y + height - this._cachedRadius[3], this._cachedRadius[3], Math.PI / 2, Math.PI);\r\n context.lineTo(x, y + this._cachedRadius[0]);\r\n context.arc(x + this._cachedRadius[0], y + this._cachedRadius[0], this._cachedRadius[0], Math.PI, (3 * Math.PI) / 2);\r\n context.closePath();\r\n }\r\n\r\n protected override _clipForChildren(context: ICanvasRenderingContext) {\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n this._drawRoundedRect(context, this._thickness);\r\n context.clip();\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the Rectangle 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 RegisterRectangle(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Rectangle\", Rectangle);\r\n}\r\n"]}
1
+ {"version":3,"file":"rectangle.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/rectangle.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { Container } from \"./container.pure\";\r\nimport { type Measure } from \"../measure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { serialize } from \"core/Misc/decorators\";\r\nimport { type ICanvasRenderingContext } from \"core/Engines/ICanvas\";\r\n\r\n/** Class used to create rectangle container */\r\nexport class Rectangle extends Container {\r\n private _thickness = 1;\r\n private _cornerRadius = [0, 0, 0, 0];\r\n private _cachedRadius = [0, 0, 0, 0];\r\n\r\n /** Gets or sets border thickness */\r\n @serialize()\r\n public get thickness(): number {\r\n return this._thickness;\r\n }\r\n\r\n public set thickness(value: number) {\r\n if (this._thickness === value) {\r\n return;\r\n }\r\n\r\n this._thickness = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the corner radius of all angles */\r\n @serialize()\r\n public get cornerRadius(): number {\r\n return this._cornerRadius[0];\r\n }\r\n\r\n public set cornerRadius(value: number) {\r\n if (value < 0) {\r\n value = 0;\r\n }\r\n\r\n if (this._cornerRadius[0] === value && this._cornerRadius[1] === value && this._cornerRadius[2] === value && this._cornerRadius[3] === value) {\r\n return;\r\n }\r\n\r\n this._cornerRadius[0] = this._cornerRadius[1] = this._cornerRadius[2] = this._cornerRadius[3] = value;\r\n this._markAsDirty();\r\n }\r\n\r\n /** Gets or sets the corner radius top left angle */\r\n @serialize()\r\n public get cornerRadiusX(): number {\r\n return this._cornerRadius[0];\r\n }\r\n\r\n public set cornerRadiusX(value: number) {\r\n if (this._cornerRadius[0] === value) {\r\n return;\r\n }\r\n this._cornerRadius[0] = value;\r\n }\r\n\r\n /** Gets or sets the corner radius top right angle */\r\n @serialize()\r\n public get cornerRadiusY(): number {\r\n return this._cornerRadius[1];\r\n }\r\n\r\n public set cornerRadiusY(value: number) {\r\n if (this._cornerRadius[1] === value) {\r\n return;\r\n }\r\n this._cornerRadius[1] = value;\r\n }\r\n\r\n /** Gets or sets the corner radius bottom left angle */\r\n @serialize()\r\n public get cornerRadiusZ(): number {\r\n return this._cornerRadius[2];\r\n }\r\n\r\n public set cornerRadiusZ(value: number) {\r\n if (this._cornerRadius[2] === value) {\r\n return;\r\n }\r\n this._cornerRadius[2] = value;\r\n }\r\n\r\n /** Gets or sets the corner radius bottom right angle */\r\n @serialize()\r\n public get cornerRadiusW(): number {\r\n return this._cornerRadius[3];\r\n }\r\n\r\n public set cornerRadiusW(value: number) {\r\n if (this._cornerRadius[3] === value) {\r\n return;\r\n }\r\n this._cornerRadius[3] = value;\r\n }\r\n\r\n /**\r\n * Creates a new Rectangle\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 \"Rectangle\";\r\n }\r\n\r\n /** @internal */\r\n protected override _computeAdditionalOffsetX() {\r\n let additionalWidth = 0;\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n // Take in account the aliasing\r\n additionalWidth += 1;\r\n }\r\n if (this.thickness) {\r\n additionalWidth += this.thickness / 2;\r\n }\r\n return additionalWidth;\r\n }\r\n\r\n /** @internal */\r\n protected override _computeAdditionalOffsetY() {\r\n let additionalHeight = 0;\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n // Take in account the aliasing\r\n additionalHeight += 1;\r\n }\r\n if (this.thickness) {\r\n additionalHeight += this.thickness / 2;\r\n }\r\n return additionalHeight;\r\n }\r\n\r\n protected _getRectangleFill(context: ICanvasRenderingContext) {\r\n return this._getBackgroundColor(context);\r\n }\r\n\r\n protected override _localDraw(context: ICanvasRenderingContext): void {\r\n context.save();\r\n\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowColor = this.shadowColor;\r\n context.shadowBlur = this.shadowBlur;\r\n context.shadowOffsetX = this.shadowOffsetX * this._host.idealRatio;\r\n context.shadowOffsetY = this.shadowOffsetY * this._host.idealRatio;\r\n }\r\n\r\n if (this._background || this._backgroundGradient) {\r\n context.fillStyle = this._getRectangleFill(context);\r\n\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n this._drawRoundedRect(context, this._thickness / 2);\r\n context.fill();\r\n } else {\r\n context.fillRect(this._currentMeasure.left, this._currentMeasure.top, this._currentMeasure.width, this._currentMeasure.height);\r\n }\r\n }\r\n\r\n if (this._thickness) {\r\n if (this.shadowBlur || this.shadowOffsetX || this.shadowOffsetY) {\r\n context.shadowBlur = 0;\r\n context.shadowOffsetX = 0;\r\n context.shadowOffsetY = 0;\r\n }\r\n\r\n if (this.color || this.gradient) {\r\n context.strokeStyle = this.gradient ? this.gradient.getCanvasGradient(context) : this.color;\r\n }\r\n context.lineWidth = this._thickness;\r\n\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n this._drawRoundedRect(context, this._thickness / 2);\r\n context.stroke();\r\n } else {\r\n context.strokeRect(\r\n this._currentMeasure.left + this._thickness / 2,\r\n this._currentMeasure.top + this._thickness / 2,\r\n this._currentMeasure.width - this._thickness,\r\n this._currentMeasure.height - this._thickness\r\n );\r\n }\r\n }\r\n\r\n context.restore();\r\n }\r\n\r\n protected override _additionalProcessing(parentMeasure: Measure, context: ICanvasRenderingContext): void {\r\n super._additionalProcessing(parentMeasure, context);\r\n\r\n this._measureForChildren.width -= 2 * this._thickness;\r\n this._measureForChildren.height -= 2 * this._thickness;\r\n this._measureForChildren.left += this._thickness;\r\n this._measureForChildren.top += this._thickness;\r\n }\r\n\r\n private _drawRoundedRect(context: ICanvasRenderingContext, offset: number = 0): void {\r\n const x = this._currentMeasure.left + offset;\r\n const y = this._currentMeasure.top + offset;\r\n const width = this._currentMeasure.width - offset * 2;\r\n const height = this._currentMeasure.height - offset * 2;\r\n\r\n // Scale cornerRadius using idealRatio (same pattern as shadowOffset/spacing)\r\n const idealRatio = this._host.idealRatio;\r\n for (let index = 0; index < this._cornerRadius.length; index++) {\r\n this._cachedRadius[index] = Math.abs(Math.min(height / 2, Math.min(width / 2, this._cornerRadius[index] * idealRatio)));\r\n }\r\n\r\n context.beginPath();\r\n context.moveTo(x + this._cachedRadius[0], y);\r\n context.lineTo(x + width - this._cachedRadius[1], y);\r\n context.arc(x + width - this._cachedRadius[1], y + this._cachedRadius[1], this._cachedRadius[1], (3 * Math.PI) / 2, Math.PI * 2);\r\n context.lineTo(x + width, y + height - this._cachedRadius[2]);\r\n context.arc(x + width - this._cachedRadius[2], y + height - this._cachedRadius[2], this._cachedRadius[2], 0, Math.PI / 2);\r\n context.lineTo(x + this._cachedRadius[3], y + height);\r\n context.arc(x + this._cachedRadius[3], y + height - this._cachedRadius[3], this._cachedRadius[3], Math.PI / 2, Math.PI);\r\n context.lineTo(x, y + this._cachedRadius[0]);\r\n context.arc(x + this._cachedRadius[0], y + this._cachedRadius[0], this._cachedRadius[0], Math.PI, (3 * Math.PI) / 2);\r\n context.closePath();\r\n }\r\n\r\n protected override _clipForChildren(context: ICanvasRenderingContext) {\r\n if (this._cornerRadius[0] !== 0 || this._cornerRadius[1] !== 0 || this._cornerRadius[2] !== 0 || this._cornerRadius[3] !== 0) {\r\n this._drawRoundedRect(context, this._thickness);\r\n context.clip();\r\n }\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the Rectangle 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 RegisterRectangle(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.Rectangle\", Rectangle);\r\n}\r\n"]}