@itwin/imodel-components-react 4.0.0-dev.12 → 4.0.0-dev.13

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 (352) hide show
  1. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
  2. package/lib/cjs/imodel-components-react/UiIModelComponents.js +75 -77
  3. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
  4. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  5. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +190 -186
  6. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
  7. package/lib/cjs/imodel-components-react/color/AlphaSlider.scss +63 -63
  8. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  9. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +112 -108
  10. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  11. package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +90 -90
  12. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  13. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +78 -74
  14. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  15. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  16. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +149 -145
  17. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  18. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  19. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  20. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +143 -139
  21. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  22. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +62 -62
  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/HueSlider.scss +61 -61
  27. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  28. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +217 -213
  29. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
  30. package/lib/cjs/imodel-components-react/color/SaturationPicker.scss +35 -35
  31. package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
  32. package/lib/cjs/imodel-components-react/color/Swatch.js +64 -60
  33. package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
  34. package/lib/cjs/imodel-components-react/color/Swatch.scss +22 -22
  35. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  36. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
  37. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  38. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  39. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +155 -151
  40. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
  41. package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +18 -18
  42. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  43. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +164 -160
  44. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
  45. package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +16 -16
  46. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  47. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +100 -96
  48. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  49. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  50. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
  51. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +272 -268
  52. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  53. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +106 -106
  54. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  55. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +89 -85
  56. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
  57. package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +48 -48
  58. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  59. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +163 -159
  60. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  61. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +51 -52
  62. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  63. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +131 -127
  64. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
  65. package/lib/cjs/imodel-components-react/navigationaids/Cube.scss +19 -19
  66. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +175 -174
  67. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  68. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +650 -638
  69. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  70. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +178 -178
  71. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  72. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +657 -653
  73. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  74. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +135 -135
  75. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  76. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +103 -99
  77. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  78. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +59 -63
  79. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  80. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +56 -53
  81. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  82. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  83. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +88 -84
  84. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  85. package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  86. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +89 -86
  87. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  88. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  89. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +112 -109
  90. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  91. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  92. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +133 -133
  93. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  94. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  95. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +187 -184
  96. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  97. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  98. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +149 -145
  99. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  100. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  101. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +63 -59
  102. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  103. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  104. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +51 -47
  105. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  106. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  107. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +58 -54
  108. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  109. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  110. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +52 -48
  111. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  112. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  113. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +54 -50
  114. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  115. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  116. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +62 -58
  117. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  118. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  119. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +51 -47
  120. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  121. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  122. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +60 -56
  123. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  124. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  125. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +98 -95
  126. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  127. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  128. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +123 -119
  129. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  130. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  131. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +143 -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/BaseTimelineDataProvider.js.map +1 -1
  136. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  137. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +85 -81
  138. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  139. package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +26 -26
  140. package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  141. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +99 -95
  142. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  143. package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +28 -28
  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 +105 -105
  148. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  149. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +432 -428
  150. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  151. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +359 -359
  152. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  153. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +58 -54
  154. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  155. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  156. package/lib/cjs/imodel-components-react/timeline/Timeline.scss +164 -164
  157. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
  158. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
  159. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +398 -365
  160. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  161. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +178 -161
  162. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +174 -174
  163. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
  164. package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
  165. package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
  166. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  167. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
  168. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +276 -274
  169. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  170. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  171. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
  172. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  173. package/lib/cjs/imodel-components-react.d.ts +82 -82
  174. package/lib/cjs/imodel-components-react.js +105 -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.js +72 -73
  178. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
  179. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  180. package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
  181. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
  182. package/lib/esm/imodel-components-react/color/AlphaSlider.scss +63 -63
  183. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  184. package/lib/esm/imodel-components-react/color/ColorPickerButton.js +83 -83
  185. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  186. package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +90 -90
  187. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  188. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
  189. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  190. package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  191. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +122 -122
  192. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  193. package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  194. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  195. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +114 -114
  196. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  197. package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +62 -62
  198. package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
  199. package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
  200. package/lib/esm/imodel-components-react/color/HueSlider.js.map +1 -1
  201. package/lib/esm/imodel-components-react/color/HueSlider.scss +61 -61
  202. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  203. package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
  204. package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +1 -1
  205. package/lib/esm/imodel-components-react/color/SaturationPicker.scss +35 -35
  206. package/lib/esm/imodel-components-react/color/Swatch.d.ts +22 -22
  207. package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
  208. package/lib/esm/imodel-components-react/color/Swatch.js.map +1 -1
  209. package/lib/esm/imodel-components-react/color/Swatch.scss +22 -22
  210. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  211. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
  212. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  213. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  214. package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
  215. package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +1 -1
  216. package/lib/esm/imodel-components-react/editors/ColorEditor.scss +18 -18
  217. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  218. package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
  219. package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +1 -1
  220. package/lib/esm/imodel-components-react/editors/WeightEditor.scss +16 -16
  221. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  222. package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
  223. package/lib/esm/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  224. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  225. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts.map +1 -1
  226. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +243 -243
  227. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  228. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +106 -106
  229. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  230. package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
  231. package/lib/esm/imodel-components-react/lineweight/Swatch.js.map +1 -1
  232. package/lib/esm/imodel-components-react/lineweight/Swatch.scss +48 -48
  233. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  234. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +134 -133
  235. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  236. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +51 -52
  237. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  238. package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
  239. package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +1 -1
  240. package/lib/esm/imodel-components-react/navigationaids/Cube.scss +19 -19
  241. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +175 -174
  242. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts.map +1 -1
  243. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +620 -610
  244. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  245. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +178 -178
  246. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  247. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +627 -626
  248. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  249. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +135 -135
  250. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  251. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
  252. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  253. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +59 -63
  254. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  255. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +29 -30
  256. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  257. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  258. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +61 -61
  259. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  260. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  261. package/lib/esm/imodel-components-react/quantityformat/FormatType.js +62 -63
  262. package/lib/esm/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  263. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  264. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +82 -83
  265. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  266. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  267. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +106 -110
  268. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  269. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  270. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +157 -158
  271. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  272. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  273. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +122 -122
  274. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  275. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  276. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
  277. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  278. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  279. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
  280. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  281. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  282. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
  283. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  284. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  285. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
  286. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  287. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  288. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
  289. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  290. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  291. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
  292. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  293. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  294. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
  295. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  296. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  297. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
  298. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  299. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  300. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +68 -69
  301. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  302. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  303. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
  304. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  305. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  306. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +139 -139
  307. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  308. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  309. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
  310. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  311. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  312. package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
  313. package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  314. package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +26 -26
  315. package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  316. package/lib/esm/imodel-components-react/timeline/PlayerButton.js +68 -68
  317. package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  318. package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +28 -28
  319. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  320. package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
  321. package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +1 -1
  322. package/lib/esm/imodel-components-react/timeline/Scrubber.scss +105 -105
  323. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  324. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +402 -402
  325. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  326. package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +359 -359
  327. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  328. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
  329. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  330. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  331. package/lib/esm/imodel-components-react/timeline/Timeline.scss +164 -164
  332. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +130 -133
  333. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts.map +1 -1
  334. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +368 -339
  335. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  336. package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +178 -161
  337. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +174 -174
  338. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts.map +1 -1
  339. package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
  340. package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
  341. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  342. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts.map +1 -1
  343. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +249 -251
  344. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  345. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  346. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +96 -95
  347. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  348. package/lib/esm/imodel-components-react.d.ts +82 -82
  349. package/lib/esm/imodel-components-react.js +87 -87
  350. package/lib/esm/imodel-components-react.js.map +1 -1
  351. package/lib/public/locales/en/UiIModelComponents.json +139 -139
  352. package/package.json +21 -21
