@onerjs/gui 8.23.1
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/guiTask.d.ts +34 -0
- package/2D/FrameGraph/guiTask.js +62 -0
- package/2D/FrameGraph/guiTask.js.map +1 -0
- package/2D/FrameGraph/renderGraphGUIBlock.d.ts +43 -0
- package/2D/FrameGraph/renderGraphGUIBlock.js +66 -0
- package/2D/FrameGraph/renderGraphGUIBlock.js.map +1 -0
- package/2D/adtInstrumentation.d.ts +52 -0
- package/2D/adtInstrumentation.js +107 -0
- package/2D/adtInstrumentation.js.map +1 -0
- package/2D/advancedDynamicTexture.d.ts +548 -0
- package/2D/advancedDynamicTexture.js +1522 -0
- package/2D/advancedDynamicTexture.js.map +1 -0
- package/2D/controls/button.d.ts +109 -0
- package/2D/controls/button.js +246 -0
- package/2D/controls/button.js.map +1 -0
- package/2D/controls/checkbox.d.ts +53 -0
- package/2D/controls/checkbox.js +164 -0
- package/2D/controls/checkbox.js.map +1 -0
- package/2D/controls/colorpicker.d.ts +101 -0
- package/2D/controls/colorpicker.js +1396 -0
- package/2D/controls/colorpicker.js.map +1 -0
- package/2D/controls/container.d.ts +179 -0
- package/2D/controls/container.js +616 -0
- package/2D/controls/container.js.map +1 -0
- package/2D/controls/control.d.ts +943 -0
- package/2D/controls/control.js +2460 -0
- package/2D/controls/control.js.map +1 -0
- package/2D/controls/displayGrid.d.ts +53 -0
- package/2D/controls/displayGrid.js +202 -0
- package/2D/controls/displayGrid.js.map +1 -0
- package/2D/controls/ellipse.d.ts +25 -0
- package/2D/controls/ellipse.js +93 -0
- package/2D/controls/ellipse.js.map +1 -0
- package/2D/controls/focusableButton.d.ts +17 -0
- package/2D/controls/focusableButton.js +25 -0
- package/2D/controls/focusableButton.js.map +1 -0
- package/2D/controls/focusableControl.d.ts +43 -0
- package/2D/controls/focusableControl.js +2 -0
- package/2D/controls/focusableControl.js.map +1 -0
- package/2D/controls/gradient/BaseGradient.d.ts +69 -0
- package/2D/controls/gradient/BaseGradient.js +84 -0
- package/2D/controls/gradient/BaseGradient.js.map +1 -0
- package/2D/controls/gradient/LinearGradient.d.ts +45 -0
- package/2D/controls/gradient/LinearGradient.js +73 -0
- package/2D/controls/gradient/LinearGradient.js.map +1 -0
- package/2D/controls/gradient/RadialGradient.d.ts +53 -0
- package/2D/controls/gradient/RadialGradient.js +89 -0
- package/2D/controls/gradient/RadialGradient.js.map +1 -0
- package/2D/controls/grid.d.ts +151 -0
- package/2D/controls/grid.js +528 -0
- package/2D/controls/grid.js.map +1 -0
- package/2D/controls/image.d.ts +228 -0
- package/2D/controls/image.js +915 -0
- package/2D/controls/image.js.map +1 -0
- package/2D/controls/index.d.ts +34 -0
- package/2D/controls/index.js +35 -0
- package/2D/controls/index.js.map +1 -0
- package/2D/controls/inputPassword.d.ts +9 -0
- package/2D/controls/inputPassword.js +22 -0
- package/2D/controls/inputPassword.js.map +1 -0
- package/2D/controls/inputText.d.ts +197 -0
- package/2D/controls/inputText.js +1035 -0
- package/2D/controls/inputText.js.map +1 -0
- package/2D/controls/inputTextArea.d.ts +142 -0
- package/2D/controls/inputTextArea.js +1025 -0
- package/2D/controls/inputTextArea.js.map +1 -0
- package/2D/controls/line.d.ts +73 -0
- package/2D/controls/line.js +227 -0
- package/2D/controls/line.js.map +1 -0
- package/2D/controls/multiLine.d.ts +75 -0
- package/2D/controls/multiLine.js +237 -0
- package/2D/controls/multiLine.js.map +1 -0
- package/2D/controls/radioButton.d.ts +49 -0
- package/2D/controls/radioButton.js +185 -0
- package/2D/controls/radioButton.js.map +1 -0
- package/2D/controls/rectangle.d.ts +43 -0
- package/2D/controls/rectangle.js +204 -0
- package/2D/controls/rectangle.js.map +1 -0
- package/2D/controls/scrollViewers/scrollViewer.d.ts +178 -0
- package/2D/controls/scrollViewers/scrollViewer.js +587 -0
- package/2D/controls/scrollViewers/scrollViewer.js.map +1 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.d.ts +51 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.js +254 -0
- package/2D/controls/scrollViewers/scrollViewerWindow.js.map +1 -0
- package/2D/controls/selector.d.ts +237 -0
- package/2D/controls/selector.js +579 -0
- package/2D/controls/selector.js.map +1 -0
- package/2D/controls/sliders/baseSlider.d.ts +80 -0
- package/2D/controls/sliders/baseSlider.js +299 -0
- package/2D/controls/sliders/baseSlider.js.map +1 -0
- package/2D/controls/sliders/imageBasedSlider.d.ts +47 -0
- package/2D/controls/sliders/imageBasedSlider.js +168 -0
- package/2D/controls/sliders/imageBasedSlider.js.map +1 -0
- package/2D/controls/sliders/imageScrollBar.d.ts +67 -0
- package/2D/controls/sliders/imageScrollBar.js +248 -0
- package/2D/controls/sliders/imageScrollBar.js.map +1 -0
- package/2D/controls/sliders/scrollBar.d.ts +50 -0
- package/2D/controls/sliders/scrollBar.js +175 -0
- package/2D/controls/sliders/scrollBar.js.map +1 -0
- package/2D/controls/sliders/slider.d.ts +46 -0
- package/2D/controls/sliders/slider.js +281 -0
- package/2D/controls/sliders/slider.js.map +1 -0
- package/2D/controls/stackPanel.d.ts +64 -0
- package/2D/controls/stackPanel.js +244 -0
- package/2D/controls/stackPanel.js.map +1 -0
- package/2D/controls/statics.d.ts +6 -0
- package/2D/controls/statics.js +50 -0
- package/2D/controls/statics.js.map +1 -0
- package/2D/controls/textBlock.d.ts +219 -0
- package/2D/controls/textBlock.js +670 -0
- package/2D/controls/textBlock.js.map +1 -0
- package/2D/controls/textWrapper.d.ts +13 -0
- package/2D/controls/textWrapper.js +88 -0
- package/2D/controls/textWrapper.js.map +1 -0
- package/2D/controls/toggleButton.d.ts +93 -0
- package/2D/controls/toggleButton.js +229 -0
- package/2D/controls/toggleButton.js.map +1 -0
- package/2D/controls/virtualKeyboard.d.ts +102 -0
- package/2D/controls/virtualKeyboard.js +275 -0
- package/2D/controls/virtualKeyboard.js.map +1 -0
- package/2D/index.d.ts +11 -0
- package/2D/index.js +13 -0
- package/2D/index.js.map +1 -0
- package/2D/math2D.d.ts +136 -0
- package/2D/math2D.js +235 -0
- package/2D/math2D.js.map +1 -0
- package/2D/measure.d.ts +77 -0
- package/2D/measure.js +138 -0
- package/2D/measure.js.map +1 -0
- package/2D/multiLinePoint.d.ts +47 -0
- package/2D/multiLinePoint.js +110 -0
- package/2D/multiLinePoint.js.map +1 -0
- package/2D/style.d.ts +46 -0
- package/2D/style.js +80 -0
- package/2D/style.js.map +1 -0
- package/2D/valueAndUnit.d.ts +89 -0
- package/2D/valueAndUnit.js +194 -0
- package/2D/valueAndUnit.js.map +1 -0
- package/2D/xmlLoader.d.ts +60 -0
- package/2D/xmlLoader.js +348 -0
- package/2D/xmlLoader.js.map +1 -0
- package/3D/behaviors/defaultBehavior.d.ts +73 -0
- package/3D/behaviors/defaultBehavior.js +103 -0
- package/3D/behaviors/defaultBehavior.js.map +1 -0
- package/3D/controls/MRTK3/touchHolographicButton.d.ts +220 -0
- package/3D/controls/MRTK3/touchHolographicButton.js +868 -0
- package/3D/controls/MRTK3/touchHolographicButton.js.map +1 -0
- package/3D/controls/abstractButton3D.d.ts +15 -0
- package/3D/controls/abstractButton3D.js +22 -0
- package/3D/controls/abstractButton3D.js.map +1 -0
- package/3D/controls/button3D.d.ts +51 -0
- package/3D/controls/button3D.js +98 -0
- package/3D/controls/button3D.js.map +1 -0
- package/3D/controls/container3D.d.ts +72 -0
- package/3D/controls/container3D.js +126 -0
- package/3D/controls/container3D.js.map +1 -0
- package/3D/controls/contentDisplay3D.d.ts +42 -0
- package/3D/controls/contentDisplay3D.js +81 -0
- package/3D/controls/contentDisplay3D.js.map +1 -0
- package/3D/controls/control3D.d.ts +183 -0
- package/3D/controls/control3D.js +401 -0
- package/3D/controls/control3D.js.map +1 -0
- package/3D/controls/cylinderPanel.d.ts +17 -0
- package/3D/controls/cylinderPanel.js +57 -0
- package/3D/controls/cylinderPanel.js.map +1 -0
- package/3D/controls/handMenu.d.ts +28 -0
- package/3D/controls/handMenu.js +39 -0
- package/3D/controls/handMenu.js.map +1 -0
- package/3D/controls/holographicBackplate.d.ts +49 -0
- package/3D/controls/holographicBackplate.js +104 -0
- package/3D/controls/holographicBackplate.js.map +1 -0
- package/3D/controls/holographicButton.d.ts +84 -0
- package/3D/controls/holographicButton.js +300 -0
- package/3D/controls/holographicButton.js.map +1 -0
- package/3D/controls/holographicSlate.d.ts +134 -0
- package/3D/controls/holographicSlate.js +413 -0
- package/3D/controls/holographicSlate.js.map +1 -0
- package/3D/controls/index.d.ts +22 -0
- package/3D/controls/index.js +24 -0
- package/3D/controls/index.js.map +1 -0
- package/3D/controls/meshButton3D.d.ts +21 -0
- package/3D/controls/meshButton3D.js +58 -0
- package/3D/controls/meshButton3D.js.map +1 -0
- package/3D/controls/nearMenu.d.ts +44 -0
- package/3D/controls/nearMenu.js +103 -0
- package/3D/controls/nearMenu.js.map +1 -0
- package/3D/controls/planePanel.d.ts +9 -0
- package/3D/controls/planePanel.js +30 -0
- package/3D/controls/planePanel.js.map +1 -0
- package/3D/controls/scatterPanel.d.ts +18 -0
- package/3D/controls/scatterPanel.js +98 -0
- package/3D/controls/scatterPanel.js.map +1 -0
- package/3D/controls/slider3D.d.ts +95 -0
- package/3D/controls/slider3D.js +256 -0
- package/3D/controls/slider3D.js.map +1 -0
- package/3D/controls/spherePanel.d.ts +17 -0
- package/3D/controls/spherePanel.js +58 -0
- package/3D/controls/spherePanel.js.map +1 -0
- package/3D/controls/stackPanel3D.d.ts +22 -0
- package/3D/controls/stackPanel3D.js +95 -0
- package/3D/controls/stackPanel3D.js.map +1 -0
- package/3D/controls/touchButton3D.d.ts +77 -0
- package/3D/controls/touchButton3D.js +205 -0
- package/3D/controls/touchButton3D.js.map +1 -0
- package/3D/controls/touchHolographicButton.d.ts +110 -0
- package/3D/controls/touchHolographicButton.js +400 -0
- package/3D/controls/touchHolographicButton.js.map +1 -0
- package/3D/controls/touchHolographicMenu.d.ts +61 -0
- package/3D/controls/touchHolographicMenu.js +139 -0
- package/3D/controls/touchHolographicMenu.js.map +1 -0
- package/3D/controls/touchMeshButton3D.d.ts +21 -0
- package/3D/controls/touchMeshButton3D.js +58 -0
- package/3D/controls/touchMeshButton3D.js.map +1 -0
- package/3D/controls/volumeBasedPanel.d.ts +53 -0
- package/3D/controls/volumeBasedPanel.js +158 -0
- package/3D/controls/volumeBasedPanel.js.map +1 -0
- package/3D/gizmos/gizmoHandle.d.ts +108 -0
- package/3D/gizmos/gizmoHandle.js +175 -0
- package/3D/gizmos/gizmoHandle.js.map +1 -0
- package/3D/gizmos/index.d.ts +2 -0
- package/3D/gizmos/index.js +3 -0
- package/3D/gizmos/index.js.map +1 -0
- package/3D/gizmos/slateGizmo.d.ts +57 -0
- package/3D/gizmos/slateGizmo.js +353 -0
- package/3D/gizmos/slateGizmo.js.map +1 -0
- package/3D/gui3DManager.d.ts +94 -0
- package/3D/gui3DManager.js +233 -0
- package/3D/gui3DManager.js.map +1 -0
- package/3D/index.d.ts +5 -0
- package/3D/index.js +7 -0
- package/3D/index.js.map +1 -0
- package/3D/materials/fluent/fluentMaterial.d.ts +91 -0
- package/3D/materials/fluent/fluentMaterial.js +286 -0
- package/3D/materials/fluent/fluentMaterial.js.map +1 -0
- package/3D/materials/fluent/index.d.ts +1 -0
- package/3D/materials/fluent/index.js +2 -0
- package/3D/materials/fluent/index.js.map +1 -0
- package/3D/materials/fluent/shaders/fluent.fragment.d.ts +5 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js +41 -0
- package/3D/materials/fluent/shaders/fluent.fragment.js.map +1 -0
- package/3D/materials/fluent/shaders/fluent.vertex.d.ts +5 -0
- package/3D/materials/fluent/shaders/fluent.vertex.js +40 -0
- package/3D/materials/fluent/shaders/fluent.vertex.js.map +1 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.d.ts +155 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js +466 -0
- package/3D/materials/fluentBackplate/fluentBackplateMaterial.js.map +1 -0
- package/3D/materials/fluentBackplate/index.d.ts +1 -0
- package/3D/materials/fluentBackplate/index.js +2 -0
- package/3D/materials/fluentBackplate/index.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js +60 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.fragment.js.map +1 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.d.ts +5 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js +127 -0
- package/3D/materials/fluentBackplate/shaders/fluentBackplate.vertex.js.map +1 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.d.ts +190 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js +536 -0
- package/3D/materials/fluentButton/fluentButtonMaterial.js.map +1 -0
- package/3D/materials/fluentButton/index.d.ts +1 -0
- package/3D/materials/fluentButton/index.js +2 -0
- package/3D/materials/fluentButton/index.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js +57 -0
- package/3D/materials/fluentButton/shaders/fluentButton.fragment.js.map +1 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.d.ts +5 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js +162 -0
- package/3D/materials/fluentButton/shaders/fluentButton.vertex.js.map +1 -0
- package/3D/materials/fluentMaterial.d.ts +4 -0
- package/3D/materials/fluentMaterial.js +5 -0
- package/3D/materials/fluentMaterial.js.map +1 -0
- package/3D/materials/handle/handleMaterial.d.ts +68 -0
- package/3D/materials/handle/handleMaterial.js +114 -0
- package/3D/materials/handle/handleMaterial.js.map +1 -0
- package/3D/materials/handle/index.d.ts +1 -0
- package/3D/materials/handle/index.js +2 -0
- package/3D/materials/handle/index.js.map +1 -0
- package/3D/materials/handle/shaders/handle.fragment.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.fragment.js +11 -0
- package/3D/materials/handle/shaders/handle.fragment.js.map +1 -0
- package/3D/materials/handle/shaders/handle.vertex.d.ts +5 -0
- package/3D/materials/handle/shaders/handle.vertex.js +11 -0
- package/3D/materials/handle/shaders/handle.vertex.js.map +1 -0
- package/3D/materials/index.d.ts +5 -0
- package/3D/materials/index.js +7 -0
- package/3D/materials/index.js.map +1 -0
- package/3D/materials/mrdl/index.d.ts +3 -0
- package/3D/materials/mrdl/index.js +4 -0
- package/3D/materials/mrdl/index.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.d.ts +87 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.js +302 -0
- package/3D/materials/mrdl/mrdlBackglowMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.d.ts +148 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js +433 -0
- package/3D/materials/mrdl/mrdlBackplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.d.ts +186 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js +532 -0
- package/3D/materials/mrdl/mrdlFrontplateMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.d.ts +56 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js +230 -0
- package/3D/materials/mrdl/mrdlInnerquadMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.d.ts +337 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js +855 -0
- package/3D/materials/mrdl/mrdlSliderBarMaterial.js.map +1 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.d.ts +337 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js +855 -0
- package/3D/materials/mrdl/mrdlSliderThumbMaterial.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.js +25 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.js +12 -0
- package/3D/materials/mrdl/shaders/mrdlBackglow.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js +88 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js +96 -0
- package/3D/materials/mrdl/shaders/mrdlBackplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.js +48 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.js +158 -0
- package/3D/materials/mrdl/shaders/mrdlFrontplate.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.js +27 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.js +13 -0
- package/3D/materials/mrdl/shaders/mrdlInnerquad.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js +236 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js +137 -0
- package/3D/materials/mrdl/shaders/mrdlSliderBar.vertex.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js +236 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.fragment.js.map +1 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.d.ts +5 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js +137 -0
- package/3D/materials/mrdl/shaders/mrdlSliderThumb.vertex.js.map +1 -0
- package/3D/vector3WithInfo.d.ts +16 -0
- package/3D/vector3WithInfo.js +18 -0
- package/3D/vector3WithInfo.js.map +1 -0
- package/index.d.ts +2 -0
- package/index.js +4 -0
- package/index.js.map +1 -0
- package/legacy/legacy.d.ts +1 -0
- package/legacy/legacy.js +17 -0
- package/legacy/legacy.js.map +1 -0
- package/license.md +71 -0
- package/package.json +47 -0
- package/readme.md +31 -0
|
@@ -0,0 +1,102 @@
|
|
|
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
|
+
/**
|
|
8
|
+
* Class used to store key control properties
|
|
9
|
+
*/
|
|
10
|
+
export declare class KeyPropertySet {
|
|
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
|
+
}
|
|
@@ -0,0 +1,275 @@
|
|
|
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
|
+
/**
|
|
7
|
+
* Class used to store key control properties
|
|
8
|
+
*/
|
|
9
|
+
export class KeyPropertySet {
|
|
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);
|
|
275
|
+
//# sourceMappingURL=virtualKeyboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"virtualKeyboard.js","sourceRoot":"","sources":["../../../../../dev/gui/src/2D/controls/virtualKeyboard.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\r\nimport type { Observer } from \"core/Misc/observable\";\r\nimport { Observable } from \"core/Misc/observable\";\r\n\r\nimport { StackPanel } from \"./stackPanel\";\r\nimport { Button } from \"./button\";\r\nimport type { Container } from \"./container\";\r\nimport type { TextBlock } from \"./textBlock\";\r\nimport type { InputText } from \"./inputText\";\r\nimport { RegisterClass } from \"core/Misc/typeStore\";\r\nimport type { AdvancedDynamicTexture } from \"../advancedDynamicTexture\";\r\nimport { InputTextArea } from \"./inputTextArea\";\r\nimport type { Control } from \"./control\";\r\n\r\n/**\r\n * Class used to store key control properties\r\n */\r\nexport class KeyPropertySet {\r\n /** Width */\r\n width?: string;\r\n /** Height */\r\n height?: string;\r\n /** Left padding */\r\n paddingLeft?: string;\r\n /** Right padding */\r\n paddingRight?: string;\r\n /** Top padding */\r\n paddingTop?: string;\r\n /** Bottom padding */\r\n paddingBottom?: string;\r\n /** Foreground color */\r\n color?: string;\r\n /** Background color */\r\n background?: string;\r\n}\r\n\r\ntype ConnectedInputText = {\r\n input: InputText;\r\n onFocusObserver: Nullable<Observer<Control>>;\r\n onBlurObserver: Nullable<Observer<Control>>;\r\n};\r\n\r\n/**\r\n * Class used to create virtual keyboard\r\n */\r\nexport class VirtualKeyboard extends StackPanel {\r\n /** Observable raised when a key is pressed */\r\n public onKeyPressObservable = new Observable<string>();\r\n\r\n /** Gets or sets default key button width */\r\n public defaultButtonWidth = \"40px\";\r\n /** Gets or sets default key button height */\r\n public defaultButtonHeight = \"40px\";\r\n\r\n /** Gets or sets default key button left padding */\r\n public defaultButtonPaddingLeft = \"2px\";\r\n /** Gets or sets default key button right padding */\r\n public defaultButtonPaddingRight = \"2px\";\r\n /** Gets or sets default key button top padding */\r\n public defaultButtonPaddingTop = \"2px\";\r\n /** Gets or sets default key button bottom padding */\r\n public defaultButtonPaddingBottom = \"2px\";\r\n\r\n /** Gets or sets default key button foreground color */\r\n public defaultButtonColor = \"#DDD\";\r\n /** Gets or sets default key button background color */\r\n public defaultButtonBackground = \"#070707\";\r\n\r\n /** Gets or sets shift button foreground color */\r\n public shiftButtonColor = \"#7799FF\";\r\n /** Gets or sets shift button thickness*/\r\n public selectedShiftThickness = 1;\r\n\r\n /** Gets shift key state */\r\n public shiftState = 0;\r\n\r\n protected override _getTypeName(): string {\r\n return \"VirtualKeyboard\";\r\n }\r\n\r\n private _createKey(key: string, propertySet: Nullable<KeyPropertySet>) {\r\n const button = Button.CreateSimpleButton(key, key);\r\n\r\n button.width = propertySet && propertySet.width ? propertySet.width : this.defaultButtonWidth;\r\n button.height = propertySet && propertySet.height ? propertySet.height : this.defaultButtonHeight;\r\n button.color = propertySet && propertySet.color ? propertySet.color : this.defaultButtonColor;\r\n button.background = propertySet && propertySet.background ? propertySet.background : this.defaultButtonBackground;\r\n button.paddingLeft = propertySet && propertySet.paddingLeft ? propertySet.paddingLeft : this.defaultButtonPaddingLeft;\r\n button.paddingRight = propertySet && propertySet.paddingRight ? propertySet.paddingRight : this.defaultButtonPaddingRight;\r\n button.paddingTop = propertySet && propertySet.paddingTop ? propertySet.paddingTop : this.defaultButtonPaddingTop;\r\n button.paddingBottom = propertySet && propertySet.paddingBottom ? propertySet.paddingBottom : this.defaultButtonPaddingBottom;\r\n\r\n button.thickness = 0;\r\n button.isFocusInvisible = true;\r\n\r\n button.shadowColor = this.shadowColor;\r\n button.shadowBlur = this.shadowBlur;\r\n button.shadowOffsetX = this.shadowOffsetX;\r\n button.shadowOffsetY = this.shadowOffsetY;\r\n\r\n button.onPointerUpObservable.add(() => {\r\n this.onKeyPressObservable.notifyObservers(key);\r\n });\r\n\r\n return button;\r\n }\r\n\r\n /**\r\n * Adds a new row of keys\r\n * @param keys defines the list of keys to add\r\n * @param propertySets defines the associated property sets\r\n */\r\n public addKeysRow(keys: Array<string>, propertySets?: Array<KeyPropertySet>): void {\r\n const panel = new StackPanel();\r\n panel.isVertical = false;\r\n panel.isFocusInvisible = true;\r\n\r\n let maxKey: Nullable<Button> = null;\r\n for (let i = 0; i < keys.length; i++) {\r\n let properties = null;\r\n\r\n if (propertySets && propertySets.length === keys.length) {\r\n properties = propertySets[i];\r\n }\r\n\r\n const key = this._createKey(keys[i], properties);\r\n if (!maxKey || key.heightInPixels > maxKey.heightInPixels) {\r\n maxKey = key;\r\n }\r\n\r\n panel.addControl(key);\r\n }\r\n\r\n panel.height = maxKey ? maxKey.height : this.defaultButtonHeight;\r\n\r\n this.addControl(panel);\r\n }\r\n\r\n /**\r\n * Set the shift key to a specific state\r\n * @param shiftState defines the new shift state\r\n */\r\n public applyShiftState(shiftState: number): void {\r\n if (!this.children) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < this.children.length; i++) {\r\n const row = this.children[i];\r\n if (!row || !(<Container>row).children) {\r\n continue;\r\n }\r\n\r\n const rowContainer = <Container>row;\r\n for (let j = 0; j < rowContainer.children.length; j++) {\r\n const button = rowContainer.children[j] as Button;\r\n\r\n if (!button || !button.children[0]) {\r\n continue;\r\n }\r\n\r\n const buttonTblock = button.children[0] as TextBlock;\r\n\r\n if (buttonTblock.text === \"\\u21E7\") {\r\n button.color = shiftState ? this.shiftButtonColor : this.defaultButtonColor;\r\n button.thickness = shiftState > 1 ? this.selectedShiftThickness : 0;\r\n }\r\n\r\n buttonTblock.text = shiftState > 0 ? buttonTblock.text.toUpperCase() : buttonTblock.text.toLowerCase();\r\n }\r\n }\r\n }\r\n\r\n private _currentlyConnectedInputText: Nullable<InputText | InputTextArea> = null;\r\n private _connectedInputTexts: ConnectedInputText[] = [];\r\n private _onKeyPressObserver: Nullable<Observer<string>> = null;\r\n\r\n /** Gets the input text control currently attached to the keyboard */\r\n public get connectedInputText(): Nullable<InputText | InputTextArea> {\r\n return this._currentlyConnectedInputText;\r\n }\r\n\r\n /**\r\n * Connects the keyboard with an input text control\r\n *\r\n * @param input defines the target control\r\n */\r\n public connect(input: InputText): void {\r\n const inputTextAlreadyConnected = this._connectedInputTexts.some((a) => a.input === input);\r\n if (inputTextAlreadyConnected) {\r\n return;\r\n }\r\n\r\n if (this._onKeyPressObserver === null) {\r\n this._onKeyPressObserver = this.onKeyPressObservable.add((key) => {\r\n if (!this._currentlyConnectedInputText) {\r\n return;\r\n }\r\n\r\n this._currentlyConnectedInputText._host.focusedControl = this._currentlyConnectedInputText;\r\n\r\n switch (key) {\r\n case \"\\u21E7\":\r\n this.shiftState++;\r\n if (this.shiftState > 2) {\r\n this.shiftState = 0;\r\n }\r\n this.applyShiftState(this.shiftState);\r\n return;\r\n case \"\\u2190\":\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"Backspace\");\r\n } else {\r\n this._currentlyConnectedInputText.processKey(8);\r\n }\r\n return;\r\n case \"\\u21B5\":\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"Enter\");\r\n } else {\r\n this._currentlyConnectedInputText.processKey(13);\r\n }\r\n return;\r\n }\r\n if (this._currentlyConnectedInputText instanceof InputTextArea) {\r\n this._currentlyConnectedInputText.alternativeProcessKey(\"\", this.shiftState ? key.toUpperCase() : key);\r\n } else {\r\n this._currentlyConnectedInputText.processKey(-1, this.shiftState ? key.toUpperCase() : key);\r\n }\r\n\r\n if (this.shiftState === 1) {\r\n this.shiftState = 0;\r\n this.applyShiftState(this.shiftState);\r\n }\r\n });\r\n }\r\n\r\n this.isVisible = false;\r\n this._currentlyConnectedInputText = input;\r\n input._connectedVirtualKeyboard = this;\r\n\r\n // Events hooking\r\n const onFocusObserver: Nullable<Observer<Control>> = input.onFocusObservable.add(() => {\r\n this._currentlyConnectedInputText = input;\r\n input._connectedVirtualKeyboard = this;\r\n this.isVisible = true;\r\n });\r\n\r\n const onBlurObserver: Nullable<Observer<Control>> = input.onBlurObservable.add(() => {\r\n input._connectedVirtualKeyboard = null;\r\n this._currentlyConnectedInputText = null;\r\n this.isVisible = false;\r\n });\r\n\r\n this._connectedInputTexts.push({\r\n input,\r\n onBlurObserver,\r\n onFocusObserver,\r\n });\r\n }\r\n\r\n /**\r\n * Disconnects the keyboard from connected InputText controls\r\n *\r\n * @param input optionally defines a target control, otherwise all are disconnected\r\n */\r\n public disconnect(input?: InputText): void {\r\n if (input) {\r\n // .find not available on IE\r\n const filtered = this._connectedInputTexts.filter((a) => a.input === input);\r\n if (filtered.length === 1) {\r\n this._removeConnectedInputObservables(filtered[0]);\r\n\r\n this._connectedInputTexts = this._connectedInputTexts.filter((a) => a.input !== input);\r\n if (this._currentlyConnectedInputText === input) {\r\n this._currentlyConnectedInputText = null;\r\n }\r\n }\r\n } else {\r\n for (const connectedInputText of this._connectedInputTexts) {\r\n this._removeConnectedInputObservables(connectedInputText);\r\n }\r\n this._connectedInputTexts.length = 0;\r\n }\r\n\r\n if (this._connectedInputTexts.length === 0) {\r\n this._currentlyConnectedInputText = null;\r\n this.onKeyPressObservable.remove(this._onKeyPressObserver);\r\n this._onKeyPressObserver = null;\r\n }\r\n }\r\n\r\n private _removeConnectedInputObservables(connectedInputText: ConnectedInputText): void {\r\n connectedInputText.input._connectedVirtualKeyboard = null;\r\n connectedInputText.input.onFocusObservable.remove(connectedInputText.onFocusObserver);\r\n connectedInputText.input.onBlurObservable.remove(connectedInputText.onBlurObserver);\r\n }\r\n\r\n /**\r\n * Release all resources\r\n */\r\n public override dispose(): void {\r\n super.dispose();\r\n\r\n this.disconnect();\r\n }\r\n\r\n // Statics\r\n\r\n /**\r\n * Creates a new keyboard using a default layout\r\n *\r\n * @param name defines control name\r\n * @returns a new VirtualKeyboard\r\n */\r\n public static CreateDefaultLayout(name?: string): VirtualKeyboard {\r\n const returnValue = new VirtualKeyboard(name);\r\n\r\n returnValue.addKeysRow([\"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"0\", \"\\u2190\"]);\r\n returnValue.addKeysRow([\"q\", \"w\", \"e\", \"r\", \"t\", \"y\", \"u\", \"i\", \"o\", \"p\"]);\r\n returnValue.addKeysRow([\"a\", \"s\", \"d\", \"f\", \"g\", \"h\", \"j\", \"k\", \"l\", \";\", \"'\", \"\\u21B5\"]);\r\n returnValue.addKeysRow([\"\\u21E7\", \"z\", \"x\", \"c\", \"v\", \"b\", \"n\", \"m\", \",\", \".\", \"/\"]);\r\n returnValue.addKeysRow([\" \"], [{ width: \"200px\" }]);\r\n\r\n return returnValue;\r\n }\r\n\r\n /**\r\n * @internal\r\n */\r\n public override _parseFromContent(serializedObject: any, host: AdvancedDynamicTexture) {\r\n super._parseFromContent(serializedObject, host);\r\n for (const row of this.children) {\r\n if (row.getClassName() === \"StackPanel\") {\r\n const stackPanel = row as StackPanel;\r\n for (const key of stackPanel.children) {\r\n if (key.getClassName() === \"Button\" && key.name) {\r\n key.onPointerUpObservable.add(() => {\r\n this.onKeyPressObservable.notifyObservers(key.name as string);\r\n });\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nRegisterClass(\"BABYLON.GUI.VirtualKeyboard\", VirtualKeyboard);\r\n"]}
|
package/2D/index.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export * from "./controls/index.js";
|
|
2
|
+
export * from "./advancedDynamicTexture.js";
|
|
3
|
+
export * from "./adtInstrumentation.js";
|
|
4
|
+
export * from "./math2D.js";
|
|
5
|
+
export * from "./measure.js";
|
|
6
|
+
export * from "./multiLinePoint.js";
|
|
7
|
+
export * from "./FrameGraph/guiTask.js";
|
|
8
|
+
export * from "./FrameGraph/renderGraphGUIBlock.js";
|
|
9
|
+
export * from "./style.js";
|
|
10
|
+
export * from "./valueAndUnit.js";
|
|
11
|
+
export * from "./xmlLoader.js";
|
package/2D/index.js
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-restricted-imports */
|
|
2
|
+
export * from "./controls/index.js";
|
|
3
|
+
export * from "./advancedDynamicTexture.js";
|
|
4
|
+
export * from "./adtInstrumentation.js";
|
|
5
|
+
export * from "./math2D.js";
|
|
6
|
+
export * from "./measure.js";
|
|
7
|
+
export * from "./multiLinePoint.js";
|
|
8
|
+
export * from "./FrameGraph/guiTask.js";
|
|
9
|
+
export * from "./FrameGraph/renderGraphGUIBlock.js";
|
|
10
|
+
export * from "./style.js";
|
|
11
|
+
export * from "./valueAndUnit.js";
|
|
12
|
+
export * from "./xmlLoader.js";
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
package/2D/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../dev/gui/src/2D/index.ts"],"names":[],"mappings":"AAAA,6DAA6D;AAC7D,cAAc,kBAAkB,CAAC;AAEjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,kBAAkB,CAAC;AACjC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,SAAS,CAAC;AACxB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-restricted-imports */\r\nexport * from \"./controls/index\";\r\n\r\nexport * from \"./advancedDynamicTexture\";\r\nexport * from \"./adtInstrumentation\";\r\nexport * from \"./math2D\";\r\nexport * from \"./measure\";\r\nexport * from \"./multiLinePoint\";\r\nexport * from \"./FrameGraph/guiTask\";\r\nexport * from \"./FrameGraph/renderGraphGUIBlock\";\r\nexport * from \"./style\";\r\nexport * from \"./valueAndUnit\";\r\nexport * from \"./xmlLoader\";\r\n"]}
|
package/2D/math2D.d.ts
ADDED
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import type { Nullable } from "@babylonjs/core/types.js";
|
|
2
|
+
import { Vector2 } from "@babylonjs/core/Maths/math.vector.js";
|
|
3
|
+
/**
|
|
4
|
+
* Class used to transport Vector2 information for pointer events
|
|
5
|
+
*/
|
|
6
|
+
export declare class Vector2WithInfo extends Vector2 {
|
|
7
|
+
/** defines the current mouse button index */
|
|
8
|
+
buttonIndex: number;
|
|
9
|
+
/**
|
|
10
|
+
* Creates a new Vector2WithInfo
|
|
11
|
+
* @param source defines the vector2 data to transport
|
|
12
|
+
* @param buttonIndex defines the current mouse button index
|
|
13
|
+
*/
|
|
14
|
+
constructor(source: Vector2,
|
|
15
|
+
/** defines the current mouse button index */
|
|
16
|
+
buttonIndex?: number);
|
|
17
|
+
}
|
|
18
|
+
/** Class used to provide 2D matrix features */
|
|
19
|
+
export declare class Matrix2D {
|
|
20
|
+
/** Gets the internal array of 6 floats used to store matrix data */
|
|
21
|
+
m: Float32Array<ArrayBuffer>;
|
|
22
|
+
/**
|
|
23
|
+
* Creates a new matrix
|
|
24
|
+
* @param m00 defines value for (0, 0)
|
|
25
|
+
* @param m01 defines value for (0, 1)
|
|
26
|
+
* @param m10 defines value for (1, 0)
|
|
27
|
+
* @param m11 defines value for (1, 1)
|
|
28
|
+
* @param m20 defines value for (2, 0)
|
|
29
|
+
* @param m21 defines value for (2, 1)
|
|
30
|
+
*/
|
|
31
|
+
constructor(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number);
|
|
32
|
+
/**
|
|
33
|
+
* Fills the matrix from direct values
|
|
34
|
+
* @param m00 defines value for (0, 0)
|
|
35
|
+
* @param m01 defines value for (0, 1)
|
|
36
|
+
* @param m10 defines value for (1, 0)
|
|
37
|
+
* @param m11 defines value for (1, 1)
|
|
38
|
+
* @param m20 defines value for (2, 0)
|
|
39
|
+
* @param m21 defines value for (2, 1)
|
|
40
|
+
* @returns the current modified matrix
|
|
41
|
+
*/
|
|
42
|
+
fromValues(m00: number, m01: number, m10: number, m11: number, m20: number, m21: number): Matrix2D;
|
|
43
|
+
/**
|
|
44
|
+
* Gets matrix determinant
|
|
45
|
+
* @returns the determinant
|
|
46
|
+
*/
|
|
47
|
+
determinant(): number;
|
|
48
|
+
/**
|
|
49
|
+
* Inverses the matrix and stores it in a target matrix
|
|
50
|
+
* @param result defines the target matrix
|
|
51
|
+
* @returns the current matrix
|
|
52
|
+
*/
|
|
53
|
+
invertToRef(result: Matrix2D): Matrix2D;
|
|
54
|
+
/**
|
|
55
|
+
* Multiplies the current matrix with another one
|
|
56
|
+
* @param other defines the second operand
|
|
57
|
+
* @param result defines the target matrix
|
|
58
|
+
* @returns the current matrix
|
|
59
|
+
*/
|
|
60
|
+
multiplyToRef(other: Matrix2D, result: Matrix2D): Matrix2D;
|
|
61
|
+
/**
|
|
62
|
+
* Applies the current matrix to a set of 2 floats and stores the result in a vector2
|
|
63
|
+
* @param x defines the x coordinate to transform
|
|
64
|
+
* @param y defines the x coordinate to transform
|
|
65
|
+
* @param result defines the target vector2
|
|
66
|
+
* @returns the current matrix
|
|
67
|
+
*/
|
|
68
|
+
transformCoordinates(x: number, y: number, result: Vector2): Matrix2D;
|
|
69
|
+
/**
|
|
70
|
+
* Creates an identity matrix
|
|
71
|
+
* @returns a new matrix
|
|
72
|
+
*/
|
|
73
|
+
static Identity(): Matrix2D;
|
|
74
|
+
/**
|
|
75
|
+
* Creates an identity matrix and stores it in a target matrix
|
|
76
|
+
* @param result defines the target matrix
|
|
77
|
+
*/
|
|
78
|
+
static IdentityToRef(result: Matrix2D): void;
|
|
79
|
+
/**
|
|
80
|
+
* Creates a translation matrix and stores it in a target matrix
|
|
81
|
+
* @param x defines the x coordinate of the translation
|
|
82
|
+
* @param y defines the y coordinate of the translation
|
|
83
|
+
* @param result defines the target matrix
|
|
84
|
+
*/
|
|
85
|
+
static TranslationToRef(x: number, y: number, result: Matrix2D): void;
|
|
86
|
+
/**
|
|
87
|
+
* Creates a scaling matrix and stores it in a target matrix
|
|
88
|
+
* @param x defines the x coordinate of the scaling
|
|
89
|
+
* @param y defines the y coordinate of the scaling
|
|
90
|
+
* @param result defines the target matrix
|
|
91
|
+
*/
|
|
92
|
+
static ScalingToRef(x: number, y: number, result: Matrix2D): void;
|
|
93
|
+
/**
|
|
94
|
+
* Creates a rotation matrix and stores it in a target matrix
|
|
95
|
+
* @param angle defines the rotation angle
|
|
96
|
+
* @param result defines the target matrix
|
|
97
|
+
*/
|
|
98
|
+
static RotationToRef(angle: number, result: Matrix2D): void;
|
|
99
|
+
private static _TempPreTranslationMatrix;
|
|
100
|
+
private static _TempPostTranslationMatrix;
|
|
101
|
+
private static _TempRotationMatrix;
|
|
102
|
+
private static _TempScalingMatrix;
|
|
103
|
+
private static _TempCompose0;
|
|
104
|
+
private static _TempCompose1;
|
|
105
|
+
private static _TempCompose2;
|
|
106
|
+
/**
|
|
107
|
+
* Composes a matrix from translation, rotation, scaling and parent matrix and stores it in a target matrix
|
|
108
|
+
* @param tx defines the x coordinate of the translation
|
|
109
|
+
* @param ty defines the y coordinate of the translation
|
|
110
|
+
* @param angle defines the rotation angle
|
|
111
|
+
* @param scaleX defines the x coordinate of the scaling
|
|
112
|
+
* @param scaleY defines the y coordinate of the scaling
|
|
113
|
+
* @param parentMatrix defines the parent matrix to multiply by (can be null)
|
|
114
|
+
* @param result defines the target matrix
|
|
115
|
+
*/
|
|
116
|
+
static ComposeToRef(tx: number, ty: number, angle: number, scaleX: number, scaleY: number, parentMatrix: Nullable<Matrix2D>, result: Matrix2D): void;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Useful math functions
|
|
120
|
+
*/
|
|
121
|
+
export declare class MathTools {
|
|
122
|
+
/**
|
|
123
|
+
* Default rounding precision for GUI elements. It should be
|
|
124
|
+
* set to a power of ten, where the exponent means the number
|
|
125
|
+
* of decimal digits to round to, i.e, 100 means 2 decimal digits,
|
|
126
|
+
* 1000 means 3 decimal digits, etc. Default is 100 (2 decimal digits).
|
|
127
|
+
*/
|
|
128
|
+
static DefaultRoundingPrecision: number;
|
|
129
|
+
/**
|
|
130
|
+
* Rounds a number to the nearest multiple of a given precision
|
|
131
|
+
* @param value the value to be rounded
|
|
132
|
+
* @param precision the multiple to which the value will be rounded. Default is 100 (2 decimal digits)
|
|
133
|
+
* @returns
|
|
134
|
+
*/
|
|
135
|
+
static Round(value: number, precision?: number): number;
|
|
136
|
+
}
|