@itwin/imodel-components-react 4.17.6 → 5.0.0-dev.3

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.
Files changed (541) hide show
  1. package/CHANGELOG.md +1 -31
  2. package/README.md +15 -2
  3. package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +2 -4
  4. package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +0 -2
  5. package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +0 -2
  6. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +1 -1
  7. package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +2 -4
  8. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +5 -6
  9. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +0 -2
  10. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +9 -10
  11. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +0 -2
  12. package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +3 -5
  13. package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +1 -1
  14. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +0 -2
  15. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.scss +2 -4
  16. package/lib/cjs/imodel-components-react/timeline/Timeline.scss +7 -9
  17. package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +2 -4
  18. package/lib/esm/imodel-components-react/editors/ColorEditor.scss +0 -2
  19. package/lib/esm/imodel-components-react/editors/WeightEditor.scss +0 -2
  20. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +1 -1
  21. package/lib/esm/imodel-components-react/lineweight/Swatch.scss +2 -4
  22. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +5 -6
  23. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +0 -2
  24. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +9 -10
  25. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +0 -2
  26. package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +3 -5
  27. package/lib/esm/imodel-components-react/timeline/Scrubber.scss +1 -1
  28. package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +0 -2
  29. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.scss +2 -4
  30. package/lib/esm/imodel-components-react/timeline/Timeline.scss +7 -9
  31. package/lib/{cjs/imodel-components-react → imodel-components-react}/UiIModelComponents.d.ts +1 -1
  32. package/lib/imodel-components-react/UiIModelComponents.d.ts.map +1 -0
  33. package/lib/{esm/imodel-components-react → imodel-components-react}/UiIModelComponents.js +4 -7
  34. package/lib/imodel-components-react/UiIModelComponents.js.map +1 -0
  35. package/lib/imodel-components-react/color/AlphaSlider.d.ts.map +1 -0
  36. package/lib/{esm/imodel-components-react → imodel-components-react}/color/AlphaSlider.js +1 -1
  37. package/lib/imodel-components-react/color/AlphaSlider.js.map +1 -0
  38. package/lib/imodel-components-react/color/AlphaSlider.scss +71 -0
  39. package/lib/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -0
  40. package/lib/{esm/imodel-components-react → imodel-components-react}/color/ColorPickerButton.js +4 -3
  41. package/lib/imodel-components-react/color/ColorPickerButton.js.map +1 -0
  42. package/lib/imodel-components-react/color/ColorPickerButton.scss +88 -0
  43. package/lib/imodel-components-react/color/ColorPickerDialog.d.ts.map +1 -0
  44. package/lib/imodel-components-react/color/ColorPickerDialog.js.map +1 -0
  45. package/lib/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -0
  46. package/lib/{esm/imodel-components-react → imodel-components-react}/color/ColorPickerPopup.js +4 -3
  47. package/lib/imodel-components-react/color/ColorPickerPopup.js.map +1 -0
  48. package/lib/imodel-components-react/color/ColorPickerPopup.scss +62 -0
  49. package/lib/imodel-components-react/color/HueSlider.d.ts.map +1 -0
  50. package/lib/{esm/imodel-components-react → imodel-components-react}/color/HueSlider.js +1 -1
  51. package/lib/{esm/imodel-components-react → imodel-components-react}/color/HueSlider.js.map +1 -1
  52. package/lib/imodel-components-react/color/HueSlider.scss +78 -0
  53. package/lib/imodel-components-react/color/SaturationPicker.d.ts.map +1 -0
  54. package/lib/{esm/imodel-components-react → imodel-components-react}/color/SaturationPicker.js +1 -1
  55. package/lib/imodel-components-react/color/SaturationPicker.js.map +1 -0
  56. package/lib/imodel-components-react/color/SaturationPicker.scss +36 -0
  57. package/lib/imodel-components-react/color/Swatch.d.ts.map +1 -0
  58. package/lib/{esm/imodel-components-react → imodel-components-react}/color/Swatch.js +1 -1
  59. package/lib/{esm/imodel-components-react → imodel-components-react}/color/Swatch.js.map +1 -1
  60. package/lib/imodel-components-react/color/Swatch.scss +22 -0
  61. package/lib/imodel-components-react/color/getCSSColorFromDef.d.ts.map +1 -0
  62. package/lib/imodel-components-react/color/getCSSColorFromDef.js.map +1 -0
  63. package/lib/imodel-components-react/editors/ColorEditor.d.ts.map +1 -0
  64. package/lib/{esm/imodel-components-react → imodel-components-react}/editors/ColorEditor.js +3 -4
  65. package/lib/imodel-components-react/editors/ColorEditor.js.map +1 -0
  66. package/lib/imodel-components-react/editors/ColorEditor.scss +16 -0
  67. package/lib/imodel-components-react/editors/WeightEditor.d.ts.map +1 -0
  68. package/lib/{esm/imodel-components-react → imodel-components-react}/editors/WeightEditor.js +3 -4
  69. package/lib/imodel-components-react/editors/WeightEditor.js.map +1 -0
  70. package/lib/imodel-components-react/editors/WeightEditor.scss +14 -0
  71. package/lib/imodel-components-react/inputs/QuantityInput.d.ts.map +1 -0
  72. package/lib/{esm/imodel-components-react → imodel-components-react}/inputs/QuantityInput.js +1 -1
  73. package/lib/{esm/imodel-components-react → imodel-components-react}/inputs/QuantityInput.js.map +1 -1
  74. package/lib/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -0
  75. package/lib/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -0
  76. package/lib/imodel-components-react/inputs/QuantityNumberInput.scss +106 -0
  77. package/lib/imodel-components-react/lineweight/Swatch.d.ts.map +1 -0
  78. package/lib/{esm/imodel-components-react → imodel-components-react}/lineweight/Swatch.js +1 -1
  79. package/lib/{esm/imodel-components-react → imodel-components-react}/lineweight/Swatch.js.map +1 -1
  80. package/lib/imodel-components-react/lineweight/Swatch.scss +46 -0
  81. package/lib/imodel-components-react/lineweight/WeightPickerButton.d.ts.map +1 -0
  82. package/lib/{esm/imodel-components-react → imodel-components-react}/lineweight/WeightPickerButton.js +1 -1
  83. package/lib/{esm/imodel-components-react → imodel-components-react}/lineweight/WeightPickerButton.js.map +1 -1
  84. package/lib/imodel-components-react/lineweight/WeightPickerButton.scss +50 -0
  85. package/lib/imodel-components-react/navigationaids/Cube.d.ts.map +1 -0
  86. package/lib/imodel-components-react/navigationaids/Cube.js.map +1 -0
  87. package/lib/imodel-components-react/navigationaids/Cube.scss +19 -0
  88. package/lib/{esm/imodel-components-react → imodel-components-react}/navigationaids/CubeNavigationAid.d.ts +1 -1
  89. package/lib/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -0
  90. package/lib/{esm/imodel-components-react → imodel-components-react}/navigationaids/CubeNavigationAid.js +3 -3
  91. package/lib/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -0
  92. package/lib/imodel-components-react/navigationaids/CubeNavigationAid.scss +177 -0
  93. package/lib/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -0
  94. package/lib/{esm/imodel-components-react → imodel-components-react}/navigationaids/DrawingNavigationAid.js +2 -2
  95. package/lib/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -0
  96. package/lib/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -0
  97. package/lib/imodel-components-react/quantityformat/FormatPanel.d.ts.map +1 -0
  98. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatPanel.js +6 -6
  99. package/lib/imodel-components-react/quantityformat/FormatPanel.js.map +1 -0
  100. package/lib/imodel-components-react/quantityformat/FormatPanel.scss +53 -0
  101. package/lib/imodel-components-react/quantityformat/FormatPrecision.d.ts.map +1 -0
  102. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatPrecision.js +3 -3
  103. package/lib/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -0
  104. package/lib/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -0
  105. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatSample.js +1 -1
  106. package/lib/imodel-components-react/quantityformat/FormatSample.js.map +1 -0
  107. package/lib/imodel-components-react/quantityformat/FormatType.d.ts.map +1 -0
  108. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatType.js +1 -1
  109. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatType.js.map +1 -1
  110. package/lib/imodel-components-react/quantityformat/FormatUnitLabel.d.ts.map +1 -0
  111. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatUnitLabel.js +1 -1
  112. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatUnitLabel.js.map +1 -1
  113. package/lib/imodel-components-react/quantityformat/FormatUnits.d.ts.map +1 -0
  114. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/FormatUnits.js +2 -2
  115. package/lib/imodel-components-react/quantityformat/FormatUnits.js.map +1 -0
  116. package/lib/imodel-components-react/quantityformat/MiscFormatOptions.d.ts.map +1 -0
  117. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/MiscFormatOptions.js +7 -7
  118. package/lib/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -0
  119. package/lib/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -0
  120. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/QuantityFormatPanel.js +1 -1
  121. package/lib/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -0
  122. package/lib/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts.map +1 -0
  123. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/DecimalPrecision.js +1 -1
  124. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/DecimalPrecision.js.map +1 -1
  125. package/lib/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts.map +1 -0
  126. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/DecimalSeparator.js +1 -1
  127. package/lib/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -0
  128. package/lib/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts.map +1 -0
  129. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/FractionPrecision.js +1 -1
  130. package/lib/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -0
  131. package/lib/imodel-components-react/quantityformat/misc/ScientificType.d.ts.map +1 -0
  132. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/ScientificType.js +1 -1
  133. package/lib/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -0
  134. package/lib/imodel-components-react/quantityformat/misc/SignOption.d.ts.map +1 -0
  135. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/SignOption.js +1 -1
  136. package/lib/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -0
  137. package/lib/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts.map +1 -0
  138. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/StationSeparatorSelector.js +1 -1
  139. package/lib/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -0
  140. package/lib/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts.map +1 -0
  141. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/StationSizeSelector.js +1 -1
  142. package/lib/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -0
  143. package/lib/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts.map +1 -0
  144. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/ThousandsSelector.js +1 -1
  145. package/lib/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -0
  146. package/lib/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts.map +1 -0
  147. package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/ThousandsSeparator.js +2 -2
  148. package/lib/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -0
  149. package/lib/imodel-components-react/quantityformat/misc/UnitDescr.d.ts.map +1 -0
  150. package/lib/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -0
  151. package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/BaseSolarDataProvider.d.ts +1 -1
  152. package/lib/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -0
  153. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/BaseSolarDataProvider.js.map +1 -1
  154. package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/BaseTimelineDataProvider.d.ts +1 -1
  155. package/lib/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts.map +1 -0
  156. package/lib/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -0
  157. package/lib/imodel-components-react/timeline/InlineEdit.d.ts.map +1 -0
  158. package/lib/imodel-components-react/timeline/InlineEdit.js.map +1 -0
  159. package/lib/imodel-components-react/timeline/InlineEdit.scss +22 -0
  160. package/lib/imodel-components-react/timeline/PlayButton.d.ts.map +1 -0
  161. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/PlayButton.js +1 -1
  162. package/lib/imodel-components-react/timeline/PlayButton.js.map +1 -0
  163. package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/Scrubber.d.ts +2 -4
  164. package/lib/imodel-components-react/timeline/Scrubber.d.ts.map +1 -0
  165. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/Scrubber.js +19 -12
  166. package/lib/imodel-components-react/timeline/Scrubber.js.map +1 -0
  167. package/lib/imodel-components-react/timeline/Scrubber.scss +105 -0
  168. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/SolarTimeline.d.ts +1 -1
  169. package/lib/imodel-components-react/timeline/SolarTimeline.d.ts.map +1 -0
  170. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/SolarTimeline.js +3 -3
  171. package/lib/imodel-components-react/timeline/SolarTimeline.js.map +1 -0
  172. package/lib/imodel-components-react/timeline/SolarTimeline.scss +43 -0
  173. package/lib/imodel-components-react/timeline/SpeedTimeline.d.ts.map +1 -0
  174. package/lib/imodel-components-react/timeline/SpeedTimeline.js.map +1 -0
  175. package/lib/imodel-components-react/timeline/SpeedTimeline.scss +38 -0
  176. package/lib/imodel-components-react/timeline/Timeline.scss +163 -0
  177. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/TimelineComponent.d.ts +1 -1
  178. package/lib/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -0
  179. package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/TimelineComponent.js +5 -5
  180. package/lib/imodel-components-react/timeline/TimelineComponent.js.map +1 -0
  181. package/lib/imodel-components-react/timeline/TimelineComponent.scss +48 -0
  182. package/lib/imodel-components-react/timeline/interfaces.d.ts.map +1 -0
  183. package/lib/imodel-components-react/timeline/interfaces.js.map +1 -0
  184. package/lib/imodel-components-react/useTranslation.d.ts.map +1 -0
  185. package/lib/{esm/imodel-components-react → imodel-components-react}/useTranslation.js +2 -2
  186. package/lib/imodel-components-react/useTranslation.js.map +1 -0
  187. package/lib/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -0
  188. package/lib/{esm/imodel-components-react → imodel-components-react}/viewport/ViewportComponent.js +1 -1
  189. package/lib/imodel-components-react/viewport/ViewportComponent.js.map +1 -0
  190. package/lib/{cjs/imodel-components-react → imodel-components-react}/viewport/ViewportComponentEvents.d.ts +1 -1
  191. package/lib/imodel-components-react/viewport/ViewportComponentEvents.d.ts.map +1 -0
  192. package/lib/{esm/imodel-components-react → imodel-components-react}/viewport/ViewportComponentEvents.js +1 -1
  193. package/lib/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -0
  194. package/lib/imodel-components-react.d.ts +77 -0
  195. package/lib/imodel-components-react.d.ts.map +1 -0
  196. package/lib/imodel-components-react.js +90 -0
  197. package/lib/imodel-components-react.js.map +1 -0
  198. package/lib/internal.d.ts +2 -0
  199. package/lib/internal.d.ts.map +1 -0
  200. package/lib/internal.js +6 -0
  201. package/lib/internal.js.map +1 -0
  202. package/package.json +51 -46
  203. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts.map +0 -1
  204. package/lib/cjs/imodel-components-react/UiIModelComponents.js +0 -78
  205. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +0 -1
  206. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts.map +0 -1
  207. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +0 -182
  208. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +0 -1
  209. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts.map +0 -1
  210. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +0 -119
  211. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +0 -1
  212. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts.map +0 -1
  213. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +0 -76
  214. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +0 -1
  215. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts.map +0 -1
  216. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +0 -141
  217. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +0 -1
  218. package/lib/cjs/imodel-components-react/color/HueSlider.d.ts.map +0 -1
  219. package/lib/cjs/imodel-components-react/color/HueSlider.js +0 -201
  220. package/lib/cjs/imodel-components-react/color/HueSlider.js.map +0 -1
  221. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts.map +0 -1
  222. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +0 -197
  223. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +0 -1
  224. package/lib/cjs/imodel-components-react/color/Swatch.d.ts.map +0 -1
  225. package/lib/cjs/imodel-components-react/color/Swatch.js +0 -63
  226. package/lib/cjs/imodel-components-react/color/Swatch.js.map +0 -1
  227. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts.map +0 -1
  228. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +0 -24
  229. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js.map +0 -1
  230. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts.map +0 -1
  231. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +0 -150
  232. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +0 -1
  233. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts.map +0 -1
  234. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +0 -153
  235. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +0 -1
  236. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts.map +0 -1
  237. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +0 -94
  238. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +0 -1
  239. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +0 -1
  240. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +0 -265
  241. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +0 -1
  242. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts.map +0 -1
  243. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +0 -84
  244. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +0 -1
  245. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts.map +0 -1
  246. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +0 -160
  247. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +0 -1
  248. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts.map +0 -1
  249. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +0 -151
  250. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +0 -1
  251. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +0 -153
  252. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +0 -1
  253. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +0 -683
  254. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +0 -1
  255. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +0 -1
  256. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +0 -736
  257. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +0 -1
  258. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts.map +0 -1
  259. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +0 -112
  260. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +0 -1
  261. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts.map +0 -1
  262. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +0 -56
  263. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +0 -1
  264. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts.map +0 -1
  265. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +0 -94
  266. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +0 -1
  267. package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts.map +0 -1
  268. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +0 -115
  269. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +0 -1
  270. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts.map +0 -1
  271. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +0 -117
  272. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +0 -1
  273. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts.map +0 -1
  274. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +0 -137
  275. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +0 -1
  276. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts.map +0 -1
  277. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +0 -193
  278. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +0 -1
  279. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +0 -1
  280. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +0 -145
  281. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +0 -1
  282. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts.map +0 -1
  283. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +0 -104
  284. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +0 -1
  285. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts.map +0 -1
  286. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +0 -59
  287. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +0 -1
  288. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts.map +0 -1
  289. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +0 -87
  290. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +0 -1
  291. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts.map +0 -1
  292. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +0 -60
  293. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +0 -1
  294. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts.map +0 -1
  295. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +0 -68
  296. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +0 -1
  297. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts.map +0 -1
  298. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +0 -76
  299. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +0 -1
  300. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts.map +0 -1
  301. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +0 -59
  302. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +0 -1
  303. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts.map +0 -1
  304. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +0 -65
  305. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +0 -1
  306. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts.map +0 -1
  307. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +0 -106
  308. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +0 -1
  309. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts.map +0 -1
  310. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +0 -135
  311. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +0 -1
  312. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +0 -1
  313. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +0 -150
  314. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +0 -1
  315. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts.map +0 -1
  316. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +0 -64
  317. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +0 -1
  318. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts.map +0 -1
  319. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +0 -86
  320. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +0 -1
  321. package/lib/cjs/imodel-components-react/timeline/PlayButton.d.ts.map +0 -1
  322. package/lib/cjs/imodel-components-react/timeline/PlayButton.js +0 -50
  323. package/lib/cjs/imodel-components-react/timeline/PlayButton.js.map +0 -1
  324. package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts.map +0 -1
  325. package/lib/cjs/imodel-components-react/timeline/Scrubber.js +0 -185
  326. package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +0 -1
  327. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +0 -60
  328. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts.map +0 -1
  329. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +0 -358
  330. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +0 -1
  331. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts.map +0 -1
  332. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +0 -57
  333. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +0 -1
  334. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +0 -100
  335. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts.map +0 -1
  336. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +0 -286
  337. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +0 -1
  338. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts.map +0 -1
  339. package/lib/cjs/imodel-components-react/timeline/interfaces.js +0 -46
  340. package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +0 -1
  341. package/lib/cjs/imodel-components-react/useTranslation.d.ts.map +0 -1
  342. package/lib/cjs/imodel-components-react/useTranslation.js +0 -52
  343. package/lib/cjs/imodel-components-react/useTranslation.js.map +0 -1
  344. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts.map +0 -1
  345. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +0 -267
  346. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +0 -1
  347. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts.map +0 -1
  348. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +0 -119
  349. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +0 -1
  350. package/lib/cjs/imodel-components-react.d.ts +0 -80
  351. package/lib/cjs/imodel-components-react.d.ts.map +0 -1
  352. package/lib/cjs/imodel-components-react.js +0 -103
  353. package/lib/cjs/imodel-components-react.js.map +0 -1
  354. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +0 -29
  355. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts.map +0 -1
  356. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +0 -1
  357. package/lib/esm/imodel-components-react/UiIModelComponents.json +0 -150
  358. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +0 -36
  359. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts.map +0 -1
  360. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +0 -1
  361. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +0 -40
  362. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts.map +0 -1
  363. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +0 -1
  364. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +0 -26
  365. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts.map +0 -1
  366. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +0 -1
  367. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +0 -47
  368. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts.map +0 -1
  369. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +0 -1
  370. package/lib/esm/imodel-components-react/color/HueSlider.d.ts +0 -25
  371. package/lib/esm/imodel-components-react/color/HueSlider.d.ts.map +0 -1
  372. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +0 -23
  373. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts.map +0 -1
  374. package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +0 -1
  375. package/lib/esm/imodel-components-react/color/Swatch.d.ts +0 -25
  376. package/lib/esm/imodel-components-react/color/Swatch.d.ts.map +0 -1
  377. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +0 -7
  378. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts.map +0 -1
  379. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js.map +0 -1
  380. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +0 -42
  381. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts.map +0 -1
  382. package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +0 -1
  383. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +0 -44
  384. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts.map +0 -1
  385. package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +0 -1
  386. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +0 -26
  387. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts.map +0 -1
  388. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +0 -47
  389. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +0 -1
  390. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +0 -1
  391. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +0 -33
  392. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts.map +0 -1
  393. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +0 -59
  394. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts.map +0 -1
  395. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +0 -46
  396. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts.map +0 -1
  397. package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +0 -1
  398. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +0 -1
  399. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +0 -1
  400. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +0 -144
  401. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +0 -1
  402. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +0 -1
  403. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +0 -29
  404. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts.map +0 -1
  405. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js.map +0 -1
  406. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +0 -19
  407. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts.map +0 -1
  408. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js.map +0 -1
  409. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +0 -20
  410. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts.map +0 -1
  411. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +0 -1
  412. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +0 -19
  413. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts.map +0 -1
  414. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +0 -19
  415. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts.map +0 -1
  416. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +0 -21
  417. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts.map +0 -1
  418. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +0 -1
  419. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +0 -23
  420. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts.map +0 -1
  421. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +0 -1
  422. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +0 -24
  423. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +0 -1
  424. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +0 -1
  425. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +0 -18
  426. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts.map +0 -1
  427. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +0 -18
  428. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts.map +0 -1
  429. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +0 -1
  430. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +0 -17
  431. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts.map +0 -1
  432. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +0 -1
  433. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +0 -19
  434. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts.map +0 -1
  435. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js.map +0 -1
  436. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +0 -18
  437. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts.map +0 -1
  438. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js.map +0 -1
  439. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +0 -18
  440. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts.map +0 -1
  441. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +0 -1
  442. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +0 -18
  443. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts.map +0 -1
  444. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +0 -1
  445. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +0 -18
  446. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts.map +0 -1
  447. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +0 -1
  448. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +0 -18
  449. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts.map +0 -1
  450. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +0 -1
  451. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +0 -24
  452. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts.map +0 -1
  453. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +0 -1
  454. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +0 -53
  455. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +0 -1
  456. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +0 -32
  457. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts.map +0 -1
  458. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +0 -1
  459. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +0 -27
  460. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts.map +0 -1
  461. package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +0 -1
  462. package/lib/esm/imodel-components-react/timeline/PlayButton.d.ts +0 -12
  463. package/lib/esm/imodel-components-react/timeline/PlayButton.d.ts.map +0 -1
  464. package/lib/esm/imodel-components-react/timeline/PlayButton.js.map +0 -1
  465. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +0 -54
  466. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts.map +0 -1
  467. package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +0 -1
  468. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts.map +0 -1
  469. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +0 -1
  470. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +0 -16
  471. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts.map +0 -1
  472. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +0 -1
  473. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts.map +0 -1
  474. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +0 -1
  475. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +0 -146
  476. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts.map +0 -1
  477. package/lib/esm/imodel-components-react/timeline/interfaces.js.map +0 -1
  478. package/lib/esm/imodel-components-react/useTranslation.d.ts +0 -7
  479. package/lib/esm/imodel-components-react/useTranslation.d.ts.map +0 -1
  480. package/lib/esm/imodel-components-react/useTranslation.js.map +0 -1
  481. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +0 -43
  482. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts.map +0 -1
  483. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +0 -1
  484. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +0 -119
  485. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts.map +0 -1
  486. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +0 -1
  487. package/lib/esm/imodel-components-react.d.ts +0 -80
  488. package/lib/esm/imodel-components-react.d.ts.map +0 -1
  489. package/lib/esm/imodel-components-react.js +0 -85
  490. package/lib/esm/imodel-components-react.js.map +0 -1
  491. /package/lib/{cjs/imodel-components-react → imodel-components-react}/UiIModelComponents.json +0 -0
  492. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/AlphaSlider.d.ts +0 -0
  493. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/ColorPickerButton.d.ts +0 -0
  494. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/ColorPickerDialog.d.ts +0 -0
  495. /package/lib/{esm/imodel-components-react → imodel-components-react}/color/ColorPickerDialog.js +0 -0
  496. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/ColorPickerPopup.d.ts +0 -0
  497. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/HueSlider.d.ts +0 -0
  498. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/SaturationPicker.d.ts +0 -0
  499. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/Swatch.d.ts +0 -0
  500. /package/lib/{cjs/imodel-components-react → imodel-components-react}/color/getCSSColorFromDef.d.ts +0 -0
  501. /package/lib/{esm/imodel-components-react → imodel-components-react}/color/getCSSColorFromDef.js +0 -0
  502. /package/lib/{cjs/imodel-components-react → imodel-components-react}/editors/ColorEditor.d.ts +0 -0
  503. /package/lib/{cjs/imodel-components-react → imodel-components-react}/editors/WeightEditor.d.ts +0 -0
  504. /package/lib/{cjs/imodel-components-react → imodel-components-react}/inputs/QuantityInput.d.ts +0 -0
  505. /package/lib/{cjs/imodel-components-react → imodel-components-react}/inputs/QuantityNumberInput.d.ts +0 -0
  506. /package/lib/{esm/imodel-components-react → imodel-components-react}/inputs/QuantityNumberInput.js +0 -0
  507. /package/lib/{cjs/imodel-components-react → imodel-components-react}/lineweight/Swatch.d.ts +0 -0
  508. /package/lib/{cjs/imodel-components-react → imodel-components-react}/lineweight/WeightPickerButton.d.ts +0 -0
  509. /package/lib/{cjs/imodel-components-react → imodel-components-react}/navigationaids/Cube.d.ts +0 -0
  510. /package/lib/{esm/imodel-components-react → imodel-components-react}/navigationaids/Cube.js +0 -0
  511. /package/lib/{cjs/imodel-components-react → imodel-components-react}/navigationaids/DrawingNavigationAid.d.ts +0 -0
  512. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/FormatPanel.d.ts +0 -0
  513. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/FormatPrecision.d.ts +0 -0
  514. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/FormatSample.d.ts +0 -0
  515. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/FormatType.d.ts +0 -0
  516. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/FormatUnitLabel.d.ts +0 -0
  517. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/FormatUnits.d.ts +0 -0
  518. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/MiscFormatOptions.d.ts +0 -0
  519. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/QuantityFormatPanel.d.ts +0 -0
  520. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/DecimalPrecision.d.ts +0 -0
  521. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/DecimalSeparator.d.ts +0 -0
  522. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/FractionPrecision.d.ts +0 -0
  523. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/ScientificType.d.ts +0 -0
  524. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/SignOption.d.ts +0 -0
  525. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/StationSeparatorSelector.d.ts +0 -0
  526. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/StationSizeSelector.d.ts +0 -0
  527. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/ThousandsSelector.d.ts +0 -0
  528. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/ThousandsSeparator.d.ts +0 -0
  529. /package/lib/{cjs/imodel-components-react → imodel-components-react}/quantityformat/misc/UnitDescr.d.ts +0 -0
  530. /package/lib/{esm/imodel-components-react → imodel-components-react}/quantityformat/misc/UnitDescr.js +0 -0
  531. /package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/BaseSolarDataProvider.js +0 -0
  532. /package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/BaseTimelineDataProvider.js +0 -0
  533. /package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/InlineEdit.d.ts +0 -0
  534. /package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/InlineEdit.js +0 -0
  535. /package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/PlayButton.d.ts +0 -0
  536. /package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/SpeedTimeline.d.ts +0 -0
  537. /package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/SpeedTimeline.js +0 -0
  538. /package/lib/{cjs/imodel-components-react → imodel-components-react}/timeline/interfaces.d.ts +0 -0
  539. /package/lib/{esm/imodel-components-react → imodel-components-react}/timeline/interfaces.js +0 -0
  540. /package/lib/{cjs/imodel-components-react → imodel-components-react}/useTranslation.d.ts +0 -0
  541. /package/lib/{cjs/imodel-components-react → imodel-components-react}/viewport/ViewportComponent.d.ts +0 -0
