@vkontakte/videoplayer 1.1.96-dev.dc17075f7.0 → 1.1.97-dev.02230ed18.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-dev.02230ed18.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-dev.02230ed18.0",
47
+ "@vkontakte/videoplayer-interactive": "1.0.72-dev.02230ed18.0",
48
+ "@vkontakte/videoplayer-shared": "1.0.95-dev.02230ed18.0",
49
+ "@vkontakte/videoplayer-statistics": "1.0.112-dev.02230ed18.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>;
@@ -129,14 +128,6 @@ export interface IUIState {
129
128
  * Положение заголовка названия видео.
130
129
  */
131
130
  videoTitleInfo: Writable<IControlInfo | undefined>;
132
- /**
133
- * Ускорение видео х2.
134
- */
135
- doubleForwardOn$: Writable<boolean>;
136
- /**
137
- * Определяет, что двойное ускорение видео доступно.
138
- */
139
- doubleForwardAvailable$: Readable<boolean>;
140
131
  previewTrackActive: Writable<boolean>;
141
132
  previewTrackDragInProgress: Writable<boolean>;
142
133
  previewTrackAvailable: Readable<boolean>;
@@ -158,7 +149,6 @@ export interface IPlayerState {
158
149
  isLoaderVisible: Readable<boolean>;
159
150
  bufferedProgress$: Readable<number>;
160
151
  isLive$: Readable<boolean | undefined>;
161
- canChangePlaybackSpeed$: Readable<boolean | undefined>;
162
152
  isActiveLive$: Readable<boolean | undefined>;
163
153
  isOldestAvailableLive$: Readable<boolean | undefined>;
164
154
  isRewindableLive$: Readable<boolean>;
@@ -174,15 +164,8 @@ export interface IPlayerState {
174
164
  currentQuality$: Readable<VideoQuality | undefined>;
175
165
  autoQualityLimitingAvailable$: Readable<boolean>;
176
166
  isAutoQualityEnabled$: Readable<boolean | undefined>;
177
- availableQualities$: Readable<VideoQualityForRender[]>;
178
167
  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
168
  previewThumbsData$: Writable<ITimelinePreviewThumbsData | undefined>;
185
- isAutoSubtitleCaptionVisible$: Writable<boolean>;
186
169
  chromecastState$: Readable<ChromecastState>;
187
170
  chromecastDeviceName$: Readable<string | undefined>;
188
171
  chromecastConnected$: Readable<boolean>;
@@ -210,10 +193,6 @@ export interface IPlayerState {
210
193
  playPrevChapterDisabledTooltip: PlayPrevChapterDisabledTooltipKey;
211
194
  looped$: Writable<boolean>;
212
195
  loadedMetadata$: Writable<boolean>;
213
- /**
214
- * Определяет, можно ли в целом увидеть/выбрать Авто режим выбора качества.
215
- */
216
- isAutoQualityAvailable$: Readable<boolean>;
217
196
  }
218
197
  export interface IStoreInternalActions {
219
198
  preload: () => void;
@@ -235,11 +214,6 @@ export interface IStoreInternalActions {
235
214
  setAudioStream: (stream: IAudioStream) => void;
236
215
  setVideoStream: (stream: IVideoStream) => void;
237
216
  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
217
  togglePictureInPicture: () => void;
244
218
  startScrubbing: (progress: number) => void;
245
219
  progressScrubbing: (progress: number) => void;
@@ -272,7 +246,6 @@ export interface IStoreInternalActions {
272
246
  holdCamera(): void;
273
247
  releaseCamera(): void;
274
248
  downloadVideo: () => void;
275
- setLanguage: (language: InterfaceLanguage | string) => Promise<void>;
276
249
  nextMovie: (movieId: number) => void;
277
250
  correctSeekTimeToInteractive: (time: number) => number;
278
251
  replayInteractive?: () => void;
@@ -288,7 +261,6 @@ export interface IStoreInternalActions {
288
261
  nextVideoAnnouncementAuto: () => void;
289
262
  nextVideoAnnouncementCancel: () => void;
290
263
  checkFullscreenSupport: () => boolean;
291
- changeDoubleForwardOn: (enabled: boolean) => void;
292
264
  closePreviewTrack: () => void;
293
265
  previewTrackOpened: () => void;
294
266
  previewTrackDragStarted: () => void;
@@ -302,11 +274,8 @@ export interface IStoreExternalActions {
302
274
  stop: () => void;
303
275
  seekTime: (time: number) => void;
304
276
  seekEpisodeStartTime: (time: number) => void;
305
- setPlaybackRate: (playbackRate: PlaybackRate) => void;
306
277
  setAutoQualityLimits: (limits: QualityLimits) => void;
307
278
  setMuted: (muted: boolean) => void;
308
- toggleSubtitle: () => void;
309
- changeSubtitle: (enabled: boolean, id?: string) => void;
310
279
  setVolume: (volume: number) => void;
311
280
  returnFocusToEpisodes: () => void;
312
281
  updateAdditionalSettingsItem: (itemId: string, fields: Partial<Omit<AdditionalSettingsMenuItem, "id" | "type">>) => void;
@@ -346,9 +315,6 @@ export interface IStore {
346
315
  initVideo: (config: IStoreInitVideoConfig) => void;
347
316
  videoId$: Writable<number | undefined>;
348
317
  playerPhase: IPlayerPhase;
349
- interfaceLanguage$: Readable<InterfaceLanguage | string>;
350
- interfaceLanguageUpdated$: ISubject<void>;
351
- isCyrillicRelatedInterface$: Readable<boolean>;
352
318
  interactiveData?: IInteractiveData;
353
319
  vsid$: Writable<string | undefined>;
354
320
  events: IStoreEvents;
@@ -375,10 +341,9 @@ export interface IStore {
375
341
  export type EnrichedStore = IStore & {
376
342
  stores: ICompositionResult["stores"];
377
343
  destroyComposedStore: () => void;
344
+ t: ICompositionResult["stores"]["languageStore"]["actions"]["t"];
378
345
  };
379
346
  export interface IStoreParams {
380
- interfaceLanguage: InterfaceLanguage | string;
381
- isCyrillicRelatedInterface: boolean;
382
347
  initialVideoId?: number;
383
348
  isTouch: boolean;
384
349
  isLiveCatchUpMode?: boolean;
@@ -381,6 +381,7 @@ export interface IPlayerControlsRef {
381
381
  interactiveTimeIndicator?: HTMLElement;
382
382
  timeline?: HTMLElement;
383
383
  autoplayNextToggle?: HTMLButtonElement;
384
+ qoe?: HTMLElement;
384
385
  }
385
386
  export interface IPlayerDesktopControlsWidth {
386
387
  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;