@24i/bigscreen-sdk 1.1.0 → 2.1.1-alpha.2133

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 (256) hide show
  1. package/README.md +1 -1
  2. package/package.json +34 -53
  3. package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +9 -9
  4. package/packages/async-image/src/AsyncImage.tsx +10 -15
  5. package/packages/developer-tools/PlayerDebugWindow/README.md +1 -1
  6. package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +0 -11
  7. package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +5 -5
  8. package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +0 -15
  9. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +1 -2
  10. package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +3 -34
  11. package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +0 -4
  12. package/packages/developer-tools/src/TechnicalInfo/translations.ts +0 -4
  13. package/packages/device/src/getKeyDigit.ts +2 -2
  14. package/packages/device/src/resolver/resolver.ts +5 -18
  15. package/packages/digital-clock/src/DigitalClock.tsx +4 -15
  16. package/packages/driver-androidtv/src/DeviceAndroidTV.ts +9 -54
  17. package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +5 -29
  18. package/packages/driver-androidtv/src/keymap.ts +0 -18
  19. package/packages/driver-androidtv/src/types.ts +16 -102
  20. package/packages/driver-base/src/DeviceBase.ts +2 -61
  21. package/packages/driver-base/src/KeyMap/Key.ts +1 -8
  22. package/packages/driver-base/src/KeyMap/KeyMap.ts +0 -4
  23. package/packages/driver-base/src/KeyMap/interface.ts +0 -1
  24. package/packages/driver-base/src/KeyMap/overrideValues.ts +1 -2
  25. package/packages/driver-base/src/__mocks__/keyMap.ts +0 -1
  26. package/packages/driver-base/src/types/DeviceEvent.ts +0 -2
  27. package/packages/driver-base/src/types/KeycodeKeyMap.ts +0 -1
  28. package/packages/driver-browser/src/keymap.ts +0 -8
  29. package/packages/driver-entone/src/keymap.ts +0 -1
  30. package/packages/driver-tizen/src/TizenKeys.ts +0 -2
  31. package/packages/driver-vidaa/src/DeviceVidaa.ts +2 -3
  32. package/packages/driver-vidaa/src/__mocks__/vidaa.ts +1 -1
  33. package/packages/driver-vidaa/src/keymap.ts +0 -2
  34. package/packages/driver-webos/src/DeviceWebos.ts +0 -8
  35. package/packages/driver-webos/src/keymap.ts +1 -2
  36. package/packages/driver-xbox/src/keymap.ts +1 -1
  37. package/packages/epg/README.md +1 -3
  38. package/packages/epg/src/v2/Cell.tsx +2 -16
  39. package/packages/epg/src/v2/DataManager.ts +41 -112
  40. package/packages/epg/src/v2/DatePicker.tsx +3 -9
  41. package/packages/epg/src/v2/DateToast/DateToast.tsx +9 -12
  42. package/packages/epg/src/v2/Day.tsx +3 -6
  43. package/packages/epg/src/v2/Epg.tsx +5 -5
  44. package/packages/epg/src/v2/MockGenerator/generator.ts +2 -3
  45. package/packages/epg/src/v2/ProgramInfo/utils.ts +3 -4
  46. package/packages/epg/src/v2/Row.tsx +1 -3
  47. package/packages/epg/src/v2/TimelineSection.tsx +1 -4
  48. package/packages/epg/src/v2/basic/CellsManager.tsx +2 -7
  49. package/packages/epg/src/v2/basic/RowsManager.tsx +1 -3
  50. package/packages/epg/src/v2/interface.ts +0 -13
  51. package/packages/events-manager/src/EventsManager.ts +56 -1
  52. package/packages/focus/README.md +0 -33
  53. package/packages/focus/src/IFocusable.ts +0 -1
  54. package/packages/focus/src/Layout/Base.tsx +6 -41
  55. package/packages/focus/src/Layout/Matrix.tsx +19 -51
  56. package/packages/focus/src/Layout/__test__/Base.spec.ts +180 -0
  57. package/packages/focus/src/Layout/__test__/Horizontal.spec.ts +94 -0
  58. package/packages/focus/src/Layout/__test__/Matrix.spec.ts +261 -0
  59. package/packages/focus/src/Layout/__test__/Vertical.spec.ts +46 -0
  60. package/packages/focus/src/Layout/__test__/isRtl.spec.ts +23 -0
  61. package/packages/focus/src/Layout/__test__/shared.ts +19 -0
  62. package/packages/focus/src/focusFirstExisting.ts +1 -7
  63. package/packages/focus/src/index.ts +1 -2
  64. package/packages/gallup/src/Gallup.ts +3 -3
  65. package/packages/grid/src/Base/Base.tsx +10 -15
  66. package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +2 -4
  67. package/packages/icon/src/Icon.tsx +5 -27
  68. package/packages/input/README.md +1 -4
  69. package/packages/input/src/Input.tsx +29 -65
  70. package/packages/input/src/handleOverflow.ts +29 -0
  71. package/packages/interactable/README.md +1 -2
  72. package/packages/interactable/src/Interactable.tsx +3 -9
  73. package/packages/interactable/src/interface.ts +0 -1
  74. package/packages/jsx/src/index.ts +1 -1
  75. package/packages/jsx/src/test-utils/index.ts +0 -1
  76. package/packages/keyboard/src/Backdrop/Backdrop.scss +0 -2
  77. package/packages/keyboard/src/KeyboardBase.tsx +4 -16
  78. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +0 -4
  79. package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +20 -28
  80. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +0 -1
  81. package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +0 -1
  82. package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +0 -11
  83. package/packages/keyboard/src/WhitelabelKeyboard/types.ts +0 -1
  84. package/packages/l10n/README.md +0 -18
  85. package/packages/l10n/src/date/common.ts +6 -18
  86. package/packages/l10n/src/date/cs.ts +8 -2
  87. package/packages/l10n/src/date/en-001.ts +3 -3
  88. package/packages/l10n/src/date/en-common.ts +4 -5
  89. package/packages/l10n/src/date/en-us.ts +3 -3
  90. package/packages/l10n/src/date/iso.ts +13 -12
  91. package/packages/l10n/src/date/types.ts +0 -9
  92. package/packages/l10n/src/l10n.ts +3 -61
  93. package/packages/list/src/Base/Base.tsx +9 -19
  94. package/packages/list/src/Base/interface.ts +2 -2
  95. package/packages/list/src/CenteredList/controller.ts +1 -0
  96. package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +3 -3
  97. package/packages/list/src/UnifiedListController/UnifiedListController.ts +2 -6
  98. package/packages/logger/src/loggers/SentryLogger/Sentry.ts +0 -1
  99. package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +2 -2
  100. package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +3 -31
  101. package/packages/menu/src/MenuAndContentContainer/interface.ts +0 -8
  102. package/packages/modal-service/README.md +1 -4
  103. package/packages/modal-service/src/ModalService.tsx +5 -29
  104. package/packages/perf-utils/README.md +120 -1
  105. package/packages/perf-utils/src/array/filter.ts +54 -1
  106. package/packages/perf-utils/src/array/find.ts +43 -1
  107. package/packages/perf-utils/src/array/findIndex.ts +43 -1
  108. package/packages/perf-utils/src/array/forEach.ts +48 -1
  109. package/packages/perf-utils/src/array/includes.ts +41 -1
  110. package/packages/perf-utils/src/array/includesNaN.ts +32 -1
  111. package/packages/perf-utils/src/array/index.ts +7 -1
  112. package/packages/perf-utils/src/array/map.ts +52 -1
  113. package/packages/player-ui/README.md +1 -1
  114. package/packages/player-ui/src/CurrentTime.tsx +2 -2
  115. package/packages/player-ui/src/Duration.tsx +2 -2
  116. package/packages/player-ui/src/PauseButton.tsx +0 -8
  117. package/packages/player-ui/src/PlayerInteractable.tsx +0 -1
  118. package/packages/player-ui/src/PlayerTime.tsx +1 -3
  119. package/packages/player-ui/src/PlayerUI.tsx +35 -68
  120. package/packages/player-ui/src/RemainingTime.tsx +2 -2
  121. package/packages/player-ui/src/Seekbar.tsx +18 -110
  122. package/packages/player-ui/src/Seeking.ts +16 -57
  123. package/packages/player-ui/src/Subtitles.tsx +2 -2
  124. package/packages/player-ui/src/index.ts +0 -1
  125. package/packages/player-ui/src/mocks.ts +8 -32
  126. package/packages/player-ui/src/timeUtils.ts +3 -3
  127. package/packages/player-ui/src/types.ts +3 -9
  128. package/packages/router/src/Route.tsx +27 -61
  129. package/packages/router/src/Router.tsx +13 -59
  130. package/packages/router/src/history.ts +1 -8
  131. package/packages/router/src/index.ts +1 -1
  132. package/packages/router/src/utils.ts +4 -9
  133. package/packages/sass-utils/src/linear-gradient.scss +4 -9
  134. package/packages/sass-utils/src/scale.1080.scss +1 -3
  135. package/packages/sass-utils/src/scale.720.scss +1 -1
  136. package/packages/time/README.md +1 -4
  137. package/packages/time/src/Time.ts +13 -35
  138. package/packages/time/src/constants.ts +0 -1
  139. package/packages/toast/src/ToastService.tsx +5 -16
  140. package/packages/types-bigscreen-jsx/README.md +4 -5
  141. package/packages/types-bigscreen-jsx/index.d.ts +67 -72
  142. package/packages/utils/README.md +0 -27
  143. package/packages/utils/src/elementUtils.ts +0 -25
  144. package/packages/utils/src/index.ts +0 -8
  145. package/packages/utils/src/scaledImage.ts +3 -6
  146. package/packages/utils/src/textUtils.ts +14 -46
  147. package/packages/utils/src/wait.ts +1 -3
  148. package/packages/utils/src/xhr/xhrSend.ts +1 -3
  149. package/packages/utils/src/xhr/xhrSendRetry.ts +1 -3
  150. package/packages/zapping/src/ChannelZapping.ts +0 -9
  151. package/packages/zapping/src/Zapping.tsx +0 -10
  152. package/.vscode/settings.json +0 -6
  153. package/packages/analytics/README.md +0 -8
  154. package/packages/analytics/src/A.ts +0 -1
  155. package/packages/analytics/src/Analytics.ts +0 -1
  156. package/packages/analytics/src/analyticsOnScroll.ts +0 -1
  157. package/packages/analytics/src/clients/ConsoleAnalytics/ConsoleAnalytics.ts +0 -1
  158. package/packages/analytics/src/clients/ConsoleAnalytics/index.ts +0 -1
  159. package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +0 -200
  160. package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +0 -118
  161. package/packages/analytics/src/clients/GoogleAnalytics/getUrl.ts +0 -17
  162. package/packages/analytics/src/clients/GoogleAnalytics/index.ts +0 -2
  163. package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +0 -77
  164. package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +0 -50
  165. package/packages/analytics/src/clients/GoogleAnalytics/prepareBody.ts +0 -14
  166. package/packages/analytics/src/clients/TealiumAnalytics/TealiumAnalytics.ts +0 -169
  167. package/packages/analytics/src/clients/TealiumAnalytics/constants.ts +0 -102
  168. package/packages/analytics/src/clients/TealiumAnalytics/findIdForLanguage.ts +0 -9
  169. package/packages/analytics/src/clients/TealiumAnalytics/index.ts +0 -4
  170. package/packages/analytics/src/clients/TealiumAnalytics/interface.ts +0 -33
  171. package/packages/analytics/src/clients/TealiumAnalytics/mappers/__mocks__/mediaPayload.ts +0 -70
  172. package/packages/analytics/src/clients/TealiumAnalytics/mappers/helper.ts +0 -36
  173. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppError.ts +0 -13
  174. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteAdd.ts +0 -11
  175. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteRemove.ts +0 -11
  176. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerClose.ts +0 -15
  177. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerOpen.ts +0 -15
  178. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSceneView.ts +0 -18
  179. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearch.ts +0 -18
  180. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchFailed.ts +0 -8
  181. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchSuccess.ts +0 -8
  182. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoPause.ts +0 -15
  183. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoProgress.ts +0 -18
  184. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoResume.ts +0 -15
  185. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStart.ts +0 -15
  186. package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStop.ts +0 -15
  187. package/packages/analytics/src/clients/TealiumAnalytics/types.ts +0 -156
  188. package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +0 -116
  189. package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +0 -99
  190. package/packages/analytics/src/clients/TwentyFourIQ/helper.ts +0 -34
  191. package/packages/analytics/src/clients/TwentyFourIQ/index.ts +0 -2
  192. package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +0 -31
  193. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +0 -13
  194. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +0 -16
  195. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +0 -21
  196. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +0 -15
  197. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +0 -24
  198. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +0 -18
  199. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +0 -15
  200. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +0 -17
  201. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +0 -21
  202. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +0 -24
  203. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +0 -24
  204. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +0 -34
  205. package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +0 -32
  206. package/packages/analytics/src/clients/TwentyFourIQ/types.ts +0 -115
  207. package/packages/analytics/src/constants.ts +0 -1
  208. package/packages/analytics/src/index.ts +0 -3
  209. package/packages/analytics/src/interface.ts +0 -1
  210. package/packages/analytics/src/utils/generateSessionId.ts +0 -8
  211. package/packages/create-package/dist/createPackage.js +0 -66
  212. package/packages/create-package/dist/createPackage.js.map +0 -1
  213. package/packages/create-package/dist/index.js +0 -5
  214. package/packages/create-package/dist/index.js.map +0 -1
  215. package/packages/create-package/dist/questionnaire/questions.js +0 -35
  216. package/packages/create-package/dist/questionnaire/questions.js.map +0 -1
  217. package/packages/create-package/dist/settings/Settings.js +0 -10
  218. package/packages/create-package/dist/settings/Settings.js.map +0 -1
  219. package/packages/create-package/dist/types.js +0 -3
  220. package/packages/create-package/dist/types.js.map +0 -1
  221. package/packages/device/src/driver/index.firetv.ts +0 -1
  222. package/packages/device/src/driver/index.smartcast.tv.ts +0 -1
  223. package/packages/driver-firetv/src/DeviceFireTV.ts +0 -18
  224. package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +0 -36
  225. package/packages/driver-firetv/src/index.ts +0 -1
  226. package/packages/driver-smartcast/src/DeviceSmartCast.ts +0 -317
  227. package/packages/driver-smartcast/src/__mocks__/api.ts +0 -49
  228. package/packages/driver-smartcast/src/index.ts +0 -1
  229. package/packages/driver-smartcast/src/keymap.ts +0 -9
  230. package/packages/driver-smartcast/src/types.ts +0 -65
  231. package/packages/focus/src/hasFocus.ts +0 -36
  232. package/packages/input/src/utils.ts +0 -71
  233. package/packages/jsx/src/test-utils/keyup.ts +0 -27
  234. package/packages/keyboard/src/WhitelabelKeyboard/layouts/arabic.ts +0 -27
  235. package/packages/keyboard/src/WhitelabelKeyboard/layouts/burmese.ts +0 -27
  236. package/packages/keyboard/src/WhitelabelKeyboard/layouts/dari.ts +0 -28
  237. package/packages/keyboard/src/WhitelabelKeyboard/layouts/korean.ts +0 -26
  238. package/packages/keyboard/src/WhitelabelKeyboard/layouts/pashto.ts +0 -27
  239. package/packages/keyboard/src/WhitelabelKeyboard/layouts/persian.ts +0 -27
  240. package/packages/keyboard/src/WhitelabelKeyboard/layouts/russian.ts +0 -27
  241. package/packages/keyboard/src/WhitelabelKeyboard/layouts/tibetan.ts +0 -26
  242. package/packages/keyboard/src/WhitelabelKeyboard/layouts/turkish.ts +0 -26
  243. package/packages/keyboard/src/WhitelabelKeyboard/layouts/ukrainian.ts +0 -27
  244. package/packages/keyboard/src/WhitelabelKeyboard/layouts/urdu.ts +0 -26
  245. package/packages/l10n/src/date/de.ts +0 -97
  246. package/packages/l10n/src/date/es.ts +0 -71
  247. package/packages/l10n/src/date/fr.ts +0 -94
  248. package/packages/l10n/src/date/he.ts +0 -101
  249. package/packages/time/src/adapters/24iMediaTimeApi.ts +0 -47
  250. package/packages/time/src/services/24iMediaTimeApi/24iMediaTimeApi.ts +0 -43
  251. package/packages/time/src/services/24iMediaTimeApi/index.ts +0 -6
  252. package/packages/utils/src/forceReflow.ts +0 -14
  253. package/packages/utils/src/keyPress/index.ts +0 -6
  254. package/packages/utils/src/keyPress/keyPressSimulator.ts +0 -74
  255. package/packages/utils/src/keyPress/simulateKeyPress.ts +0 -25
  256. package/utils/release/release.ts +0 -154
