@24i/bigscreen-sdk 0.9.9-alpha.2147

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 (933) hide show
  1. package/README.md +47 -0
  2. package/package.json +272 -0
  3. package/packages/adobe-heartbeat/README.md +46 -0
  4. package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +244 -0
  5. package/packages/adobe-heartbeat/src/__external__/Adobe/Adobe.d.ts +24 -0
  6. package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.d.ts +126 -0
  7. package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.js +76 -0
  8. package/packages/adobe-heartbeat/src/index.ts +5 -0
  9. package/packages/adobe-heartbeat/src/types.ts +67 -0
  10. package/packages/animations/README.md +74 -0
  11. package/packages/animations/src/AnimationUtils.ts +232 -0
  12. package/packages/animations/src/JSAnimations.ts +142 -0
  13. package/packages/animations/src/index.ts +3 -0
  14. package/packages/announcement-banner/README.md +49 -0
  15. package/packages/announcement-banner/examples/example1.gif +0 -0
  16. package/packages/announcement-banner/src/AnnouncementBanner.scss +8 -0
  17. package/packages/announcement-banner/src/AnnouncementBanner.tsx +136 -0
  18. package/packages/announcement-banner/src/index.ts +1 -0
  19. package/packages/async-image/README.md +47 -0
  20. package/packages/async-image/src/AsyncImage.tsx +96 -0
  21. package/packages/async-image/src/index.ts +2 -0
  22. package/packages/conviva/README.md +48 -0
  23. package/packages/conviva/src/ConvivaSDK.ts +38 -0
  24. package/packages/conviva/src/index.ts +1 -0
  25. package/packages/conviva/src/theoPlugin/ConvivaConviguration.ts +19 -0
  26. package/packages/conviva/src/theoPlugin/__external__/Conviva_4.0.15.js +699 -0
  27. package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.d.ts +7 -0
  28. package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.js +636 -0
  29. package/packages/conviva/src/theoPlugin/convivaTheoPluginWrapper.ts +61 -0
  30. package/packages/conviva/src/theoPlugin/index.ts +2 -0
  31. package/packages/developer-tools/DeveloperConsole/README.md +114 -0
  32. package/packages/developer-tools/DeveloperConsole/index.ts +3 -0
  33. package/packages/developer-tools/DeveloperConsole/unstyled.ts +1 -0
  34. package/packages/developer-tools/DeveloperToolsService/README.md +54 -0
  35. package/packages/developer-tools/DeveloperToolsService/index.ts +3 -0
  36. package/packages/developer-tools/DeveloperToolsService/unstyled.ts +1 -0
  37. package/packages/developer-tools/EnvironmentSelection/README.md +77 -0
  38. package/packages/developer-tools/EnvironmentSelection/index.ts +3 -0
  39. package/packages/developer-tools/EnvironmentSelection/unstyled.ts +1 -0
  40. package/packages/developer-tools/PlayerDebugWindow/README.md +65 -0
  41. package/packages/developer-tools/PlayerDebugWindow/index.ts +3 -0
  42. package/packages/developer-tools/PlayerDebugWindow/unstyled.ts +1 -0
  43. package/packages/developer-tools/README.md +24 -0
  44. package/packages/developer-tools/TechnicalInfo/README.md +90 -0
  45. package/packages/developer-tools/TechnicalInfo/index.ts +9 -0
  46. package/packages/developer-tools/TechnicalInfo/unstyled.ts +6 -0
  47. package/packages/developer-tools/src/DeveloperConsole/ControlButton.tsx +16 -0
  48. package/packages/developer-tools/src/DeveloperConsole/DeveloperConsole.tsx +388 -0
  49. package/packages/developer-tools/src/DeveloperConsole/Panel.tsx +108 -0
  50. package/packages/developer-tools/src/DeveloperConsole/PanelMessage.tsx +33 -0
  51. package/packages/developer-tools/src/DeveloperConsole/helpers/Queue.ts +38 -0
  52. package/packages/developer-tools/src/DeveloperConsole/helpers/index.ts +2 -0
  53. package/packages/developer-tools/src/DeveloperConsole/helpers/instrumentHandler.ts +165 -0
  54. package/packages/developer-tools/src/DeveloperConsole/index.ts +2 -0
  55. package/packages/developer-tools/src/DeveloperConsole/initDeveloperConsole.tsx +8 -0
  56. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.scss +91 -0
  57. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.1080.scss +2 -0
  58. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.scss +2 -0
  59. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.1080.scss +16 -0
  60. package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.scss +16 -0
  61. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.scss +87 -0
  62. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.1080.scss +2 -0
  63. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.scss +2 -0
  64. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.1080.scss +9 -0
  65. package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.scss +9 -0
  66. package/packages/developer-tools/src/DeveloperConsole/styles.ts +2 -0
  67. package/packages/developer-tools/src/DeveloperConsole/types.ts +49 -0
  68. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolItem.tsx +21 -0
  69. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +114 -0
  70. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsService.tsx +122 -0
  71. package/packages/developer-tools/src/DeveloperToolsService/index.ts +1 -0
  72. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.scss +64 -0
  73. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.1080.scss +2 -0
  74. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.1080.scss +3 -0
  75. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.scss +4 -0
  76. package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.scss +2 -0
  77. package/packages/developer-tools/src/DeveloperToolsService/styles/_animated.scss +5 -0
  78. package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.1080.scss +16 -0
  79. package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.scss +16 -0
  80. package/packages/developer-tools/src/DeveloperToolsService/styles.ts +1 -0
  81. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentList.tsx +93 -0
  82. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentListItem.tsx +73 -0
  83. package/packages/developer-tools/src/EnvironmentSelection/EnvironmentSelection.tsx +100 -0
  84. package/packages/developer-tools/src/EnvironmentSelection/assets/checkmark.svg +18 -0
  85. package/packages/developer-tools/src/EnvironmentSelection/assets/development-stripe.png +0 -0
  86. package/packages/developer-tools/src/EnvironmentSelection/config.ts +43 -0
  87. package/packages/developer-tools/src/EnvironmentSelection/constants.ts +1 -0
  88. package/packages/developer-tools/src/EnvironmentSelection/index.ts +2 -0
  89. package/packages/developer-tools/src/EnvironmentSelection/sizes.1080.ts +9 -0
  90. package/packages/developer-tools/src/EnvironmentSelection/sizes.ts +9 -0
  91. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.scss +107 -0
  92. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.1080.scss +2 -0
  93. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.1080.scss +3 -0
  94. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.scss +3 -0
  95. package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.scss +2 -0
  96. package/packages/developer-tools/src/EnvironmentSelection/styles/_animated.scss +9 -0
  97. package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.1080.scss +25 -0
  98. package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.scss +25 -0
  99. package/packages/developer-tools/src/EnvironmentSelection/styles.ts +1 -0
  100. package/packages/developer-tools/src/EnvironmentSelection/types.ts +10 -0
  101. package/packages/developer-tools/src/IDeveloperTool.ts +14 -0
  102. package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +115 -0
  103. package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +113 -0
  104. package/packages/developer-tools/src/PlayerDebugWindow/index.ts +1 -0
  105. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.scss +29 -0
  106. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.1080.scss +2 -0
  107. package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.scss +2 -0
  108. package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.1080.scss +11 -0
  109. package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.scss +11 -0
  110. package/packages/developer-tools/src/PlayerDebugWindow/styles.ts +1 -0
  111. package/packages/developer-tools/src/TechnicalInfo/ITechnicalInfoProvider.ts +5 -0
  112. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfo.tsx +123 -0
  113. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +76 -0
  114. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +318 -0
  115. package/packages/developer-tools/src/TechnicalInfo/icons/arrow-down.svg +18 -0
  116. package/packages/developer-tools/src/TechnicalInfo/icons/arrow-up.svg +18 -0
  117. package/packages/developer-tools/src/TechnicalInfo/index.ts +5 -0
  118. package/packages/developer-tools/src/TechnicalInfo/sizes.1080.ts +1 -0
  119. package/packages/developer-tools/src/TechnicalInfo/sizes.ts +1 -0
  120. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.scss +186 -0
  121. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.1080.scss +2 -0
  122. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.1080.scss +3 -0
  123. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.scss +3 -0
  124. package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.scss +2 -0
  125. package/packages/developer-tools/src/TechnicalInfo/styles/_animated.scss +16 -0
  126. package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.1080.scss +50 -0
  127. package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.scss +50 -0
  128. package/packages/developer-tools/src/TechnicalInfo/styles.ts +1 -0
  129. package/packages/developer-tools/src/TechnicalInfo/translations.ts +75 -0
  130. package/packages/device/README.md +219 -0
  131. package/packages/device/keymap.ts +1 -0
  132. package/packages/device/resolver/index.ts +2 -0
  133. package/packages/device/resolver/keymap.ts +1 -0
  134. package/packages/device/src/DeviceEventMap.ts +1 -0
  135. package/packages/device/src/device.ts +6 -0
  136. package/packages/device/src/driver/index.entone.ts +1 -0
  137. package/packages/device/src/driver/index.hbbtv.tv.ts +1 -0
  138. package/packages/device/src/driver/index.kreatv.ts +1 -0
  139. package/packages/device/src/driver/index.saphi.tv.ts +1 -0
  140. package/packages/device/src/driver/index.tizen.tv.ts +1 -0
  141. package/packages/device/src/driver/index.ts +1 -0
  142. package/packages/device/src/driver/index.webos.tv.ts +1 -0
  143. package/packages/device/src/getKeyDigit.ts +35 -0
  144. package/packages/device/src/getKeyMap.ts +4 -0
  145. package/packages/device/src/index.ts +8 -0
  146. package/packages/device/src/isClickOrEnter.ts +3 -0
  147. package/packages/device/src/resolver/index.ts +2 -0
  148. package/packages/device/src/resolver/resolver.ts +60 -0
  149. package/packages/digital-clock/README.md +26 -0
  150. package/packages/digital-clock/src/DigitalClock.tsx +67 -0
  151. package/packages/digital-clock/src/index.ts +1 -0
  152. package/packages/driver-base/DeviceBase.md +139 -0
  153. package/packages/driver-base/README.md +44 -0
  154. package/packages/driver-base/src/ConnectionType.ts +1 -0
  155. package/packages/driver-base/src/DeviceBase.ts +218 -0
  156. package/packages/driver-base/src/KeyMap/Key.ts +41 -0
  157. package/packages/driver-base/src/KeyMap/KeyMap.ts +386 -0
  158. package/packages/driver-base/src/KeyMap/generateKeyCodeKeyMap.ts +11 -0
  159. package/packages/driver-base/src/KeyMap/index.ts +5 -0
  160. package/packages/driver-base/src/KeyMap/interface.ts +7 -0
  161. package/packages/driver-base/src/KeyMap/overrideValues.ts +16 -0
  162. package/packages/driver-base/src/KeyMap/switchByKey.ts +18 -0
  163. package/packages/driver-base/src/ScreenSize.ts +1 -0
  164. package/packages/driver-base/src/VolumeRange.ts +5 -0
  165. package/packages/driver-base/src/bindPreventDefaultEvent.ts +5 -0
  166. package/packages/driver-base/src/errors.ts +32 -0
  167. package/packages/driver-base/src/index.ts +10 -0
  168. package/packages/driver-base/src/loadObject.ts +30 -0
  169. package/packages/driver-base/src/types/DeviceEvent.ts +9 -0
  170. package/packages/driver-base/src/types/ExitOptions.ts +1 -0
  171. package/packages/driver-base/src/types/KeycodeKeyMap.ts +85 -0
  172. package/packages/driver-base/src/types/ScreenSaverStatus.ts +3 -0
  173. package/packages/driver-base/src/utils.ts +10 -0
  174. package/packages/driver-browser/src/DeviceBrowser.ts +170 -0
  175. package/packages/driver-browser/src/getBrowser.ts +51 -0
  176. package/packages/driver-browser/src/getOsName.ts +30 -0
  177. package/packages/driver-browser/src/index.ts +1 -0
  178. package/packages/driver-browser/src/keymap.ts +14 -0
  179. package/packages/driver-browser/src/patchSuitestKeys.ts +27 -0
  180. package/packages/driver-entone/README.md +9 -0
  181. package/packages/driver-entone/src/DeviceEntone.ts +232 -0
  182. package/packages/driver-entone/src/IEntone.ts +460 -0
  183. package/packages/driver-entone/src/constants.ts +73 -0
  184. package/packages/driver-entone/src/index.ts +1 -0
  185. package/packages/driver-entone/src/keymap.ts +56 -0
  186. package/packages/driver-hbbtv/src/DeviceHbbTV.ts +313 -0
  187. package/packages/driver-hbbtv/src/constants.ts +28 -0
  188. package/packages/driver-hbbtv/src/deviceInfo.ts +23 -0
  189. package/packages/driver-hbbtv/src/getVersion.ts +16 -0
  190. package/packages/driver-hbbtv/src/index.ts +1 -0
  191. package/packages/driver-hbbtv/src/keymap.ts +45 -0
  192. package/packages/driver-hbbtv/src/types.ts +366 -0
  193. package/packages/driver-kreatv/src/DeviceKreaTV.ts +271 -0
  194. package/packages/driver-kreatv/src/IToi.ts +379 -0
  195. package/packages/driver-kreatv/src/index.ts +1 -0
  196. package/packages/driver-kreatv/src/keymap.ts +31 -0
  197. package/packages/driver-kreatv/src/toi2.ts +107 -0
  198. package/packages/driver-kreatv/src/toi3.ts +102 -0
  199. package/packages/driver-kreatv/src/types.ts +35 -0
  200. package/packages/driver-saphi/src/DeviceSaphi.ts +144 -0
  201. package/packages/driver-saphi/src/constants.ts +1 -0
  202. package/packages/driver-saphi/src/formatUserAgent.ts +19 -0
  203. package/packages/driver-saphi/src/index.ts +1 -0
  204. package/packages/driver-saphi/src/keymap.ts +64 -0
  205. package/packages/driver-saphi/src/types.ts +75 -0
  206. package/packages/driver-tizen/src/DeviceTizen.ts +296 -0
  207. package/packages/driver-tizen/src/ITizen.ts +212 -0
  208. package/packages/driver-tizen/src/IWebapis.ts +95 -0
  209. package/packages/driver-tizen/src/TizenKeys.ts +94 -0
  210. package/packages/driver-tizen/src/constants.ts +197 -0
  211. package/packages/driver-tizen/src/index.ts +1 -0
  212. package/packages/driver-tizen/src/types.ts +14 -0
  213. package/packages/driver-webos/scripts/exportWebOSTVjs.ts +23 -0
  214. package/packages/driver-webos/scripts/template.ts +12 -0
  215. package/packages/driver-webos/src/DeviceWebos.ts +305 -0
  216. package/packages/driver-webos/src/constants.ts +20 -0
  217. package/packages/driver-webos/src/index.ts +1 -0
  218. package/packages/driver-webos/src/keymap.ts +9 -0
  219. package/packages/driver-webos/src/types.ts +344 -0
  220. package/packages/driver-webos/src/utils.ts +60 -0
  221. package/packages/driver-webos/src/webOSTVjs/webOSTVjs-1.2.3/LICENSE-2.0.txt +202 -0
  222. package/packages/driver-webos/src/webOSTVjs/webOSTVjs-1.2.3/webOSTV-dev.js +1 -0
  223. package/packages/driver-webos/src/webOSTVjs/webOSTVjs-1.2.3/webOSTV.js +1 -0
  224. package/packages/driver-xbox/__external__/winjs/directionalnavigation-1.0.0.0.js +1015 -0
  225. package/packages/driver-xbox/src/DeviceXbox.ts +231 -0
  226. package/packages/driver-xbox/src/index.ts +1 -0
  227. package/packages/driver-xbox/src/interfaces.ts +138 -0
  228. package/packages/driver-xbox/src/keymap.ts +96 -0
  229. package/packages/driver-xbox/src/utils.ts +23 -0
  230. package/packages/epg/IMPLEMENTATION.md +228 -0
  231. package/packages/epg/MockGenerator.md +102 -0
  232. package/packages/epg/README.md +582 -0
  233. package/packages/epg/src/v2/Cell.tsx +208 -0
  234. package/packages/epg/src/v2/CellsManager.ts +1 -0
  235. package/packages/epg/src/v2/DataManager.ts +301 -0
  236. package/packages/epg/src/v2/DatePicker.tsx +104 -0
  237. package/packages/epg/src/v2/DateToast/DateToast.scss +28 -0
  238. package/packages/epg/src/v2/DateToast/DateToast.styles.1080.scss +2 -0
  239. package/packages/epg/src/v2/DateToast/DateToast.styles.scss +2 -0
  240. package/packages/epg/src/v2/DateToast/DateToast.tsx +87 -0
  241. package/packages/epg/src/v2/DateToast/_sizes.1080.scss +7 -0
  242. package/packages/epg/src/v2/DateToast/_sizes.scss +7 -0
  243. package/packages/epg/src/v2/DateToast/index.tsx +1 -0
  244. package/packages/epg/src/v2/DateToast/styles.ts +1 -0
  245. package/packages/epg/src/v2/Day.tsx +30 -0
  246. package/packages/epg/src/v2/Epg.tsx +444 -0
  247. package/packages/epg/src/v2/Header.tsx +41 -0
  248. package/packages/epg/src/v2/InputEvents.ts +294 -0
  249. package/packages/epg/src/v2/MockGenerator/config.1080.ts +2 -0
  250. package/packages/epg/src/v2/MockGenerator/config.ts +2 -0
  251. package/packages/epg/src/v2/MockGenerator/generator.ts +173 -0
  252. package/packages/epg/src/v2/MockGenerator/index.ts +2 -0
  253. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_1.png +0 -0
  254. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_10.png +0 -0
  255. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_11.png +0 -0
  256. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_12.png +0 -0
  257. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_13.png +0 -0
  258. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_14.png +0 -0
  259. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_15.png +0 -0
  260. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_16.png +0 -0
  261. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_17.png +0 -0
  262. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_18.png +0 -0
  263. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_19.png +0 -0
  264. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_2.png +0 -0
  265. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_20.png +0 -0
  266. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_3.png +0 -0
  267. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_4.png +0 -0
  268. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_5.png +0 -0
  269. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_6.png +0 -0
  270. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_7.png +0 -0
  271. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_8.png +0 -0
  272. package/packages/epg/src/v2/MockGenerator/mocks/assets/channel_logo_9.png +0 -0
  273. package/packages/epg/src/v2/MockGenerator/mocks/data.ts +102 -0
  274. package/packages/epg/src/v2/MockGenerator/types.ts +25 -0
  275. package/packages/epg/src/v2/MockGenerator/utils.ts +28 -0
  276. package/packages/epg/src/v2/MouseNavigation/MouseNavigation.tsx +88 -0
  277. package/packages/epg/src/v2/MouseNavigation/MouseNavigationFallback.ts +4 -0
  278. package/packages/epg/src/v2/MouseNavigation/index.tizen.tv.ts +1 -0
  279. package/packages/epg/src/v2/MouseNavigation/index.ts +1 -0
  280. package/packages/epg/src/v2/MouseNavigation/index.web.ts +1 -0
  281. package/packages/epg/src/v2/MouseNavigation/index.webos.tv.ts +1 -0
  282. package/packages/epg/src/v2/NowLine.tsx +66 -0
  283. package/packages/epg/src/v2/Program.tsx +58 -0
  284. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.scss +67 -0
  285. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.1080.scss +3 -0
  286. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.1080.scss +2 -0
  287. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.scss +2 -0
  288. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.scss +3 -0
  289. package/packages/epg/src/v2/ProgramInfo/ProgramInfo.tsx +149 -0
  290. package/packages/epg/src/v2/ProgramInfo/_animated.scss +8 -0
  291. package/packages/epg/src/v2/ProgramInfo/_mixins.scss +5 -0
  292. package/packages/epg/src/v2/ProgramInfo/_sizes.1080.scss +21 -0
  293. package/packages/epg/src/v2/ProgramInfo/_sizes.scss +21 -0
  294. package/packages/epg/src/v2/ProgramInfo/index.ts +1 -0
  295. package/packages/epg/src/v2/ProgramInfo/rtl.scss +7 -0
  296. package/packages/epg/src/v2/ProgramInfo/sizes.1080.ts +3 -0
  297. package/packages/epg/src/v2/ProgramInfo/sizes.ts +3 -0
  298. package/packages/epg/src/v2/ProgramInfo/styles.ts +1 -0
  299. package/packages/epg/src/v2/ProgramInfo/utils.ts +27 -0
  300. package/packages/epg/src/v2/Row.tsx +132 -0
  301. package/packages/epg/src/v2/RowsManager.ts +1 -0
  302. package/packages/epg/src/v2/TimeManager.ts +58 -0
  303. package/packages/epg/src/v2/Timeline.ts +1 -0
  304. package/packages/epg/src/v2/TimelineSection.tsx +47 -0
  305. package/packages/epg/src/v2/basic/CellsManager.tsx +295 -0
  306. package/packages/epg/src/v2/basic/RowsManager.tsx +500 -0
  307. package/packages/epg/src/v2/basic/Timeline.tsx +88 -0
  308. package/packages/epg/src/v2/index.ts +1 -0
  309. package/packages/epg/src/v2/interface.ts +1489 -0
  310. package/packages/epg/src/v2/sizes.1080.ts +2 -0
  311. package/packages/epg/src/v2/sizes.ts +2 -0
  312. package/packages/epg/src/v2/styles/Basic/Basic.scss +116 -0
  313. package/packages/epg/src/v2/styles/Basic/index.ts +1 -0
  314. package/packages/epg/src/v2/styles/Whitelabel/index.ts +1 -0
  315. package/packages/epg/src/v2/utils.ts +40 -0
  316. package/packages/events-manager/src/EventsManager.ts +56 -0
  317. package/packages/events-manager/src/index.ts +2 -0
  318. package/packages/floating-focus/README.md +64 -0
  319. package/packages/floating-focus/src/FloatingFocus.ts +106 -0
  320. package/packages/floating-focus/src/Horizontal.tsx +20 -0
  321. package/packages/floating-focus/src/Vertical.tsx +20 -0
  322. package/packages/floating-focus/src/index.ts +4 -0
  323. package/packages/floating-focus/src/types.ts +20 -0
  324. package/packages/floating-focus/src/utils.ts +43 -0
  325. package/packages/focus/README.md +294 -0
  326. package/packages/focus/src/IFocusable.ts +3 -0
  327. package/packages/focus/src/Layout/Base.tsx +128 -0
  328. package/packages/focus/src/Layout/Horizontal.ts +12 -0
  329. package/packages/focus/src/Layout/Matrix.tsx +305 -0
  330. package/packages/focus/src/Layout/Vertical.ts +12 -0
  331. package/packages/focus/src/Layout/__test__/Base.spec.ts +162 -0
  332. package/packages/focus/src/Layout/__test__/Horizontal.spec.ts +46 -0
  333. package/packages/focus/src/Layout/__test__/Matrix.spec.ts +261 -0
  334. package/packages/focus/src/Layout/__test__/Vertical.spec.ts +46 -0
  335. package/packages/focus/src/Layout/__test__/shared.ts +15 -0
  336. package/packages/focus/src/Layout/constants.ts +10 -0
  337. package/packages/focus/src/Layout/types.ts +6 -0
  338. package/packages/focus/src/__test__/candidate.spec.tsx +245 -0
  339. package/packages/focus/src/__test__/focusFirstExisting.spec.tsx +21 -0
  340. package/packages/focus/src/__test__/refocusAfterHashChange.spec.tsx +41 -0
  341. package/packages/focus/src/__test__/safeFocus.spec.tsx +41 -0
  342. package/packages/focus/src/candidate.ts +106 -0
  343. package/packages/focus/src/focusFirstExisting.ts +13 -0
  344. package/packages/focus/src/index.ts +15 -0
  345. package/packages/focus/src/refocusAfterHashChange.ts +19 -0
  346. package/packages/focus/src/safeFocus.ts +15 -0
  347. package/packages/gallup/README.md +27 -0
  348. package/packages/gallup/src/Gallup.ts +80 -0
  349. package/packages/gallup/src/GallupMock.ts +7 -0
  350. package/packages/gallup/src/__external__/SpringStreams.d.ts +39 -0
  351. package/packages/gallup/src/__external__/SpringStreams.js +1 -0
  352. package/packages/gallup/src/index.ts +1 -0
  353. package/packages/grid/BasicGrid/README.md +78 -0
  354. package/packages/grid/BasicGrid/examples/example1.gif +0 -0
  355. package/packages/grid/BasicGrid/examples/example2.gif +0 -0
  356. package/packages/grid/BasicGrid/index.ts +1 -0
  357. package/packages/grid/FirstOnlyGrid/README.md +43 -0
  358. package/packages/grid/FirstOnlyGrid/examples/example1.gif +0 -0
  359. package/packages/grid/FirstOnlyGrid/index.ts +1 -0
  360. package/packages/grid/FixedToEndGrid/README.md +45 -0
  361. package/packages/grid/FixedToEndGrid/examples/example1.gif +0 -0
  362. package/packages/grid/FixedToEndGrid/index.ts +1 -0
  363. package/packages/grid/Item/index.ts +1 -0
  364. package/packages/grid/README.md +150 -0
  365. package/packages/grid/src/Base/Base.mouse.tsx +24 -0
  366. package/packages/grid/src/Base/Base.tsx +450 -0
  367. package/packages/grid/src/Base/index.tizen.tv.ts +1 -0
  368. package/packages/grid/src/Base/index.ts +1 -0
  369. package/packages/grid/src/Base/index.webos.tv.ts +1 -0
  370. package/packages/grid/src/Base/index.webtv.ts +1 -0
  371. package/packages/grid/src/BasicGrid/BasicGrid.tsx +137 -0
  372. package/packages/grid/src/BasicGrid/config.ts +13 -0
  373. package/packages/grid/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -0
  374. package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +110 -0
  375. package/packages/grid/src/FirstOnlyGrid/config.ts +13 -0
  376. package/packages/grid/src/FirstOnlyGrid/controller.ts +10 -0
  377. package/packages/grid/src/FixedToEndGrid/FixedToEndGrid.tsx +112 -0
  378. package/packages/grid/src/FixedToEndGrid/config.ts +13 -0
  379. package/packages/grid/src/FixedToEndGrid/controller.ts +36 -0
  380. package/packages/grid/src/UnifiedGridController/UnifiedGridController.ts +550 -0
  381. package/packages/grid/src/UnifiedGridController/index.ts +2 -0
  382. package/packages/grid/src/UnifiedGridController/interface.ts +92 -0
  383. package/packages/grid/src/animate.animated.ts +1 -0
  384. package/packages/grid/src/animate.ts +1 -0
  385. package/packages/grid/src/interface.ts +28 -0
  386. package/packages/grid/src/mocks/index.tsx +41 -0
  387. package/packages/grid/src/types.ts +63 -0
  388. package/packages/grid/src/utils.ts +69 -0
  389. package/packages/i18n/README.md +460 -0
  390. package/packages/i18n/src/I18n.ts +246 -0
  391. package/packages/i18n/src/Translation.tsx +36 -0
  392. package/packages/i18n/src/addResourceBundle.ts +73 -0
  393. package/packages/i18n/src/direction.ts +33 -0
  394. package/packages/i18n/src/index.ts +4 -0
  395. package/packages/i18n/src/isRtl.ts +3 -0
  396. package/packages/i18n/src/middlewares/i18next/Context/Context.ts +25 -0
  397. package/packages/i18n/src/middlewares/i18next/Context/index.ts +1 -0
  398. package/packages/i18n/src/middlewares/i18next/Interpolation/Interpolation.ts +95 -0
  399. package/packages/i18n/src/middlewares/i18next/Interpolation/index.ts +1 -0
  400. package/packages/i18n/src/middlewares/i18next/Nesting/Nesting.ts +38 -0
  401. package/packages/i18n/src/middlewares/i18next/Nesting/index.ts +1 -0
  402. package/packages/i18n/src/middlewares/i18next/Plurals/Plurals.ts +123 -0
  403. package/packages/i18n/src/middlewares/i18next/Plurals/Resolvers.ts +124 -0
  404. package/packages/i18n/src/middlewares/i18next/Plurals/index.ts +1 -0
  405. package/packages/i18n/src/middlewares/i18next/Plurals/types.ts +6 -0
  406. package/packages/i18n/src/middlewares/icu/DateInterpolation/DateInterpolation.ts +64 -0
  407. package/packages/i18n/src/middlewares/icu/DateInterpolation/index.ts +1 -0
  408. package/packages/i18n/src/middlewares/icu/Interpolation/Interpolation.ts +39 -0
  409. package/packages/i18n/src/middlewares/icu/Interpolation/index.ts +1 -0
  410. package/packages/i18n/src/middlewares/icu/NumberInterpolation/NumberInterpolation.ts +41 -0
  411. package/packages/i18n/src/middlewares/icu/NumberInterpolation/index.ts +1 -0
  412. package/packages/i18n/src/middlewares/icu/Plurals/Plurals.ts +65 -0
  413. package/packages/i18n/src/middlewares/icu/Plurals/Resolvers.ts +130 -0
  414. package/packages/i18n/src/middlewares/icu/Plurals/index.ts +1 -0
  415. package/packages/i18n/src/middlewares/icu/Plurals/types.ts +15 -0
  416. package/packages/i18n/src/middlewares/icu/Select/Select.ts +36 -0
  417. package/packages/i18n/src/middlewares/icu/Select/index.ts +1 -0
  418. package/packages/i18n/src/middlewares/icu/TimeInterpolation/TimeInterpolation.ts +65 -0
  419. package/packages/i18n/src/middlewares/icu/TimeInterpolation/index.ts +1 -0
  420. package/packages/i18n/src/middlewares/icu/shared/hasVariable.ts +5 -0
  421. package/packages/i18n/src/middlewares/icu/shared/matchSwitchCase.ts +80 -0
  422. package/packages/i18n/src/middlewares/icu/shared/unwrap.ts +1 -0
  423. package/packages/i18n/src/pluralsCommon/PluralsHelper.ts +54 -0
  424. package/packages/i18n/src/pluralsCommon/ResolverByLanguage.ts +129 -0
  425. package/packages/i18n/src/t.tsx +6 -0
  426. package/packages/i18n/src/typedTranslate.ts +31 -0
  427. package/packages/i18n/src/types.ts +66 -0
  428. package/packages/i18n/src/utils.ts +76 -0
  429. package/packages/icon/README.md +107 -0
  430. package/packages/icon/src/Icon.tsx +49 -0
  431. package/packages/icon/src/index.ts +1 -0
  432. package/packages/ime/README.md +72 -0
  433. package/packages/ime/src/IKeyboard.ts +6 -0
  434. package/packages/ime/src/IKeyboardEvent.ts +7 -0
  435. package/packages/ime/src/ImeManager.ts +33 -0
  436. package/packages/ime/src/SystemKeyboard/SystemKeyboard.ts +33 -0
  437. package/packages/ime/src/SystemKeyboard/SystemKeyboardBase.ts +98 -0
  438. package/packages/ime/src/SystemKeyboard/TizenSystemKeyboard.ts +66 -0
  439. package/packages/ime/src/SystemKeyboard/WebosSystemKeyboard.ts +74 -0
  440. package/packages/ime/src/SystemKeyboard/index.tizen.tv.ts +1 -0
  441. package/packages/ime/src/SystemKeyboard/index.ts +1 -0
  442. package/packages/ime/src/SystemKeyboard/index.webos.tv.ts +1 -0
  443. package/packages/ime/src/index.ts +3 -0
  444. package/packages/input/README.md +62 -0
  445. package/packages/input/src/Input.scss +5 -0
  446. package/packages/input/src/Input.tsx +216 -0
  447. package/packages/input/src/handleOverflow.ts +16 -0
  448. package/packages/input/src/index.ts +1 -0
  449. package/packages/interactable/README.md +37 -0
  450. package/packages/interactable/src/Interactable.tsx +27 -0
  451. package/packages/interactable/src/index.ts +1 -0
  452. package/packages/interactable/src/interface.ts +6 -0
  453. package/packages/ipify/README.md +30 -0
  454. package/packages/ipify/src/index.ts +1 -0
  455. package/packages/ipify/src/ipify.ts +41 -0
  456. package/packages/jsx/README.md +388 -0
  457. package/packages/jsx/src/Component.ts +68 -0
  458. package/packages/jsx/src/createRef.ts +5 -0
  459. package/packages/jsx/src/forwardRef.ts +8 -0
  460. package/packages/jsx/src/index.ts +31 -0
  461. package/packages/jsx/src/jsx-runtime.ts +5 -0
  462. package/packages/jsx/src/manipulation/attachNode.ts +30 -0
  463. package/packages/jsx/src/manipulation/attachNodeBefore.ts +44 -0
  464. package/packages/jsx/src/manipulation/clearNode.ts +14 -0
  465. package/packages/jsx/src/manipulation/detachNode.ts +26 -0
  466. package/packages/jsx/src/manipulation/index.ts +7 -0
  467. package/packages/jsx/src/manipulation/removeNode.ts +18 -0
  468. package/packages/jsx/src/manipulation/replaceNode.ts +42 -0
  469. package/packages/jsx/src/manipulation/swapNodes.ts +53 -0
  470. package/packages/jsx/src/mount/guards.ts +26 -0
  471. package/packages/jsx/src/mount/handleLifecycle.ts +71 -0
  472. package/packages/jsx/src/mount/index.ts +1 -0
  473. package/packages/jsx/src/mount/lifecycle.ts +38 -0
  474. package/packages/jsx/src/mount/lifecycleHelpers.ts +29 -0
  475. package/packages/jsx/src/mount/mount.ts +141 -0
  476. package/packages/jsx/src/mount/namespaces.ts +7 -0
  477. package/packages/jsx/src/mount/props.ts +121 -0
  478. package/packages/jsx/src/nodeUtils.ts +69 -0
  479. package/packages/jsx/src/setText.ts +15 -0
  480. package/packages/jsx/src/test-utils/MountedComponent.ts +50 -0
  481. package/packages/jsx/src/test-utils/README.md +73 -0
  482. package/packages/jsx/src/test-utils/click.ts +7 -0
  483. package/packages/jsx/src/test-utils/enter.ts +4 -0
  484. package/packages/jsx/src/test-utils/index.ts +5 -0
  485. package/packages/jsx/src/test-utils/keydown.ts +21 -0
  486. package/packages/jsx/src/test-utils/shallow.ts +33 -0
  487. package/packages/jsx/src/test-utils/spec-utils.ts +6 -0
  488. package/packages/jsx/src/textNode.ts +9 -0
  489. package/packages/jsx/src/types.ts +128 -0
  490. package/packages/jsx/src/utils.ts +35 -0
  491. package/packages/jsx/src/virtualDOM.ts +121 -0
  492. package/packages/key-sequence/README.md +44 -0
  493. package/packages/key-sequence/src/KeySequence.ts +56 -0
  494. package/packages/key-sequence/src/arrayEndsWithKeyCombo.ts +22 -0
  495. package/packages/key-sequence/src/index.ts +1 -0
  496. package/packages/key-sequence/src/types.ts +13 -0
  497. package/packages/keyboard/README.md +235 -0
  498. package/packages/keyboard/src/AndroidKeyboard/Keyboard.scss +140 -0
  499. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.1080.scss +2 -0
  500. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.1080.scss +3 -0
  501. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.scss +3 -0
  502. package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.scss +2 -0
  503. package/packages/keyboard/src/AndroidKeyboard/Keyboard.tsx +228 -0
  504. package/packages/keyboard/src/AndroidKeyboard/_animated.scss +7 -0
  505. package/packages/keyboard/src/AndroidKeyboard/_sizes.1080.scss +15 -0
  506. package/packages/keyboard/src/AndroidKeyboard/_sizes.scss +15 -0
  507. package/packages/keyboard/src/AndroidKeyboard/icons/arrow_left.svg +7 -0
  508. package/packages/keyboard/src/AndroidKeyboard/icons/arrow_right.svg +7 -0
  509. package/packages/keyboard/src/AndroidKeyboard/icons/key_backspace.svg +13 -0
  510. package/packages/keyboard/src/AndroidKeyboard/index.ts +1 -0
  511. package/packages/keyboard/src/AndroidKeyboard/makeLayout.ts +19 -0
  512. package/packages/keyboard/src/Backdrop/Backdrop.scss +15 -0
  513. package/packages/keyboard/src/Backdrop/Backdrop.styles.1080.scss +2 -0
  514. package/packages/keyboard/src/Backdrop/Backdrop.styles.scss +2 -0
  515. package/packages/keyboard/src/Backdrop/Backdrop.tsx +31 -0
  516. package/packages/keyboard/src/Backdrop/_sizes.1080.scss +2 -0
  517. package/packages/keyboard/src/Backdrop/_sizes.scss +2 -0
  518. package/packages/keyboard/src/DefaultKeyboard/Keyboard.scss +73 -0
  519. package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.1080.scss +2 -0
  520. package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.scss +2 -0
  521. package/packages/keyboard/src/DefaultKeyboard/Keyboard.tsx +154 -0
  522. package/packages/keyboard/src/DefaultKeyboard/_sizes.1080.scss +12 -0
  523. package/packages/keyboard/src/DefaultKeyboard/_sizes.scss +12 -0
  524. package/packages/keyboard/src/DefaultKeyboard/index.ts +1 -0
  525. package/packages/keyboard/src/KeyboardBase.tsx +325 -0
  526. package/packages/keyboard/src/MobiKeyboard/Keyboard.scss +180 -0
  527. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.1080.scss +2 -0
  528. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.1080.scss +3 -0
  529. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.scss +3 -0
  530. package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.scss +2 -0
  531. package/packages/keyboard/src/MobiKeyboard/Keyboard.tsx +267 -0
  532. package/packages/keyboard/src/MobiKeyboard/_animated.scss +7 -0
  533. package/packages/keyboard/src/MobiKeyboard/_sizes.1080.scss +10 -0
  534. package/packages/keyboard/src/MobiKeyboard/_sizes.scss +10 -0
  535. package/packages/keyboard/src/MobiKeyboard/icons/arrow_left.svg +7 -0
  536. package/packages/keyboard/src/MobiKeyboard/icons/arrow_right.svg +7 -0
  537. package/packages/keyboard/src/MobiKeyboard/icons/key_backspace.svg +13 -0
  538. package/packages/keyboard/src/MobiKeyboard/icons/key_space.svg +7 -0
  539. package/packages/keyboard/src/MobiKeyboard/index.ts +1 -0
  540. package/packages/keyboard/src/MobiKeyboard/utils.ts +19 -0
  541. package/packages/keyboard/src/QwertyKeyboardBase/QwertyKeyboardBase.tsx +54 -0
  542. package/packages/keyboard/src/ShiftMode.ts +25 -0
  543. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +159 -0
  544. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.1080.scss +2 -0
  545. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.scss +2 -0
  546. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +354 -0
  547. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -0
  548. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.scss +7 -0
  549. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/index.ts +1 -0
  550. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.scss +77 -0
  551. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -0
  552. package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -0
  553. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +31 -0
  554. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +31 -0
  555. package/packages/keyboard/src/WhitelabelKeyboard/focusMatrix.ts +19 -0
  556. package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_left.svg +10 -0
  557. package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_right.svg +10 -0
  558. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_backspace.svg +10 -0
  559. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift.svg +10 -0
  560. package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift_active.svg +10 -0
  561. package/packages/keyboard/src/WhitelabelKeyboard/index.ts +2 -0
  562. package/packages/keyboard/src/WhitelabelKeyboard/types.ts +8 -0
  563. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.scss +105 -0
  564. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.1080.scss +2 -0
  565. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.scss +2 -0
  566. package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.tsx +158 -0
  567. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -0
  568. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.scss +7 -0
  569. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/index.ts +1 -0
  570. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.scss +62 -0
  571. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -0
  572. package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -0
  573. package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.1080.scss +29 -0
  574. package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.scss +29 -0
  575. package/packages/keyboard/src/WhitelabelNumericKeyboard/icons/key_backspace.svg +10 -0
  576. package/packages/keyboard/src/WhitelabelNumericKeyboard/index.ts +2 -0
  577. package/packages/keyboard/src/WhitelabelNumericKeyboard/layout.ts +14 -0
  578. package/packages/keyboard/src/hwKeyboardEventToChar.ts +11 -0
  579. package/packages/keyboard/src/types/index.ts +11 -0
  580. package/packages/l10n/README.md +102 -0
  581. package/packages/l10n/interface.ts +1 -0
  582. package/packages/l10n/locales/cs.ts +4 -0
  583. package/packages/l10n/locales/en-001.ts +4 -0
  584. package/packages/l10n/locales/en-us.ts +4 -0
  585. package/packages/l10n/src/Locale.tsx +44 -0
  586. package/packages/l10n/src/date/common.ts +153 -0
  587. package/packages/l10n/src/date/cs.ts +95 -0
  588. package/packages/l10n/src/date/en-001.ts +76 -0
  589. package/packages/l10n/src/date/en-common.ts +54 -0
  590. package/packages/l10n/src/date/en-us.ts +83 -0
  591. package/packages/l10n/src/date/iso.ts +64 -0
  592. package/packages/l10n/src/date/types.ts +47 -0
  593. package/packages/l10n/src/index.ts +2 -0
  594. package/packages/l10n/src/l10n.ts +54 -0
  595. package/packages/l10n/src/types.ts +22 -0
  596. package/packages/list/AttachDetachItem/README.md +128 -0
  597. package/packages/list/AttachDetachItem/index.ts +3 -0
  598. package/packages/list/BasicList/README.md +71 -0
  599. package/packages/list/BasicList/examples/example1.gif +0 -0
  600. package/packages/list/BasicList/examples/example2.gif +0 -0
  601. package/packages/list/BasicList/index.ts +1 -0
  602. package/packages/list/CenteredList/README.md +42 -0
  603. package/packages/list/CenteredList/examples/example1.gif +0 -0
  604. package/packages/list/CenteredList/index.ts +1 -0
  605. package/packages/list/EdgeOffsetList/README.md +58 -0
  606. package/packages/list/EdgeOffsetList/examples/example1.gif +0 -0
  607. package/packages/list/EdgeOffsetList/examples/example2.gif +0 -0
  608. package/packages/list/EdgeOffsetList/index.ts +1 -0
  609. package/packages/list/FirstOnlyList/README.md +39 -0
  610. package/packages/list/FirstOnlyList/examples/example1.gif +0 -0
  611. package/packages/list/FirstOnlyList/index.ts +1 -0
  612. package/packages/list/FirstOnlyVariedList/README.md +105 -0
  613. package/packages/list/FirstOnlyVariedList/index.ts +1 -0
  614. package/packages/list/FixedToEndList/README.md +42 -0
  615. package/packages/list/FixedToEndList/examples/example1.gif +0 -0
  616. package/packages/list/FixedToEndList/index.ts +1 -0
  617. package/packages/list/Item/index.ts +1 -0
  618. package/packages/list/README.md +176 -0
  619. package/packages/list/src/AttachDetachItem/AttachDetachItem.tsx +96 -0
  620. package/packages/list/src/AttachDetachItem/prepareAttachDetachItemData.ts +13 -0
  621. package/packages/list/src/Base/Base.mouse.tsx +28 -0
  622. package/packages/list/src/Base/Base.tsx +355 -0
  623. package/packages/list/src/Base/index.tizen.tv.ts +1 -0
  624. package/packages/list/src/Base/index.ts +1 -0
  625. package/packages/list/src/Base/index.webos.tv.ts +1 -0
  626. package/packages/list/src/Base/index.webtv.ts +1 -0
  627. package/packages/list/src/BasicList/BasicList.tsx +175 -0
  628. package/packages/list/src/BasicList/config.ts +13 -0
  629. package/packages/list/src/CenteredList/CenteredList.tsx +116 -0
  630. package/packages/list/src/CenteredList/config.ts +13 -0
  631. package/packages/list/src/CenteredList/controller.ts +47 -0
  632. package/packages/list/src/CenteredList/interface.ts +10 -0
  633. package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +172 -0
  634. package/packages/list/src/EdgeOffsetList/config.ts +13 -0
  635. package/packages/list/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -0
  636. package/packages/list/src/FirstOnlyList/FirstOnlyList.tsx +122 -0
  637. package/packages/list/src/FirstOnlyList/config.ts +13 -0
  638. package/packages/list/src/FirstOnlyList/controller.ts +11 -0
  639. package/packages/list/src/FirstOnlyVariedList/FirstOnlyVariedList.tsx +132 -0
  640. package/packages/list/src/FirstOnlyVariedList/config.ts +13 -0
  641. package/packages/list/src/FixedToEndList/FixedToEndList.tsx +125 -0
  642. package/packages/list/src/FixedToEndList/config.ts +13 -0
  643. package/packages/list/src/FixedToEndList/controller.ts +44 -0
  644. package/packages/list/src/UnifiedListController/UnifiedListController.ts +254 -0
  645. package/packages/list/src/UnifiedListController/UnifiedListControllerBase.ts +241 -0
  646. package/packages/list/src/UnifiedListController/UnifiedVariedListController.ts +241 -0
  647. package/packages/list/src/UnifiedListController/interface.ts +81 -0
  648. package/packages/list/src/__test__/utils.spec.ts +59 -0
  649. package/packages/list/src/animate.animated.ts +1 -0
  650. package/packages/list/src/animate.ts +1 -0
  651. package/packages/list/src/index.ts +1 -0
  652. package/packages/list/src/interface.ts +41 -0
  653. package/packages/list/src/mocks/index.tsx +55 -0
  654. package/packages/list/src/types.ts +120 -0
  655. package/packages/list/src/utils.ts +142 -0
  656. package/packages/logger/README.md +117 -0
  657. package/packages/logger/src/LoggerManager.ts +60 -0
  658. package/packages/logger/src/LoggerService.ts +43 -0
  659. package/packages/logger/src/index.ts +3 -0
  660. package/packages/logger/src/loggers/ConsoleLogger/ConsoleLogger.ts +51 -0
  661. package/packages/logger/src/loggers/ConsoleLogger/README.md +39 -0
  662. package/packages/logger/src/loggers/ConsoleLogger/index.ts +1 -0
  663. package/packages/logger/src/loggers/LoggerBase/LoggerBase.ts +67 -0
  664. package/packages/logger/src/loggers/LoggerBase/README.md +69 -0
  665. package/packages/logger/src/loggers/LoggerBase/index.ts +1 -0
  666. package/packages/logger/src/loggers/SentryLogger/README.md +98 -0
  667. package/packages/logger/src/loggers/SentryLogger/Sentry.ts +1 -0
  668. package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +179 -0
  669. package/packages/logger/src/loggers/SentryLogger/index.ts +2 -0
  670. package/packages/logger/src/loggers/index.ts +2 -0
  671. package/packages/logger/src/types.ts +46 -0
  672. package/packages/lottie-animations/README.md +217 -0
  673. package/packages/lottie-animations/src/LottieAnimation.tsx +125 -0
  674. package/packages/lottie-animations/src/index.ts +7 -0
  675. package/packages/menu/README.md +90 -0
  676. package/packages/menu/WhitelabelMenu/index.ts +1 -0
  677. package/packages/menu/WhitelabelMenu/interface.ts +2 -0
  678. package/packages/menu/WhitelabelMenu/styles.ts +2 -0
  679. package/packages/menu/interface.ts +3 -0
  680. package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +166 -0
  681. package/packages/menu/src/MenuAndContentContainer/index.ts +1 -0
  682. package/packages/menu/src/MenuAndContentContainer/interface.ts +164 -0
  683. package/packages/menu/src/MenuAndContentContainer/service.ts +5 -0
  684. package/packages/menu/src/WhitelabelMenu/SideMenu.scss +41 -0
  685. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.1080.scss +2 -0
  686. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.1080.scss +3 -0
  687. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.scss +3 -0
  688. package/packages/menu/src/WhitelabelMenu/SideMenu.styles.scss +2 -0
  689. package/packages/menu/src/WhitelabelMenu/SideMenu.tsx +248 -0
  690. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.scss +56 -0
  691. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.1080.scss +2 -0
  692. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.1080.scss +3 -0
  693. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.scss +3 -0
  694. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.scss +2 -0
  695. package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.tsx +78 -0
  696. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_animated.scss +12 -0
  697. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.1080.scss +17 -0
  698. package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.scss +17 -0
  699. package/packages/menu/src/WhitelabelMenu/SideMenuItem/index.ts +1 -0
  700. package/packages/menu/src/WhitelabelMenu/SideMenuItem/interface.ts +49 -0
  701. package/packages/menu/src/WhitelabelMenu/SideMenuItem/rtl.scss +12 -0
  702. package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.1080.ts +2 -0
  703. package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.ts +2 -0
  704. package/packages/menu/src/WhitelabelMenu/SideMenuItem/styles.ts +1 -0
  705. package/packages/menu/src/WhitelabelMenu/VisualController.animated.ts +48 -0
  706. package/packages/menu/src/WhitelabelMenu/VisualController.ts +20 -0
  707. package/packages/menu/src/WhitelabelMenu/VisualControllerBase.ts +71 -0
  708. package/packages/menu/src/WhitelabelMenu/_animated.scss +39 -0
  709. package/packages/menu/src/WhitelabelMenu/_sizes.1080.scss +14 -0
  710. package/packages/menu/src/WhitelabelMenu/_sizes.scss +14 -0
  711. package/packages/menu/src/WhitelabelMenu/assets/shadow.1080.png +0 -0
  712. package/packages/menu/src/WhitelabelMenu/assets/shadow.720.png +0 -0
  713. package/packages/menu/src/WhitelabelMenu/constants.animated.ts +1 -0
  714. package/packages/menu/src/WhitelabelMenu/constants.ts +1 -0
  715. package/packages/menu/src/WhitelabelMenu/index.ts +1 -0
  716. package/packages/menu/src/WhitelabelMenu/interface.ts +14 -0
  717. package/packages/menu/src/WhitelabelMenu/rtl.scss +22 -0
  718. package/packages/menu/src/WhitelabelMenu/sizes.1080.ts +1 -0
  719. package/packages/menu/src/WhitelabelMenu/sizes.ts +1 -0
  720. package/packages/menu/src/WhitelabelMenu/styles.ts +1 -0
  721. package/packages/menu/src/WhitelabelMenu/utils.ts +34 -0
  722. package/packages/menu/src/index.ts +2 -0
  723. package/packages/modal-service/README.md +48 -0
  724. package/packages/modal-service/src/IModal.ts +3 -0
  725. package/packages/modal-service/src/ModalService.scss +7 -0
  726. package/packages/modal-service/src/ModalService.styles.1080.scss +2 -0
  727. package/packages/modal-service/src/ModalService.styles.scss +2 -0
  728. package/packages/modal-service/src/ModalService.tsx +76 -0
  729. package/packages/modal-service/src/_sizes.1080.scss +2 -0
  730. package/packages/modal-service/src/_sizes.scss +2 -0
  731. package/packages/modal-service/src/index.ts +2 -0
  732. package/packages/mouse-navigation/README.md +105 -0
  733. package/packages/mouse-navigation/src/ArrowNavigation/Arrow.tsx +58 -0
  734. package/packages/mouse-navigation/src/ArrowNavigation/ArrowNavigation.tsx +95 -0
  735. package/packages/mouse-navigation/src/ArrowNavigation/__test__/Arrow.spec.tsx +35 -0
  736. package/packages/mouse-navigation/src/ArrowNavigation/__test__/ArrowNavigation.spec.tsx +45 -0
  737. package/packages/mouse-navigation/src/ArrowNavigation/index.tsx +1 -0
  738. package/packages/mouse-navigation/src/MouseElementWrapper.tsx +70 -0
  739. package/packages/mouse-navigation/src/MouseNavigation.tsx +139 -0
  740. package/packages/mouse-navigation/src/MouseNavigationInterface.ts +8 -0
  741. package/packages/mouse-navigation/src/__test__/MouseElementWrapper.spec.tsx +61 -0
  742. package/packages/mouse-navigation/src/__test__/MouseNavigation.spec.tsx +107 -0
  743. package/packages/mouse-navigation/src/index.ts +3 -0
  744. package/packages/numeric-zapper/README.md +153 -0
  745. package/packages/numeric-zapper/src/NumericZapper.scss +20 -0
  746. package/packages/numeric-zapper/src/NumericZapper.styles.1080.scss +2 -0
  747. package/packages/numeric-zapper/src/NumericZapper.styles.scss +2 -0
  748. package/packages/numeric-zapper/src/NumericZapper.tsx +256 -0
  749. package/packages/numeric-zapper/src/ZapperAllower.ts +15 -0
  750. package/packages/numeric-zapper/src/ZapperService.tsx +8 -0
  751. package/packages/numeric-zapper/src/_sizes.1080.scss +7 -0
  752. package/packages/numeric-zapper/src/_sizes.scss +7 -0
  753. package/packages/numeric-zapper/src/index.ts +4 -0
  754. package/packages/numeric-zapper/src/interface.ts +1 -0
  755. package/packages/numeric-zapper/src/styles.ts +1 -0
  756. package/packages/perf-utils/README.md +127 -0
  757. package/packages/perf-utils/src/array/filter.ts +54 -0
  758. package/packages/perf-utils/src/array/find.ts +43 -0
  759. package/packages/perf-utils/src/array/findIndex.ts +43 -0
  760. package/packages/perf-utils/src/array/forEach.ts +48 -0
  761. package/packages/perf-utils/src/array/includes.ts +41 -0
  762. package/packages/perf-utils/src/array/includesNaN.ts +32 -0
  763. package/packages/perf-utils/src/array/index.ts +7 -0
  764. package/packages/perf-utils/src/array/map.ts +52 -0
  765. package/packages/picker/README.md +70 -0
  766. package/packages/picker/src/DatePicker.tsx +55 -0
  767. package/packages/picker/src/ModalPicker/Checkbox.tsx +38 -0
  768. package/packages/picker/src/ModalPicker/PickerItem.tsx +86 -0
  769. package/packages/picker/src/ModalPicker/PickerModal.tsx +98 -0
  770. package/packages/picker/src/ModalPicker/index.ts +1 -0
  771. package/packages/picker/src/ModalPicker/modalPicker.tsx +48 -0
  772. package/packages/picker/src/Picker.tsx +127 -0
  773. package/packages/picker/src/index.ts +3 -0
  774. package/packages/picker/src/types.ts +25 -0
  775. package/packages/pin-input/README.md +55 -0
  776. package/packages/pin-input/src/PinInput.scss +5 -0
  777. package/packages/pin-input/src/PinInput.tsx +169 -0
  778. package/packages/pin-input/src/index.ts +1 -0
  779. package/packages/player-ui/README.md +207 -0
  780. package/packages/player-ui/src/BackwardButton.tsx +41 -0
  781. package/packages/player-ui/src/CurrentTime.tsx +56 -0
  782. package/packages/player-ui/src/Duration.tsx +60 -0
  783. package/packages/player-ui/src/ForwardButton.tsx +41 -0
  784. package/packages/player-ui/src/PauseButton.tsx +57 -0
  785. package/packages/player-ui/src/PlayButton.tsx +57 -0
  786. package/packages/player-ui/src/PlayPauseButton.tsx +63 -0
  787. package/packages/player-ui/src/PlayerInteractable.tsx +66 -0
  788. package/packages/player-ui/src/PlayerTime.tsx +55 -0
  789. package/packages/player-ui/src/PlayerUI.tsx +238 -0
  790. package/packages/player-ui/src/RemainingTime.tsx +74 -0
  791. package/packages/player-ui/src/Seekbar.tsx +184 -0
  792. package/packages/player-ui/src/Seeking.ts +122 -0
  793. package/packages/player-ui/src/StopButton.tsx +35 -0
  794. package/packages/player-ui/src/Subtitles.tsx +151 -0
  795. package/packages/player-ui/src/index.ts +14 -0
  796. package/packages/player-ui/src/mocks.ts +41 -0
  797. package/packages/player-ui/src/timeUtils.ts +139 -0
  798. package/packages/player-ui/src/types.ts +42 -0
  799. package/packages/progress-bar/README.md +31 -0
  800. package/packages/progress-bar/src/ProgressBar.tsx +41 -0
  801. package/packages/progress-bar/src/index.ts +1 -0
  802. package/packages/progress-bar/src/interface.ts +14 -0
  803. package/packages/qr-code/README.md +80 -0
  804. package/packages/qr-code/src/QRCode.tsx +39 -0
  805. package/packages/qr-code/src/index.ts +2 -0
  806. package/packages/qr-code/src/qrGenerator/__external__/constants.ts +23 -0
  807. package/packages/qr-code/src/qrGenerator/__external__/qrcode.d.ts +31 -0
  808. package/packages/qr-code/src/qrGenerator/__external__/qrcode.js +618 -0
  809. package/packages/qr-code/src/qrGenerator/generateQr.ts +7 -0
  810. package/packages/qr-code/src/qrGenerator/index.ts +3 -0
  811. package/packages/router/README.md +163 -0
  812. package/packages/router/src/Route.tsx +132 -0
  813. package/packages/router/src/Router.tsx +174 -0
  814. package/packages/router/src/focusActiveRoute.ts +5 -0
  815. package/packages/router/src/history.ts +24 -0
  816. package/packages/router/src/index.ts +5 -0
  817. package/packages/router/src/types.ts +13 -0
  818. package/packages/router/src/utils.ts +24 -0
  819. package/packages/runtime-config/README.md +37 -0
  820. package/packages/runtime-config/src/Config.ts +44 -0
  821. package/packages/runtime-config/src/index.ts +1 -0
  822. package/packages/sass-utils/README.md +197 -0
  823. package/packages/sass-utils/src/box-shadow.scss +5 -0
  824. package/packages/sass-utils/src/ellipsis.scss +15 -0
  825. package/packages/sass-utils/src/linear-gradient.scss +43 -0
  826. package/packages/sass-utils/src/prefix-property.scss +7 -0
  827. package/packages/sass-utils/src/prefix-value.scss +6 -0
  828. package/packages/sass-utils/src/prefix.scss +6 -0
  829. package/packages/sass-utils/src/scale.1080.scss +3 -0
  830. package/packages/sass-utils/src/scale.720.scss +5 -0
  831. package/packages/sass-utils/src/transform.scss +5 -0
  832. package/packages/sass-utils/src/transition.scss +6 -0
  833. package/packages/scheduler/README.md +55 -0
  834. package/packages/scheduler/src/Scheduler.ts +43 -0
  835. package/packages/scheduler/src/Task.ts +72 -0
  836. package/packages/scheduler/src/index.ts +4 -0
  837. package/packages/scheduler/src/timeProvider.ts +3 -0
  838. package/packages/scroll-text/README.md +78 -0
  839. package/packages/scroll-text/src/Base.tsx +141 -0
  840. package/packages/scroll-text/src/ScrollText.animated.tsx +80 -0
  841. package/packages/scroll-text/src/ScrollText.tsx +53 -0
  842. package/packages/scroll-text/src/ScrollTextBaseClass.tsx +86 -0
  843. package/packages/scroll-text/src/index.ts +1 -0
  844. package/packages/scroller/README.md +77 -0
  845. package/packages/scroller/src/Scroller.tsx +51 -0
  846. package/packages/scroller/src/index.ts +1 -0
  847. package/packages/splash/AnimatedSplash.ts +1 -0
  848. package/packages/splash/AnimatedSplashAnimated.ts +1 -0
  849. package/packages/splash/AnimatedSplashBasic.ts +1 -0
  850. package/packages/splash/AutomaticSplashAnimated.ts +1 -0
  851. package/packages/splash/AutomaticSplashBasic.ts +1 -0
  852. package/packages/splash/README.md +93 -0
  853. package/packages/splash/StaticSplash.ts +1 -0
  854. package/packages/splash/StaticSplashAnimated.ts +1 -0
  855. package/packages/splash/StaticSplashBasic.ts +1 -0
  856. package/packages/splash/src/AnimatedSplash.animated.tsx +78 -0
  857. package/packages/splash/src/AnimatedSplash.basic.tsx +37 -0
  858. package/packages/splash/src/AutomaticSplash.animated.tsx +20 -0
  859. package/packages/splash/src/AutomaticSplash.basic.tsx +20 -0
  860. package/packages/splash/src/Splash.scss +8 -0
  861. package/packages/splash/src/StaticSplash.animated.tsx +48 -0
  862. package/packages/splash/src/StaticSplash.basic.tsx +26 -0
  863. package/packages/splash/src/index.animated.ts +1 -0
  864. package/packages/splash/src/index.ts +1 -0
  865. package/packages/splash/src/styles.ts +1 -0
  866. package/packages/splash/src/types.ts +20 -0
  867. package/packages/storage/README.md +61 -0
  868. package/packages/storage/src/CookieStorage/CookieStorage.ts +57 -0
  869. package/packages/storage/src/CookieStorage/index.ts +1 -0
  870. package/packages/storage/src/LocalStorage/LocalStorage.ts +58 -0
  871. package/packages/storage/src/LocalStorage/index.ts +1 -0
  872. package/packages/storage/src/index.ts +2 -0
  873. package/packages/storage/src/shared.ts +41 -0
  874. package/packages/storage/src/types.ts +33 -0
  875. package/packages/throbber/README.md +53 -0
  876. package/packages/throbber/src/Throbber.scss +52 -0
  877. package/packages/throbber/src/Throbber.tsx +19 -0
  878. package/packages/throbber/src/ThrobberService.tsx +55 -0
  879. package/packages/throbber/src/controlsHandling.ts +14 -0
  880. package/packages/throbber/src/index.ts +2 -0
  881. package/packages/time/README.md +113 -0
  882. package/packages/time/src/Time.ts +245 -0
  883. package/packages/time/src/adapters/worldTimeApi.ts +74 -0
  884. package/packages/time/src/constants.ts +13 -0
  885. package/packages/time/src/index.ts +1 -0
  886. package/packages/time/src/services/worldTimeApi/index.ts +7 -0
  887. package/packages/time/src/services/worldTimeApi/types.ts +75 -0
  888. package/packages/time/src/services/worldTimeApi/worldTimeApi.ts +77 -0
  889. package/packages/time/src/types.ts +39 -0
  890. package/packages/time/src/utils.ts +79 -0
  891. package/packages/toast/README.md +116 -0
  892. package/packages/toast/src/Toast/IVisualController.ts +7 -0
  893. package/packages/toast/src/Toast/Toast.scss +22 -0
  894. package/packages/toast/src/Toast/Toast.styles.1080.scss +2 -0
  895. package/packages/toast/src/Toast/Toast.styles.scss +2 -0
  896. package/packages/toast/src/Toast/Toast.tsx +83 -0
  897. package/packages/toast/src/Toast/VisualController.animated.ts +20 -0
  898. package/packages/toast/src/Toast/VisualController.ts +9 -0
  899. package/packages/toast/src/Toast/_sizes.1080.scss +8 -0
  900. package/packages/toast/src/Toast/_sizes.scss +8 -0
  901. package/packages/toast/src/Toast/index.ts +2 -0
  902. package/packages/toast/src/Toast/styles.ts +1 -0
  903. package/packages/toast/src/ToastService.scss +7 -0
  904. package/packages/toast/src/ToastService.styles.1080.scss +2 -0
  905. package/packages/toast/src/ToastService.styles.scss +2 -0
  906. package/packages/toast/src/ToastService.tsx +48 -0
  907. package/packages/toast/src/_sizes.1080.scss +2 -0
  908. package/packages/toast/src/_sizes.scss +2 -0
  909. package/packages/toast/src/index.ts +4 -0
  910. package/packages/toast/src/types.ts +4 -0
  911. package/packages/types-bigscreen-jsx/README.md +11 -0
  912. package/packages/types-bigscreen-jsx/global.d.ts +155 -0
  913. package/packages/types-bigscreen-jsx/index.d.ts +3323 -0
  914. package/packages/types-bigscreen-jsx/index.js +0 -0
  915. package/packages/types-bigscreen-jsx/src/copyTypes.js +14 -0
  916. package/packages/volume-control/README.md +79 -0
  917. package/packages/volume-control/src/IVolumeControlUI.ts +26 -0
  918. package/packages/volume-control/src/VolumeControlService.tsx +110 -0
  919. package/packages/volume-control/src/VolumeControlUI/VisualController.animated.ts +28 -0
  920. package/packages/volume-control/src/VolumeControlUI/VisualController.ts +3 -0
  921. package/packages/volume-control/src/VolumeControlUI/VisualControllerBase.ts +26 -0
  922. package/packages/volume-control/src/VolumeControlUI/VolumeControl.scss +18 -0
  923. package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.animated.scss +2 -0
  924. package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.scss +1 -0
  925. package/packages/volume-control/src/VolumeControlUI/VolumeControlUI.tsx +80 -0
  926. package/packages/volume-control/src/VolumeControlUI/_animated.scss +8 -0
  927. package/packages/volume-control/src/VolumeControlUI/index.ts +1 -0
  928. package/packages/volume-control/src/index.ts +2 -0
  929. package/packages/zapping/README.md +88 -0
  930. package/packages/zapping/src/ChannelZapping.ts +134 -0
  931. package/packages/zapping/src/Zapping.tsx +105 -0
  932. package/packages/zapping/src/index.ts +1 -0
  933. package/packages/zapping/src/interface.ts +1 -0
