@vkontakte/videoplayer 1.1.96-dev.dc17075f7.0 → 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-dev.dc17075f7.0",
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-dev.dc17075f7.0",
47
- "@vkontakte/videoplayer-interactive": "1.0.71-dev.dc17075f7.0",
48
- "@vkontakte/videoplayer-shared": "1.0.94-dev.dc17075f7.0",
49
- "@vkontakte/videoplayer-statistics": "1.0.111-dev.dc17075f7.0"
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
  }
@@ -7,7 +7,7 @@ import type { PlaybackRate } from "@vkontakte/videoplayer-core";
7
7
  import { type IStatContext } from "@vkontakte/videoplayer-statistics";
8
8
  import { ThinOneStat } from "@vkontakte/videoplayer-statistics";
9
9
  import { AnnotationsApi } from "../utils/webAPI/annotationsApi/annotationsApi";
10
- import type { AdditionalContextMenuItem, AdditionalSettingsMenuItem } from "../components/Menus/subMenuTabs/types";
10
+ import type { AdditionalContextMenuItem, AdditionalSettingsMenuItem, MenuItemHighlight, RootMenuId } from "../components/Menus/subMenuTabs/types";
11
11
  import type { AdditionalButton } from "../components/Controls/types";
12
12
  import { SlotsApi } from "../utils/webAPI/slotsApi";
13
13
  import { HTMLElement } from "./HTMLElement";