@@ -1,26 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
6
- ['ᄀ', 'ᄂ', 'ᄃ', 'ᄅ', 'ᄆ', 'ᄇ', 'ᄉ', 'ᄋ', 'ᄌ', 'ᄎ'],
7
- ['ᄏ', 'ᄐ', 'ᄑ', 'ᄒ', 'ᅡ', 'ᅣ', 'ᅥ', 'ᅧ', 'ᅩ', 'ᅭ'],
8
- ['ᅮ', 'ᅲ', 'ᅳ', 'ᅵ', '?', ',', '.', '@', '-', '_'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', '', ...layout[0], '', 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const korean = {
23
- keyText: 'ᄀᄂᄃ',
24
- layout: keyboardLayout,
25
- makeFocusStrings,
26
- };
@@ -1,27 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.'],
6
- ['ا', 'ب', 'پ', 'ت', 'ث', 'ج', 'چ', 'ح', 'خ', 'د', 'ذ'],
7
- ['ر', 'ز', 'ژ', 'س', 'ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ'],
8
- ['ف', 'ق', 'ک', 'گ', 'ل', 'م', 'ن', 'و', 'ه', 'ی', '-'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', ...layout[0], 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const pashto = {
23
- className: 'wide',
24
- keyText: 'ابپ',
25
- layout: keyboardLayout,
26
- makeFocusStrings,
27
- };
@@ -1,27 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', ',', '.'],
6
- ['ا', 'ب', 'ت', 'ث', 'ج', 'ح', 'خ', 'د', 'ذ', 'ر', 'ز', 'س'],
7
- ['ش', 'ص', 'ض', 'ط', 'ظ', 'ع', 'غ', 'ف', 'ق', 'ك', 'ل', 'م'],
8
- ['ن', 'ه', 'و', 'ي', 'ء', 'آ', 'إ', 'ة', 'ؤ', 'ئ', 'ى', 'أ'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', ...layout[0], 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const persian = {
23
- className: 'wide',
24
- keyText: 'ابپ',
25
- layout: keyboardLayout,
26
- makeFocusStrings,
27
- };
@@ -1,27 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.'],
6
- ['а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й'],
7
- ['к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф'],
8
- ['х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', ...layout[0], 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const russian = {
23
- className: 'wide',
24
- keyText: 'абв',
25
- layout: keyboardLayout,
26
- makeFocusStrings,
27
- };
@@ -1,26 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['༡', '༢', '༣', '༤', '༥', '༦', '༧', '༨', '༩', '༠'],
6
- ['ཀ', 'ཁ', 'ག ', 'ང ', 'ཅ ', 'ཆ', 'ཇ', 'ཉ', 'ཏ', 'ཐ'],
7
- ['ད', 'ན', 'པ', 'ཕ', 'བ', 'མ', 'ཙ', 'ཚ', 'ཛ', 'ཝ'],
8
- ['ཝ', 'ཟ', 'འ', 'ཡ', 'ར', 'ལ', 'ཤ', 'ས', 'ཧ', 'ཨ'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', '', ...layout[0], '', 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const tibetan = {
23
- keyText: 'ཀཁག',
24
- layout: keyboardLayout,
25
- makeFocusStrings,
26
- };
@@ -1,26 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
6
- ['a', 'b', 'c', 'ç', 'd', 'e', 'f', 'g', 'ğ', 'h'],
7
- ['ı', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'ö', 'p'],
8
- ['r', 's', 'ş', 't', 'u', 'ü', 'v', 'y', 'z', '.'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', ...layout[0], 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const turkish = {
23
- keyText: 'Abc',
24
- layout: keyboardLayout,
25
- makeFocusStrings,
26
- };
@@ -1,27 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.'],
6
- ['а', 'б', 'в', 'г', 'ґ', 'д', 'е', 'є', 'ж', 'з', 'и'],
7
- ['і', 'ї', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с'],
8
- ['т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ь', 'ю', 'я'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', ...layout[0], 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const ukrainian = {
23
- className: 'wide',
24
- keyText: 'абв',
25
- layout: keyboardLayout,
26
- makeFocusStrings,
27
- };
@@ -1,26 +0,0 @@
1
- /* eslint-disable no-magic-numbers */
2
- import { KeyMatrixCell } from '../../types';
3
-
4
- const keyboardLayout = [
5
- ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'],
6
- ['الف', 'ب', 'س', 'ڈ', 'ای', 'ایف', 'جی', 'ح', 'آئی', 'ج'],
7
- ['ک', 'ل', 'م', 'ن', 'او', 'پ', 'کیو', 'ر', 'ایس', 'ٹ'],
8
- ['یو', 'وی', 'ڈبلیو', 'ایکس', 'یے', 'ز', 'ڈاٹ', 'ایٹ', '-', '_'],
9
- ];
10
-
11
- /* eslint-disable max-len */
12
- const makeFocusStrings = (layout: KeyMatrixCell[][], hasLanguageLayout: boolean) => [
13
- ['', '', ...layout[0], 'backspace', 'backspace'],
14
- ['abc', 'abc', ...layout[1], 'clear', 'clear'],
15
- ['special', 'special', ...layout[2], 'left', 'right'],
16
- ['', '', ...layout[3], '', ''],
17
- [
18
- ...(hasLanguageLayout ? ['language', 'language'] : ['', '']),
19
- 'shift', 'shift', 'space', 'space', 'space', 'space', 'space', 'space', 'domain', 'domain', 'continue', 'continue'],
20
- ];
21
-
22
- export const urdu = {
23
- keyText: 'دوبارہ سے',
24
- layout: keyboardLayout,
25
- makeFocusStrings,
26
- };
@@ -1,97 +0,0 @@
1
- import { processYear, dateFormatter, toTwoDigitLocaleTimeString } from './common';
2
- import { DateTimeFormatOptions, Day, Month, Weekday, Year } from './types';
3
-
4
- // https://web.library.yale.edu/cataloging/months
5
- const DE_MONTHS = {
6
- narrow: [
7
- 'J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D',
8
- ],
9
- short: [
10
- 'Jan', 'Feb', 'März', 'Apr', 'Mai', 'Juni', 'Juli', 'Aug', 'Sept', 'Okt', 'Nov', 'Dez',
11
- ],
12
- long: [
13
- 'Januar', 'Februar', 'März', 'April', 'Mai', 'Juni', 'Juli', 'August', 'September',
14
- 'Oktober', 'November', 'Dezember',
15
- ],
16
- };
17
-
18
- const DE_WEEKDAYS = {
19
- narrow: [
20
- 'S', 'M', 'D', 'M', 'D', 'F', 'S',
21
- ],
22
- short: [
23
- 'So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa',
24
- ],
25
- long: [
26
- 'Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag',
27
- ],
28
- };
29
-
30
- const processDay = (dateParts: string[], day: Day | undefined, date: Date) => {
31
- if (typeof day === 'undefined') return;
32
- const strDate = date.getDate().toString();
33
- dateParts.push(`${strDate}.`);
34
- };
35
-
36
- const processMonth = (
37
- dateParts: string[],
38
- month: Month | undefined,
39
- date: Date,
40
- ) => {
41
- if (typeof month === 'undefined') return;
42
- if (month === '2-digit' || month === 'numeric') {
43
- const strMonth = `${(date.getMonth() + 1).toString()}.`;
44
- dateParts.push(strMonth);
45
- } else {
46
- const finalMonth = DE_MONTHS[month][date.getMonth()];
47
- if (month === 'short') dateParts.push(`${finalMonth}.`);
48
- else dateParts.push(finalMonth);
49
- }
50
- };
51
-
52
- const processWeekday = (
53
- dateStringParts: string[],
54
- year: Year | undefined,
55
- month: Month | undefined,
56
- day: Day | undefined,
57
- weekday: Weekday | undefined,
58
- date: Date,
59
- ) => {
60
- if (typeof weekday === 'undefined') return;
61
- let weekdayString = DE_WEEKDAYS[weekday][date.getDay()];
62
- if (weekday === 'short') weekdayString += '.';
63
- if (
64
- typeof year !== 'undefined'
65
- || typeof month !== 'undefined'
66
- || typeof day !== 'undefined'
67
- ) {
68
- weekdayString += ',';
69
- }
70
- dateStringParts.push(weekdayString);
71
- };
72
-
73
- const toLocaleDateString = (date: Date) => (
74
- { weekday, year, month, day }: DateTimeFormatOptions = {
75
- year: 'numeric', month: '2-digit', day: '2-digit',
76
- },
77
- ) => {
78
- const dateStringParts: string[] = [];
79
- processWeekday(dateStringParts, year, month, day, weekday, date);
80
- const dateConnection = '';
81
- const dateParts: string[] = [];
82
- processDay(dateParts, day, date);
83
- if ((month === 'narrow'
84
- || month === 'short'
85
- || month === 'long')
86
- && day != null
87
- ) {
88
- dateParts.push(' ');
89
- }
90
- processMonth(dateParts, month, date);
91
- if (month === 'long') dateParts.push(' ');
92
- processYear(dateParts, year, date);
93
- dateStringParts.push(dateParts.join(dateConnection));
94
- return dateStringParts.join(' ');
95
- };
96
-
97
- export const deDateFormatter = dateFormatter(toTwoDigitLocaleTimeString, toLocaleDateString);
@@ -1,71 +0,0 @@
1
- import { processYear, dateFormatter, toNumericLocaleTimeString } from './common';
2
- import { processWeekday } from './en-common';
3
- import { DateTimeFormatOptions, Day, Month } from './types';
4
-
5
- const ES_MONTHS = {
6
- narrow: [
7
- 'E', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D',
8
- ],
9
- // https://web.library.yale.edu/cataloging/months
10
- short: [
11
- 'ene', 'feb', 'mar', 'abr', 'mayo', 'jun', 'jul', 'ago', 'set', 'oct', 'nov', 'dic',
12
- ],
13
- long: [
14
- 'enero', 'febrero', 'marzo', 'abril', 'mayo', 'junio', 'julio', 'agosto', 'septiembre',
15
- 'octubre', 'noviembre', 'diciembre',
16
- ],
17
- };
18
-
19
- const ES_WEEKDAYS = {
20
- // https://letsspeakspanish.com/blog/days-of-week-months-seasons-in-spanish/
21
- narrow: [
22
- 'D', 'L', 'M', 'X', 'J', 'V', 'S',
23
- ],
24
- short: [
25
- 'dom', 'lun', 'mar', 'mié', 'jue', 'vie', 'sáb',
26
- ],
27
- long: [
28
- 'domingo', 'lunes', 'martes', 'miércoles', 'jueves', 'viernes', 'sábado',
29
- ],
30
- };
31
-
32
- const processDay = (dateParts: string[], day: Day | undefined, date: Date) => {
33
- if (typeof day === 'undefined') return;
34
- const strDate = date.getDate().toString();
35
- dateParts.push(strDate);
36
- };
37
-
38
- const processMonth = (
39
- dateParts: string[],
40
- month: Month | undefined,
41
- date: Date,
42
- ) => {
43
- if (typeof month === 'undefined') return;
44
- if (month === '2-digit' || month === 'numeric') {
45
- const strMonth = (date.getMonth() + 1).toString();
46
- dateParts.push(strMonth);
47
- } else {
48
- const finalMonth = ES_MONTHS[month][date.getMonth()];
49
- dateParts.push(finalMonth);
50
- }
51
- };
52
-
53
- const toLocaleDateString = (date: Date) => (
54
- { weekday, year, month, day }: DateTimeFormatOptions = {
55
- year: 'numeric', month: '2-digit', day: '2-digit',
56
- },
57
- ) => {
58
- const dateStringParts: string[] = [];
59
- processWeekday(dateStringParts, year, month, day, weekday, date, ES_WEEKDAYS);
60
- const dateConnection = month === '2-digit' || month === 'numeric' ? '/' : ' ';
61
- const dateParts: string[] = [];
62
- processDay(dateParts, day, date);
63
- if (month === 'long' && day != null) dateParts.push('de');
64
- processMonth(dateParts, month, date);
65
- if (month === 'long') dateParts.push('de');
66
- processYear(dateParts, year, date);
67
- dateStringParts.push(dateParts.join(dateConnection));
68
- return dateStringParts.join(' ');
69
- };
70
-
71
- export const esDateFormatter = dateFormatter(toNumericLocaleTimeString, toLocaleDateString);
@@ -1,94 +0,0 @@
1
- import { dateFormatter, processYear, toTwoDigitLocaleTimeString } from './common';
2
- import { DateTimeFormatOptions, Day, Month, Weekday, Year } from './types';
3
-
4
- // https://web.library.yale.edu/cataloging/months
5
- const FR_MONTHS = {
6
- narrow: [
7
- 'J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D',
8
- ],
9
- short: [
10
- 'janv', 'févr', 'mars', 'avril', 'mai', 'juin', 'juil', 'août', 'sept', 'oct', 'nov', 'déc',
11
- ],
12
- long: [
13
- 'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre',
14
- 'octobre', 'novembre', 'décembre',
15
- ],
16
- };
17
-
18
- const FR_WEEKDAYS = {
19
- narrow: [
20
- 'D', 'L', 'M', 'M', 'J', 'V', 'S',
21
- ],
22
- short: [
23
- 'dim', 'lun', 'mar', 'mer', 'jeu', 'ven', 'sam',
24
- ],
25
- long: [
26
- 'dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi',
27
- ],
28
- };
29
-
30
- const processWeekday = (
31
- dateStringParts: string[],
32
- year: Year | undefined,
33
- month: Month | undefined,
34
- day: Day | undefined,
35
- weekday: Weekday | undefined,
36
- date: Date,
37
- ) => {
38
- if (typeof weekday === 'undefined') return;
39
- let weekdayString = FR_WEEKDAYS[weekday][date.getDay()];
40
- if (
41
- (typeof year !== 'undefined'
42
- || typeof month !== 'undefined'
43
- || typeof day !== 'undefined') && weekday !== 'long'
44
- ) {
45
- weekdayString += '.';
46
- }
47
- dateStringParts.push(weekdayString);
48
- };
49
-
50
- const processDay = (
51
- dateParts: string[], day: Day | undefined, month: Month | undefined, date: Date,
52
- ) => {
53
- if (typeof day === 'undefined') return;
54
- const strDate = date.getDate().toString();
55
- dateParts.push(
56
- strDate.length === 1 && month !== 'short' && month !== 'long' ? `0${strDate}` : strDate,
57
- );
58
- };
59
-
60
- const processMonth = (
61
- dateParts: string[],
62
- month: Month | undefined,
63
- date: Date,
64
- ) => {
65
- if (typeof month === 'undefined') return;
66
- if (month === '2-digit' || month === 'numeric') {
67
- const strMonth = (date.getMonth() + 1).toString();
68
- dateParts.push(
69
- strMonth.length === 1 ? `0${strMonth}` : strMonth,
70
- );
71
- } else {
72
- const finalMonth = FR_MONTHS[month][date.getMonth()];
73
- if (month === 'short') dateParts.push(`${finalMonth}.`);
74
- else dateParts.push(finalMonth);
75
- }
76
- };
77
-
78
- const toLocaleDateString = (date: Date) => (
79
- { weekday, year, month, day }: DateTimeFormatOptions = {
80
- year: 'numeric', month: '2-digit', day: '2-digit',
81
- },
82
- ) => {
83
- const dateStringParts: string[] = [];
84
- processWeekday(dateStringParts, year, month, day, weekday, date);
85
- const dateConnection = month === '2-digit' || month === 'numeric' ? '/' : ' ';
86
- const dateParts: string[] = [];
87
- processDay(dateParts, day, month, date);
88
- processMonth(dateParts, month, date);
89
- processYear(dateParts, year, date);
90
- dateStringParts.push(dateParts.join(dateConnection));
91
- return dateStringParts.join(' ');
92
- };
93
-
94
- export const frDateFormatter = dateFormatter(toTwoDigitLocaleTimeString, toLocaleDateString, ' ');
@@ -1,101 +0,0 @@
1
- import { processYear, dateFormatter, toNumericLocaleTimeString } from './common';
2
- import { DateTimeFormatOptions, Day, Month, Weekday } from './types';
3
-
4
- const HE_MONTHS = {
5
- narrow: ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12'],
6
- short: [
7
- 'ינו׳',
8
- 'פבר׳',
9
- 'מרץ',
10
- 'אפר׳',
11
- 'מאי',
12
- 'יוני',
13
- 'יולי',
14
- 'אוג׳',
15
- 'ספט׳',
16
- 'אוק׳',
17
- 'נוב׳',
18
- 'דצמ׳',
19
- ],
20
- long: [
21
- 'ינואר',
22
- 'פברואר',
23
- 'מרץ',
24
- 'אפריל',
25
- 'מאי',
26
- 'יוני',
27
- 'יולי',
28
- 'אוגוסט',
29
- 'ספטמבר',
30
- 'אוקטובר',
31
- 'נובמבר',
32
- 'דצמבר',
33
- ],
34
- };
35
-
36
- const HE_WEEKDAYS = {
37
- narrow: ['א׳', 'ב׳', 'ג׳', 'ד׳', 'ה׳', 'ו׳', 'ש׳'],
38
- short: ['יום א׳', 'יום ב׳', 'יום ג׳', 'יום ד׳', 'יום ה׳', 'יום ו׳', 'שבת'],
39
- long: ['יום ראשון', 'יום שני', 'יום שלישי', 'יום רביעי', 'יום חמישי', 'יום שישי', 'יום שבת'],
40
- };
41
-
42
- const processWeekday = (
43
- dateStringParts: string[],
44
- weekday: Weekday | undefined,
45
- date: Date,
46
- ) => {
47
- if (typeof weekday === 'undefined') return;
48
- const weekdayString = HE_WEEKDAYS[weekday][date.getDay()];
49
- dateStringParts.push(`${weekdayString},`);
50
- };
51
-
52
- const processDay = (dateParts: string[], day: Day | undefined, date: Date) => {
53
- if (typeof day === 'undefined') return;
54
- const strDate = date.getDate().toString();
55
- dateParts.push(strDate);
56
- };
57
-
58
- const processMonth = (
59
- dateParts: string[],
60
- day:Day | undefined,
61
- month: Month | undefined,
62
- date: Date,
63
- ) => {
64
- if (typeof month === 'undefined') return;
65
- if (month === '2-digit' || month === 'numeric') {
66
- const strMonth = (date.getMonth() + 1).toString();
67
- dateParts.push(strMonth);
68
- return;
69
- }
70
- const finalMonth = HE_MONTHS[month][date.getMonth()];
71
- if (day != null) {
72
- dateParts.push(`ב${finalMonth}`);
73
- return;
74
- }
75
- dateParts.push(finalMonth);
76
- };
77
-
78
- const toLocaleDateString = (date: Date) => (
79
- { weekday, year, month, day }: DateTimeFormatOptions = {
80
- year: 'numeric', month: '2-digit', day: '2-digit',
81
- },
82
- ) => {
83
- const dateStringParts: string[] = [];
84
- processWeekday(dateStringParts, weekday, date);
85
- const dateConnection = month === 'numeric' || month === '2-digit' ? '.' : '';
86
- const dateParts: string[] = [];
87
- processDay(dateParts, day, date);
88
- if ((month === 'narrow'
89
- || month === 'short'
90
- || month === 'long')
91
- && day != null
92
- ) {
93
- dateParts.push(' ');
94
- }
95
- processMonth(dateParts, day, month, date);
96
- if (month === 'long') dateParts.push(' ');
97
- processYear(dateParts, year, date);
98
- dateStringParts.push(dateParts.join(dateConnection));
99
- return dateStringParts.join(' ');
100
- };
101
- export const heDateFormatter = dateFormatter(toNumericLocaleTimeString, toLocaleDateString);
@@ -1,47 +0,0 @@
1
- import { HOUR_IN_MS, MINUTE_IN_MS } from '@24i/bigscreen-sdk/utils';
2
- import * as TwentyFourIMediaTimeApi from '../services/24iMediaTimeApi';
3
-
4
- type ParamOptions = TwentyFourIMediaTimeApi.ParamOptions;
5
-
6
- const defaultOptions: ParamOptions = {
7
- timeoutInMs: 30000,
8
- retryConfig: {
9
- retry: 2,
10
- },
11
- };
12
-
13
- /**
14
- * Returns a tring in ISO format followed by +/-hh:mm suffix for timezone offset.
15
- * @param resp Time api response.
16
- * @returns ISO string with timezone data.
17
- */
18
- const getIsoDateString = (resp: TwentyFourIMediaTimeApi.ServiceDataResponse): string => {
19
- let datetime = new Date(resp.timestamp + resp.timezone_offset).toISOString();
20
- const offset = resp.timezone_offset / HOUR_IN_MS;
21
- if (offset) {
22
- const sign = offset > 0 ? '+' : '-';
23
- const hours = Math.abs(offset);
24
- const minutes = Math.floor((resp.timezone_offset % HOUR_IN_MS) / MINUTE_IN_MS);
25
- // eslint-disable-next-line no-magic-numbers, sonarjs/no-nested-template-literals
26
- const timeString = `${sign + `0${hours}`.slice(-2)}:${`0${minutes}`.slice(-2)}`;
27
- datetime = datetime.replace('Z', timeString);
28
- }
29
- return datetime;
30
- };
31
-
32
- /**
33
- * Wrapper over "TwentyFourIMediaTimeApi.getTime" method requesting the current time
34
- * from timekeeping server. Transforms the result to ISO string with timezone offset data
35
- * included.
36
- *
37
- * @param options Options object
38
- */
39
- export const getTime = async (options: ParamOptions = {}) => {
40
- const opts = { ...defaultOptions, ...options };
41
- const resp = await TwentyFourIMediaTimeApi.getTime(opts);
42
-
43
- if ('timestamp' in resp && 'timezone_offset' in resp && 'in_dst' in resp) {
44
- return { datetime: getIsoDateString(resp) };
45
- }
46
- return null;
47
- };