@itwin/imodel-components-react 3.4.0-dev.57 → 3.4.0-dev.58

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 (342) hide show
  1. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
  2. package/lib/cjs/imodel-components-react/UiIModelComponents.js +79 -79
  3. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
  4. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  5. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +186 -186
  6. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
  7. package/lib/cjs/imodel-components-react/color/AlphaSlider.scss +63 -63
  8. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  9. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +107 -107
  10. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  11. package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +91 -91
  12. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  13. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +74 -74
  14. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  15. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  16. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +145 -145
  17. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  18. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  19. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  20. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +137 -137
  21. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  22. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +64 -64
  23. package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
  24. package/lib/cjs/imodel-components-react/color/HueSlider.js +199 -199
  25. package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
  26. package/lib/cjs/imodel-components-react/color/HueSlider.scss +61 -61
  27. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  28. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +213 -213
  29. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
  30. package/lib/cjs/imodel-components-react/color/SaturationPicker.scss +35 -35
  31. package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
  32. package/lib/cjs/imodel-components-react/color/Swatch.js +60 -60
  33. package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
  34. package/lib/cjs/imodel-components-react/color/Swatch.scss +23 -23
  35. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  36. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
  37. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  38. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  39. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +151 -151
  40. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
  41. package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +18 -18
  42. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  43. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +160 -160
  44. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
  45. package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +16 -16
  46. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  47. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +96 -96
  48. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  49. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  50. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +265 -265
  51. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  52. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
  53. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  54. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +85 -85
  55. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
  56. package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +48 -48
  57. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  58. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +159 -159
  59. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  60. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +52 -52
  61. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  62. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +127 -127
  63. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
  64. package/lib/cjs/imodel-components-react/navigationaids/Cube.scss +19 -19
  65. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
  66. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +634 -634
  67. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  68. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +180 -180
  69. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  70. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +647 -647
  71. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  72. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -133
  73. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  74. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +99 -99
  75. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  76. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +64 -64
  77. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  78. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +53 -53
  79. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  80. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  81. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +83 -83
  82. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  83. package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  84. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +86 -86
  85. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  86. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  87. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +109 -109
  88. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  89. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  90. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +133 -133
  91. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  92. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  93. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +184 -184
  94. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  95. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  96. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +154 -154
  97. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  98. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  99. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +59 -59
  100. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  101. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  102. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +47 -47
  103. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  104. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  105. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +54 -54
  106. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  107. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  108. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +48 -48
  109. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  110. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  111. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +50 -50
  112. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  113. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  114. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +58 -58
  115. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  116. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  117. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +47 -47
  118. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  119. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  120. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +56 -56
  121. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  122. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  123. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +95 -95
  124. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  125. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  126. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +119 -119
  127. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  128. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  129. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +143 -143
  130. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  131. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  132. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +69 -69
  133. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  134. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  135. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +81 -81
  136. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  137. package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +26 -26
  138. package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  139. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +91 -91
  140. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  141. package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +25 -25
  142. package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  143. package/lib/cjs/imodel-components-react/timeline/Scrubber.js +191 -191
  144. package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
  145. package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +106 -106
  146. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  147. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +424 -424
  148. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  149. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +357 -357
  150. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  151. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +54 -54
  152. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  153. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  154. package/lib/cjs/imodel-components-react/timeline/Timeline.scss +164 -164
  155. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
  156. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +358 -358
  157. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  158. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +163 -163
  159. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +174 -174
  160. package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
  161. package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
  162. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  163. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +274 -274
  164. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  165. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  166. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
  167. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  168. package/lib/cjs/imodel-components-react.d.ts +82 -82
  169. package/lib/cjs/imodel-components-react.js +101 -101
  170. package/lib/cjs/imodel-components-react.js.map +1 -1
  171. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +28 -28
  172. package/lib/esm/imodel-components-react/UiIModelComponents.js +75 -75
  173. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
  174. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  175. package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
  176. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
  177. package/lib/esm/imodel-components-react/color/AlphaSlider.scss +63 -63
  178. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  179. package/lib/esm/imodel-components-react/color/ColorPickerButton.js +82 -82
  180. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  181. package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +91 -91
  182. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  183. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
  184. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  185. package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  186. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +122 -122
  187. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  188. package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  189. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  190. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +112 -112
  191. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  192. package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +64 -64
  193. package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
  194. package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
  195. package/lib/esm/imodel-components-react/color/HueSlider.js.map +1 -1
  196. package/lib/esm/imodel-components-react/color/HueSlider.scss +61 -61
  197. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  198. package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
  199. package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +1 -1
  200. package/lib/esm/imodel-components-react/color/SaturationPicker.scss +35 -35
  201. package/lib/esm/imodel-components-react/color/Swatch.d.ts +22 -22
  202. package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
  203. package/lib/esm/imodel-components-react/color/Swatch.js.map +1 -1
  204. package/lib/esm/imodel-components-react/color/Swatch.scss +23 -23
  205. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  206. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
  207. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  208. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  209. package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
  210. package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +1 -1
  211. package/lib/esm/imodel-components-react/editors/ColorEditor.scss +18 -18
  212. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  213. package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
  214. package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +1 -1
  215. package/lib/esm/imodel-components-react/editors/WeightEditor.scss +16 -16
  216. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  217. package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
  218. package/lib/esm/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  219. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  220. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +240 -240
  221. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  222. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
  223. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  224. package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
  225. package/lib/esm/imodel-components-react/lineweight/Swatch.js.map +1 -1
  226. package/lib/esm/imodel-components-react/lineweight/Swatch.scss +48 -48
  227. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  228. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +133 -133
  229. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  230. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +52 -52
  231. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  232. package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
  233. package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +1 -1
  234. package/lib/esm/imodel-components-react/navigationaids/Cube.scss +19 -19
  235. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
  236. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +606 -606
  237. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  238. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +180 -180
  239. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  240. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +620 -620
  241. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  242. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -133
  243. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  244. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
  245. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  246. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +64 -64
  247. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  248. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +30 -30
  249. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  250. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  251. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +60 -60
  252. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  253. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  254. package/lib/esm/imodel-components-react/quantityformat/FormatType.js +63 -63
  255. package/lib/esm/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  256. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  257. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +83 -83
  258. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  259. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  260. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +110 -110
  261. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  262. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  263. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +158 -158
  264. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  265. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  266. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +131 -131
  267. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  268. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  269. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
  270. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  271. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  272. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
  273. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  274. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  275. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
  276. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  277. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  278. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
  279. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  280. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  281. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
  282. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  283. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  284. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
  285. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  286. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  287. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
  288. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  289. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  290. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
  291. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  292. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  293. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +69 -69
  294. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  295. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  296. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
  297. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  298. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  299. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +139 -139
  300. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  301. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  302. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
  303. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  304. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  305. package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
  306. package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  307. package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +26 -26
  308. package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  309. package/lib/esm/imodel-components-react/timeline/PlayerButton.js +64 -64
  310. package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  311. package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +25 -25
  312. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  313. package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
  314. package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +1 -1
  315. package/lib/esm/imodel-components-react/timeline/Scrubber.scss +106 -106
  316. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  317. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +398 -398
  318. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  319. package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +357 -357
  320. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  321. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
  322. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  323. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  324. package/lib/esm/imodel-components-react/timeline/Timeline.scss +164 -164
  325. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
  326. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +332 -332
  327. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  328. package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +163 -163
  329. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +174 -174
  330. package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
  331. package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
  332. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  333. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +251 -251
  334. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  335. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  336. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +95 -95
  337. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  338. package/lib/esm/imodel-components-react.d.ts +82 -82
  339. package/lib/esm/imodel-components-react.js +87 -87
  340. package/lib/esm/imodel-components-react.js.map +1 -1
  341. package/lib/public/locales/en/UiIModelComponents.json +139 -139
  342. package/package.json +19 -19
