@itwin/imodel-components-react 4.0.0-dev.8 → 4.0.0

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 (330) hide show
  1. package/CHANGELOG.md +66 -1
  2. package/README.md +2 -2
  3. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
  4. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts.map +1 -1
  5. package/lib/cjs/imodel-components-react/UiIModelComponents.js +77 -79
  6. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
  7. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  8. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +190 -186
  9. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
  10. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  11. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -1
  12. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +112 -107
  13. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  14. package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +19 -21
  15. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  16. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +78 -74
  17. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  18. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  19. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -1
  20. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +143 -137
  21. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  22. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +15 -17
  23. package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
  24. package/lib/cjs/imodel-components-react/color/HueSlider.js +203 -199
  25. package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
  26. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  27. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +217 -213
  28. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
  29. package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
  30. package/lib/cjs/imodel-components-react/color/Swatch.js +64 -60
  31. package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
  32. package/lib/cjs/imodel-components-react/color/Swatch.scss +5 -7
  33. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  34. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
  35. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  36. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +155 -151
  37. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
  38. package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +4 -5
  39. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  40. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +164 -160
  41. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
  42. package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +4 -5
  43. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  44. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +100 -96
  45. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  46. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  47. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
  48. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +272 -265
  49. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  50. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +6 -7
  51. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  52. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +89 -85
  53. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
  54. package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +7 -8
  55. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  56. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +163 -159
  57. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  58. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +13 -15
  59. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  60. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +131 -127
  61. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
  62. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +154 -174
  63. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  64. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +631 -634
  65. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  66. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +18 -21
  67. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  68. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -1
  69. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +657 -647
  70. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  71. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +9 -8
  72. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  73. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +103 -99
  74. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  75. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +10 -16
  76. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  77. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +57 -53
  78. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  79. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  80. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -1
  81. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +88 -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 +90 -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 +113 -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 +137 -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 +188 -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.d.ts.map +1 -1
  97. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +149 -154
  98. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  99. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  100. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +63 -59
  101. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  102. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  103. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +51 -47
  104. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  105. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  106. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +58 -54
  107. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  108. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  109. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +52 -48
  110. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  111. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  112. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +54 -50
  113. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  114. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  115. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +62 -58
  116. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  117. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  118. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +51 -47
  119. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  120. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  121. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +60 -56
  122. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  123. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  124. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +99 -95
  125. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  126. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  127. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +123 -119
  128. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  129. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  130. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
  131. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +142 -143
  132. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  133. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  134. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +69 -69
  135. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  136. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +85 -81
  137. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  138. package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +2 -2
  139. package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  140. package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts.map +1 -1
  141. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +99 -91
  142. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  143. package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +11 -9
  144. package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  145. package/lib/cjs/imodel-components-react/timeline/Scrubber.js +195 -191
  146. package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
  147. package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +13 -15
  148. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  149. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts.map +1 -1
  150. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +432 -424
  151. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  152. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +49 -48
  153. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  154. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +58 -54
  155. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  156. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
  157. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
  158. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +398 -358
  159. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  160. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +39 -25
  161. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +145 -174
  162. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
  163. package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
  164. package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
  165. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  166. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
  167. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +278 -274
  168. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  169. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  170. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
  171. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  172. package/lib/cjs/imodel-components-react.d.ts +81 -82
  173. package/lib/cjs/imodel-components-react.d.ts.map +1 -1
  174. package/lib/cjs/imodel-components-react.js +104 -101
  175. package/lib/cjs/imodel-components-react.js.map +1 -1
  176. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +28 -28
  177. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts.map +1 -1
  178. package/lib/esm/imodel-components-react/UiIModelComponents.js +74 -75
  179. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
  180. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  181. package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
  182. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
  183. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  184. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts.map +1 -1
  185. package/lib/esm/imodel-components-react/color/ColorPickerButton.js +83 -82
  186. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  187. package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +19 -21
  188. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  189. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
  190. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  191. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts.map +1 -1
  192. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +114 -112
  193. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  194. package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +15 -17
  195. package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
  196. package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
  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/Swatch.d.ts +22 -22
  200. package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
  201. package/lib/esm/imodel-components-react/color/Swatch.scss +5 -7
  202. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  203. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
  204. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  205. package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
  206. package/lib/esm/imodel-components-react/editors/ColorEditor.scss +4 -5
  207. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  208. package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
  209. package/lib/esm/imodel-components-react/editors/WeightEditor.scss +4 -5
  210. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  211. package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
  212. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  213. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
  214. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +243 -240
  215. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  216. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +6 -7
  217. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  218. package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
  219. package/lib/esm/imodel-components-react/lineweight/Swatch.scss +7 -8
  220. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  221. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +134 -133
  222. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  223. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +13 -15
  224. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  225. package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
  226. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +154 -174
  227. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  228. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +601 -606
  229. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  230. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +18 -21
  231. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  232. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts.map +1 -1
  233. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +627 -620
  234. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  235. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +9 -8
  236. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  237. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
  238. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +10 -16
  239. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  240. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +30 -30
  241. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  242. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts.map +1 -1
  243. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +61 -60
  244. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  245. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  246. package/lib/esm/imodel-components-react/quantityformat/FormatType.js +63 -63
  247. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  248. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +83 -83
  249. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  250. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +110 -110
  251. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  252. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +158 -158
  253. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  254. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts.map +1 -1
  255. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +122 -131
  256. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  257. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  258. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
  259. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  260. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
  261. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  262. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
  263. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  264. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
  265. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  266. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
  267. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  268. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
  269. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  270. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
  271. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  272. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
  273. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  274. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +69 -69
  275. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  276. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
  277. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  278. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts.map +1 -1
  279. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +138 -139
  280. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  281. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  282. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
  283. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  284. package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
  285. package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +2 -2
  286. package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  287. package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts.map +1 -1
  288. package/lib/esm/imodel-components-react/timeline/PlayerButton.js +68 -64
  289. package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  290. package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +11 -9
  291. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  292. package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
  293. package/lib/esm/imodel-components-react/timeline/Scrubber.scss +13 -15
  294. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  295. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts.map +1 -1
  296. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +402 -398
  297. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  298. package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +49 -48
  299. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  300. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
  301. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
  302. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
  303. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +368 -332
  304. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  305. package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +39 -25
  306. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +145 -174
  307. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
  308. package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
  309. package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
  310. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  311. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
  312. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +251 -251
  313. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  314. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +96 -95
  315. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  316. package/lib/esm/imodel-components-react.d.ts +81 -82
  317. package/lib/esm/imodel-components-react.d.ts.map +1 -1
  318. package/lib/esm/imodel-components-react.js +86 -87
  319. package/lib/esm/imodel-components-react.js.map +1 -1
  320. package/package.json +38 -47
  321. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +0 -22
  322. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts.map +0 -1
  323. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +0 -146
  324. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +0 -1
  325. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +0 -94
  326. package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +0 -22
  327. package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts.map +0 -1
  328. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +0 -123
  329. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +0 -1
  330. package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +0 -94