@@ -0,0 +1,1489 @@
1
+ import { Reference, Component, Children } from '@24i/bigscreen-sdk/jsx';
2
+ import { IFocusable } from '@24i/bigscreen-sdk/focus';
3
+ import { ModalService } from '@24i/bigscreen-sdk/modal-service';
4
+ import { IEvents, EventMapType } from '@24i/bigscreen-sdk/events-manager';
5
+ import { Asset } from '@24i/smartapps-datalayer/models';
6
+ import { ICheckbox, PickerMode } from '@24i/bigscreen-sdk/picker';
7
+
8
+ // MARK: Shared Props (alphabetical order)
9
+
10
+ type AdditionalRowsProp = {
11
+ /**
12
+ * The number of rows that are rendered at the bottom below navigatable rows
13
+ * These can get covered sometimes by ProgramInfo for example
14
+ */
15
+ additionalRows: number,
16
+ };
17
+
18
+ type ChannelDataProp = {
19
+ /**
20
+ * An array with channel data
21
+ */
22
+ channelData: Asset[],
23
+ };
24
+
25
+ type ChannelHeaderWidthPxProp = {
26
+ /**
27
+ * The width of the channel header column in pixels
28
+ */
29
+ channelHeaderWidthPx: number,
30
+ };
31
+
32
+ type ChannelLessOnFocusChangeProp<T extends Program> = {
33
+ /**
34
+ * Called every time focus moves to different cell (even after mouse focuses the cell)
35
+ */
36
+ onFocusChange: ChannelLessFocusChangeCallback<T>,
37
+ };
38
+
39
+ type ChannelLessOnItemPressProp<T extends Program> = {
40
+ /**
41
+ * Called after pressing any item with data (not loading ones)
42
+ */
43
+ onItemPress: ChannelLessItemPressCallback<T>,
44
+ };
45
+
46
+ type DataGetterProp = {
47
+ dataGetter: (range: DataRange) => Asset[],
48
+ };
49
+
50
+ type DataProp = {
51
+ /**
52
+ * A Data Manager
53
+ */
54
+ data: DataManager,
55
+ };
56
+
57
+ type DataManagersProp = {
58
+ /**
59
+ * An array of Data Managers
60
+ */
61
+ dataManagers: DataManager[],
62
+ };
63
+
64
+ type DatePickerProp = {
65
+ /**
66
+ * Props for the DatePicker component
67
+ * If omitted the Day component will be rendered instead
68
+ */
69
+ datePickerProps: OutsideDatePickerProps,
70
+ };
71
+
72
+ type FetchProgramsProp = {
73
+ /**
74
+ * Function called by EPG to fetch more data for a channel
75
+ */
76
+ fetchPrograms: ProgramsFetcher,
77
+ };
78
+
79
+ type InitialChannelIndexProp = {
80
+ /**
81
+ * The initial index in the channels list that should be scrolled to and focus after
82
+ * rendering the EPG
83
+ */
84
+ initialChannelIndex: number,
85
+ };
86
+
87
+ type InitialTimestampProp = {
88
+ /**
89
+ * The initial timestamp that should be used to render in the center of the EPG
90
+ */
91
+ initialTimestamp: number,
92
+ };
93
+
94
+ type IsLoadingProp = {
95
+ /**
96
+ * Flag to distinguish a cell that is intended to be used only for loading placeholder purposes
97
+ */
98
+ isLoading: boolean,
99
+ };
100
+
101
+ type ItemProp = {
102
+ /**
103
+ * Data for the program
104
+ */
105
+ item: Asset,
106
+ };
107
+
108
+ type LimitFromMsProp = {
109
+ /**
110
+ * The lowest timestamp in ms that can be navigated by EPG
111
+ * Render, as well as fetch, can go slightly more into history
112
+ */
113
+ limitFromMs: number,
114
+ };
115
+
116
+ type LimitToMsProp = {
117
+ /**
118
+ * The highest timestamp in ms that can be navigated by EPG
119
+ * Render, as well as fetch, can go slightly more into future
120
+ */
121
+ limitToMs: number,
122
+ };
123
+
124
+ type NavigatableRowsProp = {
125
+ /**
126
+ * The number of rows that can be navigated with focus up/down
127
+ */
128
+ navigatableRows: number,
129
+ };
130
+
131
+ type OnFocusChangeProp<T extends Program> = {
132
+ /**
133
+ * Called every time focus moves to different cell (even after mouse focuses the cell)
134
+ */
135
+ onFocusChange: FocusChangeCallback<T>,
136
+ };
137
+
138
+ type OnItemPressProp<T extends Program> = {
139
+ /**
140
+ * Called after pressing any item with data (not loading ones)
141
+ */
142
+ onItemPress: ItemPressCallback<T>,
143
+ };
144
+
145
+ type OnMouseEnterProp = {
146
+ /**
147
+ * onMouseEnter listener used only on the inside to synchronize keyboard and mouse navigation
148
+ */
149
+ onMouseEnter: (data: Asset | undefined) => void,
150
+ };
151
+
152
+ type OnScrolledToTimestampProp = {
153
+ /**
154
+ * Callback for scrolling left/right
155
+ * @param timestamp Current timestamp of the center of the EPG in milliseconds
156
+ */
157
+ onScrolledToTimestamp: (timestamp: number) => void,
158
+ };
159
+
160
+ type PixelInMsProp = {
161
+ /**
162
+ * The ratio between pixels and milliseconds used in the EPG
163
+ */
164
+ pixelInMs: number,
165
+ };
166
+
167
+ type PluginsProp<T extends Program> = {
168
+ /**
169
+ * Prop for extending the EPG functionality
170
+ */
171
+ plugins: (PluginComponent<T> | PluginFC)[],
172
+ };
173
+
174
+ type ProgramTextModeResolverProp = {
175
+ /**
176
+ * Prop for resolving the text mode of the component based on the cell width
177
+ * @param widthPx the width of the cell in pixels
178
+ * @returns ProgramTextMode to use
179
+ */
180
+ programTextModeResolver: (widthPx: number) => ProgramTextMode,
181
+ };
182
+
183
+ type RenderChannelHeaderProp<T extends Header> = {
184
+ /**
185
+ * Function to render custom channel header item
186
+ */
187
+ renderChannelHeader: ChannelHeaderRenderer<T>,
188
+ };
189
+
190
+ type RenderDayProp<X extends Day> = {
191
+ /**
192
+ * Function to render custom day displaying component
193
+ */
194
+ renderDay?: DayRenderer<X>,
195
+ };
196
+
197
+ type RenderNowLineHeaderProp = {
198
+ /**
199
+ * Function to render custom now line header (e.g. LIVE arrow pointer at the top of the line)
200
+ */
201
+ renderNowLineHeader: (timestamp: number, ref: Reference<NowLineHeader>) => JSX.Element,
202
+ };
203
+
204
+ type RenderProgramProp<T extends Program> = {
205
+ renderProgram: ProgramRenderer<T>,
206
+ };
207
+
208
+ type RenderTimeProp<T extends TimelineSection> = {
209
+ /**
210
+ * Custom function to render time inside the timeline section
211
+ */
212
+ renderTime: TimeRenderer<T>,
213
+ };
214
+
215
+ type RowHeightPxProp = {
216
+ /**
217
+ * The height of the EPG row in pixels
218
+ */
219
+ rowHeightPx: number,
220
+ };
221
+
222
+ type SectionWidthMsProp = {
223
+ /**
224
+ * The width of the section in upper timeline header
225
+ */
226
+ sectionWidthMs: number,
227
+ };
228
+
229
+ type ScrollStepMsProp = {
230
+ /**
231
+ * The number of milliseconds that should be scrolled when moving left and right
232
+ */
233
+ scrollStepMs: number,
234
+ };
235
+
236
+ type TimeProp = {
237
+ /**
238
+ * The time interface that provides current time and time change events
239
+ */
240
+ time: Time,
241
+ };
242
+
243
+ type TimeProviderProp = {
244
+ /**
245
+ * Function for providing current time
246
+ */
247
+ timeProvider: TimeProvider,
248
+ };
249
+
250
+ type TimelineSectionWidthMsProp = {
251
+ /**
252
+ * The width of the timeline section (time distance between markers)
253
+ */
254
+ timelineSectionWidthMs: number,
255
+ };
256
+
257
+ type TimelineWidthMsProp = {
258
+ /**
259
+ * The width of the visible epg section with data in milliseconds
260
+ */
261
+ timelineWidthMs: number,
262
+ };
263
+
264
+ type TimelineWidthPxProp = {
265
+ /**
266
+ * The width of the visible epg section with data in pixels
267
+ */
268
+ timelineWidthPx: number,
269
+ };
270
+
271
+ type TimestampProp = {
272
+ /**
273
+ * The current timestamp of the center of the EPG
274
+ */
275
+ timestamp: number,
276
+ };
277
+
278
+ type XOffsetPxProp = {
279
+ /**
280
+ * The initial x-axis offset in pixels to set during the render
281
+ */
282
+ xOffsetPx: number,
283
+ };
284
+
285
+ type WidthPxProp = {
286
+ /**
287
+ * The initial width in pixels to set during the render
288
+ */
289
+ widthPx: number,
290
+ };
291
+
292
+ // MARK: shared types and interfaces
293
+
294
+ /**
295
+ * This function should return rendered ChannelHeader.
296
+ * ChannelHeader usually consists of channel number and channel icon or name.
297
+ * @typeparam T Channel header component - defaults to Header component
298
+ * @param data Channel data
299
+ * @param ref Reference to the component
300
+ * @returns JSX.Element
301
+ */
302
+ export type ChannelHeaderRenderer<T extends Header> = (
303
+ (data: Asset, ref: Reference<T>) => JSX.Element
304
+ );
305
+
306
+ /**
307
+ * This function should fetch and asynchronously return more programs for given channel
308
+ * and timeframe.
309
+ * @param channel Channel data
310
+ * @param from Timestamp for the start of the timeframe
311
+ * @param to Timestamp for the end of the timeframe
312
+ * @returns Promise<Asset[]>
313
+ */
314
+ export type ProgramsFetcher<
315
+ > = (channel: Asset, from: number, to: number) => Promise<Asset[]>;
316
+
317
+ export type FetchCallback = () => void;
318
+
319
+ /**
320
+ * This function should return custom visual for Program.
321
+ * @typeparam T Program component - defaults to EpgProgram component
322
+ * @param isLoading Flag to mark whether it is just a loading placeholder
323
+ * @param data Program data or undefined for loading placeholder
324
+ * @param ref Reference to the component
325
+ * @param widthPx The initial width of the Program component to render with
326
+ * @param xOffsetPx The initial offset of the Program component to render with
327
+ * @param textMode The initial program text mode during the render
328
+ * @returns JSX.Element
329
+ */
330
+ export type ProgramRenderer<T extends Program> = (
331
+ isLoading: boolean,
332
+ data: Asset | undefined,
333
+ ref: Reference<T>,
334
+ widthPx: number,
335
+ xOffsetPx: number,
336
+ textMode: ProgramTextMode,
337
+ ) => JSX.Element;
338
+
339
+ /**
340
+ * This function should return custom visual of the time in Timeline.
341
+ * This component must implement TimelineSection interface.
342
+ * @param timestamp Timestamp of the time for formatting
343
+ * @param offset Initial offset to render with in pixels
344
+ * @param width width of the section to render in pixels
345
+ * @param ref Reference to TimelineSection component
346
+ * @returns JSX.Element
347
+ */
348
+ export type TimeRenderer<
349
+ T extends TimelineSection = TimelineSection,
350
+ > = (
351
+ timestamp: number, offset: number, width: number, ref: Reference<T>,
352
+ ) => JSX.Element;
353
+
354
+ /**
355
+ * This function will be called when an Item with Program Data is pressed.
356
+ * @typeparam T extension of a Program component
357
+ * @param data Current Program data
358
+ * @param channel The program's channel
359
+ * @param component Pressed Program component
360
+ */
361
+ export type ItemPressCallback<T extends Program> = (
362
+ (data: Asset, channel: Asset, component: T) => void
363
+ );
364
+
365
+ /**
366
+ * This function will be called when an Item with Program Data is pressed.
367
+ * @typeparam T extension of a Program component
368
+ * @param data Current EpgProgram data
369
+ * @param component Pressed Program component
370
+ */
371
+ export type ChannelLessItemPressCallback<T extends Program> = (
372
+ (data: Asset, component: T) => void
373
+ );
374
+
375
+ /**
376
+ * This function will be called when any item is focused
377
+ * @typeparam T extension of a Program component
378
+ * @param data Current EpgProgram data or undefined if the focus is on loading cell
379
+ * @param channel The program's channel
380
+ * @param component Program component of the focused Cell
381
+ */
382
+ export type FocusChangeCallback<T extends Program> = (
383
+ (data: Asset | undefined, channel: Asset, component: T) => void
384
+ );
385
+
386
+ /**
387
+ * This function will be called when any item is focused
388
+ * @typeparam T extension of a Program component
389
+ * @param data Current EpgProgram data or undefined if the focus is on loading cell
390
+ * @param component Program component of the focused Cell
391
+ */
392
+ export type ChannelLessFocusChangeCallback<T extends Program> = (
393
+ (data: Asset | undefined, component: T) => void
394
+ );
395
+
396
+ export type DayRenderer<
397
+ T extends Day = Day,
398
+ > = (timestamp: number, ref: Reference<T>) => JSX.Element;
399
+
400
+ /**
401
+ * Simple functions that returns current unix time in milliseconds
402
+ */
403
+ export type TimeProvider = () => number;
404
+
405
+ // MARK: DataManager
406
+
407
+ export type DataRange = [number, number];
408
+
409
+ export type DataUpdateCallback = () => void;
410
+
411
+ export interface DataManager {
412
+ getChannel: () => Asset,
413
+ getData: () => Asset[],
414
+ getDataFromRange: (range: DataRange) => Asset[],
415
+ getNextProgramStart: (timestamp: number) => number | null,
416
+ getPreviousProgramEnd: (timestamp: number, scrollStepMs: number) => number | null,
417
+ setOnDataUpdated: (callback: DataUpdateCallback) => void,
418
+ removeOnDataUpdated: () => void,
419
+ fetchAroundTimestampIfNeeded: (timestamp: number) => void,
420
+ }
421
+
422
+ // MARK: Time Events
423
+
424
+ export interface TimeEvents extends EventMapType {
425
+ 'onminute': (timestamp: number) => void,
426
+ 'onsecond': (timestamp: number) => void,
427
+ }
428
+
429
+ /**
430
+ * Interface for managing time updates inside EPG
431
+ */
432
+ export interface Time extends IEvents<TimeEvents> {
433
+ /**
434
+ * This function starts the timer that fires the events every time interval
435
+ */
436
+ initialize: () => void,
437
+ /**
438
+ * This function stops the timer
439
+ */
440
+ destroy: () => void,
441
+ /**
442
+ * Returns current timestamp in ms
443
+ */
444
+ getCurrentTime: () => number,
445
+ }
446
+
447
+ // MARK: EPG Program Component
448
+
449
+ export type ProgramTextMode = 'full' | 'ellipsis_only' | 'empty';
450
+
451
+ /**
452
+ * Props passed to custom rendered Program Component.
453
+ */
454
+ export type ProgramProps = {
455
+ /**
456
+ * Program data
457
+ */
458
+ data?: Asset,
459
+ /**
460
+ * Flag that it is a loading placeholder
461
+ */
462
+ isLoading?: boolean,
463
+ /**
464
+ * Initial width of the Component
465
+ */
466
+ widthPx: number,
467
+ /**
468
+ * Initial x offset of the Component
469
+ */
470
+ xOffsetPx: number,
471
+ /**
472
+ * The text mode for the initial Program render
473
+ */
474
+ textMode: ProgramTextMode,
475
+ };
476
+
477
+ /**
478
+ * Custom visual component for a program.
479
+ * This component should render a pure div and shouldn't handle any events
480
+ * like onPress or onMouseEnter. This is done by Cell component in EPG core.
481
+ * This component can be reused for multiple programs during its lifetime.
482
+ */
483
+ export interface Program
484
+ extends Component<any> {
485
+ /**
486
+ * Function to offset the Program component inside the cell.
487
+ * This is so the cells at the start of the viewport show text from the beginning
488
+ * even though the Cell itself goes more to the past.
489
+ * @param offset offset in x axis in px
490
+ */
491
+ setOffset?(offset: number): void,
492
+ /**
493
+ * Function to change width of the Program component inside the cell.
494
+ * This is so the cells at the start of the viewport show text from the beginning
495
+ * even though the Cell itself goes more to the past.
496
+ * @param width width in px
497
+ */
498
+ setWidth?(width: number): void,
499
+ /**
500
+ * Function to change data and the visuals.
501
+ * (E.g. Use setText to change the name)
502
+ * @param data New Program data
503
+ * @param textMode the text mode to use to display the program
504
+ * @param widthPx the full width of the cell in pixels that can be used to alter styling
505
+ * @param xOffsetPx the offset of the cell in pixels that can be used to alter styling
506
+ */
507
+ updateData(data: Asset, textMode: ProgramTextMode, widthPx: number, xOffsetPx: number): void,
508
+ }
509
+
510
+ export interface ProgramComponent {
511
+ new (props: any): Program,
512
+ }
513
+
514
+ // MARK: EPG Header Component
515
+
516
+ /**
517
+ * Props for the Channel Header Component
518
+ */
519
+ export type HeaderProps = {
520
+ /**
521
+ * Channel Data
522
+ */
523
+ data: Asset,
524
+ };
525
+
526
+ /**
527
+ * Channel Header component.
528
+ * This component represents the channel header aka channel number and name/icon.
529
+ * It can be reused by multiple headers.
530
+ */
531
+ export interface Header
532
+ extends Component<any> {
533
+ /**
534
+ * Function to show the header element
535
+ */
536
+ show(): void,
537
+ /**
538
+ * Function to hide the header element
539
+ */
540
+ hide(): void,
541
+ /**
542
+ * Function to update the visuals
543
+ */
544
+ updateData(data: Asset): void,
545
+ }
546
+
547
+ export interface HeaderComponent {
548
+ new (props: any): Header,
549
+ }
550
+
551
+ // MARK: EPG NowLineHeader Component
552
+
553
+ export interface NowLineHeader extends Component<any> {
554
+ /**
555
+ * Function to display the displayed time in the timeline header
556
+ * @param timestamp current time in ms
557
+ */
558
+ updateData: (timestamp: number) => void,
559
+ }
560
+
561
+ export interface NowLineHeaderComponent {
562
+ new (props: any): NowLineHeader,
563
+ }
564
+
565
+ // MARK: EPG Day Component
566
+
567
+ /**
568
+ * Props for the Day Component
569
+ */
570
+ export type DayProps = (
571
+ TimestampProp
572
+ );
573
+
574
+ export interface Day extends Component<any> {
575
+ /**
576
+ * Function to update the displayed date when the visible day changes in EPG
577
+ * @param timestamp New timestamp for the date
578
+ */
579
+ updateData: (timestamp: number) => void,
580
+ }
581
+
582
+ export interface DayComponent {
583
+ new (props: DayProps): Day,
584
+ }
585
+
586
+ // MARK: EPG DatePicker Component
587
+
588
+ /**
589
+ * Props for the EPG DatePicker Component
590
+ */
591
+ export type DatePickerProps = {
592
+ /**
593
+ * Number of days into the past to show (today excluded)
594
+ */
595
+ daysInPast: number,
596
+ /**
597
+ * Number of days to future to show (today excluded)
598
+ */
599
+ daysToFuture: number,
600
+ /**
601
+ * Number of milliseconds since the day start to scroll to
602
+ * @example (8 * 60 + 30) * 1000 will scroll directly to 8:30 on date picker day selected
603
+ */
604
+ dayStartOffsetMs?: number,
605
+ /**
606
+ * Current selected value
607
+ */
608
+ timestamp: number,
609
+ /**
610
+ * Number of visible items
611
+ */
612
+ visibleItems: number,
613
+ /**
614
+ * Number of pixels to scroll
615
+ */
616
+ scrollStep: number,
617
+ /**
618
+ * Reference to the modal service
619
+ */
620
+ modalService: Reference<ModalService>,
621
+ /**
622
+ * Function to call when the picker value changes
623
+ * @param timestamp currently selected value as timestamp in ms
624
+ */
625
+ onValueChange: (timestamp: number) => void,
626
+ /**
627
+ * Function to format the date string in DatePicker
628
+ * @param date Date object of the value to format
629
+ * @returns string to display
630
+ */
631
+ format?: (date: Date) => string,
632
+ /**
633
+ * Custom overrides for the DatePicker
634
+ */
635
+ overrides?: Record<number, string>,
636
+ /**
637
+ * Optional setting for Picker Mode (defaults to MODAL)
638
+ */
639
+ mode?: PickerMode,
640
+ /**
641
+ * Optional className to pass to DatePicker
642
+ */
643
+ className?: string,
644
+ /**
645
+ * Optional className to pass to PickerModal dialog
646
+ */
647
+ modalClassName?: string,
648
+ /**
649
+ * Optional override for checkbox
650
+ */
651
+ Checkbox?: ICheckbox<any>,
652
+ /**
653
+ * Optional override for checkmark
654
+ */
655
+ checkmark?: Children,
656
+ /**
657
+ * Custom render method for picker button
658
+ */
659
+ render?: (
660
+ buttonRef: Reference<HTMLElement>,
661
+ textRef: Reference<HTMLElement>,
662
+ openCallback: () => void,
663
+ text?: string,
664
+ ) => JSX.Element,
665
+ };
666
+
667
+ export type OutsideDatePickerProps = Omit<
668
+ DatePickerProps, 'timestamp' | 'onValueChange'
669
+ >;
670
+
671
+ export type DatePickerDateProps = 'daysInPast' | 'daysToFuture' | 'dayStartOffsetMs' | 'timestamp';
672
+
673
+ /**
674
+ * EPG DatePicker Component
675
+ */
676
+ export interface DatePicker extends Component<DatePickerProps>, IFocusable {
677
+ /**
678
+ * Function to update current DatePicker value when the day changes
679
+ */
680
+ updateData: (timestamp: number) => void,
681
+ }
682
+
683
+ export interface DatePickerComponent {
684
+ new (props: DatePickerProps): DatePicker,
685
+ }
686
+
687
+ // MARK: EPG NowLine Component
688
+
689
+ /**
690
+ * Props for NowLine Component (Vertical line marking current time across the rows).
691
+ */
692
+ export type NowLineProps = (
693
+ & TimelineWidthPxProp
694
+ & TimestampProp
695
+ & TimeProp
696
+ & PixelInMsProp
697
+ & ChannelHeaderWidthPxProp
698
+ & Partial<RenderNowLineHeaderProp>
699
+ );
700
+
701
+ /**
702
+ * NowLine component renders vertical line marking current time.
703
+ */
704
+ export interface NowLine extends Component<NowLineProps> {
705
+ /**
706
+ * Function to update NowLine position when EPG scrolls left/right
707
+ * @param timestamp Current timestamp of the EPG
708
+ */
709
+ scrollToTimestamp: (timestamp: number) => void,
710
+ }
711
+
712
+ export interface NowLineComponent {
713
+ new (props: NowLineProps): NowLine,
714
+ }
715
+
716
+ // MARK: EPG Timeline Component
717
+
718
+ /**
719
+ * Props for the Timeline Component
720
+ * @typeparam T TimelineSection component
721
+ */
722
+ export type TimelineProps<
723
+ T extends TimelineSection,
724
+ > = (
725
+ & PixelInMsProp
726
+ & TimelineWidthPxProp
727
+ & ChannelHeaderWidthPxProp
728
+ & TimestampProp
729
+ & RenderTimeProp<T>
730
+ & SectionWidthMsProp
731
+ );
732
+
733
+ /**
734
+ * Timeline Component
735
+ * This component renders the timeline at the top of the EPG
736
+ * @typeparam T TimelineSection component
737
+ */
738
+ export interface Timeline<
739
+ T extends TimelineSection,
740
+ > extends Component<TimelineProps<T>> {
741
+ /**
742
+ * Function to set the current timestamp and scroll to it.
743
+ */
744
+ scrollToTimestamp: (timestamp: number) => void,
745
+ }
746
+
747
+ export interface TimelineComponent<
748
+ T extends TimelineSection,
749
+ > {
750
+ new (props: TimelineProps<T>): Timeline<T>,
751
+ }
752
+
753
+ // MARK: TimelineSection Component
754
+
755
+ /**
756
+ * Props for the TimelineSection Component
757
+ */
758
+ export type TimelineSectionProps = (
759
+ & TimestampProp
760
+ & XOffsetPxProp
761
+ & WidthPxProp
762
+ );
763
+
764
+ /**
765
+ * TimelineSection Component
766
+ * This component displays the time on the Timeline
767
+ * It can be reused to display multiple times.
768
+ */
769
+ export interface TimelineSection extends Component<any> {
770
+ /**
771
+ * Function to set offset in x direction.
772
+ * @param x x direction offset in pixels
773
+ */
774
+ setOffset: (x: number) => void,
775
+ /**
776
+ * Function to update displayed time
777
+ * @param timestamp New timestamp to format and render
778
+ */
779
+ updateData: (timestamp: number) => void,
780
+ }
781
+
782
+ export interface TimelineSectionComponent {
783
+ new (props: TimelineSectionProps): TimelineSection,
784
+ }
785
+
786
+ // MARK: EPG RowsManager Component
787
+
788
+ export type RowsManagerProps<
789
+ T extends Header,
790
+ U extends Program,
791
+ > = (
792
+ & DataManagersProp
793
+ & InitialChannelIndexProp
794
+ & NavigatableRowsProp
795
+ & AdditionalRowsProp
796
+ & PixelInMsProp
797
+ & TimelineWidthPxProp
798
+ & TimelineWidthMsProp
799
+ & TimestampProp
800
+ & TimeProp
801
+ & ScrollStepMsProp
802
+ & RowHeightPxProp
803
+ & ProgramTextModeResolverProp
804
+ & OnItemPressProp<U>
805
+ & OnMouseEnterProp
806
+ & OnFocusChangeProp<U>
807
+ & RenderChannelHeaderProp<T>
808
+ & RenderProgramProp<U>
809
+ );
810
+
811
+ /**
812
+ * RowsManager Component
813
+ * It does heavy lifting for maintaining and managing rows
814
+ * so it could be better split from the main EPG Component
815
+ */
816
+ export interface RowsManager<
817
+ T extends Header,
818
+ U extends Program,
819
+ > extends Component<RowsManagerProps<T, U>> {
820
+ /**
821
+ * Function called on pressing UP. Used to navigate up in the channels list.
822
+ */
823
+ onUp: () => boolean,
824
+ /**
825
+ * Function called on pressing DOWN. Used to navigate down in the channels list.
826
+ */
827
+ onDown: () => boolean,
828
+ /**
829
+ * Function called on pressing CHANNEL_UP. Used to navigate page up in the channels list.
830
+ */
831
+ onChannelUp: () => boolean,
832
+ /**
833
+ * Function called on pressing CHANNEL_DOWN. Used to navigate page down in the channels list.
834
+ */
835
+ onChannelDown: () => boolean,
836
+ /**
837
+ * Function to call when fast scrolling starts
838
+ * - to optimize cell rendering during the fast scroll
839
+ */
840
+ onFastScrollingStart: () => void,
841
+ /**
842
+ * Function to call when fast vertical scrolling ends
843
+ * - to render cell data after being optimized for fast scroll
844
+ * - to call fetch in data managers connected to rows
845
+ */
846
+ onFastScrollingEnd: () => void,
847
+ /**
848
+ * Function to find the start of the next program on the active row.
849
+ * @param timestamp timestamp to search from
850
+ * @returns timestamp of the start of the next program or end loading cell
851
+ */
852
+ getNextProgramStart: (timestamp: number) => number | null,
853
+ /**
854
+ * Function to find the end of the previous program on the active row.
855
+ * @param timestamp timestamp to search from
856
+ * @param customScrollStepMs optional custom offset from previous program end
857
+ * @returns timestamp of the end of the previous program or start loading cell
858
+ */
859
+ getPreviousProgramEnd: (timestamp: number, customScrollStepMs?: number) => number | null,
860
+ /**
861
+ * Sets the channel index to scroll to.
862
+ */
863
+ setCurrentChannelIndex: (index: number) => void,
864
+ /**
865
+ * Sets the focus timestamp
866
+ */
867
+ setFocusTimestamp: (timestamp: number) => void,
868
+ /**
869
+ * Function that returns whether there are rows higher that could be navigated.
870
+ */
871
+ canGoUp: () => boolean,
872
+ /**
873
+ * Function that returns whether there are rows lower that could be navigated.
874
+ */
875
+ canGoDown: () => boolean,
876
+ /**
877
+ * Focuses the active row at a given timestamp.
878
+ */
879
+ focus: (timestamp: number, options?: FocusOptions) => void,
880
+ /**
881
+ * Scrolls the rows to the given timestamp.
882
+ */
883
+ scrollRowsToTimestamp: (timestamp: number) => void,
884
+ /**
885
+ * Function to scroll up
886
+ * @returns true if it was scrolled, false otherwise
887
+ */
888
+ scrollUp: () => boolean,
889
+ /**
890
+ * Function to scroll down
891
+ * @returns true if it was scrolled, false otherwise
892
+ */
893
+ scrollDown: () => boolean,
894
+ }
895
+
896
+ export interface RowsManagerComponent<
897
+ T extends Header,
898
+ U extends Program,
899
+ > {
900
+ new (props: RowsManagerProps<T, U>): RowsManager<T, U>,
901
+ }
902
+
903
+ // MARK: EPG Row Component
904
+
905
+ /**
906
+ * Props for EPG Row component
907
+ * @typeparam T Program component - defaults to EpgProgram
908
+ */
909
+ export type RowProps<
910
+ T extends Program,
911
+ > = (
912
+ & DataProp
913
+ & PixelInMsProp
914
+ & TimelineWidthPxProp
915
+ & TimelineWidthMsProp
916
+ & TimestampProp
917
+ & TimeProp
918
+ & ScrollStepMsProp
919
+ & ProgramTextModeResolverProp
920
+ & OnItemPressProp<T>
921
+ & OnMouseEnterProp
922
+ & OnFocusChangeProp<T>
923
+ & RenderProgramProp<T>
924
+ );
925
+
926
+ /**
927
+ * EPG Row component
928
+ * It can be reused by multiple rows
929
+ * @typeparam T Program component - defaults to EpgProgram
930
+ */
931
+ export interface Row<
932
+ T extends Program,
933
+ > extends Component<RowProps<T>> {
934
+ /**
935
+ * Timestamp for the center of the row
936
+ */
937
+ timestamp: number;
938
+ /**
939
+ * Function to call when fast scrolling starts
940
+ * - to optimize cell rendering during the fast scroll
941
+ */
942
+ onFastScrollingStart: () => void,
943
+ /**
944
+ * Function to call when fast vertical scrolling ends
945
+ * - to render cell data after being optimized for fast scroll
946
+ * - to call fetch in data managers connected to rows
947
+ */
948
+ onFastScrollingEnd: () => void,
949
+ /**
950
+ * Function to find the start of the next program on the active row.
951
+ * @param timestamp timestamp to search from
952
+ * @returns timestamp of the start of the next program or end loading cell
953
+ */
954
+ getNextProgramStart: (timestamp: number) => number | null,
955
+ /**
956
+ * Function to find the end of the previous program on the active row.
957
+ * @param timestamp timestamp to search from
958
+ * @param customScrollStepMs optional custom offset from previous program end
959
+ * @returns timestamp of the end of the previous program or end loading cell
960
+ */
961
+ getPreviousProgramEnd: (timestamp: number, customScrollStepMs?: number) => number | null,
962
+ /**
963
+ * Function to set the row as active (the one with focus)
964
+ */
965
+ setActive: () => void,
966
+ /**
967
+ * Function to set the row as inactive (the one without focus)
968
+ */
969
+ setInactive: () => void,
970
+ /**
971
+ * Function to offset the row for vertucal scrolling
972
+ * @param yOffsetPx number of pixels to set as y axis offset
973
+ */
974
+ setOffset: (yOffsetPx: number) => void,
975
+ /**
976
+ * Function to return true if row already has this data manager
977
+ * @param dataManager DataManager that gets compared to the current dataManager
978
+ * @returns true if they are the same reference, false otherwise
979
+ */
980
+ hasDataManager: (dataManager: DataManager) => boolean,
981
+ /**
982
+ * Function to focus the EPG Row
983
+ * @param timestamp timestamp where the focus should happen
984
+ * @param options FocusOptions to pass down
985
+ */
986
+ focus: (timestamp: number, options?: FocusOptions) => void,
987
+ /**
988
+ * Function to set the current timestamp and scroll to it.
989
+ * @param timestamp timestamp to scroll to
990
+ */
991
+ scrollToTimestamp: (timestamp: number) => void,
992
+ /**
993
+ * Function to show the row
994
+ */
995
+ show: () => void,
996
+ /**
997
+ * Function to hide the row
998
+ */
999
+ hide: () => void,
1000
+ /**
1001
+ * Updates the row with new channel and data for cells
1002
+ * @param data new data to update the row with
1003
+ */
1004
+ updateData: (data: DataManager) => void,
1005
+ }
1006
+
1007
+ export interface RowComponent<
1008
+ T extends Program,
1009
+ > {
1010
+ new (props: RowProps<T>): Row<T>,
1011
+ }
1012
+
1013
+ // MARK: EPG CellsManager Component
1014
+
1015
+ /**
1016
+ * Props for CellsManager Component
1017
+ */
1018
+ export type CellsManagerProps<
1019
+ T extends Program,
1020
+ > = (
1021
+ & DataGetterProp
1022
+ & TimelineWidthMsProp
1023
+ & TimelineWidthPxProp
1024
+ & TimestampProp
1025
+ & TimeProp
1026
+ & PixelInMsProp
1027
+ & ChannelLessOnItemPressProp<T>
1028
+ & ChannelLessOnFocusChangeProp<T>
1029
+ & ProgramTextModeResolverProp
1030
+ & OnMouseEnterProp
1031
+ & RenderProgramProp<T>
1032
+ );
1033
+
1034
+ /**
1035
+ * CellsManager Component is a part of Row that is responsible for rendering and handling the cells.
1036
+ * @typeparam T EpgProgram component rendered by cells
1037
+ */
1038
+ export interface CellsManager<
1039
+ T extends Program,
1040
+ > extends Component<CellsManagerProps<T>> {
1041
+ /**
1042
+ * Current timestamp of the manager
1043
+ */
1044
+ timestamp: number,
1045
+ /**
1046
+ * Function to call when fast scrolling starts
1047
+ * - to optimize cell rendering during the fast scroll
1048
+ */
1049
+ onFastScrollingStart: () => void,
1050
+ /**
1051
+ * Function to call when fast vertical scrolling ends
1052
+ * - to render cell data after being optimized for fast scroll
1053
+ */
1054
+ onFastScrollingEnd: () => void,
1055
+ /**
1056
+ * Function to make the row active (the one with focus)
1057
+ */
1058
+ setActive: () => void,
1059
+ /**
1060
+ * Function to make the row inactive (the one without focus)
1061
+ */
1062
+ setInactive: () => void,
1063
+ /**
1064
+ * Function to offset wrapping div in y axis
1065
+ * @param yOffsetPx number of pixels to set as offset
1066
+ */
1067
+ setOffset: (yOffsetPx: number) => void,
1068
+ /**
1069
+ * Function to focus the cell at given timestamp with given options
1070
+ */
1071
+ focus: (timestamp: number, options?: FocusOptions) => void,
1072
+ /**
1073
+ * Function to scroll to the given timestamp
1074
+ */
1075
+ scrollToTimestamp: (timestamp: number) => void,
1076
+ /**
1077
+ * Function to show the whole row
1078
+ */
1079
+ show: () => void,
1080
+ /**
1081
+ * Function to hide the whole row
1082
+ */
1083
+ hide: () => void,
1084
+ /**
1085
+ * Function to return whether the cells are visible or hidden
1086
+ */
1087
+ isVisible: () => boolean,
1088
+ /**
1089
+ * Function to initialize cells update (e.g. after new data fetch)
1090
+ */
1091
+ updateCellsData: () => void,
1092
+ }
1093
+
1094
+ export interface CellsManagerComponent<
1095
+ T extends Program,
1096
+ > {
1097
+ new (props: CellsManagerProps<T>): CellsManager<T>,
1098
+ }
1099
+
1100
+ // MARK: EPG Cell Component
1101
+
1102
+ /**
1103
+ * Props for any EPG Cell component
1104
+ * @typeparam T Program component - defaults to EpgProgram
1105
+ */
1106
+ export type CellProps<
1107
+ T extends Program,
1108
+ > = (
1109
+ & WidthPxProp
1110
+ & XOffsetPxProp
1111
+ & TimeProp
1112
+ & Partial<ItemProp>
1113
+ & Partial<IsLoadingProp>
1114
+ & ChannelLessOnItemPressProp<T>
1115
+ & ChannelLessOnFocusChangeProp<T>
1116
+ & ProgramTextModeResolverProp
1117
+ & OnMouseEnterProp
1118
+ & RenderProgramProp<T>
1119
+ );
1120
+
1121
+ /**
1122
+ * EPG Cell component
1123
+ * @typeparam T Program component - defaults to EpgProgram
1124
+ */
1125
+ export interface Cell<
1126
+ T extends Program,
1127
+ > extends Component<CellProps<T>>, IFocusable {
1128
+ /**
1129
+ * DOM wrapper element
1130
+ */
1131
+ div: Reference<HTMLDivElement>,
1132
+ /**
1133
+ * Current Program data
1134
+ */
1135
+ item?: Asset,
1136
+ /**
1137
+ * Reference to custom visuals component
1138
+ */
1139
+ programComponent: Reference<T>,
1140
+ /**
1141
+ * Function to get width of the cell in pixels
1142
+ * @returns width of the cell in pixels
1143
+ */
1144
+ getWidth: () => number,
1145
+ /**
1146
+ * Function to get x offset position of the cell in pixels
1147
+ * @returns x direction offset in pixels
1148
+ */
1149
+ getOffset: () => number,
1150
+ /**
1151
+ * Function to set width of the cell in pixels
1152
+ * @param width width of the cell to set
1153
+ */
1154
+ setWidth: (width: number) => void,
1155
+ /**
1156
+ * Function to offset x position of the cell in pixels
1157
+ * @param x x direction offset in pixels
1158
+ */
1159
+ setOffset: (x: number) => void,
1160
+ /**
1161
+ * Function to show the cell
1162
+ */
1163
+ show: () => void,
1164
+ /**
1165
+ * Function to hide the cell
1166
+ */
1167
+ hide: () => void,
1168
+ /**
1169
+ * Function to return whether the cell is visible (does not have .display-none class)
1170
+ */
1171
+ isVisible: () => boolean,
1172
+ /**
1173
+ * Function to return whether the element belongs to the cell's Interactable component.
1174
+ * @param element HTMLElement to compare with Interactable
1175
+ * @returns true if element matches Interactable, false otherwise
1176
+ */
1177
+ hasDom: (element: HTMLElement) => boolean,
1178
+ /**
1179
+ * Function to update data and visuals
1180
+ * @param data New Program data
1181
+ */
1182
+ updateData: (data: Asset) => void,
1183
+ }
1184
+
1185
+ export interface CellComponent<
1186
+ T extends Program,
1187
+ > {
1188
+ new (props: CellProps<T>): Cell<T>,
1189
+ }
1190
+
1191
+ // MARK: EPG Mouse Navigation
1192
+
1193
+ export type EpgMouseNavigationProps = {
1194
+ /**
1195
+ * Function to call on the press of up arrow
1196
+ */
1197
+ onUp: () => void,
1198
+ /**
1199
+ * Function to call on the press of down arrow
1200
+ */
1201
+ onDown: () => void,
1202
+ /**
1203
+ * Function to call on the press of left arrow
1204
+ */
1205
+ onLeft: () => void,
1206
+ /**
1207
+ * Function to call on the press of right arrow
1208
+ */
1209
+ onRight: () => void,
1210
+ };
1211
+
1212
+ export interface EpgMouseNavigation extends Component<EpgMouseNavigationProps> {
1213
+ /**
1214
+ * Function to enable showing an arrow in given direction
1215
+ */
1216
+ enableDirection: (direction: MouseArrowDirection) => void,
1217
+ /**
1218
+ * Function to disable showing an arrow in given direction
1219
+ */
1220
+ disableDirection: (direction: MouseArrowDirection) => void,
1221
+ }
1222
+
1223
+ export interface EpgMouseNavigationComponent {
1224
+ new (props: EpgMouseNavigationProps): EpgMouseNavigation,
1225
+ }
1226
+
1227
+ export type MouseArrowDirection = 'up' | 'down' | 'left' | 'right';
1228
+
1229
+ // MARK: EPG Component
1230
+
1231
+ /**
1232
+ * Props for the main EPG component
1233
+ * @typeparam T Channel header component - defaults to Header
1234
+ * @typeparam U Program component - defaults to Program
1235
+ * @typeparam V Day component - default to Day
1236
+ * @typeparam W Timeline section component - default to TimelineSection
1237
+ */
1238
+ export type Props<
1239
+ T extends Header,
1240
+ U extends Program,
1241
+ V extends Day,
1242
+ W extends TimelineSection,
1243
+ > = (
1244
+ & TimelineWidthPxProp
1245
+ & RowHeightPxProp
1246
+ & NavigatableRowsProp
1247
+ & AdditionalRowsProp
1248
+ & ChannelHeaderWidthPxProp
1249
+ & ChannelDataProp
1250
+ & FetchProgramsProp
1251
+ & Partial<TimelineWidthMsProp>
1252
+ & Partial<ScrollStepMsProp>
1253
+ & Partial<TimelineSectionWidthMsProp>
1254
+ & Partial<LimitFromMsProp>
1255
+ & Partial<LimitToMsProp>
1256
+ & Partial<TimeProviderProp>
1257
+ & Partial<InitialTimestampProp>
1258
+ & Partial<InitialChannelIndexProp>
1259
+ & Partial<ProgramTextModeResolverProp>
1260
+ & OnItemPressProp<U>
1261
+ & Partial<OnFocusChangeProp<U>>
1262
+ & Partial<OnScrolledToTimestampProp>
1263
+ & Partial<RenderNowLineHeaderProp>
1264
+ & Partial<RenderChannelHeaderProp<T>>
1265
+ & Partial<RenderProgramProp<U>>
1266
+ & Partial<RenderDayProp<V>>
1267
+ & Partial<RenderTimeProp<W>>
1268
+ & Partial<DatePickerProp>
1269
+ & Partial<PluginsProp<U>>
1270
+
1271
+ );
1272
+
1273
+ /**
1274
+ * Main EPG component
1275
+ * @typeparam T Channel header component - defaults to Header
1276
+ * @typeparam U Program component - defaults to Program
1277
+ * @typeparam V Day component - default to Day
1278
+ * @typeparam W Timeline section component - default to TimelineSection
1279
+ */
1280
+ export interface Epg<
1281
+ T extends Header,
1282
+ U extends Program,
1283
+ V extends Day,
1284
+ W extends TimelineSection,
1285
+ > extends Component<Props<T, U, V, W>>, IFocusable {
1286
+ /**
1287
+ * Function to return whether EPG is fast scrolling
1288
+ * @returns true if is fast scrolling in any axis, false otherwise
1289
+ */
1290
+ isFastScrolling: () => boolean,
1291
+ /**
1292
+ * Function to return whether EPG is fast scrolling horizontally
1293
+ * @returns true if is fast scrolling horizontally, false otherwise
1294
+ */
1295
+ isHorizontallyFastScrolling: () => boolean,
1296
+ /**
1297
+ * Function to return whether EPG is fast scrolling
1298
+ * @returns true if is fast scrolling vertically, false otherwise
1299
+ */
1300
+ isVerticallyFastScrolling: () => boolean,
1301
+ /**
1302
+ * Scrolls to given timestamp if possible
1303
+ * @param timestamp Timestamp to scroll to
1304
+ * @throws when the timestamp is outside of limitFromMs and limitToMs range
1305
+ */
1306
+ scrollToTimestamp: (timestamp: number) => void,
1307
+ /**
1308
+ * Scrolls to given channel index if possible
1309
+ * @param index Index of the channel to scroll to
1310
+ * @throws when the index is outside of 0 and channels.length - 1 range
1311
+ */
1312
+ scrollToChannelIndex: (index: number) => void,
1313
+ }
1314
+
1315
+ /**
1316
+ * Internal interface of the Main EPG Component for internal components
1317
+ * but should not be used from the outside.
1318
+ * @typeparam T Channel header component - defaults to Header
1319
+ * @typeparam U Program component - defaults to Program
1320
+ * @typeparam V Day component - default to Day
1321
+ * @typeparam W Timeline section component - default to TimelineSection
1322
+ */
1323
+ export interface InternalEpg<
1324
+ T extends Header,
1325
+ U extends Program,
1326
+ V extends Day,
1327
+ W extends TimelineSection,
1328
+ > extends Epg<T, U, V, W> {
1329
+ /**
1330
+ * Current focused part of EPG
1331
+ */
1332
+ focused: EpgFocus,
1333
+ /**
1334
+ * Reference to the RowsManager
1335
+ */
1336
+ rows: Reference<RowsManager<T, U>>,
1337
+ /**
1338
+ * Current timestamp of the EPG
1339
+ */
1340
+ timestamp: number,
1341
+ /**
1342
+ * Current timestamp of the EPG focus
1343
+ */
1344
+ focusTimestamp: number,
1345
+ /**
1346
+ * TimeManager instance
1347
+ */
1348
+ time: Time,
1349
+ /**
1350
+ * Function to set the current EPG timestamp
1351
+ * @param timestamp timestamp to set
1352
+ */
1353
+ setCurrentTime: (timestamp: number) => void,
1354
+ /**
1355
+ * Function to set current focus time
1356
+ * @param timestamp the timestamp to set as focus time
1357
+ */
1358
+ setFocusTimestamp: (timestamp: number) => void,
1359
+ /**
1360
+ * Function to set focus to DatePicker
1361
+ */
1362
+ setFocusToDatePicker: () => void,
1363
+ /**
1364
+ * Function to set focus to Epg rows
1365
+ */
1366
+ setFocusToEpg: () => void,
1367
+ /**
1368
+ * Function to set state of the up/down mouse arrows
1369
+ */
1370
+ setVerticalMouseArrows: () => void,
1371
+ /**
1372
+ * Function to set state of the left/right mouse arrows
1373
+ */
1374
+ setHorizontalMouseArrows: () => void,
1375
+ /**
1376
+ * Function to let EPG and its components know that the EPG
1377
+ * switched to fast vertical scrolling (up/down between channels)
1378
+ */
1379
+ startFastVerticalScrolling: () => void,
1380
+ /**
1381
+ * Function to let EPG and its components know that the EPG
1382
+ * switched to fast horizontal scrolling (left/right in time)
1383
+ */
1384
+ startFastHorizontalScrolling: () => void,
1385
+ /**
1386
+ * Function to let EPG and its components know that the EPG
1387
+ * switched to normal vertical scrolling (up/down between channels)
1388
+ */
1389
+ stopFastVerticalScrolling: () => void,
1390
+ /**
1391
+ * Function to let EPG and its components know that the EPG
1392
+ * switched to normal horizontal scrolling (left/right in time)
1393
+ */
1394
+ stopFastHorizontalScrolling: () => void,
1395
+ /**
1396
+ * Function that returns true if DatePicker is rendered
1397
+ * @returns true if DatePicker is rendered, false otherwise
1398
+ */
1399
+ isDatePickerRendered: () => boolean,
1400
+ }
1401
+
1402
+ export interface EpgComponent<
1403
+ T extends Header,
1404
+ U extends Program,
1405
+ V extends Day,
1406
+ W extends TimelineSection,
1407
+ > {
1408
+ new (props: Props<T, U, V, W>): Epg<T, U, V, W>,
1409
+ }
1410
+
1411
+ /**
1412
+ * Enumerator for current focus positions for EPG or DatePicker
1413
+ */
1414
+ export type EpgFocus = 'datepicker' | 'epg';
1415
+
1416
+ // MARK: EPG Plugin
1417
+
1418
+ export type PluginProps<
1419
+ T extends Program = Program,
1420
+ > = {
1421
+ /**
1422
+ * Reference to the EPG component so it could be controlled from the plugin
1423
+ */
1424
+ epg?: Epg<any, T, any, any>
1425
+ };
1426
+
1427
+ /**
1428
+ * EPG stores references to all plugins and on certain events it calls these
1429
+ * methods if they are implemented by the plugin
1430
+ */
1431
+ export interface Plugin<
1432
+ T extends Program = Program,
1433
+ > extends Component<any> {
1434
+ /**
1435
+ * Called each time a focus changes. Due to implementation this can result
1436
+ * in focus to different element with same data as before as same element
1437
+ * but different data. And also same element and same data
1438
+ */
1439
+ onFocusChange?: FocusChangeCallback<T>,
1440
+ /**
1441
+ * Called each time EPG scrolls left/right in time
1442
+ * @param timestamp current time of EPG in ms
1443
+ */
1444
+ onScrolledToTimestamp?: (timestamp: number) => void,
1445
+ /**
1446
+ * Called each time the Item is pressed. This is called before the outside
1447
+ * callback from props. However, it cannot stop the event. Intended more for
1448
+ * logging purposes than actual overrides.
1449
+ */
1450
+ onItemPress?: ItemPressCallback<T>,
1451
+ /**
1452
+ * Called each time EPG switches to fast scrolling in either direction.
1453
+ * Called after onFast[Vertical/Horizontal]ScrollingStart.
1454
+ * If both are implemented, then both (directional and general) methods are called.
1455
+ */
1456
+ onFastScrollingStart?: () => void,
1457
+ /**
1458
+ * Called each time EPG switches to fast scrolling in vertical (channels) direction.
1459
+ */
1460
+ onFastVerticalScrollingStart?: () => void,
1461
+ /**
1462
+ * Called each time EPG switches to fast scrolling in horizontal (time) direction.
1463
+ */
1464
+ onFastHorizontalScrollingStart?: () => void,
1465
+ /**
1466
+ * Called each time EPG switches back to normal scrolling in either direction.
1467
+ * Called after onFast[Vertical/Horizontal]ScrollingEnd.
1468
+ * If both are implemented, then both (directional and general) methods are called.
1469
+ */
1470
+ onFastScrollingEnd?: () => void,
1471
+ /**
1472
+ * Called each time EPG switches back to normal scrolling in vertical (channels) direction.
1473
+ */
1474
+ onFastVerticalScrollingEnd?: () => void,
1475
+ /**
1476
+ * Called each time EPG switches back to normal scrolling in horizontal (time) direction.
1477
+ */
1478
+ onFastHorizontalScrollingEnd?: () => void,
1479
+ }
1480
+
1481
+ export interface PluginComponent<
1482
+ T extends Program,
1483
+ > {
1484
+ new (props: any): Plugin<T>,
1485
+ }
1486
+
1487
+ export interface PluginFC {
1488
+ (props: any): JSX.Element,
1489
+ }