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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1081) hide show
  1. package/README.md +47 -47
  2. package/__mocks__/@24i/bigscreen-sdk/animations.ts +2 -2
  3. package/package.json +1 -1
  4. package/packages/adobe-heartbeat/README.md +46 -46
  5. package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +244 -244
  6. package/packages/adobe-heartbeat/src/__external__/Adobe/Adobe.d.ts +24 -24
  7. package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.d.ts +126 -126
  8. package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.js +76 -76
  9. package/packages/adobe-heartbeat/src/index.ts +5 -5
  10. package/packages/adobe-heartbeat/src/types.ts +67 -67
  11. package/packages/analytics/README.md +7 -7
  12. package/packages/analytics/src/A.ts +1 -1
  13. package/packages/analytics/src/Analytics.ts +1 -1
  14. package/packages/analytics/src/analyticsOnScroll.ts +1 -1
  15. package/packages/analytics/src/clients/ConsoleAnalytics/ConsoleAnalytics.ts +1 -1
  16. package/packages/analytics/src/clients/ConsoleAnalytics/index.ts +1 -1
  17. package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +200 -200
  18. package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +118 -118
  19. package/packages/analytics/src/clients/GoogleAnalytics/getUrl.ts +17 -17
  20. package/packages/analytics/src/clients/GoogleAnalytics/index.ts +2 -2
  21. package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +77 -77
  22. package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +50 -50
  23. package/packages/analytics/src/clients/GoogleAnalytics/prepareBody.ts +14 -14
  24. package/packages/analytics/src/clients/TealiumAnalytics/TealiumAnalytics.ts +161 -161
  25. package/packages/analytics/src/clients/TealiumAnalytics/constants.ts +102 -102
  26. package/packages/analytics/src/clients/TealiumAnalytics/index.ts +3 -3
  27. package/packages/analytics/src/clients/TealiumAnalytics/interface.ts +33 -33
  28. package/packages/analytics/src/clients/TealiumAnalytics/mappers/__mocks__/mediaPayload.ts +40 -40
  29. package/packages/analytics/src/clients/TealiumAnalytics/mappers/helper.ts +21 -21
  30. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppError.ts +14 -14
  31. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteAdd.ts +11 -11
  32. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteRemove.ts +11 -11
  33. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerClose.ts +15 -15
  34. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerOpen.ts +15 -15
  35. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSceneView.ts +15 -15
  36. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearch.ts +18 -18
  37. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchFailed.ts +8 -8
  38. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchSuccess.ts +8 -8
  39. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoPause.ts +15 -15
  40. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoProgress.ts +18 -18
  41. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoResume.ts +15 -15
  42. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStart.ts +15 -15
  43. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStop.ts +15 -15
  44. package/packages/analytics/src/clients/TealiumAnalytics/types.ts +139 -139
  45. package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +116 -116
  46. package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +99 -99
  47. package/packages/analytics/src/clients/TwentyFourIQ/helper.ts +34 -34
  48. package/packages/analytics/src/clients/TwentyFourIQ/index.ts +2 -2
  49. package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +31 -31
  50. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +13 -13
  51. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +16 -16
  52. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +21 -21
  53. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +15 -15
  54. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +24 -24
  55. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +18 -18
  56. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +15 -15
  57. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +17 -17
  58. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +21 -21
  59. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +24 -24
  60. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +24 -24
  61. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +34 -34
  62. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +32 -32
  63. package/packages/analytics/src/clients/TwentyFourIQ/types.ts +115 -115
  64. package/packages/analytics/src/constants.ts +1 -1
  65. package/packages/analytics/src/index.ts +3 -3
  66. package/packages/analytics/src/interface.ts +1 -1
  67. package/packages/analytics/src/utils/generateSessionId.ts +8 -8
  68. package/packages/animations/README.md +85 -85
  69. package/packages/animations/src/AnimationUtils.ts +238 -238
  70. package/packages/animations/src/JSAnimations.ts +144 -144
  71. package/packages/animations/src/__mocks__/JSAnimations.ts +30 -30
  72. package/packages/animations/src/index.ts +3 -3
  73. package/packages/announcement-banner/README.md +49 -49
  74. package/packages/announcement-banner/src/AnnouncementBanner.scss +8 -8
  75. package/packages/announcement-banner/src/AnnouncementBanner.tsx +136 -136
  76. package/packages/announcement-banner/src/index.ts +1 -1
  77. package/packages/async-image/README.md +47 -47
  78. package/packages/async-image/src/AsyncImage.tsx +101 -101
  79. package/packages/async-image/src/index.ts +2 -2
  80. package/packages/conviva/README.md +47 -47
  81. package/packages/conviva/src/ConvivaSDK.ts +38 -38
  82. package/packages/conviva/src/__mocks__/ConvivaMock.ts +36 -36
  83. package/packages/conviva/src/index.ts +1 -1
  84. package/packages/conviva/src/theoPlugin/ConvivaConviguration.ts +19 -19
  85. package/packages/conviva/src/theoPlugin/__external__/Conviva_4.0.15.js +698 -698
  86. package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.d.ts +7 -7
  87. package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.js +635 -635
  88. package/packages/conviva/src/theoPlugin/convivaTheoPluginWrapper.ts +61 -61
  89. package/packages/conviva/src/theoPlugin/index.ts +2 -2
  90. package/packages/developer-tools/DeveloperConsole/README.md +114 -114
  91. package/packages/developer-tools/DeveloperConsole/index.ts +3 -3
  92. package/packages/developer-tools/DeveloperConsole/unstyled.ts +1 -1
  93. package/packages/developer-tools/DeveloperToolsService/README.md +54 -54
  94. package/packages/developer-tools/DeveloperToolsService/index.ts +3 -3
  95. package/packages/developer-tools/DeveloperToolsService/unstyled.ts +1 -1
  96. package/packages/developer-tools/EnvironmentSelection/README.md +77 -77
  97. package/packages/developer-tools/EnvironmentSelection/index.ts +3 -3
  98. package/packages/developer-tools/EnvironmentSelection/unstyled.ts +1 -1
  99. package/packages/developer-tools/PlayerDebugWindow/README.md +65 -65
  100. package/packages/developer-tools/PlayerDebugWindow/index.ts +3 -3
  101. package/packages/developer-tools/PlayerDebugWindow/unstyled.ts +1 -1
  102. package/packages/developer-tools/README.md +24 -24
  103. package/packages/developer-tools/TechnicalInfo/README.md +90 -90
  104. package/packages/developer-tools/TechnicalInfo/index.ts +9 -9
  105. package/packages/developer-tools/TechnicalInfo/unstyled.ts +6 -6
  106. package/packages/developer-tools/src/DeveloperConsole/ControlButton.tsx +16 -16
  107. package/packages/developer-tools/src/DeveloperConsole/DeveloperConsole.tsx +389 -389
  108. package/packages/developer-tools/src/DeveloperConsole/Panel.tsx +108 -108
  109. package/packages/developer-tools/src/DeveloperConsole/PanelMessage.tsx +33 -33
  110. package/packages/developer-tools/src/DeveloperConsole/helpers/Queue.ts +38 -38
  111. package/packages/developer-tools/src/DeveloperConsole/helpers/index.ts +2 -2
  112. package/packages/developer-tools/src/DeveloperConsole/helpers/instrumentHandler.ts +165 -165
  113. package/packages/developer-tools/src/DeveloperConsole/index.ts +2 -2
  114. package/packages/developer-tools/src/DeveloperConsole/initDeveloperConsole.tsx +8 -8
  115. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.scss +91 -91
  116. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.1080.scss +2 -2
  117. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.scss +2 -2
  118. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.1080.scss +16 -16
  119. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.scss +16 -16
  120. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.scss +87 -87
  121. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.1080.scss +2 -2
  122. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.scss +2 -2
  123. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.1080.scss +9 -9
  124. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.scss +9 -9
  125. package/packages/developer-tools/src/DeveloperConsole/styles.ts +2 -2
  126. package/packages/developer-tools/src/DeveloperConsole/types.ts +49 -49
  127. package/packages/developer-tools/src/DeveloperConsole/utils/formatTime.ts +13 -13
  128. package/packages/developer-tools/src/DeveloperConsole/utils/index.ts +3 -3
  129. package/packages/developer-tools/src/DeveloperConsole/utils/stringify.ts +10 -10
  130. package/packages/developer-tools/src/DeveloperConsole/utils/styles.ts +24 -24
  131. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolItem.tsx +21 -21
  132. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +125 -125
  133. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsService.tsx +122 -122
  134. package/packages/developer-tools/src/DeveloperToolsService/index.ts +1 -1
  135. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.scss +64 -64
  136. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.1080.scss +2 -2
  137. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.1080.scss +3 -3
  138. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.scss +4 -4
  139. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.scss +2 -2
  140. package/packages/developer-tools/src/DeveloperToolsService/styles/_animated.scss +5 -5
  141. package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.1080.scss +16 -16
  142. package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.scss +16 -16
  143. package/packages/developer-tools/src/DeveloperToolsService/styles.ts +1 -1
  144. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentList.tsx +90 -90
  145. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentListItem.tsx +106 -106
  146. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentSelection.tsx +102 -102
  147. package/packages/developer-tools/src/EnvironmentSelection/assets/checkmark.svg +18 -18
  148. package/packages/developer-tools/src/EnvironmentSelection/config.ts +43 -43
  149. package/packages/developer-tools/src/EnvironmentSelection/constants.ts +1 -1
  150. package/packages/developer-tools/src/EnvironmentSelection/index.ts +2 -2
  151. package/packages/developer-tools/src/EnvironmentSelection/sizes.1080.ts +5 -5
  152. package/packages/developer-tools/src/EnvironmentSelection/sizes.ts +5 -5
  153. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.scss +141 -141
  154. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.1080.scss +2 -2
  155. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.1080.scss +3 -3
  156. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.scss +3 -3
  157. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.scss +2 -2
  158. package/packages/developer-tools/src/EnvironmentSelection/styles/_animated.scss +9 -9
  159. package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.1080.scss +26 -26
  160. package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.scss +26 -26
  161. package/packages/developer-tools/src/EnvironmentSelection/styles.ts +1 -1
  162. package/packages/developer-tools/src/EnvironmentSelection/types.ts +10 -10
  163. package/packages/developer-tools/src/EnvironmentSelection/utils/format.ts +4 -4
  164. package/packages/developer-tools/src/IDeveloperTool.ts +14 -14
  165. package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +115 -115
  166. package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +128 -128
  167. package/packages/developer-tools/src/PlayerDebugWindow/index.ts +1 -1
  168. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.scss +29 -29
  169. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.1080.scss +2 -2
  170. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.scss +2 -2
  171. package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.1080.scss +11 -11
  172. package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.scss +11 -11
  173. package/packages/developer-tools/src/PlayerDebugWindow/styles.ts +1 -1
  174. package/packages/developer-tools/src/TechnicalInfo/ITechnicalInfoProvider.ts +5 -5
  175. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfo.tsx +125 -125
  176. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +77 -77
  177. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +349 -349
  178. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +55 -55
  179. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Player.ts +7 -7
  180. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Storage.ts +9 -9
  181. package/packages/developer-tools/src/TechnicalInfo/icons/arrow-down.svg +18 -18
  182. package/packages/developer-tools/src/TechnicalInfo/icons/arrow-up.svg +18 -18
  183. package/packages/developer-tools/src/TechnicalInfo/index.ts +5 -5
  184. package/packages/developer-tools/src/TechnicalInfo/sizes.1080.ts +1 -1
  185. package/packages/developer-tools/src/TechnicalInfo/sizes.ts +1 -1
  186. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.scss +187 -187
  187. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.1080.scss +2 -2
  188. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.1080.scss +3 -3
  189. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.scss +3 -3
  190. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.scss +2 -2
  191. package/packages/developer-tools/src/TechnicalInfo/styles/_animated.scss +16 -16
  192. package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.1080.scss +50 -50
  193. package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.scss +50 -50
  194. package/packages/developer-tools/src/TechnicalInfo/styles.ts +1 -1
  195. package/packages/developer-tools/src/TechnicalInfo/translations.ts +79 -79
  196. package/packages/developer-tools/src/TechnicalInfo/utils/eme01bSupport.ts +58 -58
  197. package/packages/developer-tools/src/TechnicalInfo/utils/emeSupport.ts +84 -84
  198. package/packages/developer-tools/src/TechnicalInfo/utils/formatTimezone.ts +15 -15
  199. package/packages/developer-tools/src/TechnicalInfo/utils/mseSupport.ts +14 -14
  200. package/packages/developer-tools/src/utils/reload.ts +6 -6
  201. package/packages/device/README.md +219 -219
  202. package/packages/device/keymap.ts +1 -1
  203. package/packages/device/resolver/index.ts +2 -2
  204. package/packages/device/resolver/keymap.ts +1 -1
  205. package/packages/device/src/DeviceEventMap.ts +1 -1
  206. package/packages/device/src/device.ts +6 -6
  207. package/packages/device/src/driver/index.android.tv.ts +1 -1
  208. package/packages/device/src/driver/index.entone.ts +1 -1
  209. package/packages/device/src/driver/index.firetv.ts +1 -1
  210. package/packages/device/src/driver/index.hbbtv.tv.ts +1 -1
  211. package/packages/device/src/driver/index.kreatv.ts +1 -1
  212. package/packages/device/src/driver/index.saphi.tv.ts +1 -1
  213. package/packages/device/src/driver/index.smartcast.tv.ts +1 -1
  214. package/packages/device/src/driver/index.tizen.tv.ts +1 -1
  215. package/packages/device/src/driver/index.ts +1 -1
  216. package/packages/device/src/driver/index.vidaa.tv.ts +1 -1
  217. package/packages/device/src/driver/index.webos.tv.ts +1 -1
  218. package/packages/device/src/getKeyDigit.ts +35 -35
  219. package/packages/device/src/getKeyMap.ts +4 -4
  220. package/packages/device/src/index.ts +8 -8
  221. package/packages/device/src/isClickOrEnter.ts +3 -3
  222. package/packages/device/src/resolver/index.ts +2 -2
  223. package/packages/device/src/resolver/resolver.ts +84 -84
  224. package/packages/digital-clock/README.md +26 -26
  225. package/packages/digital-clock/src/DigitalClock.tsx +78 -78
  226. package/packages/digital-clock/src/index.ts +1 -1
  227. package/packages/driver-androidtv/src/DeviceAndroidTV.ts +224 -224
  228. package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +36 -36
  229. package/packages/driver-androidtv/src/formatUserAgent.ts +11 -11
  230. package/packages/driver-androidtv/src/index.ts +1 -1
  231. package/packages/driver-androidtv/src/keymap.ts +27 -27
  232. package/packages/driver-androidtv/src/types.ts +113 -113
  233. package/packages/driver-base/DeviceBase.md +139 -139
  234. package/packages/driver-base/README.md +44 -44
  235. package/packages/driver-base/src/ConnectionType.ts +1 -1
  236. package/packages/driver-base/src/DeviceBase.ts +279 -279
  237. package/packages/driver-base/src/KeyMap/Key.ts +48 -48
  238. package/packages/driver-base/src/KeyMap/KeyMap.ts +390 -390
  239. package/packages/driver-base/src/KeyMap/generateKeyCodeKeyMap.ts +11 -11
  240. package/packages/driver-base/src/KeyMap/index.ts +5 -5
  241. package/packages/driver-base/src/KeyMap/interface.ts +8 -8
  242. package/packages/driver-base/src/KeyMap/overrideValues.ts +17 -17
  243. package/packages/driver-base/src/KeyMap/switchByKey.ts +18 -18
  244. package/packages/driver-base/src/ScreenSize.ts +1 -1
  245. package/packages/driver-base/src/VolumeRange.ts +5 -5
  246. package/packages/driver-base/src/__mocks__/DeviceBase.ts +100 -100
  247. package/packages/driver-base/src/__mocks__/keyMap.ts +42 -42
  248. package/packages/driver-base/src/bindPreventDefaultEvent.ts +5 -5
  249. package/packages/driver-base/src/errors.ts +32 -32
  250. package/packages/driver-base/src/index.ts +10 -10
  251. package/packages/driver-base/src/loadObject.ts +30 -30
  252. package/packages/driver-base/src/types/DeviceEvent.ts +11 -11
  253. package/packages/driver-base/src/types/ExitOptions.ts +1 -1
  254. package/packages/driver-base/src/types/KeycodeKeyMap.ts +86 -86
  255. package/packages/driver-base/src/types/ScreenSaverStatus.ts +3 -3
  256. package/packages/driver-base/src/utils.ts +10 -10
  257. package/packages/driver-browser/src/DeviceBrowser.ts +170 -170
  258. package/packages/driver-browser/src/getBrowser.ts +51 -51
  259. package/packages/driver-browser/src/getOsName.ts +30 -30
  260. package/packages/driver-browser/src/index.ts +1 -1
  261. package/packages/driver-browser/src/keymap.ts +22 -22
  262. package/packages/driver-browser/src/patchSuitestKeys.ts +27 -27
  263. package/packages/driver-entone/README.md +9 -9
  264. package/packages/driver-entone/src/DeviceEntone.ts +232 -232
  265. package/packages/driver-entone/src/IEntone.ts +460 -460
  266. package/packages/driver-entone/src/__mocks__/entone.ts +177 -177
  267. package/packages/driver-entone/src/constants.ts +73 -73
  268. package/packages/driver-entone/src/index.ts +1 -1
  269. package/packages/driver-entone/src/keymap.ts +57 -57
  270. package/packages/driver-firetv/src/DeviceFireTV.ts +18 -18
  271. package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +36 -36
  272. package/packages/driver-firetv/src/index.ts +1 -1
  273. package/packages/driver-hbbtv/src/DeviceHbbTV.ts +313 -313
  274. package/packages/driver-hbbtv/src/__mocks__/hbbtv.ts +17 -17
  275. package/packages/driver-hbbtv/src/constants.ts +28 -28
  276. package/packages/driver-hbbtv/src/deviceInfo.ts +23 -23
  277. package/packages/driver-hbbtv/src/getVersion.ts +16 -16
  278. package/packages/driver-hbbtv/src/index.ts +1 -1
  279. package/packages/driver-hbbtv/src/keymap.ts +45 -45
  280. package/packages/driver-hbbtv/src/types.ts +366 -366
  281. package/packages/driver-kreatv/src/DeviceKreaTV.ts +271 -271
  282. package/packages/driver-kreatv/src/IToi.ts +379 -379
  283. package/packages/driver-kreatv/src/__mocks__/toi2.ts +76 -76
  284. package/packages/driver-kreatv/src/__mocks__/toi3.ts +43 -43
  285. package/packages/driver-kreatv/src/index.ts +1 -1
  286. package/packages/driver-kreatv/src/keymap.ts +31 -31
  287. package/packages/driver-kreatv/src/toi2.ts +107 -107
  288. package/packages/driver-kreatv/src/toi3.ts +102 -102
  289. package/packages/driver-kreatv/src/types.ts +35 -35
  290. package/packages/driver-saphi/src/DeviceSaphi.ts +144 -144
  291. package/packages/driver-saphi/src/__mocks__/SmartTvA_API.ts +11 -11
  292. package/packages/driver-saphi/src/__mocks__/userAgent.ts +4 -4
  293. package/packages/driver-saphi/src/constants.ts +1 -1
  294. package/packages/driver-saphi/src/formatUserAgent.ts +19 -19
  295. package/packages/driver-saphi/src/index.ts +1 -1
  296. package/packages/driver-saphi/src/keymap.ts +64 -64
  297. package/packages/driver-saphi/src/types.ts +75 -75
  298. package/packages/driver-smartcast/src/DeviceSmartCast.ts +316 -310
  299. package/packages/driver-smartcast/src/__mocks__/api.ts +49 -49
  300. package/packages/driver-smartcast/src/index.ts +1 -1
  301. package/packages/driver-smartcast/src/keymap.ts +9 -9
  302. package/packages/driver-smartcast/src/types.ts +65 -65
  303. package/packages/driver-tizen/src/DeviceTizen.ts +298 -298
  304. package/packages/driver-tizen/src/ITizen.ts +212 -212
  305. package/packages/driver-tizen/src/IWebapis.ts +95 -95
  306. package/packages/driver-tizen/src/TizenKeys.ts +96 -96
  307. package/packages/driver-tizen/src/__mocks__/tizen.ts +35 -35
  308. package/packages/driver-tizen/src/constants.ts +197 -197
  309. package/packages/driver-tizen/src/index.ts +1 -1
  310. package/packages/driver-tizen/src/types.ts +14 -14
  311. package/packages/driver-vidaa/src/DeviceVidaa.ts +141 -141
  312. package/packages/driver-vidaa/src/__mocks__/vidaa.ts +21 -21
  313. package/packages/driver-vidaa/src/constants.ts +8 -8
  314. package/packages/driver-vidaa/src/formatUserAgent.ts +16 -16
  315. package/packages/driver-vidaa/src/index.ts +1 -1
  316. package/packages/driver-vidaa/src/keymap.ts +56 -56
  317. package/packages/driver-vidaa/src/types.ts +90 -90
  318. package/packages/driver-webos/src/DeviceWebos.ts +313 -313
  319. package/packages/driver-webos/src/__mocks__/webos.ts +172 -172
  320. package/packages/driver-webos/src/constants.ts +20 -20
  321. package/packages/driver-webos/src/index.ts +1 -1
  322. package/packages/driver-webos/src/keymap.ts +10 -10
  323. package/packages/driver-webos/src/types.ts +344 -344
  324. package/packages/driver-webos/src/utils.ts +60 -60
  325. package/packages/driver-webos/src/webOSTVjs/webOSTVjs.js +12 -12
  326. package/packages/driver-xbox/__external__/winjs/directionalnavigation-1.0.0.0.js +1015 -1015
  327. package/packages/driver-xbox/src/DeviceXbox.ts +231 -231
  328. package/packages/driver-xbox/src/__mocks__/Windows.ts +94 -94
  329. package/packages/driver-xbox/src/index.ts +1 -1
  330. package/packages/driver-xbox/src/interfaces.ts +138 -138
  331. package/packages/driver-xbox/src/keymap.ts +96 -96
  332. package/packages/driver-xbox/src/utils.ts +23 -23
  333. package/packages/epg/IMPLEMENTATION.md +228 -228
  334. package/packages/epg/MockGenerator.md +102 -102
  335. package/packages/epg/README.md +585 -585
  336. package/packages/epg/src/v2/Cell.tsx +222 -222
  337. package/packages/epg/src/v2/CellsManager.ts +1 -1
  338. package/packages/epg/src/v2/DataManager.ts +372 -372
  339. package/packages/epg/src/v2/DatePicker.tsx +110 -110
  340. package/packages/epg/src/v2/DateToast/DateToast.scss +28 -28
  341. package/packages/epg/src/v2/DateToast/DateToast.styles.1080.scss +2 -2
  342. package/packages/epg/src/v2/DateToast/DateToast.styles.scss +2 -2
  343. package/packages/epg/src/v2/DateToast/DateToast.tsx +90 -90
  344. package/packages/epg/src/v2/DateToast/_sizes.1080.scss +7 -7
  345. package/packages/epg/src/v2/DateToast/_sizes.scss +7 -7
  346. package/packages/epg/src/v2/DateToast/index.tsx +1 -1
  347. package/packages/epg/src/v2/DateToast/styles.ts +1 -1
  348. package/packages/epg/src/v2/Day.tsx +33 -33
  349. package/packages/epg/src/v2/Epg.tsx +462 -462
  350. package/packages/epg/src/v2/Header.tsx +41 -41
  351. package/packages/epg/src/v2/IdleController.ts +25 -25
  352. package/packages/epg/src/v2/InputEvents.ts +301 -301
  353. package/packages/epg/src/v2/MockGenerator/config.1080.ts +2 -2
  354. package/packages/epg/src/v2/MockGenerator/config.ts +2 -2
  355. package/packages/epg/src/v2/MockGenerator/generator.ts +174 -174
  356. package/packages/epg/src/v2/MockGenerator/index.ts +2 -2
  357. package/packages/epg/src/v2/MockGenerator/mocks/data.ts +102 -102
  358. package/packages/epg/src/v2/MockGenerator/types.ts +25 -25
  359. package/packages/epg/src/v2/MockGenerator/utils.ts +28 -28
  360. package/packages/epg/src/v2/MouseNavigation/MouseNavigation.tsx +88 -88
  361. package/packages/epg/src/v2/MouseNavigation/MouseNavigationFallback.ts +4 -4
  362. package/packages/epg/src/v2/MouseNavigation/index.tizen.tv.ts +1 -1
  363. package/packages/epg/src/v2/MouseNavigation/index.ts +1 -1
  364. package/packages/epg/src/v2/MouseNavigation/index.web.ts +1 -1
  365. package/packages/epg/src/v2/MouseNavigation/index.webos.tv.ts +1 -1
  366. package/packages/epg/src/v2/NowLine.tsx +66 -66
  367. package/packages/epg/src/v2/Program.tsx +58 -58
  368. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.scss +67 -67
  369. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.1080.scss +3 -3
  370. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.1080.scss +2 -2
  371. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.scss +2 -2
  372. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.scss +3 -3
  373. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.tsx +149 -149
  374. package/packages/epg/src/v2/ProgramInfo/_animated.scss +8 -8
  375. package/packages/epg/src/v2/ProgramInfo/_mixins.scss +5 -5
  376. package/packages/epg/src/v2/ProgramInfo/_sizes.1080.scss +21 -21
  377. package/packages/epg/src/v2/ProgramInfo/_sizes.scss +21 -21
  378. package/packages/epg/src/v2/ProgramInfo/index.ts +1 -1
  379. package/packages/epg/src/v2/ProgramInfo/rtl.scss +7 -7
  380. package/packages/epg/src/v2/ProgramInfo/sizes.1080.ts +3 -3
  381. package/packages/epg/src/v2/ProgramInfo/sizes.ts +3 -3
  382. package/packages/epg/src/v2/ProgramInfo/styles.ts +1 -1
  383. package/packages/epg/src/v2/ProgramInfo/utils.ts +28 -28
  384. package/packages/epg/src/v2/Row.tsx +134 -134
  385. package/packages/epg/src/v2/RowsManager.ts +1 -1
  386. package/packages/epg/src/v2/TimeManager.ts +58 -58
  387. package/packages/epg/src/v2/Timeline.ts +1 -1
  388. package/packages/epg/src/v2/TimelineSection.tsx +50 -50
  389. package/packages/epg/src/v2/basic/CellsManager.tsx +300 -300
  390. package/packages/epg/src/v2/basic/RowsManager.tsx +503 -503
  391. package/packages/epg/src/v2/basic/Timeline.tsx +88 -88
  392. package/packages/epg/src/v2/index.ts +1 -1
  393. package/packages/epg/src/v2/interface.ts +1519 -1519
  394. package/packages/epg/src/v2/sizes.1080.ts +2 -2
  395. package/packages/epg/src/v2/sizes.ts +2 -2
  396. package/packages/epg/src/v2/styles/Basic/Basic.scss +116 -116
  397. package/packages/epg/src/v2/styles/Basic/index.ts +1 -1
  398. package/packages/epg/src/v2/styles/Whitelabel/index.ts +1 -1
  399. package/packages/epg/src/v2/utils.ts +40 -40
  400. package/packages/events-manager/src/EventsManager.ts +1 -1
  401. package/packages/events-manager/src/index.ts +2 -2
  402. package/packages/floating-focus/README.md +64 -64
  403. package/packages/floating-focus/src/FloatingFocus.ts +106 -106
  404. package/packages/floating-focus/src/Horizontal.tsx +20 -20
  405. package/packages/floating-focus/src/Vertical.tsx +20 -20
  406. package/packages/floating-focus/src/index.ts +4 -4
  407. package/packages/floating-focus/src/types.ts +20 -20
  408. package/packages/floating-focus/src/utils.ts +43 -43
  409. package/packages/focus/README.md +348 -348
  410. package/packages/focus/src/IFocusable.ts +5 -5
  411. package/packages/focus/src/Layout/Base.tsx +166 -166
  412. package/packages/focus/src/Layout/Horizontal.ts +15 -15
  413. package/packages/focus/src/Layout/Matrix.tsx +357 -357
  414. package/packages/focus/src/Layout/Vertical.ts +12 -12
  415. package/packages/focus/src/Layout/constants.ts +10 -10
  416. package/packages/focus/src/Layout/isRtl.ts +12 -12
  417. package/packages/focus/src/Layout/types.ts +7 -7
  418. package/packages/focus/src/candidate.ts +106 -106
  419. package/packages/focus/src/focusFirstExisting.ts +19 -19
  420. package/packages/focus/src/hasFocus.ts +36 -36
  421. package/packages/focus/src/index.ts +16 -16
  422. package/packages/focus/src/refocusAfterHashChange.ts +19 -19
  423. package/packages/focus/src/safeFocus.ts +15 -15
  424. package/packages/gallup/README.md +27 -27
  425. package/packages/gallup/src/Gallup.ts +80 -80
  426. package/packages/gallup/src/GallupMock.ts +7 -7
  427. package/packages/gallup/src/__external__/SpringStreams.d.ts +39 -39
  428. package/packages/gallup/src/__mocks__/SpringStreams.js +18 -18
  429. package/packages/gallup/src/index.ts +1 -1
  430. package/packages/grid/BasicGrid/README.md +78 -78
  431. package/packages/grid/BasicGrid/index.ts +1 -1
  432. package/packages/grid/FirstOnlyGrid/README.md +43 -43
  433. package/packages/grid/FirstOnlyGrid/index.ts +1 -1
  434. package/packages/grid/FixedToEndGrid/README.md +45 -45
  435. package/packages/grid/FixedToEndGrid/index.ts +1 -1
  436. package/packages/grid/Item/index.ts +1 -1
  437. package/packages/grid/README.md +169 -169
  438. package/packages/grid/src/Base/Base.tsx +492 -492
  439. package/packages/grid/src/Base/MouseNavigation/MouseNavigation.tsx +82 -82
  440. package/packages/grid/src/Base/MouseNavigation/MouseNavigationFallback.ts +4 -4
  441. package/packages/grid/src/Base/MouseNavigation/index.tizen.tv.ts +1 -1
  442. package/packages/grid/src/Base/MouseNavigation/index.ts +1 -1
  443. package/packages/grid/src/Base/MouseNavigation/index.webos.tv.ts +1 -1
  444. package/packages/grid/src/Base/MouseNavigation/index.webtv.ts +1 -1
  445. package/packages/grid/src/Base/index.ts +1 -1
  446. package/packages/grid/src/Base/interface.ts +47 -47
  447. package/packages/grid/src/BasicGrid/BasicGrid.tsx +137 -137
  448. package/packages/grid/src/BasicGrid/config.ts +13 -13
  449. package/packages/grid/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -54
  450. package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +112 -112
  451. package/packages/grid/src/FirstOnlyGrid/config.ts +13 -13
  452. package/packages/grid/src/FirstOnlyGrid/controller.ts +10 -10
  453. package/packages/grid/src/FixedToEndGrid/FixedToEndGrid.tsx +112 -112
  454. package/packages/grid/src/FixedToEndGrid/config.ts +13 -13
  455. package/packages/grid/src/FixedToEndGrid/controller.ts +36 -36
  456. package/packages/grid/src/UnifiedGridController/UnifiedGridController.ts +555 -555
  457. package/packages/grid/src/UnifiedGridController/index.ts +2 -2
  458. package/packages/grid/src/UnifiedGridController/interface.ts +92 -92
  459. package/packages/grid/src/animate.animated.ts +1 -1
  460. package/packages/grid/src/animate.ts +1 -1
  461. package/packages/grid/src/interface.ts +30 -30
  462. package/packages/grid/src/mocks/index.tsx +41 -41
  463. package/packages/grid/src/types.ts +69 -69
  464. package/packages/grid/src/utils.ts +69 -69
  465. package/packages/i18n/README.md +460 -460
  466. package/packages/i18n/src/I18n.ts +246 -246
  467. package/packages/i18n/src/Translation.tsx +36 -36
  468. package/packages/i18n/src/addResourceBundle.ts +73 -73
  469. package/packages/i18n/src/direction.ts +33 -33
  470. package/packages/i18n/src/index.ts +4 -4
  471. package/packages/i18n/src/isRtl.ts +3 -3
  472. package/packages/i18n/src/middlewares/i18next/Context/Context.ts +25 -25
  473. package/packages/i18n/src/middlewares/i18next/Context/index.ts +1 -1
  474. package/packages/i18n/src/middlewares/i18next/Interpolation/Interpolation.ts +95 -95
  475. package/packages/i18n/src/middlewares/i18next/Interpolation/index.ts +1 -1
  476. package/packages/i18n/src/middlewares/i18next/Nesting/Nesting.ts +38 -38
  477. package/packages/i18n/src/middlewares/i18next/Nesting/index.ts +1 -1
  478. package/packages/i18n/src/middlewares/i18next/Plurals/Plurals.ts +123 -123
  479. package/packages/i18n/src/middlewares/i18next/Plurals/Resolvers.ts +124 -124
  480. package/packages/i18n/src/middlewares/i18next/Plurals/index.ts +1 -1
  481. package/packages/i18n/src/middlewares/i18next/Plurals/types.ts +6 -6
  482. package/packages/i18n/src/middlewares/icu/DateInterpolation/DateInterpolation.ts +64 -64
  483. package/packages/i18n/src/middlewares/icu/DateInterpolation/index.ts +1 -1
  484. package/packages/i18n/src/middlewares/icu/Interpolation/Interpolation.ts +39 -39
  485. package/packages/i18n/src/middlewares/icu/Interpolation/index.ts +1 -1
  486. package/packages/i18n/src/middlewares/icu/NumberInterpolation/NumberInterpolation.ts +41 -41
  487. package/packages/i18n/src/middlewares/icu/NumberInterpolation/index.ts +1 -1
  488. package/packages/i18n/src/middlewares/icu/Plurals/Plurals.ts +65 -65
  489. package/packages/i18n/src/middlewares/icu/Plurals/Resolvers.ts +130 -130
  490. package/packages/i18n/src/middlewares/icu/Plurals/index.ts +1 -1
  491. package/packages/i18n/src/middlewares/icu/Plurals/types.ts +15 -15
  492. package/packages/i18n/src/middlewares/icu/Select/Select.ts +36 -36
  493. package/packages/i18n/src/middlewares/icu/Select/index.ts +1 -1
  494. package/packages/i18n/src/middlewares/icu/TimeInterpolation/TimeInterpolation.ts +65 -65
  495. package/packages/i18n/src/middlewares/icu/TimeInterpolation/index.ts +1 -1
  496. package/packages/i18n/src/middlewares/icu/shared/hasVariable.ts +5 -5
  497. package/packages/i18n/src/middlewares/icu/shared/matchSwitchCase.ts +80 -80
  498. package/packages/i18n/src/middlewares/icu/shared/unwrap.ts +1 -1
  499. package/packages/i18n/src/pluralsCommon/PluralsHelper.ts +54 -54
  500. package/packages/i18n/src/pluralsCommon/ResolverByLanguage.ts +129 -129
  501. package/packages/i18n/src/t.tsx +6 -6
  502. package/packages/i18n/src/typedTranslate.ts +31 -31
  503. package/packages/i18n/src/types.ts +66 -66
  504. package/packages/i18n/src/utils.ts +76 -76
  505. package/packages/icon/README.md +107 -107
  506. package/packages/icon/src/Icon.tsx +71 -71
  507. package/packages/icon/src/index.ts +1 -1
  508. package/packages/ime/README.md +72 -72
  509. package/packages/ime/src/IKeyboard.ts +6 -6
  510. package/packages/ime/src/IKeyboardEvent.ts +7 -7
  511. package/packages/ime/src/ImeManager.ts +33 -33
  512. package/packages/ime/src/SystemKeyboard/SystemKeyboard.ts +33 -33
  513. package/packages/ime/src/SystemKeyboard/SystemKeyboardBase.ts +98 -98
  514. package/packages/ime/src/SystemKeyboard/TizenSystemKeyboard.ts +66 -66
  515. package/packages/ime/src/SystemKeyboard/WebosSystemKeyboard.ts +74 -74
  516. package/packages/ime/src/SystemKeyboard/index.tizen.tv.ts +1 -1
  517. package/packages/ime/src/SystemKeyboard/index.ts +1 -1
  518. package/packages/ime/src/SystemKeyboard/index.webos.tv.ts +1 -1
  519. package/packages/ime/src/index.ts +3 -3
  520. package/packages/input/README.md +65 -65
  521. package/packages/input/__mocks__/MockKeyboard.ts +40 -40
  522. package/packages/input/src/Input.scss +9 -9
  523. package/packages/input/src/Input.tsx +267 -267
  524. package/packages/input/src/index.ts +1 -1
  525. package/packages/input/src/utils.ts +71 -71
  526. package/packages/interactable/README.md +38 -38
  527. package/packages/interactable/src/Interactable.tsx +33 -33
  528. package/packages/interactable/src/index.ts +1 -1
  529. package/packages/interactable/src/interface.ts +7 -7
  530. package/packages/ipify/README.md +30 -30
  531. package/packages/ipify/src/index.ts +1 -1
  532. package/packages/ipify/src/ipify.ts +41 -41
  533. package/packages/jsx/README.md +388 -388
  534. package/packages/jsx/src/Component.ts +68 -68
  535. package/packages/jsx/src/createRef.ts +5 -5
  536. package/packages/jsx/src/forwardRef.ts +8 -8
  537. package/packages/jsx/src/index.ts +31 -31
  538. package/packages/jsx/src/jsx-runtime.ts +5 -5
  539. package/packages/jsx/src/manipulation/attachNode.ts +30 -30
  540. package/packages/jsx/src/manipulation/attachNodeBefore.ts +44 -44
  541. package/packages/jsx/src/manipulation/clearNode.ts +14 -14
  542. package/packages/jsx/src/manipulation/detachNode.ts +26 -26
  543. package/packages/jsx/src/manipulation/index.ts +7 -7
  544. package/packages/jsx/src/manipulation/removeNode.ts +18 -18
  545. package/packages/jsx/src/manipulation/replaceNode.ts +42 -42
  546. package/packages/jsx/src/manipulation/swapNodes.ts +53 -53
  547. package/packages/jsx/src/mount/guards.ts +26 -26
  548. package/packages/jsx/src/mount/handleLifecycle.ts +71 -71
  549. package/packages/jsx/src/mount/index.ts +1 -1
  550. package/packages/jsx/src/mount/lifecycle.ts +38 -38
  551. package/packages/jsx/src/mount/lifecycleHelpers.ts +29 -29
  552. package/packages/jsx/src/mount/mount.ts +141 -141
  553. package/packages/jsx/src/mount/namespaces.ts +7 -7
  554. package/packages/jsx/src/mount/props.ts +121 -121
  555. package/packages/jsx/src/nodeUtils.ts +69 -69
  556. package/packages/jsx/src/setText.ts +15 -15
  557. package/packages/jsx/src/test-utils/MountedComponent.ts +50 -50
  558. package/packages/jsx/src/test-utils/README.md +72 -72
  559. package/packages/jsx/src/test-utils/click.ts +7 -7
  560. package/packages/jsx/src/test-utils/enter.ts +4 -4
  561. package/packages/jsx/src/test-utils/index.ts +6 -6
  562. package/packages/jsx/src/test-utils/keydown.ts +27 -27
  563. package/packages/jsx/src/test-utils/keyup.ts +27 -27
  564. package/packages/jsx/src/test-utils/shallow.ts +33 -33
  565. package/packages/jsx/src/test-utils/spec-utils.ts +6 -6
  566. package/packages/jsx/src/textNode.ts +9 -9
  567. package/packages/jsx/src/types.ts +128 -128
  568. package/packages/jsx/src/utils.ts +35 -35
  569. package/packages/jsx/src/virtualDOM.ts +121 -121
  570. package/packages/key-sequence/README.md +44 -44
  571. package/packages/key-sequence/src/KeySequence.ts +56 -56
  572. package/packages/key-sequence/src/arrayEndsWithKeyCombo.ts +22 -22
  573. package/packages/key-sequence/src/index.ts +1 -1
  574. package/packages/key-sequence/src/types.ts +13 -13
  575. package/packages/keyboard/README.md +237 -237
  576. package/packages/keyboard/src/AndroidKeyboard/Keyboard.scss +140 -140
  577. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.1080.scss +2 -2
  578. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.1080.scss +3 -3
  579. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.scss +3 -3
  580. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.scss +2 -2
  581. package/packages/keyboard/src/AndroidKeyboard/Keyboard.tsx +235 -235
  582. package/packages/keyboard/src/AndroidKeyboard/_animated.scss +7 -7
  583. package/packages/keyboard/src/AndroidKeyboard/_sizes.1080.scss +15 -15
  584. package/packages/keyboard/src/AndroidKeyboard/_sizes.scss +15 -15
  585. package/packages/keyboard/src/AndroidKeyboard/icons/arrow_left.svg +6 -6
  586. package/packages/keyboard/src/AndroidKeyboard/icons/arrow_right.svg +6 -6
  587. package/packages/keyboard/src/AndroidKeyboard/icons/key_backspace.svg +12 -12
  588. package/packages/keyboard/src/AndroidKeyboard/index.ts +1 -1
  589. package/packages/keyboard/src/AndroidKeyboard/makeLayout.ts +19 -19
  590. package/packages/keyboard/src/Backdrop/Backdrop.scss +17 -17
  591. package/packages/keyboard/src/Backdrop/Backdrop.styles.1080.scss +2 -2
  592. package/packages/keyboard/src/Backdrop/Backdrop.styles.scss +2 -2
  593. package/packages/keyboard/src/Backdrop/Backdrop.tsx +31 -31
  594. package/packages/keyboard/src/Backdrop/_sizes.1080.scss +2 -2
  595. package/packages/keyboard/src/Backdrop/_sizes.scss +2 -2
  596. package/packages/keyboard/src/DefaultKeyboard/Keyboard.scss +73 -73
  597. package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.1080.scss +2 -2
  598. package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.scss +2 -2
  599. package/packages/keyboard/src/DefaultKeyboard/Keyboard.tsx +155 -155
  600. package/packages/keyboard/src/DefaultKeyboard/_sizes.1080.scss +12 -12
  601. package/packages/keyboard/src/DefaultKeyboard/_sizes.scss +12 -12
  602. package/packages/keyboard/src/DefaultKeyboard/index.ts +1 -1
  603. package/packages/keyboard/src/KeyboardBase.tsx +344 -344
  604. package/packages/keyboard/src/MobiKeyboard/Keyboard.scss +180 -180
  605. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.1080.scss +2 -2
  606. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.1080.scss +3 -3
  607. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.scss +3 -3
  608. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.scss +2 -2
  609. package/packages/keyboard/src/MobiKeyboard/Keyboard.tsx +278 -278
  610. package/packages/keyboard/src/MobiKeyboard/_animated.scss +7 -7
  611. package/packages/keyboard/src/MobiKeyboard/_sizes.1080.scss +10 -10
  612. package/packages/keyboard/src/MobiKeyboard/_sizes.scss +10 -10
  613. package/packages/keyboard/src/MobiKeyboard/icons/arrow_left.svg +6 -6
  614. package/packages/keyboard/src/MobiKeyboard/icons/arrow_right.svg +6 -6
  615. package/packages/keyboard/src/MobiKeyboard/icons/key_backspace.svg +12 -12
  616. package/packages/keyboard/src/MobiKeyboard/icons/key_space.svg +6 -6
  617. package/packages/keyboard/src/MobiKeyboard/index.ts +1 -1
  618. package/packages/keyboard/src/MobiKeyboard/utils.ts +19 -19
  619. package/packages/keyboard/src/QwertyKeyboardBase/QwertyKeyboardBase.tsx +54 -54
  620. package/packages/keyboard/src/ShiftMode.ts +25 -25
  621. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +168 -168
  622. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.1080.scss +2 -2
  623. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.scss +2 -2
  624. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +353 -353
  625. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -7
  626. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.scss +7 -7
  627. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/index.ts +1 -1
  628. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.scss +81 -81
  629. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -2
  630. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -2
  631. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +32 -32
  632. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +32 -32
  633. package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_left.svg +9 -9
  634. package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_right.svg +9 -9
  635. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_backspace.svg +9 -9
  636. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_language.svg +20 -20
  637. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift.svg +9 -9
  638. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift_active.svg +9 -9
  639. package/packages/keyboard/src/WhitelabelKeyboard/index.ts +2 -2
  640. package/packages/keyboard/src/WhitelabelKeyboard/layouts/arabic.ts +27 -27
  641. package/packages/keyboard/src/WhitelabelKeyboard/layouts/burmese.ts +27 -27
  642. package/packages/keyboard/src/WhitelabelKeyboard/layouts/dari.ts +28 -28
  643. package/packages/keyboard/src/WhitelabelKeyboard/layouts/hebrew.ts +28 -28
  644. package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +14 -14
  645. package/packages/keyboard/src/WhitelabelKeyboard/layouts/korean.ts +26 -26
  646. package/packages/keyboard/src/WhitelabelKeyboard/layouts/latin.ts +26 -26
  647. package/packages/keyboard/src/WhitelabelKeyboard/layouts/pashto.ts +27 -27
  648. package/packages/keyboard/src/WhitelabelKeyboard/layouts/persian.ts +27 -27
  649. package/packages/keyboard/src/WhitelabelKeyboard/layouts/russian.ts +27 -27
  650. package/packages/keyboard/src/WhitelabelKeyboard/layouts/special.ts +28 -28
  651. package/packages/keyboard/src/WhitelabelKeyboard/layouts/tibetan.ts +26 -26
  652. package/packages/keyboard/src/WhitelabelKeyboard/layouts/turkish.ts +26 -26
  653. package/packages/keyboard/src/WhitelabelKeyboard/layouts/ukrainian.ts +27 -27
  654. package/packages/keyboard/src/WhitelabelKeyboard/layouts/urdu.ts +26 -26
  655. package/packages/keyboard/src/WhitelabelKeyboard/types.ts +28 -28
  656. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.scss +105 -105
  657. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.1080.scss +2 -2
  658. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.scss +2 -2
  659. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.tsx +161 -161
  660. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -7
  661. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.scss +7 -7
  662. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/index.ts +1 -1
  663. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.scss +62 -62
  664. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -2
  665. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -2
  666. package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.1080.scss +29 -29
  667. package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.scss +29 -29
  668. package/packages/keyboard/src/WhitelabelNumericKeyboard/icons/key_backspace.svg +9 -9
  669. package/packages/keyboard/src/WhitelabelNumericKeyboard/index.ts +2 -2
  670. package/packages/keyboard/src/WhitelabelNumericKeyboard/layout.ts +14 -14
  671. package/packages/keyboard/src/hwKeyboardEventToChar.ts +11 -11
  672. package/packages/keyboard/src/types/index.ts +11 -11
  673. package/packages/keyboard/src/utils/caret.ts +48 -48
  674. package/packages/keyboard/src/utils/generateFocusMatrixFromStringMatrix.ts +12 -12
  675. package/packages/keyboard/src/utils/input.ts +40 -40
  676. package/packages/l10n/README.md +120 -120
  677. package/packages/l10n/interface.ts +1 -1
  678. package/packages/l10n/locales/cs.ts +4 -4
  679. package/packages/l10n/locales/en-001.ts +4 -4
  680. package/packages/l10n/locales/en-us.ts +4 -4
  681. package/packages/l10n/src/Locale.tsx +44 -44
  682. package/packages/l10n/src/date/common.ts +165 -165
  683. package/packages/l10n/src/date/cs.ts +89 -89
  684. package/packages/l10n/src/date/de.ts +97 -97
  685. package/packages/l10n/src/date/en-001.ts +76 -76
  686. package/packages/l10n/src/date/en-common.ts +55 -55
  687. package/packages/l10n/src/date/en-us.ts +83 -83
  688. package/packages/l10n/src/date/es.ts +71 -71
  689. package/packages/l10n/src/date/fr.ts +94 -94
  690. package/packages/l10n/src/date/he.ts +101 -101
  691. package/packages/l10n/src/date/iso.ts +63 -63
  692. package/packages/l10n/src/date/types.ts +56 -56
  693. package/packages/l10n/src/index.ts +2 -2
  694. package/packages/l10n/src/l10n.ts +112 -112
  695. package/packages/l10n/src/types.ts +22 -22
  696. package/packages/list/AttachDetachItem/README.md +128 -128
  697. package/packages/list/AttachDetachItem/index.ts +3 -3
  698. package/packages/list/BasicList/README.md +71 -71
  699. package/packages/list/BasicList/index.ts +1 -1
  700. package/packages/list/CenteredList/README.md +42 -42
  701. package/packages/list/CenteredList/index.ts +1 -1
  702. package/packages/list/EdgeOffsetList/README.md +58 -58
  703. package/packages/list/EdgeOffsetList/index.ts +1 -1
  704. package/packages/list/FirstOnlyList/README.md +39 -39
  705. package/packages/list/FirstOnlyList/index.ts +1 -1
  706. package/packages/list/FirstOnlyVariedList/README.md +105 -105
  707. package/packages/list/FirstOnlyVariedList/index.ts +1 -1
  708. package/packages/list/FixedToEndList/README.md +42 -42
  709. package/packages/list/FixedToEndList/index.ts +1 -1
  710. package/packages/list/Item/index.ts +1 -1
  711. package/packages/list/README.md +193 -193
  712. package/packages/list/src/AttachDetachItem/AttachDetachItem.tsx +96 -96
  713. package/packages/list/src/AttachDetachItem/prepareAttachDetachItemData.ts +13 -13
  714. package/packages/list/src/Base/Base.tsx +392 -392
  715. package/packages/list/src/Base/MouseNavigation/MouseNavigation.tsx +82 -82
  716. package/packages/list/src/Base/MouseNavigation/MouseNavigationFallback.ts +4 -4
  717. package/packages/list/src/Base/MouseNavigation/index.tizen.tv.ts +1 -1
  718. package/packages/list/src/Base/MouseNavigation/index.ts +1 -1
  719. package/packages/list/src/Base/MouseNavigation/index.webos.tv.ts +1 -1
  720. package/packages/list/src/Base/MouseNavigation/index.webtv.ts +1 -1
  721. package/packages/list/src/Base/index.ts +1 -1
  722. package/packages/list/src/Base/interface.ts +39 -39
  723. package/packages/list/src/BasicList/BasicList.tsx +178 -178
  724. package/packages/list/src/BasicList/config.ts +13 -13
  725. package/packages/list/src/CenteredList/CenteredList.tsx +116 -116
  726. package/packages/list/src/CenteredList/config.ts +13 -13
  727. package/packages/list/src/CenteredList/controller.ts +46 -46
  728. package/packages/list/src/CenteredList/interface.ts +10 -10
  729. package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +173 -173
  730. package/packages/list/src/EdgeOffsetList/config.ts +13 -13
  731. package/packages/list/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -54
  732. package/packages/list/src/FirstOnlyList/FirstOnlyList.tsx +122 -122
  733. package/packages/list/src/FirstOnlyList/config.ts +13 -13
  734. package/packages/list/src/FirstOnlyList/controller.ts +11 -11
  735. package/packages/list/src/FirstOnlyVariedList/FirstOnlyVariedList.tsx +132 -132
  736. package/packages/list/src/FirstOnlyVariedList/config.ts +13 -13
  737. package/packages/list/src/FixedToEndList/FixedToEndList.tsx +125 -125
  738. package/packages/list/src/FixedToEndList/config.ts +13 -13
  739. package/packages/list/src/FixedToEndList/controller.ts +44 -44
  740. package/packages/list/src/UnifiedListController/UnifiedListController.ts +258 -258
  741. package/packages/list/src/UnifiedListController/UnifiedListControllerBase.ts +241 -241
  742. package/packages/list/src/UnifiedListController/UnifiedVariedListController.ts +241 -241
  743. package/packages/list/src/UnifiedListController/interface.ts +81 -81
  744. package/packages/list/src/__test__/utils.spec.ts +59 -59
  745. package/packages/list/src/animate.animated.ts +1 -1
  746. package/packages/list/src/animate.ts +1 -1
  747. package/packages/list/src/index.ts +1 -1
  748. package/packages/list/src/interface.ts +48 -48
  749. package/packages/list/src/mocks/index.tsx +55 -55
  750. package/packages/list/src/types.ts +132 -132
  751. package/packages/list/src/utils.ts +142 -142
  752. package/packages/list/utils/index.ts +1 -1
  753. package/packages/logger/README.md +117 -117
  754. package/packages/logger/src/LoggerManager.ts +60 -60
  755. package/packages/logger/src/LoggerService.ts +43 -43
  756. package/packages/logger/src/__mocks__/LoggerBase.ts +13 -13
  757. package/packages/logger/src/index.ts +3 -3
  758. package/packages/logger/src/loggers/ConsoleLogger/ConsoleLogger.ts +51 -51
  759. package/packages/logger/src/loggers/ConsoleLogger/README.md +39 -39
  760. package/packages/logger/src/loggers/ConsoleLogger/index.ts +1 -1
  761. package/packages/logger/src/loggers/LoggerBase/LoggerBase.ts +67 -67
  762. package/packages/logger/src/loggers/LoggerBase/README.md +69 -69
  763. package/packages/logger/src/loggers/LoggerBase/index.ts +1 -1
  764. package/packages/logger/src/loggers/SentryLogger/README.md +98 -98
  765. package/packages/logger/src/loggers/SentryLogger/Sentry.ts +2 -2
  766. package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +179 -179
  767. package/packages/logger/src/loggers/SentryLogger/index.ts +2 -2
  768. package/packages/logger/src/loggers/SentryLogger/mock.ts +6 -6
  769. package/packages/logger/src/loggers/index.ts +2 -2
  770. package/packages/logger/src/types.ts +46 -46
  771. package/packages/logger/src/utils/deviceInfo.ts +25 -25
  772. package/packages/logger/src/utils/index.ts +1 -1
  773. package/packages/lottie-animations/README.md +217 -217
  774. package/packages/lottie-animations/src/LottieAnimation.tsx +125 -125
  775. package/packages/lottie-animations/src/index.ts +7 -7
  776. package/packages/menu/README.md +90 -90
  777. package/packages/menu/WhitelabelMenu/index.ts +1 -1
  778. package/packages/menu/WhitelabelMenu/interface.ts +2 -2
  779. package/packages/menu/WhitelabelMenu/styles.ts +2 -2
  780. package/packages/menu/interface.ts +3 -3
  781. package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +211 -211
  782. package/packages/menu/src/MenuAndContentContainer/index.ts +1 -1
  783. package/packages/menu/src/MenuAndContentContainer/interface.ts +164 -164
  784. package/packages/menu/src/MenuAndContentContainer/service.ts +5 -5
  785. package/packages/menu/src/WhitelabelMenu/SideMenu.scss +41 -41
  786. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.1080.scss +2 -2
  787. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.1080.scss +3 -3
  788. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.scss +3 -3
  789. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.scss +2 -2
  790. package/packages/menu/src/WhitelabelMenu/SideMenu.tsx +248 -248
  791. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.scss +56 -56
  792. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.1080.scss +2 -2
  793. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.1080.scss +3 -3
  794. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.scss +3 -3
  795. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.scss +2 -2
  796. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.tsx +78 -78
  797. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_animated.scss +12 -12
  798. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.1080.scss +17 -17
  799. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.scss +17 -17
  800. package/packages/menu/src/WhitelabelMenu/SideMenuItem/index.ts +1 -1
  801. package/packages/menu/src/WhitelabelMenu/SideMenuItem/interface.ts +49 -49
  802. package/packages/menu/src/WhitelabelMenu/SideMenuItem/rtl.scss +12 -12
  803. package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.1080.ts +2 -2
  804. package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.ts +2 -2
  805. package/packages/menu/src/WhitelabelMenu/SideMenuItem/styles.ts +1 -1
  806. package/packages/menu/src/WhitelabelMenu/VisualController.animated.ts +48 -48
  807. package/packages/menu/src/WhitelabelMenu/VisualController.ts +20 -20
  808. package/packages/menu/src/WhitelabelMenu/VisualControllerBase.ts +71 -71
  809. package/packages/menu/src/WhitelabelMenu/_animated.scss +39 -39
  810. package/packages/menu/src/WhitelabelMenu/_sizes.1080.scss +14 -14
  811. package/packages/menu/src/WhitelabelMenu/_sizes.scss +14 -14
  812. package/packages/menu/src/WhitelabelMenu/constants.animated.ts +1 -1
  813. package/packages/menu/src/WhitelabelMenu/constants.ts +1 -1
  814. package/packages/menu/src/WhitelabelMenu/index.ts +1 -1
  815. package/packages/menu/src/WhitelabelMenu/interface.ts +14 -14
  816. package/packages/menu/src/WhitelabelMenu/rtl.scss +22 -22
  817. package/packages/menu/src/WhitelabelMenu/sizes.1080.ts +1 -1
  818. package/packages/menu/src/WhitelabelMenu/sizes.ts +1 -1
  819. package/packages/menu/src/WhitelabelMenu/styles.ts +1 -1
  820. package/packages/menu/src/WhitelabelMenu/utils.ts +34 -34
  821. package/packages/menu/src/index.ts +2 -2
  822. package/packages/modal-service/README.md +50 -50
  823. package/packages/modal-service/src/IModal.ts +3 -3
  824. package/packages/modal-service/src/ModalService.scss +7 -7
  825. package/packages/modal-service/src/ModalService.styles.1080.scss +2 -2
  826. package/packages/modal-service/src/ModalService.styles.scss +2 -2
  827. package/packages/modal-service/src/ModalService.tsx +102 -102
  828. package/packages/modal-service/src/_sizes.1080.scss +2 -2
  829. package/packages/modal-service/src/_sizes.scss +2 -2
  830. package/packages/modal-service/src/index.ts +2 -2
  831. package/packages/mouse-navigation/README.md +105 -105
  832. package/packages/mouse-navigation/src/ArrowNavigation/Arrow.tsx +58 -58
  833. package/packages/mouse-navigation/src/ArrowNavigation/ArrowNavigation.tsx +95 -95
  834. package/packages/mouse-navigation/src/ArrowNavigation/__test__/Arrow.spec.tsx +35 -35
  835. package/packages/mouse-navigation/src/ArrowNavigation/__test__/ArrowNavigation.spec.tsx +45 -45
  836. package/packages/mouse-navigation/src/ArrowNavigation/index.tsx +1 -1
  837. package/packages/mouse-navigation/src/MouseElementWrapper.tsx +70 -70
  838. package/packages/mouse-navigation/src/MouseNavigation.tsx +157 -157
  839. package/packages/mouse-navigation/src/MouseNavigationInterface.ts +8 -8
  840. package/packages/mouse-navigation/src/index.ts +3 -3
  841. package/packages/numeric-zapper/README.md +153 -153
  842. package/packages/numeric-zapper/src/NumericZapper.scss +20 -20
  843. package/packages/numeric-zapper/src/NumericZapper.styles.1080.scss +2 -2
  844. package/packages/numeric-zapper/src/NumericZapper.styles.scss +2 -2
  845. package/packages/numeric-zapper/src/NumericZapper.tsx +257 -257
  846. package/packages/numeric-zapper/src/ZapperAllower.ts +15 -15
  847. package/packages/numeric-zapper/src/ZapperService.tsx +8 -8
  848. package/packages/numeric-zapper/src/_sizes.1080.scss +7 -7
  849. package/packages/numeric-zapper/src/_sizes.scss +7 -7
  850. package/packages/numeric-zapper/src/index.ts +4 -4
  851. package/packages/numeric-zapper/src/interface.ts +1 -1
  852. package/packages/numeric-zapper/src/styles.ts +1 -1
  853. package/packages/perf-utils/README.md +7 -7
  854. package/packages/perf-utils/src/array/filter.ts +1 -1
  855. package/packages/perf-utils/src/array/find.ts +1 -1
  856. package/packages/perf-utils/src/array/findIndex.ts +1 -1
  857. package/packages/perf-utils/src/array/forEach.ts +1 -1
  858. package/packages/perf-utils/src/array/includes.ts +1 -1
  859. package/packages/perf-utils/src/array/includesNaN.ts +1 -1
  860. package/packages/perf-utils/src/array/index.ts +1 -1
  861. package/packages/perf-utils/src/array/map.ts +1 -1
  862. package/packages/picker/README.md +70 -70
  863. package/packages/picker/src/DatePicker.tsx +55 -55
  864. package/packages/picker/src/ModalPicker/Checkbox.tsx +38 -38
  865. package/packages/picker/src/ModalPicker/PickerItem.tsx +86 -86
  866. package/packages/picker/src/ModalPicker/PickerModal.tsx +98 -98
  867. package/packages/picker/src/ModalPicker/index.ts +1 -1
  868. package/packages/picker/src/ModalPicker/modalPicker.tsx +48 -48
  869. package/packages/picker/src/Picker.tsx +127 -127
  870. package/packages/picker/src/index.ts +3 -3
  871. package/packages/picker/src/types.ts +25 -25
  872. package/packages/pin-input/README.md +55 -55
  873. package/packages/pin-input/src/PinInput.scss +5 -5
  874. package/packages/pin-input/src/PinInput.tsx +169 -169
  875. package/packages/pin-input/src/index.ts +1 -1
  876. package/packages/player-ui/README.md +207 -207
  877. package/packages/player-ui/src/BackwardButton.tsx +41 -41
  878. package/packages/player-ui/src/CurrentTime.tsx +56 -56
  879. package/packages/player-ui/src/Duration.tsx +60 -60
  880. package/packages/player-ui/src/ForwardButton.tsx +41 -41
  881. package/packages/player-ui/src/PauseButton.tsx +65 -65
  882. package/packages/player-ui/src/PlayButton.tsx +57 -57
  883. package/packages/player-ui/src/PlayPauseButton.tsx +63 -63
  884. package/packages/player-ui/src/PlayerInteractable.tsx +67 -67
  885. package/packages/player-ui/src/PlayerTime.tsx +57 -57
  886. package/packages/player-ui/src/PlayerUI.tsx +267 -267
  887. package/packages/player-ui/src/RemainingTime.tsx +74 -74
  888. package/packages/player-ui/src/Seekbar.tsx +274 -274
  889. package/packages/player-ui/src/Seeking.ts +163 -163
  890. package/packages/player-ui/src/StopButton.tsx +35 -35
  891. package/packages/player-ui/src/Subtitles.tsx +151 -151
  892. package/packages/player-ui/src/index.ts +15 -15
  893. package/packages/player-ui/src/mocks.ts +65 -65
  894. package/packages/player-ui/src/timeUtils.ts +142 -142
  895. package/packages/player-ui/src/types.ts +48 -48
  896. package/packages/progress-bar/README.md +31 -31
  897. package/packages/progress-bar/src/ProgressBar.tsx +41 -41
  898. package/packages/progress-bar/src/index.ts +1 -1
  899. package/packages/progress-bar/src/interface.ts +14 -14
  900. package/packages/qr-code/README.md +79 -79
  901. package/packages/qr-code/src/QRCode.tsx +39 -39
  902. package/packages/qr-code/src/index.ts +2 -2
  903. package/packages/qr-code/src/qrGenerator/__external__/constants.ts +23 -23
  904. package/packages/qr-code/src/qrGenerator/__external__/qrcode.d.ts +31 -31
  905. package/packages/qr-code/src/qrGenerator/__external__/qrcode.js +618 -618
  906. package/packages/qr-code/src/qrGenerator/generateQr.ts +7 -7
  907. package/packages/qr-code/src/qrGenerator/index.ts +3 -3
  908. package/packages/router/README.md +163 -163
  909. package/packages/router/src/Route.tsx +166 -166
  910. package/packages/router/src/Router.tsx +220 -220
  911. package/packages/router/src/focusActiveRoute.ts +5 -5
  912. package/packages/router/src/history.ts +31 -31
  913. package/packages/router/src/index.ts +6 -6
  914. package/packages/router/src/types.ts +13 -13
  915. package/packages/router/src/utils.ts +37 -35
  916. package/packages/runtime-config/README.md +37 -37
  917. package/packages/runtime-config/src/Config.ts +44 -44
  918. package/packages/runtime-config/src/index.ts +1 -1
  919. package/packages/sass-utils/README.md +197 -197
  920. package/packages/sass-utils/src/box-shadow.scss +5 -5
  921. package/packages/sass-utils/src/ellipsis.scss +15 -15
  922. package/packages/sass-utils/src/linear-gradient.scss +43 -43
  923. package/packages/sass-utils/src/prefix-property.scss +7 -7
  924. package/packages/sass-utils/src/prefix-value.scss +6 -6
  925. package/packages/sass-utils/src/prefix.scss +6 -6
  926. package/packages/sass-utils/src/scale.1080.scss +3 -3
  927. package/packages/sass-utils/src/scale.720.scss +5 -5
  928. package/packages/sass-utils/src/transform.scss +5 -5
  929. package/packages/sass-utils/src/transition.scss +6 -6
  930. package/packages/scheduler/README.md +55 -55
  931. package/packages/scheduler/src/Scheduler.ts +43 -43
  932. package/packages/scheduler/src/Task.ts +72 -72
  933. package/packages/scheduler/src/index.ts +4 -4
  934. package/packages/scheduler/src/timeProvider.ts +3 -3
  935. package/packages/scroll-text/README.md +77 -77
  936. package/packages/scroll-text/src/Base.tsx +146 -146
  937. package/packages/scroll-text/src/ScrollText.animated.tsx +80 -80
  938. package/packages/scroll-text/src/ScrollText.tsx +53 -53
  939. package/packages/scroll-text/src/ScrollTextBaseClass.tsx +86 -86
  940. package/packages/scroll-text/src/index.ts +1 -1
  941. package/packages/scroller/README.md +77 -77
  942. package/packages/scroller/src/Scroller.tsx +51 -51
  943. package/packages/scroller/src/index.ts +1 -1
  944. package/packages/splash/AnimatedSplash.ts +1 -1
  945. package/packages/splash/AnimatedSplashAnimated.ts +1 -1
  946. package/packages/splash/AnimatedSplashBasic.ts +1 -1
  947. package/packages/splash/AutomaticSplashAnimated.ts +1 -1
  948. package/packages/splash/AutomaticSplashBasic.ts +1 -1
  949. package/packages/splash/README.md +93 -93
  950. package/packages/splash/StaticSplash.ts +1 -1
  951. package/packages/splash/StaticSplashAnimated.ts +1 -1
  952. package/packages/splash/StaticSplashBasic.ts +1 -1
  953. package/packages/splash/src/AnimatedSplash.animated.tsx +78 -78
  954. package/packages/splash/src/AnimatedSplash.basic.tsx +37 -37
  955. package/packages/splash/src/AutomaticSplash.animated.tsx +20 -20
  956. package/packages/splash/src/AutomaticSplash.basic.tsx +20 -20
  957. package/packages/splash/src/Splash.scss +8 -8
  958. package/packages/splash/src/StaticSplash.animated.tsx +48 -48
  959. package/packages/splash/src/StaticSplash.basic.tsx +26 -26
  960. package/packages/splash/src/index.animated.ts +1 -1
  961. package/packages/splash/src/index.ts +1 -1
  962. package/packages/splash/src/styles.ts +1 -1
  963. package/packages/splash/src/types.ts +20 -20
  964. package/packages/storage/README.md +61 -61
  965. package/packages/storage/src/CookieStorage/CookieStorage.ts +57 -57
  966. package/packages/storage/src/CookieStorage/index.ts +1 -1
  967. package/packages/storage/src/LocalStorage/LocalStorage.ts +58 -58
  968. package/packages/storage/src/LocalStorage/index.ts +1 -1
  969. package/packages/storage/src/index.ts +2 -2
  970. package/packages/storage/src/shared.ts +41 -41
  971. package/packages/storage/src/types.ts +33 -33
  972. package/packages/throbber/README.md +53 -53
  973. package/packages/throbber/src/Throbber.scss +52 -52
  974. package/packages/throbber/src/Throbber.tsx +19 -19
  975. package/packages/throbber/src/ThrobberService.tsx +55 -55
  976. package/packages/throbber/src/controlsHandling.ts +14 -14
  977. package/packages/throbber/src/index.ts +2 -2
  978. package/packages/time/README.md +116 -116
  979. package/packages/time/src/Time.ts +257 -257
  980. package/packages/time/src/adapters/24iMediaTimeApi.ts +47 -47
  981. package/packages/time/src/adapters/worldTimeApi.ts +74 -74
  982. package/packages/time/src/constants.ts +14 -14
  983. package/packages/time/src/index.ts +1 -1
  984. package/packages/time/src/services/24iMediaTimeApi/24iMediaTimeApi.ts +43 -43
  985. package/packages/time/src/services/24iMediaTimeApi/index.ts +6 -6
  986. package/packages/time/src/services/worldTimeApi/index.ts +7 -7
  987. package/packages/time/src/services/worldTimeApi/types.ts +75 -75
  988. package/packages/time/src/services/worldTimeApi/worldTimeApi.ts +77 -77
  989. package/packages/time/src/types.ts +39 -39
  990. package/packages/time/src/utils.ts +79 -79
  991. package/packages/toast/README.md +116 -116
  992. package/packages/toast/src/Toast/IVisualController.ts +7 -7
  993. package/packages/toast/src/Toast/Toast.scss +22 -22
  994. package/packages/toast/src/Toast/Toast.styles.1080.scss +2 -2
  995. package/packages/toast/src/Toast/Toast.styles.scss +2 -2
  996. package/packages/toast/src/Toast/Toast.tsx +83 -83
  997. package/packages/toast/src/Toast/VisualController.animated.ts +20 -20
  998. package/packages/toast/src/Toast/VisualController.ts +9 -9
  999. package/packages/toast/src/Toast/_sizes.1080.scss +8 -8
  1000. package/packages/toast/src/Toast/_sizes.scss +8 -8
  1001. package/packages/toast/src/Toast/index.ts +2 -2
  1002. package/packages/toast/src/Toast/styles.ts +1 -1
  1003. package/packages/toast/src/ToastService.scss +8 -8
  1004. package/packages/toast/src/ToastService.styles.1080.scss +2 -2
  1005. package/packages/toast/src/ToastService.styles.scss +2 -2
  1006. package/packages/toast/src/ToastService.tsx +59 -59
  1007. package/packages/toast/src/_sizes.1080.scss +2 -2
  1008. package/packages/toast/src/_sizes.scss +2 -2
  1009. package/packages/toast/src/index.ts +4 -4
  1010. package/packages/toast/src/types.ts +4 -4
  1011. package/packages/types-bigscreen-jsx/README.md +12 -12
  1012. package/packages/types-bigscreen-jsx/global.d.ts +0 -0
  1013. package/packages/types-bigscreen-jsx/index.d.ts +32 -32
  1014. package/packages/types-bigscreen-jsx/src/copyTypes.js +14 -14
  1015. package/packages/utils/README.md +363 -363
  1016. package/packages/utils/src/addClass.ts +9 -9
  1017. package/packages/utils/src/counter.ts +49 -49
  1018. package/packages/utils/src/debounce.ts +54 -54
  1019. package/packages/utils/src/displayToggler.scss +3 -3
  1020. package/packages/utils/src/displayToggler.ts +38 -38
  1021. package/packages/utils/src/elementUtils.ts +105 -105
  1022. package/packages/utils/src/forceReflow.ts +14 -14
  1023. package/packages/utils/src/generateUuid.ts +19 -19
  1024. package/packages/utils/src/index.ts +43 -43
  1025. package/packages/utils/src/keyPress/index.ts +6 -6
  1026. package/packages/utils/src/keyPress/keyPressSimulator.ts +74 -74
  1027. package/packages/utils/src/keyPress/simulateKeyPress.ts +25 -25
  1028. package/packages/utils/src/memoryInfo.ts +21 -21
  1029. package/packages/utils/src/nTimes.ts +9 -9
  1030. package/packages/utils/src/noop.ts +1 -1
  1031. package/packages/utils/src/offsetPosition.ts +56 -56
  1032. package/packages/utils/src/removeClass.ts +9 -9
  1033. package/packages/utils/src/scaledImage.ts +24 -24
  1034. package/packages/utils/src/sizes.1080.ts +1 -1
  1035. package/packages/utils/src/sizes.ts +1 -1
  1036. package/packages/utils/src/stopEvent.ts +10 -10
  1037. package/packages/utils/src/textUtils.ts +57 -57
  1038. package/packages/utils/src/timeConstants.ts +11 -11
  1039. package/packages/utils/src/timers/createInterval.ts +19 -19
  1040. package/packages/utils/src/timers/createTimeout.ts +22 -22
  1041. package/packages/utils/src/timers/index.ts +4 -4
  1042. package/packages/utils/src/timers/runAsync.ts +3 -3
  1043. package/packages/utils/src/timers/types.ts +9 -9
  1044. package/packages/utils/src/wait.ts +3 -3
  1045. package/packages/utils/src/xhr/__mocks__/xhr.ts +29 -29
  1046. package/packages/utils/src/xhr/index.ts +11 -11
  1047. package/packages/utils/src/xhr/xhrSend.ts +141 -141
  1048. package/packages/utils/src/xhr/xhrSendRetry.ts +79 -79
  1049. package/packages/volume-control/README.md +79 -79
  1050. package/packages/volume-control/src/IVolumeControlUI.ts +26 -26
  1051. package/packages/volume-control/src/VolumeControlService.tsx +110 -110
  1052. package/packages/volume-control/src/VolumeControlUI/VisualController.animated.ts +28 -28
  1053. package/packages/volume-control/src/VolumeControlUI/VisualController.ts +3 -3
  1054. package/packages/volume-control/src/VolumeControlUI/VisualControllerBase.ts +26 -26
  1055. package/packages/volume-control/src/VolumeControlUI/VolumeControl.scss +18 -18
  1056. package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.animated.scss +2 -2
  1057. package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.scss +1 -1
  1058. package/packages/volume-control/src/VolumeControlUI/VolumeControlUI.tsx +80 -80
  1059. package/packages/volume-control/src/VolumeControlUI/_animated.scss +8 -8
  1060. package/packages/volume-control/src/VolumeControlUI/index.ts +1 -1
  1061. package/packages/volume-control/src/__mocks__/VolumeControlUIMock.tsx +22 -22
  1062. package/packages/volume-control/src/index.ts +2 -2
  1063. package/packages/zapping/README.md +87 -87
  1064. package/packages/zapping/src/ChannelZapping.ts +143 -143
  1065. package/packages/zapping/src/Zapping.tsx +115 -115
  1066. package/packages/zapping/src/index.ts +1 -1
  1067. package/packages/zapping/src/interface.ts +1 -1
  1068. package/utils/create-export-maps/index.ts +3 -3
  1069. package/utils/create-export-maps/src/__tests__/createExportMaps.spec.ts +50 -50
  1070. package/utils/create-export-maps/src/createExportMaps.ts +61 -61
  1071. package/utils/create-package/README.md +39 -39
  1072. package/utils/create-package/src/createPackage.ts +72 -72
  1073. package/utils/create-package/src/index.ts +3 -3
  1074. package/utils/create-package/src/questionnaire/questions.ts +19 -19
  1075. package/utils/create-package/src/settings/Settings.ts +5 -5
  1076. package/utils/create-package/src/types.ts +4 -4
  1077. package/utils/create-package/templates/typescript/README.md +8 -8
  1078. package/utils/create-package/templates/typescript/exports.json +6 -6
  1079. package/utils/run-scripts/index.ts +3 -3
  1080. package/utils/run-scripts/src/__tests__/runScripts.spec.ts +45 -45
  1081. package/utils/run-scripts/src/runScripts.ts +20 -20
