@24i/bigscreen-sdk 1.0.34 → 1.0.35-alpha.2578

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