@@ -0,0 +1,106 @@
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
+ @use "~@itwin/core-react/lib/core-react/base/base" as *;
6
+
7
+ .component-quantity-number-input-container {
8
+ display: flex;
9
+ align-items: center;
10
+ position: relative;
11
+ padding: 0;
12
+ margin: 0;
13
+ box-sizing: border-box;
14
+
15
+ .component-quantity-number-input-suffix {
16
+ padding-left: 0.25em;
17
+ }
18
+
19
+ .component-quantity-number-input-value-and-buttons-container {
20
+ position: relative;
21
+ padding: 0;
22
+ margin: 0;
23
+ box-sizing: border-box;
24
+
25
+ input {
26
+ margin: 0;
27
+ padding-right: 1.5em;
28
+ }
29
+
30
+ &.component-number-buttons-for-touch {
31
+ input {
32
+ padding-right: 3.5em;
33
+ }
34
+ }
35
+
36
+ .component-quantity-number-input-buttons-container {
37
+ position: absolute;
38
+ top: 0;
39
+ right: 0;
40
+ width: 20px;
41
+ height: 100%;
42
+ @include uicore-centered;
43
+ flex-direction: column;
44
+
45
+ .component-quantity-number-input-button {
46
+ font-size: 8px;
47
+ outline: none;
48
+ height: 100%;
49
+ width: 100%;
50
+ @include uicore-centered;
51
+
52
+ &:hover {
53
+ color: var(--iui-color-text-accent-hover);
54
+ transition-duration: 150ms;
55
+ }
56
+
57
+ &.component-quantity-number-input-button-up {
58
+ padding-top: 1px;
59
+ }
60
+
61
+ &.component-quantity-number-input-button-down {
62
+ padding-top: 1px;
63
+ }
64
+ }
65
+
66
+ &.component-number-buttons-for-touch {
67
+ width: 3.5em;
68
+ flex-direction: row-reverse;
69
+
70
+ .component-quantity-number-input-button {
71
+ font-size: 1em;
72
+
73
+ &:hover {
74
+ color: unset;
75
+ transition-duration: unset;
76
+ }
77
+
78
+ &.component-quantity-number-input-button-up {
79
+ padding-top: 2px;
80
+ }
81
+
82
+ &.component-quantity-number-input-button-down {
83
+ padding-top: 2px;
84
+ }
85
+ }
86
+ }
87
+ }
88
+ }
89
+
90
+ &.component-quantity-number-input-disabled {
91
+ .component-quantity-number-input-suffix {
92
+ -webkit-user-select: none;
93
+ user-select: none;
94
+ color: var(--iui-color-text-disabled);
95
+ }
96
+ .component-quantity-number-input-button-up {
97
+ pointer-events: none;
98
+ color: var(--iui-color-text-disabled);
99
+ }
100
+
101
+ .component-quantity-number-input-button-down {
102
+ pointer-events: none;
103
+ color: var(--iui-color-text-disabled);
104
+ }
105
+ }
106
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Swatch.d.ts","sourceRoot":"","sources":["../../../src/imodel-components-react/lineweight/Swatch.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,eAAe,CAAC;AAEvB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;GAEG;AACH,MAAM,WAAW,qBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAEnD,WAAW;IACb,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,KAAK,CAAC,aAAa,CAAC,qBAAqB,CAAC;gBAClE,KAAK,EAAE,qBAAqB;IAIxB,iBAAiB;IAEjB,MAAM;CA4DvB"}
@@ -8,7 +8,7 @@
8
8
  import "./Swatch.scss";
9
9
  import classnames from "classnames";
10
10
  import * as React from "react";
11
- import { getCSSColorFromDef } from "../color/getCSSColorFromDef";
11
+ import { getCSSColorFromDef } from "../color/getCSSColorFromDef.js";
12
12
  /** LineWeightSwatch Functional component
13
13
  * @public
14
14
  */
@@ -1 +1 @@
1
- {"version":3,"file":"Swatch.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/lineweight/Swatch.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAuBjE;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK,CAAC,aAAoC;IAC9E,YAAY,KAA4B;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,iBAAiB,KAAI,CAAC;IAEtB,MAAM;QACpB,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EAAE,6CAA6C;QACxD,QAAQ,EACR,QAAQ,EACR,GAAG,UAAU,CAAC,qBAAqB;UACpC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,WAAW,GAAwB,QAAQ;YAC/C,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;gBACnB,KAAK,EAAE,UAAU;aAClB;YACH,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;aACpB,CAAC;QAEN,MAAM,QAAQ,GAAwB,QAAQ;YAC5C,CAAC,CAAC;gBACE,MAAM,EAAE,GAAG,MAAM,IAAI;gBACrB,UAAU,EAAE,UAAU;aACvB;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,GAAG,MAAM,IAAI;aACtB,CAAC;QAEN,MAAM,WAAW,GAAG,CAAC,EAAoB,EAAE,EAAE;YAC3C,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CACxB,8BAA8B,EAC9B,SAAS,IAAI,YAAY,EACzB,QAAQ,IAAI,UAAU,EACtB,SAAS,CACV,CAAC;QAEF,OAAO,CACL,mCACM,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ;YAEjB,CAAC,SAAS,IAAI,kCAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAQ;YAC/C,6BAAK,KAAK,EAAE,QAAQ,GAAI,CACjB,CACV,CAAC;IACJ,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module LineWeight\n */\n\nimport \"./Swatch.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ColorDef } from \"@itwin/core-common\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { getCSSColorFromDef } from \"../color/getCSSColorFromDef\";\n\n/** Properties for the [[LineWeightSwatch]] React component\n * @public\n */\nexport interface LineWeightSwatchProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n // eslint-disable-next-line deprecation/deprecation\n CommonProps {\n /** color specification */\n weight: number;\n /** color specification */\n colorDef?: ColorDef;\n /** hide the weight label */\n hideLabel?: boolean;\n /** Disabled or not */\n disabled?: boolean;\n /** Readonly or not */\n readonly?: boolean;\n /** function to run when user selects a line weight swatch */\n onClick?: () => void;\n}\n\n/** LineWeightSwatch Functional component\n * @public\n */\nexport class LineWeightSwatch extends React.PureComponent<LineWeightSwatchProps> {\n constructor(props: LineWeightSwatchProps) {\n super(props);\n }\n\n public override componentDidMount() {}\n\n public override render() {\n const {\n onClick,\n colorDef,\n weight,\n hideLabel,\n className, // do not pass on color swatch specific props\n disabled,\n readonly,\n ...otherProps // pass-through props\n } = this.props;\n\n let rgbaString = \"\";\n\n if (colorDef) {\n rgbaString = getCSSColorFromDef(colorDef);\n }\n\n const buttonStyle: React.CSSProperties = colorDef\n ? {\n ...this.props.style,\n color: rgbaString,\n }\n : {\n ...this.props.style,\n };\n\n const svgStyle: React.CSSProperties = colorDef\n ? {\n height: `${weight}px`,\n background: rgbaString,\n }\n : {\n height: `${weight}px`,\n };\n\n const handleClick = (_e: React.MouseEvent) => {\n if (onClick) onClick();\n };\n\n const classes = classnames(\n \"components-lineweight-swatch\",\n hideLabel && \"hide-label\",\n readonly && \"readonly\",\n className\n );\n\n return (\n <button\n {...otherProps}\n style={buttonStyle}\n className={classes}\n onClick={handleClick}\n disabled={disabled}\n >\n {!hideLabel && <span>{weight.toFixed(0)}</span>}\n <div style={svgStyle} />\n </button>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"Swatch.js","sourceRoot":"","sources":["../../../src/imodel-components-react/lineweight/Swatch.tsx"],"names":[],"mappings":"AAAA;;;gGAGgG;AAChG;;GAEG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,UAAU,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAG/B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAuBpE;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK,CAAC,aAAoC;IAC9E,YAAY,KAA4B;QACtC,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;IAEe,iBAAiB,KAAI,CAAC;IAEtB,MAAM;QACpB,MAAM,EACJ,OAAO,EACP,QAAQ,EACR,MAAM,EACN,SAAS,EACT,SAAS,EAAE,6CAA6C;QACxD,QAAQ,EACR,QAAQ,EACR,GAAG,UAAU,CAAC,qBAAqB;UACpC,GAAG,IAAI,CAAC,KAAK,CAAC;QAEf,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,QAAQ,EAAE,CAAC;YACb,UAAU,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,WAAW,GAAwB,QAAQ;YAC/C,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;gBACnB,KAAK,EAAE,UAAU;aAClB;YACH,CAAC,CAAC;gBACE,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK;aACpB,CAAC;QAEN,MAAM,QAAQ,GAAwB,QAAQ;YAC5C,CAAC,CAAC;gBACE,MAAM,EAAE,GAAG,MAAM,IAAI;gBACrB,UAAU,EAAE,UAAU;aACvB;YACH,CAAC,CAAC;gBACE,MAAM,EAAE,GAAG,MAAM,IAAI;aACtB,CAAC;QAEN,MAAM,WAAW,GAAG,CAAC,EAAoB,EAAE,EAAE;YAC3C,IAAI,OAAO;gBAAE,OAAO,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,UAAU,CACxB,8BAA8B,EAC9B,SAAS,IAAI,YAAY,EACzB,QAAQ,IAAI,UAAU,EACtB,SAAS,CACV,CAAC;QAEF,OAAO,CACL,mCACM,UAAU,EACd,KAAK,EAAE,WAAW,EAClB,SAAS,EAAE,OAAO,EAClB,OAAO,EAAE,WAAW,EACpB,QAAQ,EAAE,QAAQ;YAEjB,CAAC,SAAS,IAAI,kCAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAQ;YAC/C,6BAAK,KAAK,EAAE,QAAQ,GAAI,CACjB,CACV,CAAC;IACJ,CAAC;CACF","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module LineWeight\n */\n\nimport \"./Swatch.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { ColorDef } from \"@itwin/core-common\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { getCSSColorFromDef } from \"../color/getCSSColorFromDef.js\";\n\n/** Properties for the [[LineWeightSwatch]] React component\n * @public\n */\nexport interface LineWeightSwatchProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n // eslint-disable-next-line deprecation/deprecation\n CommonProps {\n /** color specification */\n weight: number;\n /** color specification */\n colorDef?: ColorDef;\n /** hide the weight label */\n hideLabel?: boolean;\n /** Disabled or not */\n disabled?: boolean;\n /** Readonly or not */\n readonly?: boolean;\n /** function to run when user selects a line weight swatch */\n onClick?: () => void;\n}\n\n/** LineWeightSwatch Functional component\n * @public\n */\nexport class LineWeightSwatch extends React.PureComponent<LineWeightSwatchProps> {\n constructor(props: LineWeightSwatchProps) {\n super(props);\n }\n\n public override componentDidMount() {}\n\n public override render() {\n const {\n onClick,\n colorDef,\n weight,\n hideLabel,\n className, // do not pass on color swatch specific props\n disabled,\n readonly,\n ...otherProps // pass-through props\n } = this.props;\n\n let rgbaString = \"\";\n\n if (colorDef) {\n rgbaString = getCSSColorFromDef(colorDef);\n }\n\n const buttonStyle: React.CSSProperties = colorDef\n ? {\n ...this.props.style,\n color: rgbaString,\n }\n : {\n ...this.props.style,\n };\n\n const svgStyle: React.CSSProperties = colorDef\n ? {\n height: `${weight}px`,\n background: rgbaString,\n }\n : {\n height: `${weight}px`,\n };\n\n const handleClick = (_e: React.MouseEvent) => {\n if (onClick) onClick();\n };\n\n const classes = classnames(\n \"components-lineweight-swatch\",\n hideLabel && \"hide-label\",\n readonly && \"readonly\",\n className\n );\n\n return (\n <button\n {...otherProps}\n style={buttonStyle}\n className={classes}\n onClick={handleClick}\n disabled={disabled}\n >\n {!hideLabel && <span>{weight.toFixed(0)}</span>}\n <div style={svgStyle} />\n </button>\n );\n }\n}\n"]}
@@ -0,0 +1,46 @@
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
+ .components-lineweight-swatch {
6
+ font-size: var(--iui-font-size-1);
7
+ color: var(--iui-color-text);
8
+ border: none;
9
+ background: inherit;
10
+ width: 100%;
11
+ display: flex;
12
+ flex-direction: row;
13
+ align-items: center;
14
+ padding: 3px 15px 3px 0;
15
+ min-height: 22px;
16
+ box-sizing: border-box;
17
+
18
+ // remove inner focus ring that is specific to Firefox.
19
+ &::-moz-focus-inner {
20
+ border: 0px;
21
+ }
22
+
23
+ &:focus {
24
+ outline: 1px solid var(--iui-color-background-accent-muted);
25
+ }
26
+
27
+ &[disabled] {
28
+ opacity: 0.2;
29
+ cursor: default;
30
+ }
31
+
32
+ > span {
33
+ width: 1.5em;
34
+ text-align: right;
35
+ }
36
+
37
+ > div {
38
+ flex: 1;
39
+ background: var(--iui-color-text);
40
+ margin-left: 15px;
41
+ }
42
+ }
43
+
44
+ .components-lineweight-swatch.hide-label > span {
45
+ display: none;
46
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WeightPickerButton.d.ts","sourceRoot":"","sources":["../../../src/imodel-components-react/lineweight/WeightPickerButton.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,2BAA2B,CAAC;AAEnC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAEnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAMrD;;GAEG;AACH,MAAM,WAAW,iBACf,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAEnD,WAAW;IACb,oBAAoB;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sDAAsD;IACtD,gBAAgB,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sBAAsB;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,gBAAgB;AAChB,UAAU,iBAAiB;IACzB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,EAAE,cAAc,GAAG,IAAI,CAAC;CACtC;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,KAAK,CAAC,aAAa,CACzD,iBAAiB,EACjB,iBAAiB,CAClB;IACC,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,iBAAiB,CAA+B;IACxD,OAAO,CAAC,YAAY,CAAwC;gBAEhD,KAAK,EAAE,iBAAiB;IAM7B,QAAQ,IAAI,IAAI;IAIvB,OAAc,YAAY;;MAExB;IAEF,OAAO,CAAC,YAAY,CAGlB;IAEF,OAAO,CAAC,cAAc,CAAY;IAElC,OAAO,CAAC,WAAW,CAEjB;IAEF,OAAO,CAAC,mBAAmB,CAGzB;IAEc,iBAAiB;IAIjC,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,gBAAgB;IAmCxB,OAAO,CAAC,cAAc,CA4BpB;IAEF,OAAO,CAAC,mBAAmB,CAEzB;IAEF,OAAO,CAAC,WAAW;IAiCH,MAAM;CAgDvB"}
@@ -11,7 +11,7 @@ import * as React from "react";
11
11
  import { Key } from "ts-key-enum";
12
12
  import { RelativePosition } from "@itwin/appui-abstract";
13
13
  import { ElementResizeObserver, Popup } from "@itwin/core-react";
14
- import { LineWeightSwatch } from "./Swatch";
14
+ import { LineWeightSwatch } from "./Swatch.js";
15
15
  /** WeightPickerButton component
16
16
  * @public
17
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"WeightPickerButton.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/lineweight/WeightPickerButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module LineWeight\n */\n\nimport \"./WeightPickerButton.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { ColorDef } from \"@itwin/core-common\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { ElementResizeObserver, Popup } from \"@itwin/core-react\";\nimport { LineWeightSwatch } from \"./Swatch\";\n\n// cSpell:ignore weightpicker lineweight\n\n/** Properties for the [[WeightPickerButton]] React component\n * @public\n */\nexport interface WeightPickerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n // eslint-disable-next-line deprecation/deprecation\n CommonProps {\n /** active weight */\n activeWeight: number;\n /** available weights */\n weights: number[];\n /** color specification */\n colorDef?: ColorDef;\n /** function to run when user selects weight swatch */\n onLineWeightPick?: ((weight: number) => void) | undefined;\n /** Disabled or not */\n disabled?: boolean;\n /** Readonly or not */\n readonly?: boolean;\n /** hide the weight label */\n hideLabel?: boolean;\n /** Title to show at top of DropDown */\n dropDownTitle?: string;\n}\n\n/** @internal */\ninterface WeightPickerState {\n showPopup: boolean;\n targetElement: HTMLDivElement | null;\n}\n\n/** WeightPickerButton component\n * @public\n */\nexport class WeightPickerButton extends React.PureComponent<\n WeightPickerProps,\n WeightPickerState\n> {\n private _target = React.createRef<HTMLDivElement>();\n private _weightsContainer: HTMLDivElement | null = null;\n private _focusTarget = React.createRef<HTMLButtonElement>(); // weight button that should receive focus after popup is open\n\n constructor(props: WeightPickerProps) {\n super(props);\n\n this.state = { showPopup: false, targetElement: null };\n }\n\n public setFocus(): void {\n this._focusTarget.current && this._focusTarget.current.focus();\n }\n\n public static defaultProps = {\n weights: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n };\n\n private _togglePopup = () => {\n if (this.props.readonly) return;\n this.setState((prevState) => ({ showPopup: !prevState.showPopup }));\n };\n\n private _onPopupOpened = () => {};\n\n private _closePopup = () => {\n this.setState((_prevState) => ({ showPopup: false }));\n };\n\n private _handleWeightPicked = (weight: number) => {\n this._closePopup();\n this.props.onLineWeightPick && this.props.onLineWeightPick(weight);\n };\n\n public override componentDidMount() {\n this.setState({ targetElement: this._target.current });\n }\n\n private buildIdForWeight(weight: number): string {\n return `ui-core-lineweight-${weight}`;\n }\n\n private moveFocusInPopup(moveUp: boolean, event: React.KeyboardEvent<any>) {\n const activeElement = document.activeElement;\n if (\n this._weightsContainer &&\n activeElement &&\n activeElement.tagName === \"BUTTON\"\n ) {\n const values = activeElement.id.split(\"-\");\n if (values.length === 4 && values[2] === \"lineweight\") {\n const weight = parseInt(values[3], 10);\n const foundIndex = this.props.weights.findIndex(\n (val) => val === weight\n );\n if (foundIndex < 0) return;\n\n const nextWeight = moveUp\n ? foundIndex <= 0\n ? this.props.weights[this.props.weights.length - 1]\n : this.props.weights[foundIndex - 1]\n : foundIndex < this.props.weights.length - 1\n ? this.props.weights[foundIndex + 1]\n : this.props.weights[0];\n\n const focusLocation = this._weightsContainer.querySelector(\n `#${this.buildIdForWeight(nextWeight)}`\n ) as HTMLButtonElement;\n if (focusLocation) {\n focusLocation.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n\n private _handleKeyDown = (event: React.KeyboardEvent<any>) => {\n if (event.key === Key.Enter.valueOf()) {\n event.preventDefault();\n event.stopPropagation();\n const weightButton = document.activeElement as HTMLElement;\n if (weightButton.tagName === \"BUTTON\") {\n try {\n const values = weightButton.id.split(\"-\");\n if (values.length) {\n const weight = parseInt(values[values.length - 1], 10);\n if (!isNaN(weight)) {\n if (this.props.onLineWeightPick)\n this.props.onLineWeightPick(weight);\n }\n }\n } catch {}\n }\n this._closePopup();\n } else {\n switch (event.key) {\n case Key.ArrowDown.valueOf():\n this.moveFocusInPopup(false, event);\n break;\n case Key.ArrowUp.valueOf():\n this.moveFocusInPopup(true, event);\n break;\n }\n }\n };\n\n private _setWeightContainer = (el: any) => {\n this._weightsContainer = el;\n };\n\n private renderPopup(title: string | undefined) {\n return (\n <div className=\"components-weightpicker-popup-container\">\n {title && <h4>{title}</h4>}\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <ul\n data-testid=\"components-weightpicker-popup-lines\"\n className=\"components-weightpicker-popup-lines\"\n onKeyDown={this._handleKeyDown}\n ref={this._setWeightContainer}\n >\n {this.props.weights.map((weight, index) => {\n const classNames = classnames(\n \"components-weightpicker-swatch\",\n weight === this.props.activeWeight && \"active\"\n );\n return (\n <LineWeightSwatch\n className={classNames}\n key={index}\n colorDef={this.props.colorDef}\n id={this.buildIdForWeight(weight)}\n hideLabel={this.props.hideLabel}\n onClick={this._handleWeightPicked.bind(this, weight)}\n weight={weight}\n />\n );\n })}\n </ul>\n </div>\n );\n }\n\n public override render() {\n const buttonClassNames = classnames(\n \"components-weightpicker-button\",\n this.props.className\n );\n\n return (\n <>\n <div ref={this._target} style={this.props.style}>\n <LineWeightSwatch\n data-testid=\"components-weightpicker-button\"\n className={buttonClassNames}\n weight={this.props.activeWeight}\n colorDef={this.props.colorDef}\n readonly={this.props.readonly}\n disabled={this.props.disabled}\n hideLabel={this.props.hideLabel}\n aria-haspopup=\"listbox\"\n aria-expanded={this.state.showPopup}\n onClick={this._togglePopup}\n />\n </div>\n {/* eslint-disable-next-line deprecation/deprecation */}\n <ElementResizeObserver\n watchedElement={this.state.targetElement}\n render={({ width }) => (\n // eslint-disable-next-line deprecation/deprecation\n <Popup\n className=\"components-weightpicker-popup\"\n style={{ width: `${width}px` }}\n isOpen={this.state.showPopup}\n position={RelativePosition.Bottom}\n offset={0}\n showShadow={false}\n onClose={this._closePopup}\n onOpen={this._onPopupOpened}\n focusTarget={`#${this.buildIdForWeight(this.props.activeWeight)}`}\n moveFocus={true}\n target={this.state.targetElement}\n closeOnNestedPopupOutsideClick\n >\n {this.renderPopup(this.props.dropDownTitle)}\n </Popup>\n )}\n />\n </>\n );\n }\n}\n"]}
1
+ {"version":3,"file":"WeightPickerButton.js","sourceRoot":"","sources":["../../../src/imodel-components-react/lineweight/WeightPickerButton.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module LineWeight\n */\n\nimport \"./WeightPickerButton.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Key } from \"ts-key-enum\";\nimport type { ColorDef } from \"@itwin/core-common\";\nimport { RelativePosition } from \"@itwin/appui-abstract\";\nimport type { CommonProps } from \"@itwin/core-react\";\nimport { ElementResizeObserver, Popup } from \"@itwin/core-react\";\nimport { LineWeightSwatch } from \"./Swatch.js\";\n\n// cSpell:ignore weightpicker lineweight\n\n/** Properties for the [[WeightPickerButton]] React component\n * @public\n */\nexport interface WeightPickerProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n // eslint-disable-next-line deprecation/deprecation\n CommonProps {\n /** active weight */\n activeWeight: number;\n /** available weights */\n weights: number[];\n /** color specification */\n colorDef?: ColorDef;\n /** function to run when user selects weight swatch */\n onLineWeightPick?: ((weight: number) => void) | undefined;\n /** Disabled or not */\n disabled?: boolean;\n /** Readonly or not */\n readonly?: boolean;\n /** hide the weight label */\n hideLabel?: boolean;\n /** Title to show at top of DropDown */\n dropDownTitle?: string;\n}\n\n/** @internal */\ninterface WeightPickerState {\n showPopup: boolean;\n targetElement: HTMLDivElement | null;\n}\n\n/** WeightPickerButton component\n * @public\n */\nexport class WeightPickerButton extends React.PureComponent<\n WeightPickerProps,\n WeightPickerState\n> {\n private _target = React.createRef<HTMLDivElement>();\n private _weightsContainer: HTMLDivElement | null = null;\n private _focusTarget = React.createRef<HTMLButtonElement>(); // weight button that should receive focus after popup is open\n\n constructor(props: WeightPickerProps) {\n super(props);\n\n this.state = { showPopup: false, targetElement: null };\n }\n\n public setFocus(): void {\n this._focusTarget.current && this._focusTarget.current.focus();\n }\n\n public static defaultProps = {\n weights: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],\n };\n\n private _togglePopup = () => {\n if (this.props.readonly) return;\n this.setState((prevState) => ({ showPopup: !prevState.showPopup }));\n };\n\n private _onPopupOpened = () => {};\n\n private _closePopup = () => {\n this.setState((_prevState) => ({ showPopup: false }));\n };\n\n private _handleWeightPicked = (weight: number) => {\n this._closePopup();\n this.props.onLineWeightPick && this.props.onLineWeightPick(weight);\n };\n\n public override componentDidMount() {\n this.setState({ targetElement: this._target.current });\n }\n\n private buildIdForWeight(weight: number): string {\n return `ui-core-lineweight-${weight}`;\n }\n\n private moveFocusInPopup(moveUp: boolean, event: React.KeyboardEvent<any>) {\n const activeElement = document.activeElement;\n if (\n this._weightsContainer &&\n activeElement &&\n activeElement.tagName === \"BUTTON\"\n ) {\n const values = activeElement.id.split(\"-\");\n if (values.length === 4 && values[2] === \"lineweight\") {\n const weight = parseInt(values[3], 10);\n const foundIndex = this.props.weights.findIndex(\n (val) => val === weight\n );\n if (foundIndex < 0) return;\n\n const nextWeight = moveUp\n ? foundIndex <= 0\n ? this.props.weights[this.props.weights.length - 1]\n : this.props.weights[foundIndex - 1]\n : foundIndex < this.props.weights.length - 1\n ? this.props.weights[foundIndex + 1]\n : this.props.weights[0];\n\n const focusLocation = this._weightsContainer.querySelector(\n `#${this.buildIdForWeight(nextWeight)}`\n ) as HTMLButtonElement;\n if (focusLocation) {\n focusLocation.focus();\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n }\n\n private _handleKeyDown = (event: React.KeyboardEvent<any>) => {\n if (event.key === Key.Enter.valueOf()) {\n event.preventDefault();\n event.stopPropagation();\n const weightButton = document.activeElement as HTMLElement;\n if (weightButton.tagName === \"BUTTON\") {\n try {\n const values = weightButton.id.split(\"-\");\n if (values.length) {\n const weight = parseInt(values[values.length - 1], 10);\n if (!isNaN(weight)) {\n if (this.props.onLineWeightPick)\n this.props.onLineWeightPick(weight);\n }\n }\n } catch {}\n }\n this._closePopup();\n } else {\n switch (event.key) {\n case Key.ArrowDown.valueOf():\n this.moveFocusInPopup(false, event);\n break;\n case Key.ArrowUp.valueOf():\n this.moveFocusInPopup(true, event);\n break;\n }\n }\n };\n\n private _setWeightContainer = (el: any) => {\n this._weightsContainer = el;\n };\n\n private renderPopup(title: string | undefined) {\n return (\n <div className=\"components-weightpicker-popup-container\">\n {title && <h4>{title}</h4>}\n {/* eslint-disable-next-line jsx-a11y/no-noninteractive-element-interactions */}\n <ul\n data-testid=\"components-weightpicker-popup-lines\"\n className=\"components-weightpicker-popup-lines\"\n onKeyDown={this._handleKeyDown}\n ref={this._setWeightContainer}\n >\n {this.props.weights.map((weight, index) => {\n const classNames = classnames(\n \"components-weightpicker-swatch\",\n weight === this.props.activeWeight && \"active\"\n );\n return (\n <LineWeightSwatch\n className={classNames}\n key={index}\n colorDef={this.props.colorDef}\n id={this.buildIdForWeight(weight)}\n hideLabel={this.props.hideLabel}\n onClick={this._handleWeightPicked.bind(this, weight)}\n weight={weight}\n />\n );\n })}\n </ul>\n </div>\n );\n }\n\n public override render() {\n const buttonClassNames = classnames(\n \"components-weightpicker-button\",\n this.props.className\n );\n\n return (\n <>\n <div ref={this._target} style={this.props.style}>\n <LineWeightSwatch\n data-testid=\"components-weightpicker-button\"\n className={buttonClassNames}\n weight={this.props.activeWeight}\n colorDef={this.props.colorDef}\n readonly={this.props.readonly}\n disabled={this.props.disabled}\n hideLabel={this.props.hideLabel}\n aria-haspopup=\"listbox\"\n aria-expanded={this.state.showPopup}\n onClick={this._togglePopup}\n />\n </div>\n {/* eslint-disable-next-line deprecation/deprecation */}\n <ElementResizeObserver\n watchedElement={this.state.targetElement}\n render={({ width }) => (\n // eslint-disable-next-line deprecation/deprecation\n <Popup\n className=\"components-weightpicker-popup\"\n style={{ width: `${width}px` }}\n isOpen={this.state.showPopup}\n position={RelativePosition.Bottom}\n offset={0}\n showShadow={false}\n onClose={this._closePopup}\n onOpen={this._onPopupOpened}\n focusTarget={`#${this.buildIdForWeight(this.props.activeWeight)}`}\n moveFocus={true}\n target={this.state.targetElement}\n closeOnNestedPopupOutsideClick\n >\n {this.renderPopup(this.props.dropDownTitle)}\n </Popup>\n )}\n />\n </>\n );\n }\n}\n"]}
@@ -0,0 +1,50 @@
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
+ .components-weightpicker-button {
6
+ color: var(--iui-color-text);
7
+ background: var(--iui-color-background);
8
+ border: 1px solid var(--iui-color-border-foreground);
9
+ border-radius: var(--iui-border-radius-1);
10
+ min-width: 100px;
11
+
12
+ &:not(.readonly):not([disabled]) {
13
+ cursor: pointer;
14
+ }
15
+
16
+ &:active,
17
+ &:focus {
18
+ box-shadow: hsl(var(--iui-color-accent-hsl) / var(--iui-opacity-4)) 0px 0px
19
+ 0px 2px;
20
+ }
21
+ }
22
+
23
+ .components-weightpicker-popup {
24
+ &.core-popup {
25
+ background: var(--iui-color-background);
26
+ border: 1px solid var(--iui-color-border-foreground);
27
+ }
28
+
29
+ .components-weightpicker-popup-container {
30
+ color: var(--iui-color-text);
31
+ background: var(--iui-color-background);
32
+ min-width: 60px;
33
+ padding: 0 4px;
34
+ border-radius: var(--iui-border-radius-1);
35
+
36
+ > ul {
37
+ padding: 4px 0;
38
+ list-style: none;
39
+ margin: 0.25rem 0;
40
+
41
+ > .components-weightpicker-swatch:hover {
42
+ background: var(--iui-color-background-hover);
43
+ }
44
+
45
+ > .components-weightpicker-swatch.active {
46
+ background: var(--iui-color-background-accent-muted);
47
+ }
48
+ }
49
+ }
50
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cube.d.ts","sourceRoot":"","sources":["../../../src/imodel-components-react/navigationaids/Cube.tsx"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,aAAa,CAAC;AAErB,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;GAEG;AACH,oBAAY,IAAI;IACd,IAAI,KAAK;IACT,IAAI,SAAS;IACb,KAAK,UAAU;IACf,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,GAAG,QAAQ;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,SACf,SAAQ,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC,EAE7C,WAAW;IACb,KAAK,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC,SAAS,CAAA;KAAE,CAAC;IAC3C,SAAS,EAAE,QAAQ,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,IAAK,SAAQ,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;IACtC,MAAM,IAAI,KAAK,CAAC,SAAS;CA0B1C;AAED,gBAAgB;AAChB,MAAM,WAAW,aAAc,SAAQ,KAAK,CAAC,iBAAiB,CAAC,cAAc,CAAC;IAC5E,SAAS,EAAE,QAAQ,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,gBAAgB;AAChB,qBAAa,QAAS,SAAQ,KAAK,CAAC,SAAS,CAAC,aAAa,CAAC;IAC1D,OAAO,CAAC,UAAU,CAAa;IACf,MAAM,IAAI,KAAK,CAAC,SAAS;IAoFzC,OAAO,CAAC,uBAAuB;CAOhC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Cube.js","sourceRoot":"","sources":["../../../src/imodel-components-react/navigationaids/Cube.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Cube\n */\n\nimport \"./Cube.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport { Matrix3d } from \"@itwin/core-geometry\";\nimport type { CommonProps } from \"@itwin/core-react\";\n\n/** Cube Face enumeration\n * @public\n */\nexport enum Face {\n None = \"\",\n Left = \"left\",\n Right = \"right\",\n Back = \"back\",\n Front = \"front\",\n Bottom = \"bottom\",\n Top = \"top\",\n}\n\n/** Properties for the [[Cube]] React component\n * @public\n */\nexport interface CubeProps\n extends React.AllHTMLAttributes<HTMLDivElement>,\n // eslint-disable-next-line deprecation/deprecation\n CommonProps {\n faces?: { [key: string]: React.ReactNode };\n rotMatrix: Matrix3d;\n}\n\n/** Cube React component used by the 3d Cube Navigation Aid\n * @public\n */\nexport class Cube extends React.PureComponent<CubeProps> {\n public override render(): React.ReactNode {\n const { faces, rotMatrix, className, ...props } = this.props;\n return (\n <div\n className={classnames(\"components-cube-css3d\", className)}\n data-testid=\"components-cube\"\n {...props}\n >\n {[\n Face.Front,\n Face.Back,\n Face.Right,\n Face.Left,\n Face.Top,\n Face.Bottom,\n ].map((face: Face) => {\n const content = faces && faces[face];\n return (\n <CubeFace key={face} rotMatrix={rotMatrix} face={face}>\n {content}\n </CubeFace>\n );\n })}\n </div>\n );\n }\n}\n\n/** @internal */\nexport interface CubeFaceProps extends React.AllHTMLAttributes<HTMLDivElement> {\n rotMatrix: Matrix3d;\n face: Face;\n}\n\n/** @internal */\nexport class CubeFace extends React.Component<CubeFaceProps> {\n private _faceWidth: number = 0;\n public override render(): React.ReactNode {\n const { rotMatrix, face, style, children, ...props } = this.props;\n if (face === Face.None) return null;\n const classes = classnames(\"face\", this.getCSSClassNameFromFace(face));\n // orient face (flip because of y axis reversal, rotate as necessary)\n let reorient: Matrix3d = Matrix3d.createRowValues(\n 1,\n 0,\n 0,\n 0,\n -1,\n 0,\n 0,\n 0,\n 1\n );\n // Position face correctly (applies to rotation, as well as translation)\n let reposition: Matrix3d = Matrix3d.createIdentity();\n switch (this.props.face) {\n case Face.Bottom:\n reposition = Matrix3d.createRowValues(-1, 0, 0, 0, 1, 0, 0, 0, -1);\n reorient = Matrix3d.createRowValues(-1, 0, 0, 0, 1, 0, 0, 0, 1);\n break;\n case Face.Right:\n reposition = Matrix3d.createRowValues(0, 0, 1, 0, 1, 0, -1, 0, 0);\n reorient = Matrix3d.createRowValues(0, 1, 0, 1, 0, 0, 0, 0, 1);\n break;\n case Face.Left:\n reposition = Matrix3d.createRowValues(0, 0, -1, 0, 1, 0, 1, 0, 0);\n reorient = Matrix3d.createRowValues(0, -1, 0, -1, 0, 0, 0, 0, 1);\n break;\n case Face.Back:\n reposition = Matrix3d.createRowValues(1, 0, 0, 0, 0, 1, 0, -1, 0);\n reorient = Matrix3d.createRowValues(-1, 0, 0, 0, 1, 0, 0, 0, 1);\n break;\n case Face.Front:\n reposition = Matrix3d.createRowValues(1, 0, 0, 0, 0, -1, 0, 1, 0);\n reorient = Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, 1);\n break;\n }\n const repositioned = rotMatrix.multiplyMatrixMatrix(reposition);\n const vect = repositioned.multiplyXYZ(0, 0, this._faceWidth);\n const m = repositioned.multiplyMatrixMatrix(reorient);\n const list = [\n m.at(0, 0),\n -m.at(1, 0),\n m.at(2, 0),\n 0,\n m.at(0, 1),\n -m.at(1, 1),\n m.at(2, 1),\n 0,\n m.at(0, 2),\n -m.at(1, 2),\n m.at(2, 2),\n 0,\n vect.at(0),\n -vect.at(1),\n vect.at(2) -\n this._faceWidth /* move back faceWidth so face is on screen level */,\n 1,\n ];\n const transform = `matrix3d(${list.join(\", \")})`;\n const s: React.CSSProperties = {\n transform,\n WebkitTransform: transform,\n ...style,\n };\n\n return (\n <div\n style={s}\n data-testid={`components-cube-face-${face}`}\n className={classes}\n ref={(e) => {\n this._faceWidth = (e && e.clientWidth / 2) || 0;\n }}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n private getCSSClassNameFromFace(face: Face): string {\n let className = \"\";\n\n if (face !== Face.None) className = `cube-${face}`;\n\n return className;\n }\n}\n"]}
@@ -0,0 +1,19 @@
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
+ $cube-width: 128px;
6
+ $cube-side-width: 12px;
7
+
8
+ .components-cube-css3d {
9
+ width: $cube-width;
10
+ height: $cube-width;
11
+ perspective: 300px;
12
+ transform-style: preserve-3d;
13
+ .face {
14
+ width: 100%;
15
+ height: 100%;
16
+ position: absolute;
17
+ backface-visibility: inherit;
18
+ }
19
+ }
@@ -6,7 +6,7 @@ import * as React from "react";
6
6
  import { Matrix3d, Vector3d } from "@itwin/core-geometry";
