@itwin/imodel-components-react 4.0.0-dev.12 → 4.0.0-dev.14
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 +113 -1
- package/README.md +2 -2
- package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
- package/lib/cjs/imodel-components-react/UiIModelComponents.js +75 -77
- 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 +190 -186
- package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +112 -108
- package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
- package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +78 -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 +149 -145
- package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +143 -139
- package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
- package/lib/cjs/imodel-components-react/color/HueSlider.js +203 -199
- package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
- package/lib/cjs/imodel-components-react/color/SaturationPicker.js +217 -213
- package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
- package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
- package/lib/cjs/imodel-components-react/color/Swatch.js +64 -60
- package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
- 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/editors/ColorEditor.d.ts +44 -44
- package/lib/cjs/imodel-components-react/editors/ColorEditor.js +155 -151
- package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
- package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
- package/lib/cjs/imodel-components-react/editors/WeightEditor.js +164 -160
- package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
- package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +100 -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.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +272 -268
- package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
- package/lib/cjs/imodel-components-react/lineweight/Swatch.js +89 -85
- package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +163 -159
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +1 -2
- package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
- package/lib/cjs/imodel-components-react/navigationaids/Cube.js +131 -127
- package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +175 -174
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +650 -638
- package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +657 -653
- package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +103 -99
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
- package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +0 -4
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
- package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +56 -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 +88 -84
- 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 +89 -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 +112 -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 +187 -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 +149 -145
- 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 +63 -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 +51 -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 +58 -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 +52 -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 +54 -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 +62 -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 +51 -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 +60 -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 +98 -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 +123 -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.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +142 -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/InlineEdit.d.ts +27 -27
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +85 -81
- package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +99 -95
- package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
- package/lib/cjs/imodel-components-react/timeline/Scrubber.js +195 -191
- package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +432 -428
- package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +58 -54
- package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +398 -365
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +17 -0
- package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +174 -174
- package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
- package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +276 -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 +105 -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 +72 -73
- 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/ColorPickerButton.d.ts +37 -37
- package/lib/esm/imodel-components-react/color/ColorPickerButton.js +83 -83
- package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
- 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/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/ColorPickerPopup.d.ts +44 -44
- package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +114 -114
- 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/SaturationPicker.d.ts +20 -20
- package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
- 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/getCSSColorFromDef.d.ts +6 -6
- package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
- 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/WeightEditor.d.ts +47 -47
- package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
- 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/QuantityNumberInput.d.ts +44 -44
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +243 -243
- package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
- 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/WeightPickerButton.d.ts +60 -60
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +134 -133
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
- package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +1 -2
- 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/CubeNavigationAid.d.ts +175 -174
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +620 -610
- package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +627 -626
- package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
- 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 +0 -4
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +29 -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 +61 -61
- 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 +62 -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 +82 -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 +106 -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 +157 -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 +122 -122
- 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/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/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/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/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/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/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/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/ThousandsSeparator.d.ts +17 -17
- package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +68 -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/timeline/BaseSolarDataProvider.d.ts +52 -52
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +138 -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/InlineEdit.d.ts +27 -27
- package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
- package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
- package/lib/esm/imodel-components-react/timeline/PlayerButton.js +68 -68
- 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/SolarTimeline.d.ts +77 -77
- package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +402 -402
- 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/TimelineComponent.d.ts +130 -133
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +368 -339
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
- package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +17 -0
- package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +174 -174
- package/lib/esm/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
- package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +249 -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 +96 -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/package.json +26 -24
|
@@ -1,115 +1,115 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
/** @packageDocumentation
|
|
6
|
-
* @module Color
|
|
7
|
-
*/
|
|
8
|
-
// cSpell:ignore colorpicker
|
|
9
|
-
import * as React from "react";
|
|
10
|
-
import classnames from "classnames";
|
|
11
|
-
import { ColorByName, ColorDef } from "@itwin/core-common";
|
|
12
|
-
import { RelativePosition } from "@itwin/appui-abstract";
|
|
13
|
-
import { Icon, Popup, useRefs } from "@itwin/core-react";
|
|
14
|
-
// import { ColorPickerPanel } from "./ColorPickerPanel";
|
|
15
|
-
import { ColorBuilder, ColorInputPanel, ColorPalette, ColorPicker, ColorValue } from "@itwin/itwinui-react";
|
|
16
|
-
import "./ColorPickerPopup.scss";
|
|
17
|
-
import { getCSSColorFromDef } from "./getCSSColorFromDef";
|
|
18
|
-
import { UiIModelComponents } from "../UiIModelComponents";
|
|
19
|
-
import { SvgCaretDownSmall, SvgCaretUpSmall, SvgClose } from "@itwin/itwinui-icons-react";
|
|
20
|
-
// Defined using following pattern (const ColorPickerPopup at bottom) to ensure useful API documentation is extracted
|
|
21
|
-
const ForwardRefColorPickerPopup = React.forwardRef(function ForwardRefColorPickerPopup(props, ref) {
|
|
22
|
-
const target = React.useRef(null);
|
|
23
|
-
const refs = useRefs(target, ref); // combine ref needed for target with the forwardRef needed by the Parent when parent is a Type Editor.
|
|
24
|
-
const [showPopup, setShowPopup] = React.useState(false);
|
|
25
|
-
const [colorDef, setColorDef] = React.useState(props.initialColor);
|
|
26
|
-
const initialColorRef = React.useRef(props.initialColor);
|
|
27
|
-
React.useEffect(() => {
|
|
28
|
-
if (props.initialColor !== initialColorRef.current) {
|
|
29
|
-
initialColorRef.current = props.initialColor;
|
|
30
|
-
setColorDef(props.initialColor);
|
|
31
|
-
}
|
|
32
|
-
}, [props.initialColor]);
|
|
33
|
-
const defaultColors = React.useRef([
|
|
34
|
-
ColorValue.fromTbgr(ColorByName.red),
|
|
35
|
-
ColorValue.fromTbgr(ColorByName.orange),
|
|
36
|
-
ColorValue.fromTbgr(ColorByName.yellow),
|
|
37
|
-
ColorValue.fromTbgr(ColorByName.green),
|
|
38
|
-
ColorValue.fromTbgr(ColorByName.blue),
|
|
39
|
-
ColorValue.fromTbgr(ColorByName.mediumBlue),
|
|
40
|
-
ColorValue.fromTbgr(ColorByName.indigo),
|
|
41
|
-
ColorValue.fromTbgr(ColorByName.violet),
|
|
42
|
-
ColorValue.fromTbgr(ColorByName.black),
|
|
43
|
-
ColorValue.fromTbgr(ColorByName.white),
|
|
44
|
-
ColorValue.fromTbgr(ColorByName.cyan),
|
|
45
|
-
ColorValue.fromTbgr(ColorByName.fuchsia),
|
|
46
|
-
ColorValue.fromTbgr(ColorByName.tan),
|
|
47
|
-
ColorValue.fromTbgr(ColorByName.gray),
|
|
48
|
-
ColorValue.fromTbgr(ColorByName.brown),
|
|
49
|
-
ColorValue.fromTbgr(ColorByName.purple),
|
|
50
|
-
ColorValue.fromTbgr(ColorByName.olive),
|
|
51
|
-
ColorValue.fromTbgr(ColorByName.darkGreen),
|
|
52
|
-
]);
|
|
53
|
-
// istanbul ignore next
|
|
54
|
-
const closePopup = React.useCallback(() => {
|
|
55
|
-
props.onClose && props.onClose(colorDef);
|
|
56
|
-
setShowPopup(false);
|
|
57
|
-
}, [colorDef, props]);
|
|
58
|
-
const togglePopup = React.useCallback(() => {
|
|
59
|
-
setShowPopup(!showPopup);
|
|
60
|
-
}, [showPopup]);
|
|
61
|
-
const handleColorChanged = React.useCallback((newColorValue) => {
|
|
62
|
-
const newColor = ColorDef.fromTbgr(newColorValue.toTbgr());
|
|
63
|
-
// istanbul ignore else
|
|
64
|
-
if (!newColor.equals(colorDef)) {
|
|
65
|
-
setColorDef(newColor);
|
|
66
|
-
// istanbul ignore else
|
|
67
|
-
props.onColorChange && props.onColorChange(newColor);
|
|
68
|
-
}
|
|
69
|
-
}, [colorDef, props]);
|
|
70
|
-
const rgbaString = getCSSColorFromDef(colorDef);
|
|
71
|
-
const buttonStyle = { ...props.style };
|
|
72
|
-
const swatchStyle = { backgroundColor: rgbaString };
|
|
73
|
-
const buttonClassNames = classnames("components-colorpicker-popup-button", props.readonly && "readonly", props.className);
|
|
74
|
-
const clickHandler = (event) => {
|
|
75
|
-
// istanbul ignore else
|
|
76
|
-
if (props.captureClicks)
|
|
77
|
-
event.stopPropagation();
|
|
78
|
-
};
|
|
79
|
-
const colorOptions = React.useMemo(() => {
|
|
80
|
-
if (props.colorDefs && props.colorDefs.length) {
|
|
81
|
-
return props.colorDefs.map((def) => ColorValue.fromTbgr(def.tbgr));
|
|
82
|
-
}
|
|
83
|
-
if (props.colorDefs && 0 === props.colorDefs.length)
|
|
84
|
-
return undefined;
|
|
85
|
-
return defaultColors.current;
|
|
86
|
-
}, [props.colorDefs]);
|
|
87
|
-
const popupPosition = undefined !== props.popupPosition ? props.popupPosition : RelativePosition.BottomLeft;
|
|
88
|
-
const [closeLabel] = React.useState(() => UiIModelComponents.translate("color.close"));
|
|
89
|
-
const [togglePopupLabel] = React.useState(() => UiIModelComponents.translate("color.toggleColorPopup"));
|
|
90
|
-
return (
|
|
91
|
-
/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
92
|
-
React.createElement("div", { onClick: clickHandler },
|
|
93
|
-
React.createElement("button", { "data-testid": "components-colorpicker-popup-button", onClick: togglePopup, className: buttonClassNames, style: buttonStyle, disabled: props.disabled, ref: refs, title: togglePopupLabel },
|
|
94
|
-
React.createElement("div", { className: "components-colorpicker-button-container" },
|
|
95
|
-
React.createElement("div", { className: "components-colorpicker-button-color-swatch", style: swatchStyle, "data-testid": showPopup ? "caret-up" : "caret-down" }),
|
|
96
|
-
props.showCaret && React.createElement(Icon, { className: "components-caret", iconSpec: showPopup ? React.createElement(SvgCaretUpSmall, null) : React.createElement(SvgCaretDownSmall, null) }))),
|
|
97
|
-
React.createElement(Popup, { className: "components-colorpicker-popup", isOpen: showPopup, position: popupPosition, onClose: closePopup, target: target.current, closeOnNestedPopupOutsideClick: true },
|
|
98
|
-
React.createElement("div", { className: "components-colorpicker-popup-panel-padding" },
|
|
99
|
-
!props.hideCloseButton &&
|
|
100
|
-
React.createElement("button", { title: closeLabel, className: "core-focus-trap-ignore-initial core-dialog-close icon", "data-testid": "core-dialog-close", onClick: togglePopup },
|
|
101
|
-
React.createElement(Icon, { iconSpec: React.createElement(SvgClose, null) })),
|
|
102
|
-
React.createElement(ColorPicker, { selectedColor: ColorValue.fromTbgr(colorDef.tbgr), onChangeComplete: handleColorChanged },
|
|
103
|
-
React.createElement(ColorBuilder, null),
|
|
104
|
-
props.colorInputType &&
|
|
105
|
-
React.createElement(ColorInputPanel, { defaultColorFormat: props.colorInputType }),
|
|
106
|
-
colorOptions &&
|
|
107
|
-
React.createElement(ColorPalette, { colors: colorOptions }))))));
|
|
108
|
-
});
|
|
109
|
-
/**
|
|
110
|
-
* ColorPickerButton component that allows user to select a color from a set of color swatches or to define a new color.
|
|
111
|
-
* @note Using forwardRef so the ColorEditor (Type Editor) can access the ref of the button element inside this component.
|
|
112
|
-
* @public
|
|
113
|
-
*/
|
|
114
|
-
export const ColorPickerPopup = ForwardRefColorPickerPopup;
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Color
|
|
7
|
+
*/
|
|
8
|
+
// cSpell:ignore colorpicker
|
|
9
|
+
import * as React from "react";
|
|
10
|
+
import classnames from "classnames";
|
|
11
|
+
import { ColorByName, ColorDef } from "@itwin/core-common";
|
|
12
|
+
import { RelativePosition } from "@itwin/appui-abstract";
|
|
13
|
+
import { Icon, Popup, useRefs } from "@itwin/core-react";
|
|
14
|
+
// import { ColorPickerPanel } from "./ColorPickerPanel";
|
|
15
|
+
import { ColorBuilder, ColorInputPanel, ColorPalette, ColorPicker, ColorValue } from "@itwin/itwinui-react";
|
|
16
|
+
import "./ColorPickerPopup.scss";
|
|
17
|
+
import { getCSSColorFromDef } from "./getCSSColorFromDef";
|
|
18
|
+
import { UiIModelComponents } from "../UiIModelComponents";
|
|
19
|
+
import { SvgCaretDownSmall, SvgCaretUpSmall, SvgClose } from "@itwin/itwinui-icons-react";
|
|
20
|
+
// Defined using following pattern (const ColorPickerPopup at bottom) to ensure useful API documentation is extracted
|
|
21
|
+
const ForwardRefColorPickerPopup = React.forwardRef(function ForwardRefColorPickerPopup(props, ref) {
|
|
22
|
+
const target = React.useRef(null);
|
|
23
|
+
const refs = useRefs(target, ref); // combine ref needed for target with the forwardRef needed by the Parent when parent is a Type Editor.
|
|
24
|
+
const [showPopup, setShowPopup] = React.useState(false);
|
|
25
|
+
const [colorDef, setColorDef] = React.useState(props.initialColor);
|
|
26
|
+
const initialColorRef = React.useRef(props.initialColor);
|
|
27
|
+
React.useEffect(() => {
|
|
28
|
+
if (props.initialColor !== initialColorRef.current) {
|
|
29
|
+
initialColorRef.current = props.initialColor;
|
|
30
|
+
setColorDef(props.initialColor);
|
|
31
|
+
}
|
|
32
|
+
}, [props.initialColor]);
|
|
33
|
+
const defaultColors = React.useRef([
|
|
34
|
+
ColorValue.fromTbgr(ColorByName.red),
|
|
35
|
+
ColorValue.fromTbgr(ColorByName.orange),
|
|
36
|
+
ColorValue.fromTbgr(ColorByName.yellow),
|
|
37
|
+
ColorValue.fromTbgr(ColorByName.green),
|
|
38
|
+
ColorValue.fromTbgr(ColorByName.blue),
|
|
39
|
+
ColorValue.fromTbgr(ColorByName.mediumBlue),
|
|
40
|
+
ColorValue.fromTbgr(ColorByName.indigo),
|
|
41
|
+
ColorValue.fromTbgr(ColorByName.violet),
|
|
42
|
+
ColorValue.fromTbgr(ColorByName.black),
|
|
43
|
+
ColorValue.fromTbgr(ColorByName.white),
|
|
44
|
+
ColorValue.fromTbgr(ColorByName.cyan),
|
|
45
|
+
ColorValue.fromTbgr(ColorByName.fuchsia),
|
|
46
|
+
ColorValue.fromTbgr(ColorByName.tan),
|
|
47
|
+
ColorValue.fromTbgr(ColorByName.gray),
|
|
48
|
+
ColorValue.fromTbgr(ColorByName.brown),
|
|
49
|
+
ColorValue.fromTbgr(ColorByName.purple),
|
|
50
|
+
ColorValue.fromTbgr(ColorByName.olive),
|
|
51
|
+
ColorValue.fromTbgr(ColorByName.darkGreen),
|
|
52
|
+
]);
|
|
53
|
+
// istanbul ignore next
|
|
54
|
+
const closePopup = React.useCallback(() => {
|
|
55
|
+
props.onClose && props.onClose(colorDef);
|
|
56
|
+
setShowPopup(false);
|
|
57
|
+
}, [colorDef, props]);
|
|
58
|
+
const togglePopup = React.useCallback(() => {
|
|
59
|
+
setShowPopup(!showPopup);
|
|
60
|
+
}, [showPopup]);
|
|
61
|
+
const handleColorChanged = React.useCallback((newColorValue) => {
|
|
62
|
+
const newColor = ColorDef.fromTbgr(newColorValue.toTbgr());
|
|
63
|
+
// istanbul ignore else
|
|
64
|
+
if (!newColor.equals(colorDef)) {
|
|
65
|
+
setColorDef(newColor);
|
|
66
|
+
// istanbul ignore else
|
|
67
|
+
props.onColorChange && props.onColorChange(newColor);
|
|
68
|
+
}
|
|
69
|
+
}, [colorDef, props]);
|
|
70
|
+
const rgbaString = getCSSColorFromDef(colorDef);
|
|
71
|
+
const buttonStyle = { ...props.style };
|
|
72
|
+
const swatchStyle = { backgroundColor: rgbaString };
|
|
73
|
+
const buttonClassNames = classnames("components-colorpicker-popup-button", props.readonly && "readonly", props.className);
|
|
74
|
+
const clickHandler = (event) => {
|
|
75
|
+
// istanbul ignore else
|
|
76
|
+
if (props.captureClicks)
|
|
77
|
+
event.stopPropagation();
|
|
78
|
+
};
|
|
79
|
+
const colorOptions = React.useMemo(() => {
|
|
80
|
+
if (props.colorDefs && props.colorDefs.length) {
|
|
81
|
+
return props.colorDefs.map((def) => ColorValue.fromTbgr(def.tbgr));
|
|
82
|
+
}
|
|
83
|
+
if (props.colorDefs && 0 === props.colorDefs.length)
|
|
84
|
+
return undefined;
|
|
85
|
+
return defaultColors.current;
|
|
86
|
+
}, [props.colorDefs]);
|
|
87
|
+
const popupPosition = undefined !== props.popupPosition ? props.popupPosition : RelativePosition.BottomLeft;
|
|
88
|
+
const [closeLabel] = React.useState(() => UiIModelComponents.translate("color.close"));
|
|
89
|
+
const [togglePopupLabel] = React.useState(() => UiIModelComponents.translate("color.toggleColorPopup"));
|
|
90
|
+
return (
|
|
91
|
+
/* eslint-disable-next-line jsx-a11y/no-static-element-interactions, jsx-a11y/click-events-have-key-events */
|
|
92
|
+
React.createElement("div", { onClick: clickHandler },
|
|
93
|
+
React.createElement("button", { "data-testid": "components-colorpicker-popup-button", onClick: togglePopup, className: buttonClassNames, style: buttonStyle, disabled: props.disabled, ref: refs, title: togglePopupLabel },
|
|
94
|
+
React.createElement("div", { className: "components-colorpicker-button-container" },
|
|
95
|
+
React.createElement("div", { className: "components-colorpicker-button-color-swatch", style: swatchStyle, "data-testid": showPopup ? "caret-up" : "caret-down" }),
|
|
96
|
+
props.showCaret && React.createElement(Icon, { className: "components-caret", iconSpec: showPopup ? React.createElement(SvgCaretUpSmall, null) : React.createElement(SvgCaretDownSmall, null) }))),
|
|
97
|
+
React.createElement(Popup, { className: "components-colorpicker-popup", isOpen: showPopup, position: popupPosition, onClose: closePopup, target: target.current, closeOnNestedPopupOutsideClick: true },
|
|
98
|
+
React.createElement("div", { className: "components-colorpicker-popup-panel-padding" },
|
|
99
|
+
!props.hideCloseButton &&
|
|
100
|
+
React.createElement("button", { title: closeLabel, className: "core-focus-trap-ignore-initial core-dialog-close icon", "data-testid": "core-dialog-close", onClick: togglePopup },
|
|
101
|
+
React.createElement(Icon, { iconSpec: React.createElement(SvgClose, null) })),
|
|
102
|
+
React.createElement(ColorPicker, { selectedColor: ColorValue.fromTbgr(colorDef.tbgr), onChangeComplete: handleColorChanged },
|
|
103
|
+
React.createElement(ColorBuilder, null),
|
|
104
|
+
props.colorInputType &&
|
|
105
|
+
React.createElement(ColorInputPanel, { defaultColorFormat: props.colorInputType }),
|
|
106
|
+
colorOptions &&
|
|
107
|
+
React.createElement(ColorPalette, { colors: colorOptions }))))));
|
|
108
|
+
});
|
|
109
|
+
/**
|
|
110
|
+
* ColorPickerButton component that allows user to select a color from a set of color swatches or to define a new color.
|
|
111
|
+
* @note Using forwardRef so the ColorEditor (Type Editor) can access the ref of the button element inside this component.
|
|
112
|
+
* @public
|
|
113
|
+
*/
|
|
114
|
+
export const ColorPickerPopup = ForwardRefColorPickerPopup;
|
|
115
115
|
//# sourceMappingURL=ColorPickerPopup.js.map
|
|
@@ -1,23 +1,23 @@
|
|
|
1
|
-
/** @packageDocumentation
|
|
2
|
-
* @module Color
|
|
3
|
-
*/
|
|
4
|
-
import "./HueSlider.scss";
|
|
5
|
-
import * as React from "react";
|
|
6
|
-
import { HSVColor } from "@itwin/core-common";
|
|
7
|
-
import { CommonProps } from "@itwin/core-react";
|
|
8
|
-
/** Properties for the [[HueSlider]] React component
|
|
9
|
-
* @beta
|
|
10
|
-
*/
|
|
11
|
-
export interface HueSliderProps extends React.HTMLAttributes<HTMLDivElement>, CommonProps {
|
|
12
|
-
/** true if slider is oriented horizontal, else vertical orientation is assumed */
|
|
13
|
-
isHorizontal?: boolean;
|
|
14
|
-
/** function to run when user hue is changed */
|
|
15
|
-
onHueChange?: ((hue: HSVColor) => void) | undefined;
|
|
16
|
-
/** HSV Color Value */
|
|
17
|
-
hsv: HSVColor;
|
|
18
|
-
}
|
|
19
|
-
/** HueSlider component used to set the hue value.
|
|
20
|
-
* @beta
|
|
21
|
-
*/
|
|
22
|
-
export declare function HueSlider({ isHorizontal, onHueChange, hsv, className, style }: HueSliderProps): JSX.Element;
|
|
1
|
+
/** @packageDocumentation
|
|
2
|
+
* @module Color
|
|
3
|
+
*/
|
|
4
|
+
import "./HueSlider.scss";
|
|
5
|
+
import * as React from "react";
|
|
6
|
+
import { HSVColor } from "@itwin/core-common";
|
|
7
|
+
import { CommonProps } from "@itwin/core-react";
|
|
8
|
+
/** Properties for the [[HueSlider]] React component
|
|
9
|
+
* @beta
|
|
10
|
+
*/
|
|
11
|
+
export interface HueSliderProps extends React.HTMLAttributes<HTMLDivElement>, CommonProps {
|
|
12
|
+
/** true if slider is oriented horizontal, else vertical orientation is assumed */
|
|
13
|
+
isHorizontal?: boolean;
|
|
14
|
+
/** function to run when user hue is changed */
|
|
15
|
+
onHueChange?: ((hue: HSVColor) => void) | undefined;
|
|
16
|
+
/** HSV Color Value */
|
|
17
|
+
hsv: HSVColor;
|
|
18
|
+
}
|
|
19
|
+
/** HueSlider component used to set the hue value.
|
|
20
|
+
* @beta
|
|
21
|
+
*/
|
|
22
|
+
export declare function HueSlider({ isHorizontal, onHueChange, hsv, className, style }: HueSliderProps): JSX.Element;
|
|
23
23
|
//# sourceMappingURL=HueSlider.d.ts.map
|
|
@@ -1,174 +1,174 @@
|
|
|
1
|
-
/*---------------------------------------------------------------------------------------------
|
|
2
|
-
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
-
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
-
*--------------------------------------------------------------------------------------------*/
|
|
5
|
-
/** @packageDocumentation
|
|
6
|
-
* @module Color
|
|
7
|
-
*/
|
|
8
|
-
import "./HueSlider.scss";
|
|
9
|
-
import classnames from "classnames";
|
|
10
|
-
import * as React from "react";
|
|
11
|
-
import { SpecialKey } from "@itwin/appui-abstract";
|
|
12
|
-
import { UiIModelComponents } from "../UiIModelComponents";
|
|
13
|
-
// hue is a value from 0 to 360
|
|
14
|
-
function calculateHue(currentPos, high, isVertical) {
|
|
15
|
-
// istanbul ignore next
|
|
16
|
-
if (currentPos <= 0) {
|
|
17
|
-
return isVertical ? 359 : 0;
|
|
18
|
-
}
|
|
19
|
-
else if (currentPos >= high) {
|
|
20
|
-
return isVertical ? 0 : 359;
|
|
21
|
-
}
|
|
22
|
-
else {
|
|
23
|
-
let percent = ((currentPos * 100) / high);
|
|
24
|
-
if (isVertical)
|
|
25
|
-
percent = 100 - percent;
|
|
26
|
-
return Math.round(((359 * percent) / 100));
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
function calculateChange(currentHue, e, isHorizontal, container) {
|
|
30
|
-
const { width: containerWidth, height: containerHeight, top: containerTop, left: containerLeft } = container.getBoundingClientRect();
|
|
31
|
-
let x;
|
|
32
|
-
if ("pageX" in e) {
|
|
33
|
-
x = e.pageX;
|
|
34
|
-
}
|
|
35
|
-
else {
|
|
36
|
-
// istanbul ignore if
|
|
37
|
-
if (undefined === e.touches || 0 === e.touches.length)
|
|
38
|
-
return currentHue;
|
|
39
|
-
x = e.touches[0].pageX;
|
|
40
|
-
}
|
|
41
|
-
// istanbul ignore if
|
|
42
|
-
if (undefined === x)
|
|
43
|
-
return currentHue;
|
|
44
|
-
let y;
|
|
45
|
-
if ("pageY" in e) {
|
|
46
|
-
y = e.pageY;
|
|
47
|
-
}
|
|
48
|
-
else {
|
|
49
|
-
// istanbul ignore if
|
|
50
|
-
if (undefined === e.touches || 0 === e.touches.length)
|
|
51
|
-
return currentHue;
|
|
52
|
-
y = e.touches[0].pageY;
|
|
53
|
-
}
|
|
54
|
-
// istanbul ignore if
|
|
55
|
-
if (undefined === y)
|
|
56
|
-
return currentHue;
|
|
57
|
-
const pointerX = x - (containerLeft + window.scrollX);
|
|
58
|
-
const pointerY = y - (containerTop + window.scrollY);
|
|
59
|
-
if (!isHorizontal) { // vertical
|
|
60
|
-
return calculateHue(pointerY, containerHeight, true);
|
|
61
|
-
}
|
|
62
|
-
else { // horizontal
|
|
63
|
-
return calculateHue(pointerX, containerWidth, false);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/** HueSlider component used to set the hue value.
|
|
67
|
-
* @beta
|
|
68
|
-
*/
|
|
69
|
-
export function HueSlider({ isHorizontal, onHueChange, hsv, className, style }) {
|
|
70
|
-
const container = React.useRef(null);
|
|
71
|
-
const [hueLabel] = React.useState(() => UiIModelComponents.translate("color.hue"));
|
|
72
|
-
const isDragging = React.useRef(false);
|
|
73
|
-
const onChange = React.useCallback((e) => {
|
|
74
|
-
// istanbul ignore else
|
|
75
|
-
if (container.current) {
|
|
76
|
-
const newHue = calculateChange(hsv.h, e, !!isHorizontal, container.current);
|
|
77
|
-
// istanbul ignore else
|
|
78
|
-
const newColor = hsv.clone(newHue);
|
|
79
|
-
// istanbul ignore else
|
|
80
|
-
if (onHueChange)
|
|
81
|
-
onHueChange(newColor);
|
|
82
|
-
}
|
|
83
|
-
}, [isHorizontal, hsv, onHueChange]);
|
|
84
|
-
const onDragging = React.useCallback((e) => {
|
|
85
|
-
// istanbul ignore else
|
|
86
|
-
if (isDragging.current) {
|
|
87
|
-
onChange(e);
|
|
88
|
-
}
|
|
89
|
-
}, [onChange]);
|
|
90
|
-
const onMouseUp = React.useCallback(() => {
|
|
91
|
-
// istanbul ignore else
|
|
92
|
-
if (isDragging.current) {
|
|
93
|
-
isDragging.current = false;
|
|
94
|
-
}
|
|
95
|
-
}, []);
|
|
96
|
-
const onTouchEnd = React.useCallback((event) => {
|
|
97
|
-
event.preventDefault();
|
|
98
|
-
// istanbul ignore else
|
|
99
|
-
if (isDragging.current) {
|
|
100
|
-
onChange(event);
|
|
101
|
-
isDragging.current = false;
|
|
102
|
-
}
|
|
103
|
-
}, [onChange]);
|
|
104
|
-
const onMouseDown = React.useCallback((e) => {
|
|
105
|
-
e.preventDefault();
|
|
106
|
-
// istanbul ignore else
|
|
107
|
-
if (e.target !== e.currentTarget) {
|
|
108
|
-
// istanbul ignore else
|
|
109
|
-
if (!isDragging.current) {
|
|
110
|
-
document.addEventListener("mouseup", onMouseUp, { capture: true, once: true });
|
|
111
|
-
isDragging.current = true;
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
onChange(e);
|
|
115
|
-
// istanbul ignore else
|
|
116
|
-
if (container.current)
|
|
117
|
-
container.current.focus();
|
|
118
|
-
}, [onChange, onMouseUp]);
|
|
119
|
-
const onTouchStart = React.useCallback((e) => {
|
|
120
|
-
// istanbul ignore else
|
|
121
|
-
if (e.target !== e.currentTarget)
|
|
122
|
-
isDragging.current = true;
|
|
123
|
-
onChange(e);
|
|
124
|
-
// istanbul ignore else
|
|
125
|
-
if (container.current)
|
|
126
|
-
container.current.focus();
|
|
127
|
-
}, [onChange]);
|
|
128
|
-
const onKeyDown = React.useCallback((evt) => {
|
|
129
|
-
let newHue;
|
|
130
|
-
const hueValue = hsv.h;
|
|
131
|
-
if (evt.key === SpecialKey.ArrowLeft || evt.key === SpecialKey.ArrowDown) {
|
|
132
|
-
newHue = hueValue - (evt.ctrlKey ? 10 : 1);
|
|
133
|
-
}
|
|
134
|
-
else if (evt.key === SpecialKey.ArrowRight || evt.key === SpecialKey.ArrowUp) {
|
|
135
|
-
newHue = hueValue + (evt.ctrlKey ? 10 : 1);
|
|
136
|
-
}
|
|
137
|
-
else if (evt.key === SpecialKey.PageDown) {
|
|
138
|
-
newHue = hueValue - (evt.ctrlKey ? 180 : 60);
|
|
139
|
-
}
|
|
140
|
-
else if (evt.key === SpecialKey.PageUp) {
|
|
141
|
-
newHue = hueValue + (evt.ctrlKey ? 180 : 60);
|
|
142
|
-
}
|
|
143
|
-
else if (evt.key === SpecialKey.Home) {
|
|
144
|
-
newHue = 0;
|
|
145
|
-
}
|
|
146
|
-
else {
|
|
147
|
-
// istanbul ignore else
|
|
148
|
-
if (evt.key === SpecialKey.End) {
|
|
149
|
-
newHue = 359;
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
// istanbul ignore else
|
|
153
|
-
if (undefined !== newHue) {
|
|
154
|
-
// istanbul ignore if
|
|
155
|
-
if (newHue > 359)
|
|
156
|
-
newHue = 359; // 360 is same as zero
|
|
157
|
-
// istanbul ignore if
|
|
158
|
-
if (newHue < 0)
|
|
159
|
-
newHue = 0;
|
|
160
|
-
const newColor = hsv.clone(newHue);
|
|
161
|
-
// istanbul ignore else
|
|
162
|
-
if (onHueChange)
|
|
163
|
-
onHueChange(newColor);
|
|
164
|
-
evt.preventDefault();
|
|
165
|
-
}
|
|
166
|
-
}, [hsv, onHueChange]);
|
|
167
|
-
const containerClasses = classnames(isHorizontal ? "components-hue-container-horizontal" : "components-hue-container-vertical", className);
|
|
168
|
-
const pointerStyle = isHorizontal ? { left: `${(hsv.h * 100) / 360}%`, backgroundColor: `hsl(${hsv.h} ,100%, 50%)` } :
|
|
169
|
-
{ left: `0px`, top: `${-((hsv.h * 100) / 360) + 100}%`, backgroundColor: `hsl(${hsv.h} ,100%, 50%)` };
|
|
170
|
-
return (React.createElement("div", { className: containerClasses, style: style, "data-testid": "hue-container" },
|
|
171
|
-
React.createElement("div", { "data-testid": "hue-slider", role: "slider", "aria-label": hueLabel, "aria-valuemin": 0, "aria-valuemax": 360, "aria-valuenow": hsv.h, className: "components-hue-slider", ref: container, onMouseDown: onMouseDown, onMouseMove: onDragging, onTouchMove: onDragging, onMouseUp: onMouseUp, onTouchStart: onTouchStart, onTouchEnd: onTouchEnd, tabIndex: 0, onKeyDown: onKeyDown },
|
|
172
|
-
React.createElement("div", { style: pointerStyle, className: "components-hue-pointer", "data-testid": "hue-pointer" }))));
|
|
173
|
-
}
|
|
1
|
+
/*---------------------------------------------------------------------------------------------
|
|
2
|
+
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
|
|
3
|
+
* See LICENSE.md in the project root for license terms and full copyright notice.
|
|
4
|
+
*--------------------------------------------------------------------------------------------*/
|
|
5
|
+
/** @packageDocumentation
|
|
6
|
+
* @module Color
|
|
7
|
+
*/
|
|
8
|
+
import "./HueSlider.scss";
|
|
9
|
+
import classnames from "classnames";
|
|
10
|
+
import * as React from "react";
|
|
11
|
+
import { SpecialKey } from "@itwin/appui-abstract";
|
|
12
|
+
import { UiIModelComponents } from "../UiIModelComponents";
|
|
13
|
+
// hue is a value from 0 to 360
|
|
14
|
+
function calculateHue(currentPos, high, isVertical) {
|
|
15
|
+
// istanbul ignore next
|
|
16
|
+
if (currentPos <= 0) {
|
|
17
|
+
return isVertical ? 359 : 0;
|
|
18
|
+
}
|
|
19
|
+
else if (currentPos >= high) {
|
|
20
|
+
return isVertical ? 0 : 359;
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
let percent = ((currentPos * 100) / high);
|
|
24
|
+
if (isVertical)
|
|
25
|
+
percent = 100 - percent;
|
|
26
|
+
return Math.round(((359 * percent) / 100));
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
function calculateChange(currentHue, e, isHorizontal, container) {
|
|
30
|
+
const { width: containerWidth, height: containerHeight, top: containerTop, left: containerLeft } = container.getBoundingClientRect();
|
|
31
|
+
let x;
|
|
32
|
+
if ("pageX" in e) {
|
|
33
|
+
x = e.pageX;
|
|
34
|
+
}
|
|
35
|
+
else {
|
|
36
|
+
// istanbul ignore if
|
|
37
|
+
if (undefined === e.touches || 0 === e.touches.length)
|
|
38
|
+
return currentHue;
|
|
39
|
+
x = e.touches[0].pageX;
|
|
40
|
+
}
|
|
41
|
+
// istanbul ignore if
|
|
42
|
+
if (undefined === x)
|
|
43
|
+
return currentHue;
|
|
44
|
+
let y;
|
|
45
|
+
if ("pageY" in e) {
|
|
46
|
+
y = e.pageY;
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// istanbul ignore if
|
|
50
|
+
if (undefined === e.touches || 0 === e.touches.length)
|
|
51
|
+
return currentHue;
|
|
52
|
+
y = e.touches[0].pageY;
|
|
53
|
+
}
|
|
54
|
+
// istanbul ignore if
|
|
55
|
+
if (undefined === y)
|
|
56
|
+
return currentHue;
|
|
57
|
+
const pointerX = x - (containerLeft + window.scrollX);
|
|
58
|
+
const pointerY = y - (containerTop + window.scrollY);
|
|
59
|
+
if (!isHorizontal) { // vertical
|
|
60
|
+
return calculateHue(pointerY, containerHeight, true);
|
|
61
|
+
}
|
|
62
|
+
else { // horizontal
|
|
63
|
+
return calculateHue(pointerX, containerWidth, false);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/** HueSlider component used to set the hue value.
|
|
67
|
+
* @beta
|
|
68
|
+
*/
|
|
69
|
+
export function HueSlider({ isHorizontal, onHueChange, hsv, className, style }) {
|
|
70
|
+
const container = React.useRef(null);
|
|
71
|
+
const [hueLabel] = React.useState(() => UiIModelComponents.translate("color.hue"));
|
|
72
|
+
const isDragging = React.useRef(false);
|
|
73
|
+
const onChange = React.useCallback((e) => {
|
|
74
|
+
// istanbul ignore else
|
|
75
|
+
if (container.current) {
|
|
76
|
+
const newHue = calculateChange(hsv.h, e, !!isHorizontal, container.current);
|
|
77
|
+
// istanbul ignore else
|
|
78
|
+
const newColor = hsv.clone(newHue);
|
|
79
|
+
// istanbul ignore else
|
|
80
|
+
if (onHueChange)
|
|
81
|
+
onHueChange(newColor);
|
|
82
|
+
}
|
|
83
|
+
}, [isHorizontal, hsv, onHueChange]);
|
|
84
|
+
const onDragging = React.useCallback((e) => {
|
|
85
|
+
// istanbul ignore else
|
|
86
|
+
if (isDragging.current) {
|
|
87
|
+
onChange(e);
|
|
88
|
+
}
|
|
89
|
+
}, [onChange]);
|
|
90
|
+
const onMouseUp = React.useCallback(() => {
|
|
91
|
+
// istanbul ignore else
|
|
92
|
+
if (isDragging.current) {
|
|
93
|
+
isDragging.current = false;
|
|
94
|
+
}
|
|
95
|
+
}, []);
|
|
96
|
+
const onTouchEnd = React.useCallback((event) => {
|
|
97
|
+
event.preventDefault();
|
|
98
|
+
// istanbul ignore else
|
|
99
|
+
if (isDragging.current) {
|
|
100
|
+
onChange(event);
|
|
101
|
+
isDragging.current = false;
|
|
102
|
+
}
|
|
103
|
+
}, [onChange]);
|
|
104
|
+
const onMouseDown = React.useCallback((e) => {
|
|
105
|
+
e.preventDefault();
|
|
106
|
+
// istanbul ignore else
|
|
107
|
+
if (e.target !== e.currentTarget) {
|
|
108
|
+
// istanbul ignore else
|
|
109
|
+
if (!isDragging.current) {
|
|
110
|
+
document.addEventListener("mouseup", onMouseUp, { capture: true, once: true });
|
|
111
|
+
isDragging.current = true;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
onChange(e);
|
|
115
|
+
// istanbul ignore else
|
|
116
|
+
if (container.current)
|
|
117
|
+
container.current.focus();
|
|
118
|
+
}, [onChange, onMouseUp]);
|
|
119
|
+
const onTouchStart = React.useCallback((e) => {
|
|
120
|
+
// istanbul ignore else
|
|
121
|
+
if (e.target !== e.currentTarget)
|
|
122
|
+
isDragging.current = true;
|
|
123
|
+
onChange(e);
|
|
124
|
+
// istanbul ignore else
|
|
125
|
+
if (container.current)
|
|
126
|
+
container.current.focus();
|
|
127
|
+
}, [onChange]);
|
|
128
|
+
const onKeyDown = React.useCallback((evt) => {
|
|
129
|
+
let newHue;
|
|
130
|
+
const hueValue = hsv.h;
|
|
131
|
+
if (evt.key === SpecialKey.ArrowLeft || evt.key === SpecialKey.ArrowDown) {
|
|
132
|
+
newHue = hueValue - (evt.ctrlKey ? 10 : 1);
|
|
133
|
+
}
|
|
134
|
+
else if (evt.key === SpecialKey.ArrowRight || evt.key === SpecialKey.ArrowUp) {
|
|
135
|
+
newHue = hueValue + (evt.ctrlKey ? 10 : 1);
|
|
136
|
+
}
|
|
137
|
+
else if (evt.key === SpecialKey.PageDown) {
|
|
138
|
+
newHue = hueValue - (evt.ctrlKey ? 180 : 60);
|
|
139
|
+
}
|
|
140
|
+
else if (evt.key === SpecialKey.PageUp) {
|
|
141
|
+
newHue = hueValue + (evt.ctrlKey ? 180 : 60);
|
|
142
|
+
}
|
|
143
|
+
else if (evt.key === SpecialKey.Home) {
|
|
144
|
+
newHue = 0;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// istanbul ignore else
|
|
148
|
+
if (evt.key === SpecialKey.End) {
|
|
149
|
+
newHue = 359;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
// istanbul ignore else
|
|
153
|
+
if (undefined !== newHue) {
|
|
154
|
+
// istanbul ignore if
|
|
155
|
+
if (newHue > 359)
|
|
156
|
+
newHue = 359; // 360 is same as zero
|
|
157
|
+
// istanbul ignore if
|
|
158
|
+
if (newHue < 0)
|
|
159
|
+
newHue = 0;
|
|
160
|
+
const newColor = hsv.clone(newHue);
|
|
161
|
+
// istanbul ignore else
|
|
162
|
+
if (onHueChange)
|
|
163
|
+
onHueChange(newColor);
|
|
164
|
+
evt.preventDefault();
|
|
165
|
+
}
|
|
166
|
+
}, [hsv, onHueChange]);
|
|
167
|
+
const containerClasses = classnames(isHorizontal ? "components-hue-container-horizontal" : "components-hue-container-vertical", className);
|
|
168
|
+
const pointerStyle = isHorizontal ? { left: `${(hsv.h * 100) / 360}%`, backgroundColor: `hsl(${hsv.h} ,100%, 50%)` } :
|
|
169
|
+
{ left: `0px`, top: `${-((hsv.h * 100) / 360) + 100}%`, backgroundColor: `hsl(${hsv.h} ,100%, 50%)` };
|
|
170
|
+
return (React.createElement("div", { className: containerClasses, style: style, "data-testid": "hue-container" },
|
|
171
|
+
React.createElement("div", { "data-testid": "hue-slider", role: "slider", "aria-label": hueLabel, "aria-valuemin": 0, "aria-valuemax": 360, "aria-valuenow": hsv.h, className: "components-hue-slider", ref: container, onMouseDown: onMouseDown, onMouseMove: onDragging, onTouchMove: onDragging, onMouseUp: onMouseUp, onTouchStart: onTouchStart, onTouchEnd: onTouchEnd, tabIndex: 0, onKeyDown: onKeyDown },
|
|
172
|
+
React.createElement("div", { style: pointerStyle, className: "components-hue-pointer", "data-testid": "hue-pointer" }))));
|
|
173
|
+
}
|
|
174
174
|
//# sourceMappingURL=HueSlider.js.map
|