@24i/bigscreen-sdk 1.1.0 → 2.1.1-alpha.2133
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/package.json +34 -53
- package/packages/adobe-heartbeat/src/AdobeHeartbeat.ts +9 -9
- package/packages/async-image/src/AsyncImage.tsx +10 -15
- package/packages/developer-tools/PlayerDebugWindow/README.md +1 -1
- package/packages/developer-tools/src/DeveloperToolsService/DeveloperToolsList.tsx +0 -11
- package/packages/developer-tools/src/PlayerDebugWindow/PlayerDebugWindow.tsx +5 -5
- package/packages/developer-tools/src/PlayerDebugWindow/constants.ts +0 -15
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoDetail.tsx +1 -2
- package/packages/developer-tools/src/TechnicalInfo/TechnicalInfoProvider.ts +3 -34
- package/packages/developer-tools/src/TechnicalInfo/__mocks__/Device.ts +0 -4
- package/packages/developer-tools/src/TechnicalInfo/translations.ts +0 -4
- package/packages/device/src/getKeyDigit.ts +2 -2
- package/packages/device/src/resolver/resolver.ts +5 -18
- package/packages/digital-clock/src/DigitalClock.tsx +4 -15
- package/packages/driver-androidtv/src/DeviceAndroidTV.ts +9 -54
- package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +5 -29
- package/packages/driver-androidtv/src/keymap.ts +0 -18
- package/packages/driver-androidtv/src/types.ts +16 -102
- package/packages/driver-base/src/DeviceBase.ts +2 -61
- package/packages/driver-base/src/KeyMap/Key.ts +1 -8
- package/packages/driver-base/src/KeyMap/KeyMap.ts +0 -4
- package/packages/driver-base/src/KeyMap/interface.ts +0 -1
- package/packages/driver-base/src/KeyMap/overrideValues.ts +1 -2
- package/packages/driver-base/src/__mocks__/keyMap.ts +0 -1
- package/packages/driver-base/src/types/DeviceEvent.ts +0 -2
- package/packages/driver-base/src/types/KeycodeKeyMap.ts +0 -1
- package/packages/driver-browser/src/keymap.ts +0 -8
- package/packages/driver-entone/src/keymap.ts +0 -1
- package/packages/driver-tizen/src/TizenKeys.ts +0 -2
- package/packages/driver-vidaa/src/DeviceVidaa.ts +2 -3
- package/packages/driver-vidaa/src/__mocks__/vidaa.ts +1 -1
- package/packages/driver-vidaa/src/keymap.ts +0 -2
- package/packages/driver-webos/src/DeviceWebos.ts +0 -8
- package/packages/driver-webos/src/keymap.ts +1 -2
- package/packages/driver-xbox/src/keymap.ts +1 -1
- package/packages/epg/README.md +1 -3
- package/packages/epg/src/v2/Cell.tsx +2 -16
- package/packages/epg/src/v2/DataManager.ts +41 -112
- package/packages/epg/src/v2/DatePicker.tsx +3 -9
- package/packages/epg/src/v2/DateToast/DateToast.tsx +9 -12
- package/packages/epg/src/v2/Day.tsx +3 -6
- package/packages/epg/src/v2/Epg.tsx +5 -5
- package/packages/epg/src/v2/MockGenerator/generator.ts +2 -3
- package/packages/epg/src/v2/ProgramInfo/utils.ts +3 -4
- package/packages/epg/src/v2/Row.tsx +1 -3
- package/packages/epg/src/v2/TimelineSection.tsx +1 -4
- package/packages/epg/src/v2/basic/CellsManager.tsx +2 -7
- package/packages/epg/src/v2/basic/RowsManager.tsx +1 -3
- package/packages/epg/src/v2/interface.ts +0 -13
- package/packages/events-manager/src/EventsManager.ts +56 -1
- package/packages/focus/README.md +0 -33
- package/packages/focus/src/IFocusable.ts +0 -1
- package/packages/focus/src/Layout/Base.tsx +6 -41
- package/packages/focus/src/Layout/Matrix.tsx +19 -51
- package/packages/focus/src/Layout/__test__/Base.spec.ts +180 -0
- package/packages/focus/src/Layout/__test__/Horizontal.spec.ts +94 -0
- package/packages/focus/src/Layout/__test__/Matrix.spec.ts +261 -0
- package/packages/focus/src/Layout/__test__/Vertical.spec.ts +46 -0
- package/packages/focus/src/Layout/__test__/isRtl.spec.ts +23 -0
- package/packages/focus/src/Layout/__test__/shared.ts +19 -0
- package/packages/focus/src/focusFirstExisting.ts +1 -7
- package/packages/focus/src/index.ts +1 -2
- package/packages/gallup/src/Gallup.ts +3 -3
- package/packages/grid/src/Base/Base.tsx +10 -15
- package/packages/grid/src/FirstOnlyGrid/FirstOnlyGrid.tsx +2 -4
- package/packages/icon/src/Icon.tsx +5 -27
- package/packages/input/README.md +1 -4
- package/packages/input/src/Input.tsx +29 -65
- package/packages/input/src/handleOverflow.ts +29 -0
- package/packages/interactable/README.md +1 -2
- package/packages/interactable/src/Interactable.tsx +3 -9
- package/packages/interactable/src/interface.ts +0 -1
- package/packages/jsx/src/index.ts +1 -1
- package/packages/jsx/src/test-utils/index.ts +0 -1
- package/packages/keyboard/src/Backdrop/Backdrop.scss +0 -2
- package/packages/keyboard/src/KeyboardBase.tsx +4 -16
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.scss +0 -4
- package/packages/keyboard/src/WhitelabelKeyboard/Keyboard.tsx +20 -28
- package/packages/keyboard/src/WhitelabelKeyboard/_sizes.1080.scss +0 -1
- package/packages/keyboard/src/WhitelabelKeyboard/_sizes.scss +0 -1
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/index.ts +0 -11
- package/packages/keyboard/src/WhitelabelKeyboard/types.ts +0 -1
- package/packages/l10n/README.md +0 -18
- package/packages/l10n/src/date/common.ts +6 -18
- package/packages/l10n/src/date/cs.ts +8 -2
- package/packages/l10n/src/date/en-001.ts +3 -3
- package/packages/l10n/src/date/en-common.ts +4 -5
- package/packages/l10n/src/date/en-us.ts +3 -3
- package/packages/l10n/src/date/iso.ts +13 -12
- package/packages/l10n/src/date/types.ts +0 -9
- package/packages/l10n/src/l10n.ts +3 -61
- package/packages/list/src/Base/Base.tsx +9 -19
- package/packages/list/src/Base/interface.ts +2 -2
- package/packages/list/src/CenteredList/controller.ts +1 -0
- package/packages/list/src/EdgeOffsetList/EdgeOffsetList.tsx +3 -3
- package/packages/list/src/UnifiedListController/UnifiedListController.ts +2 -6
- package/packages/logger/src/loggers/SentryLogger/Sentry.ts +0 -1
- package/packages/logger/src/loggers/SentryLogger/SentryLogger.ts +2 -2
- package/packages/menu/src/MenuAndContentContainer/MenuAndContentContainer.tsx +3 -31
- package/packages/menu/src/MenuAndContentContainer/interface.ts +0 -8
- package/packages/modal-service/README.md +1 -4
- package/packages/modal-service/src/ModalService.tsx +5 -29
- package/packages/perf-utils/README.md +120 -1
- package/packages/perf-utils/src/array/filter.ts +54 -1
- package/packages/perf-utils/src/array/find.ts +43 -1
- package/packages/perf-utils/src/array/findIndex.ts +43 -1
- package/packages/perf-utils/src/array/forEach.ts +48 -1
- package/packages/perf-utils/src/array/includes.ts +41 -1
- package/packages/perf-utils/src/array/includesNaN.ts +32 -1
- package/packages/perf-utils/src/array/index.ts +7 -1
- package/packages/perf-utils/src/array/map.ts +52 -1
- package/packages/player-ui/README.md +1 -1
- package/packages/player-ui/src/CurrentTime.tsx +2 -2
- package/packages/player-ui/src/Duration.tsx +2 -2
- package/packages/player-ui/src/PauseButton.tsx +0 -8
- package/packages/player-ui/src/PlayerInteractable.tsx +0 -1
- package/packages/player-ui/src/PlayerTime.tsx +1 -3
- package/packages/player-ui/src/PlayerUI.tsx +35 -68
- package/packages/player-ui/src/RemainingTime.tsx +2 -2
- package/packages/player-ui/src/Seekbar.tsx +18 -110
- package/packages/player-ui/src/Seeking.ts +16 -57
- package/packages/player-ui/src/Subtitles.tsx +2 -2
- package/packages/player-ui/src/index.ts +0 -1
- package/packages/player-ui/src/mocks.ts +8 -32
- package/packages/player-ui/src/timeUtils.ts +3 -3
- package/packages/player-ui/src/types.ts +3 -9
- package/packages/router/src/Route.tsx +27 -61
- package/packages/router/src/Router.tsx +13 -59
- package/packages/router/src/history.ts +1 -8
- package/packages/router/src/index.ts +1 -1
- package/packages/router/src/utils.ts +4 -9
- package/packages/sass-utils/src/linear-gradient.scss +4 -9
- package/packages/sass-utils/src/scale.1080.scss +1 -3
- package/packages/sass-utils/src/scale.720.scss +1 -1
- package/packages/time/README.md +1 -4
- package/packages/time/src/Time.ts +13 -35
- package/packages/time/src/constants.ts +0 -1
- package/packages/toast/src/ToastService.tsx +5 -16
- package/packages/types-bigscreen-jsx/README.md +4 -5
- package/packages/types-bigscreen-jsx/index.d.ts +67 -72
- package/packages/utils/README.md +0 -27
- package/packages/utils/src/elementUtils.ts +0 -25
- package/packages/utils/src/index.ts +0 -8
- package/packages/utils/src/scaledImage.ts +3 -6
- package/packages/utils/src/textUtils.ts +14 -46
- package/packages/utils/src/wait.ts +1 -3
- package/packages/utils/src/xhr/xhrSend.ts +1 -3
- package/packages/utils/src/xhr/xhrSendRetry.ts +1 -3
- package/packages/zapping/src/ChannelZapping.ts +0 -9
- package/packages/zapping/src/Zapping.tsx +0 -10
- package/.vscode/settings.json +0 -6
- package/packages/analytics/README.md +0 -8
- package/packages/analytics/src/A.ts +0 -1
- package/packages/analytics/src/Analytics.ts +0 -1
- package/packages/analytics/src/analyticsOnScroll.ts +0 -1
- package/packages/analytics/src/clients/ConsoleAnalytics/ConsoleAnalytics.ts +0 -1
- package/packages/analytics/src/clients/ConsoleAnalytics/index.ts +0 -1
- package/packages/analytics/src/clients/GoogleAnalytics/GoogleAnalytics.ts +0 -200
- package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +0 -118
- package/packages/analytics/src/clients/GoogleAnalytics/getUrl.ts +0 -17
- package/packages/analytics/src/clients/GoogleAnalytics/index.ts +0 -2
- package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +0 -77
- package/packages/analytics/src/clients/GoogleAnalytics/mapPayload.ts +0 -50
- package/packages/analytics/src/clients/GoogleAnalytics/prepareBody.ts +0 -14
- package/packages/analytics/src/clients/TealiumAnalytics/TealiumAnalytics.ts +0 -169
- package/packages/analytics/src/clients/TealiumAnalytics/constants.ts +0 -102
- package/packages/analytics/src/clients/TealiumAnalytics/findIdForLanguage.ts +0 -9
- package/packages/analytics/src/clients/TealiumAnalytics/index.ts +0 -4
- package/packages/analytics/src/clients/TealiumAnalytics/interface.ts +0 -33
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/__mocks__/mediaPayload.ts +0 -70
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/helper.ts +0 -36
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapAppError.ts +0 -13
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteAdd.ts +0 -11
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapFavoriteRemove.ts +0 -11
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerClose.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapPlayerOpen.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSceneView.ts +0 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearch.ts +0 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchFailed.ts +0 -8
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapSearchSuccess.ts +0 -8
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoPause.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoProgress.ts +0 -18
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoResume.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStart.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/mappers/mapVideoStop.ts +0 -15
- package/packages/analytics/src/clients/TealiumAnalytics/types.ts +0 -156
- package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +0 -116
- package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +0 -99
- package/packages/analytics/src/clients/TwentyFourIQ/helper.ts +0 -34
- package/packages/analytics/src/clients/TwentyFourIQ/index.ts +0 -2
- package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +0 -31
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +0 -13
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +0 -16
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +0 -21
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +0 -15
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +0 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +0 -18
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +0 -15
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +0 -17
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +0 -21
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +0 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +0 -24
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +0 -34
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +0 -32
- package/packages/analytics/src/clients/TwentyFourIQ/types.ts +0 -115
- package/packages/analytics/src/constants.ts +0 -1
- package/packages/analytics/src/index.ts +0 -3
- package/packages/analytics/src/interface.ts +0 -1
- package/packages/analytics/src/utils/generateSessionId.ts +0 -8
- package/packages/create-package/dist/createPackage.js +0 -66
- package/packages/create-package/dist/createPackage.js.map +0 -1
- package/packages/create-package/dist/index.js +0 -5
- package/packages/create-package/dist/index.js.map +0 -1
- package/packages/create-package/dist/questionnaire/questions.js +0 -35
- package/packages/create-package/dist/questionnaire/questions.js.map +0 -1
- package/packages/create-package/dist/settings/Settings.js +0 -10
- package/packages/create-package/dist/settings/Settings.js.map +0 -1
- package/packages/create-package/dist/types.js +0 -3
- package/packages/create-package/dist/types.js.map +0 -1
- package/packages/device/src/driver/index.firetv.ts +0 -1
- package/packages/device/src/driver/index.smartcast.tv.ts +0 -1
- package/packages/driver-firetv/src/DeviceFireTV.ts +0 -18
- package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +0 -36
- package/packages/driver-firetv/src/index.ts +0 -1
- package/packages/driver-smartcast/src/DeviceSmartCast.ts +0 -317
- package/packages/driver-smartcast/src/__mocks__/api.ts +0 -49
- package/packages/driver-smartcast/src/index.ts +0 -1
- package/packages/driver-smartcast/src/keymap.ts +0 -9
- package/packages/driver-smartcast/src/types.ts +0 -65
- package/packages/focus/src/hasFocus.ts +0 -36
- package/packages/input/src/utils.ts +0 -71
- package/packages/jsx/src/test-utils/keyup.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/arabic.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/burmese.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/dari.ts +0 -28
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/korean.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/pashto.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/persian.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/russian.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/tibetan.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/turkish.ts +0 -26
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/ukrainian.ts +0 -27
- package/packages/keyboard/src/WhitelabelKeyboard/layouts/urdu.ts +0 -26
- package/packages/l10n/src/date/de.ts +0 -97
- package/packages/l10n/src/date/es.ts +0 -71
- package/packages/l10n/src/date/fr.ts +0 -94
- package/packages/l10n/src/date/he.ts +0 -101
- package/packages/time/src/adapters/24iMediaTimeApi.ts +0 -47
- package/packages/time/src/services/24iMediaTimeApi/24iMediaTimeApi.ts +0 -43
- package/packages/time/src/services/24iMediaTimeApi/index.ts +0 -6
- package/packages/utils/src/forceReflow.ts +0 -14
- package/packages/utils/src/keyPress/index.ts +0 -6
- package/packages/utils/src/keyPress/keyPressSimulator.ts +0 -74
- package/packages/utils/src/keyPress/simulateKeyPress.ts +0 -25
- package/utils/release/release.ts +0 -154
|
@@ -8,14 +8,9 @@ export type Props = {
|
|
|
8
8
|
withSeconds?: boolean,
|
|
9
9
|
domRef?: Reference<HTMLDivElement>,
|
|
10
10
|
className?: string,
|
|
11
|
-
isHiddenForAria?: boolean,
|
|
12
11
|
};
|
|
13
12
|
|
|
14
|
-
const WITHOUT_SECONDS_OPTIONS = {
|
|
15
|
-
hour: 'numeric',
|
|
16
|
-
minute: '2-digit',
|
|
17
|
-
formatType: 'timeFormat',
|
|
18
|
-
} as const;
|
|
13
|
+
const WITHOUT_SECONDS_OPTIONS = { hour: 'numeric', minute: '2-digit' } as const;
|
|
19
14
|
const WITH_SECONDS_OPTIONS = { ...WITHOUT_SECONDS_OPTIONS, second: '2-digit' } as const;
|
|
20
15
|
|
|
21
16
|
export class DigitalClock extends Component<Props> {
|
|
@@ -45,7 +40,7 @@ export class DigitalClock extends Component<Props> {
|
|
|
45
40
|
|
|
46
41
|
setTime() {
|
|
47
42
|
const { withSeconds } = this.props;
|
|
48
|
-
const currentTimestampMs = time.
|
|
43
|
+
const currentTimestampMs = time.getCurrentUnixTime();
|
|
49
44
|
if (this.oldUnixTimestampMs !== currentTimestampMs) {
|
|
50
45
|
const options = withSeconds ? WITH_SECONDS_OPTIONS : WITHOUT_SECONDS_OPTIONS;
|
|
51
46
|
this.clearMount((
|
|
@@ -66,13 +61,7 @@ export class DigitalClock extends Component<Props> {
|
|
|
66
61
|
}
|
|
67
62
|
|
|
68
63
|
render() {
|
|
69
|
-
const { className
|
|
70
|
-
return
|
|
71
|
-
<div
|
|
72
|
-
ref={this.clockRef}
|
|
73
|
-
className={className}
|
|
74
|
-
{...isHiddenForAria && { 'aria-hidden': true }}
|
|
75
|
-
/>
|
|
76
|
-
);
|
|
64
|
+
const { className } = this.props;
|
|
65
|
+
return <div ref={this.clockRef} className={className} />;
|
|
77
66
|
}
|
|
78
67
|
}
|
|
@@ -4,9 +4,9 @@ import {
|
|
|
4
4
|
ScreenSaverStatus,
|
|
5
5
|
VolumeRange,
|
|
6
6
|
} from '@24i/bigscreen-sdk/driver-base';
|
|
7
|
-
import { IJavaScriptBridge
|
|
7
|
+
import { IJavaScriptBridge } from './types';
|
|
8
8
|
import { getFirmware } from './formatUserAgent';
|
|
9
|
-
import { getKeyMap
|
|
9
|
+
import { getKeyMap } from './keymap';
|
|
10
10
|
|
|
11
11
|
interface CustomKeyboardEvent extends KeyboardEvent {
|
|
12
12
|
/** Flag indicating that the driver has already re-emitted this event. */
|
|
@@ -25,9 +25,7 @@ declare global {
|
|
|
25
25
|
export class DeviceAndroidTV extends DeviceBase {
|
|
26
26
|
keyMap = getKeyMap();
|
|
27
27
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
platformInfo: DeviceInfo = this.deviceInfo ? JSON.parse(this.deviceInfo) : '';
|
|
28
|
+
platformInfo = window.JavaScriptBridge.bridgeJavaScriptToAndroid_GetDeviceInfo();
|
|
31
29
|
|
|
32
30
|
firmware = getFirmware(navigator.userAgent);
|
|
33
31
|
|
|
@@ -46,54 +44,17 @@ export class DeviceAndroidTV extends DeviceBase {
|
|
|
46
44
|
}
|
|
47
45
|
|
|
48
46
|
/**
|
|
49
|
-
* Handles keydown/up events for the BACK
|
|
50
|
-
*
|
|
51
|
-
*
|
|
47
|
+
* Handles keydown/up events for the BACK key which are dispatched on the document
|
|
48
|
+
* from the Android TV Bridge. We must catch them and re-emit them properly
|
|
49
|
+
* on the active (focused) element in the DOM tree.
|
|
52
50
|
* @param event keyboard event
|
|
53
51
|
*/
|
|
54
|
-
// eslint-disable-next-line complexity
|
|
55
52
|
relaunchKeyEvent = (event: CustomKeyboardEvent) => {
|
|
56
53
|
if (event.bigscreenSdkRelaunched) { // prevent to relaunch event in loop
|
|
57
54
|
return;
|
|
58
55
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
let { keyCode } = event;
|
|
62
|
-
|
|
63
|
-
// KeyCodes collisions for some key sent from Android wrapper or JavaScript (webView)
|
|
64
|
-
if (
|
|
65
|
-
key === 'u' // keyCode 85, same like PLAYPAUSE
|
|
66
|
-
|| key === 'v' // keyCode 86, same like STOP
|
|
67
|
-
|| key === 'y' // keyCode 89, same like REW
|
|
68
|
-
|| key === 'z' // keyCode 90, same like FF
|
|
69
|
-
) {
|
|
70
|
-
return;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Remap KeyCode by its key value.
|
|
75
|
-
* On Android all colors keys and some others coming with "0" keyCode.
|
|
76
|
-
*/
|
|
77
|
-
if (key === 'ColorF0Red') keyCode = this.keyMap.RED;
|
|
78
|
-
if (key === 'ColorF1Green') keyCode = this.keyMap.GREEN;
|
|
79
|
-
if (key === 'ColorF2Yellow') keyCode = this.keyMap.YELLOW;
|
|
80
|
-
if (key === 'ColorF3Blue') keyCode = this.keyMap.BLUE;
|
|
81
|
-
if (key === 'ClosedCaptionToggle') keyCode = this.keyMap.SUBTITLES;
|
|
82
|
-
if (keyCode === AndroidKeyMap.STOP) keyCode = this.keyMap.STOP;
|
|
83
|
-
if (keyCode === AndroidKeyMap.PAUSE) keyCode = this.keyMap.PAUSE;
|
|
84
|
-
|
|
85
|
-
if (keyCode === this.keyMap.BACK
|
|
86
|
-
|| keyCode === this.keyMap.STOP
|
|
87
|
-
|| keyCode === this.keyMap.FF
|
|
88
|
-
|| keyCode === this.keyMap.REW
|
|
89
|
-
|| keyCode === this.keyMap.PLAYPAUSE
|
|
90
|
-
|| keyCode === this.keyMap.PLAY
|
|
91
|
-
|| keyCode === this.keyMap.RED
|
|
92
|
-
|| keyCode === this.keyMap.GREEN
|
|
93
|
-
|| keyCode === this.keyMap.YELLOW
|
|
94
|
-
|| keyCode === this.keyMap.BLUE
|
|
95
|
-
|| keyCode === this.keyMap.SUBTITLES
|
|
96
|
-
) {
|
|
56
|
+
const { keyCode } = event;
|
|
57
|
+
if (keyCode === this.keyMap.BACK) {
|
|
97
58
|
event.preventDefault();
|
|
98
59
|
event.stopImmediatePropagation();
|
|
99
60
|
const newEvent = new KeyboardEvent(event.type, {
|
|
@@ -166,10 +127,6 @@ export class DeviceAndroidTV extends DeviceBase {
|
|
|
166
127
|
return VolumeRange.UNSUPPORTED;
|
|
167
128
|
}
|
|
168
129
|
|
|
169
|
-
async getWrapperVersion(): Promise<string> {
|
|
170
|
-
return this.platformInfo.appVersion;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
130
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
174
131
|
async setVolume(volumePercentage: number): Promise<void> {
|
|
175
132
|
// not supported on AndroidTV platform
|
|
@@ -211,9 +168,7 @@ export class DeviceAndroidTV extends DeviceBase {
|
|
|
211
168
|
}
|
|
212
169
|
|
|
213
170
|
async getLocalIP(): Promise<string> {
|
|
214
|
-
|
|
215
|
-
const ip = this.platformInfo.ipLocal.toString().match(ipv4RegExp);
|
|
216
|
-
if (ip) return ip.toString();
|
|
171
|
+
// not supported on AndroidTV platform
|
|
217
172
|
return '';
|
|
218
173
|
}
|
|
219
174
|
|
|
@@ -2,35 +2,11 @@ import { IJavaScriptBridge } from '../types';
|
|
|
2
2
|
|
|
3
3
|
export const mockJavaScriptBridge: IJavaScriptBridge = {
|
|
4
4
|
JavaScriptBridge: {
|
|
5
|
-
bridgeJavaScriptToAndroid_GetDeviceInfo: () => (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
appVersion: '0.0.1',
|
|
11
|
-
appFlavor: 'appstage-bigscreen',
|
|
12
|
-
drmKeySystems: '["W3C Clear Key", "Google Widevine"]',
|
|
13
|
-
ipLocal: '127.0.0.1',
|
|
14
|
-
})
|
|
15
|
-
),
|
|
5
|
+
bridgeJavaScriptToAndroid_GetDeviceInfo: () => ({
|
|
6
|
+
deviceBrand: 'Sony',
|
|
7
|
+
deviceModel: 'BRAVIA 4K 2015',
|
|
8
|
+
osVersion: '8.0.0',
|
|
9
|
+
}),
|
|
16
10
|
bridgeJavaScriptToAndroid_Back: () => {},
|
|
17
|
-
bridgeJavaScriptToAndroid_StopVideo: () => {},
|
|
18
|
-
bridgeJavaScriptToAndroid_FullScreenVideo: () => {},
|
|
19
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
20
|
-
bridgeJavaScriptToAndroid_SetVideoPath: (url: string) => {},
|
|
21
|
-
bridgeJavaScriptToAndroid_IsPlaying: () => true,
|
|
22
|
-
bridgeJavaScriptToAndroid_PauseVideo: () => {},
|
|
23
|
-
bridgeJavaScriptToAndroid_PlayVideo: () => {},
|
|
24
|
-
bridgeJavaScriptToAndroid_IsLive: () => false,
|
|
25
|
-
bridgeJavaScriptToAndroid_GetCurrentTime: () => Date.now(),
|
|
26
|
-
bridgeJavaScriptToAndroid_GetTotalTime: () => Date.now(),
|
|
27
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
28
|
-
bridgeJavaScriptToAndroid_SeekTo: (milliseconds: number) => {},
|
|
29
|
-
bridgeJavaScriptToAndroid_getCurrentSubtitleTrack: () => '{}',
|
|
30
|
-
bridgeJavaScriptToAndroid_getCurrentAudioTrack: () => '{}',
|
|
31
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
32
|
-
bridgeJavaScriptToAndroid_SetTrack: (track: string) => {},
|
|
33
|
-
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
34
|
-
bridgeJavaScriptToAndroid_SetAudioTrack: (track: string) => {},
|
|
35
11
|
},
|
|
36
12
|
};
|
|
@@ -4,24 +4,6 @@ import { KeyMap } from '@24i/bigscreen-sdk/driver-base';
|
|
|
4
4
|
export const getKeyMap = () => {
|
|
5
5
|
KeyMap.overrideValues({
|
|
6
6
|
BACK: { keyCode: 4 },
|
|
7
|
-
STOP: { keyCode: 86 },
|
|
8
|
-
FF: { keyCode: 90 },
|
|
9
|
-
REW: { keyCode: 89 },
|
|
10
|
-
PLAY: { keyCode: 126 },
|
|
11
|
-
PAUSE: { keyCode: 127 },
|
|
12
|
-
PLAYPAUSE: { keyCode: 85 },
|
|
13
|
-
SUBTITLES: { keyCode: 175 },
|
|
14
7
|
});
|
|
15
8
|
return KeyMap.generateKeyCodeKeyMap();
|
|
16
9
|
};
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* For the specific AndroidTV devices like Sony Bravia or Nvidia Shield
|
|
20
|
-
* there are different KeyCodes for some buttons than on other platforms.
|
|
21
|
-
* In that case we need to re-map this specific KeyCodes to the
|
|
22
|
-
* same values as we using in generic KeyMap list for the AndroidTV.
|
|
23
|
-
*/
|
|
24
|
-
export const AndroidKeyMap = {
|
|
25
|
-
STOP: 178,
|
|
26
|
-
PAUSE: 85,
|
|
27
|
-
};
|
|
@@ -1,113 +1,27 @@
|
|
|
1
1
|
interface JavaScriptBridge {
|
|
2
2
|
/**
|
|
3
|
-
* It returns
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
3
|
+
* It returns device info.
|
|
4
|
+
*/
|
|
5
|
+
bridgeJavaScriptToAndroid_GetDeviceInfo: () => {
|
|
6
|
+
/**
|
|
7
|
+
* Device brand. Ex. "Sony"
|
|
8
|
+
*/
|
|
9
|
+
deviceBrand: string,
|
|
10
|
+
/**
|
|
11
|
+
* Device model. Ex. "BRAVIA 4K 2015"
|
|
12
|
+
*/
|
|
13
|
+
deviceModel: string,
|
|
14
|
+
/**
|
|
15
|
+
* Android version. Ex. "7.0"
|
|
16
|
+
*/
|
|
17
|
+
osVersion: string,
|
|
18
|
+
},
|
|
10
19
|
/**
|
|
11
20
|
* It simulates a native Android back press.
|
|
12
21
|
*/
|
|
13
22
|
bridgeJavaScriptToAndroid_Back: () => void,
|
|
14
|
-
/**
|
|
15
|
-
* It simulates a native Android stop button press.
|
|
16
|
-
*/
|
|
17
|
-
bridgeJavaScriptToAndroid_StopVideo: () => void;
|
|
18
|
-
/**
|
|
19
|
-
* It sets the video to fullscreen mode
|
|
20
|
-
*/
|
|
21
|
-
bridgeJavaScriptToAndroid_FullScreenVideo: () => void;
|
|
22
|
-
/**
|
|
23
|
-
* It sets the video url
|
|
24
|
-
*/
|
|
25
|
-
bridgeJavaScriptToAndroid_SetVideoPath: (url: string) => void;
|
|
26
|
-
/**
|
|
27
|
-
* It returns whether the video is playing
|
|
28
|
-
*/
|
|
29
|
-
bridgeJavaScriptToAndroid_IsPlaying: () => boolean;
|
|
30
|
-
/**
|
|
31
|
-
* It pauses the video
|
|
32
|
-
*/
|
|
33
|
-
bridgeJavaScriptToAndroid_PauseVideo: () => void;
|
|
34
|
-
/**
|
|
35
|
-
* It plays the video
|
|
36
|
-
*/
|
|
37
|
-
bridgeJavaScriptToAndroid_PlayVideo: () => void;
|
|
38
|
-
/**
|
|
39
|
-
* It returns whether the video is live
|
|
40
|
-
*/
|
|
41
|
-
bridgeJavaScriptToAndroid_IsLive: () => boolean;
|
|
42
|
-
/**
|
|
43
|
-
* It returns current time of currently played video
|
|
44
|
-
*/
|
|
45
|
-
bridgeJavaScriptToAndroid_GetCurrentTime: () => number;
|
|
46
|
-
/**
|
|
47
|
-
* It returns total duration of the video
|
|
48
|
-
*/
|
|
49
|
-
bridgeJavaScriptToAndroid_GetTotalTime: () => number;
|
|
50
|
-
/**
|
|
51
|
-
* It seeks the video to specified milliseconds
|
|
52
|
-
*/
|
|
53
|
-
bridgeJavaScriptToAndroid_SeekTo: (milliseconds: number) => void;
|
|
54
|
-
/**
|
|
55
|
-
* It returns current text track
|
|
56
|
-
*/
|
|
57
|
-
bridgeJavaScriptToAndroid_getCurrentSubtitleTrack: () => string | undefined;
|
|
58
|
-
/**
|
|
59
|
-
* It returns current audio track
|
|
60
|
-
*/
|
|
61
|
-
bridgeJavaScriptToAndroid_getCurrentAudioTrack: () => string | undefined;
|
|
62
|
-
/**
|
|
63
|
-
* It sets text track to be shown.
|
|
64
|
-
*/
|
|
65
|
-
bridgeJavaScriptToAndroid_SetTrack: (track: string) => void;
|
|
66
|
-
/**
|
|
67
|
-
* It sets audio track to be used.
|
|
68
|
-
*/
|
|
69
|
-
bridgeJavaScriptToAndroid_SetAudioTrack: (track: string) => void;
|
|
70
23
|
}
|
|
71
24
|
|
|
72
|
-
export type DeviceInfo = {
|
|
73
|
-
/**
|
|
74
|
-
* Device brand. Ex. "Sony"
|
|
75
|
-
*/
|
|
76
|
-
deviceBrand: string,
|
|
77
|
-
/**
|
|
78
|
-
* Device model. Ex. "BRAVIA 4K 2015"
|
|
79
|
-
*/
|
|
80
|
-
deviceModel: string,
|
|
81
|
-
/**
|
|
82
|
-
* Android version. Ex. "7.0"
|
|
83
|
-
*/
|
|
84
|
-
osVersion: string,
|
|
85
|
-
/**
|
|
86
|
-
* Android wrapper version. Ex. "0.0.1"
|
|
87
|
-
*/
|
|
88
|
-
appVersion: string,
|
|
89
|
-
/**
|
|
90
|
-
* Android flavor. Ex. "appstage-bigscreen"
|
|
91
|
-
*/
|
|
92
|
-
appFlavor: string,
|
|
93
|
-
/**
|
|
94
|
-
* Underlying player engine name. Ex. "exoplayer"
|
|
95
|
-
*/
|
|
96
|
-
engineName: string,
|
|
97
|
-
/**
|
|
98
|
-
* Version of player engine. Ex. "2.18.1"
|
|
99
|
-
*/
|
|
100
|
-
engineVersion: string,
|
|
101
|
-
/**
|
|
102
|
-
* Android DRM key systems. Ex. ["Widewine", "W3C ClearKey"]
|
|
103
|
-
*/
|
|
104
|
-
drmKeySystems: Array<string>,
|
|
105
|
-
/**
|
|
106
|
-
* Android local IP adress in array Ex. "fe80::475:3045:2928:3a32%wlan0127.0.0.1"
|
|
107
|
-
*/
|
|
108
|
-
ipLocal: string,
|
|
109
|
-
};
|
|
110
|
-
|
|
111
25
|
export interface IJavaScriptBridge {
|
|
112
26
|
JavaScriptBridge: JavaScriptBridge,
|
|
113
27
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { Storage } from '@24i/bigscreen-sdk/storage';
|
|
2
|
-
import { config } from '@24i/bigscreen-sdk/runtime-config';
|
|
3
2
|
import { generateUuid } from '@24i/bigscreen-sdk/utils/generateUuid';
|
|
4
3
|
import { EventsManager, IEvents, EventMapType } from '@24i/bigscreen-sdk/events-manager';
|
|
5
4
|
import { isRtl } from '@24i/bigscreen-sdk/i18n';
|
|
@@ -13,15 +12,10 @@ import { ExitOptions } from './types/ExitOptions';
|
|
|
13
12
|
import { inRange } from './utils';
|
|
14
13
|
import { ErrorTemplate } from './errors';
|
|
15
14
|
import { bindPreventDefaultEvent } from './bindPreventDefaultEvent';
|
|
16
|
-
import { LEFT, RIGHT, UP, DOWN, ENTER, BACK
|
|
15
|
+
import { LEFT, RIGHT, UP, DOWN, ENTER, BACK } from './KeyMap';
|
|
17
16
|
|
|
18
17
|
export const STORAGE_UUID_KEY = '__UUID__';
|
|
19
18
|
|
|
20
|
-
const DEFAULT_POLLING_INTERVAL = 15000;
|
|
21
|
-
const DEFAULT_POLLING_TIMEOUT = 15000;
|
|
22
|
-
|
|
23
|
-
const CHECKED_URL = '//www.google-analytics.com/__utm.gif';
|
|
24
|
-
|
|
25
19
|
export abstract class DeviceBase<
|
|
26
20
|
CustomEventMap extends EventMapType = {},
|
|
27
21
|
EventMap extends EventMapType = DeviceEventMap & CustomEventMap,
|
|
@@ -47,14 +41,6 @@ export abstract class DeviceBase<
|
|
|
47
41
|
|
|
48
42
|
screenSize: ScreenSize = 'unknown';
|
|
49
43
|
|
|
50
|
-
pollingInterval: number = DEFAULT_POLLING_INTERVAL;
|
|
51
|
-
|
|
52
|
-
pollingTimeout: number = DEFAULT_POLLING_TIMEOUT;
|
|
53
|
-
|
|
54
|
-
imageTimeout: number = 0;
|
|
55
|
-
|
|
56
|
-
isOffline: boolean = false;
|
|
57
|
-
|
|
58
44
|
// MARK: Initialization
|
|
59
45
|
|
|
60
46
|
/**
|
|
@@ -66,7 +52,6 @@ export abstract class DeviceBase<
|
|
|
66
52
|
if (!this.isInitialized) {
|
|
67
53
|
this.bindPreventDefaultEvents(rootElement);
|
|
68
54
|
const initializer = await this.internalInit();
|
|
69
|
-
this.checkNetworkConnection();
|
|
70
55
|
this.isInitialized = true;
|
|
71
56
|
return initializer;
|
|
72
57
|
}
|
|
@@ -86,46 +71,6 @@ export abstract class DeviceBase<
|
|
|
86
71
|
return this.initializer;
|
|
87
72
|
}
|
|
88
73
|
|
|
89
|
-
doOnlineCheck = () => {
|
|
90
|
-
const protocol = window.location.protocol === 'http:' ? 'http:' : 'https:';
|
|
91
|
-
const tester = new Image();
|
|
92
|
-
this.imageTimeout = window.setTimeout(() => {
|
|
93
|
-
this.connectionNotFound();
|
|
94
|
-
}, this.pollingTimeout || DEFAULT_POLLING_TIMEOUT);
|
|
95
|
-
tester.onload = this.connectionFound;
|
|
96
|
-
tester.onerror = this.connectionNotFound;
|
|
97
|
-
tester.src = `${protocol}${CHECKED_URL}?ts=${Date.now()}`;
|
|
98
|
-
};
|
|
99
|
-
|
|
100
|
-
connectionFound = () => {
|
|
101
|
-
window.clearTimeout(this.imageTimeout);
|
|
102
|
-
if (!this.isOffline) return;
|
|
103
|
-
this.triggerEvent('networkchange',
|
|
104
|
-
{ isConnected: true } as any);
|
|
105
|
-
this.isOffline = false;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
connectionNotFound = () => {
|
|
109
|
-
window.clearTimeout(this.imageTimeout);
|
|
110
|
-
if (this.isOffline) return;
|
|
111
|
-
this.triggerEvent('networkchange',
|
|
112
|
-
{ isConnected: false } as any);
|
|
113
|
-
this.isOffline = true;
|
|
114
|
-
};
|
|
115
|
-
|
|
116
|
-
checkNetworkConnection() {
|
|
117
|
-
const networkConfig: any = config.get('network.checkConnection');
|
|
118
|
-
this.pollingInterval = Number(networkConfig?.pollingInterval);
|
|
119
|
-
this.pollingTimeout = Number(networkConfig?.pollingTimeout);
|
|
120
|
-
const enableCheckNetwork: any = Boolean(networkConfig?.enableCheckNetwork) ?? false;
|
|
121
|
-
if (enableCheckNetwork) {
|
|
122
|
-
window.setInterval(
|
|
123
|
-
this.doOnlineCheck,
|
|
124
|
-
this.pollingInterval || DEFAULT_POLLING_INTERVAL,
|
|
125
|
-
);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
74
|
// MARK: Interface implemented by individual platform-specific drivers
|
|
130
75
|
|
|
131
76
|
abstract initDevice(): Promise<void>;
|
|
@@ -260,7 +205,7 @@ export abstract class DeviceBase<
|
|
|
260
205
|
}
|
|
261
206
|
|
|
262
207
|
isBackOrEscape(event: MouseEvent | KeyboardEvent) {
|
|
263
|
-
return BACK.is(event as KeyboardEvent)
|
|
208
|
+
return BACK.is(event as KeyboardEvent);
|
|
264
209
|
}
|
|
265
210
|
|
|
266
211
|
getDeviceClass() : string {
|
|
@@ -272,8 +217,4 @@ export abstract class DeviceBase<
|
|
|
272
217
|
isMouseUsed() {
|
|
273
218
|
return this.isMouseActive;
|
|
274
219
|
}
|
|
275
|
-
|
|
276
|
-
getResolution() {
|
|
277
|
-
return { width: window.screen?.width, height: window.screen?.height };
|
|
278
|
-
}
|
|
279
220
|
}
|
|
@@ -12,25 +12,21 @@ export class Key {
|
|
|
12
12
|
|
|
13
13
|
alternativeKeyCodes: number[];
|
|
14
14
|
|
|
15
|
-
key: string;
|
|
16
|
-
|
|
17
15
|
constructor({
|
|
18
16
|
id,
|
|
19
17
|
code = '',
|
|
20
18
|
keyCode = 0,
|
|
21
19
|
alternativeCodes = [],
|
|
22
20
|
alternativeKeyCodes = [],
|
|
23
|
-
key = '',
|
|
24
21
|
}: Partial<KeyConfig> = {}) {
|
|
25
22
|
this.id = id!;
|
|
26
23
|
this.code = code;
|
|
27
24
|
this.keyCode = keyCode;
|
|
28
25
|
this.alternativeCodes = alternativeCodes;
|
|
29
26
|
this.alternativeKeyCodes = alternativeKeyCodes;
|
|
30
|
-
this.key = key;
|
|
31
27
|
}
|
|
32
28
|
|
|
33
|
-
is({ keyCode, code
|
|
29
|
+
is({ keyCode, code }: KeyboardEvent) {
|
|
34
30
|
return Boolean(
|
|
35
31
|
code && ( // empty string code means unknown/invalid --> should not compare
|
|
36
32
|
code === this.code
|
|
@@ -39,9 +35,6 @@ export class Key {
|
|
|
39
35
|
|| keyCode && ( // keyCode 0 means unknown/invalid --> should not compare
|
|
40
36
|
keyCode === this.keyCode
|
|
41
37
|
|| this.alternativeKeyCodes.length && includes(this.alternativeKeyCodes, keyCode)
|
|
42
|
-
)
|
|
43
|
-
|| key && ( // empty string code means unknown/invalid --> should not compare
|
|
44
|
-
key === this.key
|
|
45
38
|
),
|
|
46
39
|
);
|
|
47
40
|
}
|
|
@@ -320,10 +320,6 @@ export const GUIDE = new Key({
|
|
|
320
320
|
keyCode: 458,
|
|
321
321
|
});
|
|
322
322
|
|
|
323
|
-
export const SUBTITLES = new Key({
|
|
324
|
-
id: 'SUBTITLES',
|
|
325
|
-
});
|
|
326
|
-
|
|
327
323
|
// MARK: Xbox specials
|
|
328
324
|
export const GAMEPAD_LEFT_THUMBSTICK_UP = new Key({
|
|
329
325
|
id: 'GAMEPAD_LEFT_THUMBSTICK_UP',
|
|
@@ -6,12 +6,11 @@ import * as KeyMap from './KeyMap';
|
|
|
6
6
|
export const overrideValues = (map: Partial<Record<keyof KeycodeKeyMap, Partial<Key>>>) => {
|
|
7
7
|
// @ts-ignore - map and KeyMap have same keys
|
|
8
8
|
forEach(Object.entries(map), ([keyName, {
|
|
9
|
-
keyCode, code, alternativeKeyCodes, alternativeCodes,
|
|
9
|
+
keyCode, code, alternativeKeyCodes, alternativeCodes,
|
|
10
10
|
}]: [keyof typeof import('./KeyMap'), Partial<Key>]) => {
|
|
11
11
|
if (typeof keyCode === 'number') KeyMap[keyName].keyCode = keyCode;
|
|
12
12
|
if (typeof code === 'string') KeyMap[keyName].code = code;
|
|
13
13
|
if (alternativeKeyCodes) KeyMap[keyName].alternativeKeyCodes = alternativeKeyCodes;
|
|
14
14
|
if (alternativeCodes) KeyMap[keyName].alternativeCodes = alternativeCodes;
|
|
15
|
-
if (key) KeyMap[keyName].key = key;
|
|
16
15
|
});
|
|
17
16
|
};
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
type NetworkChangeListener = (payload: { isConnected: boolean }) => void;
|
|
2
2
|
type VisibilityChangeListener = (payload: { isVisible: boolean }) => void;
|
|
3
3
|
type MouseActiveListener = (payload: { isMouseActive: boolean }) => void;
|
|
4
|
-
type CCToggleListener = (payload: { isEnabled: boolean }) => void;
|
|
5
4
|
|
|
6
5
|
export interface DeviceEventMap {
|
|
7
6
|
'networkchange': NetworkChangeListener,
|
|
8
7
|
'visibilitychange': VisibilityChangeListener,
|
|
9
8
|
'mouseactive': MouseActiveListener,
|
|
10
|
-
'cctoggle': CCToggleListener,
|
|
11
9
|
}
|
|
@@ -9,14 +9,6 @@ export const getKeyMap = () => {
|
|
|
9
9
|
VOL_UP: { code: 'KeyU', keyCode: 85 },
|
|
10
10
|
VOL_DOWN: { code: 'KeyJ', keyCode: 74 },
|
|
11
11
|
MUTE: { code: 'KeyM', keyCode: 77 },
|
|
12
|
-
PLAY: { code: 'KeyO', keyCode: 79 },
|
|
13
|
-
PAUSE: { code: 'KeyP', keyCode: 80 },
|
|
14
|
-
PLAYPAUSE: { code: 'Space', keyCode: 32 },
|
|
15
|
-
FF: { code: 'Period', keyCode: 190 },
|
|
16
|
-
REW: { code: 'Comma', keyCode: 188 },
|
|
17
|
-
STOP: { code: 'Escape', keyCode: 27 },
|
|
18
|
-
SUBTITLES: { code: 'KeyS', keyCode: 83 },
|
|
19
|
-
REC: { code: 'KeyI', keyCode: 73 },
|
|
20
12
|
});
|
|
21
13
|
return generateKeyCodeKeyMap();
|
|
22
14
|
};
|
|
@@ -51,7 +51,6 @@ export function getKeyMap() {
|
|
|
51
51
|
EXIT: { keyCode: EntoneInput.KEY_EXIT },
|
|
52
52
|
INFO: { keyCode: EntoneInput.KEY_INFO },
|
|
53
53
|
GUIDE: { keyCode: EntoneInput.KEY_GUIDE },
|
|
54
|
-
SUBTITLES: { keyCode: EntoneInput.KEY_SUBTITLE },
|
|
55
54
|
});
|
|
56
55
|
return KeyMap.generateKeyCodeKeyMap();
|
|
57
56
|
}
|
|
@@ -49,7 +49,6 @@ export class TizenKeys {
|
|
|
49
49
|
tizen.tvinputdevice.registerKey('PreviousChannel');
|
|
50
50
|
tizen.tvinputdevice.registerKey('Info');
|
|
51
51
|
tizen.tvinputdevice.registerKey('Guide');
|
|
52
|
-
tizen.tvinputdevice.registerKey('Caption');
|
|
53
52
|
}
|
|
54
53
|
|
|
55
54
|
buildKeyMap(keyCodeMap: KeyCodeMap) {
|
|
@@ -85,7 +84,6 @@ export class TizenKeys {
|
|
|
85
84
|
EXIT: { keyCode: keyCodeMap.Exit },
|
|
86
85
|
INFO: { keyCode: keyCodeMap.Info },
|
|
87
86
|
GUIDE: { keyCode: keyCodeMap.Guide },
|
|
88
|
-
SUBTITLES: { keyCode: keyCodeMap.Caption },
|
|
89
87
|
});
|
|
90
88
|
this.keyMap = KeyMap.generateKeyCodeKeyMap();
|
|
91
89
|
}
|
|
@@ -43,7 +43,7 @@ export class DeviceVidaa extends DeviceBase {
|
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
async getManufacturerName(): Promise<string> {
|
|
46
|
-
return
|
|
46
|
+
return 'Hisense';
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
async getPlatformName(): Promise<string> {
|
|
@@ -56,8 +56,7 @@ export class DeviceVidaa extends DeviceBase {
|
|
|
56
56
|
}
|
|
57
57
|
|
|
58
58
|
async getDeviceName(): Promise<string> {
|
|
59
|
-
|
|
60
|
-
return `${manufacturerName} VIDAA ${await this.getModelName()}`.trim();
|
|
59
|
+
return `Hisense VIDAA ${await this.getModelName()}`.trim();
|
|
61
60
|
}
|
|
62
61
|
|
|
63
62
|
async getModelName(): Promise<string> {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HisenseVidaaApi, HisenseVidaaKeys } from '../types';
|
|
2
2
|
|
|
3
3
|
export const mockHisenseVidaaApi: HisenseVidaaApi = {
|
|
4
|
-
Hisense_GetBrand: () => '
|
|
4
|
+
Hisense_GetBrand: () => 'hisense',
|
|
5
5
|
Hisense_GetModelName: () => '5U61FQEVS',
|
|
6
6
|
Hisense_GetFirmWareVersion: () => 'V0000.01.00Q.L0301',
|
|
7
7
|
Hisense_Get4KSupportState: () => true,
|
|
@@ -49,8 +49,6 @@ export const getKeyMap = () => {
|
|
|
49
49
|
CHANNEL_UP: { keyCode: window.VK_CHANNEL_UP || 427 },
|
|
50
50
|
CHANNEL_DOWN: { keyCode: window.VK_CHANNEL_DOWN || 428 },
|
|
51
51
|
INFO: { keyCode: window.VK_INFO },
|
|
52
|
-
// VK_SUBTITLE defined on 2019, not on 2021.
|
|
53
|
-
SUBTITLES: { keyCode: window.VK_SUBTITLE || 460 },
|
|
54
52
|
});
|
|
55
53
|
return KeyMap.generateKeyCodeKeyMap();
|
|
56
54
|
};
|
|
@@ -95,15 +95,7 @@ export class DeviceWebos extends DeviceBase {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
initMouseActiveListener() {
|
|
98
|
-
// checks if mouse is already being used since startup - PRDSAPPSBW-1005
|
|
99
|
-
const mouseActiveAtStartupHandler = () => {
|
|
100
|
-
document.removeEventListener('mousemove', mouseActiveAtStartupHandler);
|
|
101
|
-
this.isMouseActive = true;
|
|
102
|
-
this.triggerEvent('mouseactive', { isMouseActive: true });
|
|
103
|
-
};
|
|
104
|
-
document.addEventListener('mousemove', mouseActiveAtStartupHandler);
|
|
105
98
|
document.addEventListener('cursorStateChange', (event) => {
|
|
106
|
-
document.removeEventListener('mousemove', mouseActiveAtStartupHandler);
|
|
107
99
|
// @ts-ignore - the LG event has this structure.
|
|
108
100
|
this.isMouseActive = event.detail.visibility;
|
|
109
101
|
this.triggerEvent('mouseactive', {
|
|
@@ -2,9 +2,8 @@ import { generateKeyCodeKeyMap, overrideValues } from '@24i/bigscreen-sdk/driver
|
|
|
2
2
|
|
|
3
3
|
export const getKeyMap = () => {
|
|
4
4
|
overrideValues({
|
|
5
|
-
BACK: { keyCode: 461
|
|
5
|
+
BACK: { keyCode: 461 },
|
|
6
6
|
TXT: { keyCode: 110 },
|
|
7
|
-
SUBTITLES: { keyCode: 460 },
|
|
8
7
|
});
|
|
9
8
|
return generateKeyCodeKeyMap();
|
|
10
9
|
};
|