@itwin/imodel-components-react 3.4.1 → 3.4.2
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/CHANGELOG.md +6 -1
- package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
- package/lib/cjs/imodel-components-react/UiIModelComponents.js +79 -79
- package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
- package/lib/cjs/imodel-components-react/color/AlphaSlider.js +186 -186
- package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/AlphaSlider.scss +63 -63
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +107 -107
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +91 -91
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +74 -74
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +145 -145
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +93 -93
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +137 -137
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +64 -64
- package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
- package/lib/cjs/imodel-components-react/color/HueSlider.js +199 -199
- package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/HueSlider.scss +61 -61
- package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
- package/lib/cjs/imodel-components-react/color/SaturationPicker.js +213 -213
- package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/SaturationPicker.scss +35 -35
- package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
- package/lib/cjs/imodel-components-react/color/Swatch.js +60 -60
- package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/Swatch.scss +23 -23
- package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
- package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
- package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
- package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
- package/lib/cjs/imodel-components-react/editors/ColorEditor.js +151 -151
- package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
- package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +18 -18
- package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
- package/lib/cjs/imodel-components-react/editors/WeightEditor.js +160 -160
- package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
- package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +16 -16
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +96 -96
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +265 -265
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
- package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
- package/lib/cjs/imodel-components-react/lineweight/Swatch.js +85 -85
- package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +48 -48
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +159 -159
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +52 -52
- package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
- package/lib/cjs/imodel-components-react/navigationaids/Cube.js +127 -127
- package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/Cube.scss +19 -19
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +634 -634
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +180 -180
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +647 -647
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -133
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +99 -99
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +64 -64
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +53 -53
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +83 -83
- package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +86 -86
- package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +109 -109
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +133 -133
- package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
- package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +184 -184
- package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +154 -154
- package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +59 -59
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +47 -47
- package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
- package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +54 -54
- package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
- package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +48 -48
- package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +50 -50
- package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +58 -58
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +47 -47
- package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +56 -56
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +95 -95
- package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
- package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +119 -119
- package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +143 -143
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
- package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +69 -69
- package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +81 -81
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +26 -26
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +91 -91
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +25 -25
- package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
- package/lib/cjs/imodel-components-react/timeline/Scrubber.js +191 -191
- package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +106 -106
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +424 -424
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +357 -357
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +54 -54
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
- package/lib/cjs/imodel-components-react/timeline/Timeline.scss +164 -164
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +358 -358
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +163 -163
- package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +174 -174
- package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
- package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +274 -274
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
- package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
- package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
- package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
- package/lib/cjs/imodel-components-react.d.ts +82 -82
- package/lib/cjs/imodel-components-react.js +101 -101
- package/lib/cjs/imodel-components-react.js.map +1 -1
- package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +28 -28
- package/lib/esm/imodel-components-react/UiIModelComponents.js +75 -75
- package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
- package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
- package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
- package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
- package/lib/esm/imodel-components-react/color/AlphaSlider.scss +63 -63
- package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
- package/lib/esm/imodel-components-react/color/ColorPickerButton.js +82 -82
- package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +91 -91
- package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
- package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
- package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +122 -122
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +93 -93
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +112 -112
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +64 -64
- package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
- package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
- package/lib/esm/imodel-components-react/color/HueSlider.js.map +1 -1
- package/lib/esm/imodel-components-react/color/HueSlider.scss +61 -61
- package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +20 -20
- package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
- package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +1 -1
- package/lib/esm/imodel-components-react/color/SaturationPicker.scss +35 -35
- package/lib/esm/imodel-components-react/color/Swatch.d.ts +22 -22
- package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
- package/lib/esm/imodel-components-react/color/Swatch.js.map +1 -1
- package/lib/esm/imodel-components-react/color/Swatch.scss +23 -23
- package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
- package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
- package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
- package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
- package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
- package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +1 -1
- package/lib/esm/imodel-components-react/editors/ColorEditor.scss +18 -18
- package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
- package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
- package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +1 -1
- package/lib/esm/imodel-components-react/editors/WeightEditor.scss +16 -16
- package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
- package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
- package/lib/esm/imodel-components-react/inputs/QuantityInput.js.map +1 -1
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +240 -240
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
- package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
- package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
- package/lib/esm/imodel-components-react/lineweight/Swatch.js.map +1 -1
- package/lib/esm/imodel-components-react/lineweight/Swatch.scss +48 -48
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +133 -133
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +52 -52
- package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
- package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
- package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/Cube.scss +19 -19
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +606 -606
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +180 -180
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +620 -620
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -133
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +64 -64
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +30 -30
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +60 -60
- package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatType.js +63 -63
- package/lib/esm/imodel-components-react/quantityformat/FormatType.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +83 -83
- package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
- package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +110 -110
- package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
- package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +158 -158
- package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +131 -131
- package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
- package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
- package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
- package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
- package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
- package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
- package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
- package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +69 -69
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
- package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
- package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
- package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +139 -139
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
- package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
- package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
- package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
- package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +26 -26
- package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
- package/lib/esm/imodel-components-react/timeline/PlayerButton.js +64 -64
- package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +25 -25
- package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
- package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
- package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/Scrubber.scss +106 -106
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +398 -398
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +357 -357
- package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
- package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
- package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
- package/lib/esm/imodel-components-react/timeline/Timeline.scss +164 -164
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +332 -332
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +163 -163
- package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +174 -174
- package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
- package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +251 -251
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
- package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
- package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +95 -95
- package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
- package/lib/esm/imodel-components-react.d.ts +82 -82
- package/lib/esm/imodel-components-react.js +87 -87
- package/lib/esm/imodel-components-react.js.map +1 -1
- package/lib/public/locales/en/UiIModelComponents.json +139 -139
- package/package.json +19 -19
|
@@ -1,266 +1,266 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*---------------------------------------------------------------------------------------------
|
|
3
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
-
*--------------------------------------------------------------------------------------------*/
|
|
6
|
-
/** @packageDocumentation
|
|
7
|
-
* @module Inputs
|
|
8
|
-
*/
|
|
9
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
12
|
-
}) : (function(o, m, k, k2) {
|
|
13
|
-
if (k2 === undefined) k2 = k;
|
|
14
|
-
o[k2] = m[k];
|
|
15
|
-
}));
|
|
16
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
-
}) : function(o, v) {
|
|
19
|
-
o["default"] = v;
|
|
20
|
-
});
|
|
21
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
-
if (mod && mod.__esModule) return mod;
|
|
23
|
-
var result = {};
|
|
24
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
-
__setModuleDefault(result, mod);
|
|
26
|
-
return result;
|
|
27
|
-
};
|
|
28
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
-
};
|
|
31
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
-
exports.QuantityNumberInput = void 0;
|
|
33
|
-
require("./QuantityNumberInput.scss");
|
|
34
|
-
const classnames_1 = __importDefault(require("classnames"));
|
|
35
|
-
const React = __importStar(require("react"));
|
|
36
|
-
const core_react_1 = require("@itwin/core-react");
|
|
37
|
-
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
38
|
-
const core_frontend_1 = require("@itwin/core-frontend");
|
|
39
|
-
const core_quantity_1 = require("@itwin/core-quantity");
|
|
40
|
-
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
41
|
-
/** adjust formatter spec to show only primary unit without a label. */
|
|
42
|
-
function adjustFormatterSpec(formatterSpec) {
|
|
43
|
-
if (undefined === formatterSpec)
|
|
44
|
-
return formatterSpec;
|
|
45
|
-
const singleUnitConversion = [];
|
|
46
|
-
singleUnitConversion.push(formatterSpec.unitConversions[0]);
|
|
47
|
-
const newFormat = formatterSpec.format.clone({
|
|
48
|
-
showOnlyPrimaryUnit: true,
|
|
49
|
-
traits: formatterSpec.format.formatTraits & ~core_quantity_1.FormatTraits.ShowUnitLabel,
|
|
50
|
-
type: core_quantity_1.FormatType.Decimal,
|
|
51
|
-
precision: core_quantity_1.FormatType.Decimal !== formatterSpec.format.type ? core_quantity_1.DecimalPrecision.Four : formatterSpec.format.precision,
|
|
52
|
-
});
|
|
53
|
-
return new core_quantity_1.FormatterSpec("single-value", newFormat, singleUnitConversion, formatterSpec.persistenceUnit);
|
|
54
|
-
}
|
|
55
|
-
function convertValueFromDisplayToPersistence(value, unitConversions, unit) {
|
|
56
|
-
// istanbul ignore next
|
|
57
|
-
if (!unitConversions || 0 === unitConversions.length)
|
|
58
|
-
return value;
|
|
59
|
-
const unitConversion = unitConversions.find((spec) => spec.name === unit.name);
|
|
60
|
-
// istanbul ignore next
|
|
61
|
-
if (!unitConversion)
|
|
62
|
-
return value;
|
|
63
|
-
const convertedValue = (value * unitConversion.conversion.factor) + unitConversion.conversion.offset;
|
|
64
|
-
return convertedValue;
|
|
65
|
-
}
|
|
66
|
-
function getUnitLabel(parserSpec) {
|
|
67
|
-
if (undefined === parserSpec)
|
|
68
|
-
return "";
|
|
69
|
-
const format = parserSpec.format;
|
|
70
|
-
// istanbul ignore else
|
|
71
|
-
if (!format.units || !format.units[0])
|
|
72
|
-
return parserSpec.outUnit.label;
|
|
73
|
-
const [unit, label] = format.units[0];
|
|
74
|
-
// istanbul ignore next
|
|
75
|
-
return label !== null && label !== void 0 ? label : unit.label;
|
|
76
|
-
}
|
|
77
|
-
const ForwardRefQuantityNumberInput = React.forwardRef(function ForwardRefQuantityNumberInput(props, ref) {
|
|
78
|
-
const { containerClassName, persistenceValue, min, max, onChange, onBlur, onKeyDown, step, snap, showTouchButtons, quantityType, ...otherProps } = props;
|
|
79
|
-
const rawValueRef = React.useRef(persistenceValue);
|
|
80
|
-
const [formatterSpec, setFormatterSpec] = React.useState(() => adjustFormatterSpec(core_frontend_1.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(quantityType)));
|
|
81
|
-
const [parserSpec, setParserSpec] = React.useState(() => core_frontend_1.IModelApp.quantityFormatter.findParserSpecByQuantityType(quantityType));
|
|
82
|
-
const formatValue = React.useCallback((value) => {
|
|
83
|
-
if (undefined === value)
|
|
84
|
-
return "";
|
|
85
|
-
// istanbul ignore else
|
|
86
|
-
if (formatterSpec) {
|
|
87
|
-
return formatterSpec.applyFormatting(value);
|
|
88
|
-
}
|
|
89
|
-
// istanbul ignore next
|
|
90
|
-
return value.toFixed(2);
|
|
91
|
-
}, [formatterSpec]);
|
|
92
|
-
const lastFormattedValueRef = React.useRef(formatValue(persistenceValue));
|
|
93
|
-
const [formattedValue, setFormattedValue] = React.useState(() => lastFormattedValueRef.current);
|
|
94
|
-
React.useEffect(() => {
|
|
95
|
-
const handleUnitSystemChanged = (() => {
|
|
96
|
-
setFormatterSpec(adjustFormatterSpec(core_frontend_1.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(quantityType)));
|
|
97
|
-
setParserSpec(core_frontend_1.IModelApp.quantityFormatter.findParserSpecByQuantityType(quantityType));
|
|
98
|
-
});
|
|
99
|
-
core_frontend_1.IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(handleUnitSystemChanged);
|
|
100
|
-
return () => {
|
|
101
|
-
core_frontend_1.IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(handleUnitSystemChanged);
|
|
102
|
-
};
|
|
103
|
-
}, [quantityType]);
|
|
104
|
-
React.useEffect(() => {
|
|
105
|
-
const handleUnitSystemChanged = ((args) => {
|
|
106
|
-
const quantityKey = core_frontend_1.IModelApp.quantityFormatter.getQuantityTypeKey(quantityType);
|
|
107
|
-
// istanbul ignore else
|
|
108
|
-
if (args.quantityType === quantityKey) {
|
|
109
|
-
setFormatterSpec(adjustFormatterSpec(core_frontend_1.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(quantityType)));
|
|
110
|
-
setParserSpec(core_frontend_1.IModelApp.quantityFormatter.findParserSpecByQuantityType(quantityType));
|
|
111
|
-
}
|
|
112
|
-
});
|
|
113
|
-
core_frontend_1.IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(handleUnitSystemChanged);
|
|
114
|
-
return () => {
|
|
115
|
-
core_frontend_1.IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(handleUnitSystemChanged);
|
|
116
|
-
};
|
|
117
|
-
}, [quantityType]);
|
|
118
|
-
const unitLabel = getUnitLabel(parserSpec);
|
|
119
|
-
// See if new initialValue props have changed since component mounted
|
|
120
|
-
React.useEffect(() => {
|
|
121
|
-
rawValueRef.current = persistenceValue;
|
|
122
|
-
const currentFormattedValue = formatValue(rawValueRef.current);
|
|
123
|
-
setFormattedValue(currentFormattedValue);
|
|
124
|
-
}, [formatValue, persistenceValue]);
|
|
125
|
-
// this is the unprocessed input from user, it is not processed until blur or enter key press
|
|
126
|
-
const handleDisplayValueChange = React.useCallback((event) => {
|
|
127
|
-
setFormattedValue(event.currentTarget.value);
|
|
128
|
-
}, []);
|
|
129
|
-
const updateValue = React.useCallback((newValue) => {
|
|
130
|
-
let persistedValue = newValue;
|
|
131
|
-
// istanbul ignore else
|
|
132
|
-
if (parserSpec) {
|
|
133
|
-
// convert value from display unit to persistence unit
|
|
134
|
-
const [unit] = parserSpec.format.units ? parserSpec.format.units[0] : /* istanbul ignore next */ [parserSpec.outUnit];
|
|
135
|
-
persistedValue = convertValueFromDisplayToPersistence(newValue, parserSpec.unitConversions, unit);
|
|
136
|
-
rawValueRef.current = persistedValue;
|
|
137
|
-
}
|
|
138
|
-
const newFormattedVal = formatValue(persistedValue);
|
|
139
|
-
onChange && onChange(persistedValue);
|
|
140
|
-
setFormattedValue(newFormattedVal);
|
|
141
|
-
}, [formatValue, onChange, parserSpec]);
|
|
142
|
-
/**
|
|
143
|
-
* Used internally to parse the argument x to it's numeric representation.
|
|
144
|
-
* If the argument cannot be converted to finite number returns 0; If a
|
|
145
|
-
* "precision" prop is specified uses it round the number with that
|
|
146
|
-
* precision (no fixed precision here because the return value is float, not
|
|
147
|
-
* string).
|
|
148
|
-
*/
|
|
149
|
-
const parseInternal = React.useCallback((x) => {
|
|
150
|
-
if (!x)
|
|
151
|
-
return 0;
|
|
152
|
-
let n = parseFloat(x);
|
|
153
|
-
// istanbul ignore next
|
|
154
|
-
if (isNaN(n) || !isFinite(n)) {
|
|
155
|
-
n = 0;
|
|
156
|
-
}
|
|
157
|
-
const localPrecision = 6; // TODO get a reasonable value from format
|
|
158
|
-
const q = Math.pow(10, localPrecision);
|
|
159
|
-
const localMin = undefined === min ? Number.MIN_SAFE_INTEGER : min;
|
|
160
|
-
const localMax = undefined === max ? Number.MAX_SAFE_INTEGER : max;
|
|
161
|
-
n = Math.min(Math.max(n, localMin), localMax);
|
|
162
|
-
n = Math.round(n * q) / q;
|
|
163
|
-
return n;
|
|
164
|
-
}, [min, max]);
|
|
165
|
-
const updateValueFromString = React.useCallback((strValue) => {
|
|
166
|
-
// istanbul ignore else
|
|
167
|
-
if (parserSpec) {
|
|
168
|
-
const parseResult = core_frontend_1.IModelApp.quantityFormatter.parseToQuantityValue(strValue, parserSpec);
|
|
169
|
-
// at this point we should have a string value in persistence units without a label
|
|
170
|
-
if (core_quantity_1.Parser.isParsedQuantity(parseResult)) {
|
|
171
|
-
const persistedValue = parseResult.value; // in persistence units
|
|
172
|
-
// set strValue and let it go through parseInternal which will ensure min/max limits are observed
|
|
173
|
-
strValue = formatValue(persistedValue);
|
|
174
|
-
}
|
|
175
|
-
else {
|
|
176
|
-
// istanbul ignore else
|
|
177
|
-
if (rawValueRef.current) { // restore last known good value
|
|
178
|
-
const lastKnownFormattedVal = formatValue(rawValueRef.current);
|
|
179
|
-
setFormattedValue(lastKnownFormattedVal);
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
const newValue = parseInternal(strValue);
|
|
185
|
-
// istanbul ignore else
|
|
186
|
-
if (undefined !== newValue)
|
|
187
|
-
updateValue(newValue);
|
|
188
|
-
}, [formatValue, parseInternal, parserSpec, updateValue]);
|
|
189
|
-
const handleBlur = React.useCallback((event) => {
|
|
190
|
-
const newVal = parseInternal(event.target.value);
|
|
191
|
-
onBlur && onBlur(event);
|
|
192
|
-
updateValue(newVal);
|
|
193
|
-
}, [parseInternal, updateValue, onBlur]);
|
|
194
|
-
const getIncrementValue = React.useCallback((increment) => {
|
|
195
|
-
if (typeof step === "function") {
|
|
196
|
-
const stepVal = step(increment ? "up" : "down");
|
|
197
|
-
return stepVal ? stepVal : 1;
|
|
198
|
-
}
|
|
199
|
-
return !step ? 1 : step;
|
|
200
|
-
}, [step]);
|
|
201
|
-
/**
|
|
202
|
-
* The internal method that actually sets the new value on the input
|
|
203
|
-
*/
|
|
204
|
-
const applyStep = React.useCallback((increment) => {
|
|
205
|
-
const incrementValue = getIncrementValue(increment);
|
|
206
|
-
let num = parseInternal(formattedValue) + (increment ? incrementValue : -incrementValue);
|
|
207
|
-
if (snap) {
|
|
208
|
-
num = Math.round(num / incrementValue) * incrementValue;
|
|
209
|
-
}
|
|
210
|
-
const localMin = undefined === min ? Number.MIN_SAFE_INTEGER : min;
|
|
211
|
-
const localMax = undefined === max ? Number.MAX_SAFE_INTEGER : max;
|
|
212
|
-
num = Math.min(Math.max(num, localMin), localMax);
|
|
213
|
-
updateValue(num);
|
|
214
|
-
}, [formattedValue, getIncrementValue, max, min, parseInternal, snap, updateValue]);
|
|
215
|
-
const handleKeyDown = React.useCallback((event) => {
|
|
216
|
-
// istanbul ignore else
|
|
217
|
-
if (event.key === appui_abstract_1.SpecialKey.Enter) {
|
|
218
|
-
updateValueFromString(event.currentTarget.value);
|
|
219
|
-
event.preventDefault();
|
|
220
|
-
}
|
|
221
|
-
else if (event.key === appui_abstract_1.SpecialKey.Escape) {
|
|
222
|
-
setFormattedValue(formatValue(rawValueRef.current));
|
|
223
|
-
event.preventDefault();
|
|
224
|
-
}
|
|
225
|
-
else if (event.key === appui_abstract_1.SpecialKey.ArrowDown) {
|
|
226
|
-
applyStep(false);
|
|
227
|
-
event.preventDefault();
|
|
228
|
-
}
|
|
229
|
-
else if (event.key === appui_abstract_1.SpecialKey.ArrowUp) {
|
|
230
|
-
applyStep(true);
|
|
231
|
-
event.preventDefault();
|
|
232
|
-
}
|
|
233
|
-
onKeyDown && onKeyDown(event);
|
|
234
|
-
}, [onKeyDown, updateValueFromString, formatValue, applyStep]);
|
|
235
|
-
const handleDownClick = React.useCallback((event) => {
|
|
236
|
-
applyStep(false);
|
|
237
|
-
event.preventDefault();
|
|
238
|
-
}, [applyStep]);
|
|
239
|
-
const handleUpClick = React.useCallback((event) => {
|
|
240
|
-
applyStep(true);
|
|
241
|
-
event.preventDefault();
|
|
242
|
-
}, [applyStep]);
|
|
243
|
-
// istanbul ignore next
|
|
244
|
-
const handleFocus = React.useCallback((event) => {
|
|
245
|
-
event.currentTarget.select();
|
|
246
|
-
}, []);
|
|
247
|
-
const isDisabled = !!otherProps.disabled;
|
|
248
|
-
const containerClasses = (0, classnames_1.default)("component-quantity-number-input-container", containerClassName, showTouchButtons && "component-number-buttons-for-touch", isDisabled && "component-quantity-number-input-disabled");
|
|
249
|
-
return (React.createElement("div", { className: containerClasses },
|
|
250
|
-
React.createElement("div", { className: "component-quantity-number-input-value-and-buttons-container" },
|
|
251
|
-
React.createElement(itwinui_react_1.Input, { ref: ref, value: formattedValue, onChange: handleDisplayValueChange, onKeyDown: handleKeyDown, onBlur: handleBlur, onFocus: handleFocus, size: "small", ...otherProps }),
|
|
252
|
-
React.createElement("div", { className: (0, classnames_1.default)("component-quantity-number-input-buttons-container", showTouchButtons && "component-number-buttons-for-touch") },
|
|
253
|
-
React.createElement("div", { className: "component-quantity-number-input-button component-quantity-number-input-button-up", tabIndex: -1, onClick: handleUpClick },
|
|
254
|
-
React.createElement(core_react_1.WebFontIcon, { iconName: "icon-caret-up" })),
|
|
255
|
-
React.createElement("div", { className: "component-quantity-number-input-button component-quantity-number-input-button-down", tabIndex: -1, onClick: handleDownClick },
|
|
256
|
-
React.createElement(core_react_1.WebFontIcon, { iconName: "icon-caret-down" })))),
|
|
257
|
-
React.createElement("span", { className: "component-quantity-number-input-suffix" }, unitLabel)));
|
|
258
|
-
});
|
|
259
|
-
/** The QuantityNumberInput component accepts input for quantity values. The quantity value is shown as a single numeric value and the quantity's
|
|
260
|
-
* "display" unit is shown next to the input control. The "display" unit is determined by the active unit system as defined by the [QuantityFormatter]($frontend).
|
|
261
|
-
* The control also display buttons to increment and decrement the "displayed" value. The value reported by via the onChange function is in "persistence"
|
|
262
|
-
* units that can be stored in the iModel.
|
|
263
|
-
* @beta
|
|
264
|
-
*/
|
|
265
|
-
exports.QuantityNumberInput = ForwardRefQuantityNumberInput;
|
|
1
|
+
"use strict";
|
|
2
|
+
/*---------------------------------------------------------------------------------------------
|
|
3
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
4
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
5
|
+
*--------------------------------------------------------------------------------------------*/
|
|
6
|
+
/** @packageDocumentation
|
|
7
|
+
* @module Inputs
|
|
8
|
+
*/
|
|
9
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
22
|
+
if (mod && mod.__esModule) return mod;
|
|
23
|
+
var result = {};
|
|
24
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
25
|
+
__setModuleDefault(result, mod);
|
|
26
|
+
return result;
|
|
27
|
+
};
|
|
28
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
29
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
30
|
+
};
|
|
31
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
32
|
+
exports.QuantityNumberInput = void 0;
|
|
33
|
+
require("./QuantityNumberInput.scss");
|
|
34
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
35
|
+
const React = __importStar(require("react"));
|
|
36
|
+
const core_react_1 = require("@itwin/core-react");
|
|
37
|
+
const appui_abstract_1 = require("@itwin/appui-abstract");
|
|
38
|
+
const core_frontend_1 = require("@itwin/core-frontend");
|
|
39
|
+
const core_quantity_1 = require("@itwin/core-quantity");
|
|
40
|
+
const itwinui_react_1 = require("@itwin/itwinui-react");
|
|
41
|
+
/** adjust formatter spec to show only primary unit without a label. */
|
|
42
|
+
function adjustFormatterSpec(formatterSpec) {
|
|
43
|
+
if (undefined === formatterSpec)
|
|
44
|
+
return formatterSpec;
|
|
45
|
+
const singleUnitConversion = [];
|
|
46
|
+
singleUnitConversion.push(formatterSpec.unitConversions[0]);
|
|
47
|
+
const newFormat = formatterSpec.format.clone({
|
|
48
|
+
showOnlyPrimaryUnit: true,
|
|
49
|
+
traits: formatterSpec.format.formatTraits & ~core_quantity_1.FormatTraits.ShowUnitLabel,
|
|
50
|
+
type: core_quantity_1.FormatType.Decimal,
|
|
51
|
+
precision: core_quantity_1.FormatType.Decimal !== formatterSpec.format.type ? core_quantity_1.DecimalPrecision.Four : formatterSpec.format.precision,
|
|
52
|
+
});
|
|
53
|
+
return new core_quantity_1.FormatterSpec("single-value", newFormat, singleUnitConversion, formatterSpec.persistenceUnit);
|
|
54
|
+
}
|
|
55
|
+
function convertValueFromDisplayToPersistence(value, unitConversions, unit) {
|
|
56
|
+
// istanbul ignore next
|
|
57
|
+
if (!unitConversions || 0 === unitConversions.length)
|
|
58
|
+
return value;
|
|
59
|
+
const unitConversion = unitConversions.find((spec) => spec.name === unit.name);
|
|
60
|
+
// istanbul ignore next
|
|
61
|
+
if (!unitConversion)
|
|
62
|
+
return value;
|
|
63
|
+
const convertedValue = (value * unitConversion.conversion.factor) + unitConversion.conversion.offset;
|
|
64
|
+
return convertedValue;
|
|
65
|
+
}
|
|
66
|
+
function getUnitLabel(parserSpec) {
|
|
67
|
+
if (undefined === parserSpec)
|
|
68
|
+
return "";
|
|
69
|
+
const format = parserSpec.format;
|
|
70
|
+
// istanbul ignore else
|
|
71
|
+
if (!format.units || !format.units[0])
|
|
72
|
+
return parserSpec.outUnit.label;
|
|
73
|
+
const [unit, label] = format.units[0];
|
|
74
|
+
// istanbul ignore next
|
|
75
|
+
return label !== null && label !== void 0 ? label : unit.label;
|
|
76
|
+
}
|
|
77
|
+
const ForwardRefQuantityNumberInput = React.forwardRef(function ForwardRefQuantityNumberInput(props, ref) {
|
|
78
|
+
const { containerClassName, persistenceValue, min, max, onChange, onBlur, onKeyDown, step, snap, showTouchButtons, quantityType, ...otherProps } = props;
|
|
79
|
+
const rawValueRef = React.useRef(persistenceValue);
|
|
80
|
+
const [formatterSpec, setFormatterSpec] = React.useState(() => adjustFormatterSpec(core_frontend_1.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(quantityType)));
|
|
81
|
+
const [parserSpec, setParserSpec] = React.useState(() => core_frontend_1.IModelApp.quantityFormatter.findParserSpecByQuantityType(quantityType));
|
|
82
|
+
const formatValue = React.useCallback((value) => {
|
|
83
|
+
if (undefined === value)
|
|
84
|
+
return "";
|
|
85
|
+
// istanbul ignore else
|
|
86
|
+
if (formatterSpec) {
|
|
87
|
+
return formatterSpec.applyFormatting(value);
|
|
88
|
+
}
|
|
89
|
+
// istanbul ignore next
|
|
90
|
+
return value.toFixed(2);
|
|
91
|
+
}, [formatterSpec]);
|
|
92
|
+
const lastFormattedValueRef = React.useRef(formatValue(persistenceValue));
|
|
93
|
+
const [formattedValue, setFormattedValue] = React.useState(() => lastFormattedValueRef.current);
|
|
94
|
+
React.useEffect(() => {
|
|
95
|
+
const handleUnitSystemChanged = (() => {
|
|
96
|
+
setFormatterSpec(adjustFormatterSpec(core_frontend_1.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(quantityType)));
|
|
97
|
+
setParserSpec(core_frontend_1.IModelApp.quantityFormatter.findParserSpecByQuantityType(quantityType));
|
|
98
|
+
});
|
|
99
|
+
core_frontend_1.IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.addListener(handleUnitSystemChanged);
|
|
100
|
+
return () => {
|
|
101
|
+
core_frontend_1.IModelApp.quantityFormatter.onActiveFormattingUnitSystemChanged.removeListener(handleUnitSystemChanged);
|
|
102
|
+
};
|
|
103
|
+
}, [quantityType]);
|
|
104
|
+
React.useEffect(() => {
|
|
105
|
+
const handleUnitSystemChanged = ((args) => {
|
|
106
|
+
const quantityKey = core_frontend_1.IModelApp.quantityFormatter.getQuantityTypeKey(quantityType);
|
|
107
|
+
// istanbul ignore else
|
|
108
|
+
if (args.quantityType === quantityKey) {
|
|
109
|
+
setFormatterSpec(adjustFormatterSpec(core_frontend_1.IModelApp.quantityFormatter.findFormatterSpecByQuantityType(quantityType)));
|
|
110
|
+
setParserSpec(core_frontend_1.IModelApp.quantityFormatter.findParserSpecByQuantityType(quantityType));
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
core_frontend_1.IModelApp.quantityFormatter.onQuantityFormatsChanged.addListener(handleUnitSystemChanged);
|
|
114
|
+
return () => {
|
|
115
|
+
core_frontend_1.IModelApp.quantityFormatter.onQuantityFormatsChanged.removeListener(handleUnitSystemChanged);
|
|
116
|
+
};
|
|
117
|
+
}, [quantityType]);
|
|
118
|
+
const unitLabel = getUnitLabel(parserSpec);
|
|
119
|
+
// See if new initialValue props have changed since component mounted
|
|
120
|
+
React.useEffect(() => {
|
|
121
|
+
rawValueRef.current = persistenceValue;
|
|
122
|
+
const currentFormattedValue = formatValue(rawValueRef.current);
|
|
123
|
+
setFormattedValue(currentFormattedValue);
|
|
124
|
+
}, [formatValue, persistenceValue]);
|
|
125
|
+
// this is the unprocessed input from user, it is not processed until blur or enter key press
|
|
126
|
+
const handleDisplayValueChange = React.useCallback((event) => {
|
|
127
|
+
setFormattedValue(event.currentTarget.value);
|
|
128
|
+
}, []);
|
|
129
|
+
const updateValue = React.useCallback((newValue) => {
|
|
130
|
+
let persistedValue = newValue;
|
|
131
|
+
// istanbul ignore else
|
|
132
|
+
if (parserSpec) {
|
|
133
|
+
// convert value from display unit to persistence unit
|
|
134
|
+
const [unit] = parserSpec.format.units ? parserSpec.format.units[0] : /* istanbul ignore next */ [parserSpec.outUnit];
|
|
135
|
+
persistedValue = convertValueFromDisplayToPersistence(newValue, parserSpec.unitConversions, unit);
|
|
136
|
+
rawValueRef.current = persistedValue;
|
|
137
|
+
}
|
|
138
|
+
const newFormattedVal = formatValue(persistedValue);
|
|
139
|
+
onChange && onChange(persistedValue);
|
|
140
|
+
setFormattedValue(newFormattedVal);
|
|
141
|
+
}, [formatValue, onChange, parserSpec]);
|
|
142
|
+
/**
|
|
143
|
+
* Used internally to parse the argument x to it's numeric representation.
|
|
144
|
+
* If the argument cannot be converted to finite number returns 0; If a
|
|
145
|
+
* "precision" prop is specified uses it round the number with that
|
|
146
|
+
* precision (no fixed precision here because the return value is float, not
|
|
147
|
+
* string).
|
|
148
|
+
*/
|
|
149
|
+
const parseInternal = React.useCallback((x) => {
|
|
150
|
+
if (!x)
|
|
151
|
+
return 0;
|
|
152
|
+
let n = parseFloat(x);
|
|
153
|
+
// istanbul ignore next
|
|
154
|
+
if (isNaN(n) || !isFinite(n)) {
|
|
155
|
+
n = 0;
|
|
156
|
+
}
|
|
157
|
+
const localPrecision = 6; // TODO get a reasonable value from format
|
|
158
|
+
const q = Math.pow(10, localPrecision);
|
|
159
|
+
const localMin = undefined === min ? Number.MIN_SAFE_INTEGER : min;
|
|
160
|
+
const localMax = undefined === max ? Number.MAX_SAFE_INTEGER : max;
|
|
161
|
+
n = Math.min(Math.max(n, localMin), localMax);
|
|
162
|
+
n = Math.round(n * q) / q;
|
|
163
|
+
return n;
|
|
164
|
+
}, [min, max]);
|
|
165
|
+
const updateValueFromString = React.useCallback((strValue) => {
|
|
166
|
+
// istanbul ignore else
|
|
167
|
+
if (parserSpec) {
|
|
168
|
+
const parseResult = core_frontend_1.IModelApp.quantityFormatter.parseToQuantityValue(strValue, parserSpec);
|
|
169
|
+
// at this point we should have a string value in persistence units without a label
|
|
170
|
+
if (core_quantity_1.Parser.isParsedQuantity(parseResult)) {
|
|
171
|
+
const persistedValue = parseResult.value; // in persistence units
|
|
172
|
+
// set strValue and let it go through parseInternal which will ensure min/max limits are observed
|
|
173
|
+
strValue = formatValue(persistedValue);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
// istanbul ignore else
|
|
177
|
+
if (rawValueRef.current) { // restore last known good value
|
|
178
|
+
const lastKnownFormattedVal = formatValue(rawValueRef.current);
|
|
179
|
+
setFormattedValue(lastKnownFormattedVal);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
const newValue = parseInternal(strValue);
|
|
185
|
+
// istanbul ignore else
|
|
186
|
+
if (undefined !== newValue)
|
|
187
|
+
updateValue(newValue);
|
|
188
|
+
}, [formatValue, parseInternal, parserSpec, updateValue]);
|
|
189
|
+
const handleBlur = React.useCallback((event) => {
|
|
190
|
+
const newVal = parseInternal(event.target.value);
|
|
191
|
+
onBlur && onBlur(event);
|
|
192
|
+
updateValue(newVal);
|
|
193
|
+
}, [parseInternal, updateValue, onBlur]);
|
|
194
|
+
const getIncrementValue = React.useCallback((increment) => {
|
|
195
|
+
if (typeof step === "function") {
|
|
196
|
+
const stepVal = step(increment ? "up" : "down");
|
|
197
|
+
return stepVal ? stepVal : 1;
|
|
198
|
+
}
|
|
199
|
+
return !step ? 1 : step;
|
|
200
|
+
}, [step]);
|
|
201
|
+
/**
|
|
202
|
+
* The internal method that actually sets the new value on the input
|
|
203
|
+
*/
|
|
204
|
+
const applyStep = React.useCallback((increment) => {
|
|
205
|
+
const incrementValue = getIncrementValue(increment);
|
|
206
|
+
let num = parseInternal(formattedValue) + (increment ? incrementValue : -incrementValue);
|
|
207
|
+
if (snap) {
|
|
208
|
+
num = Math.round(num / incrementValue) * incrementValue;
|
|
209
|
+
}
|
|
210
|
+
const localMin = undefined === min ? Number.MIN_SAFE_INTEGER : min;
|
|
211
|
+
const localMax = undefined === max ? Number.MAX_SAFE_INTEGER : max;
|
|
212
|
+
num = Math.min(Math.max(num, localMin), localMax);
|
|
213
|
+
updateValue(num);
|
|
214
|
+
}, [formattedValue, getIncrementValue, max, min, parseInternal, snap, updateValue]);
|
|
215
|
+
const handleKeyDown = React.useCallback((event) => {
|
|
216
|
+
// istanbul ignore else
|
|
217
|
+
if (event.key === appui_abstract_1.SpecialKey.Enter) {
|
|
218
|
+
updateValueFromString(event.currentTarget.value);
|
|
219
|
+
event.preventDefault();
|
|
220
|
+
}
|
|
221
|
+
else if (event.key === appui_abstract_1.SpecialKey.Escape) {
|
|
222
|
+
setFormattedValue(formatValue(rawValueRef.current));
|
|
223
|
+
event.preventDefault();
|
|
224
|
+
}
|
|
225
|
+
else if (event.key === appui_abstract_1.SpecialKey.ArrowDown) {
|
|
226
|
+
applyStep(false);
|
|
227
|
+
event.preventDefault();
|
|
228
|
+
}
|
|
229
|
+
else if (event.key === appui_abstract_1.SpecialKey.ArrowUp) {
|
|
230
|
+
applyStep(true);
|
|
231
|
+
event.preventDefault();
|
|
232
|
+
}
|
|
233
|
+
onKeyDown && onKeyDown(event);
|
|
234
|
+
}, [onKeyDown, updateValueFromString, formatValue, applyStep]);
|
|
235
|
+
const handleDownClick = React.useCallback((event) => {
|
|
236
|
+
applyStep(false);
|
|
237
|
+
event.preventDefault();
|
|
238
|
+
}, [applyStep]);
|
|
239
|
+
const handleUpClick = React.useCallback((event) => {
|
|
240
|
+
applyStep(true);
|
|
241
|
+
event.preventDefault();
|
|
242
|
+
}, [applyStep]);
|
|
243
|
+
// istanbul ignore next
|
|
244
|
+
const handleFocus = React.useCallback((event) => {
|
|
245
|
+
event.currentTarget.select();
|
|
246
|
+
}, []);
|
|
247
|
+
const isDisabled = !!otherProps.disabled;
|
|
248
|
+
const containerClasses = (0, classnames_1.default)("component-quantity-number-input-container", containerClassName, showTouchButtons && "component-number-buttons-for-touch", isDisabled && "component-quantity-number-input-disabled");
|
|
249
|
+
return (React.createElement("div", { className: containerClasses },
|
|
250
|
+
React.createElement("div", { className: "component-quantity-number-input-value-and-buttons-container" },
|
|
251
|
+
React.createElement(itwinui_react_1.Input, { ref: ref, value: formattedValue, onChange: handleDisplayValueChange, onKeyDown: handleKeyDown, onBlur: handleBlur, onFocus: handleFocus, size: "small", ...otherProps }),
|
|
252
|
+
React.createElement("div", { className: (0, classnames_1.default)("component-quantity-number-input-buttons-container", showTouchButtons && "component-number-buttons-for-touch") },
|
|
253
|
+
React.createElement("div", { className: "component-quantity-number-input-button component-quantity-number-input-button-up", tabIndex: -1, onClick: handleUpClick },
|
|
254
|
+
React.createElement(core_react_1.WebFontIcon, { iconName: "icon-caret-up" })),
|
|
255
|
+
React.createElement("div", { className: "component-quantity-number-input-button component-quantity-number-input-button-down", tabIndex: -1, onClick: handleDownClick },
|
|
256
|
+
React.createElement(core_react_1.WebFontIcon, { iconName: "icon-caret-down" })))),
|
|
257
|
+
React.createElement("span", { className: "component-quantity-number-input-suffix" }, unitLabel)));
|
|
258
|
+
});
|
|
259
|
+
/** The QuantityNumberInput component accepts input for quantity values. The quantity value is shown as a single numeric value and the quantity's
|
|
260
|
+
* "display" unit is shown next to the input control. The "display" unit is determined by the active unit system as defined by the [QuantityFormatter]($frontend).
|
|
261
|
+
* The control also display buttons to increment and decrement the "displayed" value. The value reported by via the onChange function is in "persistence"
|
|
262
|
+
* units that can be stored in the iModel.
|
|
263
|
+
* @beta
|
|
264
|
+
*/
|
|
265
|
+
exports.QuantityNumberInput = ForwardRefQuantityNumberInput;
|
|
266
266
|
//# sourceMappingURL=QuantityNumberInput.js.map
|