@24i/bigscreen-sdk 1.0.34 → 1.0.35-alpha.2578
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -47
- package/__mocks__/@24i/bigscreen-sdk/animations.ts +2 -2
- package/package.json +1 -1
- package/packages/adobe-heartbeat/README.md +46 -46
- package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +244 -244
- package/packages/adobe-heartbeat/src/__external__/Adobe/Adobe.d.ts +24 -24
- package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.d.ts +126 -126
- package/packages/adobe-heartbeat/src/__external__/Adobe/MediaSDK.min.js +76 -76
- package/packages/adobe-heartbeat/src/index.ts +5 -5
- package/packages/adobe-heartbeat/src/types.ts +67 -67
- package/packages/analytics/README.md +7 -7
- package/packages/analytics/src/A.ts +1 -1
- package/packages/analytics/src/Analytics.ts +1 -1
- package/packages/analytics/src/analyticsOnScroll.ts +1 -1
- package/packages/analytics/src/clients/ConsoleAnalytics/ConsoleAnalytics.ts +1 -1
- package/packages/analytics/src/clients/ConsoleAnalytics/index.ts +1 -1
- package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +200 -200
- package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +118 -118
- package/packages/analytics/src/clients/GoogleAnalytics/getUrl.ts +17 -17
- package/packages/analytics/src/clients/GoogleAnalytics/index.ts +2 -2
- package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +77 -77
- package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +50 -50
- package/packages/analytics/src/clients/GoogleAnalytics/prepareBody.ts +14 -14
- package/packages/analytics/src/clients/TealiumAnalytics/TealiumAnalytics.ts +161 -161
- package/packages/analytics/src/clients/TealiumAnalytics/constants.ts +102 -102
- package/packages/analytics/src/clients/TealiumAnalytics/index.ts +3 -3
- package/packages/analytics/src/clients/TealiumAnalytics/interface.ts +33 -33
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/__mocks__/mediaPayload.ts +40 -40
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/helper.ts +21 -21
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppError.ts +14 -14
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteAdd.ts +11 -11
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteRemove.ts +11 -11
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerClose.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerOpen.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSceneView.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearch.ts +18 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchFailed.ts +8 -8
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchSuccess.ts +8 -8
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoPause.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoProgress.ts +18 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoResume.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStart.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStop.ts +15 -15
- package/packages/analytics/src/clients/TealiumAnalytics/types.ts +139 -139
- package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +116 -116
- package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +99 -99
- package/packages/analytics/src/clients/TwentyFourIQ/helper.ts +34 -34
- package/packages/analytics/src/clients/TwentyFourIQ/index.ts +2 -2
- package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +31 -31
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +13 -13
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +16 -16
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +21 -21
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +15 -15
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +24 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +18 -18
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +15 -15
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +17 -17
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +21 -21
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +24 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +24 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +34 -34
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +32 -32
- package/packages/analytics/src/clients/TwentyFourIQ/types.ts +115 -115
- package/packages/analytics/src/constants.ts +1 -1
- package/packages/analytics/src/index.ts +3 -3
- package/packages/analytics/src/interface.ts +1 -1
- package/packages/analytics/src/utils/generateSessionId.ts +8 -8
- package/packages/animations/README.md +85 -85
- package/packages/animations/src/AnimationUtils.ts +238 -238
- package/packages/animations/src/JSAnimations.ts +144 -144
- package/packages/animations/src/__mocks__/JSAnimations.ts +30 -30
- package/packages/animations/src/index.ts +3 -3
- package/packages/announcement-banner/README.md +49 -49
- package/packages/announcement-banner/src/AnnouncementBanner.scss +8 -8
- package/packages/announcement-banner/src/AnnouncementBanner.tsx +136 -136
- package/packages/announcement-banner/src/index.ts +1 -1
- package/packages/async-image/README.md +47 -47
- package/packages/async-image/src/AsyncImage.tsx +101 -101
- package/packages/async-image/src/index.ts +2 -2
- package/packages/conviva/README.md +47 -47
- package/packages/conviva/src/ConvivaSDK.ts +38 -38
- package/packages/conviva/src/__mocks__/ConvivaMock.ts +36 -36
- package/packages/conviva/src/index.ts +1 -1
- package/packages/conviva/src/theoPlugin/ConvivaConviguration.ts +19 -19
- package/packages/conviva/src/theoPlugin/__external__/Conviva_4.0.15.js +698 -698
- package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.d.ts +7 -7
- package/packages/conviva/src/theoPlugin/__external__/convivaTheoPlugin.js +635 -635
- package/packages/conviva/src/theoPlugin/convivaTheoPluginWrapper.ts +61 -61
- package/packages/conviva/src/theoPlugin/index.ts +2 -2
- package/packages/developer-tools/DeveloperConsole/README.md +114 -114
- package/packages/developer-tools/DeveloperConsole/index.ts +3 -3
- package/packages/developer-tools/DeveloperConsole/unstyled.ts +1 -1
- package/packages/developer-tools/DeveloperToolsService/README.md +54 -54
- package/packages/developer-tools/DeveloperToolsService/index.ts +3 -3
- package/packages/developer-tools/DeveloperToolsService/unstyled.ts +1 -1
- package/packages/developer-tools/EnvironmentSelection/README.md +77 -77
- package/packages/developer-tools/EnvironmentSelection/index.ts +3 -3
- package/packages/developer-tools/EnvironmentSelection/unstyled.ts +1 -1
- package/packages/developer-tools/PlayerDebugWindow/README.md +65 -65
- package/packages/developer-tools/PlayerDebugWindow/index.ts +3 -3
- package/packages/developer-tools/PlayerDebugWindow/unstyled.ts +1 -1
- package/packages/developer-tools/README.md +24 -24
- package/packages/developer-tools/TechnicalInfo/README.md +90 -90
- package/packages/developer-tools/TechnicalInfo/index.ts +9 -9
- package/packages/developer-tools/TechnicalInfo/unstyled.ts +6 -6
- package/packages/developer-tools/src/DeveloperConsole/ControlButton.tsx +16 -16
- package/packages/developer-tools/src/DeveloperConsole/DeveloperConsole.tsx +389 -389
- package/packages/developer-tools/src/DeveloperConsole/Panel.tsx +108 -108
- package/packages/developer-tools/src/DeveloperConsole/PanelMessage.tsx +33 -33
- package/packages/developer-tools/src/DeveloperConsole/helpers/Queue.ts +38 -38
- package/packages/developer-tools/src/DeveloperConsole/helpers/index.ts +2 -2
- package/packages/developer-tools/src/DeveloperConsole/helpers/instrumentHandler.ts +165 -165
- package/packages/developer-tools/src/DeveloperConsole/index.ts +2 -2
- package/packages/developer-tools/src/DeveloperConsole/initDeveloperConsole.tsx +8 -8
- package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.scss +91 -91
- package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.1080.scss +2 -2
- package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/DeveloperConsole.styles.scss +2 -2
- package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.1080.scss +16 -16
- package/packages/developer-tools/src/DeveloperConsole/styles/DeveloperConsole/_sizes.scss +16 -16
- package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.scss +87 -87
- package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.1080.scss +2 -2
- package/packages/developer-tools/src/DeveloperConsole/styles/Panel/Panel.styles.scss +2 -2
- package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.1080.scss +9 -9
- package/packages/developer-tools/src/DeveloperConsole/styles/Panel/_sizes.scss +9 -9
- package/packages/developer-tools/src/DeveloperConsole/styles.ts +2 -2
- package/packages/developer-tools/src/DeveloperConsole/types.ts +49 -49
- package/packages/developer-tools/src/DeveloperConsole/utils/formatTime.ts +13 -13
- package/packages/developer-tools/src/DeveloperConsole/utils/index.ts +3 -3
- package/packages/developer-tools/src/DeveloperConsole/utils/stringify.ts +10 -10
- package/packages/developer-tools/src/DeveloperConsole/utils/styles.ts +24 -24
- package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolItem.tsx +21 -21
- package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +125 -125
- package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsService.tsx +122 -122
- package/packages/developer-tools/src/DeveloperToolsService/index.ts +1 -1
- package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.scss +64 -64
- package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.1080.scss +2 -2
- package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.1080.scss +3 -3
- package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.animated.scss +4 -4
- package/packages/developer-tools/src/DeveloperToolsService/styles/DeveloperToolsService.styles.scss +2 -2
- package/packages/developer-tools/src/DeveloperToolsService/styles/_animated.scss +5 -5
- package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.1080.scss +16 -16
- package/packages/developer-tools/src/DeveloperToolsService/styles/_sizes.scss +16 -16
- package/packages/developer-tools/src/DeveloperToolsService/styles.ts +1 -1
- package/packages/developer-tools/src/EnvironmentSelection/EnvironmentList.tsx +90 -90
- package/packages/developer-tools/src/EnvironmentSelection/EnvironmentListItem.tsx +106 -106
- package/packages/developer-tools/src/EnvironmentSelection/EnvironmentSelection.tsx +102 -102
- package/packages/developer-tools/src/EnvironmentSelection/assets/checkmark.svg +18 -18
- package/packages/developer-tools/src/EnvironmentSelection/config.ts +43 -43
- package/packages/developer-tools/src/EnvironmentSelection/constants.ts +1 -1
- package/packages/developer-tools/src/EnvironmentSelection/index.ts +2 -2
- package/packages/developer-tools/src/EnvironmentSelection/sizes.1080.ts +5 -5
- package/packages/developer-tools/src/EnvironmentSelection/sizes.ts +5 -5
- package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.scss +141 -141
- package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.1080.scss +2 -2
- package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.1080.scss +3 -3
- package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.animated.scss +3 -3
- package/packages/developer-tools/src/EnvironmentSelection/styles/EnvironmentSelection.styles.scss +2 -2
- package/packages/developer-tools/src/EnvironmentSelection/styles/_animated.scss +9 -9
- package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.1080.scss +26 -26
- package/packages/developer-tools/src/EnvironmentSelection/styles/_sizes.scss +26 -26
- package/packages/developer-tools/src/EnvironmentSelection/styles.ts +1 -1
- package/packages/developer-tools/src/EnvironmentSelection/types.ts +10 -10
- package/packages/developer-tools/src/EnvironmentSelection/utils/format.ts +4 -4
- package/packages/developer-tools/src/IDeveloperTool.ts +14 -14
- package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +115 -115
- package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +128 -128
- package/packages/developer-tools/src/PlayerDebugWindow/index.ts +1 -1
- package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.scss +29 -29
- package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.1080.scss +2 -2
- package/packages/developer-tools/src/PlayerDebugWindow/styles/PlayerDebugWindow.styles.scss +2 -2
- package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.1080.scss +11 -11
- package/packages/developer-tools/src/PlayerDebugWindow/styles/_sizes.scss +11 -11
- package/packages/developer-tools/src/PlayerDebugWindow/styles.ts +1 -1
- package/packages/developer-tools/src/TechnicalInfo/ITechnicalInfoProvider.ts +5 -5
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfo.tsx +125 -125
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +77 -77
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +349 -349
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +55 -55
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Player.ts +7 -7
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Storage.ts +9 -9
- package/packages/developer-tools/src/TechnicalInfo/icons/arrow-down.svg +18 -18
- package/packages/developer-tools/src/TechnicalInfo/icons/arrow-up.svg +18 -18
- package/packages/developer-tools/src/TechnicalInfo/index.ts +5 -5
- package/packages/developer-tools/src/TechnicalInfo/sizes.1080.ts +1 -1
- package/packages/developer-tools/src/TechnicalInfo/sizes.ts +1 -1
- package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.scss +187 -187
- package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.1080.scss +2 -2
- package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.1080.scss +3 -3
- package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.animated.scss +3 -3
- package/packages/developer-tools/src/TechnicalInfo/styles/TechnicalInfo.styles.scss +2 -2
- package/packages/developer-tools/src/TechnicalInfo/styles/_animated.scss +16 -16
- package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.1080.scss +50 -50
- package/packages/developer-tools/src/TechnicalInfo/styles/_sizes.scss +50 -50
- package/packages/developer-tools/src/TechnicalInfo/styles.ts +1 -1
- package/packages/developer-tools/src/TechnicalInfo/translations.ts +79 -79
- package/packages/developer-tools/src/TechnicalInfo/utils/eme01bSupport.ts +58 -58
- package/packages/developer-tools/src/TechnicalInfo/utils/emeSupport.ts +84 -84
- package/packages/developer-tools/src/TechnicalInfo/utils/formatTimezone.ts +15 -15
- package/packages/developer-tools/src/TechnicalInfo/utils/mseSupport.ts +14 -14
- package/packages/developer-tools/src/utils/reload.ts +6 -6
- package/packages/device/README.md +219 -219
- package/packages/device/keymap.ts +1 -1
- package/packages/device/resolver/index.ts +2 -2
- package/packages/device/resolver/keymap.ts +1 -1
- package/packages/device/src/DeviceEventMap.ts +1 -1
- package/packages/device/src/device.ts +6 -6
- package/packages/device/src/driver/index.android.tv.ts +1 -1
- package/packages/device/src/driver/index.entone.ts +1 -1
- package/packages/device/src/driver/index.firetv.ts +1 -1
- package/packages/device/src/driver/index.hbbtv.tv.ts +1 -1
- package/packages/device/src/driver/index.kreatv.ts +1 -1
- package/packages/device/src/driver/index.saphi.tv.ts +1 -1
- package/packages/device/src/driver/index.smartcast.tv.ts +1 -1
- package/packages/device/src/driver/index.tizen.tv.ts +1 -1
- package/packages/device/src/driver/index.ts +1 -1
- package/packages/device/src/driver/index.vidaa.tv.ts +1 -1
- package/packages/device/src/driver/index.webos.tv.ts +1 -1
- package/packages/device/src/getKeyDigit.ts +35 -35
- package/packages/device/src/getKeyMap.ts +4 -4
- package/packages/device/src/index.ts +8 -8
- package/packages/device/src/isClickOrEnter.ts +3 -3
- package/packages/device/src/resolver/index.ts +2 -2
- package/packages/device/src/resolver/resolver.ts +84 -84
- package/packages/digital-clock/README.md +26 -26
- package/packages/digital-clock/src/DigitalClock.tsx +78 -78
- package/packages/digital-clock/src/index.ts +1 -1
- package/packages/driver-androidtv/src/DeviceAndroidTV.ts +224 -224
- package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +36 -36
- package/packages/driver-androidtv/src/formatUserAgent.ts +11 -11
- package/packages/driver-androidtv/src/index.ts +1 -1
- package/packages/driver-androidtv/src/keymap.ts +27 -27
- package/packages/driver-androidtv/src/types.ts +113 -113
- package/packages/driver-base/DeviceBase.md +139 -139
- package/packages/driver-base/README.md +44 -44
- package/packages/driver-base/src/ConnectionType.ts +1 -1
- package/packages/driver-base/src/DeviceBase.ts +279 -279
- package/packages/driver-base/src/KeyMap/Key.ts +48 -48
- package/packages/driver-base/src/KeyMap/KeyMap.ts +390 -390
- package/packages/driver-base/src/KeyMap/generateKeyCodeKeyMap.ts +11 -11
- package/packages/driver-base/src/KeyMap/index.ts +5 -5
- package/packages/driver-base/src/KeyMap/interface.ts +8 -8
- package/packages/driver-base/src/KeyMap/overrideValues.ts +17 -17
- package/packages/driver-base/src/KeyMap/switchByKey.ts +18 -18
- package/packages/driver-base/src/ScreenSize.ts +1 -1
- package/packages/driver-base/src/VolumeRange.ts +5 -5
- package/packages/driver-base/src/__mocks__/DeviceBase.ts +100 -100
- package/packages/driver-base/src/__mocks__/keyMap.ts +42 -42
- package/packages/driver-base/src/bindPreventDefaultEvent.ts +5 -5
- package/packages/driver-base/src/errors.ts +32 -32
- package/packages/driver-base/src/index.ts +10 -10
- package/packages/driver-base/src/loadObject.ts +30 -30
- package/packages/driver-base/src/types/DeviceEvent.ts +11 -11
- package/packages/driver-base/src/types/ExitOptions.ts +1 -1
- package/packages/driver-base/src/types/KeycodeKeyMap.ts +86 -86
- package/packages/driver-base/src/types/ScreenSaverStatus.ts +3 -3
- package/packages/driver-base/src/utils.ts +10 -10
- package/packages/driver-browser/src/DeviceBrowser.ts +170 -170
- package/packages/driver-browser/src/getBrowser.ts +51 -51
- package/packages/driver-browser/src/getOsName.ts +30 -30
- package/packages/driver-browser/src/index.ts +1 -1
- package/packages/driver-browser/src/keymap.ts +22 -22
- package/packages/driver-browser/src/patchSuitestKeys.ts +27 -27
- package/packages/driver-entone/README.md +9 -9
- package/packages/driver-entone/src/DeviceEntone.ts +232 -232
- package/packages/driver-entone/src/IEntone.ts +460 -460
- package/packages/driver-entone/src/__mocks__/entone.ts +177 -177
- package/packages/driver-entone/src/constants.ts +73 -73
- package/packages/driver-entone/src/index.ts +1 -1
- package/packages/driver-entone/src/keymap.ts +57 -57
- package/packages/driver-firetv/src/DeviceFireTV.ts +18 -18
- package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +36 -36
- package/packages/driver-firetv/src/index.ts +1 -1
- package/packages/driver-hbbtv/src/DeviceHbbTV.ts +313 -313
- package/packages/driver-hbbtv/src/__mocks__/hbbtv.ts +17 -17
- package/packages/driver-hbbtv/src/constants.ts +28 -28
- package/packages/driver-hbbtv/src/deviceInfo.ts +23 -23
- package/packages/driver-hbbtv/src/getVersion.ts +16 -16
- package/packages/driver-hbbtv/src/index.ts +1 -1
- package/packages/driver-hbbtv/src/keymap.ts +45 -45
- package/packages/driver-hbbtv/src/types.ts +366 -366
- package/packages/driver-kreatv/src/DeviceKreaTV.ts +271 -271
- package/packages/driver-kreatv/src/IToi.ts +379 -379
- package/packages/driver-kreatv/src/__mocks__/toi2.ts +76 -76
- package/packages/driver-kreatv/src/__mocks__/toi3.ts +43 -43
- package/packages/driver-kreatv/src/index.ts +1 -1
- package/packages/driver-kreatv/src/keymap.ts +31 -31
- package/packages/driver-kreatv/src/toi2.ts +107 -107
- package/packages/driver-kreatv/src/toi3.ts +102 -102
- package/packages/driver-kreatv/src/types.ts +35 -35
- package/packages/driver-saphi/src/DeviceSaphi.ts +144 -144
- package/packages/driver-saphi/src/__mocks__/SmartTvA_API.ts +11 -11
- package/packages/driver-saphi/src/__mocks__/userAgent.ts +4 -4
- package/packages/driver-saphi/src/constants.ts +1 -1
- package/packages/driver-saphi/src/formatUserAgent.ts +19 -19
- package/packages/driver-saphi/src/index.ts +1 -1
- package/packages/driver-saphi/src/keymap.ts +64 -64
- package/packages/driver-saphi/src/types.ts +75 -75
- package/packages/driver-smartcast/src/DeviceSmartCast.ts +316 -310
- package/packages/driver-smartcast/src/__mocks__/api.ts +49 -49
- package/packages/driver-smartcast/src/index.ts +1 -1
- package/packages/driver-smartcast/src/keymap.ts +9 -9
- package/packages/driver-smartcast/src/types.ts +65 -65
- package/packages/driver-tizen/src/DeviceTizen.ts +298 -298
- package/packages/driver-tizen/src/ITizen.ts +212 -212
- package/packages/driver-tizen/src/IWebapis.ts +95 -95
- package/packages/driver-tizen/src/TizenKeys.ts +96 -96
- package/packages/driver-tizen/src/__mocks__/tizen.ts +35 -35
- package/packages/driver-tizen/src/constants.ts +197 -197
- package/packages/driver-tizen/src/index.ts +1 -1
- package/packages/driver-tizen/src/types.ts +14 -14
- package/packages/driver-vidaa/src/DeviceVidaa.ts +141 -141
- package/packages/driver-vidaa/src/__mocks__/vidaa.ts +21 -21
- package/packages/driver-vidaa/src/constants.ts +8 -8
- package/packages/driver-vidaa/src/formatUserAgent.ts +16 -16
- package/packages/driver-vidaa/src/index.ts +1 -1
- package/packages/driver-vidaa/src/keymap.ts +56 -56
- package/packages/driver-vidaa/src/types.ts +90 -90
- package/packages/driver-webos/src/DeviceWebos.ts +313 -313
- package/packages/driver-webos/src/__mocks__/webos.ts +172 -172
- package/packages/driver-webos/src/constants.ts +20 -20
- package/packages/driver-webos/src/index.ts +1 -1
- package/packages/driver-webos/src/keymap.ts +10 -10
- package/packages/driver-webos/src/types.ts +344 -344
- package/packages/driver-webos/src/utils.ts +60 -60
- package/packages/driver-webos/src/webOSTVjs/webOSTVjs.js +12 -12
- package/packages/driver-xbox/__external__/winjs/directionalnavigation-1.0.0.0.js +1015 -1015
- package/packages/driver-xbox/src/DeviceXbox.ts +231 -231
- package/packages/driver-xbox/src/__mocks__/Windows.ts +94 -94
- package/packages/driver-xbox/src/index.ts +1 -1
- package/packages/driver-xbox/src/interfaces.ts +138 -138
- package/packages/driver-xbox/src/keymap.ts +96 -96
- package/packages/driver-xbox/src/utils.ts +23 -23
- package/packages/epg/IMPLEMENTATION.md +228 -228
- package/packages/epg/MockGenerator.md +102 -102
- package/packages/epg/README.md +585 -585
- package/packages/epg/src/v2/Cell.tsx +222 -222
- package/packages/epg/src/v2/CellsManager.ts +1 -1
- package/packages/epg/src/v2/DataManager.ts +372 -372
- package/packages/epg/src/v2/DatePicker.tsx +110 -110
- package/packages/epg/src/v2/DateToast/DateToast.scss +28 -28
- package/packages/epg/src/v2/DateToast/DateToast.styles.1080.scss +2 -2
- package/packages/epg/src/v2/DateToast/DateToast.styles.scss +2 -2
- package/packages/epg/src/v2/DateToast/DateToast.tsx +90 -90
- package/packages/epg/src/v2/DateToast/_sizes.1080.scss +7 -7
- package/packages/epg/src/v2/DateToast/_sizes.scss +7 -7
- package/packages/epg/src/v2/DateToast/index.tsx +1 -1
- package/packages/epg/src/v2/DateToast/styles.ts +1 -1
- package/packages/epg/src/v2/Day.tsx +33 -33
- package/packages/epg/src/v2/Epg.tsx +462 -462
- package/packages/epg/src/v2/Header.tsx +41 -41
- package/packages/epg/src/v2/IdleController.ts +25 -25
- package/packages/epg/src/v2/InputEvents.ts +301 -301
- package/packages/epg/src/v2/MockGenerator/config.1080.ts +2 -2
- package/packages/epg/src/v2/MockGenerator/config.ts +2 -2
- package/packages/epg/src/v2/MockGenerator/generator.ts +174 -174
- package/packages/epg/src/v2/MockGenerator/index.ts +2 -2
- package/packages/epg/src/v2/MockGenerator/mocks/data.ts +102 -102
- package/packages/epg/src/v2/MockGenerator/types.ts +25 -25
- package/packages/epg/src/v2/MockGenerator/utils.ts +28 -28
- package/packages/epg/src/v2/MouseNavigation/MouseNavigation.tsx +88 -88
- package/packages/epg/src/v2/MouseNavigation/MouseNavigationFallback.ts +4 -4
- package/packages/epg/src/v2/MouseNavigation/index.tizen.tv.ts +1 -1
- package/packages/epg/src/v2/MouseNavigation/index.ts +1 -1
- package/packages/epg/src/v2/MouseNavigation/index.web.ts +1 -1
- package/packages/epg/src/v2/MouseNavigation/index.webos.tv.ts +1 -1
- package/packages/epg/src/v2/NowLine.tsx +66 -66
- package/packages/epg/src/v2/Program.tsx +58 -58
- package/packages/epg/src/v2/ProgramInfo/ProgramInfo.scss +67 -67
- package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.1080.scss +3 -3
- package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.1080.scss +2 -2
- package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.animated.scss +2 -2
- package/packages/epg/src/v2/ProgramInfo/ProgramInfo.styles.scss +3 -3
- package/packages/epg/src/v2/ProgramInfo/ProgramInfo.tsx +149 -149
- package/packages/epg/src/v2/ProgramInfo/_animated.scss +8 -8
- package/packages/epg/src/v2/ProgramInfo/_mixins.scss +5 -5
- package/packages/epg/src/v2/ProgramInfo/_sizes.1080.scss +21 -21
- package/packages/epg/src/v2/ProgramInfo/_sizes.scss +21 -21
- package/packages/epg/src/v2/ProgramInfo/index.ts +1 -1
- package/packages/epg/src/v2/ProgramInfo/rtl.scss +7 -7
- package/packages/epg/src/v2/ProgramInfo/sizes.1080.ts +3 -3
- package/packages/epg/src/v2/ProgramInfo/sizes.ts +3 -3
- package/packages/epg/src/v2/ProgramInfo/styles.ts +1 -1
- package/packages/epg/src/v2/ProgramInfo/utils.ts +28 -28
- package/packages/epg/src/v2/Row.tsx +134 -134
- package/packages/epg/src/v2/RowsManager.ts +1 -1
- package/packages/epg/src/v2/TimeManager.ts +58 -58
- package/packages/epg/src/v2/Timeline.ts +1 -1
- package/packages/epg/src/v2/TimelineSection.tsx +50 -50
- package/packages/epg/src/v2/basic/CellsManager.tsx +300 -300
- package/packages/epg/src/v2/basic/RowsManager.tsx +503 -503
- package/packages/epg/src/v2/basic/Timeline.tsx +88 -88
- package/packages/epg/src/v2/index.ts +1 -1
- package/packages/epg/src/v2/interface.ts +1519 -1519
- package/packages/epg/src/v2/sizes.1080.ts +2 -2
- package/packages/epg/src/v2/sizes.ts +2 -2
- package/packages/epg/src/v2/styles/Basic/Basic.scss +116 -116
- package/packages/epg/src/v2/styles/Basic/index.ts +1 -1
- package/packages/epg/src/v2/styles/Whitelabel/index.ts +1 -1
- package/packages/epg/src/v2/utils.ts +40 -40
- package/packages/events-manager/src/EventsManager.ts +1 -1
- package/packages/events-manager/src/index.ts +2 -2
- package/packages/floating-focus/README.md +64 -64
- package/packages/floating-focus/src/FloatingFocus.ts +106 -106
- package/packages/floating-focus/src/Horizontal.tsx +20 -20
- package/packages/floating-focus/src/Vertical.tsx +20 -20
- package/packages/floating-focus/src/index.ts +4 -4
- package/packages/floating-focus/src/types.ts +20 -20
- package/packages/floating-focus/src/utils.ts +43 -43
- package/packages/focus/README.md +348 -348
- package/packages/focus/src/IFocusable.ts +5 -5
- package/packages/focus/src/Layout/Base.tsx +166 -166
- package/packages/focus/src/Layout/Horizontal.ts +15 -15
- package/packages/focus/src/Layout/Matrix.tsx +357 -357
- package/packages/focus/src/Layout/Vertical.ts +12 -12
- package/packages/focus/src/Layout/constants.ts +10 -10
- package/packages/focus/src/Layout/isRtl.ts +12 -12
- package/packages/focus/src/Layout/types.ts +7 -7
- package/packages/focus/src/candidate.ts +106 -106
- package/packages/focus/src/focusFirstExisting.ts +19 -19
- package/packages/focus/src/hasFocus.ts +36 -36
- package/packages/focus/src/index.ts +16 -16
- package/packages/focus/src/refocusAfterHashChange.ts +19 -19
- package/packages/focus/src/safeFocus.ts +15 -15
- package/packages/gallup/README.md +27 -27
- package/packages/gallup/src/Gallup.ts +80 -80
- package/packages/gallup/src/GallupMock.ts +7 -7
- package/packages/gallup/src/__external__/SpringStreams.d.ts +39 -39
- package/packages/gallup/src/__mocks__/SpringStreams.js +18 -18
- package/packages/gallup/src/index.ts +1 -1
- package/packages/grid/BasicGrid/README.md +78 -78
- package/packages/grid/BasicGrid/index.ts +1 -1
- package/packages/grid/FirstOnlyGrid/README.md +43 -43
- package/packages/grid/FirstOnlyGrid/index.ts +1 -1
- package/packages/grid/FixedToEndGrid/README.md +45 -45
- package/packages/grid/FixedToEndGrid/index.ts +1 -1
- package/packages/grid/Item/index.ts +1 -1
- package/packages/grid/README.md +169 -169
- package/packages/grid/src/Base/Base.tsx +492 -492
- package/packages/grid/src/Base/MouseNavigation/MouseNavigation.tsx +82 -82
- package/packages/grid/src/Base/MouseNavigation/MouseNavigationFallback.ts +4 -4
- package/packages/grid/src/Base/MouseNavigation/index.tizen.tv.ts +1 -1
- package/packages/grid/src/Base/MouseNavigation/index.ts +1 -1
- package/packages/grid/src/Base/MouseNavigation/index.webos.tv.ts +1 -1
- package/packages/grid/src/Base/MouseNavigation/index.webtv.ts +1 -1
- package/packages/grid/src/Base/index.ts +1 -1
- package/packages/grid/src/Base/interface.ts +47 -47
- package/packages/grid/src/BasicGrid/BasicGrid.tsx +137 -137
- package/packages/grid/src/BasicGrid/config.ts +13 -13
- package/packages/grid/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -54
- package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +112 -112
- package/packages/grid/src/FirstOnlyGrid/config.ts +13 -13
- package/packages/grid/src/FirstOnlyGrid/controller.ts +10 -10
- package/packages/grid/src/FixedToEndGrid/FixedToEndGrid.tsx +112 -112
- package/packages/grid/src/FixedToEndGrid/config.ts +13 -13
- package/packages/grid/src/FixedToEndGrid/controller.ts +36 -36
- package/packages/grid/src/UnifiedGridController/UnifiedGridController.ts +555 -555
- package/packages/grid/src/UnifiedGridController/index.ts +2 -2
- package/packages/grid/src/UnifiedGridController/interface.ts +92 -92
- package/packages/grid/src/animate.animated.ts +1 -1
- package/packages/grid/src/animate.ts +1 -1
- package/packages/grid/src/interface.ts +30 -30
- package/packages/grid/src/mocks/index.tsx +41 -41
- package/packages/grid/src/types.ts +69 -69
- package/packages/grid/src/utils.ts +69 -69
- package/packages/i18n/README.md +460 -460
- package/packages/i18n/src/I18n.ts +246 -246
- package/packages/i18n/src/Translation.tsx +36 -36
- package/packages/i18n/src/addResourceBundle.ts +73 -73
- package/packages/i18n/src/direction.ts +33 -33
- package/packages/i18n/src/index.ts +4 -4
- package/packages/i18n/src/isRtl.ts +3 -3
- package/packages/i18n/src/middlewares/i18next/Context/Context.ts +25 -25
- package/packages/i18n/src/middlewares/i18next/Context/index.ts +1 -1
- package/packages/i18n/src/middlewares/i18next/Interpolation/Interpolation.ts +95 -95
- package/packages/i18n/src/middlewares/i18next/Interpolation/index.ts +1 -1
- package/packages/i18n/src/middlewares/i18next/Nesting/Nesting.ts +38 -38
- package/packages/i18n/src/middlewares/i18next/Nesting/index.ts +1 -1
- package/packages/i18n/src/middlewares/i18next/Plurals/Plurals.ts +123 -123
- package/packages/i18n/src/middlewares/i18next/Plurals/Resolvers.ts +124 -124
- package/packages/i18n/src/middlewares/i18next/Plurals/index.ts +1 -1
- package/packages/i18n/src/middlewares/i18next/Plurals/types.ts +6 -6
- package/packages/i18n/src/middlewares/icu/DateInterpolation/DateInterpolation.ts +64 -64
- package/packages/i18n/src/middlewares/icu/DateInterpolation/index.ts +1 -1
- package/packages/i18n/src/middlewares/icu/Interpolation/Interpolation.ts +39 -39
- package/packages/i18n/src/middlewares/icu/Interpolation/index.ts +1 -1
- package/packages/i18n/src/middlewares/icu/NumberInterpolation/NumberInterpolation.ts +41 -41
- package/packages/i18n/src/middlewares/icu/NumberInterpolation/index.ts +1 -1
- package/packages/i18n/src/middlewares/icu/Plurals/Plurals.ts +65 -65
- package/packages/i18n/src/middlewares/icu/Plurals/Resolvers.ts +130 -130
- package/packages/i18n/src/middlewares/icu/Plurals/index.ts +1 -1
- package/packages/i18n/src/middlewares/icu/Plurals/types.ts +15 -15
- package/packages/i18n/src/middlewares/icu/Select/Select.ts +36 -36
- package/packages/i18n/src/middlewares/icu/Select/index.ts +1 -1
- package/packages/i18n/src/middlewares/icu/TimeInterpolation/TimeInterpolation.ts +65 -65
- package/packages/i18n/src/middlewares/icu/TimeInterpolation/index.ts +1 -1
- package/packages/i18n/src/middlewares/icu/shared/hasVariable.ts +5 -5
- package/packages/i18n/src/middlewares/icu/shared/matchSwitchCase.ts +80 -80
- package/packages/i18n/src/middlewares/icu/shared/unwrap.ts +1 -1
- package/packages/i18n/src/pluralsCommon/PluralsHelper.ts +54 -54
- package/packages/i18n/src/pluralsCommon/ResolverByLanguage.ts +129 -129
- package/packages/i18n/src/t.tsx +6 -6
- package/packages/i18n/src/typedTranslate.ts +31 -31
- package/packages/i18n/src/types.ts +66 -66
- package/packages/i18n/src/utils.ts +76 -76
- package/packages/icon/README.md +107 -107
- package/packages/icon/src/Icon.tsx +71 -71
- package/packages/icon/src/index.ts +1 -1
- package/packages/ime/README.md +72 -72
- package/packages/ime/src/IKeyboard.ts +6 -6
- package/packages/ime/src/IKeyboardEvent.ts +7 -7
- package/packages/ime/src/ImeManager.ts +33 -33
- package/packages/ime/src/SystemKeyboard/SystemKeyboard.ts +33 -33
- package/packages/ime/src/SystemKeyboard/SystemKeyboardBase.ts +98 -98
- package/packages/ime/src/SystemKeyboard/TizenSystemKeyboard.ts +66 -66
- package/packages/ime/src/SystemKeyboard/WebosSystemKeyboard.ts +74 -74
- package/packages/ime/src/SystemKeyboard/index.tizen.tv.ts +1 -1
- package/packages/ime/src/SystemKeyboard/index.ts +1 -1
- package/packages/ime/src/SystemKeyboard/index.webos.tv.ts +1 -1
- package/packages/ime/src/index.ts +3 -3
- package/packages/input/README.md +65 -65
- package/packages/input/__mocks__/MockKeyboard.ts +40 -40
- package/packages/input/src/Input.scss +9 -9
- package/packages/input/src/Input.tsx +267 -267
- package/packages/input/src/index.ts +1 -1
- package/packages/input/src/utils.ts +71 -71
- package/packages/interactable/README.md +38 -38
- package/packages/interactable/src/Interactable.tsx +33 -33
- package/packages/interactable/src/index.ts +1 -1
- package/packages/interactable/src/interface.ts +7 -7
- package/packages/ipify/README.md +30 -30
- package/packages/ipify/src/index.ts +1 -1
- package/packages/ipify/src/ipify.ts +41 -41
- package/packages/jsx/README.md +388 -388
- package/packages/jsx/src/Component.ts +68 -68
- package/packages/jsx/src/createRef.ts +5 -5
- package/packages/jsx/src/forwardRef.ts +8 -8
- package/packages/jsx/src/index.ts +31 -31
- package/packages/jsx/src/jsx-runtime.ts +5 -5
- package/packages/jsx/src/manipulation/attachNode.ts +30 -30
- package/packages/jsx/src/manipulation/attachNodeBefore.ts +44 -44
- package/packages/jsx/src/manipulation/clearNode.ts +14 -14
- package/packages/jsx/src/manipulation/detachNode.ts +26 -26
- package/packages/jsx/src/manipulation/index.ts +7 -7
- package/packages/jsx/src/manipulation/removeNode.ts +18 -18
- package/packages/jsx/src/manipulation/replaceNode.ts +42 -42
- package/packages/jsx/src/manipulation/swapNodes.ts +53 -53
- package/packages/jsx/src/mount/guards.ts +26 -26
- package/packages/jsx/src/mount/handleLifecycle.ts +71 -71
- package/packages/jsx/src/mount/index.ts +1 -1
- package/packages/jsx/src/mount/lifecycle.ts +38 -38
- package/packages/jsx/src/mount/lifecycleHelpers.ts +29 -29
- package/packages/jsx/src/mount/mount.ts +141 -141
- package/packages/jsx/src/mount/namespaces.ts +7 -7
- package/packages/jsx/src/mount/props.ts +121 -121
- package/packages/jsx/src/nodeUtils.ts +69 -69
- package/packages/jsx/src/setText.ts +15 -15
- package/packages/jsx/src/test-utils/MountedComponent.ts +50 -50
- package/packages/jsx/src/test-utils/README.md +72 -72
- package/packages/jsx/src/test-utils/click.ts +7 -7
- package/packages/jsx/src/test-utils/enter.ts +4 -4
- package/packages/jsx/src/test-utils/index.ts +6 -6
- package/packages/jsx/src/test-utils/keydown.ts +27 -27
- package/packages/jsx/src/test-utils/keyup.ts +27 -27
- package/packages/jsx/src/test-utils/shallow.ts +33 -33
- package/packages/jsx/src/test-utils/spec-utils.ts +6 -6
- package/packages/jsx/src/textNode.ts +9 -9
- package/packages/jsx/src/types.ts +128 -128
- package/packages/jsx/src/utils.ts +35 -35
- package/packages/jsx/src/virtualDOM.ts +121 -121
- package/packages/key-sequence/README.md +44 -44
- package/packages/key-sequence/src/KeySequence.ts +56 -56
- package/packages/key-sequence/src/arrayEndsWithKeyCombo.ts +22 -22
- package/packages/key-sequence/src/index.ts +1 -1
- package/packages/key-sequence/src/types.ts +13 -13
- package/packages/keyboard/README.md +237 -237
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.scss +140 -140
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.1080.scss +2 -2
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.1080.scss +3 -3
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.animated.scss +3 -3
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.styles.scss +2 -2
- package/packages/keyboard/src/AndroidKeyboard/Keyboard.tsx +235 -235
- package/packages/keyboard/src/AndroidKeyboard/_animated.scss +7 -7
- package/packages/keyboard/src/AndroidKeyboard/_sizes.1080.scss +15 -15
- package/packages/keyboard/src/AndroidKeyboard/_sizes.scss +15 -15
- package/packages/keyboard/src/AndroidKeyboard/icons/arrow_left.svg +6 -6
- package/packages/keyboard/src/AndroidKeyboard/icons/arrow_right.svg +6 -6
- package/packages/keyboard/src/AndroidKeyboard/icons/key_backspace.svg +12 -12
- package/packages/keyboard/src/AndroidKeyboard/index.ts +1 -1
- package/packages/keyboard/src/AndroidKeyboard/makeLayout.ts +19 -19
- package/packages/keyboard/src/Backdrop/Backdrop.scss +17 -17
- package/packages/keyboard/src/Backdrop/Backdrop.styles.1080.scss +2 -2
- package/packages/keyboard/src/Backdrop/Backdrop.styles.scss +2 -2
- package/packages/keyboard/src/Backdrop/Backdrop.tsx +31 -31
- package/packages/keyboard/src/Backdrop/_sizes.1080.scss +2 -2
- package/packages/keyboard/src/Backdrop/_sizes.scss +2 -2
- package/packages/keyboard/src/DefaultKeyboard/Keyboard.scss +73 -73
- package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.1080.scss +2 -2
- package/packages/keyboard/src/DefaultKeyboard/Keyboard.styles.scss +2 -2
- package/packages/keyboard/src/DefaultKeyboard/Keyboard.tsx +155 -155
- package/packages/keyboard/src/DefaultKeyboard/_sizes.1080.scss +12 -12
- package/packages/keyboard/src/DefaultKeyboard/_sizes.scss +12 -12
- package/packages/keyboard/src/DefaultKeyboard/index.ts +1 -1
- package/packages/keyboard/src/KeyboardBase.tsx +344 -344
- package/packages/keyboard/src/MobiKeyboard/Keyboard.scss +180 -180
- package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.1080.scss +2 -2
- package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.1080.scss +3 -3
- package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.animated.scss +3 -3
- package/packages/keyboard/src/MobiKeyboard/Keyboard.styles.scss +2 -2
- package/packages/keyboard/src/MobiKeyboard/Keyboard.tsx +278 -278
- package/packages/keyboard/src/MobiKeyboard/_animated.scss +7 -7
- package/packages/keyboard/src/MobiKeyboard/_sizes.1080.scss +10 -10
- package/packages/keyboard/src/MobiKeyboard/_sizes.scss +10 -10
- package/packages/keyboard/src/MobiKeyboard/icons/arrow_left.svg +6 -6
- package/packages/keyboard/src/MobiKeyboard/icons/arrow_right.svg +6 -6
- package/packages/keyboard/src/MobiKeyboard/icons/key_backspace.svg +12 -12
- package/packages/keyboard/src/MobiKeyboard/icons/key_space.svg +6 -6
- package/packages/keyboard/src/MobiKeyboard/index.ts +1 -1
- package/packages/keyboard/src/MobiKeyboard/utils.ts +19 -19
- package/packages/keyboard/src/QwertyKeyboardBase/QwertyKeyboardBase.tsx +54 -54
- package/packages/keyboard/src/ShiftMode.ts +25 -25
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +168 -168
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.1080.scss +2 -2
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.styles.scss +2 -2
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +353 -353
- package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -7
- package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/_sizes.scss +7 -7
- package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/index.ts +1 -1
- package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.scss +81 -81
- package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -2
- package/packages/keyboard/src/WhitelabelKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -2
- package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +32 -32
- package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +32 -32
- package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_left.svg +9 -9
- package/packages/keyboard/src/WhitelabelKeyboard/icons/arrow_right.svg +9 -9
- package/packages/keyboard/src/WhitelabelKeyboard/icons/key_backspace.svg +9 -9
- package/packages/keyboard/src/WhitelabelKeyboard/icons/key_language.svg +20 -20
- package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift.svg +9 -9
- package/packages/keyboard/src/WhitelabelKeyboard/icons/key_shift_active.svg +9 -9
- package/packages/keyboard/src/WhitelabelKeyboard/index.ts +2 -2
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/arabic.ts +27 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/burmese.ts +27 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/dari.ts +28 -28
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/hebrew.ts +28 -28
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +14 -14
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/korean.ts +26 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/latin.ts +26 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/pashto.ts +27 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/persian.ts +27 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/russian.ts +27 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/special.ts +28 -28
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/tibetan.ts +26 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/turkish.ts +26 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/ukrainian.ts +27 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/urdu.ts +26 -26
- package/packages/keyboard/src/WhitelabelKeyboard/types.ts +28 -28
- package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.scss +105 -105
- package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.1080.scss +2 -2
- package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.styles.scss +2 -2
- package/packages/keyboard/src/WhitelabelNumericKeyboard/NumericKeyboard.tsx +161 -161
- package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.1080.scss +7 -7
- package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/_sizes.scss +7 -7
- package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/index.ts +1 -1
- package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.scss +62 -62
- package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.1080.scss +2 -2
- package/packages/keyboard/src/WhitelabelNumericKeyboard/WhitelabelStyles/whitelabel.styles.scss +2 -2
- package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.1080.scss +29 -29
- package/packages/keyboard/src/WhitelabelNumericKeyboard/_sizes.scss +29 -29
- package/packages/keyboard/src/WhitelabelNumericKeyboard/icons/key_backspace.svg +9 -9
- package/packages/keyboard/src/WhitelabelNumericKeyboard/index.ts +2 -2
- package/packages/keyboard/src/WhitelabelNumericKeyboard/layout.ts +14 -14
- package/packages/keyboard/src/hwKeyboardEventToChar.ts +11 -11
- package/packages/keyboard/src/types/index.ts +11 -11
- package/packages/keyboard/src/utils/caret.ts +48 -48
- package/packages/keyboard/src/utils/generateFocusMatrixFromStringMatrix.ts +12 -12
- package/packages/keyboard/src/utils/input.ts +40 -40
- package/packages/l10n/README.md +120 -120
- package/packages/l10n/interface.ts +1 -1
- package/packages/l10n/locales/cs.ts +4 -4
- package/packages/l10n/locales/en-001.ts +4 -4
- package/packages/l10n/locales/en-us.ts +4 -4
- package/packages/l10n/src/Locale.tsx +44 -44
- package/packages/l10n/src/date/common.ts +165 -165
- package/packages/l10n/src/date/cs.ts +89 -89
- package/packages/l10n/src/date/de.ts +97 -97
- package/packages/l10n/src/date/en-001.ts +76 -76
- package/packages/l10n/src/date/en-common.ts +55 -55
- package/packages/l10n/src/date/en-us.ts +83 -83
- package/packages/l10n/src/date/es.ts +71 -71
- package/packages/l10n/src/date/fr.ts +94 -94
- package/packages/l10n/src/date/he.ts +101 -101
- package/packages/l10n/src/date/iso.ts +63 -63
- package/packages/l10n/src/date/types.ts +56 -56
- package/packages/l10n/src/index.ts +2 -2
- package/packages/l10n/src/l10n.ts +112 -112
- package/packages/l10n/src/types.ts +22 -22
- package/packages/list/AttachDetachItem/README.md +128 -128
- package/packages/list/AttachDetachItem/index.ts +3 -3
- package/packages/list/BasicList/README.md +71 -71
- package/packages/list/BasicList/index.ts +1 -1
- package/packages/list/CenteredList/README.md +42 -42
- package/packages/list/CenteredList/index.ts +1 -1
- package/packages/list/EdgeOffsetList/README.md +58 -58
- package/packages/list/EdgeOffsetList/index.ts +1 -1
- package/packages/list/FirstOnlyList/README.md +39 -39
- package/packages/list/FirstOnlyList/index.ts +1 -1
- package/packages/list/FirstOnlyVariedList/README.md +105 -105
- package/packages/list/FirstOnlyVariedList/index.ts +1 -1
- package/packages/list/FixedToEndList/README.md +42 -42
- package/packages/list/FixedToEndList/index.ts +1 -1
- package/packages/list/Item/index.ts +1 -1
- package/packages/list/README.md +193 -193
- package/packages/list/src/AttachDetachItem/AttachDetachItem.tsx +96 -96
- package/packages/list/src/AttachDetachItem/prepareAttachDetachItemData.ts +13 -13
- package/packages/list/src/Base/Base.tsx +392 -392
- package/packages/list/src/Base/MouseNavigation/MouseNavigation.tsx +82 -82
- package/packages/list/src/Base/MouseNavigation/MouseNavigationFallback.ts +4 -4
- package/packages/list/src/Base/MouseNavigation/index.tizen.tv.ts +1 -1
- package/packages/list/src/Base/MouseNavigation/index.ts +1 -1
- package/packages/list/src/Base/MouseNavigation/index.webos.tv.ts +1 -1
- package/packages/list/src/Base/MouseNavigation/index.webtv.ts +1 -1
- package/packages/list/src/Base/index.ts +1 -1
- package/packages/list/src/Base/interface.ts +39 -39
- package/packages/list/src/BasicList/BasicList.tsx +178 -178
- package/packages/list/src/BasicList/config.ts +13 -13
- package/packages/list/src/CenteredList/CenteredList.tsx +116 -116
- package/packages/list/src/CenteredList/config.ts +13 -13
- package/packages/list/src/CenteredList/controller.ts +46 -46
- package/packages/list/src/CenteredList/interface.ts +10 -10
- package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +173 -173
- package/packages/list/src/EdgeOffsetList/config.ts +13 -13
- package/packages/list/src/FastFocusingOptimizer/FastFocusingOptimizer.ts +54 -54
- package/packages/list/src/FirstOnlyList/FirstOnlyList.tsx +122 -122
- package/packages/list/src/FirstOnlyList/config.ts +13 -13
- package/packages/list/src/FirstOnlyList/controller.ts +11 -11
- package/packages/list/src/FirstOnlyVariedList/FirstOnlyVariedList.tsx +132 -132
- package/packages/list/src/FirstOnlyVariedList/config.ts +13 -13
- package/packages/list/src/FixedToEndList/FixedToEndList.tsx +125 -125
- package/packages/list/src/FixedToEndList/config.ts +13 -13
- package/packages/list/src/FixedToEndList/controller.ts +44 -44
- package/packages/list/src/UnifiedListController/UnifiedListController.ts +258 -258
- package/packages/list/src/UnifiedListController/UnifiedListControllerBase.ts +241 -241
- package/packages/list/src/UnifiedListController/UnifiedVariedListController.ts +241 -241
- package/packages/list/src/UnifiedListController/interface.ts +81 -81
- package/packages/list/src/__test__/utils.spec.ts +59 -59
- package/packages/list/src/animate.animated.ts +1 -1
- package/packages/list/src/animate.ts +1 -1
- package/packages/list/src/index.ts +1 -1
- package/packages/list/src/interface.ts +48 -48
- package/packages/list/src/mocks/index.tsx +55 -55
- package/packages/list/src/types.ts +132 -132
- package/packages/list/src/utils.ts +142 -142
- package/packages/list/utils/index.ts +1 -1
- package/packages/logger/README.md +117 -117
- package/packages/logger/src/LoggerManager.ts +60 -60
- package/packages/logger/src/LoggerService.ts +43 -43
- package/packages/logger/src/__mocks__/LoggerBase.ts +13 -13
- package/packages/logger/src/index.ts +3 -3
- package/packages/logger/src/loggers/ConsoleLogger/ConsoleLogger.ts +51 -51
- package/packages/logger/src/loggers/ConsoleLogger/README.md +39 -39
- package/packages/logger/src/loggers/ConsoleLogger/index.ts +1 -1
- package/packages/logger/src/loggers/LoggerBase/LoggerBase.ts +67 -67
- package/packages/logger/src/loggers/LoggerBase/README.md +69 -69
- package/packages/logger/src/loggers/LoggerBase/index.ts +1 -1
- package/packages/logger/src/loggers/SentryLogger/README.md +98 -98
- package/packages/logger/src/loggers/SentryLogger/Sentry.ts +2 -2
- package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +179 -179
- package/packages/logger/src/loggers/SentryLogger/index.ts +2 -2
- package/packages/logger/src/loggers/SentryLogger/mock.ts +6 -6
- package/packages/logger/src/loggers/index.ts +2 -2
- package/packages/logger/src/types.ts +46 -46
- package/packages/logger/src/utils/deviceInfo.ts +25 -25
- package/packages/logger/src/utils/index.ts +1 -1
- package/packages/lottie-animations/README.md +217 -217
- package/packages/lottie-animations/src/LottieAnimation.tsx +125 -125
- package/packages/lottie-animations/src/index.ts +7 -7
- package/packages/menu/README.md +90 -90
- package/packages/menu/WhitelabelMenu/index.ts +1 -1
- package/packages/menu/WhitelabelMenu/interface.ts +2 -2
- package/packages/menu/WhitelabelMenu/styles.ts +2 -2
- package/packages/menu/interface.ts +3 -3
- package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +211 -211
- package/packages/menu/src/MenuAndContentContainer/index.ts +1 -1
- package/packages/menu/src/MenuAndContentContainer/interface.ts +164 -164
- package/packages/menu/src/MenuAndContentContainer/service.ts +5 -5
- package/packages/menu/src/WhitelabelMenu/SideMenu.scss +41 -41
- package/packages/menu/src/WhitelabelMenu/SideMenu.styles.1080.scss +2 -2
- package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.1080.scss +3 -3
- package/packages/menu/src/WhitelabelMenu/SideMenu.styles.animated.scss +3 -3
- package/packages/menu/src/WhitelabelMenu/SideMenu.styles.scss +2 -2
- package/packages/menu/src/WhitelabelMenu/SideMenu.tsx +248 -248
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.scss +56 -56
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.1080.scss +2 -2
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.1080.scss +3 -3
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.animated.scss +3 -3
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.styles.scss +2 -2
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/SideMenuItem.tsx +78 -78
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/_animated.scss +12 -12
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.1080.scss +17 -17
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/_sizes.scss +17 -17
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/index.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/interface.ts +49 -49
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/rtl.scss +12 -12
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.1080.ts +2 -2
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/sizes.ts +2 -2
- package/packages/menu/src/WhitelabelMenu/SideMenuItem/styles.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/VisualController.animated.ts +48 -48
- package/packages/menu/src/WhitelabelMenu/VisualController.ts +20 -20
- package/packages/menu/src/WhitelabelMenu/VisualControllerBase.ts +71 -71
- package/packages/menu/src/WhitelabelMenu/_animated.scss +39 -39
- package/packages/menu/src/WhitelabelMenu/_sizes.1080.scss +14 -14
- package/packages/menu/src/WhitelabelMenu/_sizes.scss +14 -14
- package/packages/menu/src/WhitelabelMenu/constants.animated.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/constants.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/index.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/interface.ts +14 -14
- package/packages/menu/src/WhitelabelMenu/rtl.scss +22 -22
- package/packages/menu/src/WhitelabelMenu/sizes.1080.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/sizes.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/styles.ts +1 -1
- package/packages/menu/src/WhitelabelMenu/utils.ts +34 -34
- package/packages/menu/src/index.ts +2 -2
- package/packages/modal-service/README.md +50 -50
- package/packages/modal-service/src/IModal.ts +3 -3
- package/packages/modal-service/src/ModalService.scss +7 -7
- package/packages/modal-service/src/ModalService.styles.1080.scss +2 -2
- package/packages/modal-service/src/ModalService.styles.scss +2 -2
- package/packages/modal-service/src/ModalService.tsx +102 -102
- package/packages/modal-service/src/_sizes.1080.scss +2 -2
- package/packages/modal-service/src/_sizes.scss +2 -2
- package/packages/modal-service/src/index.ts +2 -2
- package/packages/mouse-navigation/README.md +105 -105
- package/packages/mouse-navigation/src/ArrowNavigation/Arrow.tsx +58 -58
- package/packages/mouse-navigation/src/ArrowNavigation/ArrowNavigation.tsx +95 -95
- package/packages/mouse-navigation/src/ArrowNavigation/__test__/Arrow.spec.tsx +35 -35
- package/packages/mouse-navigation/src/ArrowNavigation/__test__/ArrowNavigation.spec.tsx +45 -45
- package/packages/mouse-navigation/src/ArrowNavigation/index.tsx +1 -1
- package/packages/mouse-navigation/src/MouseElementWrapper.tsx +70 -70
- package/packages/mouse-navigation/src/MouseNavigation.tsx +157 -157
- package/packages/mouse-navigation/src/MouseNavigationInterface.ts +8 -8
- package/packages/mouse-navigation/src/index.ts +3 -3
- package/packages/numeric-zapper/README.md +153 -153
- package/packages/numeric-zapper/src/NumericZapper.scss +20 -20
- package/packages/numeric-zapper/src/NumericZapper.styles.1080.scss +2 -2
- package/packages/numeric-zapper/src/NumericZapper.styles.scss +2 -2
- package/packages/numeric-zapper/src/NumericZapper.tsx +257 -257
- package/packages/numeric-zapper/src/ZapperAllower.ts +15 -15
- package/packages/numeric-zapper/src/ZapperService.tsx +8 -8
- package/packages/numeric-zapper/src/_sizes.1080.scss +7 -7
- package/packages/numeric-zapper/src/_sizes.scss +7 -7
- package/packages/numeric-zapper/src/index.ts +4 -4
- package/packages/numeric-zapper/src/interface.ts +1 -1
- package/packages/numeric-zapper/src/styles.ts +1 -1
- package/packages/perf-utils/README.md +7 -7
- package/packages/perf-utils/src/array/filter.ts +1 -1
- package/packages/perf-utils/src/array/find.ts +1 -1
- package/packages/perf-utils/src/array/findIndex.ts +1 -1
- package/packages/perf-utils/src/array/forEach.ts +1 -1
- package/packages/perf-utils/src/array/includes.ts +1 -1
- package/packages/perf-utils/src/array/includesNaN.ts +1 -1
- package/packages/perf-utils/src/array/index.ts +1 -1
- package/packages/perf-utils/src/array/map.ts +1 -1
- package/packages/picker/README.md +70 -70
- package/packages/picker/src/DatePicker.tsx +55 -55
- package/packages/picker/src/ModalPicker/Checkbox.tsx +38 -38
- package/packages/picker/src/ModalPicker/PickerItem.tsx +86 -86
- package/packages/picker/src/ModalPicker/PickerModal.tsx +98 -98
- package/packages/picker/src/ModalPicker/index.ts +1 -1
- package/packages/picker/src/ModalPicker/modalPicker.tsx +48 -48
- package/packages/picker/src/Picker.tsx +127 -127
- package/packages/picker/src/index.ts +3 -3
- package/packages/picker/src/types.ts +25 -25
- package/packages/pin-input/README.md +55 -55
- package/packages/pin-input/src/PinInput.scss +5 -5
- package/packages/pin-input/src/PinInput.tsx +169 -169
- package/packages/pin-input/src/index.ts +1 -1
- package/packages/player-ui/README.md +207 -207
- package/packages/player-ui/src/BackwardButton.tsx +41 -41
- package/packages/player-ui/src/CurrentTime.tsx +56 -56
- package/packages/player-ui/src/Duration.tsx +60 -60
- package/packages/player-ui/src/ForwardButton.tsx +41 -41
- package/packages/player-ui/src/PauseButton.tsx +65 -65
- package/packages/player-ui/src/PlayButton.tsx +57 -57
- package/packages/player-ui/src/PlayPauseButton.tsx +63 -63
- package/packages/player-ui/src/PlayerInteractable.tsx +67 -67
- package/packages/player-ui/src/PlayerTime.tsx +57 -57
- package/packages/player-ui/src/PlayerUI.tsx +267 -267
- package/packages/player-ui/src/RemainingTime.tsx +74 -74
- package/packages/player-ui/src/Seekbar.tsx +274 -274
- package/packages/player-ui/src/Seeking.ts +163 -163
- package/packages/player-ui/src/StopButton.tsx +35 -35
- package/packages/player-ui/src/Subtitles.tsx +151 -151
- package/packages/player-ui/src/index.ts +15 -15
- package/packages/player-ui/src/mocks.ts +65 -65
- package/packages/player-ui/src/timeUtils.ts +142 -142
- package/packages/player-ui/src/types.ts +48 -48
- package/packages/progress-bar/README.md +31 -31
- package/packages/progress-bar/src/ProgressBar.tsx +41 -41
- package/packages/progress-bar/src/index.ts +1 -1
- package/packages/progress-bar/src/interface.ts +14 -14
- package/packages/qr-code/README.md +79 -79
- package/packages/qr-code/src/QRCode.tsx +39 -39
- package/packages/qr-code/src/index.ts +2 -2
- package/packages/qr-code/src/qrGenerator/__external__/constants.ts +23 -23
- package/packages/qr-code/src/qrGenerator/__external__/qrcode.d.ts +31 -31
- package/packages/qr-code/src/qrGenerator/__external__/qrcode.js +618 -618
- package/packages/qr-code/src/qrGenerator/generateQr.ts +7 -7
- package/packages/qr-code/src/qrGenerator/index.ts +3 -3
- package/packages/router/README.md +163 -163
- package/packages/router/src/Route.tsx +166 -166
- package/packages/router/src/Router.tsx +220 -220
- package/packages/router/src/focusActiveRoute.ts +5 -5
- package/packages/router/src/history.ts +31 -31
- package/packages/router/src/index.ts +6 -6
- package/packages/router/src/types.ts +13 -13
- package/packages/router/src/utils.ts +37 -35
- package/packages/runtime-config/README.md +37 -37
- package/packages/runtime-config/src/Config.ts +44 -44
- package/packages/runtime-config/src/index.ts +1 -1
- package/packages/sass-utils/README.md +197 -197
- package/packages/sass-utils/src/box-shadow.scss +5 -5
- package/packages/sass-utils/src/ellipsis.scss +15 -15
- package/packages/sass-utils/src/linear-gradient.scss +43 -43
- package/packages/sass-utils/src/prefix-property.scss +7 -7
- package/packages/sass-utils/src/prefix-value.scss +6 -6
- package/packages/sass-utils/src/prefix.scss +6 -6
- package/packages/sass-utils/src/scale.1080.scss +3 -3
- package/packages/sass-utils/src/scale.720.scss +5 -5
- package/packages/sass-utils/src/transform.scss +5 -5
- package/packages/sass-utils/src/transition.scss +6 -6
- package/packages/scheduler/README.md +55 -55
- package/packages/scheduler/src/Scheduler.ts +43 -43
- package/packages/scheduler/src/Task.ts +72 -72
- package/packages/scheduler/src/index.ts +4 -4
- package/packages/scheduler/src/timeProvider.ts +3 -3
- package/packages/scroll-text/README.md +77 -77
- package/packages/scroll-text/src/Base.tsx +146 -146
- package/packages/scroll-text/src/ScrollText.animated.tsx +80 -80
- package/packages/scroll-text/src/ScrollText.tsx +53 -53
- package/packages/scroll-text/src/ScrollTextBaseClass.tsx +86 -86
- package/packages/scroll-text/src/index.ts +1 -1
- package/packages/scroller/README.md +77 -77
- package/packages/scroller/src/Scroller.tsx +51 -51
- package/packages/scroller/src/index.ts +1 -1
- package/packages/splash/AnimatedSplash.ts +1 -1
- package/packages/splash/AnimatedSplashAnimated.ts +1 -1
- package/packages/splash/AnimatedSplashBasic.ts +1 -1
- package/packages/splash/AutomaticSplashAnimated.ts +1 -1
- package/packages/splash/AutomaticSplashBasic.ts +1 -1
- package/packages/splash/README.md +93 -93
- package/packages/splash/StaticSplash.ts +1 -1
- package/packages/splash/StaticSplashAnimated.ts +1 -1
- package/packages/splash/StaticSplashBasic.ts +1 -1
- package/packages/splash/src/AnimatedSplash.animated.tsx +78 -78
- package/packages/splash/src/AnimatedSplash.basic.tsx +37 -37
- package/packages/splash/src/AutomaticSplash.animated.tsx +20 -20
- package/packages/splash/src/AutomaticSplash.basic.tsx +20 -20
- package/packages/splash/src/Splash.scss +8 -8
- package/packages/splash/src/StaticSplash.animated.tsx +48 -48
- package/packages/splash/src/StaticSplash.basic.tsx +26 -26
- package/packages/splash/src/index.animated.ts +1 -1
- package/packages/splash/src/index.ts +1 -1
- package/packages/splash/src/styles.ts +1 -1
- package/packages/splash/src/types.ts +20 -20
- package/packages/storage/README.md +61 -61
- package/packages/storage/src/CookieStorage/CookieStorage.ts +57 -57
- package/packages/storage/src/CookieStorage/index.ts +1 -1
- package/packages/storage/src/LocalStorage/LocalStorage.ts +58 -58
- package/packages/storage/src/LocalStorage/index.ts +1 -1
- package/packages/storage/src/index.ts +2 -2
- package/packages/storage/src/shared.ts +41 -41
- package/packages/storage/src/types.ts +33 -33
- package/packages/throbber/README.md +53 -53
- package/packages/throbber/src/Throbber.scss +52 -52
- package/packages/throbber/src/Throbber.tsx +19 -19
- package/packages/throbber/src/ThrobberService.tsx +55 -55
- package/packages/throbber/src/controlsHandling.ts +14 -14
- package/packages/throbber/src/index.ts +2 -2
- package/packages/time/README.md +116 -116
- package/packages/time/src/Time.ts +257 -257
- package/packages/time/src/adapters/24iMediaTimeApi.ts +47 -47
- package/packages/time/src/adapters/worldTimeApi.ts +74 -74
- package/packages/time/src/constants.ts +14 -14
- package/packages/time/src/index.ts +1 -1
- package/packages/time/src/services/24iMediaTimeApi/24iMediaTimeApi.ts +43 -43
- package/packages/time/src/services/24iMediaTimeApi/index.ts +6 -6
- package/packages/time/src/services/worldTimeApi/index.ts +7 -7
- package/packages/time/src/services/worldTimeApi/types.ts +75 -75
- package/packages/time/src/services/worldTimeApi/worldTimeApi.ts +77 -77
- package/packages/time/src/types.ts +39 -39
- package/packages/time/src/utils.ts +79 -79
- package/packages/toast/README.md +116 -116
- package/packages/toast/src/Toast/IVisualController.ts +7 -7
- package/packages/toast/src/Toast/Toast.scss +22 -22
- package/packages/toast/src/Toast/Toast.styles.1080.scss +2 -2
- package/packages/toast/src/Toast/Toast.styles.scss +2 -2
- package/packages/toast/src/Toast/Toast.tsx +83 -83
- package/packages/toast/src/Toast/VisualController.animated.ts +20 -20
- package/packages/toast/src/Toast/VisualController.ts +9 -9
- package/packages/toast/src/Toast/_sizes.1080.scss +8 -8
- package/packages/toast/src/Toast/_sizes.scss +8 -8
- package/packages/toast/src/Toast/index.ts +2 -2
- package/packages/toast/src/Toast/styles.ts +1 -1
- package/packages/toast/src/ToastService.scss +8 -8
- package/packages/toast/src/ToastService.styles.1080.scss +2 -2
- package/packages/toast/src/ToastService.styles.scss +2 -2
- package/packages/toast/src/ToastService.tsx +59 -59
- package/packages/toast/src/_sizes.1080.scss +2 -2
- package/packages/toast/src/_sizes.scss +2 -2
- package/packages/toast/src/index.ts +4 -4
- package/packages/toast/src/types.ts +4 -4
- package/packages/types-bigscreen-jsx/README.md +12 -12
- package/packages/types-bigscreen-jsx/global.d.ts +0 -0
- package/packages/types-bigscreen-jsx/index.d.ts +32 -32
- package/packages/types-bigscreen-jsx/src/copyTypes.js +14 -14
- package/packages/utils/README.md +363 -363
- package/packages/utils/src/addClass.ts +9 -9
- package/packages/utils/src/counter.ts +49 -49
- package/packages/utils/src/debounce.ts +54 -54
- package/packages/utils/src/displayToggler.scss +3 -3
- package/packages/utils/src/displayToggler.ts +38 -38
- package/packages/utils/src/elementUtils.ts +105 -105
- package/packages/utils/src/forceReflow.ts +14 -14
- package/packages/utils/src/generateUuid.ts +19 -19
- package/packages/utils/src/index.ts +43 -43
- package/packages/utils/src/keyPress/index.ts +6 -6
- package/packages/utils/src/keyPress/keyPressSimulator.ts +74 -74
- package/packages/utils/src/keyPress/simulateKeyPress.ts +25 -25
- package/packages/utils/src/memoryInfo.ts +21 -21
- package/packages/utils/src/nTimes.ts +9 -9
- package/packages/utils/src/noop.ts +1 -1
- package/packages/utils/src/offsetPosition.ts +56 -56
- package/packages/utils/src/removeClass.ts +9 -9
- package/packages/utils/src/scaledImage.ts +24 -24
- package/packages/utils/src/sizes.1080.ts +1 -1
- package/packages/utils/src/sizes.ts +1 -1
- package/packages/utils/src/stopEvent.ts +10 -10
- package/packages/utils/src/textUtils.ts +57 -57
- package/packages/utils/src/timeConstants.ts +11 -11
- package/packages/utils/src/timers/createInterval.ts +19 -19
- package/packages/utils/src/timers/createTimeout.ts +22 -22
- package/packages/utils/src/timers/index.ts +4 -4
- package/packages/utils/src/timers/runAsync.ts +3 -3
- package/packages/utils/src/timers/types.ts +9 -9
- package/packages/utils/src/wait.ts +3 -3
- package/packages/utils/src/xhr/__mocks__/xhr.ts +29 -29
- package/packages/utils/src/xhr/index.ts +11 -11
- package/packages/utils/src/xhr/xhrSend.ts +141 -141
- package/packages/utils/src/xhr/xhrSendRetry.ts +79 -79
- package/packages/volume-control/README.md +79 -79
- package/packages/volume-control/src/IVolumeControlUI.ts +26 -26
- package/packages/volume-control/src/VolumeControlService.tsx +110 -110
- package/packages/volume-control/src/VolumeControlUI/VisualController.animated.ts +28 -28
- package/packages/volume-control/src/VolumeControlUI/VisualController.ts +3 -3
- package/packages/volume-control/src/VolumeControlUI/VisualControllerBase.ts +26 -26
- package/packages/volume-control/src/VolumeControlUI/VolumeControl.scss +18 -18
- package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.animated.scss +2 -2
- package/packages/volume-control/src/VolumeControlUI/VolumeControl.styles.scss +1 -1
- package/packages/volume-control/src/VolumeControlUI/VolumeControlUI.tsx +80 -80
- package/packages/volume-control/src/VolumeControlUI/_animated.scss +8 -8
- package/packages/volume-control/src/VolumeControlUI/index.ts +1 -1
- package/packages/volume-control/src/__mocks__/VolumeControlUIMock.tsx +22 -22
- package/packages/volume-control/src/index.ts +2 -2
- package/packages/zapping/README.md +87 -87
- package/packages/zapping/src/ChannelZapping.ts +143 -143
- package/packages/zapping/src/Zapping.tsx +115 -115
- package/packages/zapping/src/index.ts +1 -1
- package/packages/zapping/src/interface.ts +1 -1
- package/utils/create-export-maps/index.ts +3 -3
- package/utils/create-export-maps/src/__tests__/createExportMaps.spec.ts +50 -50
- package/utils/create-export-maps/src/createExportMaps.ts +61 -61
- package/utils/create-package/README.md +39 -39
- package/utils/create-package/src/createPackage.ts +72 -72
- package/utils/create-package/src/index.ts +3 -3
- package/utils/create-package/src/questionnaire/questions.ts +19 -19
- package/utils/create-package/src/settings/Settings.ts +5 -5
- package/utils/create-package/src/types.ts +4 -4
- package/utils/create-package/templates/typescript/README.md +8 -8
- package/utils/create-package/templates/typescript/exports.json +6 -6
- package/utils/run-scripts/index.ts +3 -3
- package/utils/run-scripts/src/__tests__/runScripts.spec.ts +45 -45
- package/utils/run-scripts/src/runScripts.ts +20 -20
package/packages/i18n/README.md
CHANGED
|
@@ -1,460 +1,460 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: README
|
|
3
|
-
title: i18n
|
|
4
|
-
hide_title: true
|
|
5
|
-
sidebar_label: i18n
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# i18n
|
|
9
|
-
Internationalization for SmartApps BIGscreens is written with i18n used on SmartApps in mind.
|
|
10
|
-
This means that it can use the same resources as their SmartApps counterparts.
|
|
11
|
-
References:
|
|
12
|
-
- [i18next](https://www.i18next.com/translation-function/essentials)
|
|
13
|
-
- [smartapps i18n](https://github.com/24i/prd-nxg-sdk-ui/tree/develop/packages/sdk%40quarks/src/i18n)
|
|
14
|
-
|
|
15
|
-
It is based on i18next interface (smartapps uses i18next directly under the hood). But since the i18next
|
|
16
|
-
is a very large library and not all its features are utilized, the smartapps-bigscreen version
|
|
17
|
-
is code and feature split for smaller bundle size and better performance.
|
|
18
|
-
|
|
19
|
-
## Usage
|
|
20
|
-
|
|
21
|
-
### Initialization
|
|
22
|
-
```ts
|
|
23
|
-
import { i18n } from '@24i/bigscreen-sdk/i18n';
|
|
24
|
-
import { en } from '../i18n/en';
|
|
25
|
-
import { de } from '../i18n/de';
|
|
26
|
-
|
|
27
|
-
const DICTIONARY = { en, de };
|
|
28
|
-
|
|
29
|
-
i18n.init({
|
|
30
|
-
resources: DICTIONARY, // i18next format of resources, optional
|
|
31
|
-
lng: 'cs', // default language, mandatory, should be ISO 639-1 to have plurals working correctly
|
|
32
|
-
fallbackLng: 'en', // fallback language if default not found, optional, defaults to 'en'
|
|
33
|
-
defaultNS: 'common', // default NS in resources, optional, defaults to 'translation'
|
|
34
|
-
keySeparator: '_', // default key separator, optional, defaults to '.'
|
|
35
|
-
nsSeparator: '|', // default ns separator, optional, defaults to ':'
|
|
36
|
-
});
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
### Translating
|
|
40
|
-
```tsx
|
|
41
|
-
import { t } from '@24i/bigscreen-sdk/i18n';
|
|
42
|
-
|
|
43
|
-
const FetchError = ({ errorCode }) => (
|
|
44
|
-
<div className="error">
|
|
45
|
-
{t([`errors:server.${errorCode}`, 'errors:server.unknown'])}
|
|
46
|
-
</div>
|
|
47
|
-
);
|
|
48
|
-
```
|
|
49
|
-
`t` is a function that under the hood returns a component. It takes two parameters:
|
|
50
|
-
- `key: string | string[]` - translation key or an array of translation keys
|
|
51
|
-
- `options: TranslationOptions | string` - options for a single translation or a default value.
|
|
52
|
-
|
|
53
|
-
When the language changes it should update the translation automatically.
|
|
54
|
-
|
|
55
|
-
### Typed translation functions
|
|
56
|
-
If you want to have more security, you can try using typed translation functions:
|
|
57
|
-
- `getTypedT` - for typed `t` function for use in JSX
|
|
58
|
-
- `getTypedI18nT` - for typed `i18n.t` function for getting simple string
|
|
59
|
-
|
|
60
|
-
#### Usage
|
|
61
|
-
```ts
|
|
62
|
-
// For global functions
|
|
63
|
-
import { getTypedT, getTypedI18nT } from '@24i/bigscreen-sdk/i18n';
|
|
64
|
-
import { en } from './dictionaries/en';
|
|
65
|
-
|
|
66
|
-
export const t = getTypedT<typeof en>();
|
|
67
|
-
export const i18nT = getTypedT<typeof en>();
|
|
68
|
-
|
|
69
|
-
// Namespaced in components for example
|
|
70
|
-
import { getTypedT } from '@24i/bigscreen-sdk/i18n';
|
|
71
|
-
import { en } from '../../i18n/dictionaries/en';
|
|
72
|
-
|
|
73
|
-
const t = getTypedT<typeof en['components']['epg']>('components.epg.');
|
|
74
|
-
```
|
|
75
|
-
Try it at: [https://tsplay.dev/Nd4VdN](https://tsplay.dev/Nd4VdN)
|
|
76
|
-
|
|
77
|
-
### Text direction
|
|
78
|
-
```tsx
|
|
79
|
-
import { isRtl } from '@24i/bigscreen-sdk/i18n';
|
|
80
|
-
|
|
81
|
-
const offset = isRtl() ? -100 : 100;
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Translation Key
|
|
85
|
-
Translation key is a string in the format: `namespace:path.to.key`.
|
|
86
|
-
- namespace - optional, overrides `defaultNS` setting, has higher priority than `ns` in options
|
|
87
|
-
- path - optional, path in resources to find the key
|
|
88
|
-
- key - name of the key in the path to choose the translation
|
|
89
|
-
|
|
90
|
-
If no translation is found, the full-length translation key (including namespace and path) will be
|
|
91
|
-
returned instead.
|
|
92
|
-
|
|
93
|
-
If you use an array of translation keys, the first found translation will be used. If none of them is found,
|
|
94
|
-
the last key in its full length will be returned.
|
|
95
|
-
|
|
96
|
-
### Translation Options
|
|
97
|
-
Translation Options is an object that can change the behaviour of the translating. Supported:
|
|
98
|
-
- `lng: string` - set language to use
|
|
99
|
-
- `defaultValue?: string` - default value to use
|
|
100
|
-
- `fallbackLng?: string` - override i18n fallback language
|
|
101
|
-
- `ns?: string` - override namespace (ns in key has higher priority)
|
|
102
|
-
- `keySeparator?: string` - change key separator
|
|
103
|
-
- `nsSeparator?: string` - change ns separator
|
|
104
|
-
- `middlewares?: MiddlewareSetup[]` - list of middlewares to be used with this translation
|
|
105
|
-
|
|
106
|
-
## addResourceBundle
|
|
107
|
-
This utility allows you to dynamically add new resources. It is useful if you download resources from the API.
|
|
108
|
-
If you want to add more languages/namespace, you will have to call `addResourceBundle` for each language/namespace.
|
|
109
|
-
```ts
|
|
110
|
-
import { addResourceBundle } from '@24i/bigscreen-sdk/i18n/utils/addResourceBundle';
|
|
111
|
-
|
|
112
|
-
addResourceBundle(
|
|
113
|
-
language: string, // language of the bundle
|
|
114
|
-
namespace: string, // namespace of the bundle
|
|
115
|
-
resources: NamespaceResource, // dictionary of the given namespace
|
|
116
|
-
deep: boolean = false, // If set to true will deeply add/replace current dictionary, false will overwrite it at the root level
|
|
117
|
-
overwrite: boolean = false, // If deep set to true, this sets whether you only add (false) or also replace existing (true) translations
|
|
118
|
-
) => void;
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
## i18n interface
|
|
122
|
-
- `init(options: InitOptions) => void` - see [Initialization](#Initialization)
|
|
123
|
-
- `t(translationKey: string | string[], options?: TranslationOptions | string) => string` - translating function
|
|
124
|
-
- `getLanguage() => string` - returns current language
|
|
125
|
-
- `getLanguages() => string[]` - returns all languages found in resources
|
|
126
|
-
- `setLanguage(language: string) => void` - sets the current language
|
|
127
|
-
- `middleware(...middlewares: MiddlewareSetup[]) => void` - see [Middlewares](#Middlewares)
|
|
128
|
-
- `addEventListener(event: 'languagechange', listener: () => void) => void` - adding a listener on language change
|
|
129
|
-
- `removeEventListener(event: 'languagechange', listener: () => void) => void` - removing a listener on language change
|
|
130
|
-
- `getResources() => Resources` - returns a complete dictionary currently in use
|
|
131
|
-
- `setResources(resources: Resources) => void` - sets complete dictionary (equivalent of resources field in init)
|
|
132
|
-
- `dir(language: string = currentLanguage) => 'ltr' | 'rtl'` - returns direction of the language
|
|
133
|
-
|
|
134
|
-
## Middlewares
|
|
135
|
-
There are two types of middlewares supported. One are more legacy compatible with i18next translation formats.
|
|
136
|
-
I18next was the utility and format that got used in early days of NextGen (former name for SmartApps).
|
|
137
|
-
Nowadays the translation format has been changed to Unicode ICU and unified across all platforms.
|
|
138
|
-
If you start new project, it is recommended to use ICU format to make it compatible with other platforms more
|
|
139
|
-
easily.
|
|
140
|
-
|
|
141
|
-
## Middlewares - ICU
|
|
142
|
-
All the middlewares you need for your project need to be enabled together with init or during the translation.
|
|
143
|
-
They are separated to reduce the size of the bundle and to increase the performance.
|
|
144
|
-
|
|
145
|
-
They all come with a performance hit:
|
|
146
|
-
- *Interpolation* - <b style="color: #fb0;">MEDIUM</b>
|
|
147
|
-
- *DateInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
|
|
148
|
-
- *TimeInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
|
|
149
|
-
- *NumberInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
|
|
150
|
-
- *Plurals* - <b style="color: #f00;">HIGH</b>
|
|
151
|
-
- *Select* - <b style="color: #f00;">HIGH</b>
|
|
152
|
-
|
|
153
|
-
```tsx
|
|
154
|
-
import { i18n } from '@24i/bigscreen-sdk/i18n';
|
|
155
|
-
import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Interpolation';
|
|
156
|
-
import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Plurals';
|
|
157
|
-
import { Select } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Select';
|
|
158
|
-
|
|
159
|
-
i18n.init(/* ... */);
|
|
160
|
-
/**
|
|
161
|
-
* Because middlewares come with a performance impact you have two options:
|
|
162
|
-
* 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
|
|
163
|
-
* 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
|
|
164
|
-
*/
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Option 1 - the order of middlewares is not important
|
|
168
|
-
*/
|
|
169
|
-
i18n.middleware(Interpolation, Plurals, Select);
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Option 2 - used with t function inside JSX, the order is not important
|
|
173
|
-
*/
|
|
174
|
-
<h1>
|
|
175
|
-
{
|
|
176
|
-
t('friend', {
|
|
177
|
-
name: user.name,
|
|
178
|
-
gender: user.gender,
|
|
179
|
-
friendsCount: 2,
|
|
180
|
-
middlewares: [Interpolation, Select, Plurals],
|
|
181
|
-
})
|
|
182
|
-
}
|
|
183
|
-
</h1>
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### Interpolation - ICU
|
|
187
|
-
Interpolation allows you to pass variable into translation.
|
|
188
|
-
|
|
189
|
-
#### Usage
|
|
190
|
-
```ts
|
|
191
|
-
resource = { introduction: 'Hello, {name}!' };
|
|
192
|
-
i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### DateInterpolation - ICU
|
|
196
|
-
Allows you to format a variable date into translation.
|
|
197
|
-
|
|
198
|
-
#### Options
|
|
199
|
-
```
|
|
200
|
-
{nameOfKeyInOptions, date, dateFormat}
|
|
201
|
-
```
|
|
202
|
-
- `nameOfKeyInOptions` - name of variable that you pass
|
|
203
|
-
- `date` - identifier of DateInterpolation (fixed value)
|
|
204
|
-
- `dateFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `dMy`):
|
|
205
|
-
- - `y` - for using numeric year
|
|
206
|
-
- - `M` - for using 2-digit month
|
|
207
|
-
- - `L` - for using long month name
|
|
208
|
-
- - `d` - for using 2-digit day
|
|
209
|
-
- - `e` - for using long weekday name
|
|
210
|
-
|
|
211
|
-
#### Usage
|
|
212
|
-
```ts
|
|
213
|
-
resource = { today: 'Today is, {dateToDisplay, date, full}' };
|
|
214
|
-
i18n.t('today', { dateToDisplay: new Date('2021-09-23') }); // --> 'Today is, Thursday 23 September 2021'
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
### TimeInterpolation - ICU
|
|
218
|
-
Allows you to format a variable time into translation.
|
|
219
|
-
|
|
220
|
-
#### Options
|
|
221
|
-
```
|
|
222
|
-
{nameOfKeyInOptions, time, timeFormat}
|
|
223
|
-
```
|
|
224
|
-
- `nameOfKeyInOptions` - name of variable that you pass
|
|
225
|
-
- `time` - identifier of TimeInterpolation (fixed value)
|
|
226
|
-
- `timeFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `hm`):
|
|
227
|
-
- - `h` - for using numeric hour
|
|
228
|
-
- - `H` - for using 2-digit hour
|
|
229
|
-
- - `k` - for using numeric hour
|
|
230
|
-
- - `K` - for using 2-digit hour
|
|
231
|
-
- - `m` - for using 2-digit minute
|
|
232
|
-
- - `s` - for using 2-digit second
|
|
233
|
-
|
|
234
|
-
#### Usage
|
|
235
|
-
```ts
|
|
236
|
-
resource = { now: 'Now is, {timeToDisplay, time, short}' };
|
|
237
|
-
i18n.t('now', { timeToDisplay: new Date('2021-09-23T09:45') }); // --> 'Now is, 9:45'
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
### NumberInterpolation - ICU
|
|
241
|
-
Allows you to format a variable number into translation.
|
|
242
|
-
|
|
243
|
-
<b style="color: #f00;">!IMPORTANT!</b> Formatting is not yet supported. If you need support, please,
|
|
244
|
-
implement it in l10n package.
|
|
245
|
-
It is better to use basic Interpolation instead as it might be faster. This is kept for minimal compatibility.
|
|
246
|
-
|
|
247
|
-
#### Options
|
|
248
|
-
```
|
|
249
|
-
{myNumber, number, ::formatting-options}
|
|
250
|
-
```
|
|
251
|
-
- `myNumber` - name of variable that you pass
|
|
252
|
-
- `number` - identifier of NumberInterpolation (fixed value)
|
|
253
|
-
- `format` - refer to [ICU spec](https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html)
|
|
254
|
-
|
|
255
|
-
#### Usage
|
|
256
|
-
Limited to just number passing without any format.
|
|
257
|
-
```ts
|
|
258
|
-
resource = { moneyTotal: 'In total, you need to pay {sum, number, ::currency/USD}.' };
|
|
259
|
-
i18n.t('moneyTotal', { sum: 99 }); // --> 'In total, you need to pay 99.'
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
### Plurals - ICU
|
|
263
|
-
Plurals make it possible to support different translations based on the count.
|
|
264
|
-
|
|
265
|
-
#### Options
|
|
266
|
-
```
|
|
267
|
-
{count, plural, offset:1, =0 {Nothing} few {Few things} other {# things}}
|
|
268
|
-
```
|
|
269
|
-
- `count` - name of variable you pass
|
|
270
|
-
- `plural` - identifier of Plurals (fixed value)
|
|
271
|
-
- `offset:1` - optional offset for worded amount and `#` replacement
|
|
272
|
-
- cases in format `count {translation}`
|
|
273
|
-
- - `=0` - or any other number for concrete amount
|
|
274
|
-
- - `zero` - for languages that have special grammar for zero
|
|
275
|
-
- - `one` - for languages that have special grammar for one
|
|
276
|
-
- - `two` - for languages that have special grammar for two
|
|
277
|
-
- - `few` - for languages that have special grammar for few items (e.g. czech for 2-4)
|
|
278
|
-
- - `many` - for languages that have special grammar for many items
|
|
279
|
-
- - `other` - required value for other cases
|
|
280
|
-
|
|
281
|
-
#### Usage
|
|
282
|
-
```ts
|
|
283
|
-
resource = {
|
|
284
|
-
simple: 'I have {numCats, plural, =0 {no cat} =1 {a cat} other {# cats}}.',
|
|
285
|
-
complex: 'I invited {count, plural, offset:1, =0 {no one} =1 {{name}} =2 {{name} and someone else} other {{name} and # more people}}.',
|
|
286
|
-
};
|
|
287
|
-
i18n.t('simple', { numCats: 4 }); // --> I have 4 cats.
|
|
288
|
-
i18n.t('complex', { count: 5, name: 'Lucy' }); // --> I invited Lucy and 4 more people.
|
|
289
|
-
```
|
|
290
|
-
|
|
291
|
-
### Select - ICU
|
|
292
|
-
Select makes it possible to provide different translations based on variable (e.g. gender).
|
|
293
|
-
|
|
294
|
-
#### Options
|
|
295
|
-
```
|
|
296
|
-
{variableName, select, case1 {translation1} case2 {translation2} other {translation3}}
|
|
297
|
-
```
|
|
298
|
-
- `variableName` - name of variable you pass
|
|
299
|
-
- `select` - identifier of Select (fixed value)
|
|
300
|
-
- cases in format `caseName {translation}` - `other` is required
|
|
301
|
-
|
|
302
|
-
#### Usage
|
|
303
|
-
```ts
|
|
304
|
-
resource = { arrived: '{gender, select, male {He} female {She} other {They}} arrived.' };
|
|
305
|
-
i18n.t('arrived', { gender: 'female' }); // --> She arrived.
|
|
306
|
-
```
|
|
307
|
-
|
|
308
|
-
### ICU - Complex examples
|
|
309
|
-
Translation needs to be written in top-down: 'Select', 'Plurals', 'Interpolations'.
|
|
310
|
-
```ts
|
|
311
|
-
const resource = {
|
|
312
|
-
example: [
|
|
313
|
-
'{gender_of_host, select, ',
|
|
314
|
-
'female {',
|
|
315
|
-
'{num_guests, plural, offset:1, ',
|
|
316
|
-
'=0 {{host} does not give a party.}',
|
|
317
|
-
'=1 {{host} invites {guest} to her party.}',
|
|
318
|
-
'=2 {{host} invites {guest} and one other person to her party.}',
|
|
319
|
-
'other {{host} invites {guest} and # other people to her party.}}}',
|
|
320
|
-
'male {',
|
|
321
|
-
'{num_guests, plural, offset:1, ',
|
|
322
|
-
'=0 {{host} does not give a party.}',
|
|
323
|
-
'=1 {{host} invites {guest} to his party.}',
|
|
324
|
-
'=2 {{host} invites {guest} and one other person to his party.}',
|
|
325
|
-
'other {{host} invites {guest} and # other people to his party.}}}',
|
|
326
|
-
'other {',
|
|
327
|
-
'{num_guests, plural, offset:1, ',
|
|
328
|
-
'=0 {{host} does not give a party.}',
|
|
329
|
-
'=1 {{host} invites {guest} to their party.}',
|
|
330
|
-
'=2 {{host} invites {guest} and one other person to their party.}',
|
|
331
|
-
'other {{host} invites {guest} and # other people to their party.}}}}',
|
|
332
|
-
].join(''),
|
|
333
|
-
};
|
|
334
|
-
i18n.t('example', { gender_of_host: 'robot', host: 'Bastion', num_guests: 5, guest: 'Reinhardt' });
|
|
335
|
-
// --> Bastion invites Reinhardt and 4 other people to their party.
|
|
336
|
-
```
|
|
337
|
-
|
|
338
|
-
## Middlewares - i18next
|
|
339
|
-
All the middlewares you need for your project need to enabled together with init or during the translation.
|
|
340
|
-
They are separated to reduce the size of the bundle and to increase the performance.
|
|
341
|
-
|
|
342
|
-
They all come with a performance hit:
|
|
343
|
-
- *Interpolation* - <b style="color: #f80;">MEDIUM</b>
|
|
344
|
-
- *Plurals* - <b style="color: #f00;">HIGH</b>
|
|
345
|
-
- *Nesting* - <b style="color: #ff0;">LOW-MEDIUM</b> for simple keys, but higher if combined with interpolation or plurals
|
|
346
|
-
- *Context* - <b style="color: #0f0;">LOW</b> for simple keys, but higher if combined with interpolation or plurals
|
|
347
|
-
|
|
348
|
-
```tsx
|
|
349
|
-
import { i18n } from '@24i/bigscreen-sdk/i18n';
|
|
350
|
-
import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Interpolation';
|
|
351
|
-
import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Plurals';
|
|
352
|
-
import { Nesting } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Nesting';
|
|
353
|
-
import { Context } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Context';
|
|
354
|
-
|
|
355
|
-
i18n.init(/* ... */);
|
|
356
|
-
/**
|
|
357
|
-
* Because middlewares come with a performance impact you have two options:
|
|
358
|
-
* 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
|
|
359
|
-
* 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
|
|
360
|
-
*/
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* Option 1 - the order of middlewares is not important
|
|
364
|
-
*/
|
|
365
|
-
i18n.middleware(Interpolation, Plurals, Nesting, Context);
|
|
366
|
-
|
|
367
|
-
/**
|
|
368
|
-
* Option 2 - used with t function inside JSX, the order is not important
|
|
369
|
-
*/
|
|
370
|
-
<h1>{t('friend', { context: friend.gender, middlewares: [Interpolation, Context, Plurals] })}</h1>
|
|
371
|
-
```
|
|
372
|
-
|
|
373
|
-
### Interpolation - i18next
|
|
374
|
-
Interpolation allows you to replace parts of the translation.
|
|
375
|
-
#### Options
|
|
376
|
-
- `format(value: any, valueFormat: string) => string` - optional, formats the value before replacement
|
|
377
|
-
- `formatSeparator: string` - optional, sets the separator char(s), defaults to `,`
|
|
378
|
-
- `prefix: string` - optional, sets custom prefix to separate values for interpolation, defaults to `{{`
|
|
379
|
-
- `suffix: string` - optional, sets custom suffix to separate values for interpolation, defaults to `}}`
|
|
380
|
-
#### Usage
|
|
381
|
-
```ts
|
|
382
|
-
// simple
|
|
383
|
-
resource = { introduction: 'Hello, {{name}}!' };
|
|
384
|
-
i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
|
|
385
|
-
|
|
386
|
-
// from object
|
|
387
|
-
resource = { introduction: 'Hello, {{user.names.first}}!' };
|
|
388
|
-
i18n.t('introduction', { user: { names: { first: 'Petr' } } }); // --> 'Hello, Petr!'
|
|
389
|
-
|
|
390
|
-
// format
|
|
391
|
-
resource = { shout: '{{topic, lowercase}}! {{topic}}!! {{topic, uppercase}}!!!' };
|
|
392
|
-
i18n.t('shout', { topic: 'SmartApps', interpolation: { format: (value: string, format: string) => {
|
|
393
|
-
if (format === 'uppercase') return value.toUpperCase();
|
|
394
|
-
if (format === 'lowercase') return value.toLowerCase();
|
|
395
|
-
return value;
|
|
396
|
-
} } }); // --> 'smartapps! SmartApps!! SMARTAPPS!!!'
|
|
397
|
-
```
|
|
398
|
-
|
|
399
|
-
### Plurals - i18next
|
|
400
|
-
Plurals allows you to automatically choose correct translation based on the `count` option.
|
|
401
|
-
It supports basic plurals (`[[key]]_plural`), form plurals (`[[key]]_1`) and intervals.
|
|
402
|
-
Form plurals are supported for all languages.
|
|
403
|
-
See [http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms](http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms)
|
|
404
|
-
for the rules and forms for each language.
|
|
405
|
-
#### Usage
|
|
406
|
-
```ts
|
|
407
|
-
// basic
|
|
408
|
-
resource = {
|
|
409
|
-
item: 'Item',
|
|
410
|
-
item_plural: 'Items',
|
|
411
|
-
};
|
|
412
|
-
i18n.t('item'); // --> 'Item'
|
|
413
|
-
i18n.t('item', { count: 1 }); // --> 'Item'
|
|
414
|
-
i18n.t('item', { count: 2 }); // --> 'Items'
|
|
415
|
-
|
|
416
|
-
// form
|
|
417
|
-
resource = { // CS
|
|
418
|
-
'item': 'Polozka',
|
|
419
|
-
'item_1': 'Polozky',
|
|
420
|
-
'item_2': 'Polozek',
|
|
421
|
-
};
|
|
422
|
-
i18n.t('item'); // --> 'Polozka'
|
|
423
|
-
i18n.t('item', { count: 3 }); // --> 'Polozky'
|
|
424
|
-
i18n.t('item', { count: 5 }); // --> 'Polozek'
|
|
425
|
-
i18n.t('item', { count: 0 }); // --> 'Polozek'
|
|
426
|
-
|
|
427
|
-
// interval
|
|
428
|
-
resource = {
|
|
429
|
-
'item': 'Item',
|
|
430
|
-
'item_interval': '(1){One item};(2-5){Two to five items};(6-inf){More than 5 items};';
|
|
431
|
-
};
|
|
432
|
-
i18n.t('item'); // --> 'Item'
|
|
433
|
-
i18n.t('item', { count: 1 }); // --> 'One item'
|
|
434
|
-
i18n.t('item', { count: 3 }); // --> 'Two to five items'
|
|
435
|
-
i18n.t('item', { count: 8 }); // --> 'More than 5 items'
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
### Nesting - i18next
|
|
439
|
-
Nesting allows you to place a translation key into a translation value and have it translated.
|
|
440
|
-
#### Usage
|
|
441
|
-
```ts
|
|
442
|
-
resource = {
|
|
443
|
-
welcome: 'Welcome, {{name}}!',
|
|
444
|
-
introduction: '$t(welcome) I am your i18n module',
|
|
445
|
-
};
|
|
446
|
-
i18n.t('introduction', { name: 'Radim' }); // --> 'Welcome, Radim! I am your i18n module.'
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
### Context - i18next
|
|
450
|
-
Context middleware allows you to have one translation in multiple contexts. Useful for gender for example.
|
|
451
|
-
```ts
|
|
452
|
-
resource = {
|
|
453
|
-
friend: 'A friend',
|
|
454
|
-
friend_male: 'A boyfriend',
|
|
455
|
-
friend_female: 'A girlfriend',
|
|
456
|
-
};
|
|
457
|
-
i18n.t('friend'); // --> 'A friend'
|
|
458
|
-
i18n.t('friend', { context: 'male' }); // --> 'A boyfriend'
|
|
459
|
-
i18n.t('friend', { context: 'female' }); // --> 'A girlfriend'
|
|
460
|
-
```
|
|
1
|
+
---
|
|
2
|
+
id: README
|
|
3
|
+
title: i18n
|
|
4
|
+
hide_title: true
|
|
5
|
+
sidebar_label: i18n
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# i18n
|
|
9
|
+
Internationalization for SmartApps BIGscreens is written with i18n used on SmartApps in mind.
|
|
10
|
+
This means that it can use the same resources as their SmartApps counterparts.
|
|
11
|
+
References:
|
|
12
|
+
- [i18next](https://www.i18next.com/translation-function/essentials)
|
|
13
|
+
- [smartapps i18n](https://github.com/24i/prd-nxg-sdk-ui/tree/develop/packages/sdk%40quarks/src/i18n)
|
|
14
|
+
|
|
15
|
+
It is based on i18next interface (smartapps uses i18next directly under the hood). But since the i18next
|
|
16
|
+
is a very large library and not all its features are utilized, the smartapps-bigscreen version
|
|
17
|
+
is code and feature split for smaller bundle size and better performance.
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### Initialization
|
|
22
|
+
```ts
|
|
23
|
+
import { i18n } from '@24i/bigscreen-sdk/i18n';
|
|
24
|
+
import { en } from '../i18n/en';
|
|
25
|
+
import { de } from '../i18n/de';
|
|
26
|
+
|
|
27
|
+
const DICTIONARY = { en, de };
|
|
28
|
+
|
|
29
|
+
i18n.init({
|
|
30
|
+
resources: DICTIONARY, // i18next format of resources, optional
|
|
31
|
+
lng: 'cs', // default language, mandatory, should be ISO 639-1 to have plurals working correctly
|
|
32
|
+
fallbackLng: 'en', // fallback language if default not found, optional, defaults to 'en'
|
|
33
|
+
defaultNS: 'common', // default NS in resources, optional, defaults to 'translation'
|
|
34
|
+
keySeparator: '_', // default key separator, optional, defaults to '.'
|
|
35
|
+
nsSeparator: '|', // default ns separator, optional, defaults to ':'
|
|
36
|
+
});
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Translating
|
|
40
|
+
```tsx
|
|
41
|
+
import { t } from '@24i/bigscreen-sdk/i18n';
|
|
42
|
+
|
|
43
|
+
const FetchError = ({ errorCode }) => (
|
|
44
|
+
<div className="error">
|
|
45
|
+
{t([`errors:server.${errorCode}`, 'errors:server.unknown'])}
|
|
46
|
+
</div>
|
|
47
|
+
);
|
|
48
|
+
```
|
|
49
|
+
`t` is a function that under the hood returns a component. It takes two parameters:
|
|
50
|
+
- `key: string | string[]` - translation key or an array of translation keys
|
|
51
|
+
- `options: TranslationOptions | string` - options for a single translation or a default value.
|
|
52
|
+
|
|
53
|
+
When the language changes it should update the translation automatically.
|
|
54
|
+
|
|
55
|
+
### Typed translation functions
|
|
56
|
+
If you want to have more security, you can try using typed translation functions:
|
|
57
|
+
- `getTypedT` - for typed `t` function for use in JSX
|
|
58
|
+
- `getTypedI18nT` - for typed `i18n.t` function for getting simple string
|
|
59
|
+
|
|
60
|
+
#### Usage
|
|
61
|
+
```ts
|
|
62
|
+
// For global functions
|
|
63
|
+
import { getTypedT, getTypedI18nT } from '@24i/bigscreen-sdk/i18n';
|
|
64
|
+
import { en } from './dictionaries/en';
|
|
65
|
+
|
|
66
|
+
export const t = getTypedT<typeof en>();
|
|
67
|
+
export const i18nT = getTypedT<typeof en>();
|
|
68
|
+
|
|
69
|
+
// Namespaced in components for example
|
|
70
|
+
import { getTypedT } from '@24i/bigscreen-sdk/i18n';
|
|
71
|
+
import { en } from '../../i18n/dictionaries/en';
|
|
72
|
+
|
|
73
|
+
const t = getTypedT<typeof en['components']['epg']>('components.epg.');
|
|
74
|
+
```
|
|
75
|
+
Try it at: [https://tsplay.dev/Nd4VdN](https://tsplay.dev/Nd4VdN)
|
|
76
|
+
|
|
77
|
+
### Text direction
|
|
78
|
+
```tsx
|
|
79
|
+
import { isRtl } from '@24i/bigscreen-sdk/i18n';
|
|
80
|
+
|
|
81
|
+
const offset = isRtl() ? -100 : 100;
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### Translation Key
|
|
85
|
+
Translation key is a string in the format: `namespace:path.to.key`.
|
|
86
|
+
- namespace - optional, overrides `defaultNS` setting, has higher priority than `ns` in options
|
|
87
|
+
- path - optional, path in resources to find the key
|
|
88
|
+
- key - name of the key in the path to choose the translation
|
|
89
|
+
|
|
90
|
+
If no translation is found, the full-length translation key (including namespace and path) will be
|
|
91
|
+
returned instead.
|
|
92
|
+
|
|
93
|
+
If you use an array of translation keys, the first found translation will be used. If none of them is found,
|
|
94
|
+
the last key in its full length will be returned.
|
|
95
|
+
|
|
96
|
+
### Translation Options
|
|
97
|
+
Translation Options is an object that can change the behaviour of the translating. Supported:
|
|
98
|
+
- `lng: string` - set language to use
|
|
99
|
+
- `defaultValue?: string` - default value to use
|
|
100
|
+
- `fallbackLng?: string` - override i18n fallback language
|
|
101
|
+
- `ns?: string` - override namespace (ns in key has higher priority)
|
|
102
|
+
- `keySeparator?: string` - change key separator
|
|
103
|
+
- `nsSeparator?: string` - change ns separator
|
|
104
|
+
- `middlewares?: MiddlewareSetup[]` - list of middlewares to be used with this translation
|
|
105
|
+
|
|
106
|
+
## addResourceBundle
|
|
107
|
+
This utility allows you to dynamically add new resources. It is useful if you download resources from the API.
|
|
108
|
+
If you want to add more languages/namespace, you will have to call `addResourceBundle` for each language/namespace.
|
|
109
|
+
```ts
|
|
110
|
+
import { addResourceBundle } from '@24i/bigscreen-sdk/i18n/utils/addResourceBundle';
|
|
111
|
+
|
|
112
|
+
addResourceBundle(
|
|
113
|
+
language: string, // language of the bundle
|
|
114
|
+
namespace: string, // namespace of the bundle
|
|
115
|
+
resources: NamespaceResource, // dictionary of the given namespace
|
|
116
|
+
deep: boolean = false, // If set to true will deeply add/replace current dictionary, false will overwrite it at the root level
|
|
117
|
+
overwrite: boolean = false, // If deep set to true, this sets whether you only add (false) or also replace existing (true) translations
|
|
118
|
+
) => void;
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## i18n interface
|
|
122
|
+
- `init(options: InitOptions) => void` - see [Initialization](#Initialization)
|
|
123
|
+
- `t(translationKey: string | string[], options?: TranslationOptions | string) => string` - translating function
|
|
124
|
+
- `getLanguage() => string` - returns current language
|
|
125
|
+
- `getLanguages() => string[]` - returns all languages found in resources
|
|
126
|
+
- `setLanguage(language: string) => void` - sets the current language
|
|
127
|
+
- `middleware(...middlewares: MiddlewareSetup[]) => void` - see [Middlewares](#Middlewares)
|
|
128
|
+
- `addEventListener(event: 'languagechange', listener: () => void) => void` - adding a listener on language change
|
|
129
|
+
- `removeEventListener(event: 'languagechange', listener: () => void) => void` - removing a listener on language change
|
|
130
|
+
- `getResources() => Resources` - returns a complete dictionary currently in use
|
|
131
|
+
- `setResources(resources: Resources) => void` - sets complete dictionary (equivalent of resources field in init)
|
|
132
|
+
- `dir(language: string = currentLanguage) => 'ltr' | 'rtl'` - returns direction of the language
|
|
133
|
+
|
|
134
|
+
## Middlewares
|
|
135
|
+
There are two types of middlewares supported. One are more legacy compatible with i18next translation formats.
|
|
136
|
+
I18next was the utility and format that got used in early days of NextGen (former name for SmartApps).
|
|
137
|
+
Nowadays the translation format has been changed to Unicode ICU and unified across all platforms.
|
|
138
|
+
If you start new project, it is recommended to use ICU format to make it compatible with other platforms more
|
|
139
|
+
easily.
|
|
140
|
+
|
|
141
|
+
## Middlewares - ICU
|
|
142
|
+
All the middlewares you need for your project need to be enabled together with init or during the translation.
|
|
143
|
+
They are separated to reduce the size of the bundle and to increase the performance.
|
|
144
|
+
|
|
145
|
+
They all come with a performance hit:
|
|
146
|
+
- *Interpolation* - <b style="color: #fb0;">MEDIUM</b>
|
|
147
|
+
- *DateInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
|
|
148
|
+
- *TimeInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
|
|
149
|
+
- *NumberInterpolation* - <b style="color: #f60;">MEDIUM-HIGH</b>
|
|
150
|
+
- *Plurals* - <b style="color: #f00;">HIGH</b>
|
|
151
|
+
- *Select* - <b style="color: #f00;">HIGH</b>
|
|
152
|
+
|
|
153
|
+
```tsx
|
|
154
|
+
import { i18n } from '@24i/bigscreen-sdk/i18n';
|
|
155
|
+
import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Interpolation';
|
|
156
|
+
import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Plurals';
|
|
157
|
+
import { Select } from '@24i/bigscreen-sdk/i18n/middlewares/icu/Select';
|
|
158
|
+
|
|
159
|
+
i18n.init(/* ... */);
|
|
160
|
+
/**
|
|
161
|
+
* Because middlewares come with a performance impact you have two options:
|
|
162
|
+
* 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
|
|
163
|
+
* 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
|
|
164
|
+
*/
|
|
165
|
+
|
|
166
|
+
/**
|
|
167
|
+
* Option 1 - the order of middlewares is not important
|
|
168
|
+
*/
|
|
169
|
+
i18n.middleware(Interpolation, Plurals, Select);
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Option 2 - used with t function inside JSX, the order is not important
|
|
173
|
+
*/
|
|
174
|
+
<h1>
|
|
175
|
+
{
|
|
176
|
+
t('friend', {
|
|
177
|
+
name: user.name,
|
|
178
|
+
gender: user.gender,
|
|
179
|
+
friendsCount: 2,
|
|
180
|
+
middlewares: [Interpolation, Select, Plurals],
|
|
181
|
+
})
|
|
182
|
+
}
|
|
183
|
+
</h1>
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Interpolation - ICU
|
|
187
|
+
Interpolation allows you to pass variable into translation.
|
|
188
|
+
|
|
189
|
+
#### Usage
|
|
190
|
+
```ts
|
|
191
|
+
resource = { introduction: 'Hello, {name}!' };
|
|
192
|
+
i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### DateInterpolation - ICU
|
|
196
|
+
Allows you to format a variable date into translation.
|
|
197
|
+
|
|
198
|
+
#### Options
|
|
199
|
+
```
|
|
200
|
+
{nameOfKeyInOptions, date, dateFormat}
|
|
201
|
+
```
|
|
202
|
+
- `nameOfKeyInOptions` - name of variable that you pass
|
|
203
|
+
- `date` - identifier of DateInterpolation (fixed value)
|
|
204
|
+
- `dateFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `dMy`):
|
|
205
|
+
- - `y` - for using numeric year
|
|
206
|
+
- - `M` - for using 2-digit month
|
|
207
|
+
- - `L` - for using long month name
|
|
208
|
+
- - `d` - for using 2-digit day
|
|
209
|
+
- - `e` - for using long weekday name
|
|
210
|
+
|
|
211
|
+
#### Usage
|
|
212
|
+
```ts
|
|
213
|
+
resource = { today: 'Today is, {dateToDisplay, date, full}' };
|
|
214
|
+
i18n.t('today', { dateToDisplay: new Date('2021-09-23') }); // --> 'Today is, Thursday 23 September 2021'
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### TimeInterpolation - ICU
|
|
218
|
+
Allows you to format a variable time into translation.
|
|
219
|
+
|
|
220
|
+
#### Options
|
|
221
|
+
```
|
|
222
|
+
{nameOfKeyInOptions, time, timeFormat}
|
|
223
|
+
```
|
|
224
|
+
- `nameOfKeyInOptions` - name of variable that you pass
|
|
225
|
+
- `time` - identifier of TimeInterpolation (fixed value)
|
|
226
|
+
- `timeFormat` - one of `short`, `medium`, `long`, `full` or string from these letters (e.g. `hm`):
|
|
227
|
+
- - `h` - for using numeric hour
|
|
228
|
+
- - `H` - for using 2-digit hour
|
|
229
|
+
- - `k` - for using numeric hour
|
|
230
|
+
- - `K` - for using 2-digit hour
|
|
231
|
+
- - `m` - for using 2-digit minute
|
|
232
|
+
- - `s` - for using 2-digit second
|
|
233
|
+
|
|
234
|
+
#### Usage
|
|
235
|
+
```ts
|
|
236
|
+
resource = { now: 'Now is, {timeToDisplay, time, short}' };
|
|
237
|
+
i18n.t('now', { timeToDisplay: new Date('2021-09-23T09:45') }); // --> 'Now is, 9:45'
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
### NumberInterpolation - ICU
|
|
241
|
+
Allows you to format a variable number into translation.
|
|
242
|
+
|
|
243
|
+
<b style="color: #f00;">!IMPORTANT!</b> Formatting is not yet supported. If you need support, please,
|
|
244
|
+
implement it in l10n package.
|
|
245
|
+
It is better to use basic Interpolation instead as it might be faster. This is kept for minimal compatibility.
|
|
246
|
+
|
|
247
|
+
#### Options
|
|
248
|
+
```
|
|
249
|
+
{myNumber, number, ::formatting-options}
|
|
250
|
+
```
|
|
251
|
+
- `myNumber` - name of variable that you pass
|
|
252
|
+
- `number` - identifier of NumberInterpolation (fixed value)
|
|
253
|
+
- `format` - refer to [ICU spec](https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html)
|
|
254
|
+
|
|
255
|
+
#### Usage
|
|
256
|
+
Limited to just number passing without any format.
|
|
257
|
+
```ts
|
|
258
|
+
resource = { moneyTotal: 'In total, you need to pay {sum, number, ::currency/USD}.' };
|
|
259
|
+
i18n.t('moneyTotal', { sum: 99 }); // --> 'In total, you need to pay 99.'
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
### Plurals - ICU
|
|
263
|
+
Plurals make it possible to support different translations based on the count.
|
|
264
|
+
|
|
265
|
+
#### Options
|
|
266
|
+
```
|
|
267
|
+
{count, plural, offset:1, =0 {Nothing} few {Few things} other {# things}}
|
|
268
|
+
```
|
|
269
|
+
- `count` - name of variable you pass
|
|
270
|
+
- `plural` - identifier of Plurals (fixed value)
|
|
271
|
+
- `offset:1` - optional offset for worded amount and `#` replacement
|
|
272
|
+
- cases in format `count {translation}`
|
|
273
|
+
- - `=0` - or any other number for concrete amount
|
|
274
|
+
- - `zero` - for languages that have special grammar for zero
|
|
275
|
+
- - `one` - for languages that have special grammar for one
|
|
276
|
+
- - `two` - for languages that have special grammar for two
|
|
277
|
+
- - `few` - for languages that have special grammar for few items (e.g. czech for 2-4)
|
|
278
|
+
- - `many` - for languages that have special grammar for many items
|
|
279
|
+
- - `other` - required value for other cases
|
|
280
|
+
|
|
281
|
+
#### Usage
|
|
282
|
+
```ts
|
|
283
|
+
resource = {
|
|
284
|
+
simple: 'I have {numCats, plural, =0 {no cat} =1 {a cat} other {# cats}}.',
|
|
285
|
+
complex: 'I invited {count, plural, offset:1, =0 {no one} =1 {{name}} =2 {{name} and someone else} other {{name} and # more people}}.',
|
|
286
|
+
};
|
|
287
|
+
i18n.t('simple', { numCats: 4 }); // --> I have 4 cats.
|
|
288
|
+
i18n.t('complex', { count: 5, name: 'Lucy' }); // --> I invited Lucy and 4 more people.
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
### Select - ICU
|
|
292
|
+
Select makes it possible to provide different translations based on variable (e.g. gender).
|
|
293
|
+
|
|
294
|
+
#### Options
|
|
295
|
+
```
|
|
296
|
+
{variableName, select, case1 {translation1} case2 {translation2} other {translation3}}
|
|
297
|
+
```
|
|
298
|
+
- `variableName` - name of variable you pass
|
|
299
|
+
- `select` - identifier of Select (fixed value)
|
|
300
|
+
- cases in format `caseName {translation}` - `other` is required
|
|
301
|
+
|
|
302
|
+
#### Usage
|
|
303
|
+
```ts
|
|
304
|
+
resource = { arrived: '{gender, select, male {He} female {She} other {They}} arrived.' };
|
|
305
|
+
i18n.t('arrived', { gender: 'female' }); // --> She arrived.
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### ICU - Complex examples
|
|
309
|
+
Translation needs to be written in top-down: 'Select', 'Plurals', 'Interpolations'.
|
|
310
|
+
```ts
|
|
311
|
+
const resource = {
|
|
312
|
+
example: [
|
|
313
|
+
'{gender_of_host, select, ',
|
|
314
|
+
'female {',
|
|
315
|
+
'{num_guests, plural, offset:1, ',
|
|
316
|
+
'=0 {{host} does not give a party.}',
|
|
317
|
+
'=1 {{host} invites {guest} to her party.}',
|
|
318
|
+
'=2 {{host} invites {guest} and one other person to her party.}',
|
|
319
|
+
'other {{host} invites {guest} and # other people to her party.}}}',
|
|
320
|
+
'male {',
|
|
321
|
+
'{num_guests, plural, offset:1, ',
|
|
322
|
+
'=0 {{host} does not give a party.}',
|
|
323
|
+
'=1 {{host} invites {guest} to his party.}',
|
|
324
|
+
'=2 {{host} invites {guest} and one other person to his party.}',
|
|
325
|
+
'other {{host} invites {guest} and # other people to his party.}}}',
|
|
326
|
+
'other {',
|
|
327
|
+
'{num_guests, plural, offset:1, ',
|
|
328
|
+
'=0 {{host} does not give a party.}',
|
|
329
|
+
'=1 {{host} invites {guest} to their party.}',
|
|
330
|
+
'=2 {{host} invites {guest} and one other person to their party.}',
|
|
331
|
+
'other {{host} invites {guest} and # other people to their party.}}}}',
|
|
332
|
+
].join(''),
|
|
333
|
+
};
|
|
334
|
+
i18n.t('example', { gender_of_host: 'robot', host: 'Bastion', num_guests: 5, guest: 'Reinhardt' });
|
|
335
|
+
// --> Bastion invites Reinhardt and 4 other people to their party.
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
## Middlewares - i18next
|
|
339
|
+
All the middlewares you need for your project need to enabled together with init or during the translation.
|
|
340
|
+
They are separated to reduce the size of the bundle and to increase the performance.
|
|
341
|
+
|
|
342
|
+
They all come with a performance hit:
|
|
343
|
+
- *Interpolation* - <b style="color: #f80;">MEDIUM</b>
|
|
344
|
+
- *Plurals* - <b style="color: #f00;">HIGH</b>
|
|
345
|
+
- *Nesting* - <b style="color: #ff0;">LOW-MEDIUM</b> for simple keys, but higher if combined with interpolation or plurals
|
|
346
|
+
- *Context* - <b style="color: #0f0;">LOW</b> for simple keys, but higher if combined with interpolation or plurals
|
|
347
|
+
|
|
348
|
+
```tsx
|
|
349
|
+
import { i18n } from '@24i/bigscreen-sdk/i18n';
|
|
350
|
+
import { Interpolation } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Interpolation';
|
|
351
|
+
import { Plurals } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Plurals';
|
|
352
|
+
import { Nesting } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Nesting';
|
|
353
|
+
import { Context } from '@24i/bigscreen-sdk/i18n/middlewares/i18next/Context';
|
|
354
|
+
|
|
355
|
+
i18n.init(/* ... */);
|
|
356
|
+
/**
|
|
357
|
+
* Because middlewares come with a performance impact you have two options:
|
|
358
|
+
* 1 - Initialize them for all translations - use this when the middleware is used a lot in dictionary
|
|
359
|
+
* 2 - Use it through translation options - use this if the middleware is needed only for a handful of keys
|
|
360
|
+
*/
|
|
361
|
+
|
|
362
|
+
/**
|
|
363
|
+
* Option 1 - the order of middlewares is not important
|
|
364
|
+
*/
|
|
365
|
+
i18n.middleware(Interpolation, Plurals, Nesting, Context);
|
|
366
|
+
|
|
367
|
+
/**
|
|
368
|
+
* Option 2 - used with t function inside JSX, the order is not important
|
|
369
|
+
*/
|
|
370
|
+
<h1>{t('friend', { context: friend.gender, middlewares: [Interpolation, Context, Plurals] })}</h1>
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
### Interpolation - i18next
|
|
374
|
+
Interpolation allows you to replace parts of the translation.
|
|
375
|
+
#### Options
|
|
376
|
+
- `format(value: any, valueFormat: string) => string` - optional, formats the value before replacement
|
|
377
|
+
- `formatSeparator: string` - optional, sets the separator char(s), defaults to `,`
|
|
378
|
+
- `prefix: string` - optional, sets custom prefix to separate values for interpolation, defaults to `{{`
|
|
379
|
+
- `suffix: string` - optional, sets custom suffix to separate values for interpolation, defaults to `}}`
|
|
380
|
+
#### Usage
|
|
381
|
+
```ts
|
|
382
|
+
// simple
|
|
383
|
+
resource = { introduction: 'Hello, {{name}}!' };
|
|
384
|
+
i18n.t('introduction', { name: 'Petr' }); // --> 'Hello, Petr!'
|
|
385
|
+
|
|
386
|
+
// from object
|
|
387
|
+
resource = { introduction: 'Hello, {{user.names.first}}!' };
|
|
388
|
+
i18n.t('introduction', { user: { names: { first: 'Petr' } } }); // --> 'Hello, Petr!'
|
|
389
|
+
|
|
390
|
+
// format
|
|
391
|
+
resource = { shout: '{{topic, lowercase}}! {{topic}}!! {{topic, uppercase}}!!!' };
|
|
392
|
+
i18n.t('shout', { topic: 'SmartApps', interpolation: { format: (value: string, format: string) => {
|
|
393
|
+
if (format === 'uppercase') return value.toUpperCase();
|
|
394
|
+
if (format === 'lowercase') return value.toLowerCase();
|
|
395
|
+
return value;
|
|
396
|
+
} } }); // --> 'smartapps! SmartApps!! SMARTAPPS!!!'
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Plurals - i18next
|
|
400
|
+
Plurals allows you to automatically choose correct translation based on the `count` option.
|
|
401
|
+
It supports basic plurals (`[[key]]_plural`), form plurals (`[[key]]_1`) and intervals.
|
|
402
|
+
Form plurals are supported for all languages.
|
|
403
|
+
See [http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms](http://docs.translatehouse.org/projects/localization-guide/en/latest/l10n/pluralforms.html?id=l10n/pluralforms)
|
|
404
|
+
for the rules and forms for each language.
|
|
405
|
+
#### Usage
|
|
406
|
+
```ts
|
|
407
|
+
// basic
|
|
408
|
+
resource = {
|
|
409
|
+
item: 'Item',
|
|
410
|
+
item_plural: 'Items',
|
|
411
|
+
};
|
|
412
|
+
i18n.t('item'); // --> 'Item'
|
|
413
|
+
i18n.t('item', { count: 1 }); // --> 'Item'
|
|
414
|
+
i18n.t('item', { count: 2 }); // --> 'Items'
|
|
415
|
+
|
|
416
|
+
// form
|
|
417
|
+
resource = { // CS
|
|
418
|
+
'item': 'Polozka',
|
|
419
|
+
'item_1': 'Polozky',
|
|
420
|
+
'item_2': 'Polozek',
|
|
421
|
+
};
|
|
422
|
+
i18n.t('item'); // --> 'Polozka'
|
|
423
|
+
i18n.t('item', { count: 3 }); // --> 'Polozky'
|
|
424
|
+
i18n.t('item', { count: 5 }); // --> 'Polozek'
|
|
425
|
+
i18n.t('item', { count: 0 }); // --> 'Polozek'
|
|
426
|
+
|
|
427
|
+
// interval
|
|
428
|
+
resource = {
|
|
429
|
+
'item': 'Item',
|
|
430
|
+
'item_interval': '(1){One item};(2-5){Two to five items};(6-inf){More than 5 items};';
|
|
431
|
+
};
|
|
432
|
+
i18n.t('item'); // --> 'Item'
|
|
433
|
+
i18n.t('item', { count: 1 }); // --> 'One item'
|
|
434
|
+
i18n.t('item', { count: 3 }); // --> 'Two to five items'
|
|
435
|
+
i18n.t('item', { count: 8 }); // --> 'More than 5 items'
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### Nesting - i18next
|
|
439
|
+
Nesting allows you to place a translation key into a translation value and have it translated.
|
|
440
|
+
#### Usage
|
|
441
|
+
```ts
|
|
442
|
+
resource = {
|
|
443
|
+
welcome: 'Welcome, {{name}}!',
|
|
444
|
+
introduction: '$t(welcome) I am your i18n module',
|
|
445
|
+
};
|
|
446
|
+
i18n.t('introduction', { name: 'Radim' }); // --> 'Welcome, Radim! I am your i18n module.'
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
### Context - i18next
|
|
450
|
+
Context middleware allows you to have one translation in multiple contexts. Useful for gender for example.
|
|
451
|
+
```ts
|
|
452
|
+
resource = {
|
|
453
|
+
friend: 'A friend',
|
|
454
|
+
friend_male: 'A boyfriend',
|
|
455
|
+
friend_female: 'A girlfriend',
|
|
456
|
+
};
|
|
457
|
+
i18n.t('friend'); // --> 'A friend'
|
|
458
|
+
i18n.t('friend', { context: 'male' }); // --> 'A boyfriend'
|
|
459
|
+
i18n.t('friend', { context: 'female' }); // --> 'A girlfriend'
|
|
460
|
+
```
|