@24i/bigscreen-sdk 1.0.32 → 1.0.33-alpha.2548

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 (1055) hide show
  1. package/README.md +47 -47
  2. package/__mocks__/@24i/bigscreen-sdk/animations.ts +2 -2
  3. package/package.json +1 -1
  4. package/packages/adobe-heartbeat/README.md +46 -46
  5. package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +244 -244
  6. package/packages/adobe-heartbeat/src/__external__/Adobe/Adobe.d.ts +24 -24
  7. package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.d.ts +126 -126
  8. package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.js +76 -76
  9. package/packages/adobe-heartbeat/src/index.ts +5 -5
  10. package/packages/adobe-heartbeat/src/types.ts +67 -67
  11. package/packages/analytics/README.md +7 -7
  12. package/packages/analytics/src/A.ts +1 -1
  13. package/packages/analytics/src/Analytics.ts +1 -1
  14. package/packages/analytics/src/analyticsOnScroll.ts +1 -1
  15. package/packages/analytics/src/clients/ConsoleAnalytics/ConsoleAnalytics.ts +1 -1
  16. package/packages/analytics/src/clients/ConsoleAnalytics/index.ts +1 -1
  17. package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +200 -200
  18. package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +118 -118
  19. package/packages/analytics/src/clients/GoogleAnalytics/generateSessionId.ts +8 -8
  20. package/packages/analytics/src/clients/GoogleAnalytics/getUrl.ts +17 -17
  21. package/packages/analytics/src/clients/GoogleAnalytics/index.ts +2 -2
  22. package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +77 -77
  23. package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +50 -50
  24. package/packages/analytics/src/clients/GoogleAnalytics/prepareBody.ts +14 -14
  25. package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +116 -116
  26. package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +99 -99
  27. package/packages/analytics/src/clients/TwentyFourIQ/generateSessionId.ts +8 -8
  28. package/packages/analytics/src/clients/TwentyFourIQ/helper.ts +34 -34
  29. package/packages/analytics/src/clients/TwentyFourIQ/index.ts +2 -2
  30. package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +31 -31
  31. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +13 -13
  32. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +16 -16
  33. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +21 -21
  34. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +15 -15
  35. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +24 -24
  36. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +18 -18
  37. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +15 -15
  38. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +17 -17
  39. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +21 -21
  40. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +24 -24
  41. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +24 -24
  42. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +34 -34
  43. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +32 -32
  44. package/packages/analytics/src/clients/TwentyFourIQ/types.ts +115 -115
  45. package/packages/analytics/src/constants.ts +1 -1
  46. package/packages/analytics/src/index.ts +3 -3
  47. package/packages/analytics/src/interface.ts +1 -1
  48. package/packages/animations/README.md +85 -85
  49. package/packages/animations/src/AnimationUtils.ts +238 -238
  50. package/packages/animations/src/JSAnimations.ts +144 -144
  51. package/packages/animations/src/__mocks__/JSAnimations.ts +30 -30
  52. package/packages/animations/src/index.ts +3 -3
  53. package/packages/announcement-banner/README.md +49 -49
  54. package/packages/announcement-banner/src/AnnouncementBanner.scss +8 -8
  55. package/packages/announcement-banner/src/AnnouncementBanner.tsx +136 -136
  56. package/packages/announcement-banner/src/index.ts +1 -1
  57. package/packages/async-image/README.md +47 -47
  58. package/packages/async-image/src/AsyncImage.tsx +101 -101
  59. package/packages/async-image/src/index.ts +2 -2
  60. package/packages/conviva/README.md +47 -47
  61. package/packages/conviva/src/ConvivaSDK.ts +38 -38
  62. package/packages/conviva/src/__mocks__/ConvivaMock.ts +36 -36
  63. package/packages/conviva/src/index.ts +1 -1
  64. package/packages/conviva/src/theoPlugin/ConvivaConviguration.ts +19 -19
  65. package/packages/conviva/src/theoPlugin/__external__/Conviva_4.0.15.js +698 -698
  66. package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.d.ts +7 -7
  67. package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.js +635 -635
  68. package/packages/conviva/src/theoPlugin/convivaTheoPluginWrapper.ts +61 -61
  69. package/packages/conviva/src/theoPlugin/index.ts +2 -2
  70. package/packages/developer-tools/DeveloperConsole/README.md +114 -114
  71. package/packages/developer-tools/DeveloperConsole/index.ts +3 -3
  72. package/packages/developer-tools/DeveloperConsole/unstyled.ts +1 -1
  73. package/packages/developer-tools/DeveloperToolsService/README.md +54 -54
  74. package/packages/developer-tools/DeveloperToolsService/index.ts +3 -3
  75. package/packages/developer-tools/DeveloperToolsService/unstyled.ts +1 -1
  76. package/packages/developer-tools/EnvironmentSelection/README.md +77 -77
  77. package/packages/developer-tools/EnvironmentSelection/index.ts +3 -3
  78. package/packages/developer-tools/EnvironmentSelection/unstyled.ts +1 -1
  79. package/packages/developer-tools/PlayerDebugWindow/README.md +65 -65
  80. package/packages/developer-tools/PlayerDebugWindow/index.ts +3 -3
  81. package/packages/developer-tools/PlayerDebugWindow/unstyled.ts +1 -1
  82. package/packages/developer-tools/README.md +24 -24
  83. package/packages/developer-tools/TechnicalInfo/README.md +90 -90
  84. package/packages/developer-tools/TechnicalInfo/index.ts +9 -9
  85. package/packages/developer-tools/TechnicalInfo/unstyled.ts +6 -6
  86. package/packages/developer-tools/src/DeveloperConsole/ControlButton.tsx +16 -16
  87. package/packages/developer-tools/src/DeveloperConsole/DeveloperConsole.tsx +389 -389
  88. package/packages/developer-tools/src/DeveloperConsole/Panel.tsx +108 -108
  89. package/packages/developer-tools/src/DeveloperConsole/PanelMessage.tsx +33 -33
  90. package/packages/developer-tools/src/DeveloperConsole/helpers/Queue.ts +38 -38
  91. package/packages/developer-tools/src/DeveloperConsole/helpers/index.ts +2 -2
  92. package/packages/developer-tools/src/DeveloperConsole/helpers/instrumentHandler.ts +165 -165
  93. package/packages/developer-tools/src/DeveloperConsole/index.ts +2 -2
  94. package/packages/developer-tools/src/DeveloperConsole/initDeveloperConsole.tsx +8 -8
  95. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.scss +91 -91
  96. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.1080.scss +2 -2
  97. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.scss +2 -2
  98. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.1080.scss +16 -16
  99. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.scss +16 -16
  100. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.scss +87 -87
  101. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.1080.scss +2 -2
  102. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.scss +2 -2
  103. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.1080.scss +9 -9
  104. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.scss +9 -9
  105. package/packages/developer-tools/src/DeveloperConsole/styles.ts +2 -2
  106. package/packages/developer-tools/src/DeveloperConsole/types.ts +49 -49
  107. package/packages/developer-tools/src/DeveloperConsole/utils/formatTime.ts +13 -13
  108. package/packages/developer-tools/src/DeveloperConsole/utils/index.ts +3 -3
  109. package/packages/developer-tools/src/DeveloperConsole/utils/stringify.ts +10 -10
  110. package/packages/developer-tools/src/DeveloperConsole/utils/styles.ts +24 -24
  111. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolItem.tsx +21 -21
  112. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +125 -125
  113. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsService.tsx +122 -122
  114. package/packages/developer-tools/src/DeveloperToolsService/index.ts +1 -1
  115. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.scss +64 -64
  116. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.1080.scss +2 -2
  117. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.1080.scss +3 -3
  118. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.scss +4 -4
  119. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.scss +2 -2
  120. package/packages/developer-tools/src/DeveloperToolsService/styles/_animated.scss +5 -5
  121. package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.1080.scss +16 -16
  122. package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.scss +16 -16
  123. package/packages/developer-tools/src/DeveloperToolsService/styles.ts +1 -1
  124. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentList.tsx +90 -90
  125. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentListItem.tsx +106 -106
  126. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentSelection.tsx +102 -102
  127. package/packages/developer-tools/src/EnvironmentSelection/assets/checkmark.svg +18 -18
  128. package/packages/developer-tools/src/EnvironmentSelection/config.ts +43 -43
  129. package/packages/developer-tools/src/EnvironmentSelection/constants.ts +1 -1
  130. package/packages/developer-tools/src/EnvironmentSelection/index.ts +2 -2
  131. package/packages/developer-tools/src/EnvironmentSelection/sizes.1080.ts +5 -5
  132. package/packages/developer-tools/src/EnvironmentSelection/sizes.ts +5 -5
  133. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.scss +141 -141
  134. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.1080.scss +2 -2
  135. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.1080.scss +3 -3
  136. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.scss +3 -3
  137. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.scss +2 -2
  138. package/packages/developer-tools/src/EnvironmentSelection/styles/_animated.scss +9 -9
  139. package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.1080.scss +26 -26
  140. package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.scss +26 -26
  141. package/packages/developer-tools/src/EnvironmentSelection/styles.ts +1 -1
  142. package/packages/developer-tools/src/EnvironmentSelection/types.ts +10 -10
  143. package/packages/developer-tools/src/EnvironmentSelection/utils/format.ts +4 -4
  144. package/packages/developer-tools/src/IDeveloperTool.ts +14 -14
  145. package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +115 -115
  146. package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +128 -128
  147. package/packages/developer-tools/src/PlayerDebugWindow/index.ts +1 -1
  148. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.scss +29 -29
  149. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.1080.scss +2 -2
  150. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.scss +2 -2
  151. package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.1080.scss +11 -11
  152. package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.scss +11 -11
  153. package/packages/developer-tools/src/PlayerDebugWindow/styles.ts +1 -1
  154. package/packages/developer-tools/src/TechnicalInfo/ITechnicalInfoProvider.ts +5 -5
  155. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfo.tsx +125 -125
  156. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +77 -77
  157. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +349 -349
  158. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +55 -55
  159. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Player.ts +7 -7
  160. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Storage.ts +9 -9
  161. package/packages/developer-tools/src/TechnicalInfo/icons/arrow-down.svg +18 -18
  162. package/packages/developer-tools/src/TechnicalInfo/icons/arrow-up.svg +18 -18
  163. package/packages/developer-tools/src/TechnicalInfo/index.ts +5 -5
  164. package/packages/developer-tools/src/TechnicalInfo/sizes.1080.ts +1 -1
  165. package/packages/developer-tools/src/TechnicalInfo/sizes.ts +1 -1
  166. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.scss +187 -187
  167. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.1080.scss +2 -2
  168. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.1080.scss +3 -3
  169. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.scss +3 -3
  170. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.scss +2 -2
  171. package/packages/developer-tools/src/TechnicalInfo/styles/_animated.scss +16 -16
  172. package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.1080.scss +50 -50
  173. package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.scss +50 -50
  174. package/packages/developer-tools/src/TechnicalInfo/styles.ts +1 -1
  175. package/packages/developer-tools/src/TechnicalInfo/translations.ts +79 -79
  176. package/packages/developer-tools/src/TechnicalInfo/utils/eme01bSupport.ts +58 -58
  177. package/packages/developer-tools/src/TechnicalInfo/utils/emeSupport.ts +84 -84
  178. package/packages/developer-tools/src/TechnicalInfo/utils/formatTimezone.ts +15 -15
  179. package/packages/developer-tools/src/TechnicalInfo/utils/mseSupport.ts +14 -14
  180. package/packages/developer-tools/src/utils/reload.ts +6 -6
  181. package/packages/device/README.md +219 -219
  182. package/packages/device/keymap.ts +1 -1
  183. package/packages/device/resolver/index.ts +2 -2
  184. package/packages/device/resolver/keymap.ts +1 -1
  185. package/packages/device/src/DeviceEventMap.ts +1 -1
  186. package/packages/device/src/device.ts +6 -6
  187. package/packages/device/src/driver/index.android.tv.ts +1 -1
  188. package/packages/device/src/driver/index.entone.ts +1 -1
  189. package/packages/device/src/driver/index.firetv.ts +1 -1
  190. package/packages/device/src/driver/index.hbbtv.tv.ts +1 -1
  191. package/packages/device/src/driver/index.kreatv.ts +1 -1
  192. package/packages/device/src/driver/index.saphi.tv.ts +1 -1
  193. package/packages/device/src/driver/index.smartcast.tv.ts +1 -1
  194. package/packages/device/src/driver/index.tizen.tv.ts +1 -1
  195. package/packages/device/src/driver/index.ts +1 -1
  196. package/packages/device/src/driver/index.vidaa.tv.ts +1 -1
  197. package/packages/device/src/driver/index.webos.tv.ts +1 -1
  198. package/packages/device/src/getKeyDigit.ts +35 -35
  199. package/packages/device/src/getKeyMap.ts +4 -4
  200. package/packages/device/src/index.ts +8 -8
  201. package/packages/device/src/isClickOrEnter.ts +3 -3
  202. package/packages/device/src/resolver/index.ts +2 -2
  203. package/packages/device/src/resolver/resolver.ts +84 -84
  204. package/packages/digital-clock/README.md +26 -26
  205. package/packages/digital-clock/src/DigitalClock.tsx +78 -78
  206. package/packages/digital-clock/src/index.ts +1 -1
  207. package/packages/driver-androidtv/src/DeviceAndroidTV.ts +224 -224
  208. package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +36 -36
  209. package/packages/driver-androidtv/src/formatUserAgent.ts +11 -11
  210. package/packages/driver-androidtv/src/index.ts +1 -1
  211. package/packages/driver-androidtv/src/keymap.ts +27 -27
  212. package/packages/driver-androidtv/src/types.ts +113 -113
  213. package/packages/driver-base/DeviceBase.md +139 -139
  214. package/packages/driver-base/README.md +44 -44
  215. package/packages/driver-base/src/ConnectionType.ts +1 -1
  216. package/packages/driver-base/src/DeviceBase.ts +224 -224
  217. package/packages/driver-base/src/KeyMap/Key.ts +48 -48
  218. package/packages/driver-base/src/KeyMap/KeyMap.ts +390 -390
  219. package/packages/driver-base/src/KeyMap/generateKeyCodeKeyMap.ts +11 -11
  220. package/packages/driver-base/src/KeyMap/index.ts +5 -5
  221. package/packages/driver-base/src/KeyMap/interface.ts +8 -8
  222. package/packages/driver-base/src/KeyMap/overrideValues.ts +17 -17
  223. package/packages/driver-base/src/KeyMap/switchByKey.ts +18 -18
  224. package/packages/driver-base/src/ScreenSize.ts +1 -1
  225. package/packages/driver-base/src/VolumeRange.ts +5 -5
  226. package/packages/driver-base/src/__mocks__/DeviceBase.ts +100 -100
  227. package/packages/driver-base/src/__mocks__/keyMap.ts +42 -42
  228. package/packages/driver-base/src/bindPreventDefaultEvent.ts +5 -5
  229. package/packages/driver-base/src/errors.ts +32 -32
  230. package/packages/driver-base/src/index.ts +10 -10
  231. package/packages/driver-base/src/loadObject.ts +30 -30
  232. package/packages/driver-base/src/types/DeviceEvent.ts +11 -11
  233. package/packages/driver-base/src/types/ExitOptions.ts +1 -1
  234. package/packages/driver-base/src/types/KeycodeKeyMap.ts +86 -86
  235. package/packages/driver-base/src/types/ScreenSaverStatus.ts +3 -3
  236. package/packages/driver-base/src/utils.ts +10 -10
  237. package/packages/driver-browser/src/DeviceBrowser.ts +170 -170
  238. package/packages/driver-browser/src/getBrowser.ts +51 -51
  239. package/packages/driver-browser/src/getOsName.ts +30 -30
  240. package/packages/driver-browser/src/index.ts +1 -1
  241. package/packages/driver-browser/src/keymap.ts +22 -22
  242. package/packages/driver-browser/src/patchSuitestKeys.ts +27 -27
  243. package/packages/driver-entone/README.md +9 -9
  244. package/packages/driver-entone/src/DeviceEntone.ts +232 -232
  245. package/packages/driver-entone/src/IEntone.ts +460 -460
  246. package/packages/driver-entone/src/__mocks__/entone.ts +177 -177
  247. package/packages/driver-entone/src/constants.ts +73 -73
  248. package/packages/driver-entone/src/index.ts +1 -1
  249. package/packages/driver-entone/src/keymap.ts +57 -57
  250. package/packages/driver-firetv/src/DeviceFireTV.ts +18 -18
  251. package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +36 -36
  252. package/packages/driver-firetv/src/index.ts +1 -1
  253. package/packages/driver-hbbtv/src/DeviceHbbTV.ts +313 -313
  254. package/packages/driver-hbbtv/src/__mocks__/hbbtv.ts +17 -17
  255. package/packages/driver-hbbtv/src/constants.ts +28 -28
  256. package/packages/driver-hbbtv/src/deviceInfo.ts +23 -23
  257. package/packages/driver-hbbtv/src/getVersion.ts +16 -16
  258. package/packages/driver-hbbtv/src/index.ts +1 -1
  259. package/packages/driver-hbbtv/src/keymap.ts +45 -45
  260. package/packages/driver-hbbtv/src/types.ts +366 -366
  261. package/packages/driver-kreatv/src/DeviceKreaTV.ts +271 -271
  262. package/packages/driver-kreatv/src/IToi.ts +379 -379
  263. package/packages/driver-kreatv/src/__mocks__/toi2.ts +76 -76
  264. package/packages/driver-kreatv/src/__mocks__/toi3.ts +43 -43
  265. package/packages/driver-kreatv/src/index.ts +1 -1
  266. package/packages/driver-kreatv/src/keymap.ts +31 -31
  267. package/packages/driver-kreatv/src/toi2.ts +107 -107
  268. package/packages/driver-kreatv/src/toi3.ts +102 -102
  269. package/packages/driver-kreatv/src/types.ts +35 -35
  270. package/packages/driver-saphi/src/DeviceSaphi.ts +144 -144
  271. package/packages/driver-saphi/src/__mocks__/SmartTvA_API.ts +11 -11
  272. package/packages/driver-saphi/src/__mocks__/userAgent.ts +4 -4
  273. package/packages/driver-saphi/src/constants.ts +1 -1
  274. package/packages/driver-saphi/src/formatUserAgent.ts +19 -19
  275. package/packages/driver-saphi/src/index.ts +1 -1
  276. package/packages/driver-saphi/src/keymap.ts +64 -64
  277. package/packages/driver-saphi/src/types.ts +75 -75
  278. package/packages/driver-smartcast/src/DeviceSmartCast.ts +310 -310
  279. package/packages/driver-smartcast/src/__mocks__/api.ts +49 -49
  280. package/packages/driver-smartcast/src/index.ts +1 -1
  281. package/packages/driver-smartcast/src/keymap.ts +9 -9
  282. package/packages/driver-smartcast/src/types.ts +65 -65
  283. package/packages/driver-tizen/src/DeviceTizen.ts +298 -298
  284. package/packages/driver-tizen/src/ITizen.ts +212 -212
  285. package/packages/driver-tizen/src/IWebapis.ts +95 -95
  286. package/packages/driver-tizen/src/TizenKeys.ts +96 -96
  287. package/packages/driver-tizen/src/__mocks__/tizen.ts +35 -35
  288. package/packages/driver-tizen/src/constants.ts +197 -197
  289. package/packages/driver-tizen/src/index.ts +1 -1
  290. package/packages/driver-tizen/src/types.ts +14 -14
  291. package/packages/driver-vidaa/src/DeviceVidaa.ts +141 -141
  292. package/packages/driver-vidaa/src/__mocks__/vidaa.ts +21 -21
  293. package/packages/driver-vidaa/src/constants.ts +8 -8
  294. package/packages/driver-vidaa/src/formatUserAgent.ts +16 -16
  295. package/packages/driver-vidaa/src/index.ts +1 -1
  296. package/packages/driver-vidaa/src/keymap.ts +56 -56
  297. package/packages/driver-vidaa/src/types.ts +90 -90
  298. package/packages/driver-webos/src/DeviceWebos.ts +313 -313
  299. package/packages/driver-webos/src/__mocks__/webos.ts +172 -172
  300. package/packages/driver-webos/src/constants.ts +20 -20
  301. package/packages/driver-webos/src/index.ts +1 -1
  302. package/packages/driver-webos/src/keymap.ts +10 -10
  303. package/packages/driver-webos/src/types.ts +344 -344
  304. package/packages/driver-webos/src/utils.ts +60 -60
  305. package/packages/driver-webos/src/webOSTVjs/webOSTVjs.js +12 -12
  306. package/packages/driver-xbox/__external__/winjs/directionalnavigation-1.0.0.0.js +1015 -1015
  307. package/packages/driver-xbox/src/DeviceXbox.ts +231 -231
  308. package/packages/driver-xbox/src/__mocks__/Windows.ts +94 -94
  309. package/packages/driver-xbox/src/index.ts +1 -1
  310. package/packages/driver-xbox/src/interfaces.ts +138 -138
  311. package/packages/driver-xbox/src/keymap.ts +96 -96
  312. package/packages/driver-xbox/src/utils.ts +23 -23
  313. package/packages/epg/IMPLEMENTATION.md +228 -228
  314. package/packages/epg/MockGenerator.md +102 -102
  315. package/packages/epg/README.md +585 -585
  316. package/packages/epg/src/v2/Cell.tsx +222 -222
  317. package/packages/epg/src/v2/CellsManager.ts +1 -1
  318. package/packages/epg/src/v2/DataManager.ts +372 -372
  319. package/packages/epg/src/v2/DatePicker.tsx +110 -110
  320. package/packages/epg/src/v2/DateToast/DateToast.scss +28 -28
  321. package/packages/epg/src/v2/DateToast/DateToast.styles.1080.scss +2 -2
  322. package/packages/epg/src/v2/DateToast/DateToast.styles.scss +2 -2
  323. package/packages/epg/src/v2/DateToast/DateToast.tsx +90 -90
  324. package/packages/epg/src/v2/DateToast/_sizes.1080.scss +7 -7
  325. package/packages/epg/src/v2/DateToast/_sizes.scss +7 -7
  326. package/packages/epg/src/v2/DateToast/index.tsx +1 -1
  327. package/packages/epg/src/v2/DateToast/styles.ts +1 -1
  328. package/packages/epg/src/v2/Day.tsx +33 -33
  329. package/packages/epg/src/v2/Epg.tsx +462 -462
  330. package/packages/epg/src/v2/Header.tsx +41 -41
  331. package/packages/epg/src/v2/IdleController.ts +25 -25
  332. package/packages/epg/src/v2/InputEvents.ts +301 -301
  333. package/packages/epg/src/v2/MockGenerator/config.1080.ts +2 -2
  334. package/packages/epg/src/v2/MockGenerator/config.ts +2 -2
  335. package/packages/epg/src/v2/MockGenerator/generator.ts +174 -174
  336. package/packages/epg/src/v2/MockGenerator/index.ts +2 -2
  337. package/packages/epg/src/v2/MockGenerator/mocks/data.ts +102 -102
  338. package/packages/epg/src/v2/MockGenerator/types.ts +25 -25
  339. package/packages/epg/src/v2/MockGenerator/utils.ts +28 -28
  340. package/packages/epg/src/v2/MouseNavigation/MouseNavigation.tsx +88 -88
  341. package/packages/epg/src/v2/MouseNavigation/MouseNavigationFallback.ts +4 -4
  342. package/packages/epg/src/v2/MouseNavigation/index.tizen.tv.ts +1 -1
  343. package/packages/epg/src/v2/MouseNavigation/index.ts +1 -1
  344. package/packages/epg/src/v2/MouseNavigation/index.web.ts +1 -1
  345. package/packages/epg/src/v2/MouseNavigation/index.webos.tv.ts +1 -1
  346. package/packages/epg/src/v2/NowLine.tsx +66 -66
  347. package/packages/epg/src/v2/Program.tsx +58 -58
  348. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.scss +67 -67
  349. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.1080.scss +3 -3
  350. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.1080.scss +2 -2
  351. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.scss +2 -2
  352. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.scss +3 -3
  353. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.tsx +149 -149
  354. package/packages/epg/src/v2/ProgramInfo/_animated.scss +8 -8
  355. package/packages/epg/src/v2/ProgramInfo/_mixins.scss +5 -5
  356. package/packages/epg/src/v2/ProgramInfo/_sizes.1080.scss +21 -21
  357. package/packages/epg/src/v2/ProgramInfo/_sizes.scss +21 -21
  358. package/packages/epg/src/v2/ProgramInfo/index.ts +1 -1
  359. package/packages/epg/src/v2/ProgramInfo/rtl.scss +7 -7
  360. package/packages/epg/src/v2/ProgramInfo/sizes.1080.ts +3 -3
  361. package/packages/epg/src/v2/ProgramInfo/sizes.ts +3 -3
  362. package/packages/epg/src/v2/ProgramInfo/styles.ts +1 -1
  363. package/packages/epg/src/v2/ProgramInfo/utils.ts +28 -28
  364. package/packages/epg/src/v2/Row.tsx +134 -134
  365. package/packages/epg/src/v2/RowsManager.ts +1 -1
  366. package/packages/epg/src/v2/TimeManager.ts +58 -58
  367. package/packages/epg/src/v2/Timeline.ts +1 -1
  368. package/packages/epg/src/v2/TimelineSection.tsx +50 -50
  369. package/packages/epg/src/v2/basic/CellsManager.tsx +300 -300
  370. package/packages/epg/src/v2/basic/RowsManager.tsx +503 -503
  371. package/packages/epg/src/v2/basic/Timeline.tsx +88 -88
  372. package/packages/epg/src/v2/index.ts +1 -1
  373. package/packages/epg/src/v2/interface.ts +1519 -1519
  374. package/packages/epg/src/v2/sizes.1080.ts +2 -2
  375. package/packages/epg/src/v2/sizes.ts +2 -2
  376. package/packages/epg/src/v2/styles/Basic/Basic.scss +116 -116
  377. package/packages/epg/src/v2/styles/Basic/index.ts +1 -1
  378. package/packages/epg/src/v2/styles/Whitelabel/index.ts +1 -1
  379. package/packages/epg/src/v2/utils.ts +40 -40
  380. package/packages/events-manager/src/EventsManager.ts +1 -1
  381. package/packages/events-manager/src/index.ts +2 -2
  382. package/packages/floating-focus/README.md +64 -64
  383. package/packages/floating-focus/src/FloatingFocus.ts +106 -106
  384. package/packages/floating-focus/src/Horizontal.tsx +20 -20
  385. package/packages/floating-focus/src/Vertical.tsx +20 -20
  386. package/packages/floating-focus/src/index.ts +4 -4
  387. package/packages/floating-focus/src/types.ts +20 -20
  388. package/packages/floating-focus/src/utils.ts +43 -43
  389. package/packages/focus/README.md +348 -348
  390. package/packages/focus/src/IFocusable.ts +5 -5
  391. package/packages/focus/src/Layout/Base.tsx +166 -166
  392. package/packages/focus/src/Layout/Horizontal.ts +15 -15
  393. package/packages/focus/src/Layout/Matrix.tsx +357 -357
  394. package/packages/focus/src/Layout/Vertical.ts +12 -12
  395. package/packages/focus/src/Layout/constants.ts +10 -10
  396. package/packages/focus/src/Layout/isRtl.ts +12 -12
  397. package/packages/focus/src/Layout/types.ts +7 -7
  398. package/packages/focus/src/candidate.ts +106 -106
  399. package/packages/focus/src/focusFirstExisting.ts +19 -19
  400. package/packages/focus/src/hasFocus.ts +36 -36
  401. package/packages/focus/src/index.ts +16 -16
  402. package/packages/focus/src/refocusAfterHashChange.ts +19 -19
  403. package/packages/focus/src/safeFocus.ts +15 -15
  404. package/packages/gallup/README.md +27 -27
  405. package/packages/gallup/src/Gallup.ts +80 -80
  406. package/packages/gallup/src/GallupMock.ts +7 -7
  407. package/packages/gallup/src/__external__/SpringStreams.d.ts +39 -39
  408. package/packages/gallup/src/__mocks__/SpringStreams.js +18 -18
  409. package/packages/gallup/src/index.ts +1 -1
  410. package/packages/grid/BasicGrid/README.md +78 -78
  411. package/packages/grid/BasicGrid/index.ts +1 -1
  412. package/packages/grid/FirstOnlyGrid/README.md +43 -43
  413. package/packages/grid/FirstOnlyGrid/index.ts +1 -1
  414. package/packages/grid/FixedToEndGrid/README.md +45 -45
  415. package/packages/grid/FixedToEndGrid/index.ts +1 -1
  416. package/packages/grid/Item/index.ts +1 -1
  417. package/packages/grid/README.md +169 -169
  418. package/packages/grid/src/Base/Base.tsx +492 -492
  419. package/packages/grid/src/Base/MouseNavigation/MouseNavigation.tsx +82 -82
  420. package/packages/grid/src/Base/MouseNavigation/MouseNavigationFallback.ts +4 -4
  421. package/packages/grid/src/Base/MouseNavigation/index.tizen.tv.ts +1 -1
  422. package/packages/grid/src/Base/MouseNavigation/index.ts +1 -1
  423. package/packages/grid/src/Base/MouseNavigation/index.webos.tv.ts +1 -1
  424. package/packages/grid/src/Base/MouseNavigation/index.webtv.ts +1 -1
  425. package/packages/grid/src/Base/index.ts +1 -1
  426. package/packages/grid/src/Base/interface.ts +47 -47
  427. package/packages/grid/src/BasicGrid/BasicGrid.tsx +137 -137
  428. package/packages/grid/src/BasicGrid/config.ts +13 -13
  429. package/packages/grid/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -54
  430. package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +112 -112
  431. package/packages/grid/src/FirstOnlyGrid/config.ts +13 -13
  432. package/packages/grid/src/FirstOnlyGrid/controller.ts +10 -10
  433. package/packages/grid/src/FixedToEndGrid/FixedToEndGrid.tsx +112 -112
  434. package/packages/grid/src/FixedToEndGrid/config.ts +13 -13
  435. package/packages/grid/src/FixedToEndGrid/controller.ts +36 -36
  436. package/packages/grid/src/UnifiedGridController/UnifiedGridController.ts +555 -555
  437. package/packages/grid/src/UnifiedGridController/index.ts +2 -2
  438. package/packages/grid/src/UnifiedGridController/interface.ts +92 -92
  439. package/packages/grid/src/animate.animated.ts +1 -1
  440. package/packages/grid/src/animate.ts +1 -1
  441. package/packages/grid/src/interface.ts +30 -30
  442. package/packages/grid/src/mocks/index.tsx +41 -41
  443. package/packages/grid/src/types.ts +69 -69
  444. package/packages/grid/src/utils.ts +69 -69
  445. package/packages/i18n/README.md +460 -460
  446. package/packages/i18n/src/I18n.ts +246 -246
  447. package/packages/i18n/src/Translation.tsx +36 -36
  448. package/packages/i18n/src/addResourceBundle.ts +73 -73
  449. package/packages/i18n/src/direction.ts +33 -33
  450. package/packages/i18n/src/index.ts +4 -4
  451. package/packages/i18n/src/isRtl.ts +3 -3
  452. package/packages/i18n/src/middlewares/i18next/Context/Context.ts +25 -25
  453. package/packages/i18n/src/middlewares/i18next/Context/index.ts +1 -1
  454. package/packages/i18n/src/middlewares/i18next/Interpolation/Interpolation.ts +95 -95
  455. package/packages/i18n/src/middlewares/i18next/Interpolation/index.ts +1 -1
  456. package/packages/i18n/src/middlewares/i18next/Nesting/Nesting.ts +38 -38
  457. package/packages/i18n/src/middlewares/i18next/Nesting/index.ts +1 -1
  458. package/packages/i18n/src/middlewares/i18next/Plurals/Plurals.ts +123 -123
  459. package/packages/i18n/src/middlewares/i18next/Plurals/Resolvers.ts +124 -124
  460. package/packages/i18n/src/middlewares/i18next/Plurals/index.ts +1 -1
  461. package/packages/i18n/src/middlewares/i18next/Plurals/types.ts +6 -6
  462. package/packages/i18n/src/middlewares/icu/DateInterpolation/DateInterpolation.ts +64 -64
  463. package/packages/i18n/src/middlewares/icu/DateInterpolation/index.ts +1 -1
  464. package/packages/i18n/src/middlewares/icu/Interpolation/Interpolation.ts +39 -39
  465. package/packages/i18n/src/middlewares/icu/Interpolation/index.ts +1 -1
  466. package/packages/i18n/src/middlewares/icu/NumberInterpolation/NumberInterpolation.ts +41 -41
  467. package/packages/i18n/src/middlewares/icu/NumberInterpolation/index.ts +1 -1
  468. package/packages/i18n/src/middlewares/icu/Plurals/Plurals.ts +65 -65
  469. package/packages/i18n/src/middlewares/icu/Plurals/Resolvers.ts +130 -130
  470. package/packages/i18n/src/middlewares/icu/Plurals/index.ts +1 -1
  471. package/packages/i18n/src/middlewares/icu/Plurals/types.ts +15 -15
  472. package/packages/i18n/src/middlewares/icu/Select/Select.ts +36 -36
  473. package/packages/i18n/src/middlewares/icu/Select/index.ts +1 -1
  474. package/packages/i18n/src/middlewares/icu/TimeInterpolation/TimeInterpolation.ts +65 -65
  475. package/packages/i18n/src/middlewares/icu/TimeInterpolation/index.ts +1 -1
  476. package/packages/i18n/src/middlewares/icu/shared/hasVariable.ts +5 -5
  477. package/packages/i18n/src/middlewares/icu/shared/matchSwitchCase.ts +80 -80
  478. package/packages/i18n/src/middlewares/icu/shared/unwrap.ts +1 -1
  479. package/packages/i18n/src/pluralsCommon/PluralsHelper.ts +54 -54
  480. package/packages/i18n/src/pluralsCommon/ResolverByLanguage.ts +129 -129
  481. package/packages/i18n/src/t.tsx +6 -6
  482. package/packages/i18n/src/typedTranslate.ts +31 -31
  483. package/packages/i18n/src/types.ts +66 -66
  484. package/packages/i18n/src/utils.ts +76 -76
  485. package/packages/icon/README.md +107 -107
  486. package/packages/icon/src/Icon.tsx +71 -71
  487. package/packages/icon/src/index.ts +1 -1
  488. package/packages/ime/README.md +72 -72
  489. package/packages/ime/src/IKeyboard.ts +6 -6
  490. package/packages/ime/src/IKeyboardEvent.ts +7 -7
  491. package/packages/ime/src/ImeManager.ts +33 -33
  492. package/packages/ime/src/SystemKeyboard/SystemKeyboard.ts +33 -33
  493. package/packages/ime/src/SystemKeyboard/SystemKeyboardBase.ts +98 -98
  494. package/packages/ime/src/SystemKeyboard/TizenSystemKeyboard.ts +66 -66
  495. package/packages/ime/src/SystemKeyboard/WebosSystemKeyboard.ts +74 -74
  496. package/packages/ime/src/SystemKeyboard/index.tizen.tv.ts +1 -1
  497. package/packages/ime/src/SystemKeyboard/index.ts +1 -1
  498. package/packages/ime/src/SystemKeyboard/index.webos.tv.ts +1 -1
  499. package/packages/ime/src/index.ts +3 -3
  500. package/packages/input/README.md +65 -65
  501. package/packages/input/__mocks__/MockKeyboard.ts +40 -40
  502. package/packages/input/src/Input.scss +9 -9
  503. package/packages/input/src/Input.tsx +267 -267
  504. package/packages/input/src/index.ts +1 -1
  505. package/packages/input/src/utils.ts +71 -71
  506. package/packages/interactable/README.md +38 -38
  507. package/packages/interactable/src/Interactable.tsx +33 -33
  508. package/packages/interactable/src/index.ts +1 -1
  509. package/packages/interactable/src/interface.ts +7 -7
  510. package/packages/ipify/README.md +30 -30
  511. package/packages/ipify/src/index.ts +1 -1
  512. package/packages/ipify/src/ipify.ts +41 -41
  513. package/packages/jsx/README.md +388 -388
  514. package/packages/jsx/src/Component.ts +68 -68
  515. package/packages/jsx/src/createRef.ts +5 -5
  516. package/packages/jsx/src/forwardRef.ts +8 -8
  517. package/packages/jsx/src/index.ts +31 -31
  518. package/packages/jsx/src/jsx-runtime.ts +5 -5
  519. package/packages/jsx/src/manipulation/attachNode.ts +30 -30
  520. package/packages/jsx/src/manipulation/attachNodeBefore.ts +44 -44
  521. package/packages/jsx/src/manipulation/clearNode.ts +14 -14
  522. package/packages/jsx/src/manipulation/detachNode.ts +26 -26
  523. package/packages/jsx/src/manipulation/index.ts +7 -7
  524. package/packages/jsx/src/manipulation/removeNode.ts +18 -18
  525. package/packages/jsx/src/manipulation/replaceNode.ts +42 -42
  526. package/packages/jsx/src/manipulation/swapNodes.ts +53 -53
  527. package/packages/jsx/src/mount/guards.ts +26 -26
  528. package/packages/jsx/src/mount/handleLifecycle.ts +71 -71
  529. package/packages/jsx/src/mount/index.ts +1 -1
  530. package/packages/jsx/src/mount/lifecycle.ts +38 -38
  531. package/packages/jsx/src/mount/lifecycleHelpers.ts +29 -29
  532. package/packages/jsx/src/mount/mount.ts +141 -141
  533. package/packages/jsx/src/mount/namespaces.ts +7 -7
  534. package/packages/jsx/src/mount/props.ts +121 -121
  535. package/packages/jsx/src/nodeUtils.ts +69 -69
  536. package/packages/jsx/src/setText.ts +15 -15
  537. package/packages/jsx/src/test-utils/MountedComponent.ts +50 -50
  538. package/packages/jsx/src/test-utils/README.md +72 -72
  539. package/packages/jsx/src/test-utils/click.ts +7 -7
  540. package/packages/jsx/src/test-utils/enter.ts +4 -4
  541. package/packages/jsx/src/test-utils/index.ts +6 -6
  542. package/packages/jsx/src/test-utils/keydown.ts +27 -27
  543. package/packages/jsx/src/test-utils/keyup.ts +27 -27
  544. package/packages/jsx/src/test-utils/shallow.ts +33 -33
  545. package/packages/jsx/src/test-utils/spec-utils.ts +6 -6
  546. package/packages/jsx/src/textNode.ts +9 -9
  547. package/packages/jsx/src/types.ts +128 -128
  548. package/packages/jsx/src/utils.ts +35 -35
  549. package/packages/jsx/src/virtualDOM.ts +121 -121
  550. package/packages/key-sequence/README.md +44 -44
  551. package/packages/key-sequence/src/KeySequence.ts +56 -56
  552. package/packages/key-sequence/src/arrayEndsWithKeyCombo.ts +22 -22
  553. package/packages/key-sequence/src/index.ts +1 -1
  554. package/packages/key-sequence/src/types.ts +13 -13
  555. package/packages/keyboard/README.md +237 -237
  556. package/packages/keyboard/src/AndroidKeyboard/Keyboard.scss +140 -140
  557. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.1080.scss +2 -2
  558. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.1080.scss +3 -3
  559. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.scss +3 -3
  560. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.scss +2 -2
  561. package/packages/keyboard/src/AndroidKeyboard/Keyboard.tsx +235 -235
  562. package/packages/keyboard/src/AndroidKeyboard/_animated.scss +7 -7
  563. package/packages/keyboard/src/AndroidKeyboard/_sizes.1080.scss +15 -15
  564. package/packages/keyboard/src/AndroidKeyboard/_sizes.scss +15 -15
  565. package/packages/keyboard/src/AndroidKeyboard/icons/arrow_left.svg +6 -6
  566. package/packages/keyboard/src/AndroidKeyboard/icons/arrow_right.svg +6 -6
  567. package/packages/keyboard/src/AndroidKeyboard/icons/key_backspace.svg +12 -12
  568. package/packages/keyboard/src/AndroidKeyboard/index.ts +1 -1
  569. package/packages/keyboard/src/AndroidKeyboard/makeLayout.ts +19 -19
  570. package/packages/keyboard/src/Backdrop/Backdrop.scss +17 -17
  571. package/packages/keyboard/src/Backdrop/Backdrop.styles.1080.scss +2 -2
  572. package/packages/keyboard/src/Backdrop/Backdrop.styles.scss +2 -2
  573. package/packages/keyboard/src/Backdrop/Backdrop.tsx +31 -31
  574. package/packages/keyboard/src/Backdrop/_sizes.1080.scss +2 -2
  575. package/packages/keyboard/src/Backdrop/_sizes.scss +2 -2
  576. package/packages/keyboard/src/DefaultKeyboard/Keyboard.scss +73 -73
  577. package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.1080.scss +2 -2
  578. package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.scss +2 -2
  579. package/packages/keyboard/src/DefaultKeyboard/Keyboard.tsx +155 -155
  580. package/packages/keyboard/src/DefaultKeyboard/_sizes.1080.scss +12 -12
  581. package/packages/keyboard/src/DefaultKeyboard/_sizes.scss +12 -12
  582. package/packages/keyboard/src/DefaultKeyboard/index.ts +1 -1
  583. package/packages/keyboard/src/KeyboardBase.tsx +344 -344
  584. package/packages/keyboard/src/MobiKeyboard/Keyboard.scss +180 -180
  585. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.1080.scss +2 -2
  586. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.1080.scss +3 -3
  587. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.scss +3 -3
  588. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.scss +2 -2
  589. package/packages/keyboard/src/MobiKeyboard/Keyboard.tsx +278 -278
  590. package/packages/keyboard/src/MobiKeyboard/_animated.scss +7 -7
  591. package/packages/keyboard/src/MobiKeyboard/_sizes.1080.scss +10 -10
  592. package/packages/keyboard/src/MobiKeyboard/_sizes.scss +10 -10
  593. package/packages/keyboard/src/MobiKeyboard/icons/arrow_left.svg +6 -6
  594. package/packages/keyboard/src/MobiKeyboard/icons/arrow_right.svg +6 -6
  595. package/packages/keyboard/src/MobiKeyboard/icons/key_backspace.svg +12 -12
  596. package/packages/keyboard/src/MobiKeyboard/icons/key_space.svg +6 -6
  597. package/packages/keyboard/src/MobiKeyboard/index.ts +1 -1
  598. package/packages/keyboard/src/MobiKeyboard/utils.ts +19 -19
  599. package/packages/keyboard/src/QwertyKeyboardBase/QwertyKeyboardBase.tsx +54 -54
  600. package/packages/keyboard/src/ShiftMode.ts +25 -25
  601. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +168 -168
  602. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.1080.scss +2 -2
  603. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.scss +2 -2
  604. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +353 -353
  605. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -7
  606. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.scss +7 -7
  607. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/index.ts +1 -1
  608. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.scss +81 -81
  609. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -2
  610. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -2
  611. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +32 -32
  612. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +32 -32
  613. package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_left.svg +9 -9
  614. package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_right.svg +9 -9
  615. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_backspace.svg +9 -9
  616. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_language.svg +20 -20
  617. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift.svg +9 -9
  618. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift_active.svg +9 -9
  619. package/packages/keyboard/src/WhitelabelKeyboard/index.ts +2 -2
  620. package/packages/keyboard/src/WhitelabelKeyboard/layouts/hebrew.ts +28 -28
  621. package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +8 -8
  622. package/packages/keyboard/src/WhitelabelKeyboard/layouts/korean.ts +26 -26
  623. package/packages/keyboard/src/WhitelabelKeyboard/layouts/latin.ts +26 -26
  624. package/packages/keyboard/src/WhitelabelKeyboard/layouts/russian.ts +27 -27
  625. package/packages/keyboard/src/WhitelabelKeyboard/layouts/special.ts +28 -28
  626. package/packages/keyboard/src/WhitelabelKeyboard/layouts/tibetan.ts +26 -26
  627. package/packages/keyboard/src/WhitelabelKeyboard/layouts/turkish.ts +26 -26
  628. package/packages/keyboard/src/WhitelabelKeyboard/layouts/urdu.ts +26 -26
  629. package/packages/keyboard/src/WhitelabelKeyboard/types.ts +28 -28
  630. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.scss +105 -105
  631. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.1080.scss +2 -2
  632. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.scss +2 -2
  633. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.tsx +161 -161
  634. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -7
  635. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.scss +7 -7
  636. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/index.ts +1 -1
  637. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.scss +62 -62
  638. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -2
  639. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -2
  640. package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.1080.scss +29 -29
  641. package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.scss +29 -29
  642. package/packages/keyboard/src/WhitelabelNumericKeyboard/icons/key_backspace.svg +9 -9
  643. package/packages/keyboard/src/WhitelabelNumericKeyboard/index.ts +2 -2
  644. package/packages/keyboard/src/WhitelabelNumericKeyboard/layout.ts +14 -14
  645. package/packages/keyboard/src/hwKeyboardEventToChar.ts +11 -11
  646. package/packages/keyboard/src/types/index.ts +11 -11
  647. package/packages/keyboard/src/utils/caret.ts +48 -48
  648. package/packages/keyboard/src/utils/generateFocusMatrixFromStringMatrix.ts +12 -12
  649. package/packages/keyboard/src/utils/input.ts +40 -40
  650. package/packages/l10n/README.md +120 -120
  651. package/packages/l10n/interface.ts +1 -1
  652. package/packages/l10n/locales/cs.ts +4 -4
  653. package/packages/l10n/locales/en-001.ts +4 -4
  654. package/packages/l10n/locales/en-us.ts +4 -4
  655. package/packages/l10n/src/Locale.tsx +44 -44
  656. package/packages/l10n/src/date/common.ts +165 -165
  657. package/packages/l10n/src/date/cs.ts +89 -89
  658. package/packages/l10n/src/date/de.ts +97 -97
  659. package/packages/l10n/src/date/en-001.ts +76 -76
  660. package/packages/l10n/src/date/en-common.ts +55 -55
  661. package/packages/l10n/src/date/en-us.ts +83 -83
  662. package/packages/l10n/src/date/es.ts +71 -71
  663. package/packages/l10n/src/date/fr.ts +94 -94
  664. package/packages/l10n/src/date/he.ts +101 -101
  665. package/packages/l10n/src/date/iso.ts +63 -63
  666. package/packages/l10n/src/date/types.ts +56 -56
  667. package/packages/l10n/src/index.ts +2 -2
  668. package/packages/l10n/src/l10n.ts +112 -112
  669. package/packages/l10n/src/types.ts +22 -22
  670. package/packages/list/AttachDetachItem/README.md +128 -128
  671. package/packages/list/AttachDetachItem/index.ts +3 -3
  672. package/packages/list/BasicList/README.md +71 -71
  673. package/packages/list/BasicList/index.ts +1 -1
  674. package/packages/list/CenteredList/README.md +42 -42
  675. package/packages/list/CenteredList/index.ts +1 -1
  676. package/packages/list/EdgeOffsetList/README.md +58 -58
  677. package/packages/list/EdgeOffsetList/index.ts +1 -1
  678. package/packages/list/FirstOnlyList/README.md +39 -39
  679. package/packages/list/FirstOnlyList/index.ts +1 -1
  680. package/packages/list/FirstOnlyVariedList/README.md +105 -105
  681. package/packages/list/FirstOnlyVariedList/index.ts +1 -1
  682. package/packages/list/FixedToEndList/README.md +42 -42
  683. package/packages/list/FixedToEndList/index.ts +1 -1
  684. package/packages/list/Item/index.ts +1 -1
  685. package/packages/list/README.md +193 -193
  686. package/packages/list/src/AttachDetachItem/AttachDetachItem.tsx +96 -96
  687. package/packages/list/src/AttachDetachItem/prepareAttachDetachItemData.ts +13 -13
  688. package/packages/list/src/Base/Base.tsx +392 -392
  689. package/packages/list/src/Base/MouseNavigation/MouseNavigation.tsx +82 -82
  690. package/packages/list/src/Base/MouseNavigation/MouseNavigationFallback.ts +4 -4
  691. package/packages/list/src/Base/MouseNavigation/index.tizen.tv.ts +1 -1
  692. package/packages/list/src/Base/MouseNavigation/index.ts +1 -1
  693. package/packages/list/src/Base/MouseNavigation/index.webos.tv.ts +1 -1
  694. package/packages/list/src/Base/MouseNavigation/index.webtv.ts +1 -1
  695. package/packages/list/src/Base/index.ts +1 -1
  696. package/packages/list/src/Base/interface.ts +39 -39
  697. package/packages/list/src/BasicList/BasicList.tsx +178 -178
  698. package/packages/list/src/BasicList/config.ts +13 -13
  699. package/packages/list/src/CenteredList/CenteredList.tsx +116 -116
  700. package/packages/list/src/CenteredList/config.ts +13 -13
  701. package/packages/list/src/CenteredList/controller.ts +46 -46
  702. package/packages/list/src/CenteredList/interface.ts +10 -10
  703. package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +173 -173
  704. package/packages/list/src/EdgeOffsetList/config.ts +13 -13
  705. package/packages/list/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -54
  706. package/packages/list/src/FirstOnlyList/FirstOnlyList.tsx +122 -122
  707. package/packages/list/src/FirstOnlyList/config.ts +13 -13
  708. package/packages/list/src/FirstOnlyList/controller.ts +11 -11
  709. package/packages/list/src/FirstOnlyVariedList/FirstOnlyVariedList.tsx +132 -132
  710. package/packages/list/src/FirstOnlyVariedList/config.ts +13 -13
  711. package/packages/list/src/FixedToEndList/FixedToEndList.tsx +125 -125
  712. package/packages/list/src/FixedToEndList/config.ts +13 -13
  713. package/packages/list/src/FixedToEndList/controller.ts +44 -44
  714. package/packages/list/src/UnifiedListController/UnifiedListController.ts +258 -258
  715. package/packages/list/src/UnifiedListController/UnifiedListControllerBase.ts +241 -241
  716. package/packages/list/src/UnifiedListController/UnifiedVariedListController.ts +241 -241
  717. package/packages/list/src/UnifiedListController/interface.ts +81 -81
  718. package/packages/list/src/__test__/utils.spec.ts +59 -59
  719. package/packages/list/src/animate.animated.ts +1 -1
  720. package/packages/list/src/animate.ts +1 -1
  721. package/packages/list/src/index.ts +1 -1
  722. package/packages/list/src/interface.ts +48 -48
  723. package/packages/list/src/mocks/index.tsx +55 -55
  724. package/packages/list/src/types.ts +132 -132
  725. package/packages/list/src/utils.ts +142 -142
  726. package/packages/list/utils/index.ts +1 -1
  727. package/packages/logger/README.md +117 -117
  728. package/packages/logger/src/LoggerManager.ts +60 -60
  729. package/packages/logger/src/LoggerService.ts +43 -43
  730. package/packages/logger/src/__mocks__/LoggerBase.ts +13 -13
  731. package/packages/logger/src/index.ts +3 -3
  732. package/packages/logger/src/loggers/ConsoleLogger/ConsoleLogger.ts +51 -51
  733. package/packages/logger/src/loggers/ConsoleLogger/README.md +39 -39
  734. package/packages/logger/src/loggers/ConsoleLogger/index.ts +1 -1
  735. package/packages/logger/src/loggers/LoggerBase/LoggerBase.ts +67 -67
  736. package/packages/logger/src/loggers/LoggerBase/README.md +69 -69
  737. package/packages/logger/src/loggers/LoggerBase/index.ts +1 -1
  738. package/packages/logger/src/loggers/SentryLogger/README.md +98 -98
  739. package/packages/logger/src/loggers/SentryLogger/Sentry.ts +2 -2
  740. package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +179 -179
  741. package/packages/logger/src/loggers/SentryLogger/index.ts +2 -2
  742. package/packages/logger/src/loggers/SentryLogger/mock.ts +6 -6
  743. package/packages/logger/src/loggers/index.ts +2 -2
  744. package/packages/logger/src/types.ts +46 -46
  745. package/packages/logger/src/utils/deviceInfo.ts +25 -25
  746. package/packages/logger/src/utils/index.ts +1 -1
  747. package/packages/lottie-animations/README.md +217 -217
  748. package/packages/lottie-animations/src/LottieAnimation.tsx +125 -125
  749. package/packages/lottie-animations/src/index.ts +7 -7
  750. package/packages/menu/README.md +90 -90
  751. package/packages/menu/WhitelabelMenu/index.ts +1 -1
  752. package/packages/menu/WhitelabelMenu/interface.ts +2 -2
  753. package/packages/menu/WhitelabelMenu/styles.ts +2 -2
  754. package/packages/menu/interface.ts +3 -3
  755. package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +211 -211
  756. package/packages/menu/src/MenuAndContentContainer/index.ts +1 -1
  757. package/packages/menu/src/MenuAndContentContainer/interface.ts +164 -164
  758. package/packages/menu/src/MenuAndContentContainer/service.ts +5 -5
  759. package/packages/menu/src/WhitelabelMenu/SideMenu.scss +41 -41
  760. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.1080.scss +2 -2
  761. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.1080.scss +3 -3
  762. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.scss +3 -3
  763. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.scss +2 -2
  764. package/packages/menu/src/WhitelabelMenu/SideMenu.tsx +248 -248
  765. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.scss +56 -56
  766. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.1080.scss +2 -2
  767. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.1080.scss +3 -3
  768. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.scss +3 -3
  769. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.scss +2 -2
  770. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.tsx +78 -78
  771. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_animated.scss +12 -12
  772. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.1080.scss +17 -17
  773. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.scss +17 -17
  774. package/packages/menu/src/WhitelabelMenu/SideMenuItem/index.ts +1 -1
  775. package/packages/menu/src/WhitelabelMenu/SideMenuItem/interface.ts +49 -49
  776. package/packages/menu/src/WhitelabelMenu/SideMenuItem/rtl.scss +12 -12
  777. package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.1080.ts +2 -2
  778. package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.ts +2 -2
  779. package/packages/menu/src/WhitelabelMenu/SideMenuItem/styles.ts +1 -1
  780. package/packages/menu/src/WhitelabelMenu/VisualController.animated.ts +48 -48
  781. package/packages/menu/src/WhitelabelMenu/VisualController.ts +20 -20
  782. package/packages/menu/src/WhitelabelMenu/VisualControllerBase.ts +71 -71
  783. package/packages/menu/src/WhitelabelMenu/_animated.scss +39 -39
  784. package/packages/menu/src/WhitelabelMenu/_sizes.1080.scss +14 -14
  785. package/packages/menu/src/WhitelabelMenu/_sizes.scss +14 -14
  786. package/packages/menu/src/WhitelabelMenu/constants.animated.ts +1 -1
  787. package/packages/menu/src/WhitelabelMenu/constants.ts +1 -1
  788. package/packages/menu/src/WhitelabelMenu/index.ts +1 -1
  789. package/packages/menu/src/WhitelabelMenu/interface.ts +14 -14
  790. package/packages/menu/src/WhitelabelMenu/rtl.scss +22 -22
  791. package/packages/menu/src/WhitelabelMenu/sizes.1080.ts +1 -1
  792. package/packages/menu/src/WhitelabelMenu/sizes.ts +1 -1
  793. package/packages/menu/src/WhitelabelMenu/styles.ts +1 -1
  794. package/packages/menu/src/WhitelabelMenu/utils.ts +34 -34
  795. package/packages/menu/src/index.ts +2 -2
  796. package/packages/modal-service/README.md +50 -50
  797. package/packages/modal-service/src/IModal.ts +3 -3
  798. package/packages/modal-service/src/ModalService.scss +7 -7
  799. package/packages/modal-service/src/ModalService.styles.1080.scss +2 -2
  800. package/packages/modal-service/src/ModalService.styles.scss +2 -2
  801. package/packages/modal-service/src/ModalService.tsx +102 -102
  802. package/packages/modal-service/src/_sizes.1080.scss +2 -2
  803. package/packages/modal-service/src/_sizes.scss +2 -2
  804. package/packages/modal-service/src/index.ts +2 -2
  805. package/packages/mouse-navigation/README.md +105 -105
  806. package/packages/mouse-navigation/src/ArrowNavigation/Arrow.tsx +58 -58
  807. package/packages/mouse-navigation/src/ArrowNavigation/ArrowNavigation.tsx +95 -95
  808. package/packages/mouse-navigation/src/ArrowNavigation/__test__/Arrow.spec.tsx +35 -35
  809. package/packages/mouse-navigation/src/ArrowNavigation/__test__/ArrowNavigation.spec.tsx +45 -45
  810. package/packages/mouse-navigation/src/ArrowNavigation/index.tsx +1 -1
  811. package/packages/mouse-navigation/src/MouseElementWrapper.tsx +70 -70
  812. package/packages/mouse-navigation/src/MouseNavigation.tsx +157 -157
  813. package/packages/mouse-navigation/src/MouseNavigationInterface.ts +8 -8
  814. package/packages/mouse-navigation/src/index.ts +3 -3
  815. package/packages/numeric-zapper/README.md +153 -153
  816. package/packages/numeric-zapper/src/NumericZapper.scss +20 -20
  817. package/packages/numeric-zapper/src/NumericZapper.styles.1080.scss +2 -2
  818. package/packages/numeric-zapper/src/NumericZapper.styles.scss +2 -2
  819. package/packages/numeric-zapper/src/NumericZapper.tsx +257 -257
  820. package/packages/numeric-zapper/src/ZapperAllower.ts +15 -15
  821. package/packages/numeric-zapper/src/ZapperService.tsx +8 -8
  822. package/packages/numeric-zapper/src/_sizes.1080.scss +7 -7
  823. package/packages/numeric-zapper/src/_sizes.scss +7 -7
  824. package/packages/numeric-zapper/src/index.ts +4 -4
  825. package/packages/numeric-zapper/src/interface.ts +1 -1
  826. package/packages/numeric-zapper/src/styles.ts +1 -1
  827. package/packages/perf-utils/README.md +7 -7
  828. package/packages/perf-utils/src/array/filter.ts +1 -1
  829. package/packages/perf-utils/src/array/find.ts +1 -1
  830. package/packages/perf-utils/src/array/findIndex.ts +1 -1
  831. package/packages/perf-utils/src/array/forEach.ts +1 -1
  832. package/packages/perf-utils/src/array/includes.ts +1 -1
  833. package/packages/perf-utils/src/array/includesNaN.ts +1 -1
  834. package/packages/perf-utils/src/array/index.ts +1 -1
  835. package/packages/perf-utils/src/array/map.ts +1 -1
  836. package/packages/picker/README.md +70 -70
  837. package/packages/picker/src/DatePicker.tsx +55 -55
  838. package/packages/picker/src/ModalPicker/Checkbox.tsx +38 -38
  839. package/packages/picker/src/ModalPicker/PickerItem.tsx +86 -86
  840. package/packages/picker/src/ModalPicker/PickerModal.tsx +98 -98
  841. package/packages/picker/src/ModalPicker/index.ts +1 -1
  842. package/packages/picker/src/ModalPicker/modalPicker.tsx +48 -48
  843. package/packages/picker/src/Picker.tsx +127 -127
  844. package/packages/picker/src/index.ts +3 -3
  845. package/packages/picker/src/types.ts +25 -25
  846. package/packages/pin-input/README.md +55 -55
  847. package/packages/pin-input/src/PinInput.scss +5 -5
  848. package/packages/pin-input/src/PinInput.tsx +169 -169
  849. package/packages/pin-input/src/index.ts +1 -1
  850. package/packages/player-ui/README.md +207 -207
  851. package/packages/player-ui/src/BackwardButton.tsx +41 -41
  852. package/packages/player-ui/src/CurrentTime.tsx +56 -56
  853. package/packages/player-ui/src/Duration.tsx +60 -60
  854. package/packages/player-ui/src/ForwardButton.tsx +41 -41
  855. package/packages/player-ui/src/PauseButton.tsx +57 -57
  856. package/packages/player-ui/src/PlayButton.tsx +57 -57
  857. package/packages/player-ui/src/PlayPauseButton.tsx +63 -63
  858. package/packages/player-ui/src/PlayerInteractable.tsx +67 -67
  859. package/packages/player-ui/src/PlayerTime.tsx +57 -57
  860. package/packages/player-ui/src/PlayerUI.tsx +267 -267
  861. package/packages/player-ui/src/RemainingTime.tsx +74 -74
  862. package/packages/player-ui/src/Seekbar.tsx +274 -274
  863. package/packages/player-ui/src/Seeking.ts +163 -163
  864. package/packages/player-ui/src/StopButton.tsx +35 -35
  865. package/packages/player-ui/src/Subtitles.tsx +151 -151
  866. package/packages/player-ui/src/index.ts +15 -15
  867. package/packages/player-ui/src/mocks.ts +65 -65
  868. package/packages/player-ui/src/timeUtils.ts +142 -142
  869. package/packages/player-ui/src/types.ts +48 -48
  870. package/packages/progress-bar/README.md +31 -31
  871. package/packages/progress-bar/src/ProgressBar.tsx +41 -41
  872. package/packages/progress-bar/src/index.ts +1 -1
  873. package/packages/progress-bar/src/interface.ts +14 -14
  874. package/packages/qr-code/README.md +79 -79
  875. package/packages/qr-code/src/QRCode.tsx +39 -39
  876. package/packages/qr-code/src/index.ts +2 -2
  877. package/packages/qr-code/src/qrGenerator/__external__/constants.ts +23 -23
  878. package/packages/qr-code/src/qrGenerator/__external__/qrcode.d.ts +31 -31
  879. package/packages/qr-code/src/qrGenerator/__external__/qrcode.js +618 -618
  880. package/packages/qr-code/src/qrGenerator/generateQr.ts +7 -7
  881. package/packages/qr-code/src/qrGenerator/index.ts +3 -3
  882. package/packages/router/README.md +163 -163
  883. package/packages/router/src/Route.tsx +166 -166
  884. package/packages/router/src/Router.tsx +220 -220
  885. package/packages/router/src/focusActiveRoute.ts +5 -5
  886. package/packages/router/src/history.ts +31 -31
  887. package/packages/router/src/index.ts +6 -6
  888. package/packages/router/src/types.ts +13 -13
  889. package/packages/router/src/utils.ts +35 -32
  890. package/packages/runtime-config/README.md +37 -37
  891. package/packages/runtime-config/src/Config.ts +44 -44
  892. package/packages/runtime-config/src/index.ts +1 -1
  893. package/packages/sass-utils/README.md +197 -197
  894. package/packages/sass-utils/src/box-shadow.scss +5 -5
  895. package/packages/sass-utils/src/ellipsis.scss +15 -15
  896. package/packages/sass-utils/src/linear-gradient.scss +43 -43
  897. package/packages/sass-utils/src/prefix-property.scss +7 -7
  898. package/packages/sass-utils/src/prefix-value.scss +6 -6
  899. package/packages/sass-utils/src/prefix.scss +6 -6
  900. package/packages/sass-utils/src/scale.1080.scss +3 -3
  901. package/packages/sass-utils/src/scale.720.scss +5 -5
  902. package/packages/sass-utils/src/transform.scss +5 -5
  903. package/packages/sass-utils/src/transition.scss +6 -6
  904. package/packages/scheduler/README.md +55 -55
  905. package/packages/scheduler/src/Scheduler.ts +43 -43
  906. package/packages/scheduler/src/Task.ts +72 -72
  907. package/packages/scheduler/src/index.ts +4 -4
  908. package/packages/scheduler/src/timeProvider.ts +3 -3
  909. package/packages/scroll-text/README.md +77 -77
  910. package/packages/scroll-text/src/Base.tsx +146 -146
  911. package/packages/scroll-text/src/ScrollText.animated.tsx +80 -80
  912. package/packages/scroll-text/src/ScrollText.tsx +53 -53
  913. package/packages/scroll-text/src/ScrollTextBaseClass.tsx +86 -86
  914. package/packages/scroll-text/src/index.ts +1 -1
  915. package/packages/scroller/README.md +77 -77
  916. package/packages/scroller/src/Scroller.tsx +51 -51
  917. package/packages/scroller/src/index.ts +1 -1
  918. package/packages/splash/AnimatedSplash.ts +1 -1
  919. package/packages/splash/AnimatedSplashAnimated.ts +1 -1
  920. package/packages/splash/AnimatedSplashBasic.ts +1 -1
  921. package/packages/splash/AutomaticSplashAnimated.ts +1 -1
  922. package/packages/splash/AutomaticSplashBasic.ts +1 -1
  923. package/packages/splash/README.md +93 -93
  924. package/packages/splash/StaticSplash.ts +1 -1
  925. package/packages/splash/StaticSplashAnimated.ts +1 -1
  926. package/packages/splash/StaticSplashBasic.ts +1 -1
  927. package/packages/splash/src/AnimatedSplash.animated.tsx +78 -78
  928. package/packages/splash/src/AnimatedSplash.basic.tsx +37 -37
  929. package/packages/splash/src/AutomaticSplash.animated.tsx +20 -20
  930. package/packages/splash/src/AutomaticSplash.basic.tsx +20 -20
  931. package/packages/splash/src/Splash.scss +8 -8
  932. package/packages/splash/src/StaticSplash.animated.tsx +48 -48
  933. package/packages/splash/src/StaticSplash.basic.tsx +26 -26
  934. package/packages/splash/src/index.animated.ts +1 -1
  935. package/packages/splash/src/index.ts +1 -1
  936. package/packages/splash/src/styles.ts +1 -1
  937. package/packages/splash/src/types.ts +20 -20
  938. package/packages/storage/README.md +61 -61
  939. package/packages/storage/src/CookieStorage/CookieStorage.ts +57 -57
  940. package/packages/storage/src/CookieStorage/index.ts +1 -1
  941. package/packages/storage/src/LocalStorage/LocalStorage.ts +58 -58
  942. package/packages/storage/src/LocalStorage/index.ts +1 -1
  943. package/packages/storage/src/index.ts +2 -2
  944. package/packages/storage/src/shared.ts +41 -41
  945. package/packages/storage/src/types.ts +33 -33
  946. package/packages/throbber/README.md +53 -53
  947. package/packages/throbber/src/Throbber.scss +52 -52
  948. package/packages/throbber/src/Throbber.tsx +19 -19
  949. package/packages/throbber/src/ThrobberService.tsx +55 -55
  950. package/packages/throbber/src/controlsHandling.ts +14 -14
  951. package/packages/throbber/src/index.ts +2 -2
  952. package/packages/time/README.md +116 -116
  953. package/packages/time/src/Time.ts +257 -257
  954. package/packages/time/src/adapters/24iMediaTimeApi.ts +47 -47
  955. package/packages/time/src/adapters/worldTimeApi.ts +74 -74
  956. package/packages/time/src/constants.ts +14 -14
  957. package/packages/time/src/index.ts +1 -1
  958. package/packages/time/src/services/24iMediaTimeApi/24iMediaTimeApi.ts +43 -43
  959. package/packages/time/src/services/24iMediaTimeApi/index.ts +6 -6
  960. package/packages/time/src/services/worldTimeApi/index.ts +7 -7
  961. package/packages/time/src/services/worldTimeApi/types.ts +75 -75
  962. package/packages/time/src/services/worldTimeApi/worldTimeApi.ts +77 -77
  963. package/packages/time/src/types.ts +39 -39
  964. package/packages/time/src/utils.ts +79 -79
  965. package/packages/toast/README.md +116 -116
  966. package/packages/toast/src/Toast/IVisualController.ts +7 -7
  967. package/packages/toast/src/Toast/Toast.scss +22 -22
  968. package/packages/toast/src/Toast/Toast.styles.1080.scss +2 -2
  969. package/packages/toast/src/Toast/Toast.styles.scss +2 -2
  970. package/packages/toast/src/Toast/Toast.tsx +83 -83
  971. package/packages/toast/src/Toast/VisualController.animated.ts +20 -20
  972. package/packages/toast/src/Toast/VisualController.ts +9 -9
  973. package/packages/toast/src/Toast/_sizes.1080.scss +8 -8
  974. package/packages/toast/src/Toast/_sizes.scss +8 -8
  975. package/packages/toast/src/Toast/index.ts +2 -2
  976. package/packages/toast/src/Toast/styles.ts +1 -1
  977. package/packages/toast/src/ToastService.scss +8 -8
  978. package/packages/toast/src/ToastService.styles.1080.scss +2 -2
  979. package/packages/toast/src/ToastService.styles.scss +2 -2
  980. package/packages/toast/src/ToastService.tsx +59 -59
  981. package/packages/toast/src/_sizes.1080.scss +2 -2
  982. package/packages/toast/src/_sizes.scss +2 -2
  983. package/packages/toast/src/index.ts +4 -4
  984. package/packages/toast/src/types.ts +4 -4
  985. package/packages/types-bigscreen-jsx/README.md +12 -12
  986. package/packages/types-bigscreen-jsx/global.d.ts +0 -0
  987. package/packages/types-bigscreen-jsx/index.d.ts +32 -32
  988. package/packages/types-bigscreen-jsx/src/copyTypes.js +14 -14
  989. package/packages/utils/README.md +363 -363
  990. package/packages/utils/src/addClass.ts +9 -9
  991. package/packages/utils/src/counter.ts +49 -49
  992. package/packages/utils/src/debounce.ts +54 -54
  993. package/packages/utils/src/displayToggler.scss +3 -3
  994. package/packages/utils/src/displayToggler.ts +38 -38
  995. package/packages/utils/src/elementUtils.ts +105 -105
  996. package/packages/utils/src/forceReflow.ts +14 -14
  997. package/packages/utils/src/generateUuid.ts +19 -19
  998. package/packages/utils/src/index.ts +43 -43
  999. package/packages/utils/src/keyPress/index.ts +6 -6
  1000. package/packages/utils/src/keyPress/keyPressSimulator.ts +74 -74
  1001. package/packages/utils/src/keyPress/simulateKeyPress.ts +25 -25
  1002. package/packages/utils/src/memoryInfo.ts +21 -21
  1003. package/packages/utils/src/nTimes.ts +9 -9
  1004. package/packages/utils/src/noop.ts +1 -1
  1005. package/packages/utils/src/offsetPosition.ts +56 -56
  1006. package/packages/utils/src/removeClass.ts +9 -9
  1007. package/packages/utils/src/scaledImage.ts +24 -24
  1008. package/packages/utils/src/sizes.1080.ts +1 -1
  1009. package/packages/utils/src/sizes.ts +1 -1
  1010. package/packages/utils/src/stopEvent.ts +10 -10
  1011. package/packages/utils/src/textUtils.ts +57 -57
  1012. package/packages/utils/src/timeConstants.ts +11 -11
  1013. package/packages/utils/src/timers/createInterval.ts +19 -19
  1014. package/packages/utils/src/timers/createTimeout.ts +22 -22
  1015. package/packages/utils/src/timers/index.ts +4 -4
  1016. package/packages/utils/src/timers/runAsync.ts +3 -3
  1017. package/packages/utils/src/timers/types.ts +9 -9
  1018. package/packages/utils/src/wait.ts +3 -3
  1019. package/packages/utils/src/xhr/__mocks__/xhr.ts +29 -29
  1020. package/packages/utils/src/xhr/index.ts +11 -11
  1021. package/packages/utils/src/xhr/xhrSend.ts +141 -141
  1022. package/packages/utils/src/xhr/xhrSendRetry.ts +79 -79
  1023. package/packages/volume-control/README.md +79 -79
  1024. package/packages/volume-control/src/IVolumeControlUI.ts +26 -26
  1025. package/packages/volume-control/src/VolumeControlService.tsx +110 -110
  1026. package/packages/volume-control/src/VolumeControlUI/VisualController.animated.ts +28 -28
  1027. package/packages/volume-control/src/VolumeControlUI/VisualController.ts +3 -3
  1028. package/packages/volume-control/src/VolumeControlUI/VisualControllerBase.ts +26 -26
  1029. package/packages/volume-control/src/VolumeControlUI/VolumeControl.scss +18 -18
  1030. package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.animated.scss +2 -2
  1031. package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.scss +1 -1
  1032. package/packages/volume-control/src/VolumeControlUI/VolumeControlUI.tsx +80 -80
  1033. package/packages/volume-control/src/VolumeControlUI/_animated.scss +8 -8
  1034. package/packages/volume-control/src/VolumeControlUI/index.ts +1 -1
  1035. package/packages/volume-control/src/__mocks__/VolumeControlUIMock.tsx +22 -22
  1036. package/packages/volume-control/src/index.ts +2 -2
  1037. package/packages/zapping/README.md +87 -87
  1038. package/packages/zapping/src/ChannelZapping.ts +143 -143
  1039. package/packages/zapping/src/Zapping.tsx +115 -115
  1040. package/packages/zapping/src/index.ts +1 -1
  1041. package/packages/zapping/src/interface.ts +1 -1
  1042. package/utils/create-export-maps/index.ts +3 -3
  1043. package/utils/create-export-maps/src/__tests__/createExportMaps.spec.ts +50 -50
  1044. package/utils/create-export-maps/src/createExportMaps.ts +61 -61
  1045. package/utils/create-package/README.md +39 -39
  1046. package/utils/create-package/src/createPackage.ts +72 -72
  1047. package/utils/create-package/src/index.ts +3 -3
  1048. package/utils/create-package/src/questionnaire/questions.ts +19 -19
  1049. package/utils/create-package/src/settings/Settings.ts +5 -5
  1050. package/utils/create-package/src/types.ts +4 -4
  1051. package/utils/create-package/templates/typescript/README.md +8 -8
  1052. package/utils/create-package/templates/typescript/exports.json +6 -6
  1053. package/utils/run-scripts/index.ts +3 -3
  1054. package/utils/run-scripts/src/__tests__/runScripts.spec.ts +45 -45
  1055. package/utils/run-scripts/src/runScripts.ts +20 -20