@@ -1,460 +1,460 @@
1
- ---
2
- id: README
3
- title: i18n
4
- hide_title: true
5
- sidebar_label: i18n
6
- ---
7
-
8
- # i18n
9
- Internationalization for SmartApps BIGscreens is written with i18n used on SmartApps in mind.
10
- This means that it can use the same resources as their SmartApps counterparts.
11
- References:
12
- - [i18next](https://www.i18next.com/translation-function/essentials)
13
- - [smartapps i18n](https://github.com/24i/prd-nxg-sdk-ui/tree/develop/packages/sdk%40quarks/src/i18n)
14
-
15
- It is based on i18next interface (smartapps uses i18next directly under the hood). But since the i18next
16
- is a very large library and not all its features are utilized, the smartapps-bigscreen version
17
- is code and feature split for smaller bundle size and better performance.
18
-
19
- ## Usage
20
-
21
- ### Initialization
22
- ```ts
23
- import { i18n } from '@24i/bigscreen-sdk/i18n';
24
- import { en } from '../i18n/en';
25
- import { de } from '../i18n/de';
26
-
27
- const DICTIONARY = { en, de };
28
-
29
- i18n.init({
30
- resources: DICTIONARY, // i18next format of resources, optional
31
- lng: 'cs', // default language, mandatory, should be ISO 639-1 to have plurals working correctly
32
- fallbackLng: 'en', // fallback language if default not found, optional, defaults to 'en'
33
- defaultNS: 'common', // default NS in resources, optional, defaults to 'translation'
34
- keySeparator: '_', // default key separator, optional, defaults to '.'
35
- nsSeparator: '|', // default ns separator, optional, defaults to ':'
36
- });
37
- ```
38
-
39
- ### Translating
40
- ```tsx
41
- import { t } from '@24i/bigscreen-sdk/i18n';
42
-
43
- const FetchError = ({ errorCode }) => (
44
- <div className="error">
45
- {t([`errors:server.${errorCode}`, 'errors:server.unknown'])}
46
- </div>
47
- );
48
- ```
49
- `t` is a function that under the hood returns a component. It takes two parameters:
50
- - `key: string | string[]` - translation key or an array of translation keys
51
- - `options: TranslationOptions | string` - options for a single translation or a default value.
52
-
53
- When the language changes it should update the translation automatically.
54
-
55
- ### Typed translation functions
56
- If you want to have more security, you can try using typed translation functions:
57
- - `getTypedT` - for typed `t` function for use in JSX
58
- - `getTypedI18nT` - for typed `i18n.t` function for getting simple string
59
-
60
- #### Usage
61
- ```ts
62
- // For global functions
63
- import { getTypedT, getTypedI18nT } from '@24i/bigscreen-sdk/i18n';
64
- import { en } from './dictionaries/en';
65
-
66
- export const t = getTypedT<typeof en>();
67
- export const i18nT = getTypedT<typeof en>();
68
-
69
- // Namespaced in components for example
70
- import { getTypedT } from '@24i/bigscreen-sdk/i18n';
71
- import { en } from '../../i18n/dictionaries/en';
72
-
73
- const t = getTypedT<typeof en['components']['epg']>('components.epg.');
74
- ```
75
- Try it at: [https://tsplay.dev/Nd4VdN](https://tsplay.dev/Nd4VdN)
76
-
77
- ### Text direction
78
- ```tsx
79
- import { isRtl } from '@24i/bigscreen-sdk/i18n';
80
-
81
- const offset = isRtl() ? -100 : 100;
82
- ```
83
-
84
- ### Translation Key
85
- Translation key is a string in the format: `namespace:path.to.key`.
86
- - namespace - optional, overrides `defaultNS` setting, has higher priority than `ns` in options
87
- - path - optional, path in resources to find the key
88
- - key - name of the key in the path to choose the translation
89
-
90
- If no translation is found, the full-length translation key (including namespace and path) will be
91
- returned instead.
92
-
93
- If you use an array of translation keys, the first found translation will be used. If none of them is found,
94
- the last key in its full length will be returned.
95
-
96
- ### Translation Options
97
- Translation Options is an object that can change the behaviour of the translating. Supported:
98
- - `lng: string` - set language to use
99
- - `defaultValue?: string` - default value to use
100
- - `fallbackLng?: string` - override i18n fallback language
101
- - `ns?: string` - override namespace (ns in key has higher priority)
102
- - `keySeparator?: string` - change key separator
103
- - `nsSeparator?: string` - change ns separator
104
- - `middlewares?: MiddlewareSetup[]` - list of middlewares to be used with this translation
105
-
106
- ## addResourceBundle
107
- This utility allows you to dynamically add new resources. It is useful if you download resources from the API.
108
- If you want to add more languages/namespace, you will have to call `addResourceBundle` for each language/namespace.
109
- ```ts
110
- import { addResourceBundle } from '@24i/bigscreen-sdk/i18n/utils/addResourceBundle';
111
-
112
- addResourceBundle(
113
- language: string, // language of the bundle
114
- namespace: string, // namespace of the bundle
115
- resources: NamespaceResource, // dictionary of the given namespace
116
- deep: boolean = false, // If set to true will deeply add/replace current dictionary, false will overwrite it at the root level
117
- overwrite: boolean = false, // If deep set to true, this sets whether you only add (false) or also replace existing (true) translations
118
- ) => void;
119
- ```
120
-
121
- ## i18n interface
122
- - `init(options: InitOptions) => void` - see [Initialization](#Initialization)
123
- - `t(translationKey: string | string[], options?: TranslationOptions | string) => string` - translating function
124
- - `getLanguage() => string` - returns current language
125
- - `getLanguages() => string[]` - returns all languages found in resources
126
- - `setLanguage(language: string) => void` - sets the current language
127
- - `middleware(...middlewares: MiddlewareSetup[]) => void` - see [Middlewares](#Middlewares)
128
- - `addEventListener(event: 'languagechange', listener: () => void) => void` - adding a listener on language change
129
- - `removeEventListener(event: 'languagechange', listener: () => void) => void` - removing a listener on language change
130
- - `getResources() => Resources` - returns a complete dictionary currently in use
131
- - `setResources(resources: Resources) => void` - sets complete dictionary (equivalent of resources field in init)
132
- - `dir(language: string = currentLanguage) => 'ltr' | 'rtl'` - returns direction of the language
133
-
134
- ## Middlewares
135
- There are two types of middlewares supported. One are more legacy compatible with i18next translation formats.
136
- I18next was the utility and format that got used in early days of NextGen (former name for SmartApps).
137
- Nowadays the translation format has been changed to Unicode ICU and unified across all platforms.
138
- If you start new project, it is recommended to use ICU format to make it compatible with other platforms more
139
- easily.
140
-
141
- ## Middlewares - ICU
142
- All the middlewares you need for your project need to be enabled together with init or during the translation.
143
- They are separated to reduce the size of the bundle and to increase the performance.
144
-
145
- They all come with a performance hit:
146
- - *Interpolation* - <b style="color: #fb0;">MEDIUM</b>
147
- - *DateInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
148
- - *TimeInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
149
- - *NumberInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
150
- - *Plurals* - <b style="color: #f00;">HIGH</b>
151
- - *Select* - <b style="color: #f00;">HIGH</b>
152
-
153
- ```tsx
154
- import { i18n } from '@24i/bigscreen-sdk/i18n';
155
- import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Interpolation';
156
- import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Plurals';
157
- import { Select } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Select';
158
-
159
- i18n.init(/* ... */);
160
- /**
161
- * Because middlewares come with a performance impact you have two options:
162
- * 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
163
- * 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
164
- */
165
-
166
- /**
167
- * Option 1 - the order of middlewares is not important
168
- */
169
- i18n.middleware(Interpolation, Plurals, Select);
170
-
171
- /**
172
- * Option 2 - used with t function inside JSX, the order is not important
173
- */
174
- <h1>
175
- {
176
- t('friend', {
177
- name: user.name,
178
- gender: user.gender,
179
- friendsCount: 2,
180
- middlewares: [Interpolation, Select, Plurals],
181
- })
182
- }
183
- </h1>
184
- ```
185
-
186
- ### Interpolation - ICU
187
- Interpolation allows you to pass variable into translation.
188
-
189
- #### Usage
190
- ```ts
191
- resource = { introduction: 'Hello, {name}!' };
192
- i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
193
- ```
194
-
195
- ### DateInterpolation - ICU
196
- Allows you to format a variable date into translation.
197
-
198
- #### Options
199
- ```
200
- {nameOfKeyInOptions, date, dateFormat}
201
- ```
202
- - `nameOfKeyInOptions` - name of variable that you pass
203
- - `date` - identifier of DateInterpolation (fixed value)
204
- - `dateFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `dMy`):
205
- - - `y` - for using numeric year
206
- - - `M` - for using 2-digit month
207
- - - `L` - for using long month name
208
- - - `d` - for using 2-digit day
209
- - - `e` - for using long weekday name
210
-
211
- #### Usage
212
- ```ts
213
- resource = { today: 'Today is, {dateToDisplay, date, full}' };
214
- i18n.t('today', { dateToDisplay: new Date('2021-09-23') }); // --> 'Today is, Thursday 23 September 2021'
215
- ```
216
-
217
- ### TimeInterpolation - ICU
218
- Allows you to format a variable time into translation.
219
-
220
- #### Options
221
- ```
222
- {nameOfKeyInOptions, time, timeFormat}
223
- ```
224
- - `nameOfKeyInOptions` - name of variable that you pass
225
- - `time` - identifier of TimeInterpolation (fixed value)
226
- - `timeFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `hm`):
227
- - - `h` - for using numeric hour
228
- - - `H` - for using 2-digit hour
229
- - - `k` - for using numeric hour
230
- - - `K` - for using 2-digit hour
231
- - - `m` - for using 2-digit minute
232
- - - `s` - for using 2-digit second
233
-
234
- #### Usage
235
- ```ts
236
- resource = { now: 'Now is, {timeToDisplay, time, short}' };
237
- i18n.t('now', { timeToDisplay: new Date('2021-09-23T09:45') }); // --> 'Now is, 9:45'
238
- ```
239
-
240
- ### NumberInterpolation - ICU
241
- Allows you to format a variable number into translation.
242
-
243
- <b style="color: #f00;">!IMPORTANT!</b> Formatting is not yet supported. If you need support, please,
244
- implement it in l10n package.
245
- It is better to use basic Interpolation instead as it might be faster. This is kept for minimal compatibility.
246
-
247
- #### Options
248
- ```
249
- {myNumber, number, ::formatting-options}
250
- ```
251
- - `myNumber` - name of variable that you pass
252
- - `number` - identifier of NumberInterpolation (fixed value)
253
- - `format` - refer to [ICU spec](https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html)
254
-
255
- #### Usage
256
- Limited to just number passing without any format.
257
- ```ts
258
- resource = { moneyTotal: 'In total, you need to pay {sum, number, ::currency/USD}.' };
259
- i18n.t('moneyTotal', { sum: 99 }); // --> 'In total, you need to pay 99.'
260
- ```
261
-
262
- ### Plurals - ICU
263
- Plurals make it possible to support different translations based on the count.
264
-
265
- #### Options
266
- ```
267
- {count, plural, offset:1, =0 {Nothing} few {Few things} other {# things}}
268
- ```
269
- - `count` - name of variable you pass
270
- - `plural` - identifier of Plurals (fixed value)
271
- - `offset:1` - optional offset for worded amount and `#` replacement
272
- - cases in format `count {translation}`
273
- - - `=0` - or any other number for concrete amount
274
- - - `zero` - for languages that have special grammar for zero
275
- - - `one` - for languages that have special grammar for one
276
- - - `two` - for languages that have special grammar for two
277
- - - `few` - for languages that have special grammar for few items (e.g. czech for 2-4)
278
- - - `many` - for languages that have special grammar for many items
279
- - - `other` - required value for other cases
280
-
281
- #### Usage
282
- ```ts
283
- resource = {
284
- simple: 'I have {numCats, plural, =0 {no cat} =1 {a cat} other {# cats}}.',
285
- complex: 'I invited {count, plural, offset:1, =0 {no one} =1 {{name}} =2 {{name} and someone else} other {{name} and # more people}}.',
286
- };
287
- i18n.t('simple', { numCats: 4 }); // --> I have 4 cats.
288
- i18n.t('complex', { count: 5, name: 'Lucy' }); // --> I invited Lucy and 4 more people.
289
- ```
290
-
291
- ### Select - ICU
292
- Select makes it possible to provide different translations based on variable (e.g. gender).
293
-
294
- #### Options
295
- ```
296
- {variableName, select, case1 {translation1} case2 {translation2} other {translation3}}
297
- ```
298
- - `variableName` - name of variable you pass
299
- - `select` - identifier of Select (fixed value)
300
- - cases in format `caseName {translation}` - `other` is required
301
-
302
- #### Usage
303
- ```ts
304
- resource = { arrived: '{gender, select, male {He} female {She} other {They}} arrived.' };
305
- i18n.t('arrived', { gender: 'female' }); // --> She arrived.
306
- ```
307
-
308
- ### ICU - Complex examples
309
- Translation needs to be written in top-down: 'Select', 'Plurals', 'Interpolations'.
310
- ```ts
311
- const resource = {
312
- example: [
313
- '{gender_of_host, select, ',
314
- 'female {',
315
- '{num_guests, plural, offset:1, ',
316
- '=0 {{host} does not give a party.}',
317
- '=1 {{host} invites {guest} to her party.}',
318
- '=2 {{host} invites {guest} and one other person to her party.}',
319
- 'other {{host} invites {guest} and # other people to her party.}}}',
320
- 'male {',
321
- '{num_guests, plural, offset:1, ',
322
- '=0 {{host} does not give a party.}',
323
- '=1 {{host} invites {guest} to his party.}',
324
- '=2 {{host} invites {guest} and one other person to his party.}',
325
- 'other {{host} invites {guest} and # other people to his party.}}}',
326
- 'other {',
327
- '{num_guests, plural, offset:1, ',
328
- '=0 {{host} does not give a party.}',
329
- '=1 {{host} invites {guest} to their party.}',
330
- '=2 {{host} invites {guest} and one other person to their party.}',
331
- 'other {{host} invites {guest} and # other people to their party.}}}}',
332
- ].join(''),
333
- };
334
- i18n.t('example', { gender_of_host: 'robot', host: 'Bastion', num_guests: 5, guest: 'Reinhardt' });
335
- // --> Bastion invites Reinhardt and 4 other people to their party.
336
- ```
337
-
338
- ## Middlewares - i18next
339
- All the middlewares you need for your project need to enabled together with init or during the translation.
340
- They are separated to reduce the size of the bundle and to increase the performance.
341
-
342
- They all come with a performance hit:
343
- - *Interpolation* - <b style="color: #f80;">MEDIUM</b>
344
- - *Plurals* - <b style="color: #f00;">HIGH</b>
345
- - *Nesting* - <b style="color: #ff0;">LOW-MEDIUM</b> for simple keys, but higher if combined with interpolation or plurals
346
- - *Context* - <b style="color: #0f0;">LOW</b> for simple keys, but higher if combined with interpolation or plurals
347
-
348
- ```tsx
349
- import { i18n } from '@24i/bigscreen-sdk/i18n';
350
- import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Interpolation';
351
- import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Plurals';
352
- import { Nesting } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Nesting';
353
- import { Context } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Context';
354
-
355
- i18n.init(/* ... */);
356
- /**
357
- * Because middlewares come with a performance impact you have two options:
358
- * 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
359
- * 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
360
- */
361
-
362
- /**
363
- * Option 1 - the order of middlewares is not important
364
- */
365
- i18n.middleware(Interpolation, Plurals, Nesting, Context);
366
-
367
- /**
368
- * Option 2 - used with t function inside JSX, the order is not important
369
- */
370
- <h1>{t('friend', { context: friend.gender, middlewares: [Interpolation, Context, Plurals] })}</h1>
371
- ```
372
-
373
- ### Interpolation - i18next
374
- Interpolation allows you to replace parts of the translation.
375
- #### Options
376
- - `format(value: any, valueFormat: string) => string` - optional, formats the value before replacement
377
- - `formatSeparator: string` - optional, sets the separator char(s), defaults to `,`
378
- - `prefix: string` - optional, sets custom prefix to separate values for interpolation, defaults to `{{`
379
- - `suffix: string` - optional, sets custom suffix to separate values for interpolation, defaults to `}}`
380
- #### Usage
381
- ```ts
382
- // simple
383
- resource = { introduction: 'Hello, {{name}}!' };
384
- i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
385
-
386
- // from object
387
- resource = { introduction: 'Hello, {{user.names.first}}!' };
388
- i18n.t('introduction', { user: { names: { first: 'Petr' } } }); // --> 'Hello, Petr!'
389
-
390
- // format
391
- resource = { shout: '{{topic, lowercase}}! {{topic}}!! {{topic, uppercase}}!!!' };
392
- i18n.t('shout', { topic: 'SmartApps', interpolation: { format: (value: string, format: string) => {
393
- if (format === 'uppercase') return value.toUpperCase();
394
- if (format === 'lowercase') return value.toLowerCase();
395
- return value;
396
- } } }); // --> 'smartapps! SmartApps!! SMARTAPPS!!!'
397
- ```
398
-
399
- ### Plurals - i18next
400
- Plurals allows you to automatically choose correct translation based on the `count` option.
401
- It supports basic plurals (`[[key]]_plural`), form plurals (`[[key]]_1`) and intervals.
402
- Form plurals are supported for all languages.
403
- See [http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms](http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms)
404
- for the rules and forms for each language.
405
- #### Usage
406
- ```ts
407
- // basic
408
- resource = {
409
- item: 'Item',
410
- item_plural: 'Items',
411
- };
412
- i18n.t('item'); // --> 'Item'
413
- i18n.t('item', { count: 1 }); // --> 'Item'
414
- i18n.t('item', { count: 2 }); // --> 'Items'
415
-
416
- // form
417
- resource = { // CS
418
- 'item': 'Polozka',
419
- 'item_1': 'Polozky',
420
- 'item_2': 'Polozek',
421
- };
422
- i18n.t('item'); // --> 'Polozka'
423
- i18n.t('item', { count: 3 }); // --> 'Polozky'
424
- i18n.t('item', { count: 5 }); // --> 'Polozek'
425
- i18n.t('item', { count: 0 }); // --> 'Polozek'
426
-
427
- // interval
428
- resource = {
429
- 'item': 'Item',
430
- 'item_interval': '(1){One item};(2-5){Two to five items};(6-inf){More than 5 items};';
431
- };
432
- i18n.t('item'); // --> 'Item'
433
- i18n.t('item', { count: 1 }); // --> 'One item'
434
- i18n.t('item', { count: 3 }); // --> 'Two to five items'
435
- i18n.t('item', { count: 8 }); // --> 'More than 5 items'
436
- ```
437
-
438
- ### Nesting - i18next
439
- Nesting allows you to place a translation key into a translation value and have it translated.
440
- #### Usage
441
- ```ts
442
- resource = {
443
- welcome: 'Welcome, {{name}}!',
444
- introduction: '$t(welcome) I am your i18n module',
445
- };
446
- i18n.t('introduction', { name: 'Radim' }); // --> 'Welcome, Radim! I am your i18n module.'
447
- ```
448
-
449
- ### Context - i18next
450
- Context middleware allows you to have one translation in multiple contexts. Useful for gender for example.
451
- ```ts
452
- resource = {
453
- friend: 'A friend',
454
- friend_male: 'A boyfriend',
455
- friend_female: 'A girlfriend',
456
- };
457
- i18n.t('friend'); // --> 'A friend'
458
- i18n.t('friend', { context: 'male' }); // --> 'A boyfriend'
459
- i18n.t('friend', { context: 'female' }); // --> 'A girlfriend'
460
- ```
1
+ ---
2
+ id: README
3
+ title: i18n
4
+ hide_title: true
5
+ sidebar_label: i18n
6
+ ---
7
+
8
+ # i18n
9
+ Internationalization for SmartApps BIGscreens is written with i18n used on SmartApps in mind.
10
+ This means that it can use the same resources as their SmartApps counterparts.
11
+ References:
12
+ - [i18next](https://www.i18next.com/translation-function/essentials)
13
+ - [smartapps i18n](https://github.com/24i/prd-nxg-sdk-ui/tree/develop/packages/sdk%40quarks/src/i18n)
14
+
15
+ It is based on i18next interface (smartapps uses i18next directly under the hood). But since the i18next
16
+ is a very large library and not all its features are utilized, the smartapps-bigscreen version
17
+ is code and feature split for smaller bundle size and better performance.
18
+
19
+ ## Usage
20
+
21
+ ### Initialization
22
+ ```ts
23
+ import { i18n } from '@24i/bigscreen-sdk/i18n';
24
+ import { en } from '../i18n/en';
25
+ import { de } from '../i18n/de';
26
+
27
+ const DICTIONARY = { en, de };
28
+
29
+ i18n.init({
30
+ resources: DICTIONARY, // i18next format of resources, optional
31
+ lng: 'cs', // default language, mandatory, should be ISO 639-1 to have plurals working correctly
32
+ fallbackLng: 'en', // fallback language if default not found, optional, defaults to 'en'
33
+ defaultNS: 'common', // default NS in resources, optional, defaults to 'translation'
34
+ keySeparator: '_', // default key separator, optional, defaults to '.'
35
+ nsSeparator: '|', // default ns separator, optional, defaults to ':'
36
+ });
37
+ ```
38
+
39
+ ### Translating
40
+ ```tsx
41
+ import { t } from '@24i/bigscreen-sdk/i18n';
42
+
43
+ const FetchError = ({ errorCode }) => (
44
+ <div className="error">
45
+ {t([`errors:server.${errorCode}`, 'errors:server.unknown'])}
46
+ </div>
47
+ );
48
+ ```
49
+ `t` is a function that under the hood returns a component. It takes two parameters:
50
+ - `key: string | string[]` - translation key or an array of translation keys
51
+ - `options: TranslationOptions | string` - options for a single translation or a default value.
52
+
53
+ When the language changes it should update the translation automatically.
54
+
55
+ ### Typed translation functions
56
+ If you want to have more security, you can try using typed translation functions:
57
+ - `getTypedT` - for typed `t` function for use in JSX
58
+ - `getTypedI18nT` - for typed `i18n.t` function for getting simple string
59
+
60
+ #### Usage
61
+ ```ts
62
+ // For global functions
63
+ import { getTypedT, getTypedI18nT } from '@24i/bigscreen-sdk/i18n';
64
+ import { en } from './dictionaries/en';
65
+
66
+ export const t = getTypedT<typeof en>();
67
+ export const i18nT = getTypedT<typeof en>();
68
+
69
+ // Namespaced in components for example
70
+ import { getTypedT } from '@24i/bigscreen-sdk/i18n';
71
+ import { en } from '../../i18n/dictionaries/en';
72
+
73
+ const t = getTypedT<typeof en['components']['epg']>('components.epg.');
74
+ ```
75
+ Try it at: [https://tsplay.dev/Nd4VdN](https://tsplay.dev/Nd4VdN)
76
+
77
+ ### Text direction
78
+ ```tsx
79
+ import { isRtl } from '@24i/bigscreen-sdk/i18n';
80
+
81
+ const offset = isRtl() ? -100 : 100;
82
+ ```
83
+
84
+ ### Translation Key
85
+ Translation key is a string in the format: `namespace:path.to.key`.
86
+ - namespace - optional, overrides `defaultNS` setting, has higher priority than `ns` in options
87
+ - path - optional, path in resources to find the key
88
+ - key - name of the key in the path to choose the translation
89
+
90
+ If no translation is found, the full-length translation key (including namespace and path) will be
91
+ returned instead.
92
+
93
+ If you use an array of translation keys, the first found translation will be used. If none of them is found,
94
+ the last key in its full length will be returned.
95
+
96
+ ### Translation Options
97
+ Translation Options is an object that can change the behaviour of the translating. Supported:
98
+ - `lng: string` - set language to use
99
+ - `defaultValue?: string` - default value to use
100
+ - `fallbackLng?: string` - override i18n fallback language
101
+ - `ns?: string` - override namespace (ns in key has higher priority)
102
+ - `keySeparator?: string` - change key separator
103
+ - `nsSeparator?: string` - change ns separator
104
+ - `middlewares?: MiddlewareSetup[]` - list of middlewares to be used with this translation
105
+
106
+ ## addResourceBundle
107
+ This utility allows you to dynamically add new resources. It is useful if you download resources from the API.
108
+ If you want to add more languages/namespace, you will have to call `addResourceBundle` for each language/namespace.
109
+ ```ts
110
+ import { addResourceBundle } from '@24i/bigscreen-sdk/i18n/utils/addResourceBundle';
111
+
112
+ addResourceBundle(
113
+ language: string, // language of the bundle
114
+ namespace: string, // namespace of the bundle
115
+ resources: NamespaceResource, // dictionary of the given namespace
116
+ deep: boolean = false, // If set to true will deeply add/replace current dictionary, false will overwrite it at the root level
117
+ overwrite: boolean = false, // If deep set to true, this sets whether you only add (false) or also replace existing (true) translations
118
+ ) => void;
119
+ ```
120
+
121
+ ## i18n interface
122
+ - `init(options: InitOptions) => void` - see [Initialization](#Initialization)
123
+ - `t(translationKey: string | string[], options?: TranslationOptions | string) => string` - translating function
124
+ - `getLanguage() => string` - returns current language
125
+ - `getLanguages() => string[]` - returns all languages found in resources
126
+ - `setLanguage(language: string) => void` - sets the current language
127
+ - `middleware(...middlewares: MiddlewareSetup[]) => void` - see [Middlewares](#Middlewares)
128
+ - `addEventListener(event: 'languagechange', listener: () => void) => void` - adding a listener on language change
129
+ - `removeEventListener(event: 'languagechange', listener: () => void) => void` - removing a listener on language change
130
+ - `getResources() => Resources` - returns a complete dictionary currently in use
131
+ - `setResources(resources: Resources) => void` - sets complete dictionary (equivalent of resources field in init)
132
+ - `dir(language: string = currentLanguage) => 'ltr' | 'rtl'` - returns direction of the language
133
+
134
+ ## Middlewares
135
+ There are two types of middlewares supported. One are more legacy compatible with i18next translation formats.
136
+ I18next was the utility and format that got used in early days of NextGen (former name for SmartApps).
137
+ Nowadays the translation format has been changed to Unicode ICU and unified across all platforms.
138
+ If you start new project, it is recommended to use ICU format to make it compatible with other platforms more
139
+ easily.
140
+
141
+ ## Middlewares - ICU
142
+ All the middlewares you need for your project need to be enabled together with init or during the translation.
143
+ They are separated to reduce the size of the bundle and to increase the performance.
144
+
145
+ They all come with a performance hit:
146
+ - *Interpolation* - <b style="color: #fb0;">MEDIUM</b>
147
+ - *DateInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
148
+ - *TimeInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
149
+ - *NumberInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
150
+ - *Plurals* - <b style="color: #f00;">HIGH</b>
151
+ - *Select* - <b style="color: #f00;">HIGH</b>
152
+
153
+ ```tsx
154
+ import { i18n } from '@24i/bigscreen-sdk/i18n';
155
+ import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Interpolation';
156
+ import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Plurals';
157
+ import { Select } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Select';
158
+
159
+ i18n.init(/* ... */);
160
+ /**
161
+ * Because middlewares come with a performance impact you have two options:
162
+ * 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
163
+ * 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
164
+ */
165
+
166
+ /**
167
+ * Option 1 - the order of middlewares is not important
168
+ */
169
+ i18n.middleware(Interpolation, Plurals, Select);
170
+
171
+ /**
172
+ * Option 2 - used with t function inside JSX, the order is not important
173
+ */
174
+ <h1>
175
+ {
176
+ t('friend', {
177
+ name: user.name,
178
+ gender: user.gender,
179
+ friendsCount: 2,
180
+ middlewares: [Interpolation, Select, Plurals],
181
+ })
182
+ }
183
+ </h1>
184
+ ```
185
+
186
+ ### Interpolation - ICU
187
+ Interpolation allows you to pass variable into translation.
188
+
189
+ #### Usage
190
+ ```ts
191
+ resource = { introduction: 'Hello, {name}!' };
192
+ i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
193
+ ```
194
+
195
+ ### DateInterpolation - ICU
196
+ Allows you to format a variable date into translation.
197
+
198
+ #### Options
199
+ ```
200
+ {nameOfKeyInOptions, date, dateFormat}
201
+ ```
202
+ - `nameOfKeyInOptions` - name of variable that you pass
203
+ - `date` - identifier of DateInterpolation (fixed value)
204
+ - `dateFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `dMy`):
205
+ - - `y` - for using numeric year
206
+ - - `M` - for using 2-digit month
207
+ - - `L` - for using long month name
208
+ - - `d` - for using 2-digit day
209
+ - - `e` - for using long weekday name
210
+
211
+ #### Usage
212
+ ```ts
213
+ resource = { today: 'Today is, {dateToDisplay, date, full}' };
214
+ i18n.t('today', { dateToDisplay: new Date('2021-09-23') }); // --> 'Today is, Thursday 23 September 2021'
215
+ ```
216
+
217
+ ### TimeInterpolation - ICU
218
+ Allows you to format a variable time into translation.
219
+
220
+ #### Options
221
+ ```
222
+ {nameOfKeyInOptions, time, timeFormat}
223
+ ```
224
+ - `nameOfKeyInOptions` - name of variable that you pass
225
+ - `time` - identifier of TimeInterpolation (fixed value)
226
+ - `timeFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `hm`):
227
+ - - `h` - for using numeric hour
228
+ - - `H` - for using 2-digit hour
229
+ - - `k` - for using numeric hour
230
+ - - `K` - for using 2-digit hour
231
+ - - `m` - for using 2-digit minute
232
+ - - `s` - for using 2-digit second
233
+
234
+ #### Usage
235
+ ```ts
236
+ resource = { now: 'Now is, {timeToDisplay, time, short}' };
237
+ i18n.t('now', { timeToDisplay: new Date('2021-09-23T09:45') }); // --> 'Now is, 9:45'
238
+ ```
239
+
240
+ ### NumberInterpolation - ICU
241
+ Allows you to format a variable number into translation.
242
+
243
+ <b style="color: #f00;">!IMPORTANT!</b> Formatting is not yet supported. If you need support, please,
244
+ implement it in l10n package.
245
+ It is better to use basic Interpolation instead as it might be faster. This is kept for minimal compatibility.
246
+
247
+ #### Options
248
+ ```
249
+ {myNumber, number, ::formatting-options}
250
+ ```
251
+ - `myNumber` - name of variable that you pass
252
+ - `number` - identifier of NumberInterpolation (fixed value)
253
+ - `format` - refer to [ICU spec](https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html)
254
+
255
+ #### Usage
256
+ Limited to just number passing without any format.
257
+ ```ts
258
+ resource = { moneyTotal: 'In total, you need to pay {sum, number, ::currency/USD}.' };
259
+ i18n.t('moneyTotal', { sum: 99 }); // --> 'In total, you need to pay 99.'
260
+ ```
261
+
262
+ ### Plurals - ICU
263
+ Plurals make it possible to support different translations based on the count.
264
+
265
+ #### Options
266
+ ```
267
+ {count, plural, offset:1, =0 {Nothing} few {Few things} other {# things}}
268
+ ```
269
+ - `count` - name of variable you pass
270
+ - `plural` - identifier of Plurals (fixed value)
271
+ - `offset:1` - optional offset for worded amount and `#` replacement
272
+ - cases in format `count {translation}`
273
+ - - `=0` - or any other number for concrete amount
274
+ - - `zero` - for languages that have special grammar for zero
275
+ - - `one` - for languages that have special grammar for one
276
+ - - `two` - for languages that have special grammar for two
277
+ - - `few` - for languages that have special grammar for few items (e.g. czech for 2-4)
278
+ - - `many` - for languages that have special grammar for many items
279
+ - - `other` - required value for other cases
280
+
281
+ #### Usage
282
+ ```ts
283
+ resource = {
284
+ simple: 'I have {numCats, plural, =0 {no cat} =1 {a cat} other {# cats}}.',
285
+ complex: 'I invited {count, plural, offset:1, =0 {no one} =1 {{name}} =2 {{name} and someone else} other {{name} and # more people}}.',
286
+ };
287
+ i18n.t('simple', { numCats: 4 }); // --> I have 4 cats.
288
+ i18n.t('complex', { count: 5, name: 'Lucy' }); // --> I invited Lucy and 4 more people.
289
+ ```
290
+
291
+ ### Select - ICU
292
+ Select makes it possible to provide different translations based on variable (e.g. gender).
293
+
294
+ #### Options
295
+ ```
296
+ {variableName, select, case1 {translation1} case2 {translation2} other {translation3}}
297
+ ```
298
+ - `variableName` - name of variable you pass
299
+ - `select` - identifier of Select (fixed value)
300
+ - cases in format `caseName {translation}` - `other` is required
301
+
302
+ #### Usage
303
+ ```ts
304
+ resource = { arrived: '{gender, select, male {He} female {She} other {They}} arrived.' };
305
+ i18n.t('arrived', { gender: 'female' }); // --> She arrived.
306
+ ```
307
+
308
+ ### ICU - Complex examples
309
+ Translation needs to be written in top-down: 'Select', 'Plurals', 'Interpolations'.
310
+ ```ts
311
+ const resource = {
312
+ example: [
313
+ '{gender_of_host, select, ',
314
+ 'female {',
315
+ '{num_guests, plural, offset:1, ',
316
+ '=0 {{host} does not give a party.}',
317
+ '=1 {{host} invites {guest} to her party.}',
318
+ '=2 {{host} invites {guest} and one other person to her party.}',
319
+ 'other {{host} invites {guest} and # other people to her party.}}}',
320
+ 'male {',
321
+ '{num_guests, plural, offset:1, ',
322
+ '=0 {{host} does not give a party.}',
323
+ '=1 {{host} invites {guest} to his party.}',
324
+ '=2 {{host} invites {guest} and one other person to his party.}',
325
+ 'other {{host} invites {guest} and # other people to his party.}}}',
326
+ 'other {',
327
+ '{num_guests, plural, offset:1, ',
328
+ '=0 {{host} does not give a party.}',
329
+ '=1 {{host} invites {guest} to their party.}',
330
+ '=2 {{host} invites {guest} and one other person to their party.}',
331
+ 'other {{host} invites {guest} and # other people to their party.}}}}',
332
+ ].join(''),
333
+ };
334
+ i18n.t('example', { gender_of_host: 'robot', host: 'Bastion', num_guests: 5, guest: 'Reinhardt' });
335
+ // --> Bastion invites Reinhardt and 4 other people to their party.
336
+ ```
337
+
338
+ ## Middlewares - i18next
339
+ All the middlewares you need for your project need to enabled together with init or during the translation.
340
+ They are separated to reduce the size of the bundle and to increase the performance.
341
+
342
+ They all come with a performance hit:
343
+ - *Interpolation* - <b style="color: #f80;">MEDIUM</b>
344
+ - *Plurals* - <b style="color: #f00;">HIGH</b>
345
+ - *Nesting* - <b style="color: #ff0;">LOW-MEDIUM</b> for simple keys, but higher if combined with interpolation or plurals
346
+ - *Context* - <b style="color: #0f0;">LOW</b> for simple keys, but higher if combined with interpolation or plurals
347
+
348
+ ```tsx
349
+ import { i18n } from '@24i/bigscreen-sdk/i18n';
350
+ import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Interpolation';
351
+ import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Plurals';
352
+ import { Nesting } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Nesting';
353
+ import { Context } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Context';
354
+
355
+ i18n.init(/* ... */);
356
+ /**
357
+ * Because middlewares come with a performance impact you have two options:
358
+ * 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
359
+ * 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
360
+ */
361
+
362
+ /**
363
+ * Option 1 - the order of middlewares is not important
364
+ */
365
+ i18n.middleware(Interpolation, Plurals, Nesting, Context);
366
+
367
+ /**
368
+ * Option 2 - used with t function inside JSX, the order is not important
369
+ */
370
+ <h1>{t('friend', { context: friend.gender, middlewares: [Interpolation, Context, Plurals] })}</h1>
371
+ ```
372
+
373
+ ### Interpolation - i18next
374
+ Interpolation allows you to replace parts of the translation.
375
+ #### Options
376
+ - `format(value: any, valueFormat: string) => string` - optional, formats the value before replacement
377
+ - `formatSeparator: string` - optional, sets the separator char(s), defaults to `,`
378
+ - `prefix: string` - optional, sets custom prefix to separate values for interpolation, defaults to `{{`
379
+ - `suffix: string` - optional, sets custom suffix to separate values for interpolation, defaults to `}}`
380
+ #### Usage
381
+ ```ts
382
+ // simple
383
+ resource = { introduction: 'Hello, {{name}}!' };
384
+ i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
385
+
386
+ // from object
387
+ resource = { introduction: 'Hello, {{user.names.first}}!' };
388
+ i18n.t('introduction', { user: { names: { first: 'Petr' } } }); // --> 'Hello, Petr!'
389
+
390
+ // format
391
+ resource = { shout: '{{topic, lowercase}}! {{topic}}!! {{topic, uppercase}}!!!' };
392
+ i18n.t('shout', { topic: 'SmartApps', interpolation: { format: (value: string, format: string) => {
393
+ if (format === 'uppercase') return value.toUpperCase();
394
+ if (format === 'lowercase') return value.toLowerCase();
395
+ return value;
396
+ } } }); // --> 'smartapps! SmartApps!! SMARTAPPS!!!'
397
+ ```
398
+
399
+ ### Plurals - i18next
400
+ Plurals allows you to automatically choose correct translation based on the `count` option.
401
+ It supports basic plurals (`[[key]]_plural`), form plurals (`[[key]]_1`) and intervals.
402
+ Form plurals are supported for all languages.
403
+ See [http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms](http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms)
404
+ for the rules and forms for each language.
405
+ #### Usage
406
+ ```ts
407
+ // basic
408
+ resource = {
409
+ item: 'Item',
410
+ item_plural: 'Items',
411
+ };
412
+ i18n.t('item'); // --> 'Item'
413
+ i18n.t('item', { count: 1 }); // --> 'Item'
414
+ i18n.t('item', { count: 2 }); // --> 'Items'
415
+
416
+ // form
417
+ resource = { // CS
418
+ 'item': 'Polozka',
419
+ 'item_1': 'Polozky',
420
+ 'item_2': 'Polozek',
421
+ };
422
+ i18n.t('item'); // --> 'Polozka'
423
+ i18n.t('item', { count: 3 }); // --> 'Polozky'
424
+ i18n.t('item', { count: 5 }); // --> 'Polozek'
425
+ i18n.t('item', { count: 0 }); // --> 'Polozek'
426
+
427
+ // interval
428
+ resource = {
429
+ 'item': 'Item',
430
+ 'item_interval': '(1){One item};(2-5){Two to five items};(6-inf){More than 5 items};';
431
+ };
432
+ i18n.t('item'); // --> 'Item'
433
+ i18n.t('item', { count: 1 }); // --> 'One item'
434
+ i18n.t('item', { count: 3 }); // --> 'Two to five items'
435
+ i18n.t('item', { count: 8 }); // --> 'More than 5 items'
436
+ ```
437
+
438
+ ### Nesting - i18next
439
+ Nesting allows you to place a translation key into a translation value and have it translated.
440
+ #### Usage
441
+ ```ts
442
+ resource = {
443
+ welcome: 'Welcome, {{name}}!',
444
+ introduction: '$t(welcome) I am your i18n module',
445
+ };
446
+ i18n.t('introduction', { name: 'Radim' }); // --> 'Welcome, Radim! I am your i18n module.'
447
+ ```
448
+
449
+ ### Context - i18next
450
+ Context middleware allows you to have one translation in multiple contexts. Useful for gender for example.
451
+ ```ts
452
+ resource = {
453
+ friend: 'A friend',
454
+ friend_male: 'A boyfriend',
455
+ friend_female: 'A girlfriend',
456
+ };
457
+ i18n.t('friend'); // --> 'A friend'
458
+ i18n.t('friend', { context: 'male' }); // --> 'A boyfriend'
459
+ i18n.t('friend', { context: 'female' }); // --> 'A girlfriend'
460
+ ```