@@ -1 +1 @@
1
- {"version":3,"file":"SolarTimeline.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/timeline/SolarTimeline.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 Timeline\r\n */\r\n\r\n// component is in alpha state - it may change after usability testing - test coverage not complete\r\n/* istanbul ignore file */\r\n\r\nimport \"./SolarTimeline.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Slider, Tooltip } from \"@itwin/itwinui-react\";\r\n\r\nimport { ColorByName, ColorDef, HSVColor } from \"@itwin/core-common\";\r\nimport { RelativePosition, TimeDisplay } from \"@itwin/appui-abstract\";\r\nimport { BodyText, CommonProps, Popup } from \"@itwin/core-react\";\r\nimport { adjustDateToTimezone, DatePicker, TimeField, TimeSpec, UiComponents } from \"@itwin/components-react\";\r\nimport { HueSlider } from \"../color/HueSlider\";\r\nimport { SaturationPicker } from \"../color/SaturationPicker\";\r\nimport { ColorSwatch } from \"../color/Swatch\";\r\nimport { SolarDataProvider } from \"./interfaces\";\r\nimport { PlayButton } from \"./PlayerButton\";\r\nimport { SpeedTimeline } from \"./SpeedTimeline\";\r\nimport { CustomThumb, getPercentageOfRectangle, RailMarkers, useFocusedThumb } from \"./Scrubber\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\n\r\n// cSpell:ignore millisec solarsettings showticks shadowcolor solartimeline datepicker millisecs\r\n\r\nconst millisecPerMinute = 1000 * 60;\r\nconst millisecPerHour = millisecPerMinute * 60;\r\n// const millisecPerDay = millisecPerHour * 24;\r\nconst defaultPlaybackDuration = 40 * 1000; // 40 seconds\r\nconst addZero = (i: number) => {\r\n return (i < 10) ? `0${i}` : i;\r\n};\r\n\r\ninterface TimelineProps extends CommonProps {\r\n dayStartMs: number;\r\n sunRiseOffsetMs: number;\r\n sunSetOffsetMs: number;\r\n currentTimeOffsetMs: number;\r\n isPlaying: boolean;\r\n formatTick?: (millisec: number) => string;\r\n formatTime: (millisec: number) => string;\r\n onChange?: (values: ReadonlyArray<number>) => void;\r\n onUpdate?: (values: ReadonlyArray<number>) => void;\r\n}\r\nfunction Timeline(props: TimelineProps) {\r\n const sliderRef = React.useRef<HTMLDivElement>(null);\r\n const [sliderContainer, setSliderContainer] = React.useState<HTMLDivElement>();\r\n const [pointerPercent, setPointerPercent] = React.useState(0);\r\n\r\n React.useLayoutEffect(() => {\r\n // istanbul ignore else\r\n if (sliderRef.current) {\r\n const container = sliderRef.current.querySelector(\".iui-slider-container\");\r\n if (container && sliderContainer !== container) {\r\n setSliderContainer(container as HTMLDivElement);\r\n }\r\n }\r\n }, [sliderContainer]);\r\n\r\n const thumbProps = () => {\r\n return {\r\n className: \"components-timeline-thumb\",\r\n children: <CustomThumb />,\r\n };\r\n };\r\n\r\n const tooltipProps = React.useCallback(() => {\r\n return { visible: false };\r\n }, []);\r\n\r\n const [showRailTooltip, setShowRailTooltip] = React.useState(false);\r\n\r\n const handlePointerEnter = React.useCallback(() => {\r\n setShowRailTooltip(true);\r\n }, []);\r\n\r\n const handlePointerLeave = React.useCallback(() => {\r\n setShowRailTooltip(false);\r\n }, []);\r\n\r\n const handlePointerMove = React.useCallback((event: React.PointerEvent) => {\r\n sliderContainer &&\r\n setPointerPercent(getPercentageOfRectangle(sliderContainer.getBoundingClientRect(), event.clientX));\r\n }, [sliderContainer]);\r\n\r\n const { formatTick, formatTime, onChange, onUpdate, dayStartMs, sunSetOffsetMs, sunRiseOffsetMs, currentTimeOffsetMs, isPlaying } = props;\r\n\r\n const thumbHasFocus = useFocusedThumb(sliderContainer);\r\n\r\n const tickLabel = React.useMemo(() => {\r\n const showTip = isPlaying || showRailTooltip || thumbHasFocus;\r\n const totalDuration = sunSetOffsetMs - sunRiseOffsetMs;\r\n const percent = (isPlaying || thumbHasFocus) ? (currentTimeOffsetMs - sunRiseOffsetMs) / totalDuration : pointerPercent;\r\n const tooltipText = formatTime((isPlaying || thumbHasFocus) ? (dayStartMs + currentTimeOffsetMs) : (dayStartMs + (sunRiseOffsetMs + (pointerPercent * totalDuration))));\r\n return (<RailMarkers showToolTip={showTip} percent={percent} tooltipText={tooltipText} />);\r\n }, [isPlaying, showRailTooltip, thumbHasFocus, sunSetOffsetMs, sunRiseOffsetMs, currentTimeOffsetMs, pointerPercent, formatTime, dayStartMs]);\r\n\r\n const className = classnames(\"solar-slider\", props.className, formatTick && \"showticks\");\r\n const sunRiseFormat = formatTime(dayStartMs + sunRiseOffsetMs);\r\n const sunSetFormat = formatTime(dayStartMs + sunSetOffsetMs);\r\n return (\r\n <div className={className}>\r\n <Tooltip content={sunRiseFormat}>\r\n <span className=\"sunrise\">\r\n &#x2600;\r\n </span>\r\n </Tooltip>\r\n <Slider ref={sliderRef}\r\n className={className}\r\n step={millisecPerMinute}\r\n min={sunRiseOffsetMs}\r\n max={sunSetOffsetMs}\r\n minLabel=\"\"\r\n maxLabel=\"\"\r\n onUpdate={onUpdate}\r\n onChange={onChange}\r\n values={[currentTimeOffsetMs]}\r\n tooltipProps={tooltipProps}\r\n thumbProps={thumbProps}\r\n tickLabels={tickLabel}\r\n railContainerProps={{\r\n onPointerEnter: handlePointerEnter,\r\n onPointerMove: handlePointerMove,\r\n onPointerLeave: handlePointerLeave,\r\n }}\r\n />\r\n <Tooltip content={sunSetFormat}>\r\n <span className=\"sunset\">\r\n &#x263D;\r\n </span>\r\n </Tooltip>\r\n </div>\r\n );\r\n}\r\n\r\ninterface SolarTimelineComponentProps {\r\n dataProvider: SolarDataProvider; // provides date, sunrise, sunset in millisecs, also contains timezone offset from UTC, and updates the display style to current time.\r\n onPlayPause?: (playing: boolean) => void; // callback triggered when play/pause button is pressed\r\n duration?: number; // playback duration in milliseconds\r\n speed?: number;\r\n}\r\n\r\ninterface SolarTimelineComponentState {\r\n isPlaying: boolean; // timeline is currently playing or paused\r\n isDateOpened: boolean; // date picker is opened\r\n isSettingsOpened: boolean; // settings popup is opened\r\n dayStartMs: number;\r\n sunRiseOffsetMs: number;\r\n sunSetOffsetMs: number;\r\n sunDeltaMs: number;\r\n currentTimeOffsetMs: number;\r\n speed: number;\r\n loop: boolean;\r\n shadowColor: ColorDef;\r\n duration: number; // playback duration in milliseconds\r\n adjustedDuration: number; // playback duration in milliseconds/ speed\r\n}\r\n\r\n/** Solar Timeline\r\n * @alpha\r\n */\r\nexport class SolarTimeline extends React.PureComponent<SolarTimelineComponentProps, SolarTimelineComponentState> {\r\n private _datePicker: HTMLElement | null = null;\r\n private _settings: HTMLElement | null = null;\r\n private _requestFrame = 0;\r\n private _unmounted = false;\r\n private _timeLastCycle = 0;\r\n private _totalPlayTime = 0;\r\n private _settingsPopupTitle = UiIModelComponents.translate(\"solarsettings.shadowcolor\");\r\n private _playLabel = UiIModelComponents.translate(\"solartimeline.play\");\r\n private _settingLabel = UiIModelComponents.translate(\"solartimeline.settings\");\r\n private _loopLabel = UiIModelComponents.translate(\"timeline.repeat\");\r\n private _speedLabel = UiIModelComponents.translate(\"solartimeline.speed\");\r\n private _dateTimeLabel = UiIModelComponents.translate(\"solartimeline.dateTime\");\r\n\r\n private _months = [\r\n UiComponents.translate(\"month.short.january\"),\r\n UiComponents.translate(\"month.short.february\"),\r\n UiComponents.translate(\"month.short.march\"),\r\n UiComponents.translate(\"month.short.april\"),\r\n UiComponents.translate(\"month.short.may\"),\r\n UiComponents.translate(\"month.short.june\"),\r\n UiComponents.translate(\"month.short.july\"),\r\n UiComponents.translate(\"month.short.august\"),\r\n UiComponents.translate(\"month.short.september\"),\r\n UiComponents.translate(\"month.short.october\"),\r\n UiComponents.translate(\"month.short.november\"),\r\n UiComponents.translate(\"month.short.december\"),\r\n ];\r\n\r\n private _timeLabel = UiComponents.translate(\"datepicker.time\");\r\n private _amLabel = UiComponents.translate(\"time.am\");\r\n private _pmLabel = UiComponents.translate(\"time.pm\");\r\n private readonly _presetColors = [\r\n ColorDef.create(ColorByName.grey),\r\n ColorDef.create(ColorByName.lightGrey),\r\n ColorDef.create(ColorByName.darkGrey),\r\n ColorDef.create(ColorByName.lightBlue),\r\n ColorDef.create(ColorByName.lightGreen),\r\n ColorDef.create(ColorByName.darkGreen),\r\n ColorDef.create(ColorByName.tan),\r\n ColorDef.create(ColorByName.darkBrown),\r\n ];\r\n\r\n constructor(props: SolarTimelineComponentProps) {\r\n super(props);\r\n\r\n const dayStartMs = this.props.dataProvider.dayStartMs;\r\n const sunRiseOffsetMs = this.props.dataProvider.sunrise.getTime() - dayStartMs;\r\n const sunSetOffsetMs = this.props.dataProvider.sunset.getTime() - dayStartMs;\r\n const sunDeltaMs = sunSetOffsetMs - sunRiseOffsetMs;\r\n const sunOffsetMs = this.props.dataProvider.timeOfDay.getTime() - dayStartMs;\r\n const currentTimeOffsetMs = this.ensureRange(sunOffsetMs, sunRiseOffsetMs, sunSetOffsetMs);\r\n const shadowColor = this.props.dataProvider.shadowColor;\r\n const duration = this.props.duration ? this.props.duration : defaultPlaybackDuration;\r\n const speed = this.props.speed ? this.props.speed : 2;\r\n const adjustedDuration = duration / speed;\r\n this.setPlaybackTimeBySunTime(currentTimeOffsetMs, sunRiseOffsetMs, sunDeltaMs, adjustedDuration);\r\n\r\n this.state = {\r\n isDateOpened: false,\r\n isSettingsOpened: false,\r\n isPlaying: false,\r\n dayStartMs,\r\n sunRiseOffsetMs,\r\n sunSetOffsetMs,\r\n sunDeltaMs,\r\n currentTimeOffsetMs,\r\n speed,\r\n loop: false,\r\n shadowColor,\r\n duration,\r\n adjustedDuration,\r\n };\r\n }\r\n\r\n public override componentWillUnmount() {\r\n window.cancelAnimationFrame(this._requestFrame);\r\n this._unmounted = true;\r\n }\r\n\r\n // recursively update the animation until we hit the end or the pause button is clicked\r\n private _updateAnimation = (_timestamp: number) => {\r\n // istanbul ignore else\r\n if (!this.state.isPlaying || this._unmounted) {\r\n window.cancelAnimationFrame(this._requestFrame);\r\n return;\r\n }\r\n\r\n const currentTime = new Date().getTime();\r\n this._totalPlayTime += (currentTime - this._timeLastCycle);\r\n this._timeLastCycle = currentTime;\r\n let percentComplete = this._totalPlayTime / this.state.adjustedDuration;\r\n if (percentComplete > 1)\r\n percentComplete = 1;\r\n\r\n let newPlayingState = true;\r\n\r\n // calculate the next sun time base on the percentage playback complete - should be int value as that is step amount for slider\r\n let nextSunOffset = Math.floor(this.state.sunRiseOffsetMs + (percentComplete * this.state.sunDeltaMs));\r\n\r\n if (percentComplete > 0.99) {\r\n if (!this.state.loop) {\r\n newPlayingState = false;\r\n nextSunOffset = this.state.sunSetOffsetMs;\r\n window.cancelAnimationFrame(this._requestFrame);\r\n } else {\r\n nextSunOffset = this.state.sunRiseOffsetMs;\r\n this._totalPlayTime = 0;\r\n }\r\n }\r\n\r\n if (this.props.dataProvider.onTimeChanged) {\r\n const currentSunTime = new Date(this.state.dayStartMs + nextSunOffset);\r\n this.props.dataProvider.onTimeChanged(currentSunTime);\r\n }\r\n\r\n this.setState({ isPlaying: newPlayingState, currentTimeOffsetMs: nextSunOffset }, () => {\r\n if (newPlayingState)\r\n this._requestFrame = window.requestAnimationFrame(this._updateAnimation);\r\n });\r\n };\r\n\r\n private _play(sunTimeMs: number) {\r\n this._timeLastCycle = new Date().getTime();\r\n\r\n // start playing\r\n this.setState({ isPlaying: true, currentTimeOffsetMs: sunTimeMs }, () => {\r\n this._requestFrame = window.requestAnimationFrame(this._updateAnimation);\r\n // istanbul ignore else\r\n if (this.props.onPlayPause)\r\n this.props.onPlayPause(true);\r\n });\r\n }\r\n\r\n // user clicked pause button\r\n private _onPause = () => {\r\n // istanbul ignore if\r\n if (!this.state.isPlaying)\r\n return;\r\n\r\n const currentTime = new Date().getTime();\r\n this._totalPlayTime += (currentTime - this._timeLastCycle);\r\n\r\n // stop requesting frames\r\n window.cancelAnimationFrame(this._requestFrame);\r\n\r\n // stop playing\r\n this.setState({ isPlaying: false });\r\n\r\n // istanbul ignore else\r\n if (this.props.onPlayPause)\r\n this.props.onPlayPause(false);\r\n };\r\n\r\n // user clicked play button\r\n private _onPlay = () => {\r\n // istanbul ignore if\r\n if (this.state.isPlaying)\r\n return;\r\n\r\n if (this.state.currentTimeOffsetMs >= this.state.sunSetOffsetMs || this.state.currentTimeOffsetMs <= this.state.sunRiseOffsetMs) {\r\n this._totalPlayTime = 0;\r\n this._play(this.state.sunRiseOffsetMs);\r\n } else {\r\n this._play(this.state.currentTimeOffsetMs);\r\n }\r\n };\r\n\r\n private setPlaybackTimeBySunTime(sunOffsetMs: number, sunRiseOffsetMs: number, sunDeltaMs: number, adjustedDuration?: number) {\r\n this._totalPlayTime = ((sunOffsetMs - sunRiseOffsetMs) / (sunDeltaMs)) * ((adjustedDuration) ? adjustedDuration : this.state.adjustedDuration);\r\n }\r\n\r\n /** note the day passed in is in the time of the current user not in project time because the date picker works in\r\n * local time */\r\n private _onDayClick = (day: Date) => {\r\n const selectedDate = new Date(day.getTime() + this.state.currentTimeOffsetMs);\r\n this.props.dataProvider.setDateAndTime(selectedDate);\r\n const dayStartMs = this.props.dataProvider.dayStartMs;\r\n const sunRiseOffsetMs = this.props.dataProvider.sunrise.getTime() - dayStartMs;\r\n const sunSetOffsetMs = this.props.dataProvider.sunset.getTime() - dayStartMs;\r\n const sunDeltaMs = sunSetOffsetMs - sunRiseOffsetMs;\r\n\r\n const sunOffsetMs = this.ensureRange(this.state.currentTimeOffsetMs, sunRiseOffsetMs, sunSetOffsetMs);\r\n this.setPlaybackTimeBySunTime(sunOffsetMs, sunRiseOffsetMs, sunDeltaMs);\r\n\r\n /** call dataProvider to update display style */\r\n if (this.props.dataProvider.onTimeChanged)\r\n this.props.dataProvider.onTimeChanged(this.props.dataProvider.timeOfDay);\r\n\r\n this.setState({ dayStartMs, sunRiseOffsetMs, sunSetOffsetMs, currentTimeOffsetMs: sunOffsetMs, sunDeltaMs, isDateOpened: false }, () => {\r\n this._timeLastCycle = new Date().getTime();\r\n });\r\n };\r\n\r\n private _onTimeChanged = (time: TimeSpec) => {\r\n // compute the current date (with time)\r\n const dayStartMs = this.props.dataProvider.dayStartMs;\r\n const sunTime = (time.hours * millisecPerHour) + (time.minutes * millisecPerMinute);\r\n const dateWithNewTime = new Date(dayStartMs + sunTime);\r\n this.props.dataProvider.setDateAndTime(dateWithNewTime, true);\r\n\r\n // notify the provider to update style\r\n if (this.props.dataProvider.onTimeChanged)\r\n this.props.dataProvider.onTimeChanged(dateWithNewTime);\r\n\r\n const currentTimeOffsetMs = this.ensureRange(sunTime, this.state.sunRiseOffsetMs, this.state.sunSetOffsetMs);\r\n\r\n this.setPlaybackTimeBySunTime(currentTimeOffsetMs, this.state.sunRiseOffsetMs, this.state.sunDeltaMs);\r\n this._timeLastCycle = new Date().getTime();\r\n\r\n // update the timeline\r\n this.setState({ currentTimeOffsetMs });\r\n };\r\n\r\n private _onCloseDayPicker = () => {\r\n this.setState({ isDateOpened: false });\r\n };\r\n\r\n private _onOpenDayPicker = () => {\r\n this.setState((prevState) => ({ isDateOpened: !prevState.isDateOpened }));\r\n };\r\n\r\n private _onCloseSettingsPopup = () => {\r\n this.setState({ isSettingsOpened: false });\r\n };\r\n\r\n private _onOpenSettingsPopup = () => {\r\n this.setState((prevState) => ({ isSettingsOpened: !prevState.isSettingsOpened }));\r\n };\r\n\r\n private ensureRange(value: number, min: number, max: number): number {\r\n return Math.max(Math.min(value, max), min);\r\n }\r\n\r\n private processSunTimeChange(sunTime: number) {\r\n if (sunTime === this.state.currentTimeOffsetMs)\r\n return;\r\n\r\n const currentTimeOffsetMs = this.ensureRange(sunTime, this.state.sunRiseOffsetMs, this.state.sunSetOffsetMs);\r\n\r\n if (this.props.dataProvider.onTimeChanged) {\r\n const currentSunTime = new Date(this.state.dayStartMs + currentTimeOffsetMs);\r\n this.props.dataProvider.onTimeChanged(currentSunTime);\r\n }\r\n\r\n this.setState({ currentTimeOffsetMs }, () => {\r\n const currentTime = new Date().getTime();\r\n this._timeLastCycle = currentTime;\r\n const percentComplete = (currentTimeOffsetMs - this.state.sunRiseOffsetMs) / this.state.sunDeltaMs;\r\n this._totalPlayTime = percentComplete * this.state.adjustedDuration;\r\n });\r\n }\r\n\r\n private _onUpdate = (values: ReadonlyArray<number>) => {\r\n if (!this.state.isPlaying)\r\n this.processSunTimeChange(values[0]);\r\n };\r\n\r\n private _onChange = (values: ReadonlyArray<number>) => {\r\n if (!this.state.isPlaying)\r\n this.processSunTimeChange(values[0]);\r\n };\r\n\r\n private _onSpeedChange = (value: number) => {\r\n const adjustedDuration = this.state.duration / value;\r\n this.setState({ speed: value, adjustedDuration });\r\n };\r\n\r\n private _onToggleLoop = () => {\r\n this.setState((prevState) => ({ loop: !prevState.loop }));\r\n };\r\n\r\n private _formatTime = (millisec: number) => {\r\n const date = new Date(millisec);\r\n // convert project date to browser locale date\r\n const localTime = adjustDateToTimezone(date, this.props.dataProvider.timeZoneOffset * 60);\r\n let hours = localTime.getHours();\r\n const minutes = addZero(date.getMinutes());\r\n const abbrev = (hours < 12) ? this._amLabel : (hours === 24) ? this._amLabel : this._pmLabel;\r\n hours = (hours > 12) ? hours - 12 : hours;\r\n return `${hours}:${minutes} ${abbrev}`;\r\n };\r\n\r\n private _onPresetColorPick = (shadowColor: ColorDef) => {\r\n this.setState({ shadowColor }, () => this.props.dataProvider.shadowColor = shadowColor);\r\n };\r\n\r\n private _handleHueOrSaturationChange = (hueOrSaturation: HSVColor) => {\r\n if (hueOrSaturation.s === 0) // for a ColorDef to be created from hsv s can't be 0\r\n hueOrSaturation = hueOrSaturation.clone(undefined, 0.5);\r\n\r\n const shadowColor = hueOrSaturation.toColorDef();\r\n this.setState({ shadowColor }, () => this.props.dataProvider.shadowColor = shadowColor);\r\n };\r\n\r\n public getLocalTime(ticks: number): Date {\r\n const projectTime = new Date(ticks);\r\n // convert project date to browser locale date\r\n return adjustDateToTimezone(projectTime, this.props.dataProvider.timeZoneOffset * 60);\r\n }\r\n\r\n public override render() {\r\n const { dataProvider } = this.props;\r\n const { speed, loop, currentTimeOffsetMs,\r\n sunRiseOffsetMs, sunSetOffsetMs } = this.state;\r\n const localTime = this.getLocalTime(this.state.dayStartMs + this.state.currentTimeOffsetMs);\r\n const formattedTime = this._formatTime(dataProvider.dayStartMs + currentTimeOffsetMs);\r\n const formattedDate = `${this._months[localTime.getMonth()]}, ${localTime.getDate()}`;\r\n\r\n const colorSwatchStyle: React.CSSProperties = {\r\n width: `100%`,\r\n height: `100%`,\r\n };\r\n\r\n return (\r\n <div className={\"solar-timeline-wrapper\"} >\r\n <div className=\"header\">\r\n <PlayButton tooltip={this._playLabel} className=\"play-button\" isPlaying={this.state.isPlaying} onPlay={this._onPlay} onPause={this._onPause} />\r\n <button data-testid=\"solar-date-time-button\" title={this._dateTimeLabel} className=\"current-date\" ref={(element) => this._datePicker = element} onClick={this._onOpenDayPicker}>\r\n <span>{formattedDate}</span>\r\n <span>/</span>\r\n <span>{formattedTime}</span>\r\n <span className=\"icon icon-calendar\" />\r\n </button>\r\n <Popup style={{ border: \"none\" }} offset={11} target={this._datePicker} isOpen={this.state.isDateOpened} onClose={this._onCloseDayPicker} position={RelativePosition.Top}>\r\n <div className=\"components-date-picker-calendar-popup-panel\" data-testid=\"components-date-picker-calendar-popup-panel\">\r\n <DatePicker selected={localTime} onDateChange={this._onDayClick} showFocusOutline={false} />\r\n <div className=\"time-container\">\r\n <BodyText className=\"time-label\">{this._timeLabel}</BodyText>\r\n <TimeField time={{ hours: localTime.getHours(), minutes: localTime.getMinutes(), seconds: 0 }} timeDisplay={TimeDisplay.H12MC} onTimeChange={this._onTimeChanged} />\r\n </div>\r\n </div>\r\n </Popup>\r\n <Timeline className=\"solar-timeline\"\r\n dayStartMs={dataProvider.dayStartMs}\r\n sunSetOffsetMs={sunSetOffsetMs}\r\n sunRiseOffsetMs={sunRiseOffsetMs}\r\n currentTimeOffsetMs={currentTimeOffsetMs}\r\n onChange={this._onChange}\r\n onUpdate={this._onUpdate}\r\n formatTime={this._formatTime}\r\n isPlaying={this.state.isPlaying}\r\n />\r\n <div className=\"speed-container\">\r\n <span title={this._speedLabel}>{speed}x</span>\r\n <SpeedTimeline className=\"speed\" onChange={this._onSpeedChange} speed={this.state.speed} />\r\n </div>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\r\n <span title={this._loopLabel}\r\n className={classnames(\"icon\", \"icon-media-controls-loop\", !loop && \"no-loop-playback\", loop && \"loop-playback\")} onClick={this._onToggleLoop}\r\n role=\"button\" tabIndex={-1}\r\n ></span>\r\n <button data-testid=\"shadow-settings-button\" title={this._settingLabel} className=\"shadow-settings-button\" ref={(element) => this._settings = element} onClick={this._onOpenSettingsPopup}>\r\n <span className=\"icon icon-settings\" />\r\n </button>\r\n <Popup className=\"shadow-settings-popup\" target={this._settings} offset={11} isOpen={this.state.isSettingsOpened} onClose={this._onCloseSettingsPopup} position={RelativePosition.Top}>\r\n <div className=\"shadow-settings-popup-container\" >\r\n <div className=\"shadow-settings-header\">{this._settingsPopupTitle}</div>\r\n <div className=\"shadow-settings-color\">\r\n <div className=\"shadow-settings-color-top\">\r\n <SaturationPicker hsv={this.state.shadowColor.toHSV()} onSaturationChange={this._handleHueOrSaturationChange} />\r\n </div>\r\n <div className=\"shadow-settings-color-bottom\">\r\n <div className=\"shadow-settings-color-bottom-left\">\r\n <HueSlider hsv={this.state.shadowColor.toHSV()} onHueChange={this._handleHueOrSaturationChange} isHorizontal={true} />\r\n </div>\r\n <div className=\"shadow-settings-color-bottom-right\">\r\n <ColorSwatch style={colorSwatchStyle} colorDef={this.state.shadowColor} round={false} />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"shadow-settings-color-presets\">\r\n <ColorSwatch colorDef={this._presetColors[0]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[1]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[2]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[3]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[4]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[5]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[6]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[7]} round={false} onColorPick={this._onPresetColorPick} />\r\n </div>\r\n </div>\r\n </Popup>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"SolarTimeline.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/timeline/SolarTimeline.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 Timeline\r\n */\r\n\r\n// component is in alpha state - it may change after usability testing - test coverage not complete\r\n/* istanbul ignore file */\r\n\r\nimport \"./SolarTimeline.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Slider, Text, Tooltip } from \"@itwin/itwinui-react\";\r\n\r\nimport { ColorByName, ColorDef, HSVColor } from \"@itwin/core-common\";\r\nimport { RelativePosition, TimeDisplay } from \"@itwin/appui-abstract\";\r\nimport { CommonProps, Icon, Popup } from \"@itwin/core-react\";\r\nimport { adjustDateToTimezone, DatePicker, TimeField, TimeSpec, UiComponents } from \"@itwin/components-react\";\r\nimport { HueSlider } from \"../color/HueSlider\";\r\nimport { SaturationPicker } from \"../color/SaturationPicker\";\r\nimport { ColorSwatch } from \"../color/Swatch\";\r\nimport { SolarDataProvider } from \"./interfaces\";\r\nimport { PlayButton } from \"./PlayerButton\";\r\nimport { SpeedTimeline } from \"./SpeedTimeline\";\r\nimport { CustomThumb, getPercentageOfRectangle, RailMarkers, useFocusedThumb } from \"./Scrubber\";\r\nimport { UiIModelComponents } from \"../UiIModelComponents\";\r\nimport { SvgCalendar, SvgLoop, SvgSettings } from \"@itwin/itwinui-icons-react\";\r\n\r\n// cSpell:ignore millisec solarsettings showticks shadowcolor solartimeline datepicker millisecs\r\n\r\nconst millisecPerMinute = 1000 * 60;\r\nconst millisecPerHour = millisecPerMinute * 60;\r\n// const millisecPerDay = millisecPerHour * 24;\r\nconst defaultPlaybackDuration = 40 * 1000; // 40 seconds\r\nconst addZero = (i: number) => {\r\n return (i < 10) ? `0${i}` : i;\r\n};\r\n\r\ninterface TimelineProps extends CommonProps {\r\n dayStartMs: number;\r\n sunRiseOffsetMs: number;\r\n sunSetOffsetMs: number;\r\n currentTimeOffsetMs: number;\r\n isPlaying: boolean;\r\n formatTick?: (millisec: number) => string;\r\n formatTime: (millisec: number) => string;\r\n onChange?: (values: ReadonlyArray<number>) => void;\r\n onUpdate?: (values: ReadonlyArray<number>) => void;\r\n}\r\nfunction Timeline(props: TimelineProps) {\r\n const sliderRef = React.useRef<HTMLDivElement>(null);\r\n const [sliderContainer, setSliderContainer] = React.useState<HTMLDivElement>();\r\n const [pointerPercent, setPointerPercent] = React.useState(0);\r\n\r\n React.useLayoutEffect(() => {\r\n // istanbul ignore else\r\n if (sliderRef.current) {\r\n const container = sliderRef.current.querySelector(\".iui-slider-container\");\r\n if (container && sliderContainer !== container) {\r\n setSliderContainer(container as HTMLDivElement);\r\n }\r\n }\r\n }, [sliderContainer]);\r\n\r\n const thumbProps = () => {\r\n return {\r\n className: \"components-timeline-thumb\",\r\n children: <CustomThumb />,\r\n };\r\n };\r\n\r\n const tooltipProps = React.useCallback(() => {\r\n return { visible: false };\r\n }, []);\r\n\r\n const [showRailTooltip, setShowRailTooltip] = React.useState(false);\r\n\r\n const handlePointerEnter = React.useCallback(() => {\r\n setShowRailTooltip(true);\r\n }, []);\r\n\r\n const handlePointerLeave = React.useCallback(() => {\r\n setShowRailTooltip(false);\r\n }, []);\r\n\r\n const handlePointerMove = React.useCallback((event: React.PointerEvent) => {\r\n sliderContainer &&\r\n setPointerPercent(getPercentageOfRectangle(sliderContainer.getBoundingClientRect(), event.clientX));\r\n }, [sliderContainer]);\r\n\r\n const { formatTick, formatTime, onChange, onUpdate, dayStartMs, sunSetOffsetMs, sunRiseOffsetMs, currentTimeOffsetMs, isPlaying } = props;\r\n\r\n const thumbHasFocus = useFocusedThumb(sliderContainer);\r\n\r\n const tickLabel = React.useMemo(() => {\r\n const showTip = isPlaying || showRailTooltip || thumbHasFocus;\r\n const totalDuration = sunSetOffsetMs - sunRiseOffsetMs;\r\n const percent = (isPlaying || thumbHasFocus) ? (currentTimeOffsetMs - sunRiseOffsetMs) / totalDuration : pointerPercent;\r\n const tooltipText = formatTime((isPlaying || thumbHasFocus) ? (dayStartMs + currentTimeOffsetMs) : (dayStartMs + (sunRiseOffsetMs + (pointerPercent * totalDuration))));\r\n return (<RailMarkers showToolTip={showTip} percent={percent} tooltipText={tooltipText} />);\r\n }, [isPlaying, showRailTooltip, thumbHasFocus, sunSetOffsetMs, sunRiseOffsetMs, currentTimeOffsetMs, pointerPercent, formatTime, dayStartMs]);\r\n\r\n const className = classnames(\"solar-slider\", props.className, formatTick && \"showticks\");\r\n const sunRiseFormat = formatTime(dayStartMs + sunRiseOffsetMs);\r\n const sunSetFormat = formatTime(dayStartMs + sunSetOffsetMs);\r\n return (\r\n <div className={className}>\r\n <Tooltip content={sunRiseFormat}>\r\n <span className=\"sunrise\">\r\n &#x2600;\r\n </span>\r\n </Tooltip>\r\n <Slider ref={sliderRef}\r\n className={className}\r\n step={millisecPerMinute}\r\n min={sunRiseOffsetMs}\r\n max={sunSetOffsetMs}\r\n minLabel=\"\"\r\n maxLabel=\"\"\r\n onUpdate={onUpdate}\r\n onChange={onChange}\r\n values={[currentTimeOffsetMs]}\r\n tooltipProps={tooltipProps}\r\n thumbProps={thumbProps}\r\n tickLabels={tickLabel}\r\n railContainerProps={{\r\n onPointerEnter: handlePointerEnter,\r\n onPointerMove: handlePointerMove,\r\n onPointerLeave: handlePointerLeave,\r\n }}\r\n />\r\n <Tooltip content={sunSetFormat}>\r\n <span className=\"sunset\">\r\n &#x263D;\r\n </span>\r\n </Tooltip>\r\n </div>\r\n );\r\n}\r\n\r\ninterface SolarTimelineComponentProps {\r\n dataProvider: SolarDataProvider; // provides date, sunrise, sunset in millisecs, also contains timezone offset from UTC, and updates the display style to current time.\r\n onPlayPause?: (playing: boolean) => void; // callback triggered when play/pause button is pressed\r\n duration?: number; // playback duration in milliseconds\r\n speed?: number;\r\n}\r\n\r\ninterface SolarTimelineComponentState {\r\n isPlaying: boolean; // timeline is currently playing or paused\r\n isDateOpened: boolean; // date picker is opened\r\n isSettingsOpened: boolean; // settings popup is opened\r\n dayStartMs: number;\r\n sunRiseOffsetMs: number;\r\n sunSetOffsetMs: number;\r\n sunDeltaMs: number;\r\n currentTimeOffsetMs: number;\r\n speed: number;\r\n loop: boolean;\r\n shadowColor: ColorDef;\r\n duration: number; // playback duration in milliseconds\r\n adjustedDuration: number; // playback duration in milliseconds/ speed\r\n}\r\n\r\n/** Solar Timeline\r\n * @alpha\r\n */\r\nexport class SolarTimeline extends React.PureComponent<SolarTimelineComponentProps, SolarTimelineComponentState> {\r\n private _datePicker: HTMLElement | null = null;\r\n private _settings: HTMLElement | null = null;\r\n private _requestFrame = 0;\r\n private _unmounted = false;\r\n private _timeLastCycle = 0;\r\n private _totalPlayTime = 0;\r\n private _settingsPopupTitle = UiIModelComponents.translate(\"solarsettings.shadowcolor\");\r\n private _playLabel = UiIModelComponents.translate(\"solartimeline.play\");\r\n private _settingLabel = UiIModelComponents.translate(\"solartimeline.settings\");\r\n private _loopLabel = UiIModelComponents.translate(\"timeline.repeat\");\r\n private _speedLabel = UiIModelComponents.translate(\"solartimeline.speed\");\r\n private _dateTimeLabel = UiIModelComponents.translate(\"solartimeline.dateTime\");\r\n\r\n private _months = [\r\n UiComponents.translate(\"month.short.january\"),\r\n UiComponents.translate(\"month.short.february\"),\r\n UiComponents.translate(\"month.short.march\"),\r\n UiComponents.translate(\"month.short.april\"),\r\n UiComponents.translate(\"month.short.may\"),\r\n UiComponents.translate(\"month.short.june\"),\r\n UiComponents.translate(\"month.short.july\"),\r\n UiComponents.translate(\"month.short.august\"),\r\n UiComponents.translate(\"month.short.september\"),\r\n UiComponents.translate(\"month.short.october\"),\r\n UiComponents.translate(\"month.short.november\"),\r\n UiComponents.translate(\"month.short.december\"),\r\n ];\r\n\r\n private _timeLabel = UiComponents.translate(\"datepicker.time\");\r\n private _amLabel = UiComponents.translate(\"time.am\");\r\n private _pmLabel = UiComponents.translate(\"time.pm\");\r\n private readonly _presetColors = [\r\n ColorDef.create(ColorByName.grey),\r\n ColorDef.create(ColorByName.lightGrey),\r\n ColorDef.create(ColorByName.darkGrey),\r\n ColorDef.create(ColorByName.lightBlue),\r\n ColorDef.create(ColorByName.lightGreen),\r\n ColorDef.create(ColorByName.darkGreen),\r\n ColorDef.create(ColorByName.tan),\r\n ColorDef.create(ColorByName.darkBrown),\r\n ];\r\n\r\n constructor(props: SolarTimelineComponentProps) {\r\n super(props);\r\n\r\n const dayStartMs = this.props.dataProvider.dayStartMs;\r\n const sunRiseOffsetMs = this.props.dataProvider.sunrise.getTime() - dayStartMs;\r\n const sunSetOffsetMs = this.props.dataProvider.sunset.getTime() - dayStartMs;\r\n const sunDeltaMs = sunSetOffsetMs - sunRiseOffsetMs;\r\n const sunOffsetMs = this.props.dataProvider.timeOfDay.getTime() - dayStartMs;\r\n const currentTimeOffsetMs = this.ensureRange(sunOffsetMs, sunRiseOffsetMs, sunSetOffsetMs);\r\n const shadowColor = this.props.dataProvider.shadowColor;\r\n const duration = this.props.duration ? this.props.duration : defaultPlaybackDuration;\r\n const speed = this.props.speed ? this.props.speed : 2;\r\n const adjustedDuration = duration / speed;\r\n this.setPlaybackTimeBySunTime(currentTimeOffsetMs, sunRiseOffsetMs, sunDeltaMs, adjustedDuration);\r\n\r\n this.state = {\r\n isDateOpened: false,\r\n isSettingsOpened: false,\r\n isPlaying: false,\r\n dayStartMs,\r\n sunRiseOffsetMs,\r\n sunSetOffsetMs,\r\n sunDeltaMs,\r\n currentTimeOffsetMs,\r\n speed,\r\n loop: false,\r\n shadowColor,\r\n duration,\r\n adjustedDuration,\r\n };\r\n }\r\n\r\n public override componentWillUnmount() {\r\n window.cancelAnimationFrame(this._requestFrame);\r\n this._unmounted = true;\r\n }\r\n\r\n // recursively update the animation until we hit the end or the pause button is clicked\r\n private _updateAnimation = (_timestamp: number) => {\r\n // istanbul ignore else\r\n if (!this.state.isPlaying || this._unmounted) {\r\n window.cancelAnimationFrame(this._requestFrame);\r\n return;\r\n }\r\n\r\n const currentTime = new Date().getTime();\r\n this._totalPlayTime += (currentTime - this._timeLastCycle);\r\n this._timeLastCycle = currentTime;\r\n let percentComplete = this._totalPlayTime / this.state.adjustedDuration;\r\n if (percentComplete > 1)\r\n percentComplete = 1;\r\n\r\n let newPlayingState = true;\r\n\r\n // calculate the next sun time base on the percentage playback complete - should be int value as that is step amount for slider\r\n let nextSunOffset = Math.floor(this.state.sunRiseOffsetMs + (percentComplete * this.state.sunDeltaMs));\r\n\r\n if (percentComplete > 0.99) {\r\n if (!this.state.loop) {\r\n newPlayingState = false;\r\n nextSunOffset = this.state.sunSetOffsetMs;\r\n window.cancelAnimationFrame(this._requestFrame);\r\n } else {\r\n nextSunOffset = this.state.sunRiseOffsetMs;\r\n this._totalPlayTime = 0;\r\n }\r\n }\r\n\r\n if (this.props.dataProvider.onTimeChanged) {\r\n const currentSunTime = new Date(this.state.dayStartMs + nextSunOffset);\r\n this.props.dataProvider.onTimeChanged(currentSunTime);\r\n }\r\n\r\n this.setState({ isPlaying: newPlayingState, currentTimeOffsetMs: nextSunOffset }, () => {\r\n if (newPlayingState)\r\n this._requestFrame = window.requestAnimationFrame(this._updateAnimation);\r\n });\r\n };\r\n\r\n private _play(sunTimeMs: number) {\r\n this._timeLastCycle = new Date().getTime();\r\n\r\n // start playing\r\n this.setState({ isPlaying: true, currentTimeOffsetMs: sunTimeMs }, () => {\r\n this._requestFrame = window.requestAnimationFrame(this._updateAnimation);\r\n // istanbul ignore else\r\n if (this.props.onPlayPause)\r\n this.props.onPlayPause(true);\r\n });\r\n }\r\n\r\n // user clicked pause button\r\n private _onPause = () => {\r\n // istanbul ignore if\r\n if (!this.state.isPlaying)\r\n return;\r\n\r\n const currentTime = new Date().getTime();\r\n this._totalPlayTime += (currentTime - this._timeLastCycle);\r\n\r\n // stop requesting frames\r\n window.cancelAnimationFrame(this._requestFrame);\r\n\r\n // stop playing\r\n this.setState({ isPlaying: false });\r\n\r\n // istanbul ignore else\r\n if (this.props.onPlayPause)\r\n this.props.onPlayPause(false);\r\n };\r\n\r\n // user clicked play button\r\n private _onPlay = () => {\r\n // istanbul ignore if\r\n if (this.state.isPlaying)\r\n return;\r\n\r\n if (this.state.currentTimeOffsetMs >= this.state.sunSetOffsetMs || this.state.currentTimeOffsetMs <= this.state.sunRiseOffsetMs) {\r\n this._totalPlayTime = 0;\r\n this._play(this.state.sunRiseOffsetMs);\r\n } else {\r\n this._play(this.state.currentTimeOffsetMs);\r\n }\r\n };\r\n\r\n private setPlaybackTimeBySunTime(sunOffsetMs: number, sunRiseOffsetMs: number, sunDeltaMs: number, adjustedDuration?: number) {\r\n this._totalPlayTime = ((sunOffsetMs - sunRiseOffsetMs) / (sunDeltaMs)) * ((adjustedDuration) ? adjustedDuration : this.state.adjustedDuration);\r\n }\r\n\r\n /** note the day passed in is in the time of the current user not in project time because the date picker works in\r\n * local time */\r\n private _onDayClick = (day: Date) => {\r\n const selectedDate = new Date(day.getTime() + this.state.currentTimeOffsetMs);\r\n this.props.dataProvider.setDateAndTime(selectedDate);\r\n const dayStartMs = this.props.dataProvider.dayStartMs;\r\n const sunRiseOffsetMs = this.props.dataProvider.sunrise.getTime() - dayStartMs;\r\n const sunSetOffsetMs = this.props.dataProvider.sunset.getTime() - dayStartMs;\r\n const sunDeltaMs = sunSetOffsetMs - sunRiseOffsetMs;\r\n\r\n const sunOffsetMs = this.ensureRange(this.state.currentTimeOffsetMs, sunRiseOffsetMs, sunSetOffsetMs);\r\n this.setPlaybackTimeBySunTime(sunOffsetMs, sunRiseOffsetMs, sunDeltaMs);\r\n\r\n /** call dataProvider to update display style */\r\n if (this.props.dataProvider.onTimeChanged)\r\n this.props.dataProvider.onTimeChanged(this.props.dataProvider.timeOfDay);\r\n\r\n this.setState({ dayStartMs, sunRiseOffsetMs, sunSetOffsetMs, currentTimeOffsetMs: sunOffsetMs, sunDeltaMs, isDateOpened: false }, () => {\r\n this._timeLastCycle = new Date().getTime();\r\n });\r\n };\r\n\r\n private _onTimeChanged = (time: TimeSpec) => {\r\n // compute the current date (with time)\r\n const dayStartMs = this.props.dataProvider.dayStartMs;\r\n const sunTime = (time.hours * millisecPerHour) + (time.minutes * millisecPerMinute);\r\n const dateWithNewTime = new Date(dayStartMs + sunTime);\r\n this.props.dataProvider.setDateAndTime(dateWithNewTime, true);\r\n\r\n // notify the provider to update style\r\n if (this.props.dataProvider.onTimeChanged)\r\n this.props.dataProvider.onTimeChanged(dateWithNewTime);\r\n\r\n const currentTimeOffsetMs = this.ensureRange(sunTime, this.state.sunRiseOffsetMs, this.state.sunSetOffsetMs);\r\n\r\n this.setPlaybackTimeBySunTime(currentTimeOffsetMs, this.state.sunRiseOffsetMs, this.state.sunDeltaMs);\r\n this._timeLastCycle = new Date().getTime();\r\n\r\n // update the timeline\r\n this.setState({ currentTimeOffsetMs });\r\n };\r\n\r\n private _onCloseDayPicker = () => {\r\n this.setState({ isDateOpened: false });\r\n };\r\n\r\n private _onOpenDayPicker = () => {\r\n this.setState((prevState) => ({ isDateOpened: !prevState.isDateOpened }));\r\n };\r\n\r\n private _onCloseSettingsPopup = () => {\r\n this.setState({ isSettingsOpened: false });\r\n };\r\n\r\n private _onOpenSettingsPopup = () => {\r\n this.setState((prevState) => ({ isSettingsOpened: !prevState.isSettingsOpened }));\r\n };\r\n\r\n private ensureRange(value: number, min: number, max: number): number {\r\n return Math.max(Math.min(value, max), min);\r\n }\r\n\r\n private processSunTimeChange(sunTime: number) {\r\n if (sunTime === this.state.currentTimeOffsetMs)\r\n return;\r\n\r\n const currentTimeOffsetMs = this.ensureRange(sunTime, this.state.sunRiseOffsetMs, this.state.sunSetOffsetMs);\r\n\r\n if (this.props.dataProvider.onTimeChanged) {\r\n const currentSunTime = new Date(this.state.dayStartMs + currentTimeOffsetMs);\r\n this.props.dataProvider.onTimeChanged(currentSunTime);\r\n }\r\n\r\n this.setState({ currentTimeOffsetMs }, () => {\r\n const currentTime = new Date().getTime();\r\n this._timeLastCycle = currentTime;\r\n const percentComplete = (currentTimeOffsetMs - this.state.sunRiseOffsetMs) / this.state.sunDeltaMs;\r\n this._totalPlayTime = percentComplete * this.state.adjustedDuration;\r\n });\r\n }\r\n\r\n private _onUpdate = (values: ReadonlyArray<number>) => {\r\n if (!this.state.isPlaying)\r\n this.processSunTimeChange(values[0]);\r\n };\r\n\r\n private _onChange = (values: ReadonlyArray<number>) => {\r\n if (!this.state.isPlaying)\r\n this.processSunTimeChange(values[0]);\r\n };\r\n\r\n private _onSpeedChange = (value: number) => {\r\n const adjustedDuration = this.state.duration / value;\r\n this.setState({ speed: value, adjustedDuration });\r\n };\r\n\r\n private _onToggleLoop = () => {\r\n this.setState((prevState) => ({ loop: !prevState.loop }));\r\n };\r\n\r\n private _formatTime = (millisec: number) => {\r\n const date = new Date(millisec);\r\n // convert project date to browser locale date\r\n const localTime = adjustDateToTimezone(date, this.props.dataProvider.timeZoneOffset * 60);\r\n let hours = localTime.getHours();\r\n const minutes = addZero(date.getMinutes());\r\n const abbrev = (hours < 12) ? this._amLabel : (hours === 24) ? this._amLabel : this._pmLabel;\r\n hours = (hours > 12) ? hours - 12 : hours;\r\n return `${hours}:${minutes} ${abbrev}`;\r\n };\r\n\r\n private _onPresetColorPick = (shadowColor: ColorDef) => {\r\n this.setState({ shadowColor }, () => this.props.dataProvider.shadowColor = shadowColor);\r\n };\r\n\r\n private _handleHueOrSaturationChange = (hueOrSaturation: HSVColor) => {\r\n if (hueOrSaturation.s === 0) // for a ColorDef to be created from hsv s can't be 0\r\n hueOrSaturation = hueOrSaturation.clone(undefined, 0.5);\r\n\r\n const shadowColor = hueOrSaturation.toColorDef();\r\n this.setState({ shadowColor }, () => this.props.dataProvider.shadowColor = shadowColor);\r\n };\r\n\r\n public getLocalTime(ticks: number): Date {\r\n const projectTime = new Date(ticks);\r\n // convert project date to browser locale date\r\n return adjustDateToTimezone(projectTime, this.props.dataProvider.timeZoneOffset * 60);\r\n }\r\n\r\n public override render() {\r\n const { dataProvider } = this.props;\r\n const { speed, loop, currentTimeOffsetMs,\r\n sunRiseOffsetMs, sunSetOffsetMs } = this.state;\r\n const localTime = this.getLocalTime(this.state.dayStartMs + this.state.currentTimeOffsetMs);\r\n const formattedTime = this._formatTime(dataProvider.dayStartMs + currentTimeOffsetMs);\r\n const formattedDate = `${this._months[localTime.getMonth()]}, ${localTime.getDate()}`;\r\n\r\n const colorSwatchStyle: React.CSSProperties = {\r\n width: `100%`,\r\n height: `100%`,\r\n };\r\n\r\n return (\r\n <div className={\"solar-timeline-wrapper\"} >\r\n <div className=\"header\">\r\n <PlayButton tooltip={this._playLabel} className=\"play-button\" isPlaying={this.state.isPlaying} onPlay={this._onPlay} onPause={this._onPause} />\r\n <button data-testid=\"solar-date-time-button\" title={this._dateTimeLabel} className=\"current-date\" ref={(element) => this._datePicker = element} onClick={this._onOpenDayPicker}>\r\n <span>{formattedDate}</span>\r\n <span>/</span>\r\n <span>{formattedTime}</span>\r\n <span className=\"icon\"><Icon iconSpec={<SvgCalendar />} /></span>\r\n </button>\r\n <Popup style={{ border: \"none\" }} offset={11} target={this._datePicker} isOpen={this.state.isDateOpened} onClose={this._onCloseDayPicker} position={RelativePosition.Top}>\r\n <div className=\"components-date-picker-calendar-popup-panel\" data-testid=\"components-date-picker-calendar-popup-panel\">\r\n <DatePicker selected={localTime} onDateChange={this._onDayClick} showFocusOutline={false} />\r\n <div className=\"time-container\">\r\n <Text variant=\"body\" className=\"time-label\">{this._timeLabel}</Text>\r\n <TimeField time={{ hours: localTime.getHours(), minutes: localTime.getMinutes(), seconds: 0 }} timeDisplay={TimeDisplay.H12MC} onTimeChange={this._onTimeChanged} />\r\n </div>\r\n </div>\r\n </Popup>\r\n <Timeline className=\"solar-timeline\"\r\n dayStartMs={dataProvider.dayStartMs}\r\n sunSetOffsetMs={sunSetOffsetMs}\r\n sunRiseOffsetMs={sunRiseOffsetMs}\r\n currentTimeOffsetMs={currentTimeOffsetMs}\r\n onChange={this._onChange}\r\n onUpdate={this._onUpdate}\r\n formatTime={this._formatTime}\r\n isPlaying={this.state.isPlaying}\r\n />\r\n <div className=\"speed-container\">\r\n <span title={this._speedLabel}>{speed}x</span>\r\n <SpeedTimeline className=\"speed\" onChange={this._onSpeedChange} speed={this.state.speed} />\r\n </div>\r\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\r\n <span title={this._loopLabel}\r\n className={classnames(\"icon\", !loop && \"no-loop-playback\", loop && \"loop-playback\")} onClick={this._onToggleLoop}\r\n role=\"button\" tabIndex={-1}\r\n ><Icon iconSpec={<SvgLoop />} /></span>\r\n <button data-testid=\"shadow-settings-button\" title={this._settingLabel} className=\"shadow-settings-button\" ref={(element) => this._settings = element} onClick={this._onOpenSettingsPopup}>\r\n <span className=\"icon\"><Icon iconSpec={<SvgSettings />} /></span>\r\n </button>\r\n <Popup className=\"shadow-settings-popup\" target={this._settings} offset={11} isOpen={this.state.isSettingsOpened} onClose={this._onCloseSettingsPopup} position={RelativePosition.Top}>\r\n <div className=\"shadow-settings-popup-container\" >\r\n <div className=\"shadow-settings-header\">{this._settingsPopupTitle}</div>\r\n <div className=\"shadow-settings-color\">\r\n <div className=\"shadow-settings-color-top\">\r\n <SaturationPicker hsv={this.state.shadowColor.toHSV()} onSaturationChange={this._handleHueOrSaturationChange} />\r\n </div>\r\n <div className=\"shadow-settings-color-bottom\">\r\n <div className=\"shadow-settings-color-bottom-left\">\r\n <HueSlider hsv={this.state.shadowColor.toHSV()} onHueChange={this._handleHueOrSaturationChange} isHorizontal={true} />\r\n </div>\r\n <div className=\"shadow-settings-color-bottom-right\">\r\n <ColorSwatch style={colorSwatchStyle} colorDef={this.state.shadowColor} round={false} />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"shadow-settings-color-presets\">\r\n <ColorSwatch colorDef={this._presetColors[0]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[1]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[2]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[3]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[4]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[5]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[6]} round={false} onColorPick={this._onPresetColorPick} />\r\n <ColorSwatch colorDef={this._presetColors[7]} round={false} onColorPick={this._onPresetColorPick} />\r\n </div>\r\n </div>\r\n </Popup>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n"]}
@@ -7,27 +7,27 @@
7
7
  $top-position: 6px;
8
8
  $bottom-position: 4px;
9
9
 
10
- .solar-slider.solar-timeline>.iui-slider-container {
10
+ .solar-slider.solar-timeline > .iui-slider-container {
11
11
  height: 28px;
12
12
  }
13
13
 
14
14
  .solar-timeline-wrapper {
15
15
  box-sizing: border-box;
16
- background: $buic-background-2;
16
+ background: var(--iui-color-background);
17
17
  width: 100%;
18
18
  display: flex;
19
19
  flex-direction: column;
20
20
  position: relative;
21
21
  padding: 8px 16px;
22
- color: $buic-foreground-body;
23
- font-size: 14px;
22
+ color: var(--iui-color-text);
23
+ font-size: var(--iui-font-size-1);
24
24
 
25
- >.header {
25
+ > .header {
26
26
  display: flex;
27
27
  align-items: center;
28
28
  position: relative;
29
29
 
30
- >.play-button {
30
+ > .play-button {
31
31
  width: 26px;
32
32
  height: 26px;
33
33
  background: inherit;
@@ -35,10 +35,10 @@ $bottom-position: 4px;
35
35
  font-size: 20px;
36
36
  }
37
37
 
38
- >.shadow-settings-button {
38
+ > .shadow-settings-button {
39
39
  display: flex;
40
40
  align-items: center;
41
- color: $buic-foreground-body;
41
+ color: var(--iui-color-icon);
42
42
  width: 26px;
43
43
  height: 26px;
44
44
  background: inherit;
@@ -48,15 +48,16 @@ $bottom-position: 4px;
48
48
  cursor: pointer;
49
49
 
50
50
  &:hover {
51
- color: $buic-foreground-activehover;
51
+ color: var(--iui-color-icon-hover);
52
52
  }
53
53
 
54
- &:focus {
55
- outline: none;
54
+ &:focus-visible {
55
+ outline: 1px solid var(--iui-color-border-accent);
56
+ outline-offset: -1px;
56
57
  }
57
58
  }
58
59
 
59
- >.current-date {
60
+ > .current-date {
60
61
  min-width: 175px;
61
62
  margin-left: 8px;
62
63
  margin-right: 4px;
@@ -65,56 +66,57 @@ $bottom-position: 4px;
65
66
  border: none;
66
67
  display: flex;
67
68
  align-items: center;
68
- color: $buic-foreground-body;
69
- font-size: 14px;
69
+ color: var(--iui-color-text);
70
+ font-size: var(--iui-font-size-1);
70
71
  cursor: pointer;
71
72
 
72
- >span:nth-child(2) {
73
+ &:focus-visible {
74
+ outline: 1px solid var(--iui-color-border-accent);
75
+ outline-offset: -1px;
76
+ }
77
+
78
+ > span:nth-child(2) {
73
79
  margin: 0 6px;
74
80
  }
75
81
 
76
- >.icon-calendar {
82
+ > .icon-calendar {
77
83
  flex-grow: 1;
78
84
  margin-left: auto;
79
85
  }
80
86
  }
81
87
 
82
- >.speed-container {
88
+ > .speed-container {
83
89
  display: flex;
84
90
  align-items: center;
85
91
  margin-left: auto;
86
92
  cursor: pointer;
87
93
 
88
- >.speed {
94
+ > .speed {
89
95
  margin-left: 12px;
90
96
  width: 0;
91
97
  opacity: 0;
92
- transition: all .2s linear;
98
+ transition: all 0.2s linear;
93
99
  margin-right: 10px;
94
100
  }
95
101
  }
96
102
 
97
- >.loop-playback {
98
- color: $buic-foreground-primary;
103
+ > .loop-playback {
104
+ color: var(--iui-color-icon-accent);
99
105
  font-size: 16px;
100
106
  cursor: pointer;
101
107
 
102
- &:hover {
103
- color: $buic-foreground-primary-tone;
104
- }
105
-
106
108
  &:focus {
107
109
  outline: none;
108
110
  }
109
111
  }
110
112
 
111
- >.no-loop-playback {
112
- color: $buic-foreground-body;
113
+ > .no-loop-playback {
114
+ color: var(--iui-color-icon);
113
115
  font-size: 16px;
114
116
  cursor: pointer;
115
117
 
116
118
  &:hover {
117
- color: $buic-foreground-activehover;
119
+ color: var(--iui-color-icon-hover);
118
120
  }
119
121
 
120
122
  &:focus {
@@ -150,11 +152,11 @@ $bottom-position: 4px;
150
152
 
151
153
  .rail-inner {
152
154
  width: 100%;
153
- background: $buic-background-5;
155
+ background: var(--iui-color-background-backdrop);
154
156
  }
155
157
 
156
158
  .rail-solar {
157
- background: $buic-foreground-primary;
159
+ background: var(--iui-color-background-accent);
158
160
  z-index: 1;
159
161
  }
160
162
 
@@ -172,9 +174,14 @@ $bottom-position: 4px;
172
174
  z-index: 4;
173
175
  width: 38px;
174
176
  height: 20px;
175
- border-radius: 3px;
177
+ border-radius: var(--iui-border-radius-1);
176
178
  border: 1px solid $buic-background-5;
177
- background-image: linear-gradient(to bottom, $buic-background-3, $buic-background-3), linear-gradient(to bottom, $buic-background-1, $buic-background-1);
179
+ background-image: linear-gradient(
180
+ to bottom,
181
+ $buic-background-3,
182
+ $buic-background-3
183
+ ),
184
+ linear-gradient(to bottom, $buic-background-1, $buic-background-1);
178
185
  display: flex;
179
186
  align-items: center;
180
187
  justify-content: center;
@@ -182,12 +189,12 @@ $bottom-position: 4px;
182
189
  transform: translate(-50%, -50%);
183
190
  cursor: pointer;
184
191
 
185
- >div {
192
+ > div {
186
193
  width: 1px;
187
194
  height: 10px;
188
195
  opacity: 0.25;
189
196
  margin: 0 1px;
190
- background-color: $buic-foreground-body;
197
+ background-color: var(--iui-color-text);
191
198
  }
192
199
  }
193
200
 
@@ -217,14 +224,13 @@ $bottom-position: 4px;
217
224
  }
218
225
 
219
226
  .sunrise {
220
- color: #ffcf00;
227
+ color: var(--iui-color-icon-warning);
221
228
  margin: 0 24px 0 8px;
222
229
  }
223
-
224
230
  }
225
231
  }
226
232
 
227
- .solar-timeline-wrapper>.header>.speed-container:hover>.speed {
233
+ .solar-timeline-wrapper > .header > .speed-container:hover > .speed {
228
234
  opacity: 1;
229
235
  width: 80px;
230
236
  }
@@ -233,7 +239,7 @@ $bottom-position: 4px;
233
239
  transform: rotate(180deg);
234
240
  }
235
241
 
236
- .solar-timeline-wrapper.expanded>.header>.current-date {
242
+ .solar-timeline-wrapper.expanded > .header > .current-date {
237
243
  margin-left: 70px;
238
244
  }
239
245
 
@@ -250,8 +256,6 @@ $bottom-position: 4px;
250
256
  height: 100px;
251
257
  }
252
258
 
253
-
254
-
255
259
  .shadow-settings-color-top {
256
260
  display: inline;
257
261
  }
@@ -315,7 +319,7 @@ $bottom-position: 4px;
315
319
  display: grid;
316
320
  grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;
317
321
  grid-column-gap: 2px;
318
- border-top: 1px solid $buic-background-5;
322
+ border-top: 1px solid var(--iui-color-border-subtle);
319
323
  }
320
324
  }
321
325
 
@@ -323,13 +327,13 @@ $bottom-position: 4px;
323
327
  position: absolute;
324
328
  top: -8px;
325
329
  display: inline-block;
326
- border-bottom: 1px dotted #222;
330
+ border-bottom: 1px dotted rgba(0, 0, 0, var(--iui-opacity-3));
327
331
  font-size: 14px;
328
332
  }
329
333
 
330
334
  .solar-tooltip-text {
331
335
  width: 100px;
332
- background-color: #222;
336
+ background-color: rgba(0, 0, 0, var(--iui-opacity-3));
333
337
  color: #fff;
334
338
  // opacity: 0.8;
335
339
  text-align: center;
@@ -349,10 +353,7 @@ $bottom-position: 4px;
349
353
  margin-left: -5px;
350
354
  border-width: 5px;
351
355
  border-style: solid;
352
- border-color: #222 transparent transparent transparent;
356
+ border-color: rgba(0, 0, 0, var(--iui-opacity-3)) transparent transparent
357
+ transparent;
353
358
  }
354
359
  }
355
-
356
- .core-tooltip-tooltip.components-rail-tooltip {
357
- pointer-events: none;
358
- }
@@ -1,16 +1,16 @@
1
- /** @packageDocumentation
2
- * @module Timeline
3
- */
4
- /// <reference types="react" />
5
- import "./SpeedTimeline.scss";
6
- import { CommonProps } from "@itwin/core-react";
7
- interface SpeedProps extends CommonProps {
8
- speed: number;
9
- onChange?: (value: number) => void;
10
- }
11
- /** Speed Timeline used in Solar Timeline component
12
- * @internal
13
- */
14
- export declare function SpeedTimeline(props: SpeedProps): JSX.Element;
15
- export {};
1
+ /** @packageDocumentation
2
+ * @module Timeline
3
+ */
4
+ /// <reference types="react" />
5
+ import "./SpeedTimeline.scss";
6
+ import { CommonProps } from "@itwin/core-react";
7
+ interface SpeedProps extends CommonProps {
8
+ speed: number;
9
+ onChange?: (value: number) => void;
10
+ }
11
+ /** Speed Timeline used in Solar Timeline component
12
+ * @internal
13
+ */
14
+ export declare function SpeedTimeline(props: SpeedProps): JSX.Element;
15
+ export {};
16
16
  //# sourceMappingURL=SpeedTimeline.d.ts.map
@@ -1,55 +1,59 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module Timeline
8
- */
9
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || function (mod) {
22
- if (mod && mod.__esModule) return mod;
23
- var result = {};
24
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
- __setModuleDefault(result, mod);
26
- return result;
27
- };
28
- var __importDefault = (this && this.__importDefault) || function (mod) {
29
- return (mod && mod.__esModule) ? mod : { "default": mod };
30
- };
31
- Object.defineProperty(exports, "__esModule", { value: true });
32
- exports.SpeedTimeline = void 0;
33
- require("./SpeedTimeline.scss");
34
- const classnames_1 = __importDefault(require("classnames"));
35
- const React = __importStar(require("react"));
36
- const itwinui_react_1 = require("@itwin/itwinui-react");
37
- /** Speed Timeline used in Solar Timeline component
38
- * @internal
39
- */
40
- // eslint-disable-next-line @typescript-eslint/naming-convention
41
- function SpeedTimeline(props) {
42
- // istanbul ignore next - WIP
43
- const onChange = (values) => {
44
- const value = values[0];
45
- if (props.onChange && (value >= 1 && value <= 6))
46
- props.onChange(value);
47
- };
48
- const tooltipProps = React.useCallback(() => {
49
- return { visible: false };
50
- }, []);
51
- return (React.createElement("div", { className: (0, classnames_1.default)("speed-timeline", props.className) },
52
- React.createElement(itwinui_react_1.Slider, { step: 1, min: 1, max: 6, minLabel: "", maxLabel: "", onUpdate: onChange, onChange: onChange, values: [props.speed], trackDisplayMode: "none", tooltipProps: tooltipProps })));
53
- }
54
- exports.SpeedTimeline = SpeedTimeline;
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Timeline
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || function (mod) {
26
+ if (mod && mod.__esModule) return mod;
27
+ var result = {};
28
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
29
+ __setModuleDefault(result, mod);
30
+ return result;
31
+ };
32
+ var __importDefault = (this && this.__importDefault) || function (mod) {
33
+ return (mod && mod.__esModule) ? mod : { "default": mod };
34
+ };
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SpeedTimeline = void 0;
37
+ require("./SpeedTimeline.scss");
38
+ const classnames_1 = __importDefault(require("classnames"));
39
+ const React = __importStar(require("react"));
40
+ const itwinui_react_1 = require("@itwin/itwinui-react");
41
+ /** Speed Timeline used in Solar Timeline component
42
+ * @internal
43
+ */
44
+ // eslint-disable-next-line @typescript-eslint/naming-convention
45
+ function SpeedTimeline(props) {
46
+ // istanbul ignore next - WIP
47
+ const onChange = (values) => {
48
+ const value = values[0];
49
+ if (props.onChange && (value >= 1 && value <= 6))
50
+ props.onChange(value);
51
+ };
52
+ const tooltipProps = React.useCallback(() => {
53
+ return { visible: false };
54
+ }, []);
55
+ return (React.createElement("div", { className: (0, classnames_1.default)("speed-timeline", props.className) },
56
+ React.createElement(itwinui_react_1.Slider, { step: 1, min: 1, max: 6, minLabel: "", maxLabel: "", onUpdate: onChange, onChange: onChange, values: [props.speed], trackDisplayMode: "none", tooltipProps: tooltipProps })));
57
+ }
58
+ exports.SpeedTimeline = SpeedTimeline;
55
59
  //# sourceMappingURL=SpeedTimeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SpeedTimeline.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/timeline/SpeedTimeline.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gCAA8B;AAC9B,4DAAoC;AACpC,6CAA+B;AAC/B,wDAA8C;AAU9C;;GAEG;AACH,gEAAgE;AAChE,SAAgB,aAAa,CAAC,KAAiB;IAC7C,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,CAAC,MAA6B,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC9C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,6BAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3D,oBAAC,sBAAM,IACL,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,QAAQ,EAAC,EAAE,EACX,QAAQ,EAAC,EAAE,EACX,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EACrB,gBAAgB,EAAC,MAAM,EACvB,YAAY,EAAE,YAAY,GAAI,CAC5B,CACP,CAAC;AACJ,CAAC;AA3BD,sCA2BC","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 Timeline\r\n */\r\n\r\nimport \"./SpeedTimeline.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Slider } from \"@itwin/itwinui-react\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\n\r\n// component is in alpha state - it may change after usability testing - test coverage not complete\r\n\r\ninterface SpeedProps extends CommonProps {\r\n speed: number;\r\n onChange?: (value: number) => void;\r\n}\r\n\r\n/** Speed Timeline used in Solar Timeline component\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function SpeedTimeline(props: SpeedProps) {\r\n // istanbul ignore next - WIP\r\n const onChange = (values: ReadonlyArray<number>) => {\r\n const value = values[0];\r\n if (props.onChange && (value >= 1 && value <= 6))\r\n props.onChange(value);\r\n };\r\n\r\n const tooltipProps = React.useCallback(() => {\r\n return { visible: false };\r\n }, []);\r\n\r\n return (\r\n <div className={classnames(\"speed-timeline\", props.className)}>\r\n <Slider\r\n step={1}\r\n min={1}\r\n max={6}\r\n minLabel=\"\"\r\n maxLabel=\"\"\r\n onUpdate={onChange}\r\n onChange={onChange}\r\n values={[props.speed]}\r\n trackDisplayMode=\"none\"\r\n tooltipProps={tooltipProps} />\r\n </div>\r\n );\r\n}\r\n"]}
1
+ {"version":3,"file":"SpeedTimeline.js","sourceRoot":"","sources":["../../../../src/imodel-components-react/timeline/SpeedTimeline.tsx"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,gCAA8B;AAC9B,4DAAoC;AACpC,6CAA+B;AAC/B,wDAA8C;AAU9C;;GAEG;AACH,gEAAgE;AAChE,SAAgB,aAAa,CAAC,KAAiB;IAC7C,6BAA6B;IAC7B,MAAM,QAAQ,GAAG,CAAC,MAA6B,EAAE,EAAE;QACjD,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC9C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;QAC1C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,6BAAK,SAAS,EAAE,IAAA,oBAAU,EAAC,gBAAgB,EAAE,KAAK,CAAC,SAAS,CAAC;QAC3D,oBAAC,sBAAM,IACL,IAAI,EAAE,CAAC,EACP,GAAG,EAAE,CAAC,EACN,GAAG,EAAE,CAAC,EACN,QAAQ,EAAC,EAAE,EACX,QAAQ,EAAC,EAAE,EACX,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EACrB,gBAAgB,EAAC,MAAM,EACvB,YAAY,EAAE,YAAY,GAAI,CAC5B,CACP,CAAC;AACJ,CAAC;AA3BD,sCA2BC","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 Timeline\r\n */\r\n\r\nimport \"./SpeedTimeline.scss\";\r\nimport classnames from \"classnames\";\r\nimport * as React from \"react\";\r\nimport { Slider } from \"@itwin/itwinui-react\";\r\nimport { CommonProps } from \"@itwin/core-react\";\r\n\r\n// component is in alpha state - it may change after usability testing - test coverage not complete\r\n\r\ninterface SpeedProps extends CommonProps {\r\n speed: number;\r\n onChange?: (value: number) => void;\r\n}\r\n\r\n/** Speed Timeline used in Solar Timeline component\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/naming-convention\r\nexport function SpeedTimeline(props: SpeedProps) {\r\n // istanbul ignore next - WIP\r\n const onChange = (values: ReadonlyArray<number>) => {\r\n const value = values[0];\r\n if (props.onChange && (value >= 1 && value <= 6))\r\n props.onChange(value);\r\n };\r\n\r\n const tooltipProps = React.useCallback(() => {\r\n return { visible: false };\r\n }, []);\r\n\r\n return (\r\n <div className={classnames(\"speed-timeline\", props.className)}>\r\n <Slider\r\n step={1}\r\n min={1}\r\n max={6}\r\n minLabel=\"\"\r\n maxLabel=\"\"\r\n onUpdate={onChange}\r\n onChange={onChange}\r\n values={[props.speed]}\r\n trackDisplayMode=\"none\"\r\n tooltipProps={tooltipProps} />\r\n </div>\r\n );\r\n}\r\n"]}