@vkontakte/videoplayer 1.1.96 → 1.1.97-beta.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vkontakte/videoplayer",
3
- "version": "1.1.96",
3
+ "version": "1.1.97-beta.0",
4
4
  "author": "vk.com",
5
5
  "description": "Videoplayer based on the vk.com platform",
6
6
  "homepage": "https://vk.com",
@@ -43,9 +43,9 @@
43
43
  ],
44
44
  "dependencies": {
45
45
  "@adtech/rbadman": "2.2.57",
46
- "@vkontakte/videoplayer-core": "2.0.165",
47
- "@vkontakte/videoplayer-interactive": "1.0.71",
48
- "@vkontakte/videoplayer-shared": "1.0.94",
49
- "@vkontakte/videoplayer-statistics": "1.0.111"
46
+ "@vkontakte/videoplayer-core": "2.0.166-beta.0",
47
+ "@vkontakte/videoplayer-interactive": "1.0.72-beta.0",
48
+ "@vkontakte/videoplayer-shared": "1.0.95-beta.0",
49
+ "@vkontakte/videoplayer-statistics": "1.0.112-beta.0"
50
50
  }
51
51
  }
@@ -215,4 +215,5 @@ export declare class VKVideoPlayer extends HTMLElement {
215
215
  setAutoplayNext(autoplayNext: boolean): void;
216
216
  getTotalViewTime(): Seconds | undefined;
217
217
  private unmountComponent;
218
+ private createTracer;
218
219
  }
@@ -3,7 +3,7 @@ import type { IVKVideoPlayerConfig } from "../types";
3
3
  import type { IUIStatistics } from "../services/statistics";
4
4
  import type { IStore } from "./index";
5
5
  import type { FakeIsPlayingStore, GraphIsOpenedStore, HighlightedMenuItemsStore, InteractiveControlsOpacityStore, LanguageStore, NotificationsStore, PictureInPictureStore, IQoeStore, SeekToInteractiveDisabledTooltipStore, ShowInteractiveTimeIndicatorTooltipStore, SubtitlesStore, QualityStore, PlaybackRateStore } from "./modules";
6
- import type { AppTracer } from "@vkontakte/videoplayer-shared";
6
+ import type { AppTracer, ITracer } from "@vkontakte/videoplayer-shared";
7
7
  import type { Interactives } from "@vkontakte/videoplayer-interactive";
