@itwin/imodel-components-react 3.4.0-dev.42 → 3.4.0-dev.44

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/lib/cjs/imodel-components-react/UiIModelComponents.d.ts +28 -28
  2. package/lib/cjs/imodel-components-react/UiIModelComponents.js +79 -79
  3. package/lib/cjs/imodel-components-react/UiIModelComponents.js.map +1 -1
  4. package/lib/cjs/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  5. package/lib/cjs/imodel-components-react/color/AlphaSlider.js +186 -186
  6. package/lib/cjs/imodel-components-react/color/AlphaSlider.js.map +1 -1
  7. package/lib/cjs/imodel-components-react/color/AlphaSlider.scss +63 -63
  8. package/lib/cjs/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  9. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js +107 -107
  10. package/lib/cjs/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  11. package/lib/cjs/imodel-components-react/color/ColorPickerButton.scss +91 -91
  12. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  13. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js +74 -74
  14. package/lib/cjs/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  15. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  16. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js +145 -145
  17. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  18. package/lib/cjs/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  19. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  20. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js +137 -137
  21. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  22. package/lib/cjs/imodel-components-react/color/ColorPickerPopup.scss +64 -64
  23. package/lib/cjs/imodel-components-react/color/HueSlider.d.ts +22 -22
  24. package/lib/cjs/imodel-components-react/color/HueSlider.js +199 -199
  25. package/lib/cjs/imodel-components-react/color/HueSlider.js.map +1 -1
  26. package/lib/cjs/imodel-components-react/color/HueSlider.scss +61 -61
  27. package/lib/cjs/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  28. package/lib/cjs/imodel-components-react/color/SaturationPicker.js +213 -213
  29. package/lib/cjs/imodel-components-react/color/SaturationPicker.js.map +1 -1
  30. package/lib/cjs/imodel-components-react/color/SaturationPicker.scss +35 -35
  31. package/lib/cjs/imodel-components-react/color/Swatch.d.ts +22 -22
  32. package/lib/cjs/imodel-components-react/color/Swatch.js +60 -60
  33. package/lib/cjs/imodel-components-react/color/Swatch.js.map +1 -1
  34. package/lib/cjs/imodel-components-react/color/Swatch.scss +23 -23
  35. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  36. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js +23 -23
  37. package/lib/cjs/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  38. package/lib/cjs/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  39. package/lib/cjs/imodel-components-react/editors/ColorEditor.js +151 -151
  40. package/lib/cjs/imodel-components-react/editors/ColorEditor.js.map +1 -1
  41. package/lib/cjs/imodel-components-react/editors/ColorEditor.scss +18 -18
  42. package/lib/cjs/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  43. package/lib/cjs/imodel-components-react/editors/WeightEditor.js +160 -160
  44. package/lib/cjs/imodel-components-react/editors/WeightEditor.js.map +1 -1
  45. package/lib/cjs/imodel-components-react/editors/WeightEditor.scss +16 -16
  46. package/lib/cjs/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  47. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js +96 -96
  48. package/lib/cjs/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  49. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  50. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js +265 -265
  51. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  52. package/lib/cjs/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
  53. package/lib/cjs/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  54. package/lib/cjs/imodel-components-react/lineweight/Swatch.js +85 -85
  55. package/lib/cjs/imodel-components-react/lineweight/Swatch.js.map +1 -1
  56. package/lib/cjs/imodel-components-react/lineweight/Swatch.scss +48 -48
  57. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  58. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js +159 -159
  59. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  60. package/lib/cjs/imodel-components-react/lineweight/WeightPickerButton.scss +52 -52
  61. package/lib/cjs/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  62. package/lib/cjs/imodel-components-react/navigationaids/Cube.js +127 -127
  63. package/lib/cjs/imodel-components-react/navigationaids/Cube.js.map +1 -1
  64. package/lib/cjs/imodel-components-react/navigationaids/Cube.scss +19 -19
  65. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
  66. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js +634 -634
  67. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  68. package/lib/cjs/imodel-components-react/navigationaids/CubeNavigationAid.scss +180 -180
  69. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  70. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js +647 -647
  71. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  72. package/lib/cjs/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -133
  73. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  74. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js +99 -99
  75. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  76. package/lib/cjs/imodel-components-react/quantityformat/FormatPanel.scss +64 -64
  77. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  78. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js +53 -53
  79. package/lib/cjs/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  80. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  81. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js +83 -83
  82. package/lib/cjs/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  83. package/lib/cjs/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  84. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js +86 -86
  85. package/lib/cjs/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  86. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  87. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js +109 -109
  88. package/lib/cjs/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  89. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  90. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js +133 -133
  91. package/lib/cjs/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  92. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  93. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js +184 -184
  94. package/lib/cjs/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  95. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  96. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js +154 -154
  97. package/lib/cjs/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  98. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  99. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js +59 -59
  100. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  101. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  102. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js +47 -47
  103. package/lib/cjs/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  104. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  105. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js +54 -54
  106. package/lib/cjs/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  107. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  108. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js +48 -48
  109. package/lib/cjs/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  110. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  111. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js +50 -50
  112. package/lib/cjs/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  113. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  114. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +58 -58
  115. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  116. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  117. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js +47 -47
  118. package/lib/cjs/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  119. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  120. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js +56 -56
  121. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  122. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  123. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +95 -95
  124. package/lib/cjs/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  125. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  126. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js +119 -119
  127. package/lib/cjs/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  128. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  129. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js +143 -143
  130. package/lib/cjs/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  131. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  132. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js +69 -69
  133. package/lib/cjs/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  134. package/lib/cjs/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  135. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js +81 -81
  136. package/lib/cjs/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  137. package/lib/cjs/imodel-components-react/timeline/InlineEdit.scss +26 -26
  138. package/lib/cjs/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  139. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js +91 -91
  140. package/lib/cjs/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  141. package/lib/cjs/imodel-components-react/timeline/PlayerButton.scss +25 -25
  142. package/lib/cjs/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  143. package/lib/cjs/imodel-components-react/timeline/Scrubber.js +191 -191
  144. package/lib/cjs/imodel-components-react/timeline/Scrubber.js.map +1 -1
  145. package/lib/cjs/imodel-components-react/timeline/Scrubber.scss +106 -106
  146. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  147. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js +424 -424
  148. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  149. package/lib/cjs/imodel-components-react/timeline/SolarTimeline.scss +357 -357
  150. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  151. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js +54 -54
  152. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  153. package/lib/cjs/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  154. package/lib/cjs/imodel-components-react/timeline/Timeline.scss +164 -164
  155. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
  156. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js +358 -358
  157. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  158. package/lib/cjs/imodel-components-react/timeline/TimelineComponent.scss +163 -163
  159. package/lib/cjs/imodel-components-react/timeline/interfaces.d.ts +174 -174
  160. package/lib/cjs/imodel-components-react/timeline/interfaces.js +45 -45
  161. package/lib/cjs/imodel-components-react/timeline/interfaces.js.map +1 -1
  162. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  163. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js +274 -274
  164. package/lib/cjs/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  165. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  166. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js +105 -105
  167. package/lib/cjs/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  168. package/lib/cjs/imodel-components-react.d.ts +82 -82
  169. package/lib/cjs/imodel-components-react.js +101 -101
  170. package/lib/cjs/imodel-components-react.js.map +1 -1
  171. package/lib/esm/imodel-components-react/UiIModelComponents.d.ts +28 -28
  172. package/lib/esm/imodel-components-react/UiIModelComponents.js +75 -75
  173. package/lib/esm/imodel-components-react/UiIModelComponents.js.map +1 -1
  174. package/lib/esm/imodel-components-react/color/AlphaSlider.d.ts +36 -36
  175. package/lib/esm/imodel-components-react/color/AlphaSlider.js +160 -160
  176. package/lib/esm/imodel-components-react/color/AlphaSlider.js.map +1 -1
  177. package/lib/esm/imodel-components-react/color/AlphaSlider.scss +63 -63
  178. package/lib/esm/imodel-components-react/color/ColorPickerButton.d.ts +37 -37
  179. package/lib/esm/imodel-components-react/color/ColorPickerButton.js +82 -82
  180. package/lib/esm/imodel-components-react/color/ColorPickerButton.js.map +1 -1
  181. package/lib/esm/imodel-components-react/color/ColorPickerButton.scss +91 -91
  182. package/lib/esm/imodel-components-react/color/ColorPickerDialog.d.ts +23 -23
  183. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js +51 -51
  184. package/lib/esm/imodel-components-react/color/ColorPickerDialog.js.map +1 -1
  185. package/lib/esm/imodel-components-react/color/ColorPickerPanel.d.ts +21 -21
  186. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js +122 -122
  187. package/lib/esm/imodel-components-react/color/ColorPickerPanel.js.map +1 -1
  188. package/lib/esm/imodel-components-react/color/ColorPickerPanel.scss +93 -93
  189. package/lib/esm/imodel-components-react/color/ColorPickerPopup.d.ts +44 -44
  190. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js +112 -112
  191. package/lib/esm/imodel-components-react/color/ColorPickerPopup.js.map +1 -1
  192. package/lib/esm/imodel-components-react/color/ColorPickerPopup.scss +64 -64
  193. package/lib/esm/imodel-components-react/color/HueSlider.d.ts +22 -22
  194. package/lib/esm/imodel-components-react/color/HueSlider.js +173 -173
  195. package/lib/esm/imodel-components-react/color/HueSlider.js.map +1 -1
  196. package/lib/esm/imodel-components-react/color/HueSlider.scss +61 -61
  197. package/lib/esm/imodel-components-react/color/SaturationPicker.d.ts +20 -20
  198. package/lib/esm/imodel-components-react/color/SaturationPicker.js +187 -187
  199. package/lib/esm/imodel-components-react/color/SaturationPicker.js.map +1 -1
  200. package/lib/esm/imodel-components-react/color/SaturationPicker.scss +35 -35
  201. package/lib/esm/imodel-components-react/color/Swatch.d.ts +22 -22
  202. package/lib/esm/imodel-components-react/color/Swatch.js +34 -34
  203. package/lib/esm/imodel-components-react/color/Swatch.js.map +1 -1
  204. package/lib/esm/imodel-components-react/color/Swatch.scss +23 -23
  205. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.d.ts +6 -6
  206. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js +19 -19
  207. package/lib/esm/imodel-components-react/color/getCSSColorFromDef.js.map +1 -1
  208. package/lib/esm/imodel-components-react/editors/ColorEditor.d.ts +44 -44
  209. package/lib/esm/imodel-components-react/editors/ColorEditor.js +124 -124
  210. package/lib/esm/imodel-components-react/editors/ColorEditor.js.map +1 -1
  211. package/lib/esm/imodel-components-react/editors/ColorEditor.scss +18 -18
  212. package/lib/esm/imodel-components-react/editors/WeightEditor.d.ts +47 -47
  213. package/lib/esm/imodel-components-react/editors/WeightEditor.js +133 -133
  214. package/lib/esm/imodel-components-react/editors/WeightEditor.js.map +1 -1
  215. package/lib/esm/imodel-components-react/editors/WeightEditor.scss +16 -16
  216. package/lib/esm/imodel-components-react/inputs/QuantityInput.d.ts +25 -25
  217. package/lib/esm/imodel-components-react/inputs/QuantityInput.js +70 -70
  218. package/lib/esm/imodel-components-react/inputs/QuantityInput.js.map +1 -1
  219. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.d.ts +44 -44
  220. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js +240 -240
  221. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.js.map +1 -1
  222. package/lib/esm/imodel-components-react/inputs/QuantityNumberInput.scss +107 -107
  223. package/lib/esm/imodel-components-react/lineweight/Swatch.d.ts +33 -33
  224. package/lib/esm/imodel-components-react/lineweight/Swatch.js +59 -59
  225. package/lib/esm/imodel-components-react/lineweight/Swatch.js.map +1 -1
  226. package/lib/esm/imodel-components-react/lineweight/Swatch.scss +48 -48
  227. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.d.ts +60 -60
  228. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js +133 -133
  229. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.js.map +1 -1
  230. package/lib/esm/imodel-components-react/lineweight/WeightPickerButton.scss +52 -52
  231. package/lib/esm/imodel-components-react/navigationaids/Cube.d.ts +45 -45
  232. package/lib/esm/imodel-components-react/navigationaids/Cube.js +100 -100
  233. package/lib/esm/imodel-components-react/navigationaids/Cube.js.map +1 -1
  234. package/lib/esm/imodel-components-react/navigationaids/Cube.scss +19 -19
  235. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.d.ts +174 -174
  236. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js +606 -606
  237. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.js.map +1 -1
  238. package/lib/esm/imodel-components-react/navigationaids/CubeNavigationAid.scss +180 -180
  239. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.d.ts +145 -145
  240. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js +620 -620
  241. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.js.map +1 -1
  242. package/lib/esm/imodel-components-react/navigationaids/DrawingNavigationAid.scss +133 -133
  243. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.d.ts +26 -26
  244. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js +76 -76
  245. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.js.map +1 -1
  246. package/lib/esm/imodel-components-react/quantityformat/FormatPanel.scss +64 -64
  247. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.d.ts +17 -17
  248. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js +30 -30
  249. package/lib/esm/imodel-components-react/quantityformat/FormatPrecision.js.map +1 -1
  250. package/lib/esm/imodel-components-react/quantityformat/FormatSample.d.ts +18 -18
  251. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js +60 -60
  252. package/lib/esm/imodel-components-react/quantityformat/FormatSample.js.map +1 -1
  253. package/lib/esm/imodel-components-react/quantityformat/FormatType.d.ts +17 -17
  254. package/lib/esm/imodel-components-react/quantityformat/FormatType.js +63 -63
  255. package/lib/esm/imodel-components-react/quantityformat/FormatType.js.map +1 -1
  256. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.d.ts +17 -17
  257. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js +83 -83
  258. package/lib/esm/imodel-components-react/quantityformat/FormatUnitLabel.js.map +1 -1
  259. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.d.ts +19 -19
  260. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js +110 -110
  261. package/lib/esm/imodel-components-react/quantityformat/FormatUnits.js.map +1 -1
  262. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.d.ts +21 -21
  263. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js +158 -158
  264. package/lib/esm/imodel-components-react/quantityformat/MiscFormatOptions.js.map +1 -1
  265. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.d.ts +22 -22
  266. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js +131 -131
  267. package/lib/esm/imodel-components-react/quantityformat/QuantityFormatPanel.js.map +1 -1
  268. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.d.ts +17 -17
  269. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js +36 -36
  270. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalPrecision.js.map +1 -1
  271. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.d.ts +17 -17
  272. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js +24 -24
  273. package/lib/esm/imodel-components-react/quantityformat/misc/DecimalSeparator.js.map +1 -1
  274. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.d.ts +16 -16
  275. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js +31 -31
  276. package/lib/esm/imodel-components-react/quantityformat/misc/FractionPrecision.js.map +1 -1
  277. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.d.ts +18 -18
  278. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js +25 -25
  279. package/lib/esm/imodel-components-react/quantityformat/misc/ScientificType.js.map +1 -1
  280. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.d.ts +17 -17
  281. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js +27 -27
  282. package/lib/esm/imodel-components-react/quantityformat/misc/SignOption.js.map +1 -1
  283. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.d.ts +17 -17
  284. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js +35 -35
  285. package/lib/esm/imodel-components-react/quantityformat/misc/StationSeparatorSelector.js.map +1 -1
  286. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.d.ts +17 -17
  287. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js +24 -24
  288. package/lib/esm/imodel-components-react/quantityformat/misc/StationSizeSelector.js.map +1 -1
  289. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.d.ts +17 -17
  290. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js +33 -33
  291. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSelector.js.map +1 -1
  292. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.d.ts +17 -17
  293. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js +69 -69
  294. package/lib/esm/imodel-components-react/quantityformat/misc/ThousandsSeparator.js.map +1 -1
  295. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.d.ts +23 -23
  296. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js +96 -96
  297. package/lib/esm/imodel-components-react/quantityformat/misc/UnitDescr.js.map +1 -1
  298. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.d.ts +52 -52
  299. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js +139 -139
  300. package/lib/esm/imodel-components-react/timeline/BaseSolarDataProvider.js.map +1 -1
  301. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.d.ts +31 -31
  302. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js +65 -65
  303. package/lib/esm/imodel-components-react/timeline/BaseTimelineDataProvider.js.map +1 -1
  304. package/lib/esm/imodel-components-react/timeline/InlineEdit.d.ts +27 -27
  305. package/lib/esm/imodel-components-react/timeline/InlineEdit.js +55 -55
  306. package/lib/esm/imodel-components-react/timeline/InlineEdit.js.map +1 -1
  307. package/lib/esm/imodel-components-react/timeline/InlineEdit.scss +26 -26
  308. package/lib/esm/imodel-components-react/timeline/PlayerButton.d.ts +33 -33
  309. package/lib/esm/imodel-components-react/timeline/PlayerButton.js +64 -64
  310. package/lib/esm/imodel-components-react/timeline/PlayerButton.js.map +1 -1
  311. package/lib/esm/imodel-components-react/timeline/PlayerButton.scss +25 -25
  312. package/lib/esm/imodel-components-react/timeline/Scrubber.d.ts +54 -54
  313. package/lib/esm/imodel-components-react/timeline/Scrubber.js +164 -164
  314. package/lib/esm/imodel-components-react/timeline/Scrubber.js.map +1 -1
  315. package/lib/esm/imodel-components-react/timeline/Scrubber.scss +106 -106
  316. package/lib/esm/imodel-components-react/timeline/SolarTimeline.d.ts +77 -77
  317. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js +398 -398
  318. package/lib/esm/imodel-components-react/timeline/SolarTimeline.js.map +1 -1
  319. package/lib/esm/imodel-components-react/timeline/SolarTimeline.scss +357 -357
  320. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.d.ts +15 -15
  321. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js +28 -28
  322. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.js.map +1 -1
  323. package/lib/esm/imodel-components-react/timeline/SpeedTimeline.scss +39 -39
  324. package/lib/esm/imodel-components-react/timeline/Timeline.scss +164 -164
  325. package/lib/esm/imodel-components-react/timeline/TimelineComponent.d.ts +133 -133
  326. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js +332 -332
  327. package/lib/esm/imodel-components-react/timeline/TimelineComponent.js.map +1 -1
  328. package/lib/esm/imodel-components-react/timeline/TimelineComponent.scss +163 -163
  329. package/lib/esm/imodel-components-react/timeline/interfaces.d.ts +174 -174
  330. package/lib/esm/imodel-components-react/timeline/interfaces.js +42 -42
  331. package/lib/esm/imodel-components-react/timeline/interfaces.js.map +1 -1
  332. package/lib/esm/imodel-components-react/viewport/ViewportComponent.d.ts +42 -42
  333. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js +251 -251
  334. package/lib/esm/imodel-components-react/viewport/ViewportComponent.js.map +1 -1
  335. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.d.ts +106 -106
  336. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js +95 -95
  337. package/lib/esm/imodel-components-react/viewport/ViewportComponentEvents.js.map +1 -1
  338. package/lib/esm/imodel-components-react.d.ts +82 -82
  339. package/lib/esm/imodel-components-react.js +87 -87
  340. package/lib/esm/imodel-components-react.js.map +1 -1
  341. package/lib/public/locales/en/UiIModelComponents.json +139 -139
  342. package/package.json +20 -20
@@ -1,359 +1,359 @@
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
+ // 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;
359
359
  //# sourceMappingURL=TimelineComponent.js.map