@24i/bigscreen-sdk 1.0.51 → 1.0.53-alpha.2837
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/package.json +4 -3
- package/packages/analytics/src/clients/GoogleAnalytics/constants.ts +10 -2
- package/packages/analytics/src/clients/GoogleAnalytics/interface.ts +5 -1
- package/packages/analytics/src/clients/TwentyFourIQ/TwentyFourIQClient.ts +2 -0
- package/packages/analytics/src/clients/TwentyFourIQ/constants.ts +15 -4
- package/packages/analytics/src/clients/TwentyFourIQ/interface.ts +7 -4
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdEvent.ts +20 -0
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBase.ts +2 -0
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapBuffering.ts +1 -1
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerClose.ts +3 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapPlayerOpen.ts +1 -1
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapSceneView.ts +1 -1
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapScroll.ts +1 -1
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoComplete.ts +3 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoPause.ts +3 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoProgress.ts +3 -2
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStart.ts +1 -1
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapVideoStop.ts +1 -1
- package/packages/analytics/src/clients/TwentyFourIQ/types.ts +42 -33
- package/packages/driver-androidtv/src/DeviceAndroidTV.ts +14 -0
- package/packages/driver-androidtv/src/__mocks__/javaScriptBridge.ts +5 -0
- package/packages/driver-androidtv/src/index.ts +1 -0
- package/packages/driver-androidtv/src/types.ts +22 -0
- package/packages/driver-base/src/DeviceBase.ts +14 -0
- package/packages/driver-base/src/__mocks__/DeviceBase.ts +13 -0
- package/packages/driver-base/src/index.ts +3 -0
- package/packages/driver-base/src/types/InAppPurchase.ts +25 -0
- package/packages/driver-browser/src/DeviceBrowser.ts +14 -0
- package/packages/driver-entone/src/DeviceEntone.ts +19 -1
- package/packages/driver-firetv/src/DeviceFireTV.ts +59 -1
- package/packages/driver-firetv/src/__mocks__/javaScriptBridge.ts +5 -0
- package/packages/driver-firetv/src/types.ts +1 -0
- package/packages/driver-hbbtv/src/DeviceHbbTV.ts +14 -0
- package/packages/driver-kreatv/src/DeviceKreaTV.ts +14 -0
- package/packages/driver-saphi/src/DeviceSaphi.ts +14 -0
- package/packages/driver-smartcast/src/DeviceSmartCast.ts +49 -0
- package/packages/driver-smartcast/src/__mocks__/api.ts +26 -0
- package/packages/driver-smartcast/src/types.ts +36 -0
- package/packages/driver-tizen/src/DeviceTizen.ts +102 -7
- package/packages/driver-tizen/src/ITizen.ts +15116 -202
- package/packages/driver-tizen/src/IWebapis.ts +8641 -92
- package/packages/driver-tizen/src/TizenKeys.ts +2 -2
- package/packages/driver-tizen/src/__mocks__/tizen.ts +0 -8
- package/packages/driver-tizen/src/constants.ts +1 -195
- package/packages/driver-vidaa/src/DeviceVidaa.ts +14 -0
- package/packages/driver-webos/src/DeviceWebos.ts +14 -0
- package/packages/driver-xbox/src/DeviceXbox.ts +19 -1
- package/packages/input/src/Input.tsx +6 -0
- package/packages/list/DoubleList/README.md +105 -0
- package/packages/list/DoubleList/index.ts +1 -0
- package/packages/list/src/DoubleList/DoubleList.tsx +267 -0
- package/packages/list/src/DoubleList/DoubleListAdapter.ts +72 -0
- package/packages/list/src/DoubleList/config.ts +15 -0
- package/packages/list/src/DoubleList/interface.ts +82 -0
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdLoaded.ts +0 -13
- package/packages/analytics/src/clients/TwentyFourIQ/mappers/mapAdSkipped.ts +0 -16
- package/packages/driver-tizen/src/types.ts +0 -14
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { createRef } from '@24i/bigscreen-sdk/jsx';
|
|
2
|
+
import { ListBase } from '../Base';
|
|
3
|
+
import { UnifiedListController } from '../UnifiedListController/UnifiedListController';
|
|
4
|
+
import { RowList, RowType, ROW, Props } from './interface';
|
|
5
|
+
import { Item } from '../types';
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* DoubleListAdapter class to manage two RowList instances
|
|
9
|
+
*/
|
|
10
|
+
export class DoubleListAdapter<T extends Item<U>, U> {
|
|
11
|
+
readonly topRowList: RowList<T, U>;
|
|
12
|
+
|
|
13
|
+
readonly bottomRowList: RowList<T, U>;
|
|
14
|
+
|
|
15
|
+
constructor(props: Props<T, U>) {
|
|
16
|
+
this.topRowList = new RowList<T, U>(createRef<ListBase<T, U>>(), props);
|
|
17
|
+
this.bottomRowList = new RowList<T, U>(createRef<ListBase<T, U>>(), props);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
mount(): void {
|
|
21
|
+
this.topRowList.controller.componentDidMount();
|
|
22
|
+
this.bottomRowList.controller.componentDidMount();
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
unmount(): void {
|
|
26
|
+
this.topRowList.controller.componentWillUnmount();
|
|
27
|
+
this.bottomRowList.controller.componentWillUnmount();
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
splitData = (data: U[]): { topData: U[]; bottomData: U[] } => {
|
|
31
|
+
const topData: U[] = [];
|
|
32
|
+
const bottomData: U[] = [];
|
|
33
|
+
data.forEach((item, index) => ((index % 2 === 0) ? topData : bottomData).push(item));
|
|
34
|
+
return { topData, bottomData };
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
appendData(data: U[]): void {
|
|
38
|
+
const { topData, bottomData } = this.splitData(data);
|
|
39
|
+
this.topRowList.appendData(topData);
|
|
40
|
+
this.bottomRowList.appendData(bottomData);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
getAbsoluteIndex = (row: RowType, columnIndex: number): number => (
|
|
44
|
+
row === ROW.TOP ? columnIndex * 2 : (columnIndex * 2) + 1
|
|
45
|
+
);
|
|
46
|
+
|
|
47
|
+
prependData(data: U[]): void {
|
|
48
|
+
const { topData, bottomData } = this.splitData(data);
|
|
49
|
+
this.topRowList.prependData(topData);
|
|
50
|
+
this.bottomRowList.prependData(bottomData);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
getController(row: RowType): UnifiedListController<U> {
|
|
54
|
+
return row === ROW.TOP ? this.topRowList.controller : this.bottomRowList.controller;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
getList(row: RowType): RowList<T, U> {
|
|
58
|
+
return row === ROW.TOP ? this.topRowList : this.bottomRowList;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
getActiveRow(row: RowType): { controller: UnifiedListController<U>; list: RowList<T, U> } {
|
|
62
|
+
return row === ROW.TOP
|
|
63
|
+
? { controller: this.topRowList.controller, list: this.topRowList }
|
|
64
|
+
: { controller: this.bottomRowList.controller, list: this.bottomRowList };
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
getInactiveRow(row: RowType): { controller: UnifiedListController<U>; list: RowList<T, U> } {
|
|
68
|
+
return row === ROW.TOP
|
|
69
|
+
? { controller: this.bottomRowList.controller, list: this.bottomRowList }
|
|
70
|
+
: { controller: this.topRowList.controller, list: this.topRowList };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { AnimationUtils } from '@24i/bigscreen-sdk/animations';
|
|
2
|
+
import { AnimationConfiguration } from '../types';
|
|
3
|
+
import { animate } from '../animate';
|
|
4
|
+
|
|
5
|
+
export const CONFIG = {
|
|
6
|
+
defaultAnimation: {
|
|
7
|
+
normal: {
|
|
8
|
+
time: 700,
|
|
9
|
+
easing: AnimationUtils.easeOutQuart,
|
|
10
|
+
},
|
|
11
|
+
} as AnimationConfiguration,
|
|
12
|
+
animate,
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
export const VISIBLE_ITEMS_OFFSET = 3;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { IFocusable } from '@24i/bigscreen-sdk/focus';
|
|
2
|
+
import { Component } from '@24i/bigscreen-sdk/jsx';
|
|
3
|
+
import { ListBase } from '../Base';
|
|
4
|
+
import { UnifiedListController } from '../UnifiedListController/UnifiedListController';
|
|
5
|
+
import { Item, SharedProps, AnimationConfiguration } from '../types';
|
|
6
|
+
import { CONFIG } from './config';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Constants for row identification
|
|
10
|
+
*/
|
|
11
|
+
export const ROW = {
|
|
12
|
+
TOP: 'top',
|
|
13
|
+
BOTTOM: 'bottom',
|
|
14
|
+
} as const;
|
|
15
|
+
|
|
16
|
+
export type RowType = typeof ROW[keyof typeof ROW];
|
|
17
|
+
|
|
18
|
+
/*
|
|
19
|
+
* Constants for horizontal scroll direction
|
|
20
|
+
*/
|
|
21
|
+
export const DIRECTION = {
|
|
22
|
+
FORWARD: 'forward',
|
|
23
|
+
BACKWARD: 'backward',
|
|
24
|
+
} as const;
|
|
25
|
+
|
|
26
|
+
export type DirectionType = typeof DIRECTION[keyof typeof DIRECTION];
|
|
27
|
+
|
|
28
|
+
export type Props<T extends Item<U>, U> = SharedProps<T, U> & {
|
|
29
|
+
firstScrollStep: number,
|
|
30
|
+
animation?: Partial<AnimationConfiguration>,
|
|
31
|
+
rowClassName?: string,
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Interface for DoubleList component
|
|
36
|
+
*/
|
|
37
|
+
export interface DoubleRowList<T extends Item<U>, U>
|
|
38
|
+
extends IFocusable, Component<SharedProps<T, U>> {
|
|
39
|
+
appendData(data: U[]): void;
|
|
40
|
+
prependData(data: U[]): void;
|
|
41
|
+
scrollTo(index: number, animate?: boolean): void;
|
|
42
|
+
focus(options?: FocusOptions): void;
|
|
43
|
+
forward(): boolean;
|
|
44
|
+
backward(): boolean;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
/*
|
|
48
|
+
* RowList class representing a single row in the DoubleList
|
|
49
|
+
*/
|
|
50
|
+
export class RowList<T extends Item<U>, U> {
|
|
51
|
+
base: React.RefObject<ListBase<T, U>>;
|
|
52
|
+
|
|
53
|
+
props: Props<T, U>;
|
|
54
|
+
|
|
55
|
+
controller: UnifiedListController<U>;
|
|
56
|
+
|
|
57
|
+
constructor(
|
|
58
|
+
base: React.RefObject<ListBase<T, U>>,
|
|
59
|
+
props: Props<T, U>,
|
|
60
|
+
) {
|
|
61
|
+
this.base = base;
|
|
62
|
+
this.props = props;
|
|
63
|
+
this.controller = new UnifiedListController<U>(this as any, CONFIG);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
get current() {
|
|
67
|
+
return this.base.current;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
setIndex(index: number): void {
|
|
71
|
+
if (!this.base.current) return;
|
|
72
|
+
this.base.current.index = index;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
appendData(data: U[]): void {
|
|
76
|
+
this.controller.appendData(data);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
prependData(data: U[]): void {
|
|
80
|
+
this.controller.prependData(data);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import { AnalyticsTriggers } from '@24i/appstage-shared-analytics';
|
|
2
|
-
import { Payload, AdLoadedResult } from '../types';
|
|
3
|
-
import { mapBase } from './mapBase';
|
|
4
|
-
|
|
5
|
-
export const mapAdLoaded = (triggerName: AnalyticsTriggers, payload: Payload): AdLoadedResult => ({
|
|
6
|
-
...mapBase(payload),
|
|
7
|
-
action: triggerName,
|
|
8
|
-
event_trigger: triggerName,
|
|
9
|
-
thing_id: payload.assetId || '',
|
|
10
|
-
attribution_id: payload.attributionId || null,
|
|
11
|
-
player_advertisment_name: '', // TODO: adPayload?.adName,
|
|
12
|
-
player_advertisment_position: 0, // TODO: adPayload?.adPosition,
|
|
13
|
-
});
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { AnalyticsTriggers } from '@24i/appstage-shared-analytics';
|
|
2
|
-
import { Payload, AdSkippedResult } from '../types';
|
|
3
|
-
import { mapBase } from './mapBase';
|
|
4
|
-
|
|
5
|
-
export const mapAdSkipped = (
|
|
6
|
-
triggerName: AnalyticsTriggers,
|
|
7
|
-
payload: Payload,
|
|
8
|
-
): AdSkippedResult => ({
|
|
9
|
-
...mapBase(payload),
|
|
10
|
-
action: triggerName,
|
|
11
|
-
event_trigger: triggerName,
|
|
12
|
-
thing_id: payload.assetId || '',
|
|
13
|
-
attribution_id: payload.attributionId || null,
|
|
14
|
-
player_advertisment_name: '', // TODO: adPayload?.adName,
|
|
15
|
-
player_advertisment_position: 0, // TODO: adPayload?.adPosition,
|
|
16
|
-
});
|