@babylonjs/gui 5.0.0-rc.7 → 5.0.0-rc.9
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/2D/adtInstrumentation.d.ts +52 -52
- package/2D/adtInstrumentation.js +126 -126
- package/2D/advancedDynamicTexture.d.ts +448 -448
- package/2D/advancedDynamicTexture.js +1318 -1318
- package/2D/controls/button.d.ts +135 -135
- package/2D/controls/button.js +276 -276
- package/2D/controls/checkbox.d.ts +59 -59
- package/2D/controls/checkbox.js +188 -188
- package/2D/controls/colorpicker.d.ts +103 -103
- package/2D/controls/colorpicker.js +1417 -1417
- package/2D/controls/container.d.ts +175 -175
- package/2D/controls/container.js +570 -570
- package/2D/controls/control.d.ts +866 -866
- package/2D/controls/control.js +2433 -2433
- package/2D/controls/displayGrid.d.ts +53 -53
- package/2D/controls/displayGrid.js +245 -245
- package/2D/controls/ellipse.d.ts +21 -21
- package/2D/controls/ellipse.js +85 -85
- package/2D/controls/focusableButton.d.ts +59 -59
- package/2D/controls/focusableButton.js +99 -99
- package/2D/controls/focusableControl.d.ts +34 -34
- package/2D/controls/focusableControl.js +1 -1
- package/2D/controls/grid.d.ts +139 -139
- package/2D/controls/grid.js +529 -529
- package/2D/controls/image.d.ts +204 -204
- package/2D/controls/image.js +887 -887
- package/2D/controls/index.d.ts +29 -29
- package/2D/controls/index.js +29 -29
- package/2D/controls/inputPassword.d.ts +8 -8
- package/2D/controls/inputPassword.js +25 -25
- package/2D/controls/inputText.d.ts +201 -201
- package/2D/controls/inputText.js +1119 -1119
- package/2D/controls/line.d.ts +66 -66
- package/2D/controls/line.js +271 -271
- package/2D/controls/multiLine.d.ts +75 -75
- package/2D/controls/multiLine.js +262 -262
- package/2D/controls/radioButton.d.ts +49 -49
- package/2D/controls/radioButton.js +205 -205
- package/2D/controls/rectangle.d.ts +29 -29
- package/2D/controls/rectangle.js +150 -150
- package/2D/controls/scrollViewers/scrollViewer.d.ts +182 -182
- package/2D/controls/scrollViewers/scrollViewer.js +677 -677
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +57 -57
- package/2D/controls/scrollViewers/scrollViewerWindow.js +278 -278
- package/2D/controls/selector.d.ts +263 -263
- package/2D/controls/selector.js +692 -692
- package/2D/controls/sliders/baseSlider.d.ts +82 -82
- package/2D/controls/sliders/baseSlider.js +347 -347
- package/2D/controls/sliders/imageBasedSlider.d.ts +49 -49
- package/2D/controls/sliders/imageBasedSlider.js +192 -192
- package/2D/controls/sliders/imageScrollBar.d.ts +65 -65
- package/2D/controls/sliders/imageScrollBar.js +263 -263
- package/2D/controls/sliders/scrollBar.d.ts +38 -38
- package/2D/controls/sliders/scrollBar.js +143 -143
- package/2D/controls/sliders/slider.d.ts +35 -35
- package/2D/controls/sliders/slider.js +271 -271
- package/2D/controls/stackPanel.d.ts +64 -64
- package/2D/controls/stackPanel.js +246 -246
- package/2D/controls/statics.d.ts +6 -6
- package/2D/controls/statics.js +49 -49
- package/2D/controls/textBlock.d.ts +175 -175
- package/2D/controls/textBlock.js +603 -603
- package/2D/controls/textWrapper.d.ts +13 -13
- package/2D/controls/textWrapper.js +101 -101
- package/2D/controls/toggleButton.d.ts +117 -117
- package/2D/controls/toggleButton.js +268 -268
- package/2D/controls/virtualKeyboard.d.ts +96 -96
- package/2D/controls/virtualKeyboard.js +256 -256
- package/2D/index.d.ts +9 -9
- package/2D/index.js +9 -9
- package/2D/math2D.d.ts +117 -117
- package/2D/math2D.js +221 -221
- package/2D/measure.d.ts +77 -77
- package/2D/measure.js +139 -139
- package/2D/multiLinePoint.d.ts +47 -47
- package/2D/multiLinePoint.js +127 -127
- package/2D/style.d.ts +46 -46
- package/2D/style.js +97 -97
- package/2D/valueAndUnit.d.ts +89 -89
- package/2D/valueAndUnit.js +226 -226
- package/2D/xmlLoader.d.ts +60 -60
- package/2D/xmlLoader.js +348 -348
- package/3D/behaviors/defaultBehavior.d.ts +73 -73
- package/3D/behaviors/defaultBehavior.js +121 -121
- package/3D/controls/abstractButton3D.d.ts +15 -15
- package/3D/controls/abstractButton3D.js +25 -25
- package/3D/controls/button3D.d.ts +30 -30
- package/3D/controls/button3D.js +93 -93
- package/3D/controls/container3D.d.ts +72 -72
- package/3D/controls/container3D.js +139 -139
- package/3D/controls/contentDisplay3D.d.ts +30 -30
- package/3D/controls/contentDisplay3D.js +79 -79
- package/3D/controls/control3D.d.ts +201 -201
- package/3D/controls/control3D.js +445 -445
- package/3D/controls/cylinderPanel.d.ts +17 -17
- package/3D/controls/cylinderPanel.js +66 -66
- package/3D/controls/handMenu.d.ts +28 -28
- package/3D/controls/handMenu.js +47 -47
- package/3D/controls/holographicBackplate.d.ts +49 -49
- package/3D/controls/holographicBackplate.js +120 -120
- package/3D/controls/holographicButton.d.ts +84 -84
- package/3D/controls/holographicButton.js +339 -339
- package/3D/controls/holographicSlate.d.ts +131 -131
- package/3D/controls/holographicSlate.js +431 -431
- package/3D/controls/index.d.ts +21 -21
- package/3D/controls/index.js +21 -21
- package/3D/controls/meshButton3D.d.ts +21 -21
- package/3D/controls/meshButton3D.js +62 -62
- package/3D/controls/nearMenu.d.ts +44 -44
- package/3D/controls/nearMenu.js +114 -114
- package/3D/controls/planePanel.d.ts +9 -9
- package/3D/controls/planePanel.js +36 -36
- package/3D/controls/scatterPanel.d.ts +18 -18
- package/3D/controls/scatterPanel.js +108 -108
- package/3D/controls/slider3D.d.ts +81 -81
- package/3D/controls/slider3D.js +268 -268
- package/3D/controls/spherePanel.d.ts +17 -17
- package/3D/controls/spherePanel.js +67 -67
- package/3D/controls/stackPanel3D.d.ts +22 -22
- package/3D/controls/stackPanel3D.js +107 -107
- package/3D/controls/touchButton3D.d.ts +80 -80
- package/3D/controls/touchButton3D.js +233 -233
- package/3D/controls/touchHolographicButton.d.ts +110 -110
- package/3D/controls/touchHolographicButton.js +445 -445
- package/3D/controls/touchHolographicMenu.d.ts +61 -61
- package/3D/controls/touchHolographicMenu.js +149 -149
- package/3D/controls/touchMeshButton3D.d.ts +21 -21
- package/3D/controls/touchMeshButton3D.js +62 -62
- package/3D/controls/volumeBasedPanel.d.ts +53 -53
- package/3D/controls/volumeBasedPanel.js +174 -174
- package/3D/gizmos/gizmoHandle.d.ts +108 -108
- package/3D/gizmos/gizmoHandle.js +209 -209
- package/3D/gizmos/index.d.ts +2 -2
- package/3D/gizmos/index.js +2 -2
- package/3D/gizmos/slateGizmo.d.ts +57 -57
- package/3D/gizmos/slateGizmo.js +369 -369
- package/3D/gui3DManager.d.ts +94 -94
- package/3D/gui3DManager.js +257 -257
- package/3D/index.d.ts +5 -5
- package/3D/index.js +5 -5
- package/3D/materials/fluent/fluentMaterial.d.ts +90 -90
- package/3D/materials/fluent/fluentMaterial.js +292 -292
- package/3D/materials/fluent/index.d.ts +1 -1
- package/3D/materials/fluent/index.js +1 -1
- package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -5
- package/3D/materials/fluent/shaders/fluent.fragment.js +8 -8
- package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -5
- package/3D/materials/fluent/shaders/fluent.vertex.js +8 -8
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +154 -154
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +469 -469
- package/3D/materials/fluentBackplate/index.d.ts +1 -1
- package/3D/materials/fluentBackplate/index.js +1 -1
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -5
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +8 -8
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -5
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +8 -8
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +189 -189
- package/3D/materials/fluentButton/fluentButtonMaterial.js +539 -539
- package/3D/materials/fluentButton/index.d.ts +1 -1
- package/3D/materials/fluentButton/index.js +1 -1
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -5
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +8 -8
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -5
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +8 -8
- package/3D/materials/fluentMaterial.d.ts +4 -4
- package/3D/materials/fluentMaterial.js +4 -4
- package/3D/materials/handle/handleMaterial.d.ts +68 -68
- package/3D/materials/handle/handleMaterial.js +126 -126
- package/3D/materials/handle/index.d.ts +1 -1
- package/3D/materials/handle/index.js +1 -1
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -5
- package/3D/materials/handle/shaders/handle.fragment.js +8 -8
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -5
- package/3D/materials/handle/shaders/handle.vertex.js +8 -8
- package/3D/materials/index.d.ts +5 -5
- package/3D/materials/index.js +5 -5
- package/3D/materials/mrdl/index.d.ts +3 -3
- package/3D/materials/mrdl/index.js +3 -3
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +147 -147
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +436 -436
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +333 -333
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +851 -851
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +333 -333
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +851 -851
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +8 -8
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -5
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +8 -8
- package/3D/vector3WithInfo.d.ts +16 -16
- package/3D/vector3WithInfo.js +23 -23
- package/index.d.ts +2 -2
- package/index.js +2 -2
- package/legacy/legacy.d.ts +1 -1
- package/legacy/legacy.js +13 -13
- package/package.json +2 -2
package/2D/valueAndUnit.js
CHANGED
|
@@ -1,227 +1,227 @@
|
|
|
1
|
-
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
-
/**
|
|
3
|
-
* Class used to specific a value and its associated unit
|
|
4
|
-
*/
|
|
5
|
-
var ValueAndUnit = /** @class */ (function () {
|
|
6
|
-
/**
|
|
7
|
-
* Creates a new ValueAndUnit
|
|
8
|
-
* @param value defines the value to store
|
|
9
|
-
* @param unit defines the unit to store - defaults to ValueAndUnit.UNITMODE_PIXEL
|
|
10
|
-
* @param negativeValueAllowed defines a boolean indicating if the value can be negative
|
|
11
|
-
*/
|
|
12
|
-
function ValueAndUnit(value,
|
|
13
|
-
/** defines the unit to store */
|
|
14
|
-
unit,
|
|
15
|
-
/** defines a boolean indicating if the value can be negative */
|
|
16
|
-
negativeValueAllowed) {
|
|
17
|
-
if (unit === void 0) { unit = ValueAndUnit.UNITMODE_PIXEL; }
|
|
18
|
-
if (negativeValueAllowed === void 0) { negativeValueAllowed = true; }
|
|
19
|
-
this.negativeValueAllowed = negativeValueAllowed;
|
|
20
|
-
this._value = 1;
|
|
21
|
-
this._unit = ValueAndUnit.UNITMODE_PIXEL;
|
|
22
|
-
/**
|
|
23
|
-
* Gets or sets a value indicating that this value will not scale accordingly with adaptive scaling property
|
|
24
|
-
* @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
|
|
25
|
-
*/
|
|
26
|
-
this.ignoreAdaptiveScaling = false;
|
|
27
|
-
/**
|
|
28
|
-
* Observable event triggered each time the value or unit changes
|
|
29
|
-
*/
|
|
30
|
-
this.onChangedObservable = new Observable();
|
|
31
|
-
this._value = value;
|
|
32
|
-
this._unit = unit;
|
|
33
|
-
this._originalUnit = unit;
|
|
34
|
-
}
|
|
35
|
-
Object.defineProperty(ValueAndUnit.prototype, "isPercentage", {
|
|
36
|
-
/** Gets a boolean indicating if the value is a percentage */
|
|
37
|
-
get: function () {
|
|
38
|
-
return this._unit === ValueAndUnit.UNITMODE_PERCENTAGE;
|
|
39
|
-
},
|
|
40
|
-
enumerable: false,
|
|
41
|
-
configurable: true
|
|
42
|
-
});
|
|
43
|
-
Object.defineProperty(ValueAndUnit.prototype, "isPixel", {
|
|
44
|
-
/** Gets a boolean indicating if the value is store as pixel */
|
|
45
|
-
get: function () {
|
|
46
|
-
return this._unit === ValueAndUnit.UNITMODE_PIXEL;
|
|
47
|
-
},
|
|
48
|
-
enumerable: false,
|
|
49
|
-
configurable: true
|
|
50
|
-
});
|
|
51
|
-
Object.defineProperty(ValueAndUnit.prototype, "internalValue", {
|
|
52
|
-
/**
|
|
53
|
-
* Gets value (without units)
|
|
54
|
-
* @deprecated use value property instead
|
|
55
|
-
*/
|
|
56
|
-
get: function () {
|
|
57
|
-
return this._value;
|
|
58
|
-
},
|
|
59
|
-
enumerable: false,
|
|
60
|
-
configurable: true
|
|
61
|
-
});
|
|
62
|
-
Object.defineProperty(ValueAndUnit.prototype, "value", {
|
|
63
|
-
/** Gets value (without units) */
|
|
64
|
-
get: function () {
|
|
65
|
-
return this._value;
|
|
66
|
-
},
|
|
67
|
-
/** Sets value (without units) */
|
|
68
|
-
set: function (value) {
|
|
69
|
-
if (value !== this._value) {
|
|
70
|
-
this._value = value;
|
|
71
|
-
this.onChangedObservable.notifyObservers();
|
|
72
|
-
}
|
|
73
|
-
},
|
|
74
|
-
enumerable: false,
|
|
75
|
-
configurable: true
|
|
76
|
-
});
|
|
77
|
-
Object.defineProperty(ValueAndUnit.prototype, "unit", {
|
|
78
|
-
/** Gets units (without value) */
|
|
79
|
-
get: function () {
|
|
80
|
-
return this._unit;
|
|
81
|
-
},
|
|
82
|
-
/** Sets units (without value) */
|
|
83
|
-
set: function (value) {
|
|
84
|
-
if (value !== this._unit) {
|
|
85
|
-
this._unit = value;
|
|
86
|
-
this.onChangedObservable.notifyObservers();
|
|
87
|
-
}
|
|
88
|
-
},
|
|
89
|
-
enumerable: false,
|
|
90
|
-
configurable: true
|
|
91
|
-
});
|
|
92
|
-
/**
|
|
93
|
-
* Gets value as pixel
|
|
94
|
-
* @param host defines the root host
|
|
95
|
-
* @param refValue defines the reference value for percentages
|
|
96
|
-
* @returns the value as pixel
|
|
97
|
-
*/
|
|
98
|
-
ValueAndUnit.prototype.getValueInPixel = function (host, refValue) {
|
|
99
|
-
if (this.isPixel) {
|
|
100
|
-
return this.getValue(host);
|
|
101
|
-
}
|
|
102
|
-
return this.getValue(host) * refValue;
|
|
103
|
-
};
|
|
104
|
-
/**
|
|
105
|
-
* Update the current value and unit.
|
|
106
|
-
* @param value defines the value to store
|
|
107
|
-
* @param unit defines the unit to store
|
|
108
|
-
* @returns the current ValueAndUnit
|
|
109
|
-
*/
|
|
110
|
-
ValueAndUnit.prototype.updateInPlace = function (value, unit) {
|
|
111
|
-
if (unit === void 0) { unit = ValueAndUnit.UNITMODE_PIXEL; }
|
|
112
|
-
if (this.value !== value || this.unit !== unit) {
|
|
113
|
-
// set member variables to notify only once
|
|
114
|
-
this._value = value;
|
|
115
|
-
this._unit = unit;
|
|
116
|
-
this.onChangedObservable.notifyObservers();
|
|
117
|
-
}
|
|
118
|
-
return this;
|
|
119
|
-
};
|
|
120
|
-
/**
|
|
121
|
-
* Gets the value accordingly to its unit
|
|
122
|
-
* @param host defines the root host
|
|
123
|
-
* @returns the value
|
|
124
|
-
*/
|
|
125
|
-
ValueAndUnit.prototype.getValue = function (host) {
|
|
126
|
-
if (host && !this.ignoreAdaptiveScaling && this.unit !== ValueAndUnit.UNITMODE_PERCENTAGE) {
|
|
127
|
-
var width = 0;
|
|
128
|
-
var height = 0;
|
|
129
|
-
if (host.idealWidth) {
|
|
130
|
-
width = (this._value * host.getSize().width) / host.idealWidth;
|
|
131
|
-
}
|
|
132
|
-
if (host.idealHeight) {
|
|
133
|
-
height = (this._value * host.getSize().height) / host.idealHeight;
|
|
134
|
-
}
|
|
135
|
-
if (host.useSmallestIdeal && host.idealWidth && host.idealHeight) {
|
|
136
|
-
return window.innerWidth < window.innerHeight ? width : height;
|
|
137
|
-
}
|
|
138
|
-
if (host.idealWidth) {
|
|
139
|
-
// horizontal
|
|
140
|
-
return width;
|
|
141
|
-
}
|
|
142
|
-
if (host.idealHeight) {
|
|
143
|
-
// vertical
|
|
144
|
-
return height;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
return this._value;
|
|
148
|
-
};
|
|
149
|
-
/**
|
|
150
|
-
* Gets a string representation of the value
|
|
151
|
-
* @param host defines the root host
|
|
152
|
-
* @param decimals defines an optional number of decimals to display
|
|
153
|
-
* @returns a string
|
|
154
|
-
*/
|
|
155
|
-
ValueAndUnit.prototype.toString = function (host, decimals) {
|
|
156
|
-
switch (this._unit) {
|
|
157
|
-
case ValueAndUnit.UNITMODE_PERCENTAGE: {
|
|
158
|
-
var percentage = this.getValue(host) * 100;
|
|
159
|
-
return (decimals ? percentage.toFixed(decimals) : percentage) + "%";
|
|
160
|
-
}
|
|
161
|
-
case ValueAndUnit.UNITMODE_PIXEL: {
|
|
162
|
-
var pixels = this.getValue(host);
|
|
163
|
-
return (decimals ? pixels.toFixed(decimals) : pixels) + "px";
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
return this._unit.toString();
|
|
167
|
-
};
|
|
168
|
-
/**
|
|
169
|
-
* Store a value parsed from a string
|
|
170
|
-
* @param source defines the source string
|
|
171
|
-
* @returns true if the value was successfully parsed and updated
|
|
172
|
-
*/
|
|
173
|
-
ValueAndUnit.prototype.fromString = function (source) {
|
|
174
|
-
var match = ValueAndUnit._Regex.exec(source.toString());
|
|
175
|
-
if (!match || match.length === 0) {
|
|
176
|
-
return false;
|
|
177
|
-
}
|
|
178
|
-
var sourceValue = parseFloat(match[1]);
|
|
179
|
-
var sourceUnit = this._originalUnit;
|
|
180
|
-
if (!this.negativeValueAllowed) {
|
|
181
|
-
if (sourceValue < 0) {
|
|
182
|
-
sourceValue = 0;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
if (match.length === 4) {
|
|
186
|
-
switch (match[3]) {
|
|
187
|
-
case "px":
|
|
188
|
-
sourceUnit = ValueAndUnit.UNITMODE_PIXEL;
|
|
189
|
-
break;
|
|
190
|
-
case "%":
|
|
191
|
-
sourceUnit = ValueAndUnit.UNITMODE_PERCENTAGE;
|
|
192
|
-
sourceValue /= 100.0;
|
|
193
|
-
break;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if (sourceValue === this._value && sourceUnit === this._unit) {
|
|
197
|
-
return false;
|
|
198
|
-
}
|
|
199
|
-
this._value = sourceValue;
|
|
200
|
-
this._unit = sourceUnit;
|
|
201
|
-
this.onChangedObservable.notifyObservers();
|
|
202
|
-
return true;
|
|
203
|
-
};
|
|
204
|
-
Object.defineProperty(ValueAndUnit, "UNITMODE_PERCENTAGE", {
|
|
205
|
-
/** UNITMODE_PERCENTAGE */
|
|
206
|
-
get: function () {
|
|
207
|
-
return ValueAndUnit._UNITMODE_PERCENTAGE;
|
|
208
|
-
},
|
|
209
|
-
enumerable: false,
|
|
210
|
-
configurable: true
|
|
211
|
-
});
|
|
212
|
-
Object.defineProperty(ValueAndUnit, "UNITMODE_PIXEL", {
|
|
213
|
-
/** UNITMODE_PIXEL */
|
|
214
|
-
get: function () {
|
|
215
|
-
return ValueAndUnit._UNITMODE_PIXEL;
|
|
216
|
-
},
|
|
217
|
-
enumerable: false,
|
|
218
|
-
configurable: true
|
|
219
|
-
});
|
|
220
|
-
// Static
|
|
221
|
-
ValueAndUnit._Regex = /(^-?\d*(\.\d+)?)(%|px)?/;
|
|
222
|
-
ValueAndUnit._UNITMODE_PERCENTAGE = 0;
|
|
223
|
-
ValueAndUnit._UNITMODE_PIXEL = 1;
|
|
224
|
-
return ValueAndUnit;
|
|
225
|
-
}());
|
|
226
|
-
export { ValueAndUnit };
|
|
1
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
+
/**
|
|
3
|
+
* Class used to specific a value and its associated unit
|
|
4
|
+
*/
|
|
5
|
+
var ValueAndUnit = /** @class */ (function () {
|
|
6
|
+
/**
|
|
7
|
+
* Creates a new ValueAndUnit
|
|
8
|
+
* @param value defines the value to store
|
|
9
|
+
* @param unit defines the unit to store - defaults to ValueAndUnit.UNITMODE_PIXEL
|
|
10
|
+
* @param negativeValueAllowed defines a boolean indicating if the value can be negative
|
|
11
|
+
*/
|
|
12
|
+
function ValueAndUnit(value,
|
|
13
|
+
/** defines the unit to store */
|
|
14
|
+
unit,
|
|
15
|
+
/** defines a boolean indicating if the value can be negative */
|
|
16
|
+
negativeValueAllowed) {
|
|
17
|
+
if (unit === void 0) { unit = ValueAndUnit.UNITMODE_PIXEL; }
|
|
18
|
+
if (negativeValueAllowed === void 0) { negativeValueAllowed = true; }
|
|
19
|
+
this.negativeValueAllowed = negativeValueAllowed;
|
|
20
|
+
this._value = 1;
|
|
21
|
+
this._unit = ValueAndUnit.UNITMODE_PIXEL;
|
|
22
|
+
/**
|
|
23
|
+
* Gets or sets a value indicating that this value will not scale accordingly with adaptive scaling property
|
|
24
|
+
* @see https://doc.babylonjs.com/how_to/gui#adaptive-scaling
|
|
25
|
+
*/
|
|
26
|
+
this.ignoreAdaptiveScaling = false;
|
|
27
|
+
/**
|
|
28
|
+
* Observable event triggered each time the value or unit changes
|
|
29
|
+
*/
|
|
30
|
+
this.onChangedObservable = new Observable();
|
|
31
|
+
this._value = value;
|
|
32
|
+
this._unit = unit;
|
|
33
|
+
this._originalUnit = unit;
|
|
34
|
+
}
|
|
35
|
+
Object.defineProperty(ValueAndUnit.prototype, "isPercentage", {
|
|
36
|
+
/** Gets a boolean indicating if the value is a percentage */
|
|
37
|
+
get: function () {
|
|
38
|
+
return this._unit === ValueAndUnit.UNITMODE_PERCENTAGE;
|
|
39
|
+
},
|
|
40
|
+
enumerable: false,
|
|
41
|
+
configurable: true
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(ValueAndUnit.prototype, "isPixel", {
|
|
44
|
+
/** Gets a boolean indicating if the value is store as pixel */
|
|
45
|
+
get: function () {
|
|
46
|
+
return this._unit === ValueAndUnit.UNITMODE_PIXEL;
|
|
47
|
+
},
|
|
48
|
+
enumerable: false,
|
|
49
|
+
configurable: true
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(ValueAndUnit.prototype, "internalValue", {
|
|
52
|
+
/**
|
|
53
|
+
* Gets value (without units)
|
|
54
|
+
* @deprecated use value property instead
|
|
55
|
+
*/
|
|
56
|
+
get: function () {
|
|
57
|
+
return this._value;
|
|
58
|
+
},
|
|
59
|
+
enumerable: false,
|
|
60
|
+
configurable: true
|
|
61
|
+
});
|
|
62
|
+
Object.defineProperty(ValueAndUnit.prototype, "value", {
|
|
63
|
+
/** Gets value (without units) */
|
|
64
|
+
get: function () {
|
|
65
|
+
return this._value;
|
|
66
|
+
},
|
|
67
|
+
/** Sets value (without units) */
|
|
68
|
+
set: function (value) {
|
|
69
|
+
if (value !== this._value) {
|
|
70
|
+
this._value = value;
|
|
71
|
+
this.onChangedObservable.notifyObservers();
|
|
72
|
+
}
|
|
73
|
+
},
|
|
74
|
+
enumerable: false,
|
|
75
|
+
configurable: true
|
|
76
|
+
});
|
|
77
|
+
Object.defineProperty(ValueAndUnit.prototype, "unit", {
|
|
78
|
+
/** Gets units (without value) */
|
|
79
|
+
get: function () {
|
|
80
|
+
return this._unit;
|
|
81
|
+
},
|
|
82
|
+
/** Sets units (without value) */
|
|
83
|
+
set: function (value) {
|
|
84
|
+
if (value !== this._unit) {
|
|
85
|
+
this._unit = value;
|
|
86
|
+
this.onChangedObservable.notifyObservers();
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
enumerable: false,
|
|
90
|
+
configurable: true
|
|
91
|
+
});
|
|
92
|
+
/**
|
|
93
|
+
* Gets value as pixel
|
|
94
|
+
* @param host defines the root host
|
|
95
|
+
* @param refValue defines the reference value for percentages
|
|
96
|
+
* @returns the value as pixel
|
|
97
|
+
*/
|
|
98
|
+
ValueAndUnit.prototype.getValueInPixel = function (host, refValue) {
|
|
99
|
+
if (this.isPixel) {
|
|
100
|
+
return this.getValue(host);
|
|
101
|
+
}
|
|
102
|
+
return this.getValue(host) * refValue;
|
|
103
|
+
};
|
|
104
|
+
/**
|
|
105
|
+
* Update the current value and unit.
|
|
106
|
+
* @param value defines the value to store
|
|
107
|
+
* @param unit defines the unit to store
|
|
108
|
+
* @returns the current ValueAndUnit
|
|
109
|
+
*/
|
|
110
|
+
ValueAndUnit.prototype.updateInPlace = function (value, unit) {
|
|
111
|
+
if (unit === void 0) { unit = ValueAndUnit.UNITMODE_PIXEL; }
|
|
112
|
+
if (this.value !== value || this.unit !== unit) {
|
|
113
|
+
// set member variables to notify only once
|
|
114
|
+
this._value = value;
|
|
115
|
+
this._unit = unit;
|
|
116
|
+
this.onChangedObservable.notifyObservers();
|
|
117
|
+
}
|
|
118
|
+
return this;
|
|
119
|
+
};
|
|
120
|
+
/**
|
|
121
|
+
* Gets the value accordingly to its unit
|
|
122
|
+
* @param host defines the root host
|
|
123
|
+
* @returns the value
|
|
124
|
+
*/
|
|
125
|
+
ValueAndUnit.prototype.getValue = function (host) {
|
|
126
|
+
if (host && !this.ignoreAdaptiveScaling && this.unit !== ValueAndUnit.UNITMODE_PERCENTAGE) {
|
|
127
|
+
var width = 0;
|
|
128
|
+
var height = 0;
|
|
129
|
+
if (host.idealWidth) {
|
|
130
|
+
width = (this._value * host.getSize().width) / host.idealWidth;
|
|
131
|
+
}
|
|
132
|
+
if (host.idealHeight) {
|
|
133
|
+
height = (this._value * host.getSize().height) / host.idealHeight;
|
|
134
|
+
}
|
|
135
|
+
if (host.useSmallestIdeal && host.idealWidth && host.idealHeight) {
|
|
136
|
+
return window.innerWidth < window.innerHeight ? width : height;
|
|
137
|
+
}
|
|
138
|
+
if (host.idealWidth) {
|
|
139
|
+
// horizontal
|
|
140
|
+
return width;
|
|
141
|
+
}
|
|
142
|
+
if (host.idealHeight) {
|
|
143
|
+
// vertical
|
|
144
|
+
return height;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return this._value;
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Gets a string representation of the value
|
|
151
|
+
* @param host defines the root host
|
|
152
|
+
* @param decimals defines an optional number of decimals to display
|
|
153
|
+
* @returns a string
|
|
154
|
+
*/
|
|
155
|
+
ValueAndUnit.prototype.toString = function (host, decimals) {
|
|
156
|
+
switch (this._unit) {
|
|
157
|
+
case ValueAndUnit.UNITMODE_PERCENTAGE: {
|
|
158
|
+
var percentage = this.getValue(host) * 100;
|
|
159
|
+
return (decimals ? percentage.toFixed(decimals) : percentage) + "%";
|
|
160
|
+
}
|
|
161
|
+
case ValueAndUnit.UNITMODE_PIXEL: {
|
|
162
|
+
var pixels = this.getValue(host);
|
|
163
|
+
return (decimals ? pixels.toFixed(decimals) : pixels) + "px";
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
return this._unit.toString();
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Store a value parsed from a string
|
|
170
|
+
* @param source defines the source string
|
|
171
|
+
* @returns true if the value was successfully parsed and updated
|
|
172
|
+
*/
|
|
173
|
+
ValueAndUnit.prototype.fromString = function (source) {
|
|
174
|
+
var match = ValueAndUnit._Regex.exec(source.toString());
|
|
175
|
+
if (!match || match.length === 0) {
|
|
176
|
+
return false;
|
|
177
|
+
}
|
|
178
|
+
var sourceValue = parseFloat(match[1]);
|
|
179
|
+
var sourceUnit = this._originalUnit;
|
|
180
|
+
if (!this.negativeValueAllowed) {
|
|
181
|
+
if (sourceValue < 0) {
|
|
182
|
+
sourceValue = 0;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
if (match.length === 4) {
|
|
186
|
+
switch (match[3]) {
|
|
187
|
+
case "px":
|
|
188
|
+
sourceUnit = ValueAndUnit.UNITMODE_PIXEL;
|
|
189
|
+
break;
|
|
190
|
+
case "%":
|
|
191
|
+
sourceUnit = ValueAndUnit.UNITMODE_PERCENTAGE;
|
|
192
|
+
sourceValue /= 100.0;
|
|
193
|
+
break;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (sourceValue === this._value && sourceUnit === this._unit) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
199
|
+
this._value = sourceValue;
|
|
200
|
+
this._unit = sourceUnit;
|
|
201
|
+
this.onChangedObservable.notifyObservers();
|
|
202
|
+
return true;
|
|
203
|
+
};
|
|
204
|
+
Object.defineProperty(ValueAndUnit, "UNITMODE_PERCENTAGE", {
|
|
205
|
+
/** UNITMODE_PERCENTAGE */
|
|
206
|
+
get: function () {
|
|
207
|
+
return ValueAndUnit._UNITMODE_PERCENTAGE;
|
|
208
|
+
},
|
|
209
|
+
enumerable: false,
|
|
210
|
+
configurable: true
|
|
211
|
+
});
|
|
212
|
+
Object.defineProperty(ValueAndUnit, "UNITMODE_PIXEL", {
|
|
213
|
+
/** UNITMODE_PIXEL */
|
|
214
|
+
get: function () {
|
|
215
|
+
return ValueAndUnit._UNITMODE_PIXEL;
|
|
216
|
+
},
|
|
217
|
+
enumerable: false,
|
|
218
|
+
configurable: true
|
|
219
|
+
});
|
|
220
|
+
// Static
|
|
221
|
+
ValueAndUnit._Regex = /(^-?\d*(\.\d+)?)(%|px)?/;
|
|
222
|
+
ValueAndUnit._UNITMODE_PERCENTAGE = 0;
|
|
223
|
+
ValueAndUnit._UNITMODE_PIXEL = 1;
|
|
224
|
+
return ValueAndUnit;
|
|
225
|
+
}());
|
|
226
|
+
export { ValueAndUnit };
|
|
227
227
|
//# sourceMappingURL=valueAndUnit.js.map
|
package/2D/xmlLoader.d.ts
CHANGED
|
@@ -1,60 +1,60 @@
|
|
|
1
|
-
import { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
-
/**
|
|
3
|
-
* Class used to load GUI via XML.
|
|
4
|
-
*/
|
|
5
|
-
export declare class XmlLoader {
|
|
6
|
-
private _nodes;
|
|
7
|
-
private _nodeTypes;
|
|
8
|
-
private _isLoaded;
|
|
9
|
-
private _objectAttributes;
|
|
10
|
-
private _rootNode;
|
|
11
|
-
private _parentClass;
|
|
12
|
-
/**
|
|
13
|
-
* Create a new xml loader
|
|
14
|
-
* @param parentClass Sets the class context. Used when the loader is instanced inside a class and not in a global context
|
|
15
|
-
*/
|
|
16
|
-
constructor(parentClass?: any);
|
|
17
|
-
private _getChainElement;
|
|
18
|
-
private _getClassAttribute;
|
|
19
|
-
private _createGuiElement;
|
|
20
|
-
private _parseGrid;
|
|
21
|
-
private _parseElement;
|
|
22
|
-
private _prepareSourceElement;
|
|
23
|
-
private _parseElementsFromSource;
|
|
24
|
-
private _parseXml;
|
|
25
|
-
/**
|
|
26
|
-
* Gets if the loading has finished.
|
|
27
|
-
* @returns whether the loading has finished or not
|
|
28
|
-
*/
|
|
29
|
-
isLoaded(): boolean;
|
|
30
|
-
/**
|
|
31
|
-
* Gets a loaded node / control by id.
|
|
32
|
-
* @param id the Controls id set in the xml
|
|
33
|
-
* @returns element of type Control
|
|
34
|
-
*/
|
|
35
|
-
getNodeById(id: string): any;
|
|
36
|
-
/**
|
|
37
|
-
* Gets all loaded nodes / controls
|
|
38
|
-
* @returns Array of controls
|
|
39
|
-
*/
|
|
40
|
-
getNodes(): any;
|
|
41
|
-
/**
|
|
42
|
-
* Disposes the loaded layout
|
|
43
|
-
*/
|
|
44
|
-
dispose(): void;
|
|
45
|
-
/**
|
|
46
|
-
* Initiates the xml layout loading
|
|
47
|
-
* @param xmlFile defines the xml layout to load
|
|
48
|
-
* @param rootNode defines the node / control to use as a parent for the loaded layout controls.
|
|
49
|
-
* @param onSuccess defines the callback called on layout load successfully.
|
|
50
|
-
* @param onError defines the callback called on layout load failure.
|
|
51
|
-
*/
|
|
52
|
-
loadLayout(xmlFile: any, rootNode: any, onSuccess?: Nullable<() => void>, onError?: Nullable<(error: string) => void>): void;
|
|
53
|
-
/**
|
|
54
|
-
* Initiates the xml layout loading asynchronously
|
|
55
|
-
* @param xmlFile defines the xml layout to load
|
|
56
|
-
* @param rootNode defines the node / control to use as a parent for the loaded layout controls.
|
|
57
|
-
* @returns Promise
|
|
58
|
-
*/
|
|
59
|
-
loadLayoutAsync(xmlFile: any, rootNode: any): Promise<any>;
|
|
60
|
-
}
|
|
1
|
+
import { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Class used to load GUI via XML.
|
|
4
|
+
*/
|
|
5
|
+
export declare class XmlLoader {
|
|
6
|
+
private _nodes;
|
|
7
|
+
private _nodeTypes;
|
|
8
|
+
private _isLoaded;
|
|
9
|
+
private _objectAttributes;
|
|
10
|
+
private _rootNode;
|
|
11
|
+
private _parentClass;
|
|
12
|
+
/**
|
|
13
|
+
* Create a new xml loader
|
|
14
|
+
* @param parentClass Sets the class context. Used when the loader is instanced inside a class and not in a global context
|
|
15
|
+
*/
|
|
16
|
+
constructor(parentClass?: any);
|
|
17
|
+
private _getChainElement;
|
|
18
|
+
private _getClassAttribute;
|
|
19
|
+
private _createGuiElement;
|
|
20
|
+
private _parseGrid;
|
|
21
|
+
private _parseElement;
|
|
22
|
+
private _prepareSourceElement;
|
|
23
|
+
private _parseElementsFromSource;
|
|
24
|
+
private _parseXml;
|
|
25
|
+
/**
|
|
26
|
+
* Gets if the loading has finished.
|
|
27
|
+
* @returns whether the loading has finished or not
|
|
28
|
+
*/
|
|
29
|
+
isLoaded(): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Gets a loaded node / control by id.
|
|
32
|
+
* @param id the Controls id set in the xml
|
|
33
|
+
* @returns element of type Control
|
|
34
|
+
*/
|
|
35
|
+
getNodeById(id: string): any;
|
|
36
|
+
/**
|
|
37
|
+
* Gets all loaded nodes / controls
|
|
38
|
+
* @returns Array of controls
|
|
39
|
+
*/
|
|
40
|
+
getNodes(): any;
|
|
41
|
+
/**
|
|
42
|
+
* Disposes the loaded layout
|
|
43
|
+
*/
|
|
44
|
+
dispose(): void;
|
|
45
|
+
/**
|
|
46
|
+
* Initiates the xml layout loading
|
|
47
|
+
* @param xmlFile defines the xml layout to load
|
|
48
|
+
* @param rootNode defines the node / control to use as a parent for the loaded layout controls.
|
|
49
|
+
* @param onSuccess defines the callback called on layout load successfully.
|
|
50
|
+
* @param onError defines the callback called on layout load failure.
|
|
51
|
+
*/
|
|
52
|
+
loadLayout(xmlFile: any, rootNode: any, onSuccess?: Nullable<() => void>, onError?: Nullable<(error: string) => void>): void;
|
|
53
|
+
/**
|
|
54
|
+
* Initiates the xml layout loading asynchronously
|
|
55
|
+
* @param xmlFile defines the xml layout to load
|
|
56
|
+
* @param rootNode defines the node / control to use as a parent for the loaded layout controls.
|
|
57
|
+
* @returns Promise
|
|
58
|
+
*/
|
|
59
|
+
loadLayoutAsync(xmlFile: any, rootNode: any): Promise<any>;
|
|
60
|
+
}
|