@itwin/imodel-components-react 4.0.0-dev.10 → 4.0.0-dev.11

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