8
8
  export interface ICompositionParams {
9
9
  legacyStore: IStore;
@@ -12,6 +12,7 @@ export interface ICompositionParams {
12
12
  interactiveController: Interactives | undefined;
13
13
  getStatisticsService: () => IUIStatistics | undefined;
14
14
  getAppTracer: () => AppTracer | undefined;
15
+ tracer: ITracer;
15
16
  }
16
17
  export interface ICompositionResult {
17
18
  stores: {
@@ -4,4 +4,4 @@ export type { IStore, IAdsState, IUIState, EnrichedStore } from "./types";
4
4
  * Store приложения.
5
5
  * Если будет слишком большим - можно разделить его на модули
6
6
  */
7
- export declare const createStore: ({ interfaceLanguage, isCyrillicRelatedInterface, initialVideoId, isTouch, isLiveCatchUpMode, isAudioDisabled, canDownload, callbacks, webApi, videoEpisodes: initialVideoEpisodes, previewThumbsData: initialPreviewThumbsData, uiConfig, coreConfig, player: playerInstance, disabledControls, isInteractive, interactiveRanges$, isInteractiveTime$, replayInteractive, stopPlayer, hasInteractiveBranches, playPrevChapterDisabledTooltip, additionalButtons, additionalSettingsMenuItems, additionalContextMenuItems, playPrevVideo, playNextVideo, onVideoChanged, looped, getStatisticsService, internalsExposure, playerView, playerId, metaConfig, getAppTracer, getAdmanWrapper, logger, adsEnabled }: IStoreParams) => IStore;
7
+ export declare const createStore: ({ initialVideoId, isTouch, isLiveCatchUpMode, isAudioDisabled, canDownload, callbacks, webApi, videoEpisodes: initialVideoEpisodes, previewThumbsData: initialPreviewThumbsData, uiConfig, coreConfig, player: playerInstance, disabledControls, isInteractive, interactiveRanges$, isInteractiveTime$, replayInteractive, stopPlayer, hasInteractiveBranches, playPrevChapterDisabledTooltip, additionalButtons, additionalSettingsMenuItems, additionalContextMenuItems, playPrevVideo, playNextVideo, onVideoChanged, looped, getStatisticsService, internalsExposure, playerView, playerId, metaConfig, getAppTracer, getAdmanWrapper, logger, adsEnabled, rootTracer, tracer }: IStoreParams) => IStore;
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Playback Rate Store Module
3
3
  */
4
- export { createPlaybackRateStore, type PlaybackRateStoreDeps, type PlaybackRateStoreState, type PlaybackRateStoreActions, type PlaybackRateStore } from "./playbackRateStore.store";
4
+ export { createPlaybackRateStore, type PlaybackRateStoreDeps, type PlaybackRateStoreState, type PlaybackRateStoreActions, type PlaybackRateStoreExternalActions, type PlaybackRateStore } from "./playbackRateStore.store";
5
5
  export { playbackRateModule } from "./playbackRateStore.module";
6
6
  export { PLAYBACK_RATE_STORE_TOKEN } from "./playbackRateStore.token";
@@ -51,9 +51,13 @@ export interface PlaybackRateStoreActions {
51
51
  decrementPlaybackRate: () => VideoPlaybackRate;
52
52
  changeDoubleForwardOn: (enabled: boolean) => void;
53
53
  }
54
+ export interface PlaybackRateStoreExternalActions {
55
+ setPlaybackRate: (playbackRate: PlaybackRate) => void;
56
+ }
54
57
  export interface PlaybackRateStore {
55
58
  state: PlaybackRateStoreState;
56
59
  actions: PlaybackRateStoreActions;
60
+ externalActions: PlaybackRateStoreExternalActions;
57
61
  }
58
62
  /**
59
63
  * Создаёт playback rate store
@@ -77,9 +77,9 @@ export interface SubtitlesStoreState {
77
77
  */
78
78
  export interface SubtitlesStoreInternalActions {
79
79
  /** Установить субтитры */
80
- setSubtitle: (subtitle: VideoSubtitle | undefined, external: boolean) => void;
80
+ setSubtitle: (subtitle: VideoSubtitle | undefined) => void;
81
81
  /** Переключить субтитры */
82
- toggleSubtitle: (external: boolean) => void;
82
+ toggleSubtitle: () => void;
83
83
  /** Включить субтитры */
84
84
  subtitleOn: (external: boolean, id?: string) => void;
85
85
  /** Выключить субтитры */
@@ -1,11 +1,10 @@
1
- import type { ChromecastState, IAudioStream, IConfig as ICoreInitVideoConfig, IExternalTextTrack, IOptionalTuningConfig, IPlayer, ISources, ITextTrack, IVideoStream, PlaybackRate, PlaybackState, VideoFormat } from "@vkontakte/videoplayer-core";
1
+ import type { ChromecastState, IAudioStream, IConfig as ICoreInitVideoConfig, IExternalTextTrack, IOptionalTuningConfig, IPlayer, ISources, IVideoStream, PlaybackState, VideoFormat } from "@vkontakte/videoplayer-core";
2
2
  import type { InteractiveRange } from "@vkontakte/videoplayer-interactive";
3
- import type { AppTracer, IError, ILogger, InterfaceLanguage, InternalsExposure, IRectangle, ISubject, IValueObservable, IValueSubject, QualityLimits, VideoQuality } from "@vkontakte/videoplayer-shared";
3
+ import type { AppTracer, IError, ILogger, InternalsExposure, IRectangle, IRootTracer, ISubject, ITracer, IValueObservable, IValueSubject, QualityLimits, VideoQuality } from "@vkontakte/videoplayer-shared";
4
4
  import type { SeekAction, ThinOneStat } from "@vkontakte/videoplayer-statistics";
5
5
  import type { Readable, Writable } from "svelte/store";
6
- import type { AdditionalButtonDeprecated, AdsPlaybackState, ControlBlocksRefs, ControlsKeys, HotKeyMapData, IAnnotationsApi, IControlInfo, IDisabledControls, IInteractiveData, IPictureInPictureApi, IPlayerControlsRef, IPlayerPhase, ITimelinePreviewThumbsData, IVideoEpisode, IVKVideoPlayerCallbacks, IVKVideoPlayerUICallbacks, Position, Size, VideoPlaybackRate, VideoPlayerView, VideoQualityForRender, VideoQualityUI, VideoSubtitle, VideoSubtitleParsed } from "../types";
6
+ import type { AdditionalButtonDeprecated, AdsPlaybackState, ControlBlocksRefs, ControlsKeys, HotKeyMapData, IAnnotationsApi, IControlInfo, IDisabledControls, IInteractiveData, IPictureInPictureApi, IPlayerControlsRef, IPlayerPhase, ITimelinePreviewThumbsData, IVideoEpisode, IVKVideoPlayerCallbacks, IVKVideoPlayerUICallbacks, Position, Size, VideoPlayerView, VideoQualityUI } from "../types";
7
7
  import type { AdmanWrapper } from "../components/Ads/admanWrapper";
8
- import type { Key } from "../translation/types";
9
8
  import type { QualitySettingsAppliesTo } from "../utils/userSettings";
10
9
  import type { GridTypes, PlayPrevChapterDisabledTooltipKey } from "../constans";
11
10
  import type { AdditionalButton, AdditionalDesktopControlPanelButton } from "../components/Controls/types";
@@ -31,7 +30,6 @@ export interface IAdsStateValues {
31
30
  }
32
31
  export type IAdsState = { [K in keyof IAdsStateValues]: Writable<IAdsStateValues[K]> };
33
32
  export interface IUIState {
34
- t: (key: Key, params?: Record<string, string>) => string;
35
33
  isMinimalView$: Writable<boolean>;
36
34
  controlsVisible: Writable<boolean>;
37
35
  /**
@@ -98,10 +96,8 @@ export interface IUIState {
98
96
  playerSize: Writable<Size>;
99
97
  isMobile: Readable<boolean>;
100
98
  mobileNotReportControlHidden$: Readable<boolean>;
101
- icon3DVideoVisible: Writable<boolean>;
102
99
  scrubbingInProgress: Writable<boolean>;
103
100
  volumeChangingInProgress: Writable<boolean>;
104
- is3DVideo: Writable<boolean>;
105
101
  currentGridType$: Readable<GridTypes>;
106
102
  interactiveHideMobileControls: Writable<boolean>;
107
103
  additionalButtonsDeprecated$: Readable<AdditionalButtonDeprecated[]>;
@@ -130,14 +126,6 @@ export interface IUIState {
130
126
  * Положение заголовка названия видео.
131
127
  */
132
128
  videoTitleInfo: Writable<IControlInfo | undefined>;
133
- /**
134
- * Ускорение видео х2.
135
- */
136
- doubleForwardOn$: Writable<boolean>;
137
- /**
138
- * Определяет, что двойное ускорение видео доступно.
139
- */
140
- doubleForwardAvailable$: Readable<boolean>;
141
129
  previewTrackActive: Writable<boolean>;
142
130
  previewTrackDragInProgress: Writable<boolean>;
143
131
  previewTrackAvailable: Readable<boolean>;
@@ -159,7 +147,6 @@ export interface IPlayerState {
159
147
  isLoaderVisible: Readable<boolean>;
160
148
  bufferedProgress$: Readable<number>;
161
149
  isLive$: Readable<boolean | undefined>;
162
- canChangePlaybackSpeed$: Readable<boolean | undefined>;
163
150
  isActiveLive$: Readable<boolean | undefined>;
164
151
  isOldestAvailableLive$: Readable<boolean | undefined>;
165
152
  isRewindableLive$: Readable<boolean>;
@@ -175,15 +162,8 @@ export interface IPlayerState {
175
162
  currentQuality$: Readable<VideoQuality | undefined>;
176
163
  autoQualityLimitingAvailable$: Readable<boolean>;
177
164
  isAutoQualityEnabled$: Readable<boolean | undefined>;
178
- availableQualities$: Readable<VideoQualityForRender[]>;
179
165
  currentPlaybackRate$: Readable<number>;
180
- availablePlaybackRates$: Readable<VideoPlaybackRate[]>;
181
- currentSubtitle$: Readable<Omit<VideoSubtitle, "selected">>;
182
- availableTextTracks$: Readable<ITextTrack[]>;
183
- availableSubtitlesList$: Readable<VideoSubtitle[]>;
184
- currentSubtitleCaptions$: Readable<VideoSubtitleParsed["texts"]>;
185
166
  previewThumbsData$: Writable<ITimelinePreviewThumbsData | undefined>;
186
- isAutoSubtitleCaptionVisible$: Writable<boolean>;
187
167
  chromecastState$: Readable<ChromecastState>;
188
168
  chromecastDeviceName$: Readable<string | undefined>;
189
169
  chromecastConnected$: Readable<boolean>;
@@ -211,10 +191,6 @@ export interface IPlayerState {
211
191
  playPrevChapterDisabledTooltip: PlayPrevChapterDisabledTooltipKey;
212
192
  looped$: Writable<boolean>;
213
193
  loadedMetadata$: Writable<boolean>;
214
- /**
215
- * Определяет, можно ли в целом увидеть/выбрать Авто режим выбора качества.
216
- */
217
- isAutoQualityAvailable$: Readable<boolean>;
218
194
  }
219
195
  export interface IStoreInternalActions {
220
196
  preload: () => void;
@@ -236,11 +212,6 @@ export interface IStoreInternalActions {
236
212
  setAudioStream: (stream: IAudioStream) => void;
237
213
  setVideoStream: (stream: IVideoStream) => void;
238
214
  setQuality: (quality: VideoQualityUI, info?: SetQualityInfo) => void;
239
- setPlaybackRate: (playbackRate: PlaybackRate) => void;
240
- incrementPlaybackRate: () => VideoPlaybackRate;
241
- decrementPlaybackRate: () => VideoPlaybackRate;
242
- setSubtitle: (subtitle?: VideoSubtitle) => void;
243
- toggleSubtitle: () => void;
244
215
  togglePictureInPicture: () => void;
245
216
  startScrubbing: (progress: number) => void;
246
217
  progressScrubbing: (progress: number) => void;
@@ -267,13 +238,7 @@ export interface IStoreInternalActions {
267
238
  startLogging: () => void;
268
239
  stopLogging: () => void;
269
240
  videoRotate: (alphaDiff?: number) => void;
270
- startCameraManualRotation(mx: number, my: number): void;
271
- stopCameraManualRotation(immediate?: boolean): void;
272
- moveCameraFocusPX(xpx: number, ypx: number, dt: number): void;
273
- holdCamera(): void;
274
- releaseCamera(): void;
275
241
  downloadVideo: () => void;
276
- setLanguage: (language: InterfaceLanguage | string) => Promise<void>;
277
242
  nextMovie: (movieId: number) => void;
278
243
  correctSeekTimeToInteractive: (time: number) => number;
279
244
  replayInteractive?: () => void;
@@ -289,7 +254,6 @@ export interface IStoreInternalActions {
289
254
  nextVideoAnnouncementAuto: () => void;
290
255
  nextVideoAnnouncementCancel: () => void;
291
256
  checkFullscreenSupport: () => boolean;
292
- changeDoubleForwardOn: (enabled: boolean) => void;
293
257
  closePreviewTrack: () => void;
294
258
  previewTrackOpened: () => void;
295
259
  previewTrackDragStarted: () => void;
@@ -303,11 +267,8 @@ export interface IStoreExternalActions {
303
267
  stop: () => void;
304
268
  seekTime: (time: number) => void;
305
269
  seekEpisodeStartTime: (time: number) => void;
306
- setPlaybackRate: (playbackRate: PlaybackRate) => void;
307
270
  setAutoQualityLimits: (limits: QualityLimits) => void;
308
271
  setMuted: (muted: boolean) => void;
309
- toggleSubtitle: () => void;
310
- changeSubtitle: (enabled: boolean, id?: string) => void;
311
272
  setVolume: (volume: number) => void;
312
273
  returnFocusToEpisodes: () => void;
313
274
  updateAdditionalSettingsItem: (itemId: string, fields: Partial<Omit<AdditionalSettingsMenuItem, "id" | "type">>) => void;
@@ -347,9 +308,6 @@ export interface IStore {
347
308
  initVideo: (config: IStoreInitVideoConfig) => void;
348
309
  videoId$: Writable<number | undefined>;
349
310
  playerPhase: IPlayerPhase;
350
- interfaceLanguage$: Readable<InterfaceLanguage | string>;
351
- interfaceLanguageUpdated$: ISubject<void>;
352
- isCyrillicRelatedInterface$: Readable<boolean>;
353
311
  interactiveData?: IInteractiveData;
354
312
  vsid$: Writable<string | undefined>;
355
313
  events: IStoreEvents;
@@ -376,10 +334,9 @@ export interface IStore {
376
334
  export type EnrichedStore = IStore & {
377
335
  stores: ICompositionResult["stores"];
378
336
  destroyComposedStore: () => void;
337
+ t: ICompositionResult["stores"]["languageStore"]["actions"]["t"];
379
338
  };
380
339
  export interface IStoreParams {
381
- interfaceLanguage: InterfaceLanguage | string;
382
- isCyrillicRelatedInterface: boolean;
383
340
  initialVideoId?: number;
384
341
  isTouch: boolean;
385
342
  isLiveCatchUpMode?: boolean;
@@ -422,4 +379,6 @@ export interface IStoreParams {
422
379
  getAdmanWrapper: () => AdmanWrapper | undefined;
423
380
  logger: ILogger;
424
381
  adsEnabled: boolean;
382
+ tracer: ITracer;
383
+ rootTracer: IRootTracer;
425
384
  }
@@ -316,7 +316,6 @@ export interface IVKVideoPlayerConfig {
316
316
  fullScreenTarget?: HTMLElement;
317
317
  failoverHosts?: string[];
318
318
  showThumbTimer?: boolean;
319
- is3DVideo?: boolean;
320
319
  callbacks?: IVKVideoPlayerCallbacks;
321
320
  additionalButtons?: (AdditionalButtonDeprecated | AdditionalDesktopControlPanelButton)[];
322
321
  additionalSettingsMenuItems?: AdditionalSettingsMenuItem[];
@@ -1,6 +1,6 @@
1
- import type { IStore } from "../../store";
1
+ import type { EnrichedStore } from "../../store/types";
2
2
  interface Params {
3
- store: IStore;
3
+ store: EnrichedStore;
4
4
  getFullscreenTarget: () => HTMLElement;
5
5
  }
6
6
  export declare const useIosSafariFullscreenSubtitles: ({ store, getFullscreenTarget }: Params) => void;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @docs https://confluence.vk.team/pages/viewpage.action?pageId=1405044928
3
+ *
4
+ * в поле `meta` ключи экспериментов придут в 2-х возможных форматах
5
+ * 1. `feature.<feature_name>.experiment`
6
+ * 2. `feature.<feature_name>.experiment.<config_name>`
7
+ */
8
+ export declare const parseExperiment: (experiment: string, index: number) => Record<string, string | true>;