@@ -1 +1 @@
1
- {"version":3,"file":"DrawingNavigationAid.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/DrawingNavigationAid.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 \"./DrawingNavigationAid.scss\";\nimport classnames from \"classnames\";\nimport * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { Constant, Geometry, Matrix3d, Point2d, Point3d, Point4d, Vector3d } from \"@itwin/core-geometry\";\nimport { IModelApp, IModelConnection, ScreenViewport, ViewManager, Viewport, ViewState } from \"@itwin/core-frontend\";\nimport { SpecialKey } from \"@itwin/appui-abstract\";\nimport { CommonProps } from \"@itwin/core-react\";\nimport { UiIModelComponents } from \"../UiIModelComponents\";\nimport { ViewportComponentEvents, ViewRotationChangeEventArgs } from \"../viewport/ViewportComponentEvents\";\n\n// cSpell:ignore Quaternion Quaternions unrotate\n/* eslint-disable jsx-a11y/click-events-have-key-events */\n\n/**\n * Enum for mode that minimap is currently in\n * @internal\n */\nexport enum MapMode {\n Opened = \"map-opened\",\n Closed = \"map-closed\",\n}\n\n/** Properties for the [[DrawingNavigationAid]] component\n * @public\n */\nexport interface DrawingNavigationAidProps extends CommonProps {\n iModelConnection: IModelConnection;\n viewport?: Viewport;\n\n // used only in testing\n\n /** @internal */\n animationTime?: number;\n /** @internal */\n openSize?: Vector3d;\n /** @internal */\n closeSize?: Vector3d;\n /** @internal */\n initialMapMode?: MapMode;\n /** @internal */\n onAnimationEnd?: () => void;\n /** @internal */\n initialRotateMinimapWithView?: boolean;\n /** @internal */\n initialView?: ViewState;\n /** @internal */\n viewManagerOverride?: ViewManager;\n /** @internal */\n screenViewportOverride?: typeof ScreenViewport;\n}\n\n/** @internal */\ninterface DrawingNavigationAidState {\n startOrigin: Point3d;\n origin: Point3d;\n extents: Vector3d;\n startRotation: Matrix3d;\n rotation: Matrix3d;\n\n startMapOrigin: Point3d;\n mapOrigin: Point3d;\n startMapExtents: Vector3d;\n mapExtents: Vector3d;\n\n mouseStart: Point2d;\n panningDirection: Vector3d;\n startDrawingZoom: number;\n drawingZoom: number;\n\n mode: MapMode;\n animation: number;\n\n isMoving: boolean;\n isPanning: boolean;\n\n viewId: string;\n view: ViewState | undefined;\n\n rotateMinimapWithView: boolean;\n}\n\n/**\n * A Drawing Navigation Aid.\n * @public\n */\nexport class DrawingNavigationAid extends React.Component<DrawingNavigationAidProps, DrawingNavigationAidState> {\n private _rootElement = React.createRef<HTMLDivElement>();\n private _viewContainerElement = React.createRef<HTMLDivElement>();\n private _viewElement = React.createRef<HTMLDivElement>();\n private _rootOffset: DOMRect = DOMRect.fromRect({ x: 0, y: 0, width: 0, height: 0 });\n private _viewport: Viewport | undefined;\n private _animationFrame: any;\n private _mounted: boolean = false;\n\n /** @internal */\n public override readonly state: Readonly<DrawingNavigationAidState>;\n\n constructor(props: DrawingNavigationAidProps) {\n super(props);\n const mode = props.initialMapMode || MapMode.Closed;\n const mapExtents = mode === MapMode.Closed ? this._getClosedMapSize() : this._getOpenedMapSize();\n const startMapExtents = mapExtents;\n\n this.state = {\n startOrigin: Point3d.createZero(),\n origin: Point3d.createZero(),\n extents: Vector3d.create(1, 1, 1),\n startRotation: Matrix3d.createIdentity(),\n rotation: Matrix3d.createIdentity(),\n\n startMapOrigin: Point3d.createZero(),\n mapOrigin: Point3d.createZero(),\n startMapExtents,\n mapExtents,\n\n mouseStart: Point2d.createZero(),\n panningDirection: Vector3d.createZero(),\n startDrawingZoom: 1.0,\n drawingZoom: 1.0,\n\n mode,\n animation: 1.0,\n\n viewId: props.initialView !== undefined ? props.initialView.id : \"\",\n view: props.initialView,\n\n isMoving: false,\n isPanning: false,\n rotateMinimapWithView: props.initialRotateMinimapWithView !== undefined ? props.initialRotateMinimapWithView : false,\n };\n }\n\n /** @internal */\n public override render(): React.ReactNode {\n const {\n startOrigin, origin, extents,\n startRotation, rotation,\n startMapOrigin, mapOrigin,\n startMapExtents, mapExtents,\n startDrawingZoom, drawingZoom,\n animation,\n viewId,\n mode, rotateMinimapWithView,\n } = this.state;\n\n const a = DrawingNavigationAid._animationFn(animation);\n const rot = Matrix3d.createFromQuaternion(Point4d.interpolateQuaternions(startRotation.toQuaternion(), a, rotation.toQuaternion()));\n const or = startOrigin.interpolate(a, origin);\n const map = startMapOrigin.interpolate(a, mapOrigin);\n const sz = startMapExtents.interpolate(a, mapExtents);\n const dz = Geometry.interpolate(startDrawingZoom, a, drawingZoom);\n\n const rootStyle: React.CSSProperties = {\n width: sz.x, height: sz.y,\n ...this.props.style,\n };\n const is3D = this._isViewport3D();\n\n const tOr = rotateMinimapWithView || is3D ? rotation.multiplyVector(Vector3d.createFrom(or)) : Vector3d.createFrom(or);\n const tMap = rotateMinimapWithView || is3D ? rotation.multiplyVector(Vector3d.createFrom(map)) : Vector3d.createFrom(map);\n\n const tPosX = (tOr.x - extents.x / 2 - tMap.x) * dz + sz.x / 2;\n const tPosY = (-tOr.y - extents.y / 2 + tMap.y) * dz + sz.y / 2;\n const viewWindowStyle = {\n transform: `translate(${tPosX}px, ${tPosY}px)`,\n height: extents.y * dz,\n width: extents.x * dz,\n };\n if (!rotateMinimapWithView && !is3D)\n viewWindowStyle.transform =\n \"matrix3d(\" +\n `${rot.at(0, 0)}, ${rot.at(1, 0)}, ${rot.at(2, 0)}, 0, ` +\n `${rot.at(0, 1)}, ${rot.at(1, 1)}, ${rot.at(2, 1)}, 0, ` +\n `${rot.at(0, 2)}, ${rot.at(1, 2)}, ${rot.at(2, 2)}, 0, ` +\n `${tPosX}, ${tPosY}, 0, 1)`;\n const isAnimating = animation !== 1 && !startMapExtents.isExactEqual(mapExtents);\n if (mode === MapMode.Opened || isAnimating) {\n rootStyle.position = \"fixed\";\n rootStyle.right = window.innerWidth - this._rootOffset.right;\n rootStyle.top = this._rootOffset.top;\n }\n\n const halfExtents = extents.scale(.5);\n const offset = rotateMinimapWithView || is3D ? Vector3d.createZero() : rotation.multiplyTransposeVector(halfExtents).minus(halfExtents);\n\n const unrotateLabel = UiIModelComponents.translate(\"drawing.unrotate\");\n const e = sz.scale(1 / dz);\n const halfMapExtents = e.scale(.5);\n const mapOffset = rotateMinimapWithView || is3D ? rotation.multiplyTransposeVector(halfMapExtents) : halfMapExtents;\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\n const screenViewport = this.props.screenViewportOverride ? this.props.screenViewportOverride : /* istanbul ignore next */ ScreenViewport;\n const nodes = (\n <div className={classnames(\"components-drawing-navigation-aid\", this.props.className)}\n data-testid=\"components-drawing-navigation-aid\"\n ref={this._rootElement}\n onWheel={this._handleWheel}\n onMouseDown={this._handleDrawingMouseDown}\n style={rootStyle}\n role=\"presentation\">\n <DrawingNavigationCanvas view={this.state.view} viewManagerOverride={viewManager} screenViewportOverride={screenViewport} viewId={viewId} origin={map.plus(offset).minus(mapOffset)} extents={e} zoom={dz} rotation={rotateMinimapWithView || is3D ? rotation : Matrix3d.createIdentity()} />\n <div className=\"drawing-container\"\n data-testid=\"drawing-container\"\n ref={this._viewContainerElement}>\n <div className=\"drawing-view-window\"\n data-testid=\"drawing-view-window\"\n onMouseDown={this._handleWindowMouseDown}\n onTouchStart={this._handleWindowTouchStart}\n style={viewWindowStyle}\n ref={this._viewElement}\n role=\"presentation\" />\n {!is3D &&\n <div className={classnames(\"toggle-rotate-style\", \"icon\", \"icon-rotate-left\", { checked: rotateMinimapWithView })} data-testid=\"toggle-rotate-style\"\n style={mode === MapMode.Closed && !isAnimating ? { bottom: 2, left: 2 } : {}}\n title={UiIModelComponents.translate(\"drawing.rotateStyle\")}\n onClick={this._toggleRotationMode}\n role=\"presentation\" />}\n {!rot.isIdentity &&\n <div className=\"unrotate-button\" data-testid=\"drawing-unrotate-button\" style={mode === MapMode.Closed && !isAnimating ? { top: 2 } : {}} onClick={this._handleUnrotate}\n role=\"button\" tabIndex={-1}\n >\n {unrotateLabel}\n </div>\n }\n {mode === MapMode.Opened && !isAnimating && <>\n <div className=\"close\" data-testid=\"drawing-close-button\" onClick={this._closeLargeMap} role=\"button\" tabIndex={-1}>\n <div className=\"close-icon icon icon-sort-up\" />\n </div>\n <div className=\"zoom\">\n <div className=\"zoom-button icon icon-add\" data-testid=\"drawing-zoom-in-button\" onClick={this._handleZoomIn} role=\"button\" tabIndex={-1} />\n <div className=\"zoom-button icon icon-remove-2\" data-testid=\"drawing-zoom-out-button\" onClick={this._handleZoomOut} role=\"button\" tabIndex={-1} />\n </div>\n </>}\n </div>\n </div>\n );\n if (mode === MapMode.Closed && (animation === 1.0 || startMapExtents.isExactEqual(mapExtents))) {\n return nodes;\n } else {\n let drawingPortal = document.querySelector(\"#components-drawing-portal\");\n if (!drawingPortal) {\n drawingPortal = document.createElement(\"div\");\n drawingPortal.id = \"components-drawing-portal\";\n document.body.appendChild(drawingPortal);\n }\n return ReactDOM.createPortal(nodes, drawingPortal);\n }\n }\n\n private _isViewport3D = () => {\n return this.state.view !== undefined && this.state.view.is3d();\n };\n\n private _lastTime: number | undefined;\n\n private static _animationFn = (t: number) => t < .5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\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(1, this.state.animation + delta / (1000 * (this.props.animationTime || 0.4)));\n this._updateFrustum();\n\n // istanbul ignore next\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 const hasViewportMoved = !this.state.origin.isAlmostEqual(this.state.startOrigin) ||\n !this.state.rotation.isAlmostEqual(this.state.startRotation);\n const startMapOrigin = Point3d.createFrom(this.state.mapOrigin);\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const startDrawingZoom = this.state.drawingZoom;\n const startOrigin = this.state.origin;\n const startRotation = this.state.rotation;\n // istanbul ignore next\n if (this._mounted) {\n this.setState({ startMapOrigin, startDrawingZoom, startOrigin, startRotation, startMapExtents }, () => {\n // istanbul ignore else\n if (this.props.onAnimationEnd)\n this.props.onAnimationEnd();\n if (hasViewportMoved)\n this._updateFrustum(true);\n });\n }\n };\n\n private _lastPanTime: number | undefined;\n\n private _panAnimation = () => {\n const t = Date.now();\n if (this._lastPanTime === undefined)\n this._lastPanTime = t - 16.667;\n const delta = t - this._lastPanTime;\n this._lastPanTime = t;\n // istanbul ignore else\n if (!this.state.panningDirection.isAlmostZero && this.state.isMoving) {\n const { panningDirection } = this.state;\n const offset = panningDirection.scale(delta / 1000 / this.state.drawingZoom);\n const mapOrigin = this.state.mapOrigin.plus(offset);\n\n const origin = this.state.origin.plus(offset);\n this._updateFrustum();\n // istanbul ignore next\n if (this._mounted) {\n this.setState({ mapOrigin, origin, panningDirection }, () => {\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\n });\n }\n } else {\n this._lastPanTime = undefined;\n this._updateFrustum(true);\n }\n };\n\n public override componentDidMount() {\n this._mounted = true;\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(this._handleViewRotationChangeEvent);\n window.addEventListener(\"mousedown\", this._handleMouseDown as any);\n window.addEventListener(\"mouseup\", this._handleMouseDragEnd as any);\n window.addEventListener(\"mousemove\", this._handleMouseDrag as any);\n window.addEventListener(\"keyup\", this._handleKeyUp as any);\n }\n\n public override componentWillUnmount() {\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(this._handleViewRotationChangeEvent);\n window.removeEventListener(\"mousedown\", this._handleMouseDown as any);\n window.removeEventListener(\"mouseup\", this._handleMouseDragEnd as any);\n window.removeEventListener(\"mousemove\", this._handleMouseDrag as any);\n window.removeEventListener(\"keyup\", this._handleKeyUp as any);\n clearTimeout(this._animationFrame);\n if (this.props.onAnimationEnd)\n this.props.onAnimationEnd();\n\n const rt = document.getElementById(\"components-drawing-portal\") as HTMLDivElement;\n if (rt && rt.parentElement !== null && rt.children.length === 0) {\n rt.parentElement.removeChild(rt);\n }\n this._mounted = false;\n }\n\n // Synchronize with rotation coming from the Viewport\n private _handleViewRotationChangeEvent = (args: ViewRotationChangeEventArgs) => {\n // istanbul ignore else\n if (!this.state.isMoving && !this.state.isPanning && this.props.viewport === args.viewport) {\n const extents = args.viewport.view.getExtents().clone();\n const rotation = args.viewport.view.getRotation().clone();\n const halfExtents = extents.scale(.5);\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? rotation.multiplyTransposeVector(halfExtents) : halfExtents;\n const origin = args.viewport.view.getOrigin().plus(offset);\n const deltaZoom = (this.state.extents.x - extents.x) / this.state.extents.x;\n let drawingZoom = this.state.drawingZoom / (1 - deltaZoom);\n const deltaOrigin = origin.minus(this.state.origin);\n let mapOrigin = this.state.mapOrigin.plus(deltaOrigin);\n mapOrigin = mapOrigin.plus(Vector3d.createFrom(origin.minus(mapOrigin)).scale(deltaZoom));\n if (this.state.viewId !== args.viewport.view.id) {\n const rect = this.state.rotateMinimapWithView || this._isViewport3D() ? extents : DrawingNavigationAid.findRotatedWindowDimensions(extents, rotation);\n const maxRectDim = Math.max(rect.y, rect.x);\n const maxExtentDim = Math.max(this.state.mapExtents.x, this.state.mapExtents.y);\n drawingZoom = maxExtentDim / (3 * maxRectDim);\n mapOrigin = origin.clone();\n this._viewport = args.viewport;\n this.setState({ viewId: args.viewport.view.id, view: args.viewport.view.clone() });\n }\n // istanbul ignore next\n if (this._mounted) {\n this.setState({\n startOrigin: origin, origin, extents,\n startRotation: rotation, rotation,\n startMapOrigin: mapOrigin, mapOrigin,\n startDrawingZoom: drawingZoom, drawingZoom,\n });\n }\n }\n };\n\n private _updateFrustum = (complete: boolean = false) => {\n const halfExtents = this.state.extents.scale(.5);\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.rotation.multiplyTransposeVector(halfExtents) : halfExtents;\n const origin = this.state.origin.minus(offset);\n ViewportComponentEvents.setDrawingViewportState(origin, this.state.rotation, complete);\n };\n\n private _toggleRotationMode = () => {\n const rotateMinimapWithView = !this.state.rotateMinimapWithView;\n this.setState({ rotateMinimapWithView }, () => {\n if (this._viewport)\n this._handleViewRotationChangeEvent({ viewport: this._viewport });\n });\n };\n\n private _handleKeyUp = (event: React.KeyboardEvent) => {\n // istanbul ignore else\n if (event.key === SpecialKey.Escape && this.state.mode === MapMode.Opened) {\n this._closeLargeMap();\n }\n };\n\n private _lastClientXY: Point2d = Point2d.createZero();\n\n private _processWindowDrag(movement: Point2d) {\n const vect = Vector3d.create(movement.x / this.state.drawingZoom, -movement.y / this.state.drawingZoom, 0);\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.rotation.multiplyTransposeVector(vect) : vect;\n const origin = this.state.origin.plus(offset);\n const panningDirection = this._getPanVector();\n const wasAlmostZero = this.state.panningDirection.isAlmostZero;\n this.setState({ startOrigin: origin, origin, panningDirection, isPanning: false }, () => {\n this._updateFrustum();\n if (wasAlmostZero && !this.state.panningDirection.isAlmostZero) {\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\n }\n });\n }\n\n private _processWindowEndDrag() {\n this.setState({ isMoving: false });\n this._updateFrustum(true);\n if (this.state.mode === MapMode.Closed) {\n setTimeout(() => {\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.origin.clone();\n // istanbul ignore next\n if (this._mounted) {\n this.setState({ startMapOrigin, mapOrigin, animation: 0 }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n }, 0);\n }\n }\n\n private _handleMouseDown = (event: React.MouseEvent) => {\n // Used only to determine if mouse was moved between mousedown and mouseup\n const mouseStart = Point2d.create(event.clientX, event.clientY);\n this.setState({ mouseStart });\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\n };\n\n private _handleDrawingMouseDown = (event: React.MouseEvent) => {\n if (this.state.mode === MapMode.Opened) {\n event.preventDefault();\n this.setState({ isPanning: true });\n }\n };\n\n private _handleWindowMouseDown = (event: React.MouseEvent) => {\n event.preventDefault();\n this.setState({ isMoving: true });\n };\n\n private _handleMouseDrag = (event: React.MouseEvent) => {\n const mouse = Point2d.create(event.clientX, event.clientY);\n const movement = mouse.minus(this._lastClientXY);\n if (this.state.isMoving) {\n // add scaled mouse movement\n this._processWindowDrag(movement);\n } else {\n // istanbul ignore else\n if (this.state.isPanning && this.state.mode === MapMode.Opened) {\n const vect = Vector3d.create(movement.x / this.state.drawingZoom, -movement.y / this.state.drawingZoom, 0);\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.rotation.multiplyTransposeVector(vect) : vect;\n const mapOrigin = this.state.mapOrigin.minus(offset);\n this.setState({ startMapOrigin: mapOrigin, mapOrigin });\n }\n }\n this._lastClientXY = mouse;\n };\n\n private _handleMouseDragEnd = (event: React.MouseEvent) => {\n const mouse = Point2d.create(event.clientX, event.clientY);\n if (mouse.isAlmostEqual(this.state.mouseStart) &&\n this.state.mode === MapMode.Closed &&\n (event.target === this._viewContainerElement.current || event.target === this._viewElement.current)) {\n this._openLargeMap();\n } else if (this.state.isMoving) {\n this._processWindowEndDrag();\n } else if (this.state.isPanning) {\n // istanbul ignore else\n if (this.state.mode === MapMode.Opened) {\n event.stopPropagation();\n this.setState({ isPanning: false });\n }\n } else if ((!(event.target instanceof Node) || this._rootElement.current && !this._rootElement.current.contains(event.target)) && mouse.isAlmostEqual(this.state.mouseStart)) {\n this._closeLargeMap();\n }\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\n };\n\n // istanbul ignore next - unable to test touch\n private _handleWindowTouchStart = (event: any) => {\n if (1 !== event.targetTouches.length)\n return;\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\n const mouseStart = Point2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\n this.setState({ mouseStart });\n this._lastClientXY = mouseStart.clone();\n this.setState({ isMoving: true });\n };\n\n // istanbul ignore next - unable to test touch\n private _onTouchMove = (event: TouchEvent) => {\n if (1 !== event.targetTouches.length)\n return;\n const mouse = Point2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\n const movement = mouse.minus(this._lastClientXY);\n // add scaled mouse movement\n this._processWindowDrag(movement);\n this._lastClientXY = mouse;\n };\n\n // istanbul ignore next - unable to test touch\n private _onTouchEnd = (event: TouchEvent) => {\n if (0 !== event.targetTouches.length)\n return;\n this._processWindowEndDrag();\n if (0 !== event.changedTouches.length)\n this._lastClientXY = Point2d.create(event.changedTouches[0].clientX, event.changedTouches[0].clientY); // Doesn't seem necessary...but _handleMouseDragEnd sets it...\n window.removeEventListener(\"touchmove\", this._onTouchMove);\n window.removeEventListener(\"touchend\", this._onTouchEnd);\n };\n\n /** @internal */\n public static getDefaultClosedMapSize = (): Vector3d => {\n return Vector3d.create(96, 96);\n };\n\n /** @internal */\n public static getDefaultOpenedMapSize = (paddingX: number = 0, paddingY: number = 0): Vector3d => {\n return Vector3d.create(window.innerWidth / 3 - 2 * (window.innerWidth - paddingX), window.innerHeight / 3 - 2 * paddingY);\n };\n\n private _getClosedMapSize = (): Vector3d => {\n if (this.props.closeSize === undefined)\n return DrawingNavigationAid.getDefaultClosedMapSize();\n return this.props.closeSize;\n };\n\n private _getOpenedMapSize = (): Vector3d => {\n if (this.props.openSize === undefined)\n return DrawingNavigationAid.getDefaultOpenedMapSize(this._rootOffset.right, this._rootOffset.top);\n return this.props.openSize;\n };\n\n private _openLargeMap = () => {\n // istanbul ignore else\n if (this.state.mode === MapMode.Closed && this.state.animation === 1.0) {\n // istanbul ignore else\n if (this._rootElement.current) {\n const rect = this._rootElement.current.getBoundingClientRect();\n this._rootOffset = rect;\n }\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const mapExtents = this._getOpenedMapSize();\n this.setState({\n mode: MapMode.Opened,\n isMoving: false, isPanning: false,\n mapExtents, startMapExtents,\n animation: 0,\n }, () => {\n this._animationFrame = setTimeout(this._animation);\n });\n }\n };\n\n private _closeLargeMap = () => {\n // istanbul ignore else\n if (this.state.mode === MapMode.Opened && this.state.animation === 1.0) {\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.origin.clone();\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\n const mapExtents = this._getClosedMapSize();\n const rect = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.extents : DrawingNavigationAid.findRotatedWindowDimensions(this.state.extents, this.state.rotation);\n const maxRectDim = Math.max(rect.y, rect.x);\n const maxExtentDim = Math.max(mapExtents.x, mapExtents.y);\n const drawingZoom = maxExtentDim / (3 * maxRectDim);\n const startDrawingZoom = this.state.drawingZoom;\n this.setState({\n mode: MapMode.Closed,\n startMapOrigin, mapOrigin,\n startDrawingZoom, drawingZoom,\n isMoving: false, isPanning: false,\n startMapExtents, mapExtents,\n panningDirection: Vector3d.createZero(),\n animation: 0,\n }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n }\n };\n\n private _getPanVector = () => {\n const is3D = this._isViewport3D();\n const rect = this.state.rotateMinimapWithView || is3D ? this.state.extents : DrawingNavigationAid.findRotatedWindowDimensions(this.state.extents, this.state.rotation);\n\n const mapExtents = this.state.mapExtents.scale(1 / this.state.drawingZoom);\n\n const maxMagnitude = 80; // maximum acceleration\n const magnitudeTravel = 30; // How far, in pixels, that magnitude increases from 0 to max acceleration\n\n const diff = Vector3d.createFrom(this.state.origin.minus(this.state.mapOrigin));\n const diffVector = this.state.rotateMinimapWithView || is3D ? this.state.rotation.multiplyVector(diff) : diff;\n\n // capture any values\n const magnitudeVector = Vector3d.create(\n Math.max(0, Math.abs(diffVector.x) - (mapExtents.x - rect.x) / 2),\n Math.max(0, Math.abs(diffVector.y) - (mapExtents.y - rect.y) / 2),\n );\n if (magnitudeVector.isAlmostZero)\n return Vector3d.createZero();\n const magnitude = Math.min(magnitudeVector.magnitude() * this.state.drawingZoom, magnitudeTravel) / magnitudeTravel * maxMagnitude;\n\n const vect = Vector3d.createFrom(this.state.origin.minus(this.state.mapOrigin)); // vect will never be zero or magnitude would also be zero\n const norm = vect.normalize();\n return norm!.scale(magnitude); // norm is only undefined when vect is zero, in which it would have returned at magnitudeVector.isAlmostZero\n };\n\n private _handleWheel = (event: React.WheelEvent) => {\n // istanbul ignore else\n if (this.state.mode === MapMode.Opened && this.state.animation === 1) {\n const { mapOrigin, drawingZoom } = this.state;\n const mapSize = this._getOpenedMapSize();\n\n const mouseX = event.clientX - this._rootOffset.right + mapSize.x / 2;\n const mouseY = event.clientY - this._rootOffset.top - mapSize.y / 2;\n const is3D = this._isViewport3D();\n if (event.deltaY < 0) {\n const zoom = drawingZoom * 1.1;\n const vect = Vector3d.create(mouseX * 0.1 / zoom, -mouseY * 0.1 / zoom, 0);\n const offset = this.state.rotateMinimapWithView || is3D ? this.state.rotation.multiplyTransposeVector(vect) : vect;\n const m = mapOrigin.plus(offset);\n this.setState({ mapOrigin: m, drawingZoom: zoom });\n }\n if (event.deltaY > 0) {\n const zoom = drawingZoom / 1.1;\n const vect = Vector3d.create(mouseX * 0.1 / drawingZoom, -mouseY * 0.1 / drawingZoom, 0);\n const offset = this.state.rotateMinimapWithView || is3D ? this.state.rotation.multiplyTransposeVector(vect) : vect;\n const m = mapOrigin.minus(offset);\n this.setState({ mapOrigin: m, drawingZoom: zoom });\n }\n }\n };\n\n private _handleZoomIn = () => {\n const zoom = this.state.drawingZoom * 1.4;\n this.setState({ drawingZoom: zoom });\n };\n\n private _handleZoomOut = () => {\n const zoom = this.state.drawingZoom / 1.4;\n this.setState({ drawingZoom: zoom });\n };\n\n private _handleUnrotate = () => {\n const startRotation = this.state.rotation;\n const halfExtents = this.state.extents.scale(.5);\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? Vector3d.createZero() : this.state.rotation.multiplyTransposeVector(halfExtents).minus(halfExtents);\n const startOrigin = this.state.origin;\n const origin = this.state.origin.plus(offset);\n const startMapOrigin = this.state.mapOrigin;\n const mapOrigin = this.state.mapOrigin.plus(offset);\n this.setState({ animation: 0, startOrigin, origin, startMapOrigin, mapOrigin, startRotation, rotation: Matrix3d.createIdentity() }, () => {\n this._animationFrame = setTimeout(this._animation, 16.667);\n });\n };\n\n /** @internal */\n public static findRotatedWindowDimensions = (extents: Vector3d, rotation: Matrix3d) => {\n const cos = rotation.at(0, 0);\n const sin = rotation.at(1, 0);\n // extents.x/y should be divided in half, but we don't have to do that immediately.\n const cosWidth = cos * extents.x;\n const sinHeight = sin * extents.y;\n\n const sinWidth = cos * extents.x;\n const cosHeight = sin * extents.y;\n\n const a = Math.atan2(sin, cos);\n\n if (a % Math.PI >= 0 && a % Math.PI < Math.PI / 2) {\n const y1 = -cosHeight - sinWidth;\n const x2 = cosWidth + sinHeight;\n const y3 = cosHeight + sinWidth;\n const x4 = -cosWidth - sinHeight;\n // Instead, divide total difference\n return Vector3d.create(Math.abs(x2 - x4) / 2, Math.abs(y1 - y3) / 2);\n } else {\n const x1 = -cosWidth + sinHeight;\n const y2 = -cosHeight + sinWidth;\n const x3 = cosWidth - sinHeight;\n const y4 = cosHeight - sinWidth;\n return Vector3d.create(Math.abs(x1 - x3) / 2, Math.abs(y2 - y4) / 2);\n }\n };\n}\n\n/** @internal */\nexport interface DrawingNavigationCanvasProps {\n view: ViewState | undefined;\n viewId?: string;\n origin: Point3d;\n extents: Vector3d;\n zoom: number;\n rotation: Matrix3d;\n viewManagerOverride?: ViewManager;\n screenViewportOverride?: typeof ScreenViewport;\n canvasSizeOverride?: boolean;\n}\n\n/** @internal */\nexport class DrawingNavigationCanvas extends React.Component<DrawingNavigationCanvasProps> {\n private _canvasElement = React.createRef<HTMLDivElement>();\n private _vp?: ScreenViewport;\n\n public override render(): React.ReactNode {\n return (\n <div className=\"drawing-canvas\"\n data-testid=\"drawing-canvas\"\n ref={this._canvasElement}>\n </div>\n );\n }\n\n public override componentDidMount() {\n if (this._canvasElement.current && this.props.view !== undefined) {\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\n /* istanbul ignore next */\n const screenViewport = this.props.screenViewportOverride ? this.props.screenViewportOverride : /* istanbul ignore next */ ScreenViewport;\n const previousView = viewManager.selectedView;\n this._vp = screenViewport.create(this._canvasElement.current, this.props.view);\n this.customizeViewport(this._vp);\n viewManager.addViewport(this._vp);\n void viewManager.setSelectedView(previousView); // switch to original viewport\n this._update();\n }\n }\n\n private customizeViewport(vp: ScreenViewport): void {\n /* istanbul ignore next */\n if (vp.logo.style)\n vp.logo.style.display = \"none\";\n\n /* istanbul ignore next */\n if (vp.viewFlags.acsTriad)\n vp.viewFlags = vp.viewFlags.with(\"acsTriad\", false);\n }\n\n private _update = () => {\n // istanbul ignore else\n if (this._vp) {\n const max = Math.max(this.props.extents.x, this.props.extents.y);\n this._vp.view.extentLimits = { max, min: Constant.oneMillimeter };\n this._vp.view.setOrigin(this.props.origin);\n this._vp.view.setRotation(this.props.rotation);\n this._vp.view.setExtents(this.props.extents);\n this._vp.applyViewState(this._vp.view);\n }\n };\n\n public override componentDidUpdate(oldProps: DrawingNavigationCanvasProps) {\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\n if (this.props.view !== undefined) {\n if (oldProps.view !== this.props.view) {\n const screenViewport = this.props.screenViewportOverride ? this.props.screenViewportOverride : /* istanbul ignore next */ ScreenViewport;\n if (oldProps !== undefined && oldProps.viewId !== \"\" && oldProps.viewId !== this.props.viewId && this._vp) {\n viewManager.dropViewport(this._vp, true);\n }\n // istanbul ignore else\n if (this._canvasElement.current &&\n (this.props.canvasSizeOverride ||\n ( /* istanbul ignore next */ this._canvasElement.current.clientWidth !== 0 && /* istanbul ignore next */ this._canvasElement.current.clientHeight !== 0))) {\n const previousView = viewManager.selectedView;\n this._vp = screenViewport.create(this._canvasElement.current, this.props.view.clone());\n this.customizeViewport(this._vp);\n viewManager.addViewport(this._vp);\n void viewManager.setSelectedView(previousView); // switch to original viewport\n this._update();\n }\n } else if (!this.props.origin.isExactEqual(oldProps.origin) || !this.props.extents.isExactEqual(oldProps.extents) || this.props.zoom !== oldProps.zoom || !this.props.rotation.isExactEqual(oldProps.rotation)) {\n this._update();\n }\n }\n }\n\n public override componentWillUnmount() {\n if (this._vp) {\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\n viewManager.dropViewport(this._vp, true);\n }\n }\n\n}\n"]}
1
+ {"version":3,"file":"DrawingNavigationAid.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/navigationaids/DrawingNavigationAid.tsx"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module NavigationAids\r\n */\r\n\r\nimport \"./DrawingNavigationAid.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport * as ReactDOM from \"react-dom\";\r\nimport { Constant, Geometry, Matrix3d, Point2d, Point3d, Point4d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { IModelApp, IModelConnection, ScreenViewport, ViewManager, Viewport, ViewState } from \"@itwin/core-frontend\";\r\nimport { SpecialKey } from \"@itwin/appui-abstract\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\nimport { ViewportComponentEvents, ViewRotationChangeEventArgs } from \"../viewport/ViewportComponentEvents\";\r\n\r\n// cSpell:ignore Quaternion Quaternions unrotate\r\n/* eslint-disable jsx-a11y/click-events-have-key-events */\r\n\r\n/**\r\n * Enum for mode that minimap is currently in\r\n * @internal\r\n */\r\nexport enum MapMode {\r\n Opened = \"map-opened\",\r\n Closed = \"map-closed\",\r\n}\r\n\r\n/** Properties for the [[DrawingNavigationAid]] component\r\n * @public\r\n */\r\nexport interface DrawingNavigationAidProps extends CommonProps {\r\n iModelConnection: IModelConnection;\r\n viewport?: Viewport;\r\n\r\n // used only in testing\r\n\r\n /** @internal */\r\n animationTime?: number;\r\n /** @internal */\r\n openSize?: Vector3d;\r\n /** @internal */\r\n closeSize?: Vector3d;\r\n /** @internal */\r\n initialMapMode?: MapMode;\r\n /** @internal */\r\n onAnimationEnd?: () => void;\r\n /** @internal */\r\n initialRotateMinimapWithView?: boolean;\r\n /** @internal */\r\n initialView?: ViewState;\r\n /** @internal */\r\n viewManagerOverride?: ViewManager;\r\n /** @internal */\r\n screenViewportOverride?: typeof ScreenViewport;\r\n}\r\n\r\n/** @internal */\r\ninterface DrawingNavigationAidState {\r\n startOrigin: Point3d;\r\n origin: Point3d;\r\n extents: Vector3d;\r\n startRotation: Matrix3d;\r\n rotation: Matrix3d;\r\n\r\n startMapOrigin: Point3d;\r\n mapOrigin: Point3d;\r\n startMapExtents: Vector3d;\r\n mapExtents: Vector3d;\r\n\r\n mouseStart: Point2d;\r\n panningDirection: Vector3d;\r\n startDrawingZoom: number;\r\n drawingZoom: number;\r\n\r\n mode: MapMode;\r\n animation: number;\r\n\r\n isMoving: boolean;\r\n isPanning: boolean;\r\n\r\n viewId: string;\r\n view: ViewState | undefined;\r\n\r\n rotateMinimapWithView: boolean;\r\n}\r\n\r\n/**\r\n * A Drawing Navigation Aid.\r\n * @public\r\n */\r\nexport class DrawingNavigationAid extends React.Component<DrawingNavigationAidProps, DrawingNavigationAidState> {\r\n private _rootElement = React.createRef<HTMLDivElement>();\r\n private _viewContainerElement = React.createRef<HTMLDivElement>();\r\n private _viewElement = React.createRef<HTMLDivElement>();\r\n private _rootOffset: DOMRect = DOMRect.fromRect({ x: 0, y: 0, width: 0, height: 0 });\r\n private _viewport: Viewport | undefined;\r\n private _animationFrame: any;\r\n private _mounted: boolean = false;\r\n\r\n /** @internal */\r\n public override readonly state: Readonly<DrawingNavigationAidState>;\r\n\r\n constructor(props: DrawingNavigationAidProps) {\r\n super(props);\r\n const mode = props.initialMapMode || MapMode.Closed;\r\n const mapExtents = mode === MapMode.Closed ? this._getClosedMapSize() : this._getOpenedMapSize();\r\n const startMapExtents = mapExtents;\r\n\r\n this.state = {\r\n startOrigin: Point3d.createZero(),\r\n origin: Point3d.createZero(),\r\n extents: Vector3d.create(1, 1, 1),\r\n startRotation: Matrix3d.createIdentity(),\r\n rotation: Matrix3d.createIdentity(),\r\n\r\n startMapOrigin: Point3d.createZero(),\r\n mapOrigin: Point3d.createZero(),\r\n startMapExtents,\r\n mapExtents,\r\n\r\n mouseStart: Point2d.createZero(),\r\n panningDirection: Vector3d.createZero(),\r\n startDrawingZoom: 1.0,\r\n drawingZoom: 1.0,\r\n\r\n mode,\r\n animation: 1.0,\r\n\r\n viewId: props.initialView !== undefined ? props.initialView.id : \"\",\r\n view: props.initialView,\r\n\r\n isMoving: false,\r\n isPanning: false,\r\n rotateMinimapWithView: props.initialRotateMinimapWithView !== undefined ? props.initialRotateMinimapWithView : false,\r\n };\r\n }\r\n\r\n /** @internal */\r\n public override render(): React.ReactNode {\r\n const {\r\n startOrigin, origin, extents,\r\n startRotation, rotation,\r\n startMapOrigin, mapOrigin,\r\n startMapExtents, mapExtents,\r\n startDrawingZoom, drawingZoom,\r\n animation,\r\n viewId,\r\n mode, rotateMinimapWithView,\r\n } = this.state;\r\n\r\n const a = DrawingNavigationAid._animationFn(animation);\r\n const rot = Matrix3d.createFromQuaternion(Point4d.interpolateQuaternions(startRotation.toQuaternion(), a, rotation.toQuaternion()));\r\n const or = startOrigin.interpolate(a, origin);\r\n const map = startMapOrigin.interpolate(a, mapOrigin);\r\n const sz = startMapExtents.interpolate(a, mapExtents);\r\n const dz = Geometry.interpolate(startDrawingZoom, a, drawingZoom);\r\n\r\n const rootStyle: React.CSSProperties = {\r\n width: sz.x, height: sz.y,\r\n ...this.props.style,\r\n };\r\n const is3D = this._isViewport3D();\r\n\r\n const tOr = rotateMinimapWithView || is3D ? rotation.multiplyVector(Vector3d.createFrom(or)) : Vector3d.createFrom(or);\r\n const tMap = rotateMinimapWithView || is3D ? rotation.multiplyVector(Vector3d.createFrom(map)) : Vector3d.createFrom(map);\r\n\r\n const tPosX = (tOr.x - extents.x / 2 - tMap.x) * dz + sz.x / 2;\r\n const tPosY = (-tOr.y - extents.y / 2 + tMap.y) * dz + sz.y / 2;\r\n const viewWindowStyle = {\r\n transform: `translate(${tPosX}px, ${tPosY}px)`,\r\n height: extents.y * dz,\r\n width: extents.x * dz,\r\n };\r\n if (!rotateMinimapWithView && !is3D)\r\n viewWindowStyle.transform =\r\n \"matrix3d(\" +\r\n `${rot.at(0, 0)}, ${rot.at(1, 0)}, ${rot.at(2, 0)}, 0, ` +\r\n `${rot.at(0, 1)}, ${rot.at(1, 1)}, ${rot.at(2, 1)}, 0, ` +\r\n `${rot.at(0, 2)}, ${rot.at(1, 2)}, ${rot.at(2, 2)}, 0, ` +\r\n `${tPosX}, ${tPosY}, 0, 1)`;\r\n const isAnimating = animation !== 1 && !startMapExtents.isExactEqual(mapExtents);\r\n if (mode === MapMode.Opened || isAnimating) {\r\n rootStyle.position = \"fixed\";\r\n rootStyle.right = window.innerWidth - this._rootOffset.right;\r\n rootStyle.top = this._rootOffset.top;\r\n }\r\n\r\n const halfExtents = extents.scale(.5);\r\n const offset = rotateMinimapWithView || is3D ? Vector3d.createZero() : rotation.multiplyTransposeVector(halfExtents).minus(halfExtents);\r\n\r\n const unrotateLabel = UiIModelComponents.translate(\"drawing.unrotate\");\r\n const e = sz.scale(1 / dz);\r\n const halfMapExtents = e.scale(.5);\r\n const mapOffset = rotateMinimapWithView || is3D ? rotation.multiplyTransposeVector(halfMapExtents) : halfMapExtents;\r\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\r\n const screenViewport = this.props.screenViewportOverride ? this.props.screenViewportOverride : /* istanbul ignore next */ ScreenViewport;\r\n const nodes = (\r\n <div className={classnames(\"components-drawing-navigation-aid\", this.props.className)}\r\n data-testid=\"components-drawing-navigation-aid\"\r\n ref={this._rootElement}\r\n onWheel={this._handleWheel}\r\n onMouseDown={this._handleDrawingMouseDown}\r\n style={rootStyle}\r\n role=\"presentation\">\r\n <DrawingNavigationCanvas view={this.state.view} viewManagerOverride={viewManager} screenViewportOverride={screenViewport} viewId={viewId} origin={map.plus(offset).minus(mapOffset)} extents={e} zoom={dz} rotation={rotateMinimapWithView || is3D ? rotation : Matrix3d.createIdentity()} />\r\n <div className=\"drawing-container\"\r\n data-testid=\"drawing-container\"\r\n ref={this._viewContainerElement}>\r\n <div className=\"drawing-view-window\"\r\n data-testid=\"drawing-view-window\"\r\n onMouseDown={this._handleWindowMouseDown}\r\n onTouchStart={this._handleWindowTouchStart}\r\n style={viewWindowStyle}\r\n ref={this._viewElement}\r\n role=\"presentation\" />\r\n {!is3D &&\r\n <div className={classnames(\"toggle-rotate-style\", \"icon\", \"icon-rotate-left\", { checked: rotateMinimapWithView })} data-testid=\"toggle-rotate-style\"\r\n style={mode === MapMode.Closed && !isAnimating ? { bottom: 2, left: 2 } : {}}\r\n title={UiIModelComponents.translate(\"drawing.rotateStyle\")}\r\n onClick={this._toggleRotationMode}\r\n role=\"presentation\" />}\r\n {!rot.isIdentity &&\r\n <div className=\"unrotate-button\" data-testid=\"drawing-unrotate-button\" style={mode === MapMode.Closed && !isAnimating ? { top: 2 } : {}} onClick={this._handleUnrotate}\r\n role=\"button\" tabIndex={-1}\r\n >\r\n {unrotateLabel}\r\n </div>\r\n }\r\n {mode === MapMode.Opened && !isAnimating && <>\r\n <div className=\"close\" data-testid=\"drawing-close-button\" onClick={this._closeLargeMap} role=\"button\" tabIndex={-1}>\r\n <div className=\"close-icon icon icon-sort-up\" />\r\n </div>\r\n <div className=\"zoom\">\r\n <div className=\"zoom-button icon icon-add\" data-testid=\"drawing-zoom-in-button\" onClick={this._handleZoomIn} role=\"button\" tabIndex={-1} />\r\n <div className=\"zoom-button icon icon-remove-2\" data-testid=\"drawing-zoom-out-button\" onClick={this._handleZoomOut} role=\"button\" tabIndex={-1} />\r\n </div>\r\n </>}\r\n </div>\r\n </div>\r\n );\r\n if (mode === MapMode.Closed && (animation === 1.0 || startMapExtents.isExactEqual(mapExtents))) {\r\n return nodes;\r\n } else {\r\n let drawingPortal = document.querySelector(\"#components-drawing-portal\");\r\n if (!drawingPortal) {\r\n drawingPortal = document.createElement(\"div\");\r\n drawingPortal.id = \"components-drawing-portal\";\r\n document.body.appendChild(drawingPortal);\r\n }\r\n return ReactDOM.createPortal(nodes, drawingPortal);\r\n }\r\n }\r\n\r\n private _isViewport3D = () => {\r\n return this.state.view !== undefined && this.state.view.is3d();\r\n };\r\n\r\n private _lastTime: number | undefined;\r\n\r\n private static _animationFn = (t: number) => t < .5 ? 2 * t ** 2 : -1 + (4 - 2 * t) * t;\r\n\r\n private _animation = () => {\r\n const t = Date.now();\r\n const delta = this._lastTime ? t - this._lastTime : 16;\r\n this._lastTime = t;\r\n if (this.state.animation !== 1) {\r\n const animation = Math.min(1, this.state.animation + delta / (1000 * (this.props.animationTime || 0.4)));\r\n this._updateFrustum();\r\n\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ animation }, () => {\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n });\r\n }\r\n } else {\r\n this._lastTime = undefined;\r\n this._animationEnd();\r\n }\r\n };\r\n\r\n private _animationEnd = () => {\r\n const hasViewportMoved = !this.state.origin.isAlmostEqual(this.state.startOrigin) ||\r\n !this.state.rotation.isAlmostEqual(this.state.startRotation);\r\n const startMapOrigin = Point3d.createFrom(this.state.mapOrigin);\r\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\r\n const startDrawingZoom = this.state.drawingZoom;\r\n const startOrigin = this.state.origin;\r\n const startRotation = this.state.rotation;\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ startMapOrigin, startDrawingZoom, startOrigin, startRotation, startMapExtents }, () => {\r\n // istanbul ignore else\r\n if (this.props.onAnimationEnd)\r\n this.props.onAnimationEnd();\r\n if (hasViewportMoved)\r\n this._updateFrustum(true);\r\n });\r\n }\r\n };\r\n\r\n private _lastPanTime: number | undefined;\r\n\r\n private _panAnimation = () => {\r\n const t = Date.now();\r\n if (this._lastPanTime === undefined)\r\n this._lastPanTime = t - 16.667;\r\n const delta = t - this._lastPanTime;\r\n this._lastPanTime = t;\r\n // istanbul ignore else\r\n if (!this.state.panningDirection.isAlmostZero && this.state.isMoving) {\r\n const { panningDirection } = this.state;\r\n const offset = panningDirection.scale(delta / 1000 / this.state.drawingZoom);\r\n const mapOrigin = this.state.mapOrigin.plus(offset);\r\n\r\n const origin = this.state.origin.plus(offset);\r\n this._updateFrustum();\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ mapOrigin, origin, panningDirection }, () => {\r\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\r\n });\r\n }\r\n } else {\r\n this._lastPanTime = undefined;\r\n this._updateFrustum(true);\r\n }\r\n };\r\n\r\n public override componentDidMount() {\r\n this._mounted = true;\r\n ViewportComponentEvents.onViewRotationChangeEvent.addListener(this._handleViewRotationChangeEvent);\r\n window.addEventListener(\"mousedown\", this._handleMouseDown as any);\r\n window.addEventListener(\"mouseup\", this._handleMouseDragEnd as any);\r\n window.addEventListener(\"mousemove\", this._handleMouseDrag as any);\r\n window.addEventListener(\"keyup\", this._handleKeyUp as any);\r\n }\r\n\r\n public override componentWillUnmount() {\r\n ViewportComponentEvents.onViewRotationChangeEvent.removeListener(this._handleViewRotationChangeEvent);\r\n window.removeEventListener(\"mousedown\", this._handleMouseDown as any);\r\n window.removeEventListener(\"mouseup\", this._handleMouseDragEnd as any);\r\n window.removeEventListener(\"mousemove\", this._handleMouseDrag as any);\r\n window.removeEventListener(\"keyup\", this._handleKeyUp as any);\r\n clearTimeout(this._animationFrame);\r\n if (this.props.onAnimationEnd)\r\n this.props.onAnimationEnd();\r\n\r\n const rt = document.getElementById(\"components-drawing-portal\") as HTMLDivElement;\r\n if (rt && rt.parentElement !== null && rt.children.length === 0) {\r\n rt.parentElement.removeChild(rt);\r\n }\r\n this._mounted = false;\r\n }\r\n\r\n // Synchronize with rotation coming from the Viewport\r\n private _handleViewRotationChangeEvent = (args: ViewRotationChangeEventArgs) => {\r\n // istanbul ignore else\r\n if (!this.state.isMoving && !this.state.isPanning && this.props.viewport === args.viewport) {\r\n const extents = args.viewport.view.getExtents().clone();\r\n const rotation = args.viewport.view.getRotation().clone();\r\n const halfExtents = extents.scale(.5);\r\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? rotation.multiplyTransposeVector(halfExtents) : halfExtents;\r\n const origin = args.viewport.view.getOrigin().plus(offset);\r\n const deltaZoom = (this.state.extents.x - extents.x) / this.state.extents.x;\r\n let drawingZoom = this.state.drawingZoom / (1 - deltaZoom);\r\n const deltaOrigin = origin.minus(this.state.origin);\r\n let mapOrigin = this.state.mapOrigin.plus(deltaOrigin);\r\n mapOrigin = mapOrigin.plus(Vector3d.createFrom(origin.minus(mapOrigin)).scale(deltaZoom));\r\n if (this.state.viewId !== args.viewport.view.id) {\r\n const rect = this.state.rotateMinimapWithView || this._isViewport3D() ? extents : DrawingNavigationAid.findRotatedWindowDimensions(extents, rotation);\r\n const maxRectDim = Math.max(rect.y, rect.x);\r\n const maxExtentDim = Math.max(this.state.mapExtents.x, this.state.mapExtents.y);\r\n drawingZoom = maxExtentDim / (3 * maxRectDim);\r\n mapOrigin = origin.clone();\r\n this._viewport = args.viewport;\r\n this.setState({ viewId: args.viewport.view.id, view: args.viewport.view.clone() });\r\n }\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({\r\n startOrigin: origin, origin, extents,\r\n startRotation: rotation, rotation,\r\n startMapOrigin: mapOrigin, mapOrigin,\r\n startDrawingZoom: drawingZoom, drawingZoom,\r\n });\r\n }\r\n }\r\n };\r\n\r\n private _updateFrustum = (complete: boolean = false) => {\r\n const halfExtents = this.state.extents.scale(.5);\r\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.rotation.multiplyTransposeVector(halfExtents) : halfExtents;\r\n const origin = this.state.origin.minus(offset);\r\n ViewportComponentEvents.setDrawingViewportState(origin, this.state.rotation, complete);\r\n };\r\n\r\n private _toggleRotationMode = () => {\r\n const rotateMinimapWithView = !this.state.rotateMinimapWithView;\r\n this.setState({ rotateMinimapWithView }, () => {\r\n if (this._viewport)\r\n this._handleViewRotationChangeEvent({ viewport: this._viewport });\r\n });\r\n };\r\n\r\n private _handleKeyUp = (event: React.KeyboardEvent) => {\r\n // istanbul ignore else\r\n if (event.key === SpecialKey.Escape && this.state.mode === MapMode.Opened) {\r\n this._closeLargeMap();\r\n }\r\n };\r\n\r\n private _lastClientXY: Point2d = Point2d.createZero();\r\n\r\n private _processWindowDrag(movement: Point2d) {\r\n const vect = Vector3d.create(movement.x / this.state.drawingZoom, -movement.y / this.state.drawingZoom, 0);\r\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.rotation.multiplyTransposeVector(vect) : vect;\r\n const origin = this.state.origin.plus(offset);\r\n const panningDirection = this._getPanVector();\r\n const wasAlmostZero = this.state.panningDirection.isAlmostZero;\r\n this.setState({ startOrigin: origin, origin, panningDirection, isPanning: false }, () => {\r\n this._updateFrustum();\r\n if (wasAlmostZero && !this.state.panningDirection.isAlmostZero) {\r\n this._animationFrame = setTimeout(this._panAnimation, 16.667);\r\n }\r\n });\r\n }\r\n\r\n private _processWindowEndDrag() {\r\n this.setState({ isMoving: false });\r\n this._updateFrustum(true);\r\n if (this.state.mode === MapMode.Closed) {\r\n setTimeout(() => {\r\n const startMapOrigin = this.state.mapOrigin;\r\n const mapOrigin = this.state.origin.clone();\r\n // istanbul ignore next\r\n if (this._mounted) {\r\n this.setState({ startMapOrigin, mapOrigin, animation: 0 }, () => {\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n });\r\n }\r\n }, 0);\r\n }\r\n }\r\n\r\n private _handleMouseDown = (event: React.MouseEvent) => {\r\n // Used only to determine if mouse was moved between mousedown and mouseup\r\n const mouseStart = Point2d.create(event.clientX, event.clientY);\r\n this.setState({ mouseStart });\r\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\r\n };\r\n\r\n private _handleDrawingMouseDown = (event: React.MouseEvent) => {\r\n if (this.state.mode === MapMode.Opened) {\r\n event.preventDefault();\r\n this.setState({ isPanning: true });\r\n }\r\n };\r\n\r\n private _handleWindowMouseDown = (event: React.MouseEvent) => {\r\n event.preventDefault();\r\n this.setState({ isMoving: true });\r\n };\r\n\r\n private _handleMouseDrag = (event: React.MouseEvent) => {\r\n const mouse = Point2d.create(event.clientX, event.clientY);\r\n const movement = mouse.minus(this._lastClientXY);\r\n if (this.state.isMoving) {\r\n // add scaled mouse movement\r\n this._processWindowDrag(movement);\r\n } else {\r\n // istanbul ignore else\r\n if (this.state.isPanning && this.state.mode === MapMode.Opened) {\r\n const vect = Vector3d.create(movement.x / this.state.drawingZoom, -movement.y / this.state.drawingZoom, 0);\r\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.rotation.multiplyTransposeVector(vect) : vect;\r\n const mapOrigin = this.state.mapOrigin.minus(offset);\r\n this.setState({ startMapOrigin: mapOrigin, mapOrigin });\r\n }\r\n }\r\n this._lastClientXY = mouse;\r\n };\r\n\r\n private _handleMouseDragEnd = (event: React.MouseEvent) => {\r\n const mouse = Point2d.create(event.clientX, event.clientY);\r\n if (mouse.isAlmostEqual(this.state.mouseStart) &&\r\n this.state.mode === MapMode.Closed &&\r\n (event.target === this._viewContainerElement.current || event.target === this._viewElement.current)) {\r\n this._openLargeMap();\r\n } else if (this.state.isMoving) {\r\n this._processWindowEndDrag();\r\n } else if (this.state.isPanning) {\r\n // istanbul ignore else\r\n if (this.state.mode === MapMode.Opened) {\r\n event.stopPropagation();\r\n this.setState({ isPanning: false });\r\n }\r\n } else if ((!(event.target instanceof Node) || this._rootElement.current && !this._rootElement.current.contains(event.target)) && mouse.isAlmostEqual(this.state.mouseStart)) {\r\n this._closeLargeMap();\r\n }\r\n this._lastClientXY = Point2d.create(event.clientX, event.clientY);\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _handleWindowTouchStart = (event: any) => {\r\n if (1 !== event.targetTouches.length)\r\n return;\r\n window.addEventListener(\"touchmove\", this._onTouchMove, false);\r\n window.addEventListener(\"touchend\", this._onTouchEnd, false);\r\n const mouseStart = Point2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n this.setState({ mouseStart });\r\n this._lastClientXY = mouseStart.clone();\r\n this.setState({ isMoving: true });\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _onTouchMove = (event: TouchEvent) => {\r\n if (1 !== event.targetTouches.length)\r\n return;\r\n const mouse = Point2d.create(event.targetTouches[0].clientX, event.targetTouches[0].clientY);\r\n const movement = mouse.minus(this._lastClientXY);\r\n // add scaled mouse movement\r\n this._processWindowDrag(movement);\r\n this._lastClientXY = mouse;\r\n };\r\n\r\n // istanbul ignore next - unable to test touch\r\n private _onTouchEnd = (event: TouchEvent) => {\r\n if (0 !== event.targetTouches.length)\r\n return;\r\n this._processWindowEndDrag();\r\n if (0 !== event.changedTouches.length)\r\n this._lastClientXY = Point2d.create(event.changedTouches[0].clientX, event.changedTouches[0].clientY); // Doesn't seem necessary...but _handleMouseDragEnd sets it...\r\n window.removeEventListener(\"touchmove\", this._onTouchMove);\r\n window.removeEventListener(\"touchend\", this._onTouchEnd);\r\n };\r\n\r\n /** @internal */\r\n public static getDefaultClosedMapSize = (): Vector3d => {\r\n return Vector3d.create(96, 96);\r\n };\r\n\r\n /** @internal */\r\n public static getDefaultOpenedMapSize = (paddingX: number = 0, paddingY: number = 0): Vector3d => {\r\n return Vector3d.create(window.innerWidth / 3 - 2 * (window.innerWidth - paddingX), window.innerHeight / 3 - 2 * paddingY);\r\n };\r\n\r\n private _getClosedMapSize = (): Vector3d => {\r\n if (this.props.closeSize === undefined)\r\n return DrawingNavigationAid.getDefaultClosedMapSize();\r\n return this.props.closeSize;\r\n };\r\n\r\n private _getOpenedMapSize = (): Vector3d => {\r\n if (this.props.openSize === undefined)\r\n return DrawingNavigationAid.getDefaultOpenedMapSize(this._rootOffset.right, this._rootOffset.top);\r\n return this.props.openSize;\r\n };\r\n\r\n private _openLargeMap = () => {\r\n // istanbul ignore else\r\n if (this.state.mode === MapMode.Closed && this.state.animation === 1.0) {\r\n // istanbul ignore else\r\n if (this._rootElement.current) {\r\n const rect = this._rootElement.current.getBoundingClientRect();\r\n this._rootOffset = rect;\r\n }\r\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\r\n const mapExtents = this._getOpenedMapSize();\r\n this.setState({\r\n mode: MapMode.Opened,\r\n isMoving: false, isPanning: false,\r\n mapExtents, startMapExtents,\r\n animation: 0,\r\n }, () => {\r\n this._animationFrame = setTimeout(this._animation);\r\n });\r\n }\r\n };\r\n\r\n private _closeLargeMap = () => {\r\n // istanbul ignore else\r\n if (this.state.mode === MapMode.Opened && this.state.animation === 1.0) {\r\n const startMapOrigin = this.state.mapOrigin;\r\n const mapOrigin = this.state.origin.clone();\r\n const startMapExtents = Vector3d.createFrom(this.state.mapExtents);\r\n const mapExtents = this._getClosedMapSize();\r\n const rect = this.state.rotateMinimapWithView || this._isViewport3D() ? this.state.extents : DrawingNavigationAid.findRotatedWindowDimensions(this.state.extents, this.state.rotation);\r\n const maxRectDim = Math.max(rect.y, rect.x);\r\n const maxExtentDim = Math.max(mapExtents.x, mapExtents.y);\r\n const drawingZoom = maxExtentDim / (3 * maxRectDim);\r\n const startDrawingZoom = this.state.drawingZoom;\r\n this.setState({\r\n mode: MapMode.Closed,\r\n startMapOrigin, mapOrigin,\r\n startDrawingZoom, drawingZoom,\r\n isMoving: false, isPanning: false,\r\n startMapExtents, mapExtents,\r\n panningDirection: Vector3d.createZero(),\r\n animation: 0,\r\n }, () => {\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n });\r\n }\r\n };\r\n\r\n private _getPanVector = () => {\r\n const is3D = this._isViewport3D();\r\n const rect = this.state.rotateMinimapWithView || is3D ? this.state.extents : DrawingNavigationAid.findRotatedWindowDimensions(this.state.extents, this.state.rotation);\r\n\r\n const mapExtents = this.state.mapExtents.scale(1 / this.state.drawingZoom);\r\n\r\n const maxMagnitude = 80; // maximum acceleration\r\n const magnitudeTravel = 30; // How far, in pixels, that magnitude increases from 0 to max acceleration\r\n\r\n const diff = Vector3d.createFrom(this.state.origin.minus(this.state.mapOrigin));\r\n const diffVector = this.state.rotateMinimapWithView || is3D ? this.state.rotation.multiplyVector(diff) : diff;\r\n\r\n // capture any values\r\n const magnitudeVector = Vector3d.create(\r\n Math.max(0, Math.abs(diffVector.x) - (mapExtents.x - rect.x) / 2),\r\n Math.max(0, Math.abs(diffVector.y) - (mapExtents.y - rect.y) / 2),\r\n );\r\n if (magnitudeVector.isAlmostZero)\r\n return Vector3d.createZero();\r\n const magnitude = Math.min(magnitudeVector.magnitude() * this.state.drawingZoom, magnitudeTravel) / magnitudeTravel * maxMagnitude;\r\n\r\n const vect = Vector3d.createFrom(this.state.origin.minus(this.state.mapOrigin)); // vect will never be zero or magnitude would also be zero\r\n const norm = vect.normalize();\r\n return norm!.scale(magnitude); // norm is only undefined when vect is zero, in which it would have returned at magnitudeVector.isAlmostZero\r\n };\r\n\r\n private _handleWheel = (event: React.WheelEvent) => {\r\n // istanbul ignore else\r\n if (this.state.mode === MapMode.Opened && this.state.animation === 1) {\r\n const { mapOrigin, drawingZoom } = this.state;\r\n const mapSize = this._getOpenedMapSize();\r\n\r\n const mouseX = event.clientX - this._rootOffset.right + mapSize.x / 2;\r\n const mouseY = event.clientY - this._rootOffset.top - mapSize.y / 2;\r\n const is3D = this._isViewport3D();\r\n if (event.deltaY < 0) {\r\n const zoom = drawingZoom * 1.1;\r\n const vect = Vector3d.create(mouseX * 0.1 / zoom, -mouseY * 0.1 / zoom, 0);\r\n const offset = this.state.rotateMinimapWithView || is3D ? this.state.rotation.multiplyTransposeVector(vect) : vect;\r\n const m = mapOrigin.plus(offset);\r\n this.setState({ mapOrigin: m, drawingZoom: zoom });\r\n }\r\n if (event.deltaY > 0) {\r\n const zoom = drawingZoom / 1.1;\r\n const vect = Vector3d.create(mouseX * 0.1 / drawingZoom, -mouseY * 0.1 / drawingZoom, 0);\r\n const offset = this.state.rotateMinimapWithView || is3D ? this.state.rotation.multiplyTransposeVector(vect) : vect;\r\n const m = mapOrigin.minus(offset);\r\n this.setState({ mapOrigin: m, drawingZoom: zoom });\r\n }\r\n }\r\n };\r\n\r\n private _handleZoomIn = () => {\r\n const zoom = this.state.drawingZoom * 1.4;\r\n this.setState({ drawingZoom: zoom });\r\n };\r\n\r\n private _handleZoomOut = () => {\r\n const zoom = this.state.drawingZoom / 1.4;\r\n this.setState({ drawingZoom: zoom });\r\n };\r\n\r\n private _handleUnrotate = () => {\r\n const startRotation = this.state.rotation;\r\n const halfExtents = this.state.extents.scale(.5);\r\n const offset = this.state.rotateMinimapWithView || this._isViewport3D() ? Vector3d.createZero() : this.state.rotation.multiplyTransposeVector(halfExtents).minus(halfExtents);\r\n const startOrigin = this.state.origin;\r\n const origin = this.state.origin.plus(offset);\r\n const startMapOrigin = this.state.mapOrigin;\r\n const mapOrigin = this.state.mapOrigin.plus(offset);\r\n this.setState({ animation: 0, startOrigin, origin, startMapOrigin, mapOrigin, startRotation, rotation: Matrix3d.createIdentity() }, () => {\r\n this._animationFrame = setTimeout(this._animation, 16.667);\r\n });\r\n };\r\n\r\n /** @internal */\r\n public static findRotatedWindowDimensions = (extents: Vector3d, rotation: Matrix3d) => {\r\n const cos = rotation.at(0, 0);\r\n const sin = rotation.at(1, 0);\r\n // extents.x/y should be divided in half, but we don't have to do that immediately.\r\n const cosWidth = cos * extents.x;\r\n const sinHeight = sin * extents.y;\r\n\r\n const sinWidth = cos * extents.x;\r\n const cosHeight = sin * extents.y;\r\n\r\n const a = Math.atan2(sin, cos);\r\n\r\n if (a % Math.PI >= 0 && a % Math.PI < Math.PI / 2) {\r\n const y1 = -cosHeight - sinWidth;\r\n const x2 = cosWidth + sinHeight;\r\n const y3 = cosHeight + sinWidth;\r\n const x4 = -cosWidth - sinHeight;\r\n // Instead, divide total difference\r\n return Vector3d.create(Math.abs(x2 - x4) / 2, Math.abs(y1 - y3) / 2);\r\n } else {\r\n const x1 = -cosWidth + sinHeight;\r\n const y2 = -cosHeight + sinWidth;\r\n const x3 = cosWidth - sinHeight;\r\n const y4 = cosHeight - sinWidth;\r\n return Vector3d.create(Math.abs(x1 - x3) / 2, Math.abs(y2 - y4) / 2);\r\n }\r\n };\r\n}\r\n\r\n/** @internal */\r\nexport interface DrawingNavigationCanvasProps {\r\n view: ViewState | undefined;\r\n viewId?: string;\r\n origin: Point3d;\r\n extents: Vector3d;\r\n zoom: number;\r\n rotation: Matrix3d;\r\n viewManagerOverride?: ViewManager;\r\n screenViewportOverride?: typeof ScreenViewport;\r\n canvasSizeOverride?: boolean;\r\n}\r\n\r\n/** @internal */\r\nexport class DrawingNavigationCanvas extends React.Component<DrawingNavigationCanvasProps> {\r\n private _canvasElement = React.createRef<HTMLDivElement>();\r\n private _vp?: ScreenViewport;\r\n\r\n public override render(): React.ReactNode {\r\n return (\r\n <div className=\"drawing-canvas\"\r\n data-testid=\"drawing-canvas\"\r\n ref={this._canvasElement}>\r\n </div>\r\n );\r\n }\r\n\r\n public override componentDidMount() {\r\n if (this._canvasElement.current && this.props.view !== undefined) {\r\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\r\n /* istanbul ignore next */\r\n const screenViewport = this.props.screenViewportOverride ? this.props.screenViewportOverride : /* istanbul ignore next */ ScreenViewport;\r\n const previousView = viewManager.selectedView;\r\n this._vp = screenViewport.create(this._canvasElement.current, this.props.view);\r\n this.customizeViewport(this._vp);\r\n viewManager.addViewport(this._vp);\r\n void viewManager.setSelectedView(previousView); // switch to original viewport\r\n this._update();\r\n }\r\n }\r\n\r\n private customizeViewport(vp: ScreenViewport): void {\r\n /* istanbul ignore next */\r\n if (vp.logo.style)\r\n vp.logo.style.display = \"none\";\r\n\r\n /* istanbul ignore next */\r\n if (vp.viewFlags.acsTriad)\r\n vp.viewFlags = vp.viewFlags.with(\"acsTriad\", false);\r\n }\r\n\r\n private _update = () => {\r\n // istanbul ignore else\r\n if (this._vp) {\r\n const max = Math.max(this.props.extents.x, this.props.extents.y);\r\n this._vp.view.extentLimits = { max, min: Constant.oneMillimeter };\r\n this._vp.view.setOrigin(this.props.origin);\r\n this._vp.view.setRotation(this.props.rotation);\r\n this._vp.view.setExtents(this.props.extents);\r\n this._vp.applyViewState(this._vp.view);\r\n }\r\n };\r\n\r\n public override componentDidUpdate(oldProps: DrawingNavigationCanvasProps) {\r\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\r\n if (this.props.view !== undefined) {\r\n if (oldProps.view !== this.props.view) {\r\n const screenViewport = this.props.screenViewportOverride ? this.props.screenViewportOverride : /* istanbul ignore next */ ScreenViewport;\r\n if (oldProps !== undefined && oldProps.viewId !== \"\" && oldProps.viewId !== this.props.viewId && this._vp) {\r\n viewManager.dropViewport(this._vp, true);\r\n }\r\n // istanbul ignore else\r\n if (this._canvasElement.current &&\r\n (this.props.canvasSizeOverride ||\r\n ( /* istanbul ignore next */ this._canvasElement.current.clientWidth !== 0 && /* istanbul ignore next */ this._canvasElement.current.clientHeight !== 0))) {\r\n const previousView = viewManager.selectedView;\r\n this._vp = screenViewport.create(this._canvasElement.current, this.props.view.clone());\r\n this.customizeViewport(this._vp);\r\n viewManager.addViewport(this._vp);\r\n void viewManager.setSelectedView(previousView); // switch to original viewport\r\n this._update();\r\n }\r\n } else if (!this.props.origin.isExactEqual(oldProps.origin) || !this.props.extents.isExactEqual(oldProps.extents) || this.props.zoom !== oldProps.zoom || !this.props.rotation.isExactEqual(oldProps.rotation)) {\r\n this._update();\r\n }\r\n }\r\n }\r\n\r\n public override componentWillUnmount() {\r\n if (this._vp) {\r\n const viewManager = this.props.viewManagerOverride ? this.props.viewManagerOverride : /* istanbul ignore next */ IModelApp.viewManager;\r\n viewManager.dropViewport(this._vp, true);\r\n }\r\n }\r\n\r\n}\r\n"]}
@@ -1,134 +1,134 @@
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
- @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
- @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
7
-
8
- #components-drawing-portal {
9
- @include uicore-z-index(dragged-widget);
10
- }
11
-
12
- .components-drawing-navigation-aid {
13
- position: relative;
14
- overflow: hidden;
15
- box-shadow: 0 0 0 1px $buic-inputs-border, 0 0 0 2px $buic-text-color;
16
- height: 96px;
17
- width: 96px;
18
-
19
- .drawing-canvas {
20
- position: absolute;
21
- left: 0px;
22
- top: 0px;
23
- width: 100%;
24
- height: 100%;
25
- min-width: 96px;
26
- min-height: 96px;
27
- }
28
-
29
- .drawing-container {
30
- position: absolute;
31
- left: 0px;
32
- top: 0px;
33
- width: 100%;
34
- height: 100%;
35
-
36
- .drawing-view-window {
37
- position: absolute;
38
- left: 0px;
39
- top: 0px;
40
- border: white 1px solid;
41
- background-color: rgba(0, 0, 0, 0.5);
42
- }
43
-
44
- .unrotate-button {
45
- position: absolute;
46
- background-color: $buic-background-control;
47
- border: 1px solid $buic-background-toolbutton-stroke;
48
- cursor: pointer;
49
- border-radius: 3px;
50
- top: 10px;
51
- left: 0px;
52
- right: 0px;
53
- margin: auto;
54
- font-size: 13px;
55
- height: 20px;
56
- width: 64px;
57
- line-height: 20px;
58
- text-align: center;
59
-
60
- &:focus {
61
- outline: none;
62
- }
63
- }
64
-
65
- .close {
66
- position: absolute;
67
- cursor: pointer;
68
- background-color: $buic-background-control;
69
- border: 1px solid $buic-background-toolbutton-stroke;
70
- border-radius: 3px;
71
- right: 10px;
72
- top: 10px;
73
-
74
- .close-icon {
75
- height: 32px;
76
- width: 32px;
77
- line-height: 32px;
78
- text-align: center;
79
- font-size: 18px;
80
- transform: rotate(45deg);
81
- }
82
- }
83
-
84
- .toggle-rotate-style {
85
- position: absolute;
86
- cursor: pointer;
87
- background-color: $buic-background-control;
88
- opacity: 0.5;
89
- color: $buic-foreground-body;
90
-
91
- &.checked {
92
- color: $buic-foreground-primary;
93
- }
94
-
95
- &:hover {
96
- opacity: 1;
97
- }
98
-
99
- border-radius: 3px;
100
- bottom: 10px;
101
- left: 10px;
102
- height: 16px;
103
- width: 16px;
104
- font-size: 12px;
105
- line-height: 16px;
106
- text-align: center;
107
- }
108
-
109
- .zoom {
110
- position: absolute;
111
- border: 1px solid $buic-background-toolbutton-stroke;
112
- border-radius: 3px;
113
- right: 10px;
114
- bottom: 10px;
115
-
116
- .zoom-button {
117
- cursor: pointer;
118
- background-color: $buic-background-control;
119
- height: 32px;
120
- width: 32px;
121
- line-height: 32px;
122
- text-align: center;
123
-
124
- &:first-child {
125
- border-bottom: 1px solid $buic-background-toolbutton-stroke;
126
- }
127
-
128
- &:focus {
129
- outline: none;
130
- }
131
- }
132
- }
133
- }
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
+ @import "~@itwin/core-react/lib/cjs/core-react/z-index";
6
+ @import "~@itwin/core-react/lib/cjs/core-react/style/themecolors";
7
+
8
+ #components-drawing-portal {
9
+ @include uicore-z-index(dragged-widget);
10
+ }
11
+
12
+ .components-drawing-navigation-aid {
13
+ position: relative;
14
+ overflow: hidden;
15
+ box-shadow: 0 0 0 1px $buic-inputs-border, 0 0 0 2px $buic-text-color;
16
+ height: 96px;
17
+ width: 96px;
18
+
19
+ .drawing-canvas {
20
+ position: absolute;
21
+ left: 0px;
22
+ top: 0px;
23
+ width: 100%;
24
+ height: 100%;
25
+ min-width: 96px;
26
+ min-height: 96px;
27
+ }
28
+
29
+ .drawing-container {
30
+ position: absolute;
31
+ left: 0px;
32
+ top: 0px;
33
+ width: 100%;
34
+ height: 100%;
35
+
36
+ .drawing-view-window {
37
+ position: absolute;
38
+ left: 0px;
39
+ top: 0px;
40
+ border: white 1px solid;
41
+ background-color: rgba(0, 0, 0, 0.5);
42
+ }
43
+
44
+ .unrotate-button {
45
+ position: absolute;
46
+ background-color: $buic-background-control;
47
+ border: 1px solid $buic-background-toolbutton-stroke;
48
+ cursor: pointer;
49
+ border-radius: 3px;
50
+ top: 10px;
51
+ left: 0px;
52
+ right: 0px;
53
+ margin: auto;
54
+ font-size: 13px;
55
+ height: 20px;
56
+ width: 64px;
57
+ line-height: 20px;
58
+ text-align: center;
59
+
60
+ &:focus {
61
+ outline: none;
62
+ }
63
+ }
64
+
65
+ .close {
66
+ position: absolute;
67
+ cursor: pointer;
68
+ background-color: $buic-background-control;
69
+ border: 1px solid $buic-background-toolbutton-stroke;
70
+ border-radius: 3px;
71
+ right: 10px;
72
+ top: 10px;
73
+
74
+ .close-icon {
75
+ height: 32px;
76
+ width: 32px;
77
+ line-height: 32px;
78
+ text-align: center;
79
+ font-size: 18px;
80
+ transform: rotate(45deg);
81
+ }
82
+ }
83
+
84
+ .toggle-rotate-style {
85
+ position: absolute;
86
+ cursor: pointer;
87
+ background-color: $buic-background-control;
88
+ opacity: 0.5;
89
+ color: $buic-foreground-body;
90
+
91
+ &.checked {
92
+ color: $buic-foreground-primary;
93
+ }
94
+
95
+ &:hover {
96
+ opacity: 1;
97
+ }
98
+
99
+ border-radius: 3px;
100
+ bottom: 10px;
101
+ left: 10px;
102
+ height: 16px;
103
+ width: 16px;
104
+ font-size: 12px;
105
+ line-height: 16px;
106
+ text-align: center;
107
+ }
108
+
109
+ .zoom {
110
+ position: absolute;
111
+ border: 1px solid $buic-background-toolbutton-stroke;
112
+ border-radius: 3px;
113
+ right: 10px;
114
+ bottom: 10px;
115
+
116
+ .zoom-button {
117
+ cursor: pointer;
118
+ background-color: $buic-background-control;
119
+ height: 32px;
120
+ width: 32px;
121
+ line-height: 32px;
122
+ text-align: center;
123
+
124
+ &:first-child {
125
+ border-bottom: 1px solid $buic-background-toolbutton-stroke;
126
+ }
127
+
128
+ &:focus {
129
+ outline: none;
130
+ }
131
+ }
132
+ }
133
+ }
134
134
  }