7
7
  import type { IModelConnection, Viewport } from "@itwin/core-frontend";
8
8
  import type { CommonProps } from "@itwin/core-react";
9
- import { Face } from "./Cube";
9
+ import { Face } from "./Cube.js";
10
10
  /** @public */
11
11
  export declare enum CubeNavigationHitBoxX {
12
12
  None = 0,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeNavigationAid.d.ts","sourceRoot":"","sources":["../../../src/imodel-components-react/navigationaids/CubeNavigationAid.tsx"],"names":[],"mappings":"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"}
@@ -11,9 +11,9 @@ import * as React from "react";
11
11
  import { Angle, AxisIndex, AxisOrder, Geometry, Matrix3d, Point2d, Vector2d, Vector3d, } from "@itwin/core-geometry";
12
12
  import { IModelApp } from "@itwin/core-frontend";
13
13
  import { Icon } from "@itwin/core-react";
14
- import { UiIModelComponents } from "../UiIModelComponents";
15
- import { ViewportComponentEvents } from "../viewport/ViewportComponentEvents";
16
- import { Cube, Face } from "./Cube";
14
+ import { UiIModelComponents } from "../UiIModelComponents.js";
15
+ import { ViewportComponentEvents } from "../viewport/ViewportComponentEvents.js";
16
+ import { Cube, Face } from "./Cube.js";
17
17
  import { SvgCaretDown, SvgCaretLeft, SvgCaretRight, SvgCaretUp, } from "@itwin/itwinui-icons-react";
18
18
  /** @public */
19
19
  export var CubeNavigationHitBoxX;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CubeNavigationAid.js","sourceRoot":"","sources":["../../../src/imodel-components-react/navigationaids/CubeNavigationAid.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n * See LICENSE.md in the project root for license terms and full copyright notice.\n *--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NavigationAids\n */\n\nimport \"./CubeNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport type { XYAndZ } from \"@itwin/core-geometry\";\nimport {\n Angle,\n AxisIndex,\n AxisOrder,\n Geometry,\n Matrix3d,\n Point2d,\n Vector2d,\n Vector3d,\n} from \"@itwin/core-geometry\";\nimport type { IModelConnection, Viewport } from \"@itwin/core-frontend\";\nimport { IModelApp } from \"@itwin/core-frontend\";\nimport type { CommonProps, IconSpec } from \"@itwin/core-react\";\nimport type { ListenerType } from \"@itwin/core-react/internal\";\nimport { Icon } from \"@itwin/core-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents.js\";\nimport { ViewportComponentEvents } from \"../viewport/ViewportComponentEvents.js\";\nimport { Cube, Face } from \"./Cube.js\";\nimport {\n SvgCaretDown,\n SvgCaretLeft,\n SvgCaretRight,\n SvgCaretUp,\n} from \"@itwin/itwinui-icons-react\";\n\n/** @public */\nexport enum CubeNavigationHitBoxX {\n None = 0,\n Right = 1,\n Left = -1,\n}\n\n/** @public */\nexport enum CubeNavigationHitBoxY {\n None = 0,\n Back = 1,\n Front = -1,\n}\n\n/** @public */\nexport enum CubeNavigationHitBoxZ {\n None = 0,\n Top = 1,\n Bottom = -1,\n}\n\ninterface CubeNavigationRotationMap {\n up: Face;\n down: Face;\n left: Face;\n right: Face;\n}\n\nconst cubeNavigationFaceLocs: { [key: string]: Vector3d } = {\n [Face.Left]: Vector3d.create(\n CubeNavigationHitBoxX.Left,\n CubeNavigationHitBoxY.None,\n CubeNavigationHitBoxZ.None\n ),\n [Face.Right]: Vector3d.create(\n CubeNavigationHitBoxX.Right,\n CubeNavigationHitBoxY.None,\n CubeNavigationHitBoxZ.None\n ),\n [Face.Back]: Vector3d.create(\n CubeNavigationHitBoxX.None,\n CubeNavigationHitBoxY.Back,\n CubeNavigationHitBoxZ.None\n ),\n [Face.Front]: Vector3d.create(\n CubeNavigationHitBoxX.None,\n CubeNavigationHitBoxY.Front,\n CubeNavigationHitBoxZ.None\n ),\n [Face.Bottom]: Vector3d.create(\n CubeNavigationHitBoxX.None,\n CubeNavigationHitBoxY.None,\n CubeNavigationHitBoxZ.Bottom\n ),\n [Face.Top]: Vector3d.create(\n CubeNavigationHitBoxX.None,\n CubeNavigationHitBoxY.None,\n CubeNavigationHitBoxZ.Top\n ),\n};\n\nconst cubeNavigationFaceRotations: { [key: string]: Matrix3d } = {\n [Face.Left]: Matrix3d.createRowValues(0, -1, 0, 0, 0, 1, -1, 0, 0),\n [Face.Right]: Matrix3d.createRowValues(0, 1, 0, 0, 0, 1, 1, 0, 0),\n [Face.Back]: Matrix3d.createRowValues(-1, 0, 0, 0, 0, 1, 0, 1, 0),\n [Face.Front]: Matrix3d.createRowValues(1, 0, 0, 0, 0, 1, 0, -1, 0),\n [Face.Bottom]: Matrix3d.createRowValues(1, 0, 0, 0, -1, 0, 0, 0, -1),\n [Face.Top]: Matrix3d.createRowValues(1, 0, 0, 0, 1, 0, 0, 0, 1),\n};\n\n// data relating Up/Down/Left/Right directions relative to every surface\nconst cubeNavigationRoutes: { [key: string]: CubeNavigationRotationMap } = {\n [Face.Front]: {\n up: Face.Top,\n down: Face.Bottom,\n left: Face.Left,\n right: Face.Right,\n },\n [Face.Back]: {\n up: Face.Top,\n down: Face.Bottom,\n left: Face.Right,\n right: Face.Left,\n },\n [Face.Top]: {\n up: Face.Back,\n down: Face.Front,\n left: Face.Left,\n right: Face.Right,\n },\n [Face.Bottom]: {\n up: Face.Front,\n down: Face.Back,\n left: Face.Left,\n right: Face.Right,\n },\n [Face.Right]: {\n up: Face.Top,\n down: Face.Bottom,\n left: Face.Front,\n right: Face.Back,\n },\n [Face.Left]: {\n up: Face.Top,\n down: Face.Bottom,\n left: Face.Back,\n right: Face.Front,\n },\n};\n\n/** The default tolerance (1.0e-6) is appropriate if very dirty viewing operations are expected. */\nconst DEFAULT_TOLERANCE = 1.0e-6;\n\n/** @internal */\nexport enum CubeHover {\n None = 0,\n Hover,\n Active,\n}\n\n/** Properties for the [[CubeNavigationAid]] component\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface CubeNavigationAidProps extends CommonProps {\n iModelConnection: IModelConnection;\n viewport?: Viewport;\n\n // used only in testing\n\n /** @internal */\n onAnimationEnd?: () => void;\n /** @internal */\n animationTime?: number;\n favorHeadsUpRotation?: boolean;\n}\n\n/** @public */\ninterface CubeNavigationAidState {\n dragging: boolean;\n startRotMatrix: Matrix3d;\n endRotMatrix: Matrix3d;\n animation: number;\n hoverMap: { [key: string]: CubeHover };\n face: Face;\n}\n\n/** Cube Navigation Aid Component\n * @public\n */\nexport class CubeNavigationAid extends React.Component<\n CubeNavigationAidProps,\n CubeNavigationAidState\n> {\n private _start: Vector2d = Vector2d.createZero();\n public override readonly state: Readonly<CubeNavigationAidState> = {\n dragging: false,\n startRotMatrix: Matrix3d.createIdentity(),\n endRotMatrix: Matrix3d.createIdentity(),\n animation: 1,\n hoverMap: {},\n face: Face.Top,\n };\n\n private _lastTime: number | undefined;\n private _animationFrame: any;\n private _mounted: boolean = false;\n private _labels: { [key: string]: string } = {\n [Face.Right]: UiIModelComponents.translate(\"cube.right\"),\n [Face.Left]: UiIModelComponents.translate(\"cube.left\"),\n [Face.Back]: UiIModelComponents.translate(\"cube.back\"),\n [Face.Front]: UiIModelComponents.translate(\"cube.front\"),\n [Face.Top]: UiIModelComponents.translate(\"cube.top\"),\n [Face.Bottom]: UiIModelComponents.translate(\"cube.bottom\"),\n };\n\n public override componentDidMount() {\n this._mounted = true;\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(\n this._handleViewRotationChangeEvent\n );\n\n // set initial rotation\n if (this.props.viewport) {\n const newMatrix = this.props.viewport.view.getRotation().clone();\n this.setState({\n startRotMatrix: newMatrix,\n endRotMatrix: newMatrix,\n animation: 1,\n });\n }\n }\n\n public override componentWillUnmount() {\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(\n this._handleViewRotationChangeEvent\n );\n clearTimeout(this._animationFrame);\n this._mounted = false;\n }\n\n // Synchronize with rotation coming from the Viewport\n private _handleViewRotationChangeEvent: ListenerType<\n typeof ViewportComponentEvents.onViewRotationChangeEvent\n > = (args) => {\n const { animation, dragging, endRotMatrix } = this.state;\n if (this.props.viewport === args.viewport && animation >= 1 && !dragging) {\n const newMatrix = this.props.viewport.view.getRotation().clone();\n if (!endRotMatrix.isAlmostEqual(newMatrix)) {\n this.setState({\n startRotMatrix: newMatrix,\n endRotMatrix: newMatrix,\n animation: 1,\n face: Face.None,\n });\n }\n }\n };\n\n private _animation = () => {\n const t = Date.now();\n const delta = this._lastTime ? t - this._lastTime : 16;\n this._lastTime = t;\n if (this.state.animation !== 1) {\n const animation = Math.min(\n 1,\n this.state.animation +\n delta / (1000 * (this.props.animationTime || 0.4))\n );\n\n if (this._mounted) {\n this.setState({ animation }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n } else {\n this._lastTime = undefined;\n this._animationEnd();\n }\n };\n\n private _animationEnd = () => {\n ViewportComponentEvents.setCubeMatrix(\n this.state.endRotMatrix,\n this.state.face,\n true\n );\n const startRotMatrix = this.state.endRotMatrix.clone();\n if (this._mounted) {\n this.setState({ startRotMatrix }, () => {\n if (this.props.onAnimationEnd) this.props.onAnimationEnd();\n });\n }\n };\n\n private static _animationFn = (t: number) =>\n t < 0.5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\n\n private static _isMatrixFace = (matrix: Matrix3d): boolean => {\n let sum = 0;\n for (const coff of matrix.coffs) {\n if (Geometry.isAlmostEqualNumber(Math.abs(coff), 1)) sum++;\n }\n // Assuming matrix is a proper rotation matrix:\n // if matrix viewing a face, there will be a total of 3 values either almost -1, or almost 1.\n return sum === 3;\n };\n\n public override render(): React.ReactNode {\n const { animation, startRotMatrix, endRotMatrix } = this.state;\n const visible =\n CubeNavigationAid._isMatrixFace(endRotMatrix) && animation === 1.0;\n const rotMatrix = CubeNavigationAid._interpolateRotMatrix(\n startRotMatrix,\n animation,\n endRotMatrix\n );\n if (rotMatrix !== startRotMatrix && rotMatrix !== endRotMatrix)\n ViewportComponentEvents.setCubeMatrix(rotMatrix, Face.None);\n\n const faces: { [key: string]: React.ReactNode } = {};\n for (const key in this._labels) {\n if (this._labels.hasOwnProperty(key)) {\n const f = key as Face;\n const label = this._labels[f];\n faces[f] = (\n <NavCubeFace\n face={f}\n label={label}\n hoverMap={this.state.hoverMap}\n onFaceCellClick={this._handleFaceCellClick}\n onFaceCellHoverChange={this._handleCellHoverChange}\n />\n );\n }\n }\n\n const cubeClassNames = classnames(\n \"nav-cube\",\n this.state.dragging && \"cube-dragging\"\n );\n\n const upTitle = this.getArrowTitle(Pointer.Up);\n const downTitle = this.getArrowTitle(Pointer.Down);\n const leftTitle = this.getArrowTitle(Pointer.Left);\n const rightTitle = this.getArrowTitle(Pointer.Right);\n\n return (\n <div\n className={classnames(\n \"components-cube-container\",\n this.props.className\n )}\n style={this.props.style}\n data-testid=\"components-cube-navigation-aid\"\n onMouseDown={this._handleBoxMouseDown}\n onTouchStart={this._handleBoxTouchStart}\n role=\"presentation\"\n >\n <div className={\"cube-element-container\"}>\n <Cube\n className={cubeClassNames}\n rotMatrix={rotMatrix}\n faces={faces}\n />\n </div>\n <PointerButton\n data-testid=\"cube-pointer-button-up\"\n visible={visible}\n pointerType={Pointer.Up}\n onArrowClick={this._onArrowClick}\n title={upTitle}\n />\n <PointerButton\n data-testid=\"cube-pointer-button-down\"\n visible={visible}\n pointerType={Pointer.Down}\n onArrowClick={this._onArrowClick}\n title={downTitle}\n />\n <PointerButton\n data-testid=\"cube-pointer-button-left\"\n visible={visible}\n pointerType={Pointer.Left}\n onArrowClick={this._onArrowClick}\n title={leftTitle}\n />\n <PointerButton\n data-testid=\"cube-pointer-button-right\"\n visible={visible}\n pointerType={Pointer.Right}\n onArrowClick={this._onArrowClick}\n title={rightTitle}\n />\n </div>\n );\n }\n\n private _handleCellHoverChange = (vect: Vector3d, state: CubeHover) => {\n if (this._isInteractionLocked()) {\n this.props.onAnimationEnd?.();\n return;\n }\n const hoverMap = this.state.hoverMap;\n hoverMap[`${vect.x}-${vect.y}-${vect.z}`] = state;\n this.setState({ hoverMap });\n };\n\n private _isInteractionLocked = () => {\n // Locked by markup\n if (\n undefined !== this.props.viewport &&\n this.props.viewport === IModelApp.toolAdmin.markupView\n ) {\n return true;\n }\n return false;\n };\n\n private static _getMatrixFace = (rotMatrix: Matrix3d): Face => {\n if (!CubeNavigationAid._isMatrixFace(rotMatrix)) {\n return Face.None;\n }\n\n if (\n rotMatrix.coffs[6] === cubeNavigationFaceRotations[Face.Top].coffs[6] &&\n rotMatrix.coffs[7] === cubeNavigationFaceRotations[Face.Top].coffs[7] &&\n rotMatrix.coffs[8] === cubeNavigationFaceRotations[Face.Top].coffs[8]\n )\n return Face.Top;\n\n if (\n rotMatrix.coffs[6] ===\n cubeNavigationFaceRotations[Face.Bottom].coffs[6] &&\n rotMatrix.coffs[7] ===\n cubeNavigationFaceRotations[Face.Bottom].coffs[7] &&\n rotMatrix.coffs[8] === cubeNavigationFaceRotations[Face.Bottom].coffs[8]\n )\n return Face.Bottom;\n\n if (\n rotMatrix.coffs[6] === cubeNavigationFaceRotations[Face.Left].coffs[6] &&\n rotMatrix.coffs[7] === cubeNavigationFaceRotations[Face.Left].coffs[7] &&\n rotMatrix.coffs[8] === cubeNavigationFaceRotations[Face.Left].coffs[8]\n )\n return Face.Left;\n\n if (\n rotMatrix.coffs[6] === cubeNavigationFaceRotations[Face.Right].coffs[6] &&\n rotMatrix.coffs[7] === cubeNavigationFaceRotations[Face.Right].coffs[7] &&\n rotMatrix.coffs[8] === cubeNavigationFaceRotations[Face.Right].coffs[8]\n )\n return Face.Right;\n\n if (\n rotMatrix.coffs[6] === cubeNavigationFaceRotations[Face.Back].coffs[6] &&\n rotMatrix.coffs[7] === cubeNavigationFaceRotations[Face.Back].coffs[7] &&\n rotMatrix.coffs[8] === cubeNavigationFaceRotations[Face.Back].coffs[8]\n )\n return Face.Back;\n\n if (\n rotMatrix.coffs[6] === cubeNavigationFaceRotations[Face.Front].coffs[6] &&\n rotMatrix.coffs[7] === cubeNavigationFaceRotations[Face.Front].coffs[7] &&\n rotMatrix.coffs[8] === cubeNavigationFaceRotations[Face.Front].coffs[8]\n )\n return Face.Front;\n\n return Face.None;\n };\n\n private static _interpolateRotMatrix = (\n start: Matrix3d,\n anim: number,\n end: Matrix3d\n ): Matrix3d => {\n if (anim === 0) return start;\n if (anim === 1 || start.isAlmostEqual(end)) return end;\n const startInverse = start.transpose();\n const diff = end.multiplyMatrixMatrix(startInverse);\n const angleAxis = diff.getAxisAndAngleOfRotation();\n if (angleAxis.ok) {\n const angle = Angle.createRadians(\n angleAxis.angle.radians * CubeNavigationAid._animationFn(anim)\n );\n const newDiff = Matrix3d.createRotationAroundVector(\n angleAxis.axis,\n angle\n );\n if (newDiff) {\n const newMatrix = newDiff.multiplyMatrixMatrix(start);\n return newMatrix;\n }\n }\n return end;\n };\n\n private static correctSmallNumber(value: number, tolerance: number): number {\n return Math.abs(value) < tolerance ? 0 : value;\n }\n\n /**\n * Snap coordinates of a vector to zero and to each other so that the vector prefers to be\n * * perpendicular to a face of the unit cube.\n * * or pass through a nearby vertex or edge of the unit cube.\n * @param zVector existing z vector.\n * @param tolerance tolerance to determine if a z vector component is close to zero or 1.\n */\n private static snapVectorToCubeFeatures(\n zVector: XYAndZ,\n tolerance: number\n ): Vector3d {\n const x = CubeNavigationAid.correctSmallNumber(zVector.x, tolerance);\n let y = CubeNavigationAid.correctSmallNumber(zVector.y, tolerance);\n let z = CubeNavigationAid.correctSmallNumber(zVector.z, tolerance);\n\n const xx = x === -0 ? Math.abs(x) : x;\n const yy = y === -0 ? Math.abs(y) : y;\n const zz = z === -0 ? Math.abs(z) : z;\n\n // adjust any adjacent pair of near equal values to the first.\n if (Geometry.isSameCoordinate(xx, yy, tolerance)) {\n y = Geometry.split3WaySign(y, -xx, xx, xx);\n }\n if (Geometry.isSameCoordinate(yy, zz, tolerance)) {\n z = Geometry.split3WaySign(z, -yy, yy, yy);\n }\n if (Geometry.isSameCoordinate(xx, zz, tolerance)) {\n z = Geometry.split3WaySign(z, -xx, xx, xx);\n }\n return Vector3d.create(x, y, z);\n }\n\n /**\n * Adjust a worldToView matrix to favor both\n * * direct view at faces, edges, and corners of a view cube.\n * * heads up\n * @param worldToView candidate matrix\n * @param tolerance tolerance for cleaning up fuzz. The default (1.0e-6) is appropriate if very dirty viewing operations are expected.\n * @param result optional result.\n */\n private static snapWorldToViewMatrixToCubeFeatures(\n worldToView: Matrix3d,\n tolerance: number,\n result?: Matrix3d,\n favorHeadsUpRotation?: boolean\n ): Matrix3d {\n const oldZ = worldToView.rowZ();\n const newZ = CubeNavigationAid.snapVectorToCubeFeatures(oldZ, tolerance);\n const headsUp = !!favorHeadsUpRotation;\n // If newZ is true up or down, it will have true 0 for x and y.\n // special case this to take x direction from the input.\n // This methodology results in always \"righting\" the face when rotation from an upside-down cube.\n // The behavior was made opt-in in response to https://github.com/iTwin/appui/issues/259\n if (!headsUp || (newZ.x === 0.0 && newZ.y === 0)) {\n const perpVector = worldToView.rowX();\n result = Matrix3d.createRigidFromColumns(\n newZ,\n perpVector,\n AxisOrder.ZXY,\n result\n )!;\n } else {\n result = Matrix3d.createRigidViewAxesZTowardsEye(\n newZ.x,\n newZ.y,\n newZ.z,\n result\n );\n }\n if (result) result.transposeInPlace();\n return result;\n }\n\n private getArrowRotationAndFace(arrow: Pointer): {\n newRotation: Matrix3d;\n face: Face;\n } {\n const localRotationAxis = Vector3d.create(0, 0, 0);\n switch (arrow) {\n case Pointer.Up:\n localRotationAxis.x = -1.0;\n break;\n case Pointer.Down:\n localRotationAxis.x = 1.0;\n break;\n case Pointer.Left:\n localRotationAxis.y = -1.0;\n break;\n default:\n localRotationAxis.y = 1.0;\n break;\n }\n const localRotation = Matrix3d.createRotationAroundVector(\n localRotationAxis,\n Angle.createDegrees(-90)\n )!;\n const newRotation = localRotation.multiplyMatrixMatrix(\n this.state.endRotMatrix\n );\n CubeNavigationAid.snapWorldToViewMatrixToCubeFeatures(\n newRotation,\n DEFAULT_TOLERANCE,\n newRotation,\n this.props.favorHeadsUpRotation\n );\n const face = CubeNavigationAid._getMatrixFace(newRotation);\n return { newRotation, face };\n }\n\n private _onArrowClick = (arrow: Pointer) => {\n if (this._isInteractionLocked()) {\n this.props.onAnimationEnd?.();\n return;\n }\n const { newRotation, face } = this.getArrowRotationAndFace(arrow);\n this._animateRotation(newRotation, face);\n };\n\n private getArrowTitle(arrow: Pointer) {\n const { face } = this.getArrowRotationAndFace(arrow);\n return this._labels[face];\n }\n\n private _lastClientXY: Vector2d = Vector2d.createZero();\n private _processDrag(mousePos: Vector2d) {\n if (!this._start.isAlmostEqual(mousePos)) {\n const movement = mousePos.minus(this._lastClientXY);\n const diff = movement.scale(0.05);\n\n const yaw = Angle.createRadians(diff.x);\n const pitch = Angle.createRadians(diff.y);\n\n const matX = Matrix3d.createRotationAroundAxisIndex(AxisIndex.X, pitch);\n const matZ = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, yaw);\n\n const mat = matX\n .multiplyMatrixMatrix(this.state.startRotMatrix)\n .multiplyMatrixMatrix(matZ);\n this._setRotation(mat, CubeNavigationAid._getMatrixFace(mat));\n if (!this.state.dragging) this.setState({ dragging: true });\n }\n this._lastClientXY = mousePos;\n }\n\n private _handleBoxMouseDown = (event: any) => {\n if (this._isInteractionLocked()) {\n this.props.onAnimationEnd?.();\n return;\n }\n event.preventDefault();\n // only start listening after drag is confirmed. Ie. the 3D box is clicked.\n window.addEventListener(\"mousemove\", this._onMouseMove, false);\n window.addEventListener(\"mouseup\", this._onMouseUp, false);\n this._lastClientXY = Vector2d.create(event.clientX, event.clientY);\n this._start = this._lastClientXY;\n };\n\n private _onMouseMove = (event: MouseEvent) => {\n const mousePos = Vector2d.create(event.clientX, event.clientY);\n this._processDrag(mousePos);\n };\n\n private _onMouseUp = () => {\n if (this.state.dragging) {\n this.setState({ dragging: false });\n ViewportComponentEvents.setCubeMatrix(\n this.state.endRotMatrix,\n CubeNavigationAid._getMatrixFace(this.state.endRotMatrix),\n true\n );\n }\n\n // remove so event only triggers after this.onMouseStartDrag\n window.removeEventListener(\"mousemove\", this._onMouseMove);\n window.removeEventListener(\"mouseup\", this._onMouseUp);\n };\n\n private _handleBoxTouchStart = (event: any) => {\n if (this._isInteractionLocked()) {\n this.props.onAnimationEnd?.();\n return;\n }\n if (1 !== event.targetTouches.length) return;\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\n this._lastClientXY = Vector2d.create(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n this._start = this._lastClientXY;\n };\n\n private _onTouchMove = (event: TouchEvent) => {\n if (1 !== event.targetTouches.length) return;\n const mousePos = Vector2d.create(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n this._processDrag(mousePos);\n };\n\n private _onTouchEnd = (event: TouchEvent) => {\n if (0 !== event.targetTouches.length) return;\n\n if (this.state.dragging) {\n this.setState({ dragging: false });\n ViewportComponentEvents.setCubeMatrix(\n this.state.endRotMatrix,\n CubeNavigationAid._getMatrixFace(this.state.endRotMatrix),\n true\n );\n }\n\n window.removeEventListener(\"touchmove\", this._onTouchMove);\n window.removeEventListener(\"touchend\", this._onTouchEnd);\n };\n\n private _handleFaceCellClick = (pos: Vector3d, face: Face) => {\n if (this._isInteractionLocked()) {\n this.props.onAnimationEnd?.();\n return;\n }\n const { endRotMatrix } = this.state;\n let rotMatrix = Matrix3d.createRigidViewAxesZTowardsEye(\n pos.x,\n pos.y,\n pos.z\n ).inverse();\n if (rotMatrix) {\n // if isMatrixFace and user is clicking on top/bottom, the current matrix face must be top or bottom\n if (\n !CubeNavigationAid._isMatrixFace(endRotMatrix) &&\n (face === Face.Top || face === Face.Bottom)\n ) {\n const angleAxis = endRotMatrix.getAxisAndAngleOfRotation();\n if (angleAxis.ok) {\n const xAx = endRotMatrix.columnX();\n const a = Math.atan2(xAx.y, xAx.x);\n const r = (Math.round((a * 2) / Math.PI) * Math.PI) / 2; // round to quarter turn intervals\n const rot = Matrix3d.createRotationAroundAxisIndex(\n AxisIndex.Z,\n Angle.createRadians(r)\n );\n rotMatrix = rot.multiplyMatrixMatrix(rotMatrix);\n }\n }\n this._animateRotation(rotMatrix, face);\n }\n window.removeEventListener(\"mousemove\", this._onMouseMove);\n };\n\n private _animateRotation = (endRotMatrix: Matrix3d, face: Face) => {\n if (this.state.endRotMatrix.isAlmostEqual(endRotMatrix)) return;\n // set animation variables, let css transitions animate it.\n this._animationFrame = setTimeout(this._animation, 16.667);\n this.setState((prevState) => ({\n startRotMatrix: prevState.endRotMatrix,\n endRotMatrix,\n animation: 0,\n face,\n }));\n };\n\n private _setRotation = (endRotMatrix: Matrix3d, face: Face) => {\n ViewportComponentEvents.setCubeMatrix(endRotMatrix, face);\n // set variables, with animTime at 0 to prevent animation.\n this.setState({\n startRotMatrix: endRotMatrix,\n endRotMatrix,\n animation: 1,\n face,\n });\n };\n}\n\n/** @internal */\nexport interface NavCubeFaceProps\n extends React.AllHTMLAttributes<HTMLDivElement> {\n face: Face;\n label: string;\n hoverMap: { [key: string]: CubeHover };\n onFaceCellClick: (vector: Vector3d, face: Face) => void;\n onFaceCellHoverChange: (vector: Vector3d, state: CubeHover) => void;\n}\n\n/** @internal */\nexport class NavCubeFace extends React.Component<NavCubeFaceProps> {\n private includeCell(vector: Vector3d): boolean {\n const { x, y, z } = vector;\n const omittedCell =\n (y === 0 && x !== 0 && z !== 0) ||\n (y !== 0 && x === 0 && z !== 0) ||\n (y !== 0 && x !== 0 && z === 0);\n return !omittedCell;\n }\n public override render(): React.ReactNode {\n const { face, hoverMap, onFaceCellClick, onFaceCellHoverChange, label } =\n this.props;\n return (\n <div className=\"nav-cube-face\" data-testid=\"nav-cube-face\">\n {[-1, 0, 1].map((y: number) => {\n return (\n <FaceRow key={y} center={y === 0}>\n {[-1, 0, 1].map((x: number) => {\n const vector = NavCubeFace.faceCellToPos(face, x, y);\n if (this.includeCell(vector)) {\n // return a fully functional cell\n return (\n <FaceCell\n key={x}\n onFaceCellHoverChange={onFaceCellHoverChange}\n onFaceCellClick={onFaceCellClick}\n hoverMap={hoverMap}\n vector={vector}\n face={face}\n center={x === 0}\n >\n {x === 0 && y === 0 && label}\n </FaceCell>\n );\n } else {\n // return a placeholder cell\n return (\n <FaceCell\n key={x}\n vector={vector}\n face={face}\n center={x === 0}\n />\n );\n }\n })}\n </FaceRow>\n );\n })}\n </div>\n );\n }\n public static faceCellToPos = (face: Face, x: number, y: number) => {\n const faceVect = cubeNavigationFaceLocs[face];\n const route = cubeNavigationRoutes[face];\n\n const faceX = x < 0 ? route.left : x > 0 ? route.right : Face.None;\n const xVect =\n faceX !== Face.None\n ? cubeNavigationFaceLocs[faceX]\n : Vector3d.createZero();\n\n const faceY = y < 0 ? route.up : y > 0 ? route.down : Face.None;\n const yVect =\n faceY !== Face.None\n ? cubeNavigationFaceLocs[faceY]\n : Vector3d.createZero();\n\n return faceVect.plus(xVect).plus(yVect);\n };\n}\n\ninterface FaceRowProps extends React.AllHTMLAttributes<HTMLDivElement> {\n center?: boolean;\n}\n\nclass FaceRow extends React.Component<FaceRowProps> {\n public override render(): React.ReactNode {\n const { center, children, ...props } = this.props;\n const classNames = classnames(\"face-row\", center && \"cube-center\");\n return (\n <div className={classNames} {...props}>\n {children}\n </div>\n );\n }\n}\n\n/** @internal */\nexport interface FaceCellProps extends React.AllHTMLAttributes<HTMLDivElement> {\n center?: boolean;\n onFaceCellClick?: (vector: Vector3d, face: Face) => void;\n onFaceCellHoverChange?: (vector: Vector3d, state: CubeHover) => void;\n hoverMap?: { [key: string]: CubeHover };\n vector: Vector3d;\n face: Face;\n}\n\n/** @internal */\nexport class FaceCell extends React.Component<FaceCellProps> {\n private _startMouse: Point2d | undefined;\n public override render(): React.ReactNode {\n const {\n center,\n children,\n onFaceCellClick,\n onFaceCellHoverChange,\n hoverMap,\n face,\n vector,\n ...props\n } = this.props;\n const { x, y, z } = vector;\n const n = `${x}-${y}-${z}`;\n const hover = hoverMap && hoverMap[n] === CubeHover.Hover;\n const active = hoverMap && hoverMap[n] === CubeHover.Active;\n const classNames = classnames(\n \"face-cell\",\n center && \"cube-center\",\n hover && \"cube-hover\",\n active && \"cube-active\"\n );\n\n return (\n <div\n onMouseDown={this._handleMouseDown}\n onMouseUp={this._handleMouseUp}\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n onMouseOver={this._handleMouseOver}\n // eslint-disable-next-line jsx-a11y/mouse-events-have-key-events\n onMouseOut={this._handleMouseOut}\n onTouchStart={this._handleTouchStart}\n onTouchEnd={this._handleTouchEnd}\n data-testid={`nav-cube-face-cell-${face}-${n}`}\n className={classNames}\n role=\"presentation\"\n {...props}\n >\n {children}\n </div>\n );\n }\n private _handleMouseOver = () => {\n const { vector } = this.props;\n this.props.onFaceCellHoverChange &&\n this.props.onFaceCellHoverChange(vector, CubeHover.Hover);\n };\n private _handleMouseOut = () => {\n const { vector } = this.props;\n this.props.onFaceCellHoverChange &&\n this.props.onFaceCellHoverChange(vector, CubeHover.None);\n };\n private _handleMouseDown = (event: React.MouseEvent) => {\n const { clientX, clientY } = event;\n this.handlePointerDown(clientX, clientY);\n };\n private _handleMouseUp = (event: React.MouseEvent) => {\n const { clientX, clientY } = event;\n this.handlePointerUp(clientX, clientY);\n };\n\n private _handleTouchStart = (event: React.TouchEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.targetTouches.length === 1 &&\n this.handlePointerDown(\n event.targetTouches[0].clientX,\n event.targetTouches[0].clientY\n );\n };\n\n private _handleTouchEnd = (event: React.TouchEvent<HTMLDivElement>) => {\n event.preventDefault();\n event.changedTouches.length === 1 &&\n this.handlePointerUp(\n event.changedTouches[0].clientX,\n event.changedTouches[0].clientY\n );\n };\n\n private handlePointerDown(x: number, y: number) {\n const { vector } = this.props;\n this._startMouse = Point2d.create(x, y);\n this.props.onFaceCellHoverChange &&\n this.props.onFaceCellHoverChange(vector, CubeHover.Active);\n }\n\n private handlePointerUp(x: number, y: number) {\n const { vector, face } = this.props;\n this.props.onFaceCellHoverChange &&\n this.props.onFaceCellHoverChange(vector, CubeHover.None);\n const mouse = Point2d.create(x, y);\n if (this._startMouse && this._startMouse.isAlmostEqual(mouse)) {\n const isFace =\n Math.abs(vector.x) + Math.abs(vector.y) + Math.abs(vector.z) === 1;\n this.props.onFaceCellClick &&\n this.props.onFaceCellClick(vector, isFace ? face : Face.None);\n }\n }\n}\n\nenum Pointer {\n None = 0,\n Up,\n Down,\n Left,\n Right,\n}\n\n// eslint-disable-next-line deprecation/deprecation\nconst pointerIconSpec: { [key: number]: IconSpec } = {\n [Pointer.Up]: <SvgCaretDown />,\n [Pointer.Down]: <SvgCaretUp />,\n [Pointer.Left]: <SvgCaretRight />,\n [Pointer.Right]: <SvgCaretLeft />,\n};\n\nconst pointerClass: { [key: number]: string } = {\n [Pointer.Up]: \"cube-up\",\n [Pointer.Down]: \"cube-down\",\n [Pointer.Left]: \"cube-left\",\n [Pointer.Right]: \"cube-right\",\n};\n\ninterface PointerProps extends React.AllHTMLAttributes<HTMLDivElement> {\n visible: boolean;\n pointerType: Pointer;\n onArrowClick(pointer: Pointer): void;\n title: string;\n [\"data-testid\"]?: string;\n}\n\nclass PointerButton extends React.Component<PointerProps> {\n public override render(): React.ReactNode {\n const { visible, pointerType, onArrowClick, title, ...props } = this.props;\n const classes = classnames(\n \"cube-pointer\",\n \"icon\",\n pointerClass[pointerType],\n visible && \"cube-visible\"\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/click-events-have-key-events\n <div\n className={classes}\n role=\"button\"\n tabIndex={-1}\n title={title}\n {...props}\n onClick={this._handleClick}\n >\n {/* eslint-disable-next-line deprecation/deprecation */}\n <Icon iconSpec={pointerIconSpec[pointerType]} />\n </div>\n );\n }\n private _handleClick = (event: React.MouseEvent) => {\n const { pointerType } = this.props;\n event.preventDefault();\n this.props.onArrowClick(pointerType);\n };\n}\n"]}