@24i/bigscreen-sdk 1.0.39 → 1.0.40-alpha.2687

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