@vkontakte/videoplayer-interactive 1.0.19-dev.100e5528.0 → 1.0.19-dev.1ff354f7.0
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/es2015.cjs.js +6 -6
- package/es2015.esm.js +6 -6
- package/es2018.cjs.js +6 -6
- package/es2018.esm.js +6 -6
- package/esnext.cjs.js +6 -6
- package/esnext.esm.js +5 -5
- package/evergreen.esm.js +6 -6
- package/package.json +4 -4
- package/types/index.d.ts +1 -1
- package/types/modules/Graph/Graph.d.ts +14 -10
- package/types/modules/Interactives/Interactives.d.ts +95 -83
- package/types/modules/Interactives/Layout.d.ts +11 -7
- package/types/modules/Interactives/controls/AreaControl.d.ts +2 -11
- package/types/modules/Interactives/controls/ButtonControl.d.ts +2 -11
- package/types/modules/Interactives/controls/Control.d.ts +21 -12
- package/types/modules/Interactives/controls/TextControl.d.ts +2 -11
- package/types/modules/Interactives/controls/index.d.ts +4 -3
- package/types/modules/Interactives/controls/types.d.ts +25 -0
- package/types/modules/Interactives/index.d.ts +4 -4
- package/types/modules/Interactives/types.d.ts +40 -4
- package/types/modules/Interactives/utils/HistoryController.d.ts +7 -7
- package/types/modules/Interactives/utils/getInteractiveRanges.d.ts +3 -3
- package/types/modules/Interactives/utils/renderingUtils.d.ts +2 -2
- package/types/modules/ManifestController/Loadable.d.ts +4 -7
- package/types/movika.core/manifest/index.d.ts +4 -0
- package/types/utils/EventManager.d.ts +3 -3
- package/types/utils/Raf.d.ts +1 -1
- package/types/modules/Interactives/controls/constants.d.ts +0 -5
|
@@ -1,7 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { Observable, Subject, ValueSubject } from '@vkontakte/videoplayer-shared';
|
|
2
|
+
import { LatestChapter, LatestManifest } from '../../movika.core/manifest';
|
|
3
|
+
import { type InteractiveRange } from './utils/getInteractiveRanges';
|
|
4
|
+
import type { IOptionalInteractiveOptions } from './types';
|
|
5
|
+
import { IPlayer } from '@vkontakte/videoplayer-core';
|
|
6
|
+
import { InstanceStatistics } from '../../modules/SeamlessController/InstanceManager';
|
|
7
|
+
declare enum INTERACTIVE_APP_STATES {
|
|
8
|
+
created = 0,
|
|
9
|
+
initiated = 1,
|
|
10
|
+
ready = 2,
|
|
11
|
+
destroyed = 3
|
|
12
|
+
}
|
|
13
|
+
export declare class Interactives {
|
|
14
|
+
private subscription;
|
|
15
|
+
private globalEventEmitter;
|
|
16
|
+
private animation;
|
|
17
|
+
private eventManager;
|
|
18
|
+
private seekToInteractiveController;
|
|
19
|
+
private endedRanges;
|
|
20
|
+
private gameControllers;
|
|
21
|
+
private rootElement;
|
|
22
|
+
private factories;
|
|
23
|
+
private isFirstChapterFetched;
|
|
24
|
+
private options;
|
|
25
|
+
private manifestController;
|
|
26
|
+
private resizeManager;
|
|
27
|
+
private historyController;
|
|
28
|
+
private player;
|
|
29
|
+
private interactiveEvents;
|
|
30
|
+
private selectBranches;
|
|
31
|
+
private seamlessController;
|
|
32
|
+
private graph;
|
|
33
|
+
private lastFrame;
|
|
34
|
+
private noInteractionTimeout;
|
|
35
|
+
appState: INTERACTIVE_APP_STATES;
|
|
3
36
|
state: {
|
|
4
|
-
prevChapter$: ValueSubject<
|
|
37
|
+
prevChapter$: ValueSubject<Nullable<import("../../movika.core/manifest/types").Chapter>>;
|
|
5
38
|
isInitialChapter$: ValueSubject<boolean>;
|
|
6
39
|
isFirstChapter$: ValueSubject<boolean>;
|
|
7
40
|
isEndChapter$: ValueSubject<boolean>;
|
|
@@ -9,98 +42,77 @@ export class Interactives {
|
|
|
9
42
|
calledByInteractive$: ValueSubject<boolean>;
|
|
10
43
|
lastChapterChangeWasInitiatedByInteractive$: ValueSubject<boolean>;
|
|
11
44
|
disabledControls$: ValueSubject<boolean>;
|
|
12
|
-
interactiveRanges$: ValueSubject<
|
|
45
|
+
interactiveRanges$: ValueSubject<InteractiveRange[]>;
|
|
13
46
|
isInteractiveTime$: ValueSubject<boolean>;
|
|
14
|
-
statistics$: ValueSubject<
|
|
47
|
+
statistics$: ValueSubject<Nullable<InstanceStatistics>>;
|
|
48
|
+
isSeekable$: ValueSubject<boolean>;
|
|
15
49
|
};
|
|
16
50
|
events: {
|
|
17
|
-
noInteraction$: Subject<
|
|
51
|
+
noInteraction$: Subject<void>;
|
|
18
52
|
};
|
|
19
|
-
options:
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
* @param {string[]} chapterIds
|
|
41
|
-
*/
|
|
42
|
-
setVisitedChapters(chapterIds: string[]): void;
|
|
43
|
-
/**
|
|
44
|
-
* @typedef {Object} VideosInfo
|
|
45
|
-
* @property {string} id
|
|
46
|
-
* @property {string} cover
|
|
47
|
-
* @property {string=} title
|
|
48
|
-
*/
|
|
49
|
-
/**
|
|
50
|
-
* @param {Array<VideosInfo>} videosInfo
|
|
51
|
-
*/
|
|
52
|
-
updateGraphVideosInfo(videosInfo: Array<{
|
|
53
|
-
id: string;
|
|
54
|
-
cover: string;
|
|
55
|
-
title?: string | undefined;
|
|
56
|
-
}>): void;
|
|
57
|
-
/**
|
|
58
|
-
* Set new chapter
|
|
59
|
-
*
|
|
60
|
-
* @async
|
|
61
|
-
* @param {{ chapterId?: string; pushToHistory?: boolean }}
|
|
62
|
-
* @returns {Promise<any>}
|
|
63
|
-
*/
|
|
64
|
-
setChapter({ chapterId, pushToHistory }?: {
|
|
53
|
+
constructor(options: IOptionalInteractiveOptions);
|
|
54
|
+
private clearHistoryIfEnded;
|
|
55
|
+
private initSubscriptions;
|
|
56
|
+
private initSeamless;
|
|
57
|
+
private handleSeamlessPlayerChanged;
|
|
58
|
+
private onPlaybackStarted;
|
|
59
|
+
private handlePositionChange;
|
|
60
|
+
private registerVideoEvents;
|
|
61
|
+
private removeControllers;
|
|
62
|
+
private setGameControllers;
|
|
63
|
+
private filterGameControllers;
|
|
64
|
+
private checkIfSeekable;
|
|
65
|
+
private updateLastEventInfo;
|
|
66
|
+
private pushChapterToHistory;
|
|
67
|
+
private completeInteractiveRange;
|
|
68
|
+
private clearNoInteractionTimeout;
|
|
69
|
+
private reset;
|
|
70
|
+
init(): void;
|
|
71
|
+
setManifest(manifest: any): Promise<LatestManifest | undefined>;
|
|
72
|
+
setPlayer(player: IPlayer): void;
|
|
73
|
+
setChapter({ chapterId, pushToHistory, playPrev }?: {
|
|
65
74
|
chapterId?: string;
|
|
66
75
|
pushToHistory?: boolean;
|
|
67
|
-
|
|
76
|
+
playPrev?: boolean;
|
|
77
|
+
}): Promise<void>;
|
|
78
|
+
getStatEvents(): {
|
|
79
|
+
click$: Observable<unknown>;
|
|
80
|
+
nextMovie$: Observable<unknown>;
|
|
81
|
+
};
|
|
68
82
|
toggleGraphView(show?: boolean): void;
|
|
69
|
-
|
|
83
|
+
setVisitedChapters(chapterIds: string[]): void;
|
|
84
|
+
updateGraphVideosInfo(videosInfo: any): void;
|
|
70
85
|
deadEndCheck(): boolean;
|
|
71
86
|
allControlsAreRemoved(): boolean;
|
|
72
|
-
isEndedExpectation():
|
|
87
|
+
isEndedExpectation(): boolean;
|
|
73
88
|
playPrevChapter(): void;
|
|
74
|
-
setDisabledControls(value:
|
|
75
|
-
isSupport(manifest?:
|
|
89
|
+
setDisabledControls(value: boolean): void;
|
|
90
|
+
isSupport(manifest?: Nullable<import("../../movika.core/manifest/manifest_3_3/manifest").Manifest_3_3>): boolean;
|
|
76
91
|
getInitialVideoInfo(): {
|
|
77
|
-
videoId:
|
|
78
|
-
chapterId:
|
|
92
|
+
videoId: string | null;
|
|
93
|
+
chapterId: string;
|
|
79
94
|
};
|
|
80
|
-
getHistoryState():
|
|
81
|
-
getIsSeekable(): ValueSubject<boolean>;
|
|
82
|
-
getInteractiveRanges(): import("./utils/getInteractiveRanges").ReduceAcc;
|
|
83
|
-
/**
|
|
84
|
-
* Description
|
|
85
|
-
* @param {number|undefined} [offsetMs="3000"]
|
|
86
|
-
* @returns {number | null}
|
|
87
|
-
*/
|
|
88
|
-
getNextInteractiveStartTime(offsetMs?: number | undefined): number | null;
|
|
95
|
+
getHistoryState(): import("./utils/HistoryController").HistoryControllerState;
|
|
89
96
|
/**
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
97
|
+
* @deprecated Используйте this.state.isSeekable$
|
|
98
|
+
*/
|
|
99
|
+
getIsSeekable(): ValueSubject<boolean>;
|
|
100
|
+
getInteractiveRanges(): import("./utils/getInteractiveRanges").InteractiveRanges;
|
|
101
|
+
getNextInteractiveStartTime(offsetMs?: number): number | null;
|
|
102
|
+
getChapterBranches(chapterId?: string): {
|
|
103
|
+
chapter: LatestChapter;
|
|
104
|
+
graph: import("../../movika.core/manifest/manifest_3_3/graph").GraphEditChapter | import("../../movika.core/manifest/manifest_3_3/graph").GraphViewChapter | undefined;
|
|
105
|
+
media: import("../../movika.core/manifest").ManifestVideo;
|
|
106
|
+
}[];
|
|
107
|
+
getCurrentChapter(): {
|
|
108
|
+
chapter: Nullable<import("../../movika.core/manifest/types").Chapter>;
|
|
109
|
+
media: Nullable<import("../../movika.core/manifest/manifest_3_3/manifest").Media>;
|
|
110
|
+
graph: Nullable<import("../../movika.core/manifest/manifest_3_3/graph").GraphDesign>;
|
|
111
|
+
};
|
|
112
|
+
getCurrentManifest(): Nullable<import("../../movika.core/manifest/manifest_3_3/manifest").Manifest_3_3>;
|
|
113
|
+
on(eventName: string, fn: Function): this;
|
|
114
|
+
off(eventName: string, fn: Function): this;
|
|
115
|
+
once(eventName: string, fn: Function): this;
|
|
102
116
|
destroy(): void;
|
|
103
|
-
#private;
|
|
104
117
|
}
|
|
105
|
-
|
|
106
|
-
import { Subject } from '@vkontakte/videoplayer-shared';
|
|
118
|
+
export {};
|
|
@@ -1,9 +1,13 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
layout:
|
|
1
|
+
import { LatestContainer, LatestControlLayoutParams } from '../../movika.core/manifest';
|
|
2
|
+
declare abstract class Layout {
|
|
3
|
+
layout: LatestContainer['layout'];
|
|
4
|
+
protected constructor(layout: LatestContainer['layout']);
|
|
5
|
+
abstract setContainerLayout(target: HTMLElement): any;
|
|
6
|
+
abstract setControlLayout(target: HTMLElement, layoutParams: LatestControlLayoutParams): any;
|
|
4
7
|
}
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
setContainerLayout(target:
|
|
8
|
-
setControlLayout(target:
|
|
8
|
+
export declare class RelativeLayout extends Layout {
|
|
9
|
+
constructor(layout: any);
|
|
10
|
+
setContainerLayout(target: HTMLElement): void;
|
|
11
|
+
setControlLayout(target: HTMLElement, layoutParams: LatestControlLayoutParams): void;
|
|
9
12
|
}
|
|
13
|
+
export {};
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
createView({ parent, layoutFn }: {
|
|
4
|
-
parent: any;
|
|
5
|
-
layoutFn: any;
|
|
6
|
-
}): HTMLDivElement;
|
|
7
|
-
controlEl: HTMLButtonElement | undefined;
|
|
8
|
-
disable(): void;
|
|
9
|
-
enable(): void;
|
|
10
|
-
}
|
|
11
|
-
import { Control } from './Control';
|
|
1
|
+
import { type ControlCreator } from './types';
|
|
2
|
+
export declare const createAreaControl: ControlCreator;
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
createView({ parent, layoutFn }: {
|
|
4
|
-
parent: any;
|
|
5
|
-
layoutFn: any;
|
|
6
|
-
}): HTMLDivElement;
|
|
7
|
-
controlEl: HTMLButtonElement | undefined;
|
|
8
|
-
disable(): void;
|
|
9
|
-
enable(): void;
|
|
10
|
-
}
|
|
11
|
-
import { Control } from './Control';
|
|
1
|
+
import { type ControlCreator } from './types';
|
|
2
|
+
export declare const createButtonControl: ControlCreator;
|
|
@@ -1,13 +1,22 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { LatestControl } from '../../../movika.core/manifest';
|
|
2
|
+
import { ControlEventCallback, CreateViewParams, Dimensions, LayoutCallback } from './types';
|
|
3
|
+
type ControlContainer = {
|
|
4
|
+
element: HTMLElement;
|
|
5
|
+
dimensions: Dimensions;
|
|
6
|
+
};
|
|
7
|
+
export default abstract class Control {
|
|
8
|
+
control: LatestControl;
|
|
9
|
+
protected container: Nullable<ControlContainer>;
|
|
10
|
+
protected controlElement: Nullable<HTMLElement>;
|
|
11
|
+
private clickListener;
|
|
12
|
+
protected constructor(control: LatestControl);
|
|
13
|
+
abstract createView(params: CreateViewParams): void;
|
|
14
|
+
abstract getElement(): Nullable<HTMLElement>;
|
|
15
|
+
abstract disable(): void;
|
|
16
|
+
abstract enable(): void;
|
|
17
|
+
protected createContainerElement(layoutCallback: LayoutCallback): void;
|
|
18
|
+
private createClickListener;
|
|
19
|
+
setEvents(callback: ControlEventCallback): void;
|
|
20
|
+
removeListeners(): void;
|
|
13
21
|
}
|
|
22
|
+
export {};
|
|
@@ -1,11 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
createView({ parent, layoutFn }: {
|
|
4
|
-
parent: any;
|
|
5
|
-
layoutFn: any;
|
|
6
|
-
}): HTMLDivElement;
|
|
7
|
-
controlEl: HTMLDivElement | undefined;
|
|
8
|
-
disable(): void;
|
|
9
|
-
enable(): void;
|
|
10
|
-
}
|
|
11
|
-
import { Control } from './Control';
|
|
1
|
+
import { type ControlCreator } from './types';
|
|
2
|
+
export declare const createTextControl: ControlCreator;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export * from
|
|
2
|
-
export * from
|
|
3
|
-
export * from
|
|
1
|
+
export * from './AreaControl.js';
|
|
2
|
+
export * from './ButtonControl.js';
|
|
3
|
+
export * from './Control';
|
|
4
|
+
export * from './types';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ControlEvent, ControlLayoutParams } from '../../../movika.core/manifest/manifest_3_3/control';
|
|
2
|
+
import { LatestControl } from '../../../movika.core/manifest';
|
|
3
|
+
import Control from '../../../modules/Interactives/controls/Control';
|
|
4
|
+
export declare enum CONTROLLER_IDS {
|
|
5
|
+
AREA = "int_area",
|
|
6
|
+
TEXT = "int_text",
|
|
7
|
+
BUTTON = "int_bttn"
|
|
8
|
+
}
|
|
9
|
+
export type Dimensions = {
|
|
10
|
+
width: string;
|
|
11
|
+
height: string;
|
|
12
|
+
};
|
|
13
|
+
export type LayoutCallback = (element: HTMLElement, controlLayoutParams: ControlLayoutParams) => void;
|
|
14
|
+
export type CreateViewParams = {
|
|
15
|
+
parentElement: HTMLElement;
|
|
16
|
+
layoutCallback: LayoutCallback;
|
|
17
|
+
};
|
|
18
|
+
type ControlEventCallbackParams = {
|
|
19
|
+
action: ControlEvent['action'];
|
|
20
|
+
controlId: string;
|
|
21
|
+
controlType: LatestControl['type'];
|
|
22
|
+
};
|
|
23
|
+
export type ControlEventCallback = (params: ControlEventCallbackParams) => void;
|
|
24
|
+
export type ControlCreator = (control: LatestControl) => Control | undefined;
|
|
25
|
+
export {};
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { Container } from './containers/index';
|
|
2
2
|
export { Interactives } from './Interactives';
|
|
3
3
|
export { EVENT_NAMES, graphEventTypes, interactivesEventTypes } from './utils/events';
|
|
4
|
-
export type {
|
|
4
|
+
export type { VideoInfo, InteractiveProjectInfo } from './types';
|
|
5
5
|
export { isLastChapter, hasEndTemplate } from './utils/gameUtils';
|
|
6
|
+
export type { InteractiveRange } from './utils/getInteractiveRanges';
|
|
6
7
|
export declare const utils: {
|
|
7
8
|
Container: typeof Container;
|
|
8
9
|
createChoiceContainer: (container: any, rootElement: any) => import("./containers/ChoiceContainer").ChoiceContainer | undefined;
|
|
9
|
-
createAreaControl:
|
|
10
|
-
createButtonControl:
|
|
11
|
-
createRelativeLayout: (layout: any) => import("./Layout").RelativeLayout | undefined;
|
|
10
|
+
createAreaControl: import("./controls").ControlCreator;
|
|
11
|
+
createButtonControl: import("./controls").ControlCreator;
|
|
12
12
|
getRootEl: () => Element | null;
|
|
13
13
|
classnamesPrefix: string;
|
|
14
14
|
};
|
|
@@ -1,9 +1,45 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
};
|
|
1
|
+
import type { InterfaceLanguage } from '@vkontakte/videoplayer-shared';
|
|
2
|
+
import type { IOptionalTuningConfig } from '@vkontakte/videoplayer-core';
|
|
3
|
+
import type { IOneStat } from '@vkontakte/videoplayer-statistics';
|
|
4
|
+
import type { Loaders } from '../../modules/ManifestController/Loadable';
|
|
5
|
+
import type { HistoryApi, HistorySettings } from '../../modules/Interactives/utils/HistoryController';
|
|
5
6
|
export type VideoInfo = {
|
|
6
7
|
id: string;
|
|
7
8
|
cover: string;
|
|
8
9
|
title?: string;
|
|
9
10
|
};
|
|
11
|
+
export type InteractiveProjectInfo = {
|
|
12
|
+
videoId: string;
|
|
13
|
+
pid?: string;
|
|
14
|
+
title?: string;
|
|
15
|
+
variantPayloadType?: string;
|
|
16
|
+
};
|
|
17
|
+
export type RequiredOptions = 'parentElement' | 'fullscreenTargetElement';
|
|
18
|
+
export type IOptionalInteractiveOptions = Partial<Omit<IInteractiveOptions, RequiredOptions | 'config'>> & Required<Pick<IInteractiveOptions, RequiredOptions>> & {
|
|
19
|
+
config?: Partial<IInteractiveOptions['config']>;
|
|
20
|
+
};
|
|
21
|
+
export interface IInteractiveOptions {
|
|
22
|
+
parentElement: HTMLElement;
|
|
23
|
+
fullscreenTargetElement: HTMLElement;
|
|
24
|
+
lang: InterfaceLanguage | string;
|
|
25
|
+
config: {
|
|
26
|
+
historyMaxLength: number;
|
|
27
|
+
noInteractionEventTimeout: number;
|
|
28
|
+
};
|
|
29
|
+
graph: boolean;
|
|
30
|
+
lastFrame: boolean;
|
|
31
|
+
initSeamless: boolean;
|
|
32
|
+
permanentTextControls: boolean;
|
|
33
|
+
loaders: Partial<Loaders>;
|
|
34
|
+
initChapterId?: string;
|
|
35
|
+
projectInfo?: InteractiveProjectInfo;
|
|
36
|
+
historyApi?: HistoryApi;
|
|
37
|
+
historySettings?: HistorySettings;
|
|
38
|
+
coreConfig?: IOptionalTuningConfig;
|
|
39
|
+
vkVideoLoader?: (owner_id: string, video_id: string) => unknown;
|
|
40
|
+
createOneStat?: (video: any, configOverwrite?: any) => IOneStat | undefined;
|
|
41
|
+
/**
|
|
42
|
+
* @deprecated
|
|
43
|
+
* */
|
|
44
|
+
disableControlsOnPause?: boolean;
|
|
45
|
+
}
|
|
@@ -3,22 +3,22 @@ import type { IValueSubject } from '@vkontakte/videoplayer-shared';
|
|
|
3
3
|
import { EventEmitter } from '../../../utils/EventEmitter';
|
|
4
4
|
import type { VideoId } from '../../../movika.core/manifest';
|
|
5
5
|
import type { Interactives } from '../../../modules/Interactives';
|
|
6
|
-
interface HistoryApi {
|
|
7
|
-
get: (
|
|
8
|
-
save: (
|
|
6
|
+
export interface HistoryApi {
|
|
7
|
+
get: (rawId: string) => Promise<number[]>;
|
|
8
|
+
save: (rawId: string, videoIds: number[]) => Promise<void>;
|
|
9
9
|
}
|
|
10
|
-
interface HistorySettings {
|
|
10
|
+
export interface HistorySettings {
|
|
11
11
|
maxLength: number;
|
|
12
12
|
initChapterId?: string;
|
|
13
13
|
}
|
|
14
14
|
interface HistoryControllerParams {
|
|
15
|
-
videoId: string;
|
|
16
15
|
globalEventEmitter: EventEmitter;
|
|
17
16
|
interactiveController: Interactives;
|
|
18
17
|
settings: HistorySettings;
|
|
18
|
+
videoId?: string;
|
|
19
19
|
historyApi?: Nullable<HistoryApi>;
|
|
20
20
|
}
|
|
21
|
-
interface HistoryControllerState {
|
|
21
|
+
export interface HistoryControllerState {
|
|
22
22
|
history$: IValueSubject<string[]>;
|
|
23
23
|
hasPrevChapter$: IValueSubject<boolean>;
|
|
24
24
|
prevChapter$: IValueSubject<Nullable<string>>;
|
|
@@ -27,7 +27,7 @@ interface HistoryControllerState {
|
|
|
27
27
|
}
|
|
28
28
|
export default class HistoryController {
|
|
29
29
|
#private;
|
|
30
|
-
state:
|
|
30
|
+
state: HistoryControllerState;
|
|
31
31
|
constructor({ globalEventEmitter, videoId, interactiveController, historyApi, settings }: HistoryControllerParams);
|
|
32
32
|
setManifest(manifest: any): Promise<void>;
|
|
33
33
|
get inited(): boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { type Container } from '../../../movika.core/manifest';
|
|
2
|
-
export type
|
|
2
|
+
export type InteractiveRange = {
|
|
3
3
|
subjects: string[];
|
|
4
4
|
range: [number, number];
|
|
5
5
|
};
|
|
6
|
-
export type
|
|
7
|
-
export declare const getInteractiveRanges: (containers?: Container[]) =>
|
|
6
|
+
export type InteractiveRanges = Array<InteractiveRange>;
|
|
7
|
+
export declare const getInteractiveRanges: (containers?: Container[]) => InteractiveRanges;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const classnamesPrefix: "
|
|
2
|
-
export const rootElClassName: "
|
|
1
|
+
export const classnamesPrefix: "interactive";
|
|
2
|
+
export const rootElClassName: "interactive-controls-container";
|
|
3
3
|
export function getRootEl(): Element | null;
|
|
4
4
|
export const DISABLE_OPACITY: 0.4;
|
|
5
5
|
export namespace controlStylesFallbacks {
|
|
@@ -1,14 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
readonly manifestLoaders: "manifestLoaders";
|
|
4
|
-
};
|
|
5
|
-
type LoaderTypes = (typeof LoaderTypes)[keyof typeof LoaderTypes];
|
|
1
|
+
type LoaderTypes = 'chapterLoaders' | 'manifestLoaders';
|
|
2
|
+
export type Loaders = Record<LoaderTypes, Function[]>;
|
|
6
3
|
interface ILoadable {
|
|
7
4
|
exec(type: LoaderTypes, inputArg: Record<string, any>): Promise<any>;
|
|
8
5
|
}
|
|
9
6
|
export declare class Loadable implements ILoadable {
|
|
10
|
-
loaders:
|
|
11
|
-
constructor(loaders:
|
|
7
|
+
loaders: Loaders;
|
|
8
|
+
constructor(loaders: Partial<Loaders>);
|
|
12
9
|
exec(type: LoaderTypes, inputArg: Record<string, any>): Promise<any>;
|
|
13
10
|
}
|
|
14
11
|
export declare function addErrorMessage(errObj: Record<string, Array<string>> | null, loaderName: string, message: string): Record<string, Array<string>>;
|
|
@@ -2,6 +2,7 @@ import type { Chapter as Chapter_3_2, ChapterContainer as ChapterContainer_3_2,
|
|
|
2
2
|
import type { Manifest_3_2, ManifestVideo as ManifestVideo_3_2, ManifestVideoVariant as ManifestVideoVariant_3_2, Media as Media_3_2, Metadata as Metadata_3_2 } from './manifest_3_2/manifest';
|
|
3
3
|
import type { Chapter as Chapter_3_3, ChapterContainer as ChapterContainer_3_3, ChapterBranch as ChapterBranch_3_3 } from './manifest_3_3/chapter';
|
|
4
4
|
import type { Manifest_3_3, ManifestVideo as ManifestVideo_3_3, ManifestVideoVariant as ManifestVideoVariant_3_3, Media as Media_3_3, Metadata as Metadata_3_3, ManifestVideoVariantType, Extensions, Standard } from './manifest_3_3/manifest';
|
|
5
|
+
import type { Control, ControlLayoutParams } from './manifest_3_3/control';
|
|
5
6
|
export type Container = ChapterContainer_3_2 | ChapterContainer_3_3;
|
|
6
7
|
export type Media = Media_3_2 | Media_3_3;
|
|
7
8
|
export type Chapter = Chapter_3_2 | Chapter_3_3;
|
|
@@ -14,6 +15,9 @@ export type { ManifestVideoVariantType, Extensions, Standard };
|
|
|
14
15
|
export type LatestMedia = Media_3_3;
|
|
15
16
|
export type LatestChapter = Chapter_3_3;
|
|
16
17
|
export type LatestManifest = Manifest_3_3;
|
|
18
|
+
export type LatestContainer = ChapterContainer_3_3;
|
|
19
|
+
export type LatestControl = Control;
|
|
20
|
+
export type LatestControlLayoutParams = ControlLayoutParams;
|
|
17
21
|
export * from './migrations';
|
|
18
22
|
export * from './types';
|
|
19
23
|
export * from './utils';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Binding } from './Binding';
|
|
2
2
|
import { MultiMap } from './MultiMap';
|
|
3
3
|
import type { HtmlEventType } from '../types';
|
|
4
|
-
type OptionsType =
|
|
4
|
+
type OptionsType = boolean | AddEventListenerOptions;
|
|
5
5
|
export declare class EventManager {
|
|
6
6
|
bindingMap: MultiMap<Binding> | null;
|
|
7
7
|
release(): void;
|
|
8
|
-
listen(target: Element, type: HtmlEventType, listener: EventListener, options
|
|
9
|
-
listenOnce(target: Element, type: HtmlEventType, listener: EventListener, options
|
|
8
|
+
listen(target: Element, type: HtmlEventType, listener: EventListener, options?: OptionsType): void;
|
|
9
|
+
listenOnce(target: Element, type: HtmlEventType, listener: EventListener, options?: OptionsType): void;
|
|
10
10
|
unlisten(target: Element, type: HtmlEventType, listener: EventListener): void;
|
|
11
11
|
removeAll(): void;
|
|
12
12
|
}
|
package/types/utils/Raf.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ export declare class Raf {
|
|
|
2
2
|
raf: number | undefined;
|
|
3
3
|
fn: VoidFunction | undefined;
|
|
4
4
|
fns: Array<VoidFunction>;
|
|
5
|
-
constructor(fn
|
|
5
|
+
constructor(fn?: VoidFunction);
|
|
6
6
|
addFn: (fn: VoidFunction, shouldRequest?: boolean) => void;
|
|
7
7
|
removeFn: (fn: VoidFunction, shouldRequest?: boolean) => void;
|
|
8
8
|
updateFn: () => void;
|