@babylonjs/gui 9.13.0 → 9.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/2D/FrameGraph/pure.d.ts +2 -0
- package/2D/FrameGraph/pure.js +3 -0
- package/2D/FrameGraph/pure.js.map +1 -0
- package/2D/FrameGraph/renderGraphGUIBlock.d.ts +3 -41
- package/2D/FrameGraph/renderGraphGUIBlock.js +5 -64
- package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -1
- package/2D/FrameGraph/renderGraphGUIBlock.pure.d.ts +48 -0
- package/2D/FrameGraph/renderGraphGUIBlock.pure.js +78 -0
- package/2D/FrameGraph/renderGraphGUIBlock.pure.js.map +1 -0
- package/2D/advancedDynamicTexture.d.ts +2 -2
- package/2D/advancedDynamicTexture.js +2 -2
- package/2D/advancedDynamicTexture.js.map +1 -1
- package/2D/controls/button.d.ts +3 -107
- package/2D/controls/button.js +5 -243
- package/2D/controls/button.js.map +1 -1
- package/2D/controls/button.pure.d.ts +114 -0
- package/2D/controls/button.pure.js +257 -0
- package/2D/controls/button.pure.js.map +1 -0
- package/2D/controls/checkbox.d.ts +3 -51
- package/2D/controls/checkbox.js +5 -161
- package/2D/controls/checkbox.js.map +1 -1
- package/2D/controls/checkbox.pure.d.ts +58 -0
- package/2D/controls/checkbox.pure.js +175 -0
- package/2D/controls/checkbox.pure.js.map +1 -0
- package/2D/controls/colorpicker.d.ts +5 -101
- package/2D/controls/colorpicker.js +7 -1394
- package/2D/controls/colorpicker.js.map +1 -1
- package/2D/controls/colorpicker.pure.d.ts +106 -0
- package/2D/controls/colorpicker.pure.js +1406 -0
- package/2D/controls/colorpicker.pure.js.map +1 -0
- package/2D/controls/container.d.ts +3 -177
- package/2D/controls/container.js +5 -615
- package/2D/controls/container.js.map +1 -1
- package/2D/controls/container.pure.d.ts +184 -0
- package/2D/controls/container.pure.js +629 -0
- package/2D/controls/container.pure.js.map +1 -0
- package/2D/controls/control.d.ts +3 -944
- package/2D/controls/control.js +5 -2457
- package/2D/controls/control.js.map +1 -1
- package/2D/controls/control.pure.d.ts +951 -0
- package/2D/controls/control.pure.js +2471 -0
- package/2D/controls/control.pure.js.map +1 -0
- package/2D/controls/displayGrid.d.ts +5 -53
- package/2D/controls/displayGrid.js +7 -201
- package/2D/controls/displayGrid.js.map +1 -1
- package/2D/controls/displayGrid.pure.d.ts +58 -0
- package/2D/controls/displayGrid.pure.js +213 -0
- package/2D/controls/displayGrid.pure.js.map +1 -0
- package/2D/controls/ellipse.d.ts +5 -25
- package/2D/controls/ellipse.js +7 -92
- package/2D/controls/ellipse.js.map +1 -1
- package/2D/controls/ellipse.pure.d.ts +30 -0
- package/2D/controls/ellipse.pure.js +104 -0
- package/2D/controls/ellipse.pure.js.map +1 -0
- package/2D/controls/focusableButton.d.ts +3 -15
- package/2D/controls/focusableButton.js +5 -22
- package/2D/controls/focusableButton.js.map +1 -1
- package/2D/controls/focusableButton.pure.d.ts +22 -0
- package/2D/controls/focusableButton.pure.js +36 -0
- package/2D/controls/focusableButton.pure.js.map +1 -0
- package/2D/controls/gradient/LinearGradient.d.ts +3 -43
- package/2D/controls/gradient/LinearGradient.js +5 -70
- package/2D/controls/gradient/LinearGradient.js.map +1 -1
- package/2D/controls/gradient/LinearGradient.pure.d.ts +50 -0
- package/2D/controls/gradient/LinearGradient.pure.js +84 -0
- package/2D/controls/gradient/LinearGradient.pure.js.map +1 -0
- package/2D/controls/gradient/RadialGradient.d.ts +3 -51
- package/2D/controls/gradient/RadialGradient.js +5 -86
- package/2D/controls/gradient/RadialGradient.js.map +1 -1
- package/2D/controls/gradient/RadialGradient.pure.d.ts +58 -0
- package/2D/controls/gradient/RadialGradient.pure.js +100 -0
- package/2D/controls/gradient/RadialGradient.pure.js.map +1 -0
- package/2D/controls/gradient/pure.d.ts +3 -0
- package/2D/controls/gradient/pure.js +4 -0
- package/2D/controls/gradient/pure.js.map +1 -0
- package/2D/controls/grid.d.ts +3 -149
- package/2D/controls/grid.js +5 -525
- package/2D/controls/grid.js.map +1 -1
- package/2D/controls/grid.pure.d.ts +156 -0
- package/2D/controls/grid.pure.js +539 -0
- package/2D/controls/grid.pure.js.map +1 -0
- package/2D/controls/image.d.ts +3 -226
- package/2D/controls/image.js +5 -913
- package/2D/controls/image.js.map +1 -1
- package/2D/controls/image.pure.d.ts +233 -0
- package/2D/controls/image.pure.js +927 -0
- package/2D/controls/image.pure.js.map +1 -0
- package/2D/controls/inputPassword.d.ts +3 -7
- package/2D/controls/inputPassword.js +5 -19
- package/2D/controls/inputPassword.js.map +1 -1
- package/2D/controls/inputPassword.pure.d.ts +14 -0
- package/2D/controls/inputPassword.pure.js +33 -0
- package/2D/controls/inputPassword.pure.js.map +1 -0
- package/2D/controls/inputText.d.ts +3 -202
- package/2D/controls/inputText.js +5 -1050
- package/2D/controls/inputText.js.map +1 -1
- package/2D/controls/inputText.pure.d.ts +209 -0
- package/2D/controls/inputText.pure.js +1064 -0
- package/2D/controls/inputText.pure.js.map +1 -0
- package/2D/controls/inputTextArea.d.ts +3 -140
- package/2D/controls/inputTextArea.js +5 -1023
- package/2D/controls/inputTextArea.js.map +1 -1
- package/2D/controls/inputTextArea.pure.d.ts +147 -0
- package/2D/controls/inputTextArea.pure.js +1037 -0
- package/2D/controls/inputTextArea.pure.js.map +1 -0
- package/2D/controls/line.d.ts +5 -74
- package/2D/controls/line.js +7 -234
- package/2D/controls/line.js.map +1 -1
- package/2D/controls/line.pure.d.ts +79 -0
- package/2D/controls/line.pure.js +246 -0
- package/2D/controls/line.pure.js.map +1 -0
- package/2D/controls/multiLine.d.ts +3 -73
- package/2D/controls/multiLine.js +5 -234
- package/2D/controls/multiLine.js.map +1 -1
- package/2D/controls/multiLine.pure.d.ts +80 -0
- package/2D/controls/multiLine.pure.js +248 -0
- package/2D/controls/multiLine.pure.js.map +1 -0
- package/2D/controls/pure.d.ts +38 -0
- package/2D/controls/pure.js +39 -0
- package/2D/controls/pure.js.map +1 -0
- package/2D/controls/radioButton.d.ts +3 -47
- package/2D/controls/radioButton.js +5 -182
- package/2D/controls/radioButton.js.map +1 -1
- package/2D/controls/radioButton.pure.d.ts +54 -0
- package/2D/controls/radioButton.pure.js +196 -0
- package/2D/controls/radioButton.pure.js.map +1 -0
- package/2D/controls/rectangle.d.ts +5 -43
- package/2D/controls/rectangle.js +7 -205
- package/2D/controls/rectangle.js.map +1 -1
- package/2D/controls/rectangle.pure.d.ts +48 -0
- package/2D/controls/rectangle.pure.js +217 -0
- package/2D/controls/rectangle.pure.js.map +1 -0
- package/2D/controls/scrollViewers/pure.d.ts +2 -0
- package/2D/controls/scrollViewers/pure.js +3 -0
- package/2D/controls/scrollViewers/pure.js.map +1 -0
- package/2D/controls/scrollViewers/scrollViewer.d.ts +3 -176
- package/2D/controls/scrollViewers/scrollViewer.js +5 -584
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -1
- package/2D/controls/scrollViewers/scrollViewer.pure.d.ts +183 -0
- package/2D/controls/scrollViewers/scrollViewer.pure.js +598 -0
- package/2D/controls/scrollViewers/scrollViewer.pure.js.map +1 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +1 -1
- package/2D/controls/scrollViewers/scrollViewerWindow.js +2 -2
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -1
- package/2D/controls/selector.d.ts +2 -2
- package/2D/controls/selector.js +8 -8
- package/2D/controls/selector.js.map +1 -1
- package/2D/controls/sliders/baseSlider.d.ts +1 -1
- package/2D/controls/sliders/baseSlider.js +1 -1
- package/2D/controls/sliders/baseSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.d.ts +3 -45
- package/2D/controls/sliders/imageBasedSlider.js +5 -165
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -1
- package/2D/controls/sliders/imageBasedSlider.pure.d.ts +52 -0
- package/2D/controls/sliders/imageBasedSlider.pure.js +179 -0
- package/2D/controls/sliders/imageBasedSlider.pure.js.map +1 -0
- package/2D/controls/sliders/pure.d.ts +4 -0
- package/2D/controls/sliders/pure.js +5 -0
- package/2D/controls/sliders/pure.js.map +1 -0
- package/2D/controls/sliders/scrollBar.d.ts +3 -48
- package/2D/controls/sliders/scrollBar.js +5 -170
- package/2D/controls/sliders/scrollBar.js.map +1 -1
- package/2D/controls/sliders/scrollBar.pure.d.ts +55 -0
- package/2D/controls/sliders/scrollBar.pure.js +184 -0
- package/2D/controls/sliders/scrollBar.pure.js.map +1 -0
- package/2D/controls/sliders/slider.d.ts +3 -44
- package/2D/controls/sliders/slider.js +5 -278
- package/2D/controls/sliders/slider.js.map +1 -1
- package/2D/controls/sliders/slider.pure.d.ts +51 -0
- package/2D/controls/sliders/slider.pure.js +292 -0
- package/2D/controls/sliders/slider.pure.js.map +1 -0
- package/2D/controls/stackPanel.d.ts +3 -62
- package/2D/controls/stackPanel.js +5 -243
- package/2D/controls/stackPanel.js.map +1 -1
- package/2D/controls/stackPanel.pure.d.ts +69 -0
- package/2D/controls/stackPanel.pure.js +257 -0
- package/2D/controls/stackPanel.pure.js.map +1 -0
- package/2D/controls/statics.d.ts +3 -4
- package/2D/controls/statics.js +5 -47
- package/2D/controls/statics.js.map +1 -1
- package/2D/controls/statics.pure.d.ts +11 -0
- package/2D/controls/statics.pure.js +61 -0
- package/2D/controls/statics.pure.js.map +1 -0
- package/2D/controls/textBlock.d.ts +3 -217
- package/2D/controls/textBlock.js +5 -676
- package/2D/controls/textBlock.js.map +1 -1
- package/2D/controls/textBlock.pure.d.ts +224 -0
- package/2D/controls/textBlock.pure.js +690 -0
- package/2D/controls/textBlock.pure.js.map +1 -0
- package/2D/controls/toggleButton.d.ts +3 -91
- package/2D/controls/toggleButton.js +5 -226
- package/2D/controls/toggleButton.js.map +1 -1
- package/2D/controls/toggleButton.pure.d.ts +98 -0
- package/2D/controls/toggleButton.pure.js +240 -0
- package/2D/controls/toggleButton.pure.js.map +1 -0
- package/2D/controls/virtualKeyboard.d.ts +3 -100
- package/2D/controls/virtualKeyboard.js +5 -272
- package/2D/controls/virtualKeyboard.js.map +1 -1
- package/2D/controls/virtualKeyboard.pure.d.ts +107 -0
- package/2D/controls/virtualKeyboard.pure.js +286 -0
- package/2D/controls/virtualKeyboard.pure.js.map +1 -0
- package/2D/math2D.d.ts +1 -1
- package/2D/math2D.js +1 -1
- package/2D/math2D.js.map +1 -1
- package/2D/measure.js +1 -1
- package/2D/measure.js.map +1 -1
- package/2D/pure.d.ts +13 -0
- package/2D/pure.js +15 -0
- package/2D/pure.js.map +1 -0
- package/3D/controls/MRTK3/touchHolographicButton.d.ts +4 -4
- package/3D/controls/MRTK3/touchHolographicButton.js +10 -10
- package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -1
- package/3D/controls/holographicBackplate.d.ts +1 -1
- package/3D/controls/holographicBackplate.js +1 -1
- package/3D/controls/holographicBackplate.js.map +1 -1
- package/3D/controls/holographicButton.d.ts +1 -1
- package/3D/controls/holographicButton.js +4 -4
- package/3D/controls/holographicButton.js.map +1 -1
- package/3D/controls/holographicSlate.js +4 -4
- package/3D/controls/holographicSlate.js.map +1 -1
- package/3D/controls/pure.d.ts +23 -0
- package/3D/controls/pure.js +24 -0
- package/3D/controls/pure.js.map +1 -0
- package/3D/controls/slider3D.d.ts +3 -3
- package/3D/controls/slider3D.js +3 -3
- package/3D/controls/slider3D.js.map +1 -1
- package/3D/controls/touchHolographicButton.d.ts +2 -2
- package/3D/controls/touchHolographicButton.js +5 -5
- package/3D/controls/touchHolographicButton.js.map +1 -1
- package/3D/controls/touchHolographicMenu.js +1 -1
- package/3D/controls/touchHolographicMenu.js.map +1 -1
- package/3D/gizmos/gizmoHandle.d.ts +1 -1
- package/3D/gizmos/gizmoHandle.js +1 -1
- package/3D/gizmos/gizmoHandle.js.map +1 -1
- package/3D/gizmos/pure.d.ts +3 -0
- package/3D/gizmos/pure.js +4 -0
- package/3D/gizmos/pure.js.map +1 -0
- package/3D/materials/fluent/fluentMaterial.d.ts +5 -100
- package/3D/materials/fluent/fluentMaterial.js +7 -305
- package/3D/materials/fluent/fluentMaterial.js.map +1 -1
- package/3D/materials/fluent/fluentMaterial.pure.d.ts +105 -0
- package/3D/materials/fluent/fluentMaterial.pure.js +320 -0
- package/3D/materials/fluent/fluentMaterial.pure.js.map +1 -0
- package/3D/materials/fluent/pure.d.ts +2 -0
- package/3D/materials/fluent/pure.js +3 -0
- package/3D/materials/fluent/pure.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +5 -164
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +7 -488
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -1
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.d.ts +169 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js +503 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.pure.js.map +1 -0
- package/3D/materials/fluentBackplate/pure.d.ts +2 -0
- package/3D/materials/fluentBackplate/pure.js +3 -0
- package/3D/materials/fluentBackplate/pure.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +5 -200
- package/3D/materials/fluentButton/fluentButtonMaterial.js +7 -563
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -1
- package/3D/materials/fluentButton/fluentButtonMaterial.pure.d.ts +205 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.pure.js +578 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.pure.js.map +1 -0
- package/3D/materials/fluentButton/pure.d.ts +2 -0
- package/3D/materials/fluentButton/pure.js +3 -0
- package/3D/materials/fluentButton/pure.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +1 -1
- package/3D/materials/fluentMaterial.js +1 -1
- package/3D/materials/fluentMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.d.ts +5 -66
- package/3D/materials/handle/handleMaterial.js +5 -118
- package/3D/materials/handle/handleMaterial.js.map +1 -1
- package/3D/materials/handle/handleMaterial.pure.d.ts +66 -0
- package/3D/materials/handle/handleMaterial.pure.js +121 -0
- package/3D/materials/handle/handleMaterial.pure.js.map +1 -0
- package/3D/materials/handle/pure.d.ts +2 -0
- package/3D/materials/handle/pure.js +3 -0
- package/3D/materials/handle/pure.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.d.ts +5 -85
- package/3D/materials/mrdl/mrdlBackglowMaterial.js +7 -299
- package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackglowMaterial.pure.d.ts +90 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js +314 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.pure.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +5 -145
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +7 -433
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlBackplateMaterial.pure.d.ts +157 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js +455 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.pure.js.map +1 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.d.ts +5 -183
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js +7 -532
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.d.ts +188 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js +547 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.pure.js.map +1 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.d.ts +5 -54
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js +7 -227
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.d.ts +59 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js +242 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.pure.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +5 -334
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +7 -855
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.d.ts +346 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js +877 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.pure.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +5 -334
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +7 -855
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -1
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.d.ts +346 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js +877 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.pure.js.map +1 -0
- package/3D/materials/mrdl/pure.d.ts +7 -0
- package/3D/materials/mrdl/pure.js +8 -0
- package/3D/materials/mrdl/pure.js.map +1 -0
- package/3D/materials/pure.d.ts +6 -0
- package/3D/materials/pure.js +8 -0
- package/3D/materials/pure.js.map +1 -0
- package/3D/pure.d.ts +6 -0
- package/3D/pure.js +8 -0
- package/3D/pure.js.map +1 -0
- package/package.json +50 -3
- package/pure.d.ts +3 -0
- package/pure.js +5 -0
- package/pure.js.map +1 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
+
import { Rectangle } from "./rectangle.pure.js";
|
|
3
|
+
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
4
|
+
/**
|
|
5
|
+
* Class used to create toggle buttons
|
|
6
|
+
* @since 5.0.0
|
|
7
|
+
*/
|
|
8
|
+
export class ToggleButton extends Rectangle {
|
|
9
|
+
/** Gets or sets group name this toggle button belongs to */
|
|
10
|
+
get group() {
|
|
11
|
+
return this._group;
|
|
12
|
+
}
|
|
13
|
+
set group(value) {
|
|
14
|
+
if (this._group === value) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
this._group = value;
|
|
18
|
+
}
|
|
19
|
+
/** Gets or sets a boolean indicating if the toggle button is active or not */
|
|
20
|
+
get isActive() {
|
|
21
|
+
return this._isActive;
|
|
22
|
+
}
|
|
23
|
+
set isActive(value) {
|
|
24
|
+
// Function modeled after radioButton.ts
|
|
25
|
+
if (this._isActive === value) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
this._isActive = value;
|
|
29
|
+
// Update the visual state based on the new value
|
|
30
|
+
if (this._isActive) {
|
|
31
|
+
this.toActiveAnimation?.();
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
this.toInactiveAnimation?.();
|
|
35
|
+
}
|
|
36
|
+
this._markAsDirty();
|
|
37
|
+
this.onIsActiveChangedObservable.notifyObservers(value);
|
|
38
|
+
if (this._isActive && this._host && this._group) {
|
|
39
|
+
// A toggle button in a group can only have 1 active element at a given time.
|
|
40
|
+
// If this toggle button has a group, set other toggle buttons in the group to inactive.
|
|
41
|
+
this._host.executeOnAllControls((control) => {
|
|
42
|
+
// Check for control type ToggleButton
|
|
43
|
+
if (control.typeName === "ToggleButton") {
|
|
44
|
+
// Don't do anything to this toggle button
|
|
45
|
+
if (control === this) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const childToggle = control;
|
|
49
|
+
// If toggle button is in same group, set isActive to false
|
|
50
|
+
if (childToggle.group === this.group) {
|
|
51
|
+
childToggle.isActive = false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Creates a new ToggleButton
|
|
59
|
+
* @param name defines the control name
|
|
60
|
+
* @param group defines the toggle group this toggle belongs to
|
|
61
|
+
*/
|
|
62
|
+
constructor(name, group) {
|
|
63
|
+
super(name);
|
|
64
|
+
this.name = name;
|
|
65
|
+
/** Observable raised when isActive is changed */
|
|
66
|
+
this.onIsActiveChangedObservable = new Observable();
|
|
67
|
+
/**
|
|
68
|
+
* Gets or sets a boolean indicating that the toggle button will let internal controls handle picking instead of doing it directly using its bounding info
|
|
69
|
+
*/
|
|
70
|
+
this.delegatePickingToChildren = false;
|
|
71
|
+
this._isActive = false;
|
|
72
|
+
this.group = group ?? "";
|
|
73
|
+
this.thickness = 0;
|
|
74
|
+
this.isPointerBlocker = true;
|
|
75
|
+
let alphaStore = null;
|
|
76
|
+
this.toActiveAnimation = () => {
|
|
77
|
+
this.thickness = 1;
|
|
78
|
+
};
|
|
79
|
+
this.toInactiveAnimation = () => {
|
|
80
|
+
this.thickness = 0;
|
|
81
|
+
};
|
|
82
|
+
this.pointerEnterActiveAnimation = () => {
|
|
83
|
+
alphaStore = this.alpha;
|
|
84
|
+
this.alpha -= 0.1;
|
|
85
|
+
};
|
|
86
|
+
this.pointerOutActiveAnimation = () => {
|
|
87
|
+
if (alphaStore !== null) {
|
|
88
|
+
this.alpha = alphaStore;
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
this.pointerDownActiveAnimation = () => {
|
|
92
|
+
this.scaleX -= 0.05;
|
|
93
|
+
this.scaleY -= 0.05;
|
|
94
|
+
};
|
|
95
|
+
this.pointerUpActiveAnimation = () => {
|
|
96
|
+
this.scaleX += 0.05;
|
|
97
|
+
this.scaleY += 0.05;
|
|
98
|
+
};
|
|
99
|
+
this.pointerEnterInactiveAnimation = () => {
|
|
100
|
+
alphaStore = this.alpha;
|
|
101
|
+
this.alpha -= 0.1;
|
|
102
|
+
};
|
|
103
|
+
this.pointerOutInactiveAnimation = () => {
|
|
104
|
+
if (alphaStore !== null) {
|
|
105
|
+
this.alpha = alphaStore;
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
this.pointerDownInactiveAnimation = () => {
|
|
109
|
+
this.scaleX -= 0.05;
|
|
110
|
+
this.scaleY -= 0.05;
|
|
111
|
+
};
|
|
112
|
+
this.pointerUpInactiveAnimation = () => {
|
|
113
|
+
this.scaleX += 0.05;
|
|
114
|
+
this.scaleY += 0.05;
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
_getTypeName() {
|
|
118
|
+
return "ToggleButton";
|
|
119
|
+
}
|
|
120
|
+
// While being a container, the toggle button behaves like a control.
|
|
121
|
+
/**
|
|
122
|
+
* @internal
|
|
123
|
+
*/
|
|
124
|
+
_processPicking(x, y, pi, type, pointerId, buttonIndex, deltaX, deltaY) {
|
|
125
|
+
if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
if (!super.contains(x, y)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
if (this.delegatePickingToChildren) {
|
|
132
|
+
let contains = false;
|
|
133
|
+
for (let index = this._children.length - 1; index >= 0; index--) {
|
|
134
|
+
const child = this._children[index];
|
|
135
|
+
if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {
|
|
136
|
+
contains = true;
|
|
137
|
+
break;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (!contains) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);
|
|
145
|
+
return true;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* @internal
|
|
149
|
+
*/
|
|
150
|
+
_onPointerEnter(target, pi) {
|
|
151
|
+
if (!super._onPointerEnter(target, pi)) {
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
if (this.isReadOnly) {
|
|
155
|
+
return true;
|
|
156
|
+
}
|
|
157
|
+
if (this._isActive) {
|
|
158
|
+
if (this.pointerEnterActiveAnimation) {
|
|
159
|
+
this.pointerEnterActiveAnimation();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
if (this.pointerEnterInactiveAnimation) {
|
|
164
|
+
this.pointerEnterInactiveAnimation();
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* @internal
|
|
171
|
+
*/
|
|
172
|
+
_onPointerOut(target, pi, force = false) {
|
|
173
|
+
if (!this.isReadOnly) {
|
|
174
|
+
if (this._isActive) {
|
|
175
|
+
if (this.pointerOutActiveAnimation) {
|
|
176
|
+
this.pointerOutActiveAnimation();
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
else {
|
|
180
|
+
if (this.pointerOutInactiveAnimation) {
|
|
181
|
+
this.pointerOutInactiveAnimation();
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
super._onPointerOut(target, pi, force);
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* @internal
|
|
189
|
+
*/
|
|
190
|
+
_onPointerDown(target, coordinates, pointerId, buttonIndex, pi) {
|
|
191
|
+
if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
if (this.isReadOnly) {
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
if (this._isActive) {
|
|
198
|
+
if (this.pointerDownActiveAnimation) {
|
|
199
|
+
this.pointerDownActiveAnimation();
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
if (this.pointerDownInactiveAnimation) {
|
|
204
|
+
this.pointerDownInactiveAnimation();
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* @internal
|
|
211
|
+
*/
|
|
212
|
+
_onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi) {
|
|
213
|
+
if (!this.isReadOnly) {
|
|
214
|
+
if (this._isActive) {
|
|
215
|
+
if (this.pointerUpActiveAnimation) {
|
|
216
|
+
this.pointerUpActiveAnimation();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
if (this.pointerUpInactiveAnimation) {
|
|
221
|
+
this.pointerUpInactiveAnimation();
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
let _Registered = false;
|
|
229
|
+
/**
|
|
230
|
+
* Registers the ToggleButton class with the type store for serialization support.
|
|
231
|
+
* Safe to call multiple times; only the first call has an effect.
|
|
232
|
+
*/
|
|
233
|
+
export function RegisterToggleButton() {
|
|
234
|
+
if (_Registered) {
|
|
235
|
+
return;
|
|
236
|
+
}
|
|
237
|
+
_Registered = true;
|
|
238
|
+
RegisterClass("BABYLON.GUI.ToggleButton", ToggleButton);
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=toggleButton.pure.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toggleButton.pure.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/toggleButton.pure.ts"],"names":[],"mappings":"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","sourcesContent":["import { type Nullable } from \"core/types\";\r\nimport { Observable } from \"core/Misc/observable\";\r\nimport { type Vector2 } from \"core/Maths/math.vector.pure\";\r\n\r\nimport { Rectangle } from \"./rectangle.pure\";\r\nimport { type Control } from \"./control.pure\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport { type PointerInfoBase } from \"core/Events/pointerEvents\";\r\n\r\n/**\r\n * Class used to create toggle buttons\r\n * @since 5.0.0\r\n */\r\nexport class ToggleButton extends Rectangle {\r\n /**\r\n * Function called to generate the toActive animation\r\n */\r\n public toActiveAnimation: () => void;\r\n\r\n /**\r\n * Function called to generate the toInactive animation\r\n */\r\n public toInactiveAnimation: () => void;\r\n\r\n /**\r\n * Function called to generate a pointer enter animation when the toggle button is active.\r\n */\r\n public pointerEnterActiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer out animation when the toggle button is active.\r\n */\r\n public pointerOutActiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer down animation when the toggle button is active.\r\n */\r\n public pointerDownActiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer up animation when the toggle button is active.\r\n */\r\n public pointerUpActiveAnimation: () => void;\r\n\r\n /**\r\n * Function called to generate a pointer enter animation when the toggle button is inactive.\r\n */\r\n public pointerEnterInactiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer out animation when the toggle button is inactive.\r\n */\r\n public pointerOutInactiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer down animation when the toggle button is inactive.\r\n */\r\n public pointerDownInactiveAnimation: () => void;\r\n /**\r\n * Function called to generate a pointer up animation when the toggle button is inactive.\r\n */\r\n public pointerUpInactiveAnimation: () => void;\r\n\r\n /** Observable raised when isActive is changed */\r\n public onIsActiveChangedObservable = new Observable<boolean>();\r\n\r\n /**\r\n * Gets or sets a boolean indicating that the toggle button will let internal controls handle picking instead of doing it directly using its bounding info\r\n */\r\n public override delegatePickingToChildren = false;\r\n\r\n private _group: string;\r\n /** Gets or sets group name this toggle button belongs to */\r\n public get group(): string {\r\n return this._group;\r\n }\r\n public set group(value: string) {\r\n if (this._group === value) {\r\n return;\r\n }\r\n\r\n this._group = value;\r\n }\r\n\r\n private _isActive = false;\r\n /** Gets or sets a boolean indicating if the toggle button is active or not */\r\n public get isActive(): boolean {\r\n return this._isActive;\r\n }\r\n public set isActive(value: boolean) {\r\n // Function modeled after radioButton.ts\r\n if (this._isActive === value) {\r\n return;\r\n }\r\n\r\n this._isActive = value;\r\n\r\n // Update the visual state based on the new value\r\n if (this._isActive) {\r\n this.toActiveAnimation?.();\r\n } else {\r\n this.toInactiveAnimation?.();\r\n }\r\n\r\n this._markAsDirty();\r\n\r\n this.onIsActiveChangedObservable.notifyObservers(value);\r\n\r\n if (this._isActive && this._host && this._group) {\r\n // A toggle button in a group can only have 1 active element at a given time.\r\n // If this toggle button has a group, set other toggle buttons in the group to inactive.\r\n this._host.executeOnAllControls((control) => {\r\n // Check for control type ToggleButton\r\n if (control.typeName === \"ToggleButton\") {\r\n // Don't do anything to this toggle button\r\n if (control === this) {\r\n return;\r\n }\r\n\r\n const childToggle = <ToggleButton>control;\r\n // If toggle button is in same group, set isActive to false\r\n if (childToggle.group === this.group) {\r\n childToggle.isActive = false;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Creates a new ToggleButton\r\n * @param name defines the control name\r\n * @param group defines the toggle group this toggle belongs to\r\n */\r\n constructor(\r\n public override name?: string,\r\n group?: string\r\n ) {\r\n super(name);\r\n this.group = group ?? \"\";\r\n\r\n this.thickness = 0;\r\n this.isPointerBlocker = true;\r\n\r\n let alphaStore: Nullable<number> = null;\r\n\r\n this.toActiveAnimation = () => {\r\n this.thickness = 1;\r\n };\r\n this.toInactiveAnimation = () => {\r\n this.thickness = 0;\r\n };\r\n\r\n this.pointerEnterActiveAnimation = () => {\r\n alphaStore = this.alpha;\r\n this.alpha -= 0.1;\r\n };\r\n\r\n this.pointerOutActiveAnimation = () => {\r\n if (alphaStore !== null) {\r\n this.alpha = alphaStore;\r\n }\r\n };\r\n\r\n this.pointerDownActiveAnimation = () => {\r\n this.scaleX -= 0.05;\r\n this.scaleY -= 0.05;\r\n };\r\n\r\n this.pointerUpActiveAnimation = () => {\r\n this.scaleX += 0.05;\r\n this.scaleY += 0.05;\r\n };\r\n\r\n this.pointerEnterInactiveAnimation = () => {\r\n alphaStore = this.alpha;\r\n this.alpha -= 0.1;\r\n };\r\n\r\n this.pointerOutInactiveAnimation = () => {\r\n if (alphaStore !== null) {\r\n this.alpha = alphaStore;\r\n }\r\n };\r\n\r\n this.pointerDownInactiveAnimation = () => {\r\n this.scaleX -= 0.05;\r\n this.scaleY -= 0.05;\r\n };\r\n\r\n this.pointerUpInactiveAnimation = () => {\r\n this.scaleX += 0.05;\r\n this.scaleY += 0.05;\r\n };\r\n }\r\n\r\n protected override _getTypeName(): string {\r\n return \"ToggleButton\";\r\n }\r\n\r\n // While being a container, the toggle button behaves like a control.\r\n /**\r\n * @internal\r\n */\r\n public override _processPicking(x: number, y: number, pi: PointerInfoBase, type: number, pointerId: number, buttonIndex: number, deltaX?: number, deltaY?: number): boolean {\r\n if (!this._isEnabled || !this.isHitTestVisible || !this.isVisible || this.notRenderable) {\r\n return false;\r\n }\r\n\r\n if (!super.contains(x, y)) {\r\n return false;\r\n }\r\n\r\n if (this.delegatePickingToChildren) {\r\n let contains = false;\r\n for (let index = this._children.length - 1; index >= 0; index--) {\r\n const child = this._children[index];\r\n if (child.isEnabled && child.isHitTestVisible && child.isVisible && !child.notRenderable && child.contains(x, y)) {\r\n contains = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!contains) {\r\n return false;\r\n }\r\n }\r\n\r\n this._processObservables(type, x, y, pi, pointerId, buttonIndex, deltaX, deltaY);\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _onPointerEnter(target: Control, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerEnter(target, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n return true;\r\n }\r\n\r\n if (this._isActive) {\r\n if (this.pointerEnterActiveAnimation) {\r\n this.pointerEnterActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerEnterInactiveAnimation) {\r\n this.pointerEnterInactiveAnimation();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _onPointerOut(target: Control, pi: PointerInfoBase, force = false): void {\r\n if (!this.isReadOnly) {\r\n if (this._isActive) {\r\n if (this.pointerOutActiveAnimation) {\r\n this.pointerOutActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerOutInactiveAnimation) {\r\n this.pointerOutInactiveAnimation();\r\n }\r\n }\r\n }\r\n\r\n super._onPointerOut(target, pi, force);\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _onPointerDown(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, pi: PointerInfoBase): boolean {\r\n if (!super._onPointerDown(target, coordinates, pointerId, buttonIndex, pi)) {\r\n return false;\r\n }\r\n\r\n if (this.isReadOnly) {\r\n return true;\r\n }\r\n\r\n if (this._isActive) {\r\n if (this.pointerDownActiveAnimation) {\r\n this.pointerDownActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerDownInactiveAnimation) {\r\n this.pointerDownInactiveAnimation();\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _onPointerUp(target: Control, coordinates: Vector2, pointerId: number, buttonIndex: number, notifyClick: boolean, pi: PointerInfoBase): void {\r\n if (!this.isReadOnly) {\r\n if (this._isActive) {\r\n if (this.pointerUpActiveAnimation) {\r\n this.pointerUpActiveAnimation();\r\n }\r\n } else {\r\n if (this.pointerUpInactiveAnimation) {\r\n this.pointerUpInactiveAnimation();\r\n }\r\n }\r\n }\r\n\r\n super._onPointerUp(target, coordinates, pointerId, buttonIndex, notifyClick, pi);\r\n }\r\n}\r\n\r\nlet _Registered = false;\r\n/**\r\n * Registers the ToggleButton 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 RegisterToggleButton(): void {\r\n if (_Registered) {\r\n return;\r\n }\r\n _Registered = true;\r\n\r\n RegisterClass(\"BABYLON.GUI.ToggleButton\", ToggleButton);\r\n}\r\n"]}
|
|
@@ -1,102 +1,5 @@
|
|
|
1
|
-
import { type Nullable } from "@babylonjs/core/types.js";
|
|
2
|
-
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
3
|
-
import { StackPanel } from "./stackPanel.js";
|
|
4
|
-
import { type InputText } from "./inputText.js";
|
|
5
|
-
import { type AdvancedDynamicTexture } from "../advancedDynamicTexture.js";
|
|
6
|
-
import { InputTextArea } from "./inputTextArea.js";
|
|
7
1
|
/**
|
|
8
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./virtualKeyboard.pure" for tree-shakeable, side-effect-free usage.
|
|
9
4
|
*/
|
|
10
|
-
export
|
|
11
|
-
/** Width */
|
|
12
|
-
width?: string;
|
|
13
|
-
/** Height */
|
|
14
|
-
height?: string;
|
|
15
|
-
/** Left padding */
|
|
16
|
-
paddingLeft?: string;
|
|
17
|
-
/** Right padding */
|
|
18
|
-
paddingRight?: string;
|
|
19
|
-
/** Top padding */
|
|
20
|
-
paddingTop?: string;
|
|
21
|
-
/** Bottom padding */
|
|
22
|
-
paddingBottom?: string;
|
|
23
|
-
/** Foreground color */
|
|
24
|
-
color?: string;
|
|
25
|
-
/** Background color */
|
|
26
|
-
background?: string;
|
|
27
|
-
}
|
|
28
|
-
/**
|
|
29
|
-
* Class used to create virtual keyboard
|
|
30
|
-
*/
|
|
31
|
-
export declare class VirtualKeyboard extends StackPanel {
|
|
32
|
-
/** Observable raised when a key is pressed */
|
|
33
|
-
onKeyPressObservable: Observable<string>;
|
|
34
|
-
/** Gets or sets default key button width */
|
|
35
|
-
defaultButtonWidth: string;
|
|
36
|
-
/** Gets or sets default key button height */
|
|
37
|
-
defaultButtonHeight: string;
|
|
38
|
-
/** Gets or sets default key button left padding */
|
|
39
|
-
defaultButtonPaddingLeft: string;
|
|
40
|
-
/** Gets or sets default key button right padding */
|
|
41
|
-
defaultButtonPaddingRight: string;
|
|
42
|
-
/** Gets or sets default key button top padding */
|
|
43
|
-
defaultButtonPaddingTop: string;
|
|
44
|
-
/** Gets or sets default key button bottom padding */
|
|
45
|
-
defaultButtonPaddingBottom: string;
|
|
46
|
-
/** Gets or sets default key button foreground color */
|
|
47
|
-
defaultButtonColor: string;
|
|
48
|
-
/** Gets or sets default key button background color */
|
|
49
|
-
defaultButtonBackground: string;
|
|
50
|
-
/** Gets or sets shift button foreground color */
|
|
51
|
-
shiftButtonColor: string;
|
|
52
|
-
/** Gets or sets shift button thickness*/
|
|
53
|
-
selectedShiftThickness: number;
|
|
54
|
-
/** Gets shift key state */
|
|
55
|
-
shiftState: number;
|
|
56
|
-
protected _getTypeName(): string;
|
|
57
|
-
private _createKey;
|
|
58
|
-
/**
|
|
59
|
-
* Adds a new row of keys
|
|
60
|
-
* @param keys defines the list of keys to add
|
|
61
|
-
* @param propertySets defines the associated property sets
|
|
62
|
-
*/
|
|
63
|
-
addKeysRow(keys: Array<string>, propertySets?: Array<KeyPropertySet>): void;
|
|
64
|
-
/**
|
|
65
|
-
* Set the shift key to a specific state
|
|
66
|
-
* @param shiftState defines the new shift state
|
|
67
|
-
*/
|
|
68
|
-
applyShiftState(shiftState: number): void;
|
|
69
|
-
private _currentlyConnectedInputText;
|
|
70
|
-
private _connectedInputTexts;
|
|
71
|
-
private _onKeyPressObserver;
|
|
72
|
-
/** Gets the input text control currently attached to the keyboard */
|
|
73
|
-
get connectedInputText(): Nullable<InputText | InputTextArea>;
|
|
74
|
-
/**
|
|
75
|
-
* Connects the keyboard with an input text control
|
|
76
|
-
*
|
|
77
|
-
* @param input defines the target control
|
|
78
|
-
*/
|
|
79
|
-
connect(input: InputText): void;
|
|
80
|
-
/**
|
|
81
|
-
* Disconnects the keyboard from connected InputText controls
|
|
82
|
-
*
|
|
83
|
-
* @param input optionally defines a target control, otherwise all are disconnected
|
|
84
|
-
*/
|
|
85
|
-
disconnect(input?: InputText): void;
|
|
86
|
-
private _removeConnectedInputObservables;
|
|
87
|
-
/**
|
|
88
|
-
* Release all resources
|
|
89
|
-
*/
|
|
90
|
-
dispose(): void;
|
|
91
|
-
/**
|
|
92
|
-
* Creates a new keyboard using a default layout
|
|
93
|
-
*
|
|
94
|
-
* @param name defines control name
|
|
95
|
-
* @returns a new VirtualKeyboard
|
|
96
|
-
*/
|
|
97
|
-
static CreateDefaultLayout(name?: string): VirtualKeyboard;
|
|
98
|
-
/**
|
|
99
|
-
* @internal
|
|
100
|
-
*/
|
|
101
|
-
_parseFromContent(serializedObject: any, host: AdvancedDynamicTexture): void;
|
|
102
|
-
}
|
|
5
|
+
export * from "./virtualKeyboard.pure.js";
|
|
@@ -1,275 +1,8 @@
|
|
|
1
|
-
import { Observable } from "@babylonjs/core/Misc/observable.js";
|
|
2
|
-
import { StackPanel } from "./stackPanel.js";
|
|
3
|
-
import { Button } from "./button.js";
|
|
4
|
-
import { RegisterClass } from "@babylonjs/core/Misc/typeStore.js";
|
|
5
|
-
import { InputTextArea } from "./inputTextArea.js";
|
|
6
1
|
/**
|
|
7
|
-
*
|
|
2
|
+
* Re-exports the pure implementation and applies the runtime registration side effect.
|
|
3
|
+
* Import "./virtualKeyboard.pure" for tree-shakeable, side-effect-free usage.
|
|
8
4
|
*/
|
|
9
|
-
export
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
* Class used to create virtual keyboard
|
|
13
|
-
*/
|
|
14
|
-
export class VirtualKeyboard extends StackPanel {
|
|
15
|
-
constructor() {
|
|
16
|
-
super(...arguments);
|
|
17
|
-
/** Observable raised when a key is pressed */
|
|
18
|
-
this.onKeyPressObservable = new Observable();
|
|
19
|
-
/** Gets or sets default key button width */
|
|
20
|
-
this.defaultButtonWidth = "40px";
|
|
21
|
-
/** Gets or sets default key button height */
|
|
22
|
-
this.defaultButtonHeight = "40px";
|
|
23
|
-
/** Gets or sets default key button left padding */
|
|
24
|
-
this.defaultButtonPaddingLeft = "2px";
|
|
25
|
-
/** Gets or sets default key button right padding */
|
|
26
|
-
this.defaultButtonPaddingRight = "2px";
|
|
27
|
-
/** Gets or sets default key button top padding */
|
|
28
|
-
this.defaultButtonPaddingTop = "2px";
|
|
29
|
-
/** Gets or sets default key button bottom padding */
|
|
30
|
-
this.defaultButtonPaddingBottom = "2px";
|
|
31
|
-
/** Gets or sets default key button foreground color */
|
|
32
|
-
this.defaultButtonColor = "#DDD";
|
|
33
|
-
/** Gets or sets default key button background color */
|
|
34
|
-
this.defaultButtonBackground = "#070707";
|
|
35
|
-
/** Gets or sets shift button foreground color */
|
|
36
|
-
this.shiftButtonColor = "#7799FF";
|
|
37
|
-
/** Gets or sets shift button thickness*/
|
|
38
|
-
this.selectedShiftThickness = 1;
|
|
39
|
-
/** Gets shift key state */
|
|
40
|
-
this.shiftState = 0;
|
|
41
|
-
this._currentlyConnectedInputText = null;
|
|
42
|
-
this._connectedInputTexts = [];
|
|
43
|
-
this._onKeyPressObserver = null;
|
|
44
|
-
}
|
|
45
|
-
_getTypeName() {
|
|
46
|
-
return "VirtualKeyboard";
|
|
47
|
-
}
|
|
48
|
-
_createKey(key, propertySet) {
|
|
49
|
-
const button = Button.CreateSimpleButton(key, key);
|
|
50
|
-
button.width = propertySet && propertySet.width ? propertySet.width : this.defaultButtonWidth;
|
|
51
|
-
button.height = propertySet && propertySet.height ? propertySet.height : this.defaultButtonHeight;
|
|
52
|
-
button.color = propertySet && propertySet.color ? propertySet.color : this.defaultButtonColor;
|
|
53
|
-
button.background = propertySet && propertySet.background ? propertySet.background : this.defaultButtonBackground;
|
|
54
|
-
button.paddingLeft = propertySet && propertySet.paddingLeft ? propertySet.paddingLeft : this.defaultButtonPaddingLeft;
|
|
55
|
-
button.paddingRight = propertySet && propertySet.paddingRight ? propertySet.paddingRight : this.defaultButtonPaddingRight;
|
|
56
|
-
button.paddingTop = propertySet && propertySet.paddingTop ? propertySet.paddingTop : this.defaultButtonPaddingTop;
|
|
57
|
-
button.paddingBottom = propertySet && propertySet.paddingBottom ? propertySet.paddingBottom : this.defaultButtonPaddingBottom;
|
|
58
|
-
button.thickness = 0;
|
|
59
|
-
button.isFocusInvisible = true;
|
|
60
|
-
button.shadowColor = this.shadowColor;
|
|
61
|
-
button.shadowBlur = this.shadowBlur;
|
|
62
|
-
button.shadowOffsetX = this.shadowOffsetX;
|
|
63
|
-
button.shadowOffsetY = this.shadowOffsetY;
|
|
64
|
-
button.onPointerUpObservable.add(() => {
|
|
65
|
-
this.onKeyPressObservable.notifyObservers(key);
|
|
66
|
-
});
|
|
67
|
-
return button;
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Adds a new row of keys
|
|
71
|
-
* @param keys defines the list of keys to add
|
|
72
|
-
* @param propertySets defines the associated property sets
|
|
73
|
-
*/
|
|
74
|
-
addKeysRow(keys, propertySets) {
|
|
75
|
-
const panel = new StackPanel();
|
|
76
|
-
panel.isVertical = false;
|
|
77
|
-
panel.isFocusInvisible = true;
|
|
78
|
-
let maxKey = null;
|
|
79
|
-
for (let i = 0; i < keys.length; i++) {
|
|
80
|
-
let properties = null;
|
|
81
|
-
if (propertySets && propertySets.length === keys.length) {
|
|
82
|
-
properties = propertySets[i];
|
|
83
|
-
}
|
|
84
|
-
const key = this._createKey(keys[i], properties);
|
|
85
|
-
if (!maxKey || key.heightInPixels > maxKey.heightInPixels) {
|
|
86
|
-
maxKey = key;
|
|
87
|
-
}
|
|
88
|
-
panel.addControl(key);
|
|
89
|
-
}
|
|
90
|
-
panel.height = maxKey ? maxKey.height : this.defaultButtonHeight;
|
|
91
|
-
this.addControl(panel);
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Set the shift key to a specific state
|
|
95
|
-
* @param shiftState defines the new shift state
|
|
96
|
-
*/
|
|
97
|
-
applyShiftState(shiftState) {
|
|
98
|
-
if (!this.children) {
|
|
99
|
-
return;
|
|
100
|
-
}
|
|
101
|
-
for (let i = 0; i < this.children.length; i++) {
|
|
102
|
-
const row = this.children[i];
|
|
103
|
-
if (!row || !row.children) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
const rowContainer = row;
|
|
107
|
-
for (let j = 0; j < rowContainer.children.length; j++) {
|
|
108
|
-
const button = rowContainer.children[j];
|
|
109
|
-
if (!button || !button.children[0]) {
|
|
110
|
-
continue;
|
|
111
|
-
}
|
|
112
|
-
const buttonTblock = button.children[0];
|
|
113
|
-
if (buttonTblock.text === "\u21E7") {
|
|
114
|
-
button.color = shiftState ? this.shiftButtonColor : this.defaultButtonColor;
|
|
115
|
-
button.thickness = shiftState > 1 ? this.selectedShiftThickness : 0;
|
|
116
|
-
}
|
|
117
|
-
buttonTblock.text = shiftState > 0 ? buttonTblock.text.toUpperCase() : buttonTblock.text.toLowerCase();
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/** Gets the input text control currently attached to the keyboard */
|
|
122
|
-
get connectedInputText() {
|
|
123
|
-
return this._currentlyConnectedInputText;
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Connects the keyboard with an input text control
|
|
127
|
-
*
|
|
128
|
-
* @param input defines the target control
|
|
129
|
-
*/
|
|
130
|
-
connect(input) {
|
|
131
|
-
const inputTextAlreadyConnected = this._connectedInputTexts.some((a) => a.input === input);
|
|
132
|
-
if (inputTextAlreadyConnected) {
|
|
133
|
-
return;
|
|
134
|
-
}
|
|
135
|
-
if (this._onKeyPressObserver === null) {
|
|
136
|
-
this._onKeyPressObserver = this.onKeyPressObservable.add((key) => {
|
|
137
|
-
if (!this._currentlyConnectedInputText) {
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
this._currentlyConnectedInputText._host.focusedControl = this._currentlyConnectedInputText;
|
|
141
|
-
switch (key) {
|
|
142
|
-
case "\u21E7":
|
|
143
|
-
this.shiftState++;
|
|
144
|
-
if (this.shiftState > 2) {
|
|
145
|
-
this.shiftState = 0;
|
|
146
|
-
}
|
|
147
|
-
this.applyShiftState(this.shiftState);
|
|
148
|
-
return;
|
|
149
|
-
case "\u2190":
|
|
150
|
-
if (this._currentlyConnectedInputText instanceof InputTextArea) {
|
|
151
|
-
this._currentlyConnectedInputText.alternativeProcessKey("Backspace");
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
this._currentlyConnectedInputText.processKey(8);
|
|
155
|
-
}
|
|
156
|
-
return;
|
|
157
|
-
case "\u21B5":
|
|
158
|
-
if (this._currentlyConnectedInputText instanceof InputTextArea) {
|
|
159
|
-
this._currentlyConnectedInputText.alternativeProcessKey("Enter");
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
this._currentlyConnectedInputText.processKey(13);
|
|
163
|
-
}
|
|
164
|
-
return;
|
|
165
|
-
}
|
|
166
|
-
if (this._currentlyConnectedInputText instanceof InputTextArea) {
|
|
167
|
-
this._currentlyConnectedInputText.alternativeProcessKey("", this.shiftState ? key.toUpperCase() : key);
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key);
|
|
171
|
-
}
|
|
172
|
-
if (this.shiftState === 1) {
|
|
173
|
-
this.shiftState = 0;
|
|
174
|
-
this.applyShiftState(this.shiftState);
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
this.isVisible = false;
|
|
179
|
-
this._currentlyConnectedInputText = input;
|
|
180
|
-
input._connectedVirtualKeyboard = this;
|
|
181
|
-
// Events hooking
|
|
182
|
-
const onFocusObserver = input.onFocusObservable.add(() => {
|
|
183
|
-
this._currentlyConnectedInputText = input;
|
|
184
|
-
input._connectedVirtualKeyboard = this;
|
|
185
|
-
this.isVisible = true;
|
|
186
|
-
});
|
|
187
|
-
const onBlurObserver = input.onBlurObservable.add(() => {
|
|
188
|
-
input._connectedVirtualKeyboard = null;
|
|
189
|
-
this._currentlyConnectedInputText = null;
|
|
190
|
-
this.isVisible = false;
|
|
191
|
-
});
|
|
192
|
-
this._connectedInputTexts.push({
|
|
193
|
-
input,
|
|
194
|
-
onBlurObserver,
|
|
195
|
-
onFocusObserver,
|
|
196
|
-
});
|
|
197
|
-
}
|
|
198
|
-
/**
|
|
199
|
-
* Disconnects the keyboard from connected InputText controls
|
|
200
|
-
*
|
|
201
|
-
* @param input optionally defines a target control, otherwise all are disconnected
|
|
202
|
-
*/
|
|
203
|
-
disconnect(input) {
|
|
204
|
-
if (input) {
|
|
205
|
-
// .find not available on IE
|
|
206
|
-
const filtered = this._connectedInputTexts.filter((a) => a.input === input);
|
|
207
|
-
if (filtered.length === 1) {
|
|
208
|
-
this._removeConnectedInputObservables(filtered[0]);
|
|
209
|
-
this._connectedInputTexts = this._connectedInputTexts.filter((a) => a.input !== input);
|
|
210
|
-
if (this._currentlyConnectedInputText === input) {
|
|
211
|
-
this._currentlyConnectedInputText = null;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
else {
|
|
216
|
-
for (const connectedInputText of this._connectedInputTexts) {
|
|
217
|
-
this._removeConnectedInputObservables(connectedInputText);
|
|
218
|
-
}
|
|
219
|
-
this._connectedInputTexts.length = 0;
|
|
220
|
-
}
|
|
221
|
-
if (this._connectedInputTexts.length === 0) {
|
|
222
|
-
this._currentlyConnectedInputText = null;
|
|
223
|
-
this.onKeyPressObservable.remove(this._onKeyPressObserver);
|
|
224
|
-
this._onKeyPressObserver = null;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
_removeConnectedInputObservables(connectedInputText) {
|
|
228
|
-
connectedInputText.input._connectedVirtualKeyboard = null;
|
|
229
|
-
connectedInputText.input.onFocusObservable.remove(connectedInputText.onFocusObserver);
|
|
230
|
-
connectedInputText.input.onBlurObservable.remove(connectedInputText.onBlurObserver);
|
|
231
|
-
}
|
|
232
|
-
/**
|
|
233
|
-
* Release all resources
|
|
234
|
-
*/
|
|
235
|
-
dispose() {
|
|
236
|
-
super.dispose();
|
|
237
|
-
this.disconnect();
|
|
238
|
-
}
|
|
239
|
-
// Statics
|
|
240
|
-
/**
|
|
241
|
-
* Creates a new keyboard using a default layout
|
|
242
|
-
*
|
|
243
|
-
* @param name defines control name
|
|
244
|
-
* @returns a new VirtualKeyboard
|
|
245
|
-
*/
|
|
246
|
-
static CreateDefaultLayout(name) {
|
|
247
|
-
const returnValue = new VirtualKeyboard(name);
|
|
248
|
-
returnValue.addKeysRow(["1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "\u2190"]);
|
|
249
|
-
returnValue.addKeysRow(["q", "w", "e", "r", "t", "y", "u", "i", "o", "p"]);
|
|
250
|
-
returnValue.addKeysRow(["a", "s", "d", "f", "g", "h", "j", "k", "l", ";", "'", "\u21B5"]);
|
|
251
|
-
returnValue.addKeysRow(["\u21E7", "z", "x", "c", "v", "b", "n", "m", ",", ".", "/"]);
|
|
252
|
-
returnValue.addKeysRow([" "], [{ width: "200px" }]);
|
|
253
|
-
return returnValue;
|
|
254
|
-
}
|
|
255
|
-
/**
|
|
256
|
-
* @internal
|
|
257
|
-
*/
|
|
258
|
-
_parseFromContent(serializedObject, host) {
|
|
259
|
-
super._parseFromContent(serializedObject, host);
|
|
260
|
-
for (const row of this.children) {
|
|
261
|
-
if (row.getClassName() === "StackPanel") {
|
|
262
|
-
const stackPanel = row;
|
|
263
|
-
for (const key of stackPanel.children) {
|
|
264
|
-
if (key.getClassName() === "Button" && key.name) {
|
|
265
|
-
key.onPointerUpObservable.add(() => {
|
|
266
|
-
this.onKeyPressObservable.notifyObservers(key.name);
|
|
267
|
-
});
|
|
268
|
-
}
|
|
269
|
-
}
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
RegisterClass("BABYLON.GUI.VirtualKeyboard", VirtualKeyboard);
|
|
5
|
+
export * from "./virtualKeyboard.pure.js";
|
|
6
|
+
import { RegisterVirtualKeyboard } from "./virtualKeyboard.pure.js";
|
|
7
|
+
RegisterVirtualKeyboard();
|
|
275
8
|
//# sourceMappingURL=virtualKeyboard.js.map
|