@streamscloud/embeddable 8.3.0 → 10.0.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.
Files changed (137) hide show
  1. package/dist/content-player/cmp.content-player.svelte +1 -1
  2. package/dist/content-player/content-player-config.svelte.d.ts +4 -4
  3. package/dist/content-player/controls-and-attachments.svelte +1 -1
  4. package/dist/content-player/header.svelte +1 -1
  5. package/dist/core/document.event-handlers.d.ts +1 -0
  6. package/dist/core/document.event-handlers.js +3 -0
  7. package/dist/media-center/config/internal-media-center-analytics-handler.d.ts +4 -3
  8. package/dist/media-center/config/internal-media-center-analytics-handler.js +1 -0
  9. package/dist/media-center/config/internal-media-center-config.d.ts +1 -1
  10. package/dist/media-center/config/internal-media-center-config.js +38 -48
  11. package/dist/media-center/config/operations.generated.d.ts +0 -104
  12. package/dist/media-center/config/operations.generated.js +0 -323
  13. package/dist/media-center/config/operations.graphql +0 -24
  14. package/dist/media-center/config/types.d.ts +14 -14
  15. package/dist/media-center/config/types.js +1 -1
  16. package/dist/media-center/media-center/cmp.media-center.svelte +101 -24
  17. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +5 -5
  18. package/dist/media-center/media-center/discover-panel-handler.svelte.d.ts +5 -4
  19. package/dist/media-center/media-center/discover-panel-handler.svelte.js +2 -1
  20. package/dist/media-center/media-center/discover-panel.svelte +1 -1
  21. package/dist/media-center/media-center/discover-panel.svelte.d.ts +4 -3
  22. package/dist/media-center/media-center/post-player-provider-generator.d.ts +8 -0
  23. package/dist/media-center/media-center/{short-video-resources-generator.js → post-player-provider-generator.js} +9 -3
  24. package/dist/media-center/media-center/streams-in-category-panel-handler.svelte.d.ts +5 -2
  25. package/dist/media-center/media-center/streams-in-category-panel-handler.svelte.js +5 -0
  26. package/dist/media-center/media-center/streams-in-category-panel.svelte +2 -2
  27. package/dist/media-center/media-center/streams-in-category-panel.svelte.d.ts +3 -2
  28. package/dist/media-center/media-center/streams-player-provider-generator.d.ts +8 -0
  29. package/dist/media-center/media-center/streams-player-provider-generator.js +36 -0
  30. package/dist/media-center/media-center/types.d.ts +1 -7
  31. package/dist/posts/controls/cmp.controls.svelte +1 -1
  32. package/dist/posts/data-loaders/index.d.ts +1 -0
  33. package/dist/posts/data-loaders/index.js +1 -0
  34. package/dist/posts/data-loaders/mapper.d.ts +3 -0
  35. package/dist/{short-videos/short-videos-player → posts/data-loaders}/mapper.js +2 -2
  36. package/dist/{short-videos/short-videos-player → posts/data-loaders}/operations.generated.d.ts +6 -6
  37. package/dist/{short-videos/short-videos-player → posts/data-loaders}/operations.generated.js +7 -10
  38. package/dist/posts/data-loaders/operations.graphql +17 -0
  39. package/dist/posts/data-loaders/posts-loader.d.ts +19 -0
  40. package/dist/posts/data-loaders/posts-loader.js +28 -0
  41. package/dist/posts/handlers/index.d.ts +1 -0
  42. package/dist/posts/handlers/index.js +1 -0
  43. package/dist/{short-videos/short-videos-player/internal-short-video-analytics-handler.d.ts → posts/handlers/internal-post-analytics-handler.d.ts} +3 -2
  44. package/dist/{short-videos/short-videos-player/internal-short-video-analytics-handler.js → posts/handlers/internal-post-analytics-handler.js} +2 -1
  45. package/dist/{short-videos/short-videos-player/cmp.short-videos-player.svelte → posts/posts-player/cmp.posts-player.svelte} +3 -3
  46. package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +4 -0
  47. package/dist/posts/posts-player/index.d.ts +55 -20
  48. package/dist/posts/posts-player/index.js +48 -32
  49. package/dist/posts/posts-player/posts-player-view.svelte +65 -15
  50. package/dist/posts/posts-player/posts-player-view.svelte.d.ts +5 -1
  51. package/dist/posts/posts-player/types.d.ts +9 -3
  52. package/dist/short-videos/data-providers/index.d.ts +1 -0
  53. package/dist/short-videos/data-providers/index.js +1 -0
  54. package/dist/short-videos/data-providers/internal-short-video-player-items-provider.d.ts +17 -0
  55. package/dist/short-videos/{short-videos-player/internal-short-video-player-provider.js → data-providers/internal-short-video-player-items-provider.js} +13 -33
  56. package/dist/short-videos/short-videos-player/index.d.ts +14 -64
  57. package/dist/short-videos/short-videos-player/index.js +77 -31
  58. package/dist/streams/data-loaders/index.d.ts +2 -0
  59. package/dist/streams/data-loaders/index.js +2 -0
  60. package/dist/streams/{stream-player → data-loaders}/mapper.d.ts +1 -1
  61. package/dist/streams/{stream-player → data-loaders}/operations.generated.d.ts +27 -24
  62. package/dist/streams/{stream-player → data-loaders}/operations.generated.js +18 -17
  63. package/dist/streams/{stream-player → data-loaders}/operations.graphql +6 -3
  64. package/dist/streams/data-loaders/stream-pages-loader.d.ts +10 -0
  65. package/dist/streams/data-loaders/stream-pages-loader.js +33 -0
  66. package/dist/streams/data-loaders/streams-loader.d.ts +19 -0
  67. package/dist/streams/data-loaders/streams-loader.js +28 -0
  68. package/dist/streams/{stream-player → streams-player}/index.d.ts +21 -22
  69. package/dist/streams/{stream-player → streams-player}/index.js +9 -7
  70. package/dist/streams/streams-player/internal-streams-player-data-provider.d.ts +16 -0
  71. package/dist/streams/streams-player/internal-streams-player-data-provider.js +55 -0
  72. package/dist/streams/{stream-player → streams-player}/stream-overview.svelte +18 -15
  73. package/dist/streams/{stream-player → streams-player}/stream-overview.svelte.d.ts +2 -2
  74. package/dist/streams/streams-player/streams-player-buffer.svelte.d.ts +8 -0
  75. package/dist/streams/streams-player/streams-player-buffer.svelte.js +15 -0
  76. package/dist/streams/{stream-player/stream-player-view.svelte → streams-player/streams-player-view.svelte} +69 -55
  77. package/dist/streams/streams-player/streams-player-view.svelte.d.ts +8 -0
  78. package/dist/streams/{stream-player → streams-player}/types.d.ts +9 -7
  79. package/dist/ui/{player-button → player/button}/cmp.player-button.svelte +1 -1
  80. package/dist/ui/{player-button → player/button}/cmp.player-button.svelte.d.ts +1 -1
  81. package/dist/ui/{player-button → player/button}/cmp.player-buttons-group.svelte +1 -1
  82. package/dist/ui/{player-button → player/button}/types.d.ts +1 -1
  83. package/dist/ui/player/button/types.js +1 -0
  84. package/dist/ui/player/providers/chunks-player-buffer/index.d.ts +2 -0
  85. package/dist/ui/player/providers/chunks-player-buffer/index.js +2 -0
  86. package/dist/ui/player/providers/chunks-player-buffer/player-chunk-item.svelte.d.ts +11 -0
  87. package/dist/ui/player/providers/chunks-player-buffer/player-chunk-item.svelte.js +11 -0
  88. package/dist/ui/player/providers/chunks-player-buffer/player-chunk.svelte.d.ts +31 -0
  89. package/dist/ui/player/providers/chunks-player-buffer/player-chunk.svelte.js +67 -0
  90. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.d.ts +23 -0
  91. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.js +119 -0
  92. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +20 -0
  93. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +47 -0
  94. package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +27 -0
  95. package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +78 -0
  96. package/dist/ui/player/providers/index.d.ts +3 -0
  97. package/dist/ui/player/providers/index.js +2 -0
  98. package/dist/ui/player/providers/types.d.ts +49 -0
  99. package/dist/ui/{player-slider → player/slider}/cmp.player-slider.svelte +7 -20
  100. package/dist/ui/{player-slider → player/slider}/cmp.player-slider.svelte.d.ts +4 -4
  101. package/dist/ui/{player-slider → player/slider}/index.d.ts +0 -2
  102. package/dist/ui/{player-slider → player/slider}/index.js +0 -1
  103. package/dist/ui/player/slider/types.d.ts +16 -0
  104. package/dist/ui/swipe-indicator/cmp.swipe-indicator.svelte +7 -8
  105. package/package.json +4 -4
  106. package/dist/media-center/media-center/short-video-resources-generator.d.ts +0 -8
  107. package/dist/short-videos/short-videos-player/cmp.short-videos-player.svelte.d.ts +0 -4
  108. package/dist/short-videos/short-videos-player/internal-short-video-player-provider.d.ts +0 -18
  109. package/dist/short-videos/short-videos-player/mapper.d.ts +0 -3
  110. package/dist/short-videos/short-videos-player/operations.graphql +0 -17
  111. package/dist/short-videos/short-videos-player/short-videos-player-view.svelte +0 -82
  112. package/dist/short-videos/short-videos-player/short-videos-player-view.svelte.d.ts +0 -8
  113. package/dist/short-videos/short-videos-player/types.d.ts +0 -26
  114. package/dist/streams/stream-player/internal-stream-player-data-provider.d.ts +0 -12
  115. package/dist/streams/stream-player/internal-stream-player-data-provider.js +0 -48
  116. package/dist/streams/stream-player/stream-player-buffer.svelte.d.ts +0 -28
  117. package/dist/streams/stream-player/stream-player-buffer.svelte.js +0 -79
  118. package/dist/streams/stream-player/stream-player-view.svelte.d.ts +0 -8
  119. package/dist/ui/player-button/types.js +0 -1
  120. package/dist/ui/player-slider/player-buffer.svelte.d.ts +0 -31
  121. package/dist/ui/player-slider/player-buffer.svelte.js +0 -76
  122. package/dist/ui/player-slider/types.d.ts +0 -26
  123. /package/dist/streams/{stream-player → data-loaders}/mapper.js +0 -0
  124. /package/dist/streams/{stream-player → streams-player}/internal-stream-analytics-handler.d.ts +0 -0
  125. /package/dist/streams/{stream-player → streams-player}/internal-stream-analytics-handler.js +0 -0
  126. /package/dist/streams/{stream-player → streams-player}/stream-player-localization.d.ts +0 -0
  127. /package/dist/streams/{stream-player → streams-player}/stream-player-localization.js +0 -0
  128. /package/dist/{short-videos/short-videos-player → streams/streams-player}/types.js +0 -0
  129. /package/dist/ui/{player-button → player/button}/cmp.player-buttons-group.svelte.d.ts +0 -0
  130. /package/dist/ui/{player-button → player/button}/index.d.ts +0 -0
  131. /package/dist/ui/{player-button → player/button}/index.js +0 -0
  132. /package/dist/{streams/stream-player → ui/player/providers}/types.js +0 -0
  133. /package/dist/ui/{player-slider → player/slider}/prevent-slider-scroll.d.ts +0 -0
  134. /package/dist/ui/{player-slider → player/slider}/prevent-slider-scroll.js +0 -0
  135. /package/dist/ui/{player-slider → player/slider}/types.js +0 -0
  136. /package/dist/ui/{player-slider → player/slider}/wheel-gestures-adapter.d.ts +0 -0
  137. /package/dist/ui/{player-slider → player/slider}/wheel-gestures-adapter.js +0 -0