@@ -1,366 +1,399 @@
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.TimelineComponent = void 0;
33
- require("./TimelineComponent.scss");
34
- const classnames_1 = __importDefault(require("classnames"));
35
- const React = __importStar(require("react"));
36
- const appui_abstract_1 = require("@itwin/appui-abstract");
37
- const components_react_1 = require("@itwin/components-react");
38
- const UiIModelComponents_1 = require("../UiIModelComponents");
39
- const InlineEdit_1 = require("./InlineEdit");
40
- const interfaces_1 = require("./interfaces");
41
- const PlayerButton_1 = require("./PlayerButton");
42
- const Scrubber_1 = require("./Scrubber");
43
- const itwinui_react_1 = require("@itwin/itwinui-react");
44
- const core_react_1 = require("@itwin/core-react");
45
- const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
46
- // cspell:ignore millisec
47
- const slowSpeed = 60 * 1000;
48
- const mediumSpeed = 20 * 1000;
49
- const fastSpeed = 10 * 1000;
50
- /**
51
- * [[TimelineComponent]] is used to playback timeline data
52
- * @public
53
- */
54
- class TimelineComponent extends React.Component {
55
- constructor(props) {
56
- super(props);
57
- this._timeLastCycle = 0;
58
- this._requestFrame = 0;
59
- this._unmounted = false;
60
- this._standardTimelineMenuItems = [
61
- { label: UiIModelComponents_1.UiIModelComponents.translate("timeline.slow"), timelineDuration: slowSpeed },
62
- { label: UiIModelComponents_1.UiIModelComponents.translate("timeline.medium"), timelineDuration: mediumSpeed },
63
- { label: UiIModelComponents_1.UiIModelComponents.translate("timeline.fast"), timelineDuration: fastSpeed },
64
- ];
65
- this._handleTimelinePausePlayEvent = (args) => {
66
- const timelineArgs = args;
67
- // istanbul ignore else
68
- if (!timelineArgs || this.props.componentId !== timelineArgs.uiComponentId || timelineArgs.timelineAction === undefined)
69
- return;
70
- let startPlaying;
71
- switch (timelineArgs.timelineAction) {
72
- case interfaces_1.TimelinePausePlayAction.Play:
73
- startPlaying = true;
74
- break;
75
- case interfaces_1.TimelinePausePlayAction.Pause:
76
- startPlaying = false;
77
- break;
78
- case interfaces_1.TimelinePausePlayAction.Toggle:
79
- startPlaying = !this.state.isPlaying;
80
- break;
81
- // istanbul ignore next
82
- default:
83
- return; // throw error?
84
- }
85
- if (startPlaying)
86
- this._onPlay();
87
- else
88
- this._onPause();
89
- };
90
- // user clicked backward button
91
- this._onBackward = () => {
92
- // istanbul ignore else
93
- if (this.props.onJump)
94
- this.props.onJump(false);
95
- };
96
- // user clicked forward button
97
- this._onForward = () => {
98
- // istanbul ignore else
99
- if (this.props.onJump)
100
- this.props.onJump(true);
101
- };
102
- // user clicked play button
103
- this._onPlay = () => {
104
- // istanbul ignore if
105
- if (this.state.isPlaying)
106
- return;
107
- // timeline was complete, restart from the beginning
108
- if (this.state.currentDuration >= this.state.totalDuration) {
109
- this._replay();
110
- }
111
- else
112
- this._play();
113
- // istanbul ignore else
114
- if (this.props.onPlayPause)
115
- this.props.onPlayPause(true);
116
- };
117
- // user clicked pause button
118
- this._onPause = () => {
119
- // istanbul ignore if
120
- if (!this.state.isPlaying)
121
- return;
122
- // stop requesting frames
123
- window.cancelAnimationFrame(this._requestFrame);
124
- // stop playing
125
- this.setState({ isPlaying: false });
126
- // istanbul ignore else
127
- if (this.props.onPlayPause)
128
- this.props.onPlayPause(false);
129
- };
130
- // user clicked on timeline rail or dragged scrubber handle
131
- this._onTimelineChange = (values) => {
132
- const currentDuration = values[0];
133
- this._setDuration(currentDuration);
134
- };
135
- // set the current duration, which will call the OnChange callback
136
- this._setDuration = (currentDuration) => {
137
- const actualDuration = Math.min(this.state.totalDuration, (Math.max(currentDuration, 0)));
138
- this._timeLastCycle = new Date().getTime();
139
- // istanbul ignore else
140
- if (!this._unmounted)
141
- this.setState({ currentDuration: actualDuration });
142
- // istanbul ignore else
143
- if (this.props.onChange) {
144
- const fraction = actualDuration / this.state.totalDuration;
145
- this.props.onChange(fraction);
146
- }
147
- };
148
- // recursively update the animation until we hit the end or the pause button is clicked
149
- this._updateAnimation = (_timestamp) => {
150
- // istanbul ignore else
151
- if (!this.state.isPlaying && !this._unmounted) {
152
- return;
153
- }
154
- // update duration
155
- const currentTime = new Date().getTime();
156
- const millisecondsElapsed = currentTime - this._timeLastCycle;
157
- const duration = this.state.currentDuration + millisecondsElapsed;
158
- this._setDuration(duration);
159
- // stop the animation!
160
- if (duration >= this.state.totalDuration) {
161
- window.cancelAnimationFrame(this._requestFrame);
162
- this.setState({ isPlaying: false });
163
- if (this.state.repeat)
164
- this._replay();
165
- else {
166
- // istanbul ignore else
167
- if (this.props.onPlayPause)
168
- this.props.onPlayPause(false);
169
- }
170
- return;
171
- }
172
- // continue the animation - request the next frame
173
- this._requestFrame = window.requestAnimationFrame(this._updateAnimation);
174
- };
175
- this._replay = () => {
176
- // timeline was complete, restart from the beginning
177
- this.setState({ currentDuration: 0 }, (() => this._play()));
178
- };
179
- // user changed the total duration
180
- this._onTotalDurationChange = (value) => {
181
- // NOTE: we should reset the current duration to 0
182
- const milliseconds = this._getMilliseconds(value);
183
- this._onSetTotalDuration(milliseconds);
184
- };
185
- this._changeRepeatSetting = (newValue) => {
186
- // istanbul ignore else
187
- if (newValue !== undefined) {
188
- this.setState(() => ({ repeat: newValue }), () => {
189
- // istanbul ignore else
190
- if (this.props.onSettingsChange) {
191
- this.props.onSettingsChange({ loop: this.state.repeat });
192
- }
193
- });
194
- }
195
- };
196
- this._onRepeatChanged = () => {
197
- this.setState((prevState) => ({ repeat: !prevState.repeat }), () => {
198
- // istanbul ignore else
199
- if (this.props.onSettingsChange) {
200
- this.props.onSettingsChange({ loop: this.state.repeat });
201
- }
202
- });
203
- };
204
- this._currentDate = () => {
205
- const fraction = this.state.currentDuration / this.state.totalDuration;
206
- if (this.props.endDate && this.props.startDate) {
207
- const timeElapsed = (this.props.endDate.getTime() - this.props.startDate.getTime()) * fraction;
208
- return new Date(this.props.startDate.getTime() + timeElapsed);
209
- }
210
- return new Date();
211
- };
212
- this._onSetTotalDuration = (milliseconds) => {
213
- this.setState({ totalDuration: milliseconds }, () => {
214
- // istanbul ignore else
215
- if (this.props.onSettingsChange) {
216
- this.props.onSettingsChange({ duration: milliseconds });
217
- }
218
- });
219
- };
220
- this._renderSettings = () => {
221
- const createMenuItemNodes = (close) => {
222
- const { totalDuration } = this.state;
223
- let contextMenuItems = [];
224
- if (!this.props.appMenuItems) {
225
- contextMenuItems = this._standardTimelineMenuItems;
226
- }
227
- else {
228
- if (this.props.appMenuItemOption === "append") {
229
- contextMenuItems = this._standardTimelineMenuItems.concat(this.props.appMenuItems);
230
- }
231
- else if (this.props.appMenuItemOption === "prefix") {
232
- contextMenuItems = this.props.appMenuItems.concat(this._standardTimelineMenuItems);
233
- }
234
- else {
235
- contextMenuItems = this.props.appMenuItems;
236
- }
237
- }
238
- const itemNodes = [];
239
- let keyIndex = 0;
240
- if (this.state.includeRepeat) {
241
- const checked = this.state.repeat;
242
- const icon = checked ? React.createElement("span", { className: "icon" },
243
- React.createElement(core_react_1.Icon, { iconSpec: React.createElement(itwinui_icons_react_1.SvgCheckmark, null) }),
244
- " ") : React.createElement("span", null);
245
- itemNodes.push(React.createElement(itwinui_react_1.MenuItem, { key: ++keyIndex, onClick: () => { this._onRepeatChanged(); close(); }, icon: icon }, this._repeatLabel));
246
- itemNodes.push(React.createElement(itwinui_react_1.MenuDivider, { key: ++keyIndex }));
247
- }
248
- contextMenuItems.forEach((item, index) => {
249
- itemNodes.push(this._createMenuItemNode(item, index + keyIndex + 1, totalDuration, close));
250
- });
251
- return itemNodes;
252
- };
253
- return (React.createElement(itwinui_react_1.DropdownMenu, { menuItems: createMenuItemNodes },
254
- React.createElement("span", { "data-testid": "timeline-settings", className: "timeline-settings icon", role: "button", tabIndex: -1, title: components_react_1.UiComponents.translate("button.label.settings") },
255
- React.createElement(core_react_1.Icon, { iconSpec: React.createElement(itwinui_icons_react_1.SvgMoreVertical, null) }))));
256
- };
257
- this.state = {
258
- isPlaying: false,
259
- minimized: true,
260
- currentDuration: props.initialDuration ? props.initialDuration : /* istanbul ignore next */ 0,
261
- totalDuration: this.props.totalDuration,
262
- repeat: this.props.repeat ? true : false,
263
- includeRepeat: this.props.includeRepeat || this.props.includeRepeat === undefined ? true : false,
264
- };
265
- this._repeatLabel = UiIModelComponents_1.UiIModelComponents.translate("timeline.repeat");
266
- // istanbul ignore else
267
- if (this.props.componentId) { // can't handle an event if we have no id
268
- this._removeListener = appui_abstract_1.UiAdmin.onGenericUiEvent.addListener(this._handleTimelinePausePlayEvent);
269
- }
270
- }
271
- componentWillUnmount() {
272
- if (this._removeListener)
273
- this._removeListener();
274
- window.cancelAnimationFrame(this._requestFrame);
275
- this._unmounted = true;
276
- }
277
- shouldComponentUpdate(nextProps, nextState) {
278
- let result = false;
279
- // istanbul ignore next
280
- if (nextState !== this.state || nextProps !== this.props ||
281
- nextProps.startDate !== this.props.startDate ||
282
- nextProps.endDate !== this.props.endDate ||
283
- nextProps.initialDuration !== this.props.initialDuration ||
284
- nextProps.repeat !== this.props.repeat)
285
- result = true;
286
- return result;
287
- }
288
- componentDidUpdate(prevProps) {
289
- // istanbul ignore else
290
- if (this.props.initialDuration !== prevProps.initialDuration) {
291
- this._setDuration(this.props.initialDuration ? this.props.initialDuration : /* istanbul ignore next */ 0);
292
- }
293
- // istanbul ignore else
294
- if (this.props.repeat !== prevProps.repeat) {
295
- this._changeRepeatSetting(this.props.repeat);
296
- }
297
- // istanbul ignore else
298
- if (this.props.totalDuration !== prevProps.totalDuration) {
299
- this._onSetTotalDuration(this.props.totalDuration);
300
- }
301
- }
302
- _play() {
303
- // start playing
304
- this.setState({ isPlaying: true }, () => {
305
- // request the next frame
306
- this._timeLastCycle = new Date().getTime();
307
- this._requestFrame = window.requestAnimationFrame(this._updateAnimation);
308
- });
309
- }
310
- _displayTime(millisec) {
311
- const addZero = (i) => {
312
- return (i < 10) ? `0${i}` : i;
313
- };
314
- const date = new Date(millisec);
315
- // const hours = date.getUTCHours();
316
- const minutes = date.getUTCMinutes();
317
- const seconds = date.getUTCSeconds();
318
- return `${addZero(minutes)}:${addZero(seconds)}`;
319
- }
320
- _getMilliseconds(time) {
321
- // istanbul ignore else - WIP
322
- if (time.indexOf(":") !== -1) {
323
- return (Number(time.split(":")[0]) * 60 + Number(time.split(":")[1])) * 1000;
324
- }
325
- else {
326
- return Number(time) * 1000;
327
- }
328
- }
329
- _createMenuItemNode(item, index, currentTimelineDuration, close) {
330
- const label = item.label;
331
- const checked = currentTimelineDuration === item.timelineDuration;
332
- const icon = checked ? React.createElement("span", { className: "icon" },
333
- React.createElement(core_react_1.Icon, { iconSpec: React.createElement(itwinui_icons_react_1.SvgCheckmark, null) }),
334
- " ") : React.createElement("span", null);
335
- return (React.createElement(itwinui_react_1.MenuItem, { key: index, icon: icon, onClick: () => { this._onSetTotalDuration(item.timelineDuration); close(); } }, label));
336
- }
337
- render() {
338
- const { startDate, endDate, showDuration, timeZoneOffset, dateFormatOptions, timeFormatOptions } = this.props;
339
- const { currentDuration, totalDuration, minimized } = this.state;
340
- const currentDate = this._currentDate();
341
- const durationString = this._displayTime(currentDuration);
342
- const totalDurationString = this._displayTime(totalDuration);
343
- const hasDates = !!startDate && !!endDate;
344
- return (React.createElement("div", { "data-testid": "timeline-component", className: (0, classnames_1.default)("timeline-component", !!minimized && "minimized", hasDates && "has-dates") },
345
- React.createElement("div", { className: "header" },
346
- React.createElement(PlayerButton_1.PlayButton, { className: "play-button", isPlaying: this.state.isPlaying, onPlay: this._onPlay, onPause: this._onPause, "data-testid": "timeline-play" }),
347
- React.createElement(PlayerButton_1.PlayerButton, { className: "play-backward", icon: React.createElement(itwinui_icons_react_1.SvgCaretLeft, null), onClick: this._onBackward, title: UiIModelComponents_1.UiIModelComponents.translate("timeline.backward") }),
348
- React.createElement(PlayerButton_1.PlayerButton, { className: "play-button-step", icon: React.createElement(itwinui_icons_react_1.SvgPlayCircular, null), isPlaying: this.state.isPlaying, onPlay: this._onPlay, onPause: this._onPause, title: UiIModelComponents_1.UiIModelComponents.translate("timeline.step") }),
349
- React.createElement(PlayerButton_1.PlayerButton, { className: "play-forward", icon: React.createElement(itwinui_icons_react_1.SvgCaretRight, null), onClick: this._onForward, title: UiIModelComponents_1.UiIModelComponents.translate("timeline.backward") }),
350
- React.createElement("span", { className: "current-date" }, (0, components_react_1.toDateString)(currentDate, timeZoneOffset, dateFormatOptions))),
351
- React.createElement("div", { className: "scrubber" },
352
- React.createElement(PlayerButton_1.PlayButton, { className: "play-button", isPlaying: this.state.isPlaying, onPlay: this._onPlay, onPause: this._onPause }),
353
- React.createElement("div", { className: "start-time-container" },
354
- hasDates && React.createElement("span", { "data-testid": "test-start-date", className: "start-date" }, (0, components_react_1.toDateString)(startDate, timeZoneOffset, dateFormatOptions)),
355
- hasDates && !showDuration && React.createElement("span", { "data-testid": "test-start-time", className: "start-time" }, (0, components_react_1.toTimeString)(startDate, timeZoneOffset, timeFormatOptions)),
356
- showDuration && React.createElement("span", { className: "duration-start-time" }, durationString)),
357
- React.createElement(Scrubber_1.Scrubber, { className: "slider", currentDuration: this.state.currentDuration, totalDuration: totalDuration, startDate: startDate, endDate: endDate, isPlaying: this.state.isPlaying, inMiniMode: !!minimized, showTime: !showDuration, onChange: this._onTimelineChange, onUpdate: this._onTimelineChange, timeZoneOffset: this.props.timeZoneOffset, markDate: this.props.markDate }),
358
- React.createElement("div", { className: "end-time-container" },
359
- hasDates && React.createElement("span", { className: "end-date" }, (0, components_react_1.toDateString)(endDate, timeZoneOffset)),
360
- hasDates && !showDuration && React.createElement("span", { className: "end-time" }, (0, components_react_1.toTimeString)(endDate, timeZoneOffset, timeFormatOptions)),
361
- showDuration && React.createElement(InlineEdit_1.InlineEdit, { className: "duration-end-time", defaultValue: totalDurationString, onChange: this._onTotalDurationChange })),
362
- minimized && this._renderSettings())));
363
- }
364
- }
365
- exports.TimelineComponent = TimelineComponent;
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.TimelineComponent = void 0;
30
+ /*---------------------------------------------------------------------------------------------
31
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
32
+ * See LICENSE.md in the project root for license terms and full copyright notice.
33
+ *--------------------------------------------------------------------------------------------*/
34
+ /** @packageDocumentation
35
+ * @module Timeline
36
+ */
37
+ const appui_abstract_1 = require("@itwin/appui-abstract");
38
+ const components_react_1 = require("@itwin/components-react");
39
+ const core_react_1 = require("@itwin/core-react");
40
+ const itwinui_icons_react_1 = require("@itwin/itwinui-icons-react");
41
+ const itwinui_react_1 = require("@itwin/itwinui-react");
42
+ const classnames_1 = __importDefault(require("classnames"));
43
+ const React = __importStar(require("react"));
44
+ const UiIModelComponents_1 = require("../UiIModelComponents");
45
+ const InlineEdit_1 = require("./InlineEdit");
46
+ const interfaces_1 = require("./interfaces");
47
+ const PlayerButton_1 = require("./PlayerButton");
48
+ const Scrubber_1 = require("./Scrubber");
49
+ require("./TimelineComponent.scss");
50
+ // cspell:ignore millisec
51
+ const slowSpeed = 60 * 1000;
52
+ const mediumSpeed = 20 * 1000;
53
+ const fastSpeed = 10 * 1000;
54
+ /**
55
+ * [[TimelineComponent]] is used to playback timeline data
56
+ * @public
57
+ */
58
+ class TimelineComponent extends React.Component {
59
+ constructor(props) {
60
+ super(props);
61
+ this._timeLastCycle = 0;
62
+ this._requestFrame = 0;
63
+ this._unmounted = false;
64
+ this._standardTimelineMenuItems = [
65
+ { label: UiIModelComponents_1.UiIModelComponents.translate("timeline.slow"), timelineDuration: slowSpeed },
66
+ { label: UiIModelComponents_1.UiIModelComponents.translate("timeline.medium"), timelineDuration: mediumSpeed },
67
+ { label: UiIModelComponents_1.UiIModelComponents.translate("timeline.fast"), timelineDuration: fastSpeed },
68
+ ];
69
+ this._handleTimelinePausePlayEvent = (args) => {
70
+ const timelineArgs = args;
71
+ // istanbul ignore else
72
+ if (!timelineArgs || this.props.componentId !== timelineArgs.uiComponentId || timelineArgs.timelineAction === undefined)
73
+ return;
74
+ let startPlaying;
75
+ switch (timelineArgs.timelineAction) {
76
+ case interfaces_1.TimelinePausePlayAction.Play:
77
+ startPlaying = true;
78
+ break;
79
+ case interfaces_1.TimelinePausePlayAction.Pause:
80
+ startPlaying = false;
81
+ break;
82
+ case interfaces_1.TimelinePausePlayAction.Toggle:
83
+ startPlaying = !this.state.isPlaying;
84
+ break;
85
+ // istanbul ignore next
86
+ default:
87
+ return; // throw error?
88
+ }
89
+ if (startPlaying)
90
+ this._onPlay();
91
+ else
92
+ this._onPause();
93
+ };
94
+ // user clicked backward button
95
+ this._onBackward = () => {
96
+ // istanbul ignore else
97
+ if (this.props.onJump)
98
+ this.props.onJump(false);
99
+ };
100
+ // user clicked forward button
101
+ this._onForward = () => {
102
+ // istanbul ignore else
103
+ if (this.props.onJump)
104
+ this.props.onJump(true);
105
+ };
106
+ // user clicked play button
107
+ this._onPlay = () => {
108
+ // istanbul ignore if
109
+ if (this.state.isPlaying)
110
+ return;
111
+ // timeline was complete, restart from the beginning
112
+ if (this.state.currentDuration >= this.state.totalDuration) {
113
+ this._replay();
114
+ }
115
+ else
116
+ this._play();
117
+ // istanbul ignore else
118
+ if (this.props.onPlayPause)
119
+ this.props.onPlayPause(true);
120
+ };
121
+ // user clicked pause button
122
+ this._onPause = () => {
123
+ // istanbul ignore if
124
+ if (!this.state.isPlaying)
125
+ return;
126
+ // stop requesting frames
127
+ window.cancelAnimationFrame(this._requestFrame);
128
+ // stop playing
129
+ this.setState({ isPlaying: false });
130
+ // istanbul ignore else
131
+ if (this.props.onPlayPause)
132
+ this.props.onPlayPause(false);
133
+ };
134
+ // user clicked on timeline rail or dragged scrubber handle
135
+ this._onTimelineChange = (values) => {
136
+ const currentDuration = values[0];
137
+ this._setDuration(currentDuration);
138
+ };
139
+ // set the current duration, which will call the OnChange callback
140
+ this._setDuration = (currentDuration) => {
141
+ const actualDuration = Math.min(this.state.totalDuration, (Math.max(currentDuration, 0)));
142
+ this._timeLastCycle = new Date().getTime();
143
+ // istanbul ignore else
144
+ if (!this._unmounted)
145
+ this.setState({ currentDuration: actualDuration });
146
+ // istanbul ignore else
147
+ if (this.props.onChange) {
148
+ const fraction = actualDuration / this.state.totalDuration;
149
+ this.props.onChange(fraction);
150
+ }
151
+ };
152
+ // recursively update the animation until we hit the end or the pause button is clicked
153
+ this._updateAnimation = (_timestamp) => {
154
+ // istanbul ignore else
155
+ if (!this.state.isPlaying && !this._unmounted) {
156
+ return;
157
+ }
158
+ // update duration
159
+ const currentTime = new Date().getTime();
160
+ const millisecondsElapsed = currentTime - this._timeLastCycle;
161
+ const duration = this.state.currentDuration + millisecondsElapsed;
162
+ this._setDuration(duration);
163
+ // stop the animation!
164
+ if (duration >= this.state.totalDuration) {
165
+ window.cancelAnimationFrame(this._requestFrame);
166
+ this.setState({ isPlaying: false });
167
+ if (this.state.repeat)
168
+ this._replay();
169
+ else {
170
+ // istanbul ignore else
171
+ if (this.props.onPlayPause)
172
+ this.props.onPlayPause(false);
173
+ }
174
+ return;
175
+ }
176
+ // continue the animation - request the next frame
177
+ this._requestFrame = window.requestAnimationFrame(this._updateAnimation);
178
+ };
179
+ this._replay = () => {
180
+ // timeline was complete, restart from the beginning
181
+ this.setState({ currentDuration: 0 }, (() => this._play()));
182
+ };
183
+ // user changed the total duration
184
+ this._onTotalDurationChange = (value) => {
185
+ // NOTE: we should reset the current duration to 0
186
+ const milliseconds = this._getMilliseconds(value);
187
+ this._onSetTotalDuration(milliseconds);
188
+ };
189
+ this._changeRepeatSetting = (newValue) => {
190
+ // istanbul ignore else
191
+ if (newValue !== undefined) {
192
+ this.setState(() => ({ repeat: newValue }), () => {
193
+ // istanbul ignore else
194
+ if (this.props.onSettingsChange) {
195
+ this.props.onSettingsChange({ loop: this.state.repeat });
196
+ }
197
+ });
198
+ }
199
+ };
200
+ this._onRepeatChanged = () => {
201
+ this.setState((prevState) => ({ repeat: !prevState.repeat }), () => {
202
+ // istanbul ignore else
203
+ if (this.props.onSettingsChange) {
204
+ this.props.onSettingsChange({ loop: this.state.repeat });
205
+ }
206
+ });
207
+ };
208
+ this._currentDate = () => {
209
+ const fraction = this.state.currentDuration / this.state.totalDuration;
210
+ if (this.props.endDate && this.props.startDate) {
211
+ const timeElapsed = (this.props.endDate.getTime() - this.props.startDate.getTime()) * fraction;
212
+ return new Date(this.props.startDate.getTime() + timeElapsed);
213
+ }
214
+ return new Date();
215
+ };
216
+ this._onSetTotalDuration = (milliseconds) => {
217
+ this.setState({ totalDuration: milliseconds }, () => {
218
+ // istanbul ignore else
219
+ if (this.props.onSettingsChange) {
220
+ this.props.onSettingsChange({ duration: milliseconds });
221
+ }
222
+ });
223
+ };
224
+ this._renderSettings = () => {
225
+ const createMenuItemNodes = (close) => {
226
+ const { totalDuration } = this.state;
227
+ let contextMenuItems = [];
228
+ if (!this.props.appMenuItems) {
229
+ contextMenuItems = this._standardTimelineMenuItems;
230
+ }
231
+ else {
232
+ if (this.props.appMenuItemOption === "append") {
233
+ contextMenuItems = this._standardTimelineMenuItems.concat(this.props.appMenuItems);
234
+ }
235
+ else if (this.props.appMenuItemOption === "prefix") {
236
+ contextMenuItems = this.props.appMenuItems.concat(this._standardTimelineMenuItems);
237
+ }
238
+ else {
239
+ contextMenuItems = this.props.appMenuItems;
240
+ }
241
+ }
242
+ const itemNodes = [];
243
+ let keyIndex = 0;
244
+ if (this.state.includeRepeat) {
245
+ const checked = this.state.repeat;
246
+ const icon = checked ? React.createElement("span", { className: "icon" },
247
+ React.createElement(core_react_1.Icon, { iconSpec: React.createElement(itwinui_icons_react_1.SvgCheckmark, null) }),
248
+ " ") : React.createElement("span", null);
249
+ itemNodes.push(React.createElement(itwinui_react_1.MenuItem, { key: ++keyIndex, onClick: () => { this._onRepeatChanged(); close(); }, icon: icon }, this._repeatLabel));
250
+ itemNodes.push(React.createElement(itwinui_react_1.MenuDivider, { key: ++keyIndex }));
251
+ }
252
+ contextMenuItems.forEach((item, index) => {
253
+ itemNodes.push(this._createMenuItemNode(item, index + keyIndex + 1, totalDuration, close));
254
+ });
255
+ return itemNodes;
256
+ };
257
+ return (React.createElement(itwinui_react_1.DropdownMenu, { menuItems: createMenuItemNodes, placement: "top-start", popperOptions: {
258
+ modifiers: [
259
+ {
260
+ name: "hide", // When the timeline is no longer visible, hide the popper.
261
+ },
262
+ {
263
+ name: "preventOverflow",
264
+ options: {
265
+ altAxis: true, // Allow the popper to go below the reference element and use as much space as needed.
266
+ },
267
+ },
268
+ {
269
+ name: "computeStyles",
270
+ options: {
271
+ roundOffsets: ({ x, y }) => ({
272
+ x,
273
+ y: Math.max(y, 0), // Ensure that the top of the popper will not go over the top of the document.
274
+ }),
275
+ },
276
+ },
277
+ {
278
+ name: "setPopperClass",
279
+ enabled: true,
280
+ phase: "beforeWrite",
281
+ fn({ state }) {
282
+ state.attributes.popper.class = "timeline-component-max-sized-scrolling-menu";
283
+ },
284
+ },
285
+ ]
286
+ } },
287
+ React.createElement("span", { "data-testid": "timeline-settings", className: "timeline-settings icon", role: "button", tabIndex: -1, title: components_react_1.UiComponents.translate("button.label.settings") },
288
+ React.createElement(core_react_1.Icon, { iconSpec: React.createElement(itwinui_icons_react_1.SvgMoreVertical, null) }))));
289
+ };
290
+ this.state = {
291
+ isPlaying: false,
292
+ minimized: true,
293
+ currentDuration: props.initialDuration ? props.initialDuration : /* istanbul ignore next */ 0,
294
+ totalDuration: this.props.totalDuration,
295
+ repeat: this.props.repeat ? true : false,
296
+ includeRepeat: this.props.includeRepeat || this.props.includeRepeat === undefined ? true : false,
297
+ };
298
+ this._repeatLabel = UiIModelComponents_1.UiIModelComponents.translate("timeline.repeat");
299
+ // istanbul ignore else
300
+ if (this.props.componentId) { // can't handle an event if we have no id
301
+ this._removeListener = appui_abstract_1.UiAdmin.onGenericUiEvent.addListener(this._handleTimelinePausePlayEvent);
302
+ }
303
+ }
304
+ componentWillUnmount() {
305
+ if (this._removeListener)
306
+ this._removeListener();
307
+ window.cancelAnimationFrame(this._requestFrame);
308
+ this._unmounted = true;
309
+ }
310
+ shouldComponentUpdate(nextProps, nextState) {
311
+ let result = false;
312
+ // istanbul ignore next
313
+ if (nextState !== this.state || nextProps !== this.props ||
314
+ nextProps.startDate !== this.props.startDate ||
315
+ nextProps.endDate !== this.props.endDate ||
316
+ nextProps.initialDuration !== this.props.initialDuration ||
317
+ nextProps.repeat !== this.props.repeat)
318
+ result = true;
319
+ return result;
320
+ }
321
+ componentDidUpdate(prevProps) {
322
+ // istanbul ignore else
323
+ if (this.props.initialDuration !== prevProps.initialDuration) {
324
+ this._setDuration(this.props.initialDuration ? this.props.initialDuration : /* istanbul ignore next */ 0);
325
+ }
326
+ // istanbul ignore else
327
+ if (this.props.repeat !== prevProps.repeat) {
328
+ this._changeRepeatSetting(this.props.repeat);
329
+ }
330
+ // istanbul ignore else
331
+ if (this.props.totalDuration !== prevProps.totalDuration) {
332
+ this._onSetTotalDuration(this.props.totalDuration);
333
+ }
334
+ }
335
+ _play() {
336
+ // start playing
337
+ this.setState({ isPlaying: true }, () => {
338
+ // request the next frame
339
+ this._timeLastCycle = new Date().getTime();
340
+ this._requestFrame = window.requestAnimationFrame(this._updateAnimation);
341
+ });
342
+ }
343
+ _displayTime(millisec) {
344
+ const addZero = (i) => {
345
+ return (i < 10) ? `0${i}` : i;
346
+ };
347
+ const date = new Date(millisec);
348
+ // const hours = date.getUTCHours();
349
+ const minutes = date.getUTCMinutes();
350
+ const seconds = date.getUTCSeconds();
351
+ return `${addZero(minutes)}:${addZero(seconds)}`;
352
+ }
353
+ _getMilliseconds(time) {
354
+ // istanbul ignore else - WIP
355
+ if (time.indexOf(":") !== -1) {
356
+ return (Number(time.split(":")[0]) * 60 + Number(time.split(":")[1])) * 1000;
357
+ }
358
+ else {
359
+ return Number(time) * 1000;
360
+ }
361
+ }
362
+ _createMenuItemNode(item, index, currentTimelineDuration, close) {
363
+ const label = item.label;
364
+ const checked = currentTimelineDuration === item.timelineDuration;
365
+ const icon = checked ? React.createElement("span", { className: "icon" },
366
+ React.createElement(core_react_1.Icon, { iconSpec: React.createElement(itwinui_icons_react_1.SvgCheckmark, null) }),
367
+ " ") : React.createElement("span", null);
368
+ return (React.createElement(itwinui_react_1.MenuItem, { key: index, icon: icon, onClick: () => { this._onSetTotalDuration(item.timelineDuration); close(); } }, label));
369
+ }
370
+ render() {
371
+ const { startDate, endDate, showDuration, timeZoneOffset, dateFormatOptions, timeFormatOptions } = this.props;
372
+ const { currentDuration, totalDuration, minimized } = this.state;
373
+ const currentDate = this._currentDate();
374
+ const durationString = this._displayTime(currentDuration);
375
+ const totalDurationString = this._displayTime(totalDuration);
376
+ const hasDates = !!startDate && !!endDate;
377
+ return (React.createElement("div", { "data-testid": "timeline-component", className: (0, classnames_1.default)("timeline-component", !!minimized && "minimized", hasDates && "has-dates") },
378
+ React.createElement("div", { className: "header" },
379
+ React.createElement(PlayerButton_1.PlayButton, { className: "play-button", isPlaying: this.state.isPlaying, onPlay: this._onPlay, onPause: this._onPause, "data-testid": "timeline-play" }),
380
+ React.createElement(PlayerButton_1.PlayerButton, { className: "play-backward", icon: React.createElement(itwinui_icons_react_1.SvgCaretLeft, null), onClick: this._onBackward, title: UiIModelComponents_1.UiIModelComponents.translate("timeline.backward") }),
381
+ React.createElement(PlayerButton_1.PlayerButton, { className: "play-button-step", icon: React.createElement(itwinui_icons_react_1.SvgPlayCircular, null), isPlaying: this.state.isPlaying, onPlay: this._onPlay, onPause: this._onPause, title: UiIModelComponents_1.UiIModelComponents.translate("timeline.step") }),
382
+ React.createElement(PlayerButton_1.PlayerButton, { className: "play-forward", icon: React.createElement(itwinui_icons_react_1.SvgCaretRight, null), onClick: this._onForward, title: UiIModelComponents_1.UiIModelComponents.translate("timeline.backward") }),
383
+ React.createElement("span", { className: "current-date" }, (0, components_react_1.toDateString)(currentDate, timeZoneOffset, dateFormatOptions))),
384
+ React.createElement("div", { className: "scrubber" },
385
+ React.createElement(PlayerButton_1.PlayButton, { className: "play-button", isPlaying: this.state.isPlaying, onPlay: this._onPlay, onPause: this._onPause }),
386
+ React.createElement("div", { className: "start-time-container" },
387
+ hasDates && React.createElement("span", { "data-testid": "test-start-date", className: "start-date" }, (0, components_react_1.toDateString)(startDate, timeZoneOffset, dateFormatOptions)),
388
+ hasDates && !showDuration && React.createElement("span", { "data-testid": "test-start-time", className: "start-time" }, (0, components_react_1.toTimeString)(startDate, timeZoneOffset, timeFormatOptions)),
389
+ showDuration && React.createElement("span", { className: "duration-start-time" }, durationString)),
390
+ React.createElement(Scrubber_1.Scrubber, { className: "slider", currentDuration: this.state.currentDuration, totalDuration: totalDuration, startDate: startDate, endDate: endDate, isPlaying: this.state.isPlaying, inMiniMode: !!minimized, showTime: !showDuration, onChange: this._onTimelineChange, onUpdate: this._onTimelineChange, timeZoneOffset: this.props.timeZoneOffset, markDate: this.props.markDate }),
391
+ React.createElement("div", { className: "end-time-container" },
392
+ hasDates && React.createElement("span", { className: "end-date" }, (0, components_react_1.toDateString)(endDate, timeZoneOffset)),
393
+ hasDates && !showDuration && React.createElement("span", { className: "end-time" }, (0, components_react_1.toTimeString)(endDate, timeZoneOffset, timeFormatOptions)),
394
+ showDuration && React.createElement(InlineEdit_1.InlineEdit, { className: "duration-end-time", defaultValue: totalDurationString, onChange: this._onTotalDurationChange })),
395
+ minimized && this._renderSettings())));
396
+ }
397
+ }
398
+ exports.TimelineComponent = TimelineComponent;
366
399
  //# sourceMappingURL=TimelineComponent.js.map