@@ -1,555 +1,555 @@
1
- import { AnimationUtils, JSAnimations } from '@24i/bigscreen-sdk/animations';
2
- import { forEach } from '@24i/bigscreen-sdk/perf-utils/array';
3
- import { offsetPosition } from '@24i/bigscreen-sdk/utils/offsetPosition';
4
- import {
5
- configureAnimation,
6
- getOffsetObject,
7
- prepareAnimatedGroups,
8
- scrollPixelsToIndexBackward,
9
- scrollPixelsToIndexForward,
10
- } from '../utils';
11
- import { AnimationConfiguration, GroupInfo } from '../types';
12
- import {
13
- ControllableGrid,
14
- GridConfig,
15
- UnifiedGridController as IUnifiedGridController,
16
- } from './interface';
17
-
18
- /**
19
- * Number of rendered items above visibleItems (half on each side of the list)
20
- * that could become visible during fast scroll animation
21
- * If needed to be changed, keep it even
22
- */
23
- const LIMIT_EXTRA = 2;
24
-
25
- export class UnifiedGridController<T> implements IUnifiedGridController<T> {
26
- /**
27
- * Grid that is controlled by this controller
28
- */
29
- protected grid: ControllableGrid;
30
-
31
- /**
32
- * Controls scroll animation that triggers position in px, on every frame.
33
- */
34
- private readonly animations = new JSAnimations();
35
-
36
- /**
37
- * Defines timelines/speeds configuration for scroll animation.
38
- */
39
- private readonly animationConfiguration: AnimationConfiguration;
40
-
41
- /**
42
- * The scroll index being captured on every animation frame. Derived from
43
- * scroll position. It can differ to `scrollIndex` during animation run.
44
- */
45
- protected lastAnimationScrollIndex = 0;
46
-
47
- /**
48
- * Optimization to avoid unnecessary group adjustments if scrollIndex remains the same.
49
- * It can differ to `scrollIndex` during animation run.
50
- */
51
- protected lastScrollIndex = 0;
52
-
53
- /**
54
- * The number of pixels, that grid content is starting scroll animation at
55
- * (from its left edge (LTR layout)).
56
- */
57
- private fromPx = 0;
58
-
59
- /**
60
- * The number of pixels, that grid content is ending scroll animation at
61
- * (from its left edge (LTR layout)).
62
- */
63
- private toPx = 0;
64
-
65
- /**
66
- * The current value represents grid scroll in pixels
67
- * Initial value is 0, if its different, please set before first scroll
68
- */
69
- protected currentScrollPx = 0;
70
-
71
- /**
72
- * Number which determines, when linear scroll switch start or end. Number should be
73
- * size of one item (scrollStep), or average item size in case of multiple sizes
74
- */
75
- protected fastLinearScrollThreshold = 0;
76
-
77
- /**
78
- * Flag, if list scrolling is currently fast linear
79
- */
80
- protected isFastLinearScroll = false;
81
-
82
- /**
83
- * Maximum scroll length for determine if list can scroll further.
84
- * If the value is 0, scroll is not limited
85
- */
86
- protected maxAllowedScrollLength = 0;
87
-
88
- /**
89
- * The first number where the list is scrolled on the start. The default value is NaN
90
- * because it is assigned during the first scrolling.
91
- */
92
- protected initialScrollPx = NaN;
93
-
94
- /**
95
- * Flag, if list focus optimizing is running (when full fast focus optimization is disabled)
96
- */
97
- protected focusOptimizing = false;
98
-
99
- /* Last focused index when grid is fully scrolled and forwardGroup/backwardGroup
100
- * was not processed, but animation has not finished yet
101
- */
102
- protected lastFocusOnNotProcessed = -1;
103
-
104
- /**
105
- * Number of pixels for offsetting (cycle-shifting) rendered groups
106
- */
107
- protected groupOffsetStepPx = 0;
108
-
109
- /**
110
- * Number of rendered groups above visibleGroups
111
- */
112
- protected limitExtra = 0;
113
-
114
- /**
115
- * Moving below 0 by a half of LIMIT_EXTRA and 2 for index/length diff and 1 partially visible
116
- */
117
- protected leftBoundary = 0;
118
-
119
- /**
120
- * Moving above highest index by a half of LIMIT_EXTRA and 1 for partially visible
121
- * index/length diff of 1 is not needed here
122
- */
123
- protected rightBoundary = 0;
124
-
125
- /**
126
- * Array of groups that are pre-processed for animation arrangement
127
- */
128
- groups: GroupInfo[] = [];
129
-
130
- /**
131
- * The number of index that a group's list is scrolled from its left edge.
132
- * The zero, it is scrolled at the most left side, then increase index by 1
133
- * on every scroll towards the end of content
134
- */
135
- scrollIndex = 0;
136
-
137
- /**
138
- * Number of groups that are being rendered in DOM. It represents the number
139
- * of visible groups + extra edge items
140
- */
141
- groupsCount = 0;
142
-
143
- constructor(grid: ControllableGrid, CONFIG: GridConfig) {
144
- this.grid = grid;
145
- this.animationConfiguration = this.grid.props.animation ? configureAnimation(
146
- CONFIG.defaultAnimation, this.grid.props.animation,
147
- ) : CONFIG.defaultAnimation;
148
- const { scrollStep, visibleRows, visibleColumns } = this.grid.props;
149
- const visibleGroups = visibleColumns || visibleRows || 0;
150
- const { slowdownRatio = 0 } = this.animationConfiguration;
151
- this.fastLinearScrollThreshold = scrollStep;
152
- this.limitExtra = LIMIT_EXTRA;
153
- this.leftBoundary = -(this.limitExtra / 2) - 1;
154
- this.rightBoundary = -(this.limitExtra / 2) + 1;
155
- this.groupsCount = visibleGroups + this.limitExtra;
156
- this.groupOffsetStepPx = this.groupsCount * scrollStep;
157
- this.maxAllowedScrollLength = scrollStep * (
158
- visibleRows || visibleColumns || 0
159
- ) * slowdownRatio;
160
- }
161
-
162
- componentDidMount() {
163
- const grid = this.grid.base.current!;
164
- this.groups = prepareAnimatedGroups(grid);
165
- this.addScrollWrapFocusEvent();
166
- }
167
-
168
- componentWillUnmount() {
169
- this.removeScrollWrapFocusEvent();
170
- }
171
-
172
- addScrollWrapFocusEvent() {
173
- this.grid.base.current!.scroller.current!.wrapRef.current!
174
- .addEventListener('focus', this.onFocusWrapper);
175
- }
176
-
177
- removeScrollWrapFocusEvent() {
178
- this.grid.base.current!.scroller.current!.wrapRef.current!
179
- .removeEventListener('focus', this.onFocusWrapper);
180
- }
181
-
182
- private readonly onFocusWrapper = () => {
183
- this.focusCurrentItem();
184
- };
185
-
186
- private readonly onFrame = (value: number) => {
187
- const { scrollToPx, backward, canScroll } = this.getNextScrollConfig(value);
188
- if (!canScroll) return;
189
- if (this.shouldReturnNormalAnimation(value)) {
190
- const { normal } = this.animationConfiguration;
191
- this.animations
192
- .start(value, this.toPx, normal.time, normal.easing)
193
- .onFrame(this.onFrame);
194
- return;
195
- }
196
- const { base, props: { animate } } = this.grid;
197
- if (animate && scrollToPx === this.toPx) {
198
- base.current!.animatedScrollFinished();
199
- }
200
- this.adjustGroupsOffsetsOnFrame(scrollToPx, backward);
201
- this.handleOnScrollChanged(scrollToPx, backward);
202
- this.scrollGridScroller(scrollToPx);
203
- if (this.isScrollWrapFocused()) {
204
- this.focusCurrentItem();
205
- }
206
- };
207
-
208
- forward = () => {
209
- const { continuousFocus } = this.grid.props;
210
- const base = this.grid.base.current!;
211
- const itemsInGroup = base.getItemsInGroup();
212
- const isLastInGroup = (base.index % itemsInGroup) + 1 === itemsInGroup;
213
- if (base.index < base.data.length - 1 && (!isLastInGroup || continuousFocus)) {
214
- base.index += 1;
215
- if (isLastInGroup) this.grid.scrollForward();
216
- this.focusCurrentItem();
217
- return true;
218
- }
219
- return false;
220
- };
221
-
222
- backward = () => {
223
- const { continuousFocus } = this.grid.props;
224
- const base = this.grid.base.current!;
225
- const itemsInGroup = base.getItemsInGroup();
226
- const isFirstInGroup = (base.index % itemsInGroup) === 0;
227
- if (base.index > 0 && (!isFirstInGroup || continuousFocus)) {
228
- base.index -= 1;
229
- if (isFirstInGroup) this.grid.scrollBackward();
230
- this.focusCurrentItem();
231
- return true;
232
- }
233
- return false;
234
- };
235
-
236
- forwardGroup = () => {
237
- const base = this.grid.base.current!;
238
- const itemsInGroup = base.getItemsInGroup();
239
- if (base.index < this.getMaxGroupIndex() * itemsInGroup) {
240
- base.index += Math.min(base.data.length - base.index - 1, itemsInGroup);
241
- this.grid.scrollForward();
242
- this.focusCurrentItem();
243
- return true;
244
- }
245
- return false;
246
- };
247
-
248
- backwardGroup = () => {
249
- const base = this.grid.base.current!;
250
- const itemsInGroup = base.getItemsInGroup();
251
- if (base.index >= itemsInGroup) {
252
- base.index -= Math.min(base.index, itemsInGroup);
253
- this.grid.scrollBackward();
254
- this.focusCurrentItem();
255
- return true;
256
- }
257
- return false;
258
- };
259
-
260
- shouldApplySlowdown = () => (this.maxAllowedScrollLength
261
- ? Math.abs(this.currentScrollPx - this.toPx) > this.maxAllowedScrollLength : false);
262
-
263
- getMaxGroupIndex() {
264
- const base = this.grid.base.current!;
265
- const itemsInGroup = base.getItemsInGroup();
266
- return Math.floor((base.data.length - 1) / itemsInGroup);
267
- }
268
-
269
- focusCurrentItem(options?: FocusOptions) {
270
- const { props: { onFocusChanged } } = this.grid;
271
- const base = this.grid.base.current!;
272
- const index = this.getCurrentIndexInRefIndex();
273
- const isFastFocusing = base.fastFocusingOptimizer.isRunning();
274
- this.lastFocusOnNotProcessed = -1;
275
- if (index === -1 || isFastFocusing) {
276
- if (!this.isScrollWrapFocused()) {
277
- this.focusScrollWrap();
278
- }
279
- if (index === -1
280
- && !isFastFocusing
281
- && !base.fastFocusingOptimizer.enabled) {
282
- base.fastFocusingOptimizer.enabled = true;
283
- this.focusOptimizing = true;
284
- }
285
- return;
286
- }
287
- if (this.focusOptimizing) {
288
- this.focusOptimizing = false;
289
- base.fastFocusingOptimizer.enabled = false;
290
- }
291
- const item = base.itemRefs[index];
292
- if (!item) return;
293
- item.current!.focus(options || { preventScroll: true });
294
- onFocusChanged!(item, base.index);
295
- }
296
-
297
- focusToIndex(dataIndex: number, animate = false) {
298
- const { grid } = this;
299
- const base = grid.base.current!;
300
- const targetScrollIndex = this.itemIndexToScrollIndex(dataIndex);
301
- if (targetScrollIndex > this.scrollIndex) {
302
- this.adjustGroupsOffsetsForward(targetScrollIndex);
303
- } else if (targetScrollIndex < this.scrollIndex) {
304
- this.adjustGroupsOffsetsBackward(targetScrollIndex);
305
- }
306
- if (targetScrollIndex !== this.scrollIndex) {
307
- this.scroll(targetScrollIndex, animate);
308
- }
309
- base.index = dataIndex;
310
- this.focusCurrentItem();
311
- base.mrcuRef.current?.handleArrowState();
312
- }
313
-
314
- protected focusScrollWrap() {
315
- this.grid.base.current!.scroller.current!.wrapRef.current!
316
- .focus({ preventScroll: true });
317
- }
318
-
319
- protected isScrollWrapFocused() {
320
- return this.grid.base.current!.scroller.current!.wrapRef.current === document.activeElement;
321
- }
322
-
323
- scroll(newScrollIndex: number, animate: boolean | undefined = this.grid.props.animate) {
324
- if (newScrollIndex === this.scrollIndex) return;
325
- if (Number.isNaN(this.initialScrollPx)) this.initialScrollPx = this.currentScrollPx;
326
- this.fromPx = this.currentScrollPx;
327
- this.toPx = this.scrollIndexToPixels(newScrollIndex);
328
- if (animate) {
329
- const { time, easing } = this.getEasingAndTime();
330
- const { base } = this.grid;
331
- base.current!.animatedScrollStarted();
332
- this.animations
333
- .start(this.fromPx, this.toPx, time, easing)
334
- .onFrame(this.onFrame);
335
- } else {
336
- this.onFrame(this.toPx);
337
- }
338
- this.scrollIndex = newScrollIndex;
339
- }
340
-
341
- scrollGridScroller(scrollValuePx: number) {
342
- this.grid.base.current!.scroller.current!.scroll(scrollValuePx);
343
- this.currentScrollPx = scrollValuePx;
344
- }
345
-
346
- handleOnScrollChanged(scrollToPx: number, backward: boolean) {
347
- const { onScrollChanged } = this.grid.props;
348
- if (typeof onScrollChanged !== 'function') return;
349
- const scrollFromStart = Math.abs(scrollToPx - this.initialScrollPx);
350
- const scrollIndex = this.scrollPixelsToIndex(scrollFromStart, backward);
351
- if (this.lastAnimationScrollIndex !== scrollIndex) {
352
- const { base: { current: base } } = this.grid;
353
- const itemsInGroup = base!.getItemsInGroup();
354
- const indexOffset = Math.floor(base!.index / itemsInGroup) * itemsInGroup;
355
- const indexInCurrentGroup = base!.index - indexOffset;
356
- const indexInScrolledGroup = scrollIndex * itemsInGroup + indexInCurrentGroup;
357
- const item = this.grid.base.current?.getRefAtDataIndex(indexInScrolledGroup);
358
- this.lastAnimationScrollIndex = scrollIndex;
359
- onScrollChanged(item!, scrollIndex);
360
- }
361
- }
362
-
363
- protected getNextScrollConfig(valueToScrollToPx: number) {
364
- const { currentScrollPx } = this;
365
- const valueRounded = Math.round(valueToScrollToPx);
366
- const backward = valueRounded < currentScrollPx;
367
- const canScroll = valueRounded !== currentScrollPx;
368
- return {
369
- scrollToPx: valueRounded,
370
- backward,
371
- canScroll,
372
- };
373
- }
374
-
375
- protected shouldReturnNormalAnimation(currentValue: number) {
376
- if (!this.isFastLinearScroll) return false;
377
- const { endRatio } = this.animationConfiguration.fastLinear!;
378
- if (endRatio) {
379
- const scrollLength = Math.abs(currentValue - this.toPx);
380
- if (scrollLength < (this.fastLinearScrollThreshold * endRatio)) {
381
- this.isFastLinearScroll = false;
382
- return true;
383
- }
384
- } else if (currentValue === this.toPx) {
385
- this.isFastLinearScroll = false;
386
- }
387
- return false;
388
- }
389
-
390
- protected getEasingAndTime() {
391
- const { normal, fastLinear } = this.animationConfiguration;
392
- if (!fastLinear) return normal;
393
- const scrollLength = Math.abs(this.fromPx - this.toPx);
394
- const { startRatio, time } = fastLinear;
395
- if (scrollLength > this.fastLinearScrollThreshold * startRatio) {
396
- this.isFastLinearScroll = true;
397
- return {
398
- easing: AnimationUtils.linear,
399
- time,
400
- };
401
- }
402
- this.isFastLinearScroll = false;
403
- return normal;
404
- }
405
-
406
- /**
407
- * Function will return index to item references in actual rendered items
408
- * based on current grid index. If the current index is out of range, -1 is returned.
409
- * @return {number} index of rendered item matching current list index
410
- */
411
- private readonly getCurrentIndexInRefIndex = () => {
412
- const { groups } = this;
413
- const base = this.grid.base.current!;
414
- const currentIndex = base.index;
415
- const itemsInGroup = base.getItemsInGroup();
416
- const currentDataIndex = Math.floor(currentIndex / itemsInGroup);
417
- const groupIndex = currentDataIndex % groups.length;
418
- const groupDataIndex = currentDataIndex * itemsInGroup;
419
- if (groupDataIndex === groups[groupIndex]?.dataIndex) {
420
- return currentIndex % base.itemRefs.length;
421
- }
422
- return -1;
423
- };
424
-
425
- itemIndexToScrollIndex(itemIndex: number) {
426
- const itemsInGroup = this.grid.base.current!.getItemsInGroup();
427
- return Math.floor(itemIndex / itemsInGroup);
428
- }
429
-
430
- adjustGroupsOffsetsOnFrame(scrollValuePx: number, backward = false) {
431
- let nextScrollIndex;
432
- if (backward) {
433
- nextScrollIndex = this.scrollPixelsToIndex(scrollValuePx, backward);
434
- if (this.lastScrollIndex !== nextScrollIndex) {
435
- this.adjustGroupsOffsetsBackward(nextScrollIndex);
436
- }
437
- } else {
438
- nextScrollIndex = this.scrollPixelsToIndex(scrollValuePx, backward);
439
- if (this.lastScrollIndex !== nextScrollIndex) {
440
- this.adjustGroupsOffsetsForward(nextScrollIndex);
441
- }
442
- }
443
- this.lastScrollIndex = nextScrollIndex;
444
- }
445
-
446
- adjustGroupsOffsetsForward(scrollIndex: number) {
447
- const {
448
- base: { current: base },
449
- } = this.grid;
450
- const { groupsCount, groupOffsetStepPx, groups } = this;
451
- const itemsInGroup = base!.getItemsInGroup();
452
- const dataOffsetStep = groupsCount * itemsInGroup;
453
- forEach(groups, (group, index) => {
454
- if (!this.shouldGroupRotateForward(group, scrollIndex)) return;
455
- group.dataIndex += dataOffsetStep;
456
- group.offset += groupOffsetStepPx;
457
- this.updateItemsInGroup(group, index * itemsInGroup);
458
- });
459
- }
460
-
461
- adjustGroupsOffsetsBackward(scrollIndex: number) {
462
- const {
463
- base: { current: base },
464
- } = this.grid;
465
- const { groupsCount, groupOffsetStepPx, groups } = this;
466
- const itemsInGroup = base!.getItemsInGroup();
467
- const dataOffsetStep = groupsCount * itemsInGroup;
468
- forEach(groups, (group, index) => {
469
- if (!this.shouldGroupRotateBackward(group, scrollIndex)) return;
470
- group.dataIndex -= dataOffsetStep;
471
- group.offset -= groupOffsetStepPx;
472
- this.updateItemsInGroup(group, index * itemsInGroup);
473
- });
474
- }
475
-
476
- protected shouldGroupRotateForward(group: GroupInfo, scrollIndex: number) {
477
- const { base: { current: base } } = this.grid;
478
- const itemsInGroup = base!.getItemsInGroup();
479
- return group.dataIndex / itemsInGroup - scrollIndex < this.leftBoundary;
480
- }
481
-
482
- protected shouldGroupRotateBackward(group: GroupInfo, scrollIndex: number) {
483
- const { base: { current: base } } = this.grid;
484
- const itemsInGroup = base!.getItemsInGroup();
485
- const visibleItems = base!.getVisibleGroups();
486
- return group.dataIndex / itemsInGroup + this.rightBoundary > scrollIndex + visibleItems;
487
- }
488
-
489
- private updateItemsInGroup(group: GroupInfo, startItemIndex: number) {
490
- const { base: { current: base }, props: { horizontal } } = this.grid;
491
- const itemsInGroup = base!.getItemsInGroup();
492
- for (let i = 0; i < itemsInGroup; i++) {
493
- // group.dataIndex + i - (startItemIndex + i) explaining ↓
494
- base!.updateItem(startItemIndex + i, group.dataIndex - startItemIndex);
495
- }
496
- offsetPosition(group.element, getOffsetObject(horizontal, group.offset));
497
- }
498
-
499
- scrollIndexToPixels(index: number) {
500
- if (index === 0) return 0;
501
- const { firstScrollStep, scrollStep } = this.grid.props;
502
- if (typeof firstScrollStep === 'undefined') {
503
- return scrollStep * index;
504
- }
505
- if (index === 1) return firstScrollStep;
506
- return (index - 1) * scrollStep + firstScrollStep;
507
- }
508
-
509
- scrollPixelsToIndex(scrollValuePx: number, backward: boolean) {
510
- const { scrollStep, firstScrollStep } = this.grid.props;
511
- if (backward) {
512
- return scrollPixelsToIndexBackward(scrollValuePx, scrollStep, firstScrollStep);
513
- }
514
- return scrollPixelsToIndexForward(scrollValuePx, scrollStep, firstScrollStep);
515
- }
516
-
517
- appendData(data: T[]) {
518
- const base = this.grid.base.current!;
519
- base.appendData(data);
520
- if (this.groups.length < this.groupsCount) {
521
- this.groups = prepareAnimatedGroups(base);
522
- }
523
- const itemsInGroup = base.getItemsInGroup();
524
- forEach(this.groups, (group, index) => {
525
- this.updateItemsInGroup(group, index * itemsInGroup);
526
- });
527
- base.mrcuRef.current?.handleArrowState();
528
- }
529
-
530
- prependData(data: T[]) {
531
- const { scrollStep } = this.grid.props;
532
- const base = this.grid.base.current!;
533
- base.prependData(data);
534
- if (this.groups.length < this.groupsCount) {
535
- this.groups = prepareAnimatedGroups(base);
536
- }
537
- const dataLength = data.length;
538
- base.index += dataLength;
539
- const itemsInGroup = base.getItemsInGroup();
540
- const prependedGroups = Math.floor(dataLength / itemsInGroup);
541
- const offsetIndex = prependedGroups * itemsInGroup;
542
- const offsetDiff = prependedGroups * scrollStep;
543
- forEach(this.groups, (group, index) => {
544
- group.dataIndex += offsetIndex;
545
- group.offset += offsetDiff;
546
- this.updateItemsInGroup(group, index * itemsInGroup);
547
- });
548
- this.scrollIndex += prependedGroups;
549
- this.scrollGridScroller(
550
- this.scrollIndexToPixels(this.scrollIndex),
551
- );
552
- this.focusCurrentItem();
553
- base.mrcuRef.current?.handleArrowState();
554
- }
555
- }
1
+ import { AnimationUtils, JSAnimations } from '@24i/bigscreen-sdk/animations';
2
+ import { forEach } from '@24i/bigscreen-sdk/perf-utils/array';
3
+ import { offsetPosition } from '@24i/bigscreen-sdk/utils/offsetPosition';
4
+ import {
5
+ configureAnimation,
6
+ getOffsetObject,
7
+ prepareAnimatedGroups,
8
+ scrollPixelsToIndexBackward,
9
+ scrollPixelsToIndexForward,
10
+ } from '../utils';
11
+ import { AnimationConfiguration, GroupInfo } from '../types';
12
+ import {
13
+ ControllableGrid,
14
+ GridConfig,
15
+ UnifiedGridController as IUnifiedGridController,
16
+ } from './interface';
17
+
18
+ /**
19
+ * Number of rendered items above visibleItems (half on each side of the list)
20
+ * that could become visible during fast scroll animation
21
+ * If needed to be changed, keep it even
22
+ */
23
+ const LIMIT_EXTRA = 2;
24
+
25
+ export class UnifiedGridController<T> implements IUnifiedGridController<T> {
26
+ /**
27
+ * Grid that is controlled by this controller
28
+ */
29
+ protected grid: ControllableGrid;
30
+
31
+ /**
32
+ * Controls scroll animation that triggers position in px, on every frame.
33
+ */
34
+ private readonly animations = new JSAnimations();
35
+
36
+ /**
37
+ * Defines timelines/speeds configuration for scroll animation.
38
+ */
39
+ private readonly animationConfiguration: AnimationConfiguration;
40
+
41
+ /**
42
+ * The scroll index being captured on every animation frame. Derived from
43
+ * scroll position. It can differ to `scrollIndex` during animation run.
44
+ */
45
+ protected lastAnimationScrollIndex = 0;
46
+
47
+ /**
48
+ * Optimization to avoid unnecessary group adjustments if scrollIndex remains the same.
49
+ * It can differ to `scrollIndex` during animation run.
50
+ */
51
+ protected lastScrollIndex = 0;
52
+
53
+ /**
54
+ * The number of pixels, that grid content is starting scroll animation at
55
+ * (from its left edge (LTR layout)).
56
+ */
57
+ private fromPx = 0;
58
+
59
+ /**
60
+ * The number of pixels, that grid content is ending scroll animation at
61
+ * (from its left edge (LTR layout)).
62
+ */
63
+ private toPx = 0;
64
+
65
+ /**
66
+ * The current value represents grid scroll in pixels
67
+ * Initial value is 0, if its different, please set before first scroll
68
+ */
69
+ protected currentScrollPx = 0;
70
+
71
+ /**
72
+ * Number which determines, when linear scroll switch start or end. Number should be
73
+ * size of one item (scrollStep), or average item size in case of multiple sizes
74
+ */
75
+ protected fastLinearScrollThreshold = 0;
76
+
77
+ /**
78
+ * Flag, if list scrolling is currently fast linear
79
+ */
80
+ protected isFastLinearScroll = false;
81
+
82
+ /**
83
+ * Maximum scroll length for determine if list can scroll further.
84
+ * If the value is 0, scroll is not limited
85
+ */
86
+ protected maxAllowedScrollLength = 0;
87
+
88
+ /**
89
+ * The first number where the list is scrolled on the start. The default value is NaN
90
+ * because it is assigned during the first scrolling.
91
+ */
92
+ protected initialScrollPx = NaN;
93
+
94
+ /**
95
+ * Flag, if list focus optimizing is running (when full fast focus optimization is disabled)
96
+ */
97
+ protected focusOptimizing = false;
98
+
99
+ /* Last focused index when grid is fully scrolled and forwardGroup/backwardGroup
100
+ * was not processed, but animation has not finished yet
101
+ */
102
+ protected lastFocusOnNotProcessed = -1;
103
+
104
+ /**
105
+ * Number of pixels for offsetting (cycle-shifting) rendered groups
106
+ */
107
+ protected groupOffsetStepPx = 0;
108
+
109
+ /**
110
+ * Number of rendered groups above visibleGroups
111
+ */
112
+ protected limitExtra = 0;
113
+
114
+ /**
115
+ * Moving below 0 by a half of LIMIT_EXTRA and 2 for index/length diff and 1 partially visible
116
+ */
117
+ protected leftBoundary = 0;
118
+
119
+ /**
120
+ * Moving above highest index by a half of LIMIT_EXTRA and 1 for partially visible
121
+ * index/length diff of 1 is not needed here
122
+ */
123
+ protected rightBoundary = 0;
124
+
125
+ /**
126
+ * Array of groups that are pre-processed for animation arrangement
127
+ */
128
+ groups: GroupInfo[] = [];
129
+
130
+ /**
131
+ * The number of index that a group's list is scrolled from its left edge.
132
+ * The zero, it is scrolled at the most left side, then increase index by 1
133
+ * on every scroll towards the end of content
134
+ */
135
+ scrollIndex = 0;
136
+
137
+ /**
138
+ * Number of groups that are being rendered in DOM. It represents the number
139
+ * of visible groups + extra edge items
140
+ */
141
+ groupsCount = 0;
142
+
143
+ constructor(grid: ControllableGrid, CONFIG: GridConfig) {
144
+ this.grid = grid;
145
+ this.animationConfiguration = this.grid.props.animation ? configureAnimation(
146
+ CONFIG.defaultAnimation, this.grid.props.animation,
147
+ ) : CONFIG.defaultAnimation;
148
+ const { scrollStep, visibleRows, visibleColumns } = this.grid.props;
149
+ const visibleGroups = visibleColumns || visibleRows || 0;
150
+ const { slowdownRatio = 0 } = this.animationConfiguration;
151
+ this.fastLinearScrollThreshold = scrollStep;
152
+ this.limitExtra = LIMIT_EXTRA;
153
+ this.leftBoundary = -(this.limitExtra / 2) - 1;
154
+ this.rightBoundary = -(this.limitExtra / 2) + 1;
155
+ this.groupsCount = visibleGroups + this.limitExtra;
156
+ this.groupOffsetStepPx = this.groupsCount * scrollStep;
157
+ this.maxAllowedScrollLength = scrollStep * (
158
+ visibleRows || visibleColumns || 0
159
+ ) * slowdownRatio;
160
+ }
161
+
162
+ componentDidMount() {
163
+ const grid = this.grid.base.current!;
164
+ this.groups = prepareAnimatedGroups(grid);
165
+ this.addScrollWrapFocusEvent();
166
+ }
167
+
168
+ componentWillUnmount() {
169
+ this.removeScrollWrapFocusEvent();
170
+ }
171
+
172
+ addScrollWrapFocusEvent() {
173
+ this.grid.base.current!.scroller.current!.wrapRef.current!
174
+ .addEventListener('focus', this.onFocusWrapper);
175
+ }
176
+
177
+ removeScrollWrapFocusEvent() {
178
+ this.grid.base.current!.scroller.current!.wrapRef.current!
179
+ .removeEventListener('focus', this.onFocusWrapper);
180
+ }
181
+
182
+ private readonly onFocusWrapper = () => {
183
+ this.focusCurrentItem();
184
+ };
185
+
186
+ private readonly onFrame = (value: number) => {
187
+ const { scrollToPx, backward, canScroll } = this.getNextScrollConfig(value);
188
+ if (!canScroll) return;
189
+ if (this.shouldReturnNormalAnimation(value)) {
190
+ const { normal } = this.animationConfiguration;
191
+ this.animations
192
+ .start(value, this.toPx, normal.time, normal.easing)
193
+ .onFrame(this.onFrame);
194
+ return;
195
+ }
196
+ const { base, props: { animate } } = this.grid;
197
+ if (animate && scrollToPx === this.toPx) {
198
+ base.current!.animatedScrollFinished();
199
+ }
200
+ this.adjustGroupsOffsetsOnFrame(scrollToPx, backward);
201
+ this.handleOnScrollChanged(scrollToPx, backward);
202
+ this.scrollGridScroller(scrollToPx);
203
+ if (this.isScrollWrapFocused()) {
204
+ this.focusCurrentItem();
205
+ }
206
+ };
207
+
208
+ forward = () => {
209
+ const { continuousFocus } = this.grid.props;
210
+ const base = this.grid.base.current!;
211
+ const itemsInGroup = base.getItemsInGroup();
212
+ const isLastInGroup = (base.index % itemsInGroup) + 1 === itemsInGroup;
213
+ if (base.index < base.data.length - 1 && (!isLastInGroup || continuousFocus)) {
214
+ base.index += 1;
215
+ if (isLastInGroup) this.grid.scrollForward();
216
+ this.focusCurrentItem();
217
+ return true;
218
+ }
219
+ return false;
220
+ };
221
+
222
+ backward = () => {
223
+ const { continuousFocus } = this.grid.props;
224
+ const base = this.grid.base.current!;
225
+ const itemsInGroup = base.getItemsInGroup();
226
+ const isFirstInGroup = (base.index % itemsInGroup) === 0;
227
+ if (base.index > 0 && (!isFirstInGroup || continuousFocus)) {
228
+ base.index -= 1;
229
+ if (isFirstInGroup) this.grid.scrollBackward();
230
+ this.focusCurrentItem();
231
+ return true;
232
+ }
233
+ return false;
234
+ };
235
+
236
+ forwardGroup = () => {
237
+ const base = this.grid.base.current!;
238
+ const itemsInGroup = base.getItemsInGroup();
239
+ if (base.index < this.getMaxGroupIndex() * itemsInGroup) {
240
+ base.index += Math.min(base.data.length - base.index - 1, itemsInGroup);
241
+ this.grid.scrollForward();
242
+ this.focusCurrentItem();
243
+ return true;
244
+ }
245
+ return false;
246
+ };
247
+
248
+ backwardGroup = () => {
249
+ const base = this.grid.base.current!;
250
+ const itemsInGroup = base.getItemsInGroup();
251
+ if (base.index >= itemsInGroup) {
252
+ base.index -= Math.min(base.index, itemsInGroup);
253
+ this.grid.scrollBackward();
254
+ this.focusCurrentItem();
255
+ return true;
256
+ }
257
+ return false;
258
+ };
259
+
260
+ shouldApplySlowdown = () => (this.maxAllowedScrollLength
261
+ ? Math.abs(this.currentScrollPx - this.toPx) > this.maxAllowedScrollLength : false);
262
+
263
+ getMaxGroupIndex() {
264
+ const base = this.grid.base.current!;
265
+ const itemsInGroup = base.getItemsInGroup();
266
+ return Math.floor((base.data.length - 1) / itemsInGroup);
267
+ }
268
+
269
+ focusCurrentItem(options?: FocusOptions) {
270
+ const { props: { onFocusChanged } } = this.grid;
271
+ const base = this.grid.base.current!;
272
+ const index = this.getCurrentIndexInRefIndex();
273
+ const isFastFocusing = base.fastFocusingOptimizer.isRunning();
274
+ this.lastFocusOnNotProcessed = -1;
275
+ if (index === -1 || isFastFocusing) {
276
+ if (!this.isScrollWrapFocused()) {
277
+ this.focusScrollWrap();
278
+ }
279
+ if (index === -1
280
+ && !isFastFocusing
281
+ && !base.fastFocusingOptimizer.enabled) {
282
+ base.fastFocusingOptimizer.enabled = true;
283
+ this.focusOptimizing = true;
284
+ }
285
+ return;
286
+ }
287
+ if (this.focusOptimizing) {
288
+ this.focusOptimizing = false;
289
+ base.fastFocusingOptimizer.enabled = false;
290
+ }
291
+ const item = base.itemRefs[index];
292
+ if (!item) return;
293
+ item.current!.focus(options || { preventScroll: true });
294
+ onFocusChanged!(item, base.index);
295
+ }
296
+
297
+ focusToIndex(dataIndex: number, animate = false) {
298
+ const { grid } = this;
299
+ const base = grid.base.current!;
300
+ const targetScrollIndex = this.itemIndexToScrollIndex(dataIndex);
301
+ if (targetScrollIndex > this.scrollIndex) {
302
+ this.adjustGroupsOffsetsForward(targetScrollIndex);
303
+ } else if (targetScrollIndex < this.scrollIndex) {
304
+ this.adjustGroupsOffsetsBackward(targetScrollIndex);
305
+ }
306
+ if (targetScrollIndex !== this.scrollIndex) {
307
+ this.scroll(targetScrollIndex, animate);
308
+ }
309
+ base.index = dataIndex;
310
+ this.focusCurrentItem();
311
+ base.mrcuRef.current?.handleArrowState();
312
+ }
313
+
314
+ protected focusScrollWrap() {
315
+ this.grid.base.current!.scroller.current!.wrapRef.current!
316
+ .focus({ preventScroll: true });
317
+ }
318
+
319
+ protected isScrollWrapFocused() {
320
+ return this.grid.base.current!.scroller.current!.wrapRef.current === document.activeElement;
321
+ }
322
+
323
+ scroll(newScrollIndex: number, animate: boolean | undefined = this.grid.props.animate) {
324
+ if (newScrollIndex === this.scrollIndex) return;
325
+ if (Number.isNaN(this.initialScrollPx)) this.initialScrollPx = this.currentScrollPx;
326
+ this.fromPx = this.currentScrollPx;
327
+ this.toPx = this.scrollIndexToPixels(newScrollIndex);
328
+ if (animate) {
329
+ const { time, easing } = this.getEasingAndTime();
330
+ const { base } = this.grid;
331
+ base.current!.animatedScrollStarted();
332
+ this.animations
333
+ .start(this.fromPx, this.toPx, time, easing)
334
+ .onFrame(this.onFrame);
335
+ } else {
336
+ this.onFrame(this.toPx);
337
+ }
338
+ this.scrollIndex = newScrollIndex;
339
+ }
340
+
341
+ scrollGridScroller(scrollValuePx: number) {
342
+ this.grid.base.current!.scroller.current!.scroll(scrollValuePx);
343
+ this.currentScrollPx = scrollValuePx;
344
+ }
345
+
346
+ handleOnScrollChanged(scrollToPx: number, backward: boolean) {
347
+ const { onScrollChanged } = this.grid.props;
348
+ if (typeof onScrollChanged !== 'function') return;
349
+ const scrollFromStart = Math.abs(scrollToPx - this.initialScrollPx);
350
+ const scrollIndex = this.scrollPixelsToIndex(scrollFromStart, backward);
351
+ if (this.lastAnimationScrollIndex !== scrollIndex) {
352
+ const { base: { current: base } } = this.grid;
353
+ const itemsInGroup = base!.getItemsInGroup();
354
+ const indexOffset = Math.floor(base!.index / itemsInGroup) * itemsInGroup;
355
+ const indexInCurrentGroup = base!.index - indexOffset;
356
+ const indexInScrolledGroup = scrollIndex * itemsInGroup + indexInCurrentGroup;
357
+ const item = this.grid.base.current?.getRefAtDataIndex(indexInScrolledGroup);
358
+ this.lastAnimationScrollIndex = scrollIndex;
359
+ onScrollChanged(item!, scrollIndex);
360
+ }
361
+ }
362
+
363
+ protected getNextScrollConfig(valueToScrollToPx: number) {
364
+ const { currentScrollPx } = this;
365
+ const valueRounded = Math.round(valueToScrollToPx);
366
+ const backward = valueRounded < currentScrollPx;
367
+ const canScroll = valueRounded !== currentScrollPx;
368
+ return {
369
+ scrollToPx: valueRounded,
370
+ backward,
371
+ canScroll,
372
+ };
373
+ }
374
+
375
+ protected shouldReturnNormalAnimation(currentValue: number) {
376
+ if (!this.isFastLinearScroll) return false;
377
+ const { endRatio } = this.animationConfiguration.fastLinear!;
378
+ if (endRatio) {
379
+ const scrollLength = Math.abs(currentValue - this.toPx);
380
+ if (scrollLength < (this.fastLinearScrollThreshold * endRatio)) {
381
+ this.isFastLinearScroll = false;
382
+ return true;
383
+ }
384
+ } else if (currentValue === this.toPx) {
385
+ this.isFastLinearScroll = false;
386
+ }
387
+ return false;
388
+ }
389
+
390
+ protected getEasingAndTime() {
391
+ const { normal, fastLinear } = this.animationConfiguration;
392
+ if (!fastLinear) return normal;
393
+ const scrollLength = Math.abs(this.fromPx - this.toPx);
394
+ const { startRatio, time } = fastLinear;
395
+ if (scrollLength > this.fastLinearScrollThreshold * startRatio) {
396
+ this.isFastLinearScroll = true;
397
+ return {
398
+ easing: AnimationUtils.linear,
399
+ time,
400
+ };
401
+ }
402
+ this.isFastLinearScroll = false;
403
+ return normal;
404
+ }
405
+
406
+ /**
407
+ * Function will return index to item references in actual rendered items
408
+ * based on current grid index. If the current index is out of range, -1 is returned.
409
+ * @return {number} index of rendered item matching current list index
410
+ */
411
+ private readonly getCurrentIndexInRefIndex = () => {
412
+ const { groups } = this;
413
+ const base = this.grid.base.current!;
414
+ const currentIndex = base.index;
415
+ const itemsInGroup = base.getItemsInGroup();
416
+ const currentDataIndex = Math.floor(currentIndex / itemsInGroup);
417
+ const groupIndex = currentDataIndex % groups.length;
418
+ const groupDataIndex = currentDataIndex * itemsInGroup;
419
+ if (groupDataIndex === groups[groupIndex]?.dataIndex) {
420
+ return currentIndex % base.itemRefs.length;
421
+ }
422
+ return -1;
423
+ };
424
+
425
+ itemIndexToScrollIndex(itemIndex: number) {
426
+ const itemsInGroup = this.grid.base.current!.getItemsInGroup();
427
+ return Math.floor(itemIndex / itemsInGroup);
428
+ }
429
+
430
+ adjustGroupsOffsetsOnFrame(scrollValuePx: number, backward = false) {
431
+ let nextScrollIndex;
432
+ if (backward) {
433
+ nextScrollIndex = this.scrollPixelsToIndex(scrollValuePx, backward);
434
+ if (this.lastScrollIndex !== nextScrollIndex) {
435
+ this.adjustGroupsOffsetsBackward(nextScrollIndex);
436
+ }
437
+ } else {
438
+ nextScrollIndex = this.scrollPixelsToIndex(scrollValuePx, backward);
439
+ if (this.lastScrollIndex !== nextScrollIndex) {
440
+ this.adjustGroupsOffsetsForward(nextScrollIndex);
441
+ }
442
+ }
443
+ this.lastScrollIndex = nextScrollIndex;
444
+ }
445
+
446
+ adjustGroupsOffsetsForward(scrollIndex: number) {
447
+ const {
448
+ base: { current: base },
449
+ } = this.grid;
450
+ const { groupsCount, groupOffsetStepPx, groups } = this;
451
+ const itemsInGroup = base!.getItemsInGroup();
452
+ const dataOffsetStep = groupsCount * itemsInGroup;
453
+ forEach(groups, (group, index) => {
454
+ if (!this.shouldGroupRotateForward(group, scrollIndex)) return;
455
+ group.dataIndex += dataOffsetStep;
456
+ group.offset += groupOffsetStepPx;
457
+ this.updateItemsInGroup(group, index * itemsInGroup);
458
+ });
459
+ }
460
+
461
+ adjustGroupsOffsetsBackward(scrollIndex: number) {
462
+ const {
463
+ base: { current: base },
464
+ } = this.grid;
465
+ const { groupsCount, groupOffsetStepPx, groups } = this;
466
+ const itemsInGroup = base!.getItemsInGroup();
467
+ const dataOffsetStep = groupsCount * itemsInGroup;
468
+ forEach(groups, (group, index) => {
469
+ if (!this.shouldGroupRotateBackward(group, scrollIndex)) return;
470
+ group.dataIndex -= dataOffsetStep;
471
+ group.offset -= groupOffsetStepPx;
472
+ this.updateItemsInGroup(group, index * itemsInGroup);
473
+ });
474
+ }
475
+
476
+ protected shouldGroupRotateForward(group: GroupInfo, scrollIndex: number) {
477
+ const { base: { current: base } } = this.grid;
478
+ const itemsInGroup = base!.getItemsInGroup();
479
+ return group.dataIndex / itemsInGroup - scrollIndex < this.leftBoundary;
480
+ }
481
+
482
+ protected shouldGroupRotateBackward(group: GroupInfo, scrollIndex: number) {
483
+ const { base: { current: base } } = this.grid;
484
+ const itemsInGroup = base!.getItemsInGroup();
485
+ const visibleItems = base!.getVisibleGroups();
486
+ return group.dataIndex / itemsInGroup + this.rightBoundary > scrollIndex + visibleItems;
487
+ }
488
+
489
+ private updateItemsInGroup(group: GroupInfo, startItemIndex: number) {
490
+ const { base: { current: base }, props: { horizontal } } = this.grid;
491
+ const itemsInGroup = base!.getItemsInGroup();
492
+ for (let i = 0; i < itemsInGroup; i++) {
493
+ // group.dataIndex + i - (startItemIndex + i) explaining ↓
494
+ base!.updateItem(startItemIndex + i, group.dataIndex - startItemIndex);
495
+ }
496
+ offsetPosition(group.element, getOffsetObject(horizontal, group.offset));
497
+ }
498
+
499
+ scrollIndexToPixels(index: number) {
500
+ if (index === 0) return 0;
501
+ const { firstScrollStep, scrollStep } = this.grid.props;
502
+ if (typeof firstScrollStep === 'undefined') {
503
+ return scrollStep * index;
504
+ }
505
+ if (index === 1) return firstScrollStep;
506
+ return (index - 1) * scrollStep + firstScrollStep;
507
+ }
508
+
509
+ scrollPixelsToIndex(scrollValuePx: number, backward: boolean) {
510
+ const { scrollStep, firstScrollStep } = this.grid.props;
511
+ if (backward) {
512
+ return scrollPixelsToIndexBackward(scrollValuePx, scrollStep, firstScrollStep);
513
+ }
514
+ return scrollPixelsToIndexForward(scrollValuePx, scrollStep, firstScrollStep);
515
+ }
516
+
517
+ appendData(data: T[]) {
518
+ const base = this.grid.base.current!;
519
+ base.appendData(data);
520
+ if (this.groups.length < this.groupsCount) {
521
+ this.groups = prepareAnimatedGroups(base);
522
+ }
523
+ const itemsInGroup = base.getItemsInGroup();
524
+ forEach(this.groups, (group, index) => {
525
+ this.updateItemsInGroup(group, index * itemsInGroup);
526
+ });
527
+ base.mrcuRef.current?.handleArrowState();
528
+ }
529
+
530
+ prependData(data: T[]) {
531
+ const { scrollStep } = this.grid.props;
532
+ const base = this.grid.base.current!;
533
+ base.prependData(data);
534
+ if (this.groups.length < this.groupsCount) {
535
+ this.groups = prepareAnimatedGroups(base);
536
+ }
537
+ const dataLength = data.length;
538
+ base.index += dataLength;
539
+ const itemsInGroup = base.getItemsInGroup();
540
+ const prependedGroups = Math.floor(dataLength / itemsInGroup);
541
+ const offsetIndex = prependedGroups * itemsInGroup;
542
+ const offsetDiff = prependedGroups * scrollStep;
543
+ forEach(this.groups, (group, index) => {
544
+ group.dataIndex += offsetIndex;
545
+ group.offset += offsetDiff;
546
+ this.updateItemsInGroup(group, index * itemsInGroup);
547
+ });
548
+ this.scrollIndex += prependedGroups;
549
+ this.scrollGridScroller(
550
+ this.scrollIndexToPixels(this.scrollIndex),
551
+ );
552
+ this.focusCurrentItem();
553
+ base.mrcuRef.current?.handleArrowState();
554
+ }
555
+ }