@@ -1,17 +0,0 @@
1
- # noinspection GraphQLSchemaValidation
2
- query GetShortVideos($input: EmbedPostsInput!, $image_scale: ImageScale = ORIGINAL_ENCODED) {
3
- shortVideos: embedPosts(input: $input) {
4
- items {
5
- ...ShortVideosPlayerPayloadFragment
6
- }
7
- continuationToken
8
- }
9
- }
10
-
11
- fragment ShortVideosPlayerPayloadFragment on Post {
12
- ...PostViewerPayloadFragment
13
- ownerProfile {
14
- id
15
- type
16
- }
17
- }
@@ -1,82 +0,0 @@
1
- <script lang="ts">var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- import { ContentPlayer, ContentPlayerConfig } from '../../content-player';
11
- import { ContentPlayerSettings } from '../../content-player/content-player-settings';
12
- import { preloadImage } from '../../core/image-preloader';
13
- import { getPostCoverImage } from '../../posts/model';
14
- import { PlayerBuffer } from '../../ui/player-slider';
15
- import { InternalShortVideoPlayerProvider } from './internal-short-video-player-provider';
16
- import { untrack } from 'svelte';
17
- let { dataProvider, socialInteractionsHandler, playerSettings, analyticsHandler, on, mediaCenterData } = $props();
18
- $effect(() => {
19
- void dataProvider;
20
- untrack(() => {
21
- contentPlayerConfig.playerBuffer = null;
22
- initBuffer(dataProvider);
23
- });
24
- });
25
- $effect(() => contentPlayerConfig.updateMediaCenterData(mediaCenterData));
26
- const initBuffer = (dataProvider) => __awaiter(void 0, void 0, void 0, function* () {
27
- if (dataProvider instanceof InternalShortVideoPlayerProvider) {
28
- yield dataProvider.prefetch();
29
- }
30
- new PlayerBuffer(dataProvider, {
31
- preloaded: (instance) => __awaiter(void 0, void 0, void 0, function* () {
32
- if (instance.loaded.length) {
33
- const coverUrl = getPostCoverImage(instance.loaded[0]);
34
- yield preloadImage(coverUrl);
35
- contentPlayerConfig.setBackgroundImageUrl(coverUrl);
36
- }
37
- contentPlayerConfig.playerBuffer = instance;
38
- })
39
- });
40
- });
41
- const contentPlayerConfig = new ContentPlayerConfig({
42
- playerBuffer: null,
43
- mappers: {
44
- postModelFromCurrentItem: (item) => item
45
- },
46
- socialInteractionsHandler,
47
- mediaCenterData,
48
- settings: new ContentPlayerSettings(playerSettings),
49
- callbacks: {
50
- close: on === null || on === void 0 ? void 0 : on.playerClosed,
51
- productClick: (id, videoId) => {
52
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoProductClick(id, videoId);
53
- },
54
- productImpression: (id, videoId) => {
55
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoProductImpression(id, videoId);
56
- },
57
- adClick: (id) => {
58
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackAdClick(id);
59
- },
60
- adImpression: (id) => {
61
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackAdImpression(id);
62
- }
63
- },
64
- playerSliderCallbacks: {
65
- itemActivated: (id) => {
66
- var _a, _b;
67
- const shortVideo = (_a = contentPlayerConfig.playerBuffer) === null || _a === void 0 ? void 0 : _a.loaded.find((x) => x.id === id);
68
- if (!shortVideo) {
69
- return;
70
- }
71
- contentPlayerConfig.setBackgroundImageUrl(getPostCoverImage(shortVideo));
72
- if (shortVideo.analyticsOrganizationId) {
73
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.setOrganizationId(shortVideo.analyticsOrganizationId);
74
- }
75
- analyticsHandler === null || analyticsHandler === void 0 ? void 0 : analyticsHandler.trackShortVideoView(id);
76
- (_b = on === null || on === void 0 ? void 0 : on.videoActivated) === null || _b === void 0 ? void 0 : _b.call(on, id);
77
- }
78
- }
79
- });
80
- </script>
81
-
82
- <ContentPlayer config={contentPlayerConfig} />
@@ -1,8 +0,0 @@
1
- import type { MediaCenterData } from '../../media-center/model/types';
2
- import type { ShortVideoPlayerProps } from './types';
3
- type $$ComponentProps = ShortVideoPlayerProps & {
4
- mediaCenterData?: MediaCenterData;
5
- };
6
- declare const ShortVideosPlayerView: import("svelte").Component<$$ComponentProps, {}, "">;
7
- type ShortVideosPlayerView = ReturnType<typeof ShortVideosPlayerView>;
8
- export default ShortVideosPlayerView;
@@ -1,26 +0,0 @@
1
- import type { IContentPlayerSettingsInitializer } from '../../content-player/content-player-settings';
2
- import type { IPostModel } from '../../posts';
3
- import type { IPostSocialInteractionsHandler } from '../../posts/social-interactions';
4
- import type { IPlayerItemsProvider } from '../../ui/player-slider';
5
- export interface IShortVideoAnalyticsHandler {
6
- setOrganizationId: (organizationId: string) => void;
7
- trackShortVideoView: (videoId: string) => void;
8
- trackShortVideoProductImpression: (productId: string, videoId: string) => void;
9
- trackShortVideoProductClick: (productId: string, videoId: string) => void;
10
- trackAdClick: (adId: string) => void;
11
- trackAdImpression: (adId: string) => void;
12
- }
13
- export type ShortVideoPlayerModel = IPostModel & {
14
- analyticsOrganizationId: string | null;
15
- };
16
- export type ShortVideoPlayerProps = {
17
- dataProvider: IPlayerItemsProvider<ShortVideoPlayerModel>;
18
- socialInteractionsHandler?: IPostSocialInteractionsHandler;
19
- analyticsHandler?: IShortVideoAnalyticsHandler;
20
- playerSettings?: ShortVideoPlayerSettings;
21
- on?: {
22
- playerClosed?: () => void;
23
- videoActivated?: (id: string) => void;
24
- };
25
- };
26
- export type ShortVideoPlayerSettings = Pick<IContentPlayerSettingsInitializer, 'disableBackground' | 'hideCloseButton' | 'locale' | 'showStreamsCloudWatermark'>;
@@ -1,12 +0,0 @@
1
- import type { IStreamPlayerDataProvider } from './types';
2
- import type { Client } from '@urql/core';
3
- export declare class InternalStreamPlayerDataProvider implements IStreamPlayerDataProvider {
4
- private graphql;
5
- constructor(input: {
6
- initiator?: string;
7
- graphqlOrigin?: string;
8
- graphql?: Client;
9
- });
10
- getStream: IStreamPlayerDataProvider['getStream'];
11
- getStreamPages: IStreamPlayerDataProvider['getStreamPages'];
12
- }
@@ -1,48 +0,0 @@
1
- import { ImageScale } from '../..';
2
- import { createLocalGQLClient } from '../../core/graphql';
3
- import { mapToStreamPageViewerModel } from '../stream-page-viewer';
4
- import { mapToStreamPlayerModel } from './mapper';
5
- import { GetStreamDocument, GetStreamPagesDocument } from './operations.generated';
6
- export class InternalStreamPlayerDataProvider {
7
- graphql;
8
- constructor(input) {
9
- const { graphqlOrigin, initiator, graphql } = input;
10
- this.graphql = graphql ?? createLocalGQLClient(graphqlOrigin, initiator ? { 'x-initiator': initiator } : undefined);
11
- }
12
- getStream = async (id) => {
13
- const streamPayload = await this.graphql.query(GetStreamDocument, { id }).toPromise();
14
- if (!streamPayload.data?.stream) {
15
- return null;
16
- }
17
- return mapToStreamPlayerModel(streamPayload.data.stream);
18
- };
19
- getStreamPages = async (streamId, continuationToken) => {
20
- const emptyResult = { items: [], continuationToken: null };
21
- if (continuationToken === null) {
22
- return emptyResult;
23
- }
24
- try {
25
- const payload = await this.graphql
26
- .query(GetStreamPagesDocument, {
27
- input: {
28
- limit: 10,
29
- continuationToken,
30
- filter: { streamId }
31
- },
32
- image_scale: ImageScale.OriginalEncoded
33
- })
34
- .toPromise();
35
- const data = payload.data?.streamPages;
36
- if (!data) {
37
- return emptyResult;
38
- }
39
- return {
40
- items: data.items.map(mapToStreamPageViewerModel),
41
- continuationToken: data.continuationToken
42
- };
43
- }
44
- catch {
45
- return emptyResult;
46
- }
47
- };
48
- }
@@ -1,28 +0,0 @@
1
- import { type StreamPageViewerModel } from '../stream-page-viewer';
2
- import type { IPlayerBuffer } from '../../ui/player-slider';
3
- import type { IStreamPlayerDataProvider } from './types';
4
- export declare class StreamPlayerBuffer implements IPlayerBuffer<StreamPageViewerModel> {
5
- readonly loaded: StreamPageViewerModel[];
6
- readonly currentIndex: number;
7
- readonly current: StreamPageViewerModel | null;
8
- readonly canLoadNext: boolean;
9
- readonly canLoadPrevious: boolean;
10
- readonly navigationDisabled: boolean;
11
- readonly animationDuration = 300;
12
- private _currentIndex;
13
- private _loaded;
14
- private _pagesLoader;
15
- constructor(init: {
16
- streamId: string;
17
- dataProvider: IStreamPlayerDataProvider;
18
- on?: {
19
- preloaded?: (self: StreamPlayerBuffer) => void;
20
- };
21
- });
22
- loadMore: () => Promise<StreamPageViewerModel[]>;
23
- loadNext: () => Promise<void>;
24
- loadPrevious: () => Promise<void>;
25
- setIndex: (index: number) => void;
26
- reset: (onPreloaded?: (self: StreamPlayerBuffer) => void) => Promise<void>;
27
- private warmUpBuffer;
28
- }
@@ -1,79 +0,0 @@
1
- import { ContinuationToken } from '../../core/continuation-token';
2
- import { CursorDataLoader } from '../../core/data-loaders';
3
- import { Utils } from '../../core/utils';
4
- import {} from '../stream-page-viewer';
5
- export class StreamPlayerBuffer {
6
- loaded = $derived.by(() => this._loaded);
7
- currentIndex = $derived.by(() => this._currentIndex);
8
- current = $derived(this.currentIndex >= 0 ? this.loaded[this.currentIndex] : null);
9
- canLoadNext = $derived(this.currentIndex < this.loaded.length - 1);
10
- canLoadPrevious = $derived(this.currentIndex > 0);
11
- navigationDisabled = $derived(!this.canLoadNext && !this.canLoadPrevious);
12
- animationDuration = 300;
13
- _currentIndex = $state(-1);
14
- _loaded = $state.raw([]);
15
- _pagesLoader;
16
- constructor(init) {
17
- const { streamId, dataProvider, on } = init;
18
- this._pagesLoader = new CursorDataLoader({
19
- loadPage: async (continuationToken) => {
20
- const result = await dataProvider.getStreamPages(streamId, continuationToken.toNextChunkString());
21
- const items = result.items;
22
- this._loaded = [...this._loaded, ...items];
23
- return {
24
- items: items,
25
- continuationToken: ContinuationToken.fromPayload(result.continuationToken)
26
- };
27
- }
28
- });
29
- this.warmUpBuffer(on?.preloaded);
30
- this.loadNext = Utils.throttle(this.loadNext, this.animationDuration);
31
- this.loadPrevious = Utils.throttle(this.loadPrevious, this.animationDuration);
32
- }
33
- loadMore = () => this._pagesLoader.loadMore();
34
- loadNext = async () => {
35
- if (!this.canLoadNext) {
36
- return;
37
- }
38
- ++this._currentIndex;
39
- this.warmUpBuffer();
40
- };
41
- loadPrevious = async () => {
42
- if (!this.canLoadPrevious) {
43
- return;
44
- }
45
- --this._currentIndex;
46
- };
47
- setIndex = (index) => {
48
- this._currentIndex = index;
49
- this.warmUpBuffer();
50
- };
51
- reset = async (onPreloaded) => {
52
- this._loaded = [];
53
- this._currentIndex = -1;
54
- await this._pagesLoader.reset();
55
- this.warmUpBuffer(onPreloaded);
56
- };
57
- warmUpBuffer = async (onPreloaded) => {
58
- const bufferSize = 2;
59
- if (this.loaded.length >= this.currentIndex + bufferSize) {
60
- if (onPreloaded) {
61
- onPreloaded(this);
62
- }
63
- return;
64
- }
65
- try {
66
- await this.loadMore();
67
- if (this._currentIndex < 0) {
68
- if (this.loaded.length > 0) {
69
- this._currentIndex = 0;
70
- }
71
- }
72
- }
73
- finally {
74
- if (onPreloaded) {
75
- onPreloaded(this);
76
- }
77
- }
78
- };
79
- }
@@ -1,8 +0,0 @@
1
- import type { MediaCenterData } from '../../media-center/model/types';
2
- import type { StreamPlayerProps } from './types';
3
- type $$ComponentProps = StreamPlayerProps & {
4
- mediaCenterData?: MediaCenterData;
5
- };
6
- declare const StreamPlayerView: import("svelte").Component<$$ComponentProps, {}, "">;
7
- type StreamPlayerView = ReturnType<typeof StreamPlayerView>;
8
- export default StreamPlayerView;
@@ -1 +0,0 @@
1
- import { IconColor } from '../icon';
@@ -1,31 +0,0 @@
1
- import type { IPlayerBuffer, TExtended } from './types';
2
- export declare class PlayerBuffer<T extends {
3
- id: string;
4
- }> implements IPlayerBuffer<T> {
5
- readonly loaded: TExtended<T>[];
6
- readonly currentIndex: number;
7
- readonly current: TExtended<T> | null;
8
- readonly canLoadNext: boolean;
9
- readonly canLoadPrevious: boolean;
10
- readonly navigationDisabled: boolean;
11
- readonly animationDuration = 500;
12
- private _currentIndex;
13
- private _loaded;
14
- private loadMoreFn;
15
- private isLoading;
16
- constructor(provider: IPlayerItemsProvider<T>, on?: {
17
- preloaded?: (self: PlayerBuffer<T>) => void;
18
- });
19
- loadNext: () => Promise<void>;
20
- loadPrevious: () => Promise<void>;
21
- reset: (onPreloaded?: (self: PlayerBuffer<T>) => void) => void;
22
- private warmUpBuffer;
23
- }
24
- export interface IPlayerItemsProvider<T> {
25
- initialData: {
26
- prefetchedItems: T[];
27
- startIndex: number;
28
- startMediaIndex?: number;
29
- };
30
- loadMore(): Promise<T[]>;
31
- }
@@ -1,76 +0,0 @@
1
- import { Utils } from '../../core/utils';
2
- export class PlayerBuffer {
3
- loaded = $derived.by(() => this._loaded);
4
- currentIndex = $derived.by(() => this._currentIndex);
5
- current = $derived(this.currentIndex >= 0 ? this.loaded[this.currentIndex] : null);
6
- canLoadNext = $derived(this.currentIndex < this.loaded.length - 1);
7
- canLoadPrevious = $derived(this.currentIndex > 0);
8
- navigationDisabled = $derived(!this.canLoadNext && !this.canLoadPrevious);
9
- animationDuration = 500;
10
- _currentIndex = $state(-1);
11
- _loaded = $state.raw([]);
12
- loadMoreFn;
13
- isLoading = false;
14
- constructor(provider, on) {
15
- this.loadMoreFn = provider.loadMore;
16
- this._loaded =
17
- provider.initialData.startIndex >= 0 && provider.initialData.startMediaIndex && provider.initialData.startMediaIndex > 0
18
- ? provider.initialData.prefetchedItems.map((i, index) => ({
19
- ...i,
20
- mediaIndex: index === provider.initialData.startIndex ? provider.initialData.startMediaIndex : 0
21
- }))
22
- : provider.initialData.prefetchedItems;
23
- this._currentIndex = provider.initialData.prefetchedItems.length
24
- ? provider.initialData.startIndex >= this._loaded.length
25
- ? provider.initialData.prefetchedItems.length - 1
26
- : provider.initialData.startIndex
27
- : -1;
28
- this.warmUpBuffer(on?.preloaded);
29
- this.loadNext = Utils.throttle(this.loadNext, this.animationDuration);
30
- this.loadPrevious = Utils.throttle(this.loadPrevious, this.animationDuration);
31
- }
32
- loadNext = async () => {
33
- if (!this.canLoadNext) {
34
- return;
35
- }
36
- ++this._currentIndex;
37
- this.warmUpBuffer();
38
- };
39
- loadPrevious = async () => {
40
- if (!this.canLoadPrevious) {
41
- return;
42
- }
43
- --this._currentIndex;
44
- };
45
- reset = (onPreloaded) => {
46
- this._loaded = [];
47
- this._currentIndex = -1;
48
- this.isLoading = false;
49
- this.warmUpBuffer(onPreloaded);
50
- };
51
- warmUpBuffer = async (onPreloaded) => {
52
- const bufferSize = 5;
53
- if (this._loaded.length >= this.currentIndex + bufferSize || this.isLoading) {
54
- if (onPreloaded) {
55
- onPreloaded(this);
56
- }
57
- return;
58
- }
59
- this.isLoading = true;
60
- try {
61
- const result = await this.loadMoreFn();
62
- this._loaded = [...this._loaded, ...result];
63
- if (this.currentIndex < 0) {
64
- if (this._loaded.length > 0) {
65
- this._currentIndex = 0;
66
- }
67
- }
68
- }
69
- finally {
70
- if (onPreloaded) {
71
- onPreloaded(this);
72
- }
73
- this.isLoading = false;
74
- }
75
- };
76
- }
@@ -1,26 +0,0 @@
1
- export interface IPlayerBuffer<T extends {
2
- id: string;
3
- }> {
4
- readonly current: TExtended<T> | null;
5
- readonly currentIndex: number;
6
- readonly loaded: TExtended<T>[];
7
- readonly canLoadNext: boolean;
8
- readonly canLoadPrevious: boolean;
9
- readonly navigationDisabled: boolean;
10
- readonly animationDuration: number;
11
- loadNext: () => void;
12
- loadPrevious: () => void;
13
- reset: () => void;
14
- }
15
- export type TExtended<T> = T & {
16
- mediaIndex?: number;
17
- };
18
- export type PlayerSliderCallbacks<T> = {
19
- itemPreActivated?: (e: T) => void;
20
- itemPreDeactivated?: (e: {
21
- itemId: string;
22
- loadingNext: boolean;
23
- }) => void;
24
- itemActivated?: (e: string) => void;
25
- itemDeactivated?: (e: string) => void;
26
- };