@@ -159,6 +159,7 @@ export declare class VKVideoPlayer extends HTMLElement {
159
159
  */
160
160
  toggleHighQuality(value: boolean): void;
161
161
  changeAudioStream(id: string): void;
162
+ setHighlightedMenuItems(items: Partial<Record<RootMenuId, MenuItemHighlight>> | undefined): void;
162
163
  addLanguage(config: LanguageConfig): void;
163
164
  setLanguage(language: InterfaceLanguage | string): Promise<void>;
164
165
  private replaceVideoDataInConfig;
@@ -194,6 +195,11 @@ export declare class VKVideoPlayer extends HTMLElement {
194
195
  updateStatContext(statContext: Partial<IStatContext | ThinOneStat.IStatContext>): void;
195
196
  handleTimerNextVideo(state: boolean): void;
196
197
  togglePictureInPicture(): void;
198
+ /**
199
+ * Переключает видимость меню настроек.
200
+ * @param force Если true — открыть, если false — закрыть, если не указано — toggle.
201
+ */
202
+ toggleSettingsMenu(force?: boolean): void;
197
203
  focus(): void;
198
204
  /**
199
205
  * Восстанавливает фокус на последнем сфокусированном элементе в плеере.
@@ -28,6 +28,7 @@ export declare enum RootMenuId {
28
28
  COPY_DATA = "copy-data",
29
29
  DEBUG_INFO = "debug-info"
30
30
  }
31
+ export declare const SETTINGS_MENU_ID: "settings";
31
32
  export type Context = {
32
33
  closeSettingsMenu: () => void;
33
34
  isMobile: boolean;
@@ -111,6 +112,12 @@ export declare enum MenuItemType {
111
112
  CLICK = "CLICK",
112
113
  SWITCH = "SWITCH"
113
114
  }
115
+ export interface MenuItemHighlight {
116
+ /** SVG как строка или URL на SVG-файл */
117
+ svg: string;
118
+ /** CSS стили для контейнера с SVG */
119
+ styleSvgContainer?: string;
120
+ }
114
121
  export declare enum SubMenuItemType {
115
122
  OPEN_SUB_MENU = "OPEN_SUB_MENU",
116
123
  SELECT_VALUE = "SELECT_VALUE"
@@ -7,4 +7,5 @@ export declare const getSubMenusStack: () => {
7
7
  pushSubMenu: (subMenuId: SubMenuId) => void;
8
8
  popSubMenu: () => void;
9
9
  popAllSubMenus: () => void;
10
+ readonly length: number;
10
11
  };
package/types/config.d.ts CHANGED
@@ -62,6 +62,16 @@ export interface IAdsConfig {
62
62
  export interface IUIConfig {
63
63
  isMobile: ForceOrRelay;
64
64
  keepPlayerElement: boolean;
65
+ /**
66
+ * не будет использовано если keepPlayerElement: false
67
+ * @default true
68
+ */
69
+ keepPlayerElementOnMobile: boolean;
70
+ /**
71
+ * не будет использовано если keepPlayerElement: false
72
+ * @default true
73
+ */
74
+ keepPlayerElementOnSafari: boolean;
65
75
  disableInvisibleComponentsTimeout: Milliseconds;
66
76
  debugLog: boolean | {
67
77
  tag?: string;
package/types/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
1
  import { VKVideoPlayer } from "./VKVideoPlayer/index.svelte";
2
- import type { AdsParams, IAdmanInitParamsExternalApi, IVKVideoPlayerConfig, IUpdatableVKVideoPlayerConfig, IControlInfo, ITimelinePreviewThumbsData, IUpcomingLiveViewControlInfo, IVKVideoPlayerCallbacks, IVideoData, HotKeyMapData, HotKeyMapItem, HotKeyMapGroup, IVideoLive, IInteractiveData, AdditionalButtonDeprecated, IVideoEpisode, IQoeConfig, IQoePoll, IQoeResult, IQoeQuestion, IQoeCallbacks, QoePollTranslations, VideoPlayerView } from "./types";
2
+ import type { AdsParams, IAdmanInitParamsExternalApi, IVKVideoPlayerConfig, IUpdatableVKVideoPlayerConfig, IControlInfo, ITimelinePreviewThumbsData, IUpcomingLiveViewControlInfo, IVKVideoPlayerCallbacks, IVideoData, HotKeyMapData, HotKeyMapItem, HotKeyMapGroup, IVideoLive, IInteractiveData, AdditionalButtonDeprecated, IVideoEpisode, IQoeConfig, IQoeButtonOnlyConfig, IQoePoll, IQoeResult, IQoeQuestion, IQoeCallbacks, QoePollTranslations, VideoPlayerView } from "./types";
3
3
  import type { LanguagePack, LanguageConfig } from "./translation/types";
4
4
  import type { LogoType as VKLogoType, IAdsConfig, ISDKConfig, IDpipConfig } from "./config";
5
5
  import type { ISources, IDashSource, URLSource, RawSource, URLSourceWithSeek } from "@vkontakte/videoplayer-core";
6
6
  import type { Milliseconds, QualityLimits } from "@vkontakte/videoplayer-shared";
7
7
  export { VERSION } from "./env";
8
8
  export declare const registerPlayerWebComponent: () => void;
9
- export { type AdditionalSettingsMenuItem, MenuItemType, type AdditionalClickSettingsMenuItem, type AdditionalSwitchSettingsMenuItem, type AdditionalContextMenuItem } from "./components/Menus/subMenuTabs/types";
9
+ export { type AdditionalSettingsMenuItem, MenuItemType, type AdditionalClickSettingsMenuItem, type AdditionalSwitchSettingsMenuItem, type AdditionalContextMenuItem, RootMenuId, SubMenuId, SETTINGS_MENU_ID } from "./components/Menus/subMenuTabs/types";
10
10
  export { type AdditionalButton, ControlButtonType } from "./components/Controls/types";
11
- export type { VKVideoPlayer, IVKVideoPlayerConfig, IUpdatableVKVideoPlayerConfig, IControlInfo, ITimelinePreviewThumbsData, IUpcomingLiveViewControlInfo, IVKVideoPlayerCallbacks, IVideoData, AdsParams, HotKeyMapData, HotKeyMapItem, HotKeyMapGroup, ISources, IDashSource, URLSource, RawSource, URLSourceWithSeek, LanguagePack, LanguageConfig, Milliseconds, IVideoLive, IInteractiveData, AdditionalButtonDeprecated, QualityLimits, IAdsConfig, IVideoEpisode, IDpipConfig, IQoeConfig, IQoePoll, IQoeResult, IQoeQuestion, IQoeCallbacks, QoePollTranslations, ISDKConfig, VideoPlayerView, IAdmanInitParamsExternalApi, VKLogoType };
11
+ export type { VKVideoPlayer, IVKVideoPlayerConfig, IUpdatableVKVideoPlayerConfig, IControlInfo, ITimelinePreviewThumbsData, IUpcomingLiveViewControlInfo, IVKVideoPlayerCallbacks, IVideoData, AdsParams, HotKeyMapData, HotKeyMapItem, HotKeyMapGroup, ISources, IDashSource, URLSource, RawSource, URLSourceWithSeek, LanguagePack, LanguageConfig, Milliseconds, IVideoLive, IInteractiveData, AdditionalButtonDeprecated, QualityLimits, IAdsConfig, IVideoEpisode, IDpipConfig, IQoeConfig, IQoeButtonOnlyConfig, IQoePoll, IQoeResult, IQoeQuestion, IQoeCallbacks, QoePollTranslations, ISDKConfig, VideoPlayerView, IAdmanInitParamsExternalApi, VKLogoType };
12
12
  export { GridTypes } from "./constans";
13
13
  export { PlayerPhase } from "./types";
14
14
  export { isPiPSupported, isDpipSupported } from "./utils/webAPI/pictureInPictureApi";
@@ -2,7 +2,7 @@ import type { IUIConfig } from "../config";
2
2
  import type { IVKVideoPlayerConfig } from "../types";
3
3
  import type { IUIStatistics } from "../services/statistics";
4
4
  import type { IStore } from "./index";
5
- import type { FakeIsPlayingStore, GraphIsOpenedStore, InteractiveControlsOpacityStore, LanguageStore, NotificationsStore, PictureInPictureStore, IQoeStore, SeekToInteractiveDisabledTooltipStore, ShowInteractiveTimeIndicatorTooltipStore, SubtitlesStore, QualityStore, PlaybackRateStore } from "./modules";
5
+ import type { FakeIsPlayingStore, GraphIsOpenedStore, HighlightedMenuItemsStore, InteractiveControlsOpacityStore, LanguageStore, NotificationsStore, PictureInPictureStore, IQoeStore, SeekToInteractiveDisabledTooltipStore, ShowInteractiveTimeIndicatorTooltipStore, SubtitlesStore, QualityStore, PlaybackRateStore } from "./modules";
6
6
  import type { AppTracer, ITracer } from "@vkontakte/videoplayer-shared";
7
7
  import type { Interactives } from "@vkontakte/videoplayer-interactive";
8
8
  export interface ICompositionParams {
@@ -19,6 +19,7 @@ export interface ICompositionResult {
19
19
  fakeIsPlayingStore: FakeIsPlayingStore;
20
20
  graphIsOpenedStore: GraphIsOpenedStore;
21
21
  interactiveControlsOpacityStore: InteractiveControlsOpacityStore;
22
+ highlightedMenuItemsStore: HighlightedMenuItemsStore;
22
23
  notificationsStore: NotificationsStore;
23
24
  pictureInPictureStore: PictureInPictureStore;
24
25
  qoeStore: IQoeStore;
@@ -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, rootTracer, tracer }: 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;
@@ -0,0 +1,3 @@
1
+ import { type HighlightedMenuItemsStore } from "./highlightedMenuItems.store";
2
+ import type { Module } from "../utils";
3
+ export declare const highlightedMenuItemsModule: Module<HighlightedMenuItemsStore>;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * HighlightedMenuItems Store
3
+ *
4
+ * Управляет подсветкой пунктов меню настроек.
5
+ */
6
+ import type { Writable } from "svelte/store";
7
+ import type { MenuItemHighlight, RootMenuId } from "../../../components/Menus/subMenuTabs/types";
8
+ export interface HighlightedMenuItemsStoreState {
9
+ items$: Writable<Partial<Record<RootMenuId, MenuItemHighlight>> | undefined>;
10
+ }
11
+ export interface HighlightedMenuItemsStoreActions {
12
+ /** Установить подсвеченные пункты меню */
13
+ setHighlightedMenuItems(items: Partial<Record<RootMenuId, MenuItemHighlight>> | undefined): void;
14
+ /** Очистить подсветку */
15
+ clear(): void;
16
+ }
17
+ export interface HighlightedMenuItemsStore {
18
+ state: HighlightedMenuItemsStoreState;
19
+ actions: HighlightedMenuItemsStoreActions;
20
+ }
21
+ export declare const createHighlightedMenuItemsStore: () => HighlightedMenuItemsStore;
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from "@vkontakte/videoplayer-shared";
2
+ export declare const HIGHLIGHTED_MENU_ITEMS_STORE_TOKEN: InjectionToken<HIGHLIGHTED_MENU_ITEMS_STORE_STORE>;
3
+ import type { HighlightedMenuItemsStore } from "./highlightedMenuItems.store";
4
+ type HIGHLIGHTED_MENU_ITEMS_STORE_STORE = HighlightedMenuItemsStore;
5
+ export {};
@@ -0,0 +1,3 @@
1
+ export type { HighlightedMenuItemsStoreState, HighlightedMenuItemsStore, HighlightedMenuItemsStoreActions } from "./highlightedMenuItems.store";
2
+ export { highlightedMenuItemsModule } from "./highlightedMenuItems.module";
3
+ export { HIGHLIGHTED_MENU_ITEMS_STORE_TOKEN } from "./highlightedMenuItems.token";
@@ -20,6 +20,7 @@ export type { SeekToInteractiveDisabledTooltipStoreState, SeekToInteractiveDisab
20
20
  export { seekToInteractiveDisabledTooltipModule, SEEK_TO_INTERACTIVE_DISABLED_TOOLTIP_STORE_TOKEN } from "./seekToInteractiveDisabledTooltipStore";
21
21
  export type { ShowInteractiveTimeIndicatorTooltipStoreState, ShowInteractiveTimeIndicatorTooltipStore, ShowInteractiveTimeIndicatorTooltipStoreActions, ShowInteractiveTimeIndicatorTooltipStoreDeps } from "./showInteractiveTimeIndicatorTooltipStore";
22
22
  export { showInteractiveTimeIndicatorTooltipModule, SHOW_INTERACTIVE_TIME_INDICATOR_TOOLTIP_STORE_TOKEN } from "./showInteractiveTimeIndicatorTooltipStore";
23
+ export { type HighlightedMenuItemsStoreState, type HighlightedMenuItemsStore, type HighlightedMenuItemsStoreActions, highlightedMenuItemsModule, HIGHLIGHTED_MENU_ITEMS_STORE_TOKEN } from "./highlightedMenuItemsStore";
23
24
  export type { SubtitlesStoreState, SubtitlesStoreInternalActions, SubtitlesStoreExternalActions, SubtitlesStore, SubtitlesStoreDeps } from "./subtitlesStore";
24
25
  export { subtitlesModule, SUBTITLES_STORE_TOKEN } from "./subtitlesStore";
25
26
  export type { QualityStoreDeps, QualityStoreState, QualityStore } from "./qualityStore";
@@ -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, IRootTracer, ISubject, ITracer, 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
  /**
@@ -62,6 +60,7 @@ export interface IUIState {
62
60
  fullscreen: Writable<IControlInfo | undefined>;
63
61
  chromecast: Writable<IControlInfo | undefined>;
64
62
  pip: Writable<IControlInfo | undefined>;
63
+ qoe: Writable<IControlInfo | undefined>;
65
64
  "theater-mode-button": Writable<IControlInfo | undefined>;
66
65
  vkLogo: Writable<IControlInfo | undefined>;
67
66
  interactiveTimeIndicator: Writable<IControlInfo | undefined>;
@@ -97,10 +96,8 @@ export interface IUIState {
97
96
  playerSize: Writable<Size>;
98
97
  isMobile: Readable<boolean>;
99
98
  mobileNotReportControlHidden$: Readable<boolean>;
100
- icon3DVideoVisible: Writable<boolean>;
101
99
  scrubbingInProgress: Writable<boolean>;
102
100
  volumeChangingInProgress: Writable<boolean>;
103
- is3DVideo: Writable<boolean>;
104
101
  currentGridType$: Readable<GridTypes>;
105
102
  interactiveHideMobileControls: Writable<boolean>;
106
103
  additionalButtonsDeprecated$: Readable<AdditionalButtonDeprecated[]>;
@@ -129,14 +126,6 @@ export interface IUIState {
129
126
  * Положение заголовка названия видео.
130
127
  */
131
128
  videoTitleInfo: Writable<IControlInfo | undefined>;
132
- /**
133
- * Ускорение видео х2.
134
- */
135
- doubleForwardOn$: Writable<boolean>;
136
- /**
137
- * Определяет, что двойное ускорение видео доступно.
138
- */
139
- doubleForwardAvailable$: Readable<boolean>;
140
129
  previewTrackActive: Writable<boolean>;
141
130
  previewTrackDragInProgress: Writable<boolean>;
142
131
  previewTrackAvailable: Readable<boolean>;
@@ -158,7 +147,6 @@ export interface IPlayerState {
158
147
  isLoaderVisible: Readable<boolean>;
159
148
  bufferedProgress$: Readable<number>;
160
149
  isLive$: Readable<boolean | undefined>;
161
- canChangePlaybackSpeed$: Readable<boolean | undefined>;
162
150
  isActiveLive$: Readable<boolean | undefined>;
163
151
  isOldestAvailableLive$: Readable<boolean | undefined>;
164
152
  isRewindableLive$: Readable<boolean>;
@@ -174,15 +162,8 @@ export interface IPlayerState {
174
162
  currentQuality$: Readable<VideoQuality | undefined>;
175
163
  autoQualityLimitingAvailable$: Readable<boolean>;
176
164
  isAutoQualityEnabled$: Readable<boolean | undefined>;
177
- availableQualities$: Readable<VideoQualityForRender[]>;
178
165
  currentPlaybackRate$: Readable<number>;
179
- availablePlaybackRates$: Readable<VideoPlaybackRate[]>;
180
- currentSubtitle$: Readable<Omit<VideoSubtitle, "selected">>;
181
- availableTextTracks$: Readable<ITextTrack[]>;
182
- availableSubtitlesList$: Readable<VideoSubtitle[]>;
183
- currentSubtitleCaptions$: Readable<VideoSubtitleParsed["texts"]>;
184
166
  previewThumbsData$: Writable<ITimelinePreviewThumbsData | undefined>;
185
- isAutoSubtitleCaptionVisible$: Writable<boolean>;
186
167
  chromecastState$: Readable<ChromecastState>;
187
168
  chromecastDeviceName$: Readable<string | undefined>;
188
169
  chromecastConnected$: Readable<boolean>;
@@ -210,10 +191,6 @@ export interface IPlayerState {
210
191
  playPrevChapterDisabledTooltip: PlayPrevChapterDisabledTooltipKey;
211
192
  looped$: Writable<boolean>;
212
193
  loadedMetadata$: Writable<boolean>;
213
- /**
214
- * Определяет, можно ли в целом увидеть/выбрать Авто режим выбора качества.
215
- */
216
- isAutoQualityAvailable$: Readable<boolean>;
217
194
  }
218
195
  export interface IStoreInternalActions {
219
196
  preload: () => void;
@@ -235,11 +212,6 @@ export interface IStoreInternalActions {
235
212
  setAudioStream: (stream: IAudioStream) => void;
236
213
  setVideoStream: (stream: IVideoStream) => void;
237
214
  setQuality: (quality: VideoQualityUI, info?: SetQualityInfo) => void;
238
- setPlaybackRate: (playbackRate: PlaybackRate) => void;
239
- incrementPlaybackRate: () => VideoPlaybackRate;
240
- decrementPlaybackRate: () => VideoPlaybackRate;
241
- setSubtitle: (subtitle?: VideoSubtitle) => void;
242
- toggleSubtitle: () => void;
243
215
  togglePictureInPicture: () => void;
244
216
  startScrubbing: (progress: number) => void;
245
217
  progressScrubbing: (progress: number) => void;
@@ -266,13 +238,7 @@ export interface IStoreInternalActions {
266
238
  startLogging: () => void;
267
239
  stopLogging: () => void;
268
240
  videoRotate: (alphaDiff?: number) => void;
269
- startCameraManualRotation(mx: number, my: number): void;
270
- stopCameraManualRotation(immediate?: boolean): void;
271
- moveCameraFocusPX(xpx: number, ypx: number, dt: number): void;
272
- holdCamera(): void;
273
- releaseCamera(): void;
274
241
  downloadVideo: () => void;
275
- setLanguage: (language: InterfaceLanguage | string) => Promise<void>;
276
242
  nextMovie: (movieId: number) => void;
277
243
  correctSeekTimeToInteractive: (time: number) => number;
278
244
  replayInteractive?: () => void;
@@ -288,7 +254,6 @@ export interface IStoreInternalActions {
288
254
  nextVideoAnnouncementAuto: () => void;
289
255
  nextVideoAnnouncementCancel: () => void;
290
256
  checkFullscreenSupport: () => boolean;
291
- changeDoubleForwardOn: (enabled: boolean) => void;
292
257
  closePreviewTrack: () => void;
293
258
  previewTrackOpened: () => void;
294
259
  previewTrackDragStarted: () => void;
@@ -302,11 +267,8 @@ export interface IStoreExternalActions {
302
267
  stop: () => void;
303
268
  seekTime: (time: number) => void;
304
269
  seekEpisodeStartTime: (time: number) => void;
305
- setPlaybackRate: (playbackRate: PlaybackRate) => void;
306
270
  setAutoQualityLimits: (limits: QualityLimits) => void;
307
271
  setMuted: (muted: boolean) => void;
308
- toggleSubtitle: () => void;
309
- changeSubtitle: (enabled: boolean, id?: string) => void;
310
272
  setVolume: (volume: number) => void;
311
273
  returnFocusToEpisodes: () => void;
312
274
  updateAdditionalSettingsItem: (itemId: string, fields: Partial<Omit<AdditionalSettingsMenuItem, "id" | "type">>) => void;
@@ -346,9 +308,6 @@ export interface IStore {
346
308
  initVideo: (config: IStoreInitVideoConfig) => void;
347
309
  videoId$: Writable<number | undefined>;
348
310
  playerPhase: IPlayerPhase;
349
- interfaceLanguage$: Readable<InterfaceLanguage | string>;
350
- interfaceLanguageUpdated$: ISubject<void>;
351
- isCyrillicRelatedInterface$: Readable<boolean>;
352
311
  interactiveData?: IInteractiveData;
353
312
  vsid$: Writable<string | undefined>;
354
313
  events: IStoreEvents;
@@ -375,10 +334,9 @@ export interface IStore {
375
334
  export type EnrichedStore = IStore & {
376
335
  stores: ICompositionResult["stores"];
377
336
  destroyComposedStore: () => void;
337
+ t: ICompositionResult["stores"]["languageStore"]["actions"]["t"];
378
338
  };
379
339
  export interface IStoreParams {
380
- interfaceLanguage: InterfaceLanguage | string;
381
- isCyrillicRelatedInterface: boolean;
382
340
  initialVideoId?: number;
383
341
  isTouch: boolean;
384
342
  isLiveCatchUpMode?: boolean;
@@ -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[];
@@ -381,6 +380,7 @@ export interface IPlayerControlsRef {
381
380
  interactiveTimeIndicator?: HTMLElement;
382
381
  timeline?: HTMLElement;
383
382
  autoplayNextToggle?: HTMLButtonElement;
383
+ qoe?: HTMLElement;
384
384
  }
385
385
  export interface IPlayerDesktopControlsWidth {
386
386
  prevButton: number;
@@ -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,5 @@
1
+ /**
2
+ * Базовая санитизация SVG для защиты от XSS.
3
+ * Удаляет опасные паттерны: script-теги, event handlers, javascript: URLs.
4
+ */
5
+ export declare function sanitizeSvg(svg: string | undefined): string;