@streamscloud/embeddable 9.0.0 → 10.1.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/dist/content-player/cmp.content-player.svelte +1 -1
- package/dist/content-player/content-player-config.svelte.d.ts +4 -4
- package/dist/content-player/controls-and-attachments.svelte +1 -1
- package/dist/content-player/header.svelte +1 -1
- package/dist/core/actions/horizontal-wheel-scroll.d.ts +1 -0
- package/dist/core/actions/horizontal-wheel-scroll.js +9 -8
- package/dist/core/document.event-handlers.d.ts +1 -0
- package/dist/core/document.event-handlers.js +3 -0
- package/dist/media-center/config/internal-media-center-analytics-handler.d.ts +1 -1
- package/dist/media-center/config/internal-media-center-config.js +34 -44
- package/dist/media-center/config/operations.generated.d.ts +0 -104
- package/dist/media-center/config/operations.generated.js +0 -320
- package/dist/media-center/config/operations.graphql +0 -24
- package/dist/media-center/config/types.d.ts +7 -9
- package/dist/media-center/media-center/cmp.media-center.svelte +27 -7
- package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +2 -2
- package/dist/media-center/media-center/discover-panel-handler.svelte.d.ts +2 -2
- package/dist/media-center/media-center/discover-panel.svelte +1 -1
- package/dist/media-center/media-center/discover-panel.svelte.d.ts +2 -1
- package/dist/media-center/media-center/post-player-provider-generator.d.ts +2 -2
- package/dist/media-center/media-center/post-player-provider-generator.js +2 -1
- package/dist/media-center/media-center/streams-in-category-panel-handler.svelte.d.ts +5 -2
- package/dist/media-center/media-center/streams-in-category-panel-handler.svelte.js +5 -0
- package/dist/media-center/media-center/streams-in-category-panel.svelte +2 -2
- package/dist/media-center/media-center/streams-in-category-panel.svelte.d.ts +3 -2
- package/dist/media-center/media-center/streams-player-provider-generator.d.ts +8 -0
- package/dist/media-center/media-center/streams-player-provider-generator.js +36 -0
- package/dist/media-center/media-center/types.d.ts +0 -6
- package/dist/posts/controls/cmp.controls.svelte +1 -1
- package/dist/posts/data-loaders/index.d.ts +1 -0
- package/dist/posts/data-loaders/index.js +1 -0
- package/dist/posts/{posts-player → data-loaders}/mapper.d.ts +1 -1
- package/dist/{short-videos/data-providers → posts/data-loaders}/operations.generated.d.ts +82 -4
- package/dist/{short-videos/data-providers → posts/data-loaders}/operations.generated.js +232 -3
- package/dist/posts/data-loaders/operations.graphql +17 -0
- package/dist/posts/data-loaders/posts-loader.d.ts +19 -0
- package/dist/posts/data-loaders/posts-loader.js +28 -0
- package/dist/posts/posts-player/index.d.ts +27 -6
- package/dist/posts/posts-player/index.js +2 -3
- package/dist/posts/posts-player/posts-player-view.svelte +29 -13
- package/dist/posts/posts-player/types.d.ts +2 -2
- package/dist/short-videos/data-providers/internal-short-video-player-items-provider.d.ts +5 -6
- package/dist/short-videos/data-providers/internal-short-video-player-items-provider.js +12 -32
- package/dist/short-videos/short-videos-player/index.d.ts +2 -3
- package/dist/short-videos/short-videos-player/index.js +1 -1
- package/dist/streams/data-loaders/index.d.ts +2 -0
- package/dist/streams/data-loaders/index.js +2 -0
- package/dist/streams/{stream-player → data-loaders}/mapper.d.ts +1 -1
- package/dist/streams/{stream-player → data-loaders}/operations.generated.d.ts +27 -24
- package/dist/streams/{stream-player → data-loaders}/operations.generated.js +18 -17
- package/dist/streams/{stream-player → data-loaders}/operations.graphql +6 -3
- package/dist/streams/data-loaders/stream-pages-loader.d.ts +10 -0
- package/dist/streams/data-loaders/stream-pages-loader.js +33 -0
- package/dist/streams/data-loaders/streams-loader.d.ts +19 -0
- package/dist/streams/data-loaders/streams-loader.js +28 -0
- package/dist/streams/layout/cmp.slot-content.svelte +18 -13
- package/dist/streams/layout/element-views/cmp.button-stream-element.svelte +26 -0
- package/dist/streams/layout/element-views/cmp.button-stream-element.svelte.d.ts +10 -0
- package/dist/streams/layout/element-views/cmp.products-slider-stream-element.svelte +43 -0
- package/dist/streams/layout/element-views/cmp.products-slider-stream-element.svelte.d.ts +13 -0
- package/dist/streams/layout/element-views/cmp.stream-element.svelte +8 -6
- package/dist/streams/layout/element-views/index.d.ts +2 -0
- package/dist/streams/layout/element-views/index.js +2 -0
- package/dist/streams/layout/element-views/price-element-view.svelte +3 -0
- package/dist/streams/layout/elements.d.ts +20 -2
- package/dist/streams/layout/enums.d.ts +4 -1
- package/dist/streams/layout/enums.js +3 -0
- package/dist/streams/layout/index.d.ts +1 -0
- package/dist/streams/layout/index.js +15 -0
- package/dist/streams/layout/serializer.svelte.js +30 -5
- package/dist/streams/layout/slot-data-input.d.ts +5 -1
- package/dist/streams/layout/slot-data-ref.d.ts +2 -2
- package/dist/streams/layout/slot-data.d.ts +6 -1
- package/dist/streams/layout/styles-transformer.d.ts +3 -1
- package/dist/streams/layout/styles-transformer.js +47 -0
- package/dist/streams/layout/styles.d.ts +25 -0
- package/dist/streams/layout/type-guards.d.ts +11 -4
- package/dist/streams/layout/type-guards.js +17 -3
- package/dist/streams/{stream-player → streams-player}/index.d.ts +21 -22
- package/dist/streams/{stream-player → streams-player}/index.js +9 -7
- package/dist/streams/streams-player/internal-streams-player-data-provider.d.ts +16 -0
- package/dist/streams/streams-player/internal-streams-player-data-provider.js +55 -0
- package/dist/streams/{stream-player → streams-player}/stream-overview.svelte +18 -15
- package/dist/streams/{stream-player → streams-player}/stream-overview.svelte.d.ts +2 -2
- package/dist/streams/streams-player/streams-player-buffer.svelte.d.ts +8 -0
- package/dist/streams/streams-player/streams-player-buffer.svelte.js +15 -0
- package/dist/streams/{stream-player/stream-player-view.svelte → streams-player/streams-player-view.svelte} +69 -55
- package/dist/streams/streams-player/streams-player-view.svelte.d.ts +8 -0
- package/dist/streams/{stream-player → streams-player}/types.d.ts +9 -7
- package/dist/ui/{player-button → player/button}/cmp.player-button.svelte +1 -1
- package/dist/ui/{player-button → player/button}/cmp.player-button.svelte.d.ts +1 -1
- package/dist/ui/{player-button → player/button}/cmp.player-buttons-group.svelte +1 -1
- package/dist/ui/{player-button → player/button}/types.d.ts +1 -1
- package/dist/ui/player/button/types.js +1 -0
- package/dist/ui/player/providers/chunks-player-buffer/index.d.ts +2 -0
- package/dist/ui/player/providers/chunks-player-buffer/index.js +2 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk-item.svelte.d.ts +11 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk-item.svelte.js +11 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk.svelte.d.ts +31 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunk.svelte.js +67 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.d.ts +23 -0
- package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.js +125 -0
- package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +20 -0
- package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +47 -0
- package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +27 -0
- package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +78 -0
- package/dist/ui/player/providers/index.d.ts +3 -0
- package/dist/ui/player/providers/index.js +2 -0
- package/dist/ui/player/providers/types.d.ts +49 -0
- package/dist/ui/{player-slider → player/slider}/cmp.player-slider.svelte +7 -20
- package/dist/ui/{player-slider → player/slider}/cmp.player-slider.svelte.d.ts +4 -4
- package/dist/ui/{player-slider → player/slider}/index.d.ts +0 -2
- package/dist/ui/{player-slider → player/slider}/index.js +0 -1
- package/dist/ui/player/slider/types.d.ts +16 -0
- package/dist/ui/player/slider/types.js +1 -0
- package/package.json +4 -4
- package/dist/posts/posts-player/operations.generated.d.ts +0 -80
- package/dist/posts/posts-player/operations.generated.js +0 -229
- package/dist/posts/posts-player/operations.graphql +0 -7
- package/dist/short-videos/data-providers/operations.graphql +0 -9
- package/dist/streams/layout/element-views/stream-element-localization.d.ts +0 -7
- package/dist/streams/layout/element-views/stream-element-localization.js +0 -11
- package/dist/streams/stream-player/internal-stream-player-data-provider.d.ts +0 -12
- package/dist/streams/stream-player/internal-stream-player-data-provider.js +0 -48
- package/dist/streams/stream-player/stream-player-buffer.svelte.d.ts +0 -28
- package/dist/streams/stream-player/stream-player-buffer.svelte.js +0 -79
- package/dist/streams/stream-player/stream-player-view.svelte.d.ts +0 -8
- package/dist/ui/player-button/types.js +0 -1
- package/dist/ui/player-slider/player-buffer.svelte.d.ts +0 -32
- package/dist/ui/player-slider/player-buffer.svelte.js +0 -76
- package/dist/ui/player-slider/types.d.ts +0 -26
- /package/dist/posts/{posts-player → data-loaders}/mapper.js +0 -0
- /package/dist/streams/{stream-player → data-loaders}/mapper.js +0 -0
- /package/dist/streams/{stream-player → streams-player}/internal-stream-analytics-handler.d.ts +0 -0
- /package/dist/streams/{stream-player → streams-player}/internal-stream-analytics-handler.js +0 -0
- /package/dist/streams/{stream-player → streams-player}/stream-player-localization.d.ts +0 -0
- /package/dist/streams/{stream-player → streams-player}/stream-player-localization.js +0 -0
- /package/dist/streams/{stream-player → streams-player}/types.js +0 -0
- /package/dist/ui/{player-button → player/button}/cmp.player-buttons-group.svelte.d.ts +0 -0
- /package/dist/ui/{player-button → player/button}/index.d.ts +0 -0
- /package/dist/ui/{player-button → player/button}/index.js +0 -0
- /package/dist/ui/{player-slider → player/providers}/types.js +0 -0
- /package/dist/ui/{player-slider → player/slider}/prevent-slider-scroll.d.ts +0 -0
- /package/dist/ui/{player-slider → player/slider}/prevent-slider-scroll.js +0 -0
- /package/dist/ui/{player-slider → player/slider}/wheel-gestures-adapter.d.ts +0 -0
- /package/dist/ui/{player-slider → player/slider}/wheel-gestures-adapter.js +0 -0
|
@@ -18,27 +18,3 @@ query GetMediaPageConfig($mediaPageId: String!) {
|
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
}
|
|
21
|
-
|
|
22
|
-
# noinspection GraphQLSchemaValidation
|
|
23
|
-
query GetPosts($input: EmbedPostsInput!, $image_scale: ImageScale = ORIGINAL_ENCODED) {
|
|
24
|
-
posts: embedPosts(input: $input) {
|
|
25
|
-
items {
|
|
26
|
-
...PostsPlayerPayloadFragment
|
|
27
|
-
}
|
|
28
|
-
continuationToken
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
query GetStreams($input: EmbedStreamsInput!) {
|
|
33
|
-
streams: embedStreams(input: $input) {
|
|
34
|
-
items {
|
|
35
|
-
id
|
|
36
|
-
cover {
|
|
37
|
-
url
|
|
38
|
-
}
|
|
39
|
-
title
|
|
40
|
-
subTitle
|
|
41
|
-
}
|
|
42
|
-
continuationToken
|
|
43
|
-
}
|
|
44
|
-
}
|
|
@@ -2,7 +2,8 @@ import { PostType } from '../../core/enums';
|
|
|
2
2
|
import type { IContentCategoryFollowingHandler } from '../categories-following';
|
|
3
3
|
import type { IPostAnalyticsHandler, PostPlayerModel } from '../../posts/posts-player/types';
|
|
4
4
|
import type { IPostSocialInteractionsHandler } from '../../posts/social-interactions';
|
|
5
|
-
import type {
|
|
5
|
+
import type { StreamPageViewerModel } from '../../streams/stream-page-viewer';
|
|
6
|
+
import type { IStreamAnalyticsHandler, StreamPlayerModel } from '../../streams/streams-player/types';
|
|
6
7
|
export interface IMediaCenterConfig {
|
|
7
8
|
getConfig: () => Promise<MediaCenterConfigModel | null>;
|
|
8
9
|
handlers?: {
|
|
@@ -33,10 +34,13 @@ export interface IMediaCenterConfig {
|
|
|
33
34
|
limit: number;
|
|
34
35
|
continuationToken?: string | null;
|
|
35
36
|
}) => Promise<{
|
|
36
|
-
items:
|
|
37
|
+
items: StreamPlayerModel[];
|
|
38
|
+
continuationToken: string | null;
|
|
39
|
+
}>;
|
|
40
|
+
getStreamPages: (streamId: string, continuationToken: string | null | undefined) => Promise<{
|
|
41
|
+
items: StreamPageViewerModel[];
|
|
37
42
|
continuationToken: string | null;
|
|
38
43
|
}>;
|
|
39
|
-
streamPlayerDataProvider: IStreamPlayerDataProvider;
|
|
40
44
|
};
|
|
41
45
|
}
|
|
42
46
|
export type MediaCenterConfigModel = {
|
|
@@ -48,12 +52,6 @@ export type MediaCenterConfigModel = {
|
|
|
48
52
|
}[];
|
|
49
53
|
targetData: MediaCenterTargetDataModel;
|
|
50
54
|
};
|
|
51
|
-
export type MediaCenterStreamPreviewModel = {
|
|
52
|
-
id: string;
|
|
53
|
-
title: string;
|
|
54
|
-
subTitle: string | null;
|
|
55
|
-
cover: string | null;
|
|
56
|
-
};
|
|
57
55
|
export type MediaCenterTargetDataModel = {
|
|
58
56
|
id: string;
|
|
59
57
|
name: string;
|
|
@@ -10,10 +10,10 @@
|
|
|
10
10
|
import { horizontalWheelScroll } from '../../core/actions';
|
|
11
11
|
import { Utils } from '../../core/utils';
|
|
12
12
|
import { default as PostsPlayerView } from '../../posts/posts-player/posts-player-view.svelte';
|
|
13
|
-
import { default as
|
|
13
|
+
import { default as StreamsPlayerView } from '../../streams/streams-player/streams-player-view.svelte';
|
|
14
14
|
import { Icon } from '../../ui/icon';
|
|
15
15
|
import { Loading } from '../../ui/loading';
|
|
16
|
-
import { PlayerButton } from '../../ui/player
|
|
16
|
+
import { PlayerButton } from '../../ui/player/button';
|
|
17
17
|
import { default as DesktopCategoriesSelector } from './desktop-categories-selector.svelte';
|
|
18
18
|
import { DiscoverPanelHandler } from './discover-panel-handler.svelte';
|
|
19
19
|
import { default as DiscoverPanel } from './discover-panel.svelte';
|
|
@@ -23,6 +23,7 @@ import { default as MobileControlsPanel } from './mobile-controls-panel.svelte';
|
|
|
23
23
|
import { makePostPlayerItemsProvider } from './post-player-provider-generator';
|
|
24
24
|
import { StreamsInCategoryPanelHandler } from './streams-in-category-panel-handler.svelte';
|
|
25
25
|
import { default as StreamsInCategoryPanel } from './streams-in-category-panel.svelte';
|
|
26
|
+
import { makeStreamsPlayerDataProvider } from './streams-player-provider-generator';
|
|
26
27
|
import IconLineHorizontal3 from '@fluentui/svg-icons/icons/line_horizontal_3_20_regular.svg?raw';
|
|
27
28
|
import IconScreenSearch from '@fluentui/svg-icons/icons/screen_search_20_regular.svg?raw';
|
|
28
29
|
import { tick } from 'svelte';
|
|
@@ -140,7 +141,7 @@ const activateSelectedShortVideoPlayer = (shortVideo) => {
|
|
|
140
141
|
discoverHandler.deactivate();
|
|
141
142
|
streamsInCategoryHandler.deactivate();
|
|
142
143
|
};
|
|
143
|
-
const activateSelectedStreamPlayer = (
|
|
144
|
+
const activateSelectedStreamPlayer = (stream) => {
|
|
144
145
|
var _a, _b;
|
|
145
146
|
if (!config) {
|
|
146
147
|
return;
|
|
@@ -148,7 +149,21 @@ const activateSelectedStreamPlayer = (id) => {
|
|
|
148
149
|
mediaCenterMode = 'stream';
|
|
149
150
|
computedPlayerProps = {
|
|
150
151
|
mode: 'stream',
|
|
151
|
-
props: Object.assign({
|
|
152
|
+
props: Object.assign({ dataProvider: makeStreamsPlayerDataProvider({ config, prefetchedStreams: [stream] }), analyticsHandler: (_a = config.handlers) === null || _a === void 0 ? void 0 : _a.analyticsHandler, postSocialInteractionsHandler: (_b = config.handlers) === null || _b === void 0 ? void 0 : _b.socialInteractionsHandler }, commonPlayerSettings)
|
|
153
|
+
};
|
|
154
|
+
handler.selectedCategoryId = null;
|
|
155
|
+
discoverHandler.deactivate();
|
|
156
|
+
streamsInCategoryHandler.deactivate();
|
|
157
|
+
};
|
|
158
|
+
const activateSelectedStreamOfCategoryPlayer = (id, prefetchedStreams, categoryId) => {
|
|
159
|
+
var _a, _b;
|
|
160
|
+
if (!config) {
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
mediaCenterMode = 'stream';
|
|
164
|
+
computedPlayerProps = {
|
|
165
|
+
mode: 'stream',
|
|
166
|
+
props: Object.assign({ dataProvider: makeStreamsPlayerDataProvider({ config, prefetchedStreams: prefetchedStreams, initialStreamId: id, categoryId }), analyticsHandler: (_a = config.handlers) === null || _a === void 0 ? void 0 : _a.analyticsHandler, postSocialInteractionsHandler: (_b = config.handlers) === null || _b === void 0 ? void 0 : _b.socialInteractionsHandler }, commonPlayerSettings)
|
|
152
167
|
};
|
|
153
168
|
handler.selectedCategoryId = null;
|
|
154
169
|
discoverHandler.deactivate();
|
|
@@ -272,7 +287,7 @@ const onWidthAnchorMounted = (node) => {
|
|
|
272
287
|
callbacks: { onHeaderHeightChanged, onExtraActionsForMobileControlsPanelDetermined }
|
|
273
288
|
}} />
|
|
274
289
|
{:else if computedPlayerProps.mode === 'stream'}
|
|
275
|
-
<
|
|
290
|
+
<StreamsPlayerView
|
|
276
291
|
{...computedPlayerProps.props}
|
|
277
292
|
mediaCenterData={{
|
|
278
293
|
controlsPanel: handler.categories.length ? controlsPanel : undefined,
|
|
@@ -290,13 +305,18 @@ const onWidthAnchorMounted = (node) => {
|
|
|
290
305
|
<DiscoverPanel
|
|
291
306
|
handler={discoverHandler}
|
|
292
307
|
localization={localization}
|
|
293
|
-
on={{
|
|
308
|
+
on={{
|
|
309
|
+
shortVideoSelected: (shortVideo) => activateSelectedShortVideoPlayer(shortVideo),
|
|
310
|
+
streamSelected: (stream) => activateSelectedStreamPlayer(stream)
|
|
311
|
+
}} />
|
|
294
312
|
</div>
|
|
295
313
|
{/if}
|
|
296
314
|
|
|
297
315
|
{#if streamsInCategoryHandler.active}
|
|
298
316
|
<div class="media-center-overlay" style={`top:${headerHeight}px`} transition:fade={{ duration: 300 }}>
|
|
299
|
-
<StreamsInCategoryPanel
|
|
317
|
+
<StreamsInCategoryPanel
|
|
318
|
+
handler={streamsInCategoryHandler}
|
|
319
|
+
on={{ streamSelected: (id, categoryId, streams) => activateSelectedStreamOfCategoryPlayer(id, streams, categoryId) }} />
|
|
300
320
|
</div>
|
|
301
321
|
{/if}
|
|
302
322
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { Locale } from '../../core/locale';
|
|
2
2
|
import type { IMediaCenterConfig } from '../config/types';
|
|
3
3
|
import type { PostPlayerProps } from '../../posts/posts-player/types';
|
|
4
|
-
import type {
|
|
4
|
+
import type { StreamsPlayerProps } from '../../streams/streams-player/types';
|
|
5
5
|
type PlayerProps = {
|
|
6
6
|
mode: 'posts';
|
|
7
7
|
props: PostPlayerProps;
|
|
8
8
|
} | {
|
|
9
9
|
mode: 'stream';
|
|
10
|
-
props:
|
|
10
|
+
props: StreamsPlayerProps;
|
|
11
11
|
};
|
|
12
12
|
type Props = {
|
|
13
13
|
config: IMediaCenterConfig | null;
|
|
@@ -2,7 +2,7 @@ import type { TrackingParams } from '../../marketing-tracking';
|
|
|
2
2
|
import type { IMediaCenterConfig } from '..';
|
|
3
3
|
import type { PostPlayerModel } from '../../posts/posts-player';
|
|
4
4
|
import type { ProductCardModel } from '../../products/product-card';
|
|
5
|
-
import type {
|
|
5
|
+
import type { StreamPlayerModel } from '../../streams/streams-player';
|
|
6
6
|
export declare class DiscoverPanelHandler {
|
|
7
7
|
private readonly config;
|
|
8
8
|
private _activated;
|
|
@@ -11,7 +11,7 @@ export declare class DiscoverPanelHandler {
|
|
|
11
11
|
private _shortVideos;
|
|
12
12
|
private _products;
|
|
13
13
|
constructor(config: IMediaCenterConfig | null);
|
|
14
|
-
get streamSectionItems():
|
|
14
|
+
get streamSectionItems(): StreamPlayerModel[];
|
|
15
15
|
get shortVideoSectionItems(): ShortVideoSectionItemType[];
|
|
16
16
|
get activated(): boolean;
|
|
17
17
|
get active(): boolean;
|
|
@@ -16,7 +16,7 @@ let { handler, localization, on } = $props();
|
|
|
16
16
|
</div>
|
|
17
17
|
<div class="media-center-overview__section-content">
|
|
18
18
|
{#each handler.streamSectionItems as item (item.id)}
|
|
19
|
-
<StreamCard stream={item} on={{ click: () => on.streamSelected(item
|
|
19
|
+
<StreamCard stream={item} on={{ click: () => on.streamSelected(item) }}></StreamCard>
|
|
20
20
|
{/each}
|
|
21
21
|
</div>
|
|
22
22
|
</div>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { PostPlayerModel } from '../../posts/posts-player';
|
|
2
|
+
import type { StreamPlayerModel } from '../../streams/streams-player';
|
|
2
3
|
import { DiscoverPanelHandler } from './discover-panel-handler.svelte';
|
|
3
4
|
import { MediaCenterLocalization } from './media-center-localization';
|
|
4
5
|
type Props = {
|
|
@@ -6,7 +7,7 @@ type Props = {
|
|
|
6
7
|
localization: MediaCenterLocalization;
|
|
7
8
|
on: {
|
|
8
9
|
shortVideoSelected: (shortVideo: PostPlayerModel) => void;
|
|
9
|
-
streamSelected: (
|
|
10
|
+
streamSelected: (stream: StreamPlayerModel) => void;
|
|
10
11
|
};
|
|
11
12
|
};
|
|
12
13
|
declare const DiscoverPanel: import("svelte").Component<Props, {}, "">;
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { PostPlayerModel } from '../../posts/posts-player';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IFeedPlayerDataProvider } from '../../ui/player/providers';
|
|
3
3
|
import type { IMediaCenterConfig } from '../config/types';
|
|
4
4
|
export declare const makePostPlayerItemsProvider: (data: {
|
|
5
5
|
config: IMediaCenterConfig;
|
|
6
6
|
categoryId?: string;
|
|
7
7
|
prefetchedItems?: PostPlayerModel[];
|
|
8
|
-
}) =>
|
|
8
|
+
}) => IFeedPlayerDataProvider<PostPlayerModel>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { PostType } from '../..';
|
|
2
1
|
import { ContinuationToken } from '../../core/continuation-token';
|
|
3
2
|
import { CursorDataLoader } from '../../core/data-loaders';
|
|
3
|
+
import { PostType } from '../../core/enums';
|
|
4
4
|
export const makePostPlayerItemsProvider = (data) => {
|
|
5
5
|
const { config, categoryId, prefetchedItems = [] } = data;
|
|
6
6
|
const loader = new CursorDataLoader({
|
|
@@ -22,6 +22,7 @@ export const makePostPlayerItemsProvider = (data) => {
|
|
|
22
22
|
}
|
|
23
23
|
});
|
|
24
24
|
return {
|
|
25
|
+
kind: 'feed',
|
|
25
26
|
initialData: {
|
|
26
27
|
prefetchedItems,
|
|
27
28
|
startIndex: prefetchedItems.length ? 0 : -1
|
|
@@ -1,13 +1,16 @@
|
|
|
1
1
|
import type { IMediaCenterConfig } from '../../short-videos/short-videos-player';
|
|
2
|
-
import type {
|
|
2
|
+
import type { StreamPlayerModel } from '../../streams/streams-player';
|
|
3
|
+
import type { MediaCenterCategoryData } from './types';
|
|
3
4
|
export declare class StreamsInCategoryPanelHandler {
|
|
4
5
|
private readonly config;
|
|
5
6
|
private _activated;
|
|
6
7
|
private _state;
|
|
8
|
+
private _categoryId;
|
|
7
9
|
private _categoryName;
|
|
8
10
|
private _streams;
|
|
9
11
|
constructor(config: IMediaCenterConfig | null);
|
|
10
|
-
get streamSectionItems():
|
|
12
|
+
get streamSectionItems(): StreamPlayerModel[];
|
|
13
|
+
get categoryId(): string;
|
|
11
14
|
get categoryName(): string;
|
|
12
15
|
get activated(): boolean;
|
|
13
16
|
get active(): boolean;
|
|
@@ -2,6 +2,7 @@ export class StreamsInCategoryPanelHandler {
|
|
|
2
2
|
config;
|
|
3
3
|
_activated = $state(false);
|
|
4
4
|
_state = $state('loading');
|
|
5
|
+
_categoryId = $state.raw('');
|
|
5
6
|
_categoryName = $state.raw('');
|
|
6
7
|
_streams = $state.raw([]);
|
|
7
8
|
constructor(config) {
|
|
@@ -10,6 +11,9 @@ export class StreamsInCategoryPanelHandler {
|
|
|
10
11
|
get streamSectionItems() {
|
|
11
12
|
return this._streams;
|
|
12
13
|
}
|
|
14
|
+
get categoryId() {
|
|
15
|
+
return this._categoryId;
|
|
16
|
+
}
|
|
13
17
|
get categoryName() {
|
|
14
18
|
return this._categoryName;
|
|
15
19
|
}
|
|
@@ -31,6 +35,7 @@ export class StreamsInCategoryPanelHandler {
|
|
|
31
35
|
try {
|
|
32
36
|
const streamsResponse = await this.config.streamPlayer.getStreamsCursor({ filter: { categoryId: category.id }, limit: 5 });
|
|
33
37
|
this._categoryName = category.parentName ? `${category.parentName} - ${category.name}` : category.name;
|
|
38
|
+
this._categoryId = category.id;
|
|
34
39
|
this._streams = streamsResponse.items;
|
|
35
40
|
}
|
|
36
41
|
finally {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<script lang="ts">import { StreamCard } from '../../streams/stream-card';
|
|
2
|
-
import { StreamsInCategoryPanelHandler } from './streams-in-category-panel-handler.svelte
|
|
2
|
+
import { StreamsInCategoryPanelHandler } from './streams-in-category-panel-handler.svelte';
|
|
3
3
|
let { handler, on } = $props();
|
|
4
4
|
</script>
|
|
5
5
|
|
|
@@ -12,7 +12,7 @@ let { handler, on } = $props();
|
|
|
12
12
|
</div>
|
|
13
13
|
<div class="streams-in-category__section-content">
|
|
14
14
|
{#each handler.streamSectionItems as item (item.id)}
|
|
15
|
-
<StreamCard stream={item} on={{ click: () => on.streamSelected(item.id) }}></StreamCard>
|
|
15
|
+
<StreamCard stream={item} on={{ click: () => on.streamSelected(item.id, handler.categoryId, handler.streamSectionItems) }}></StreamCard>
|
|
16
16
|
{/each}
|
|
17
17
|
</div>
|
|
18
18
|
</div>
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { StreamPlayerModel } from '../../streams/streams-player';
|
|
2
|
+
import { StreamsInCategoryPanelHandler } from './streams-in-category-panel-handler.svelte';
|
|
2
3
|
type Props = {
|
|
3
4
|
handler: StreamsInCategoryPanelHandler;
|
|
4
5
|
on: {
|
|
5
|
-
streamSelected: (
|
|
6
|
+
streamSelected: (streamId: string, categoryId: string, streams: StreamPlayerModel[]) => void;
|
|
6
7
|
};
|
|
7
8
|
};
|
|
8
9
|
declare const StreamsInCategoryPanel: import("svelte").Component<Props, {}, "">;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { IStreamsPlayerDataProvider, StreamPlayerModel } from '../../streams/streams-player/types';
|
|
2
|
+
import type { IMediaCenterConfig } from '../config/types';
|
|
3
|
+
export declare const makeStreamsPlayerDataProvider: (data: {
|
|
4
|
+
config: IMediaCenterConfig;
|
|
5
|
+
initialStreamId?: string;
|
|
6
|
+
categoryId?: string;
|
|
7
|
+
prefetchedStreams?: StreamPlayerModel[];
|
|
8
|
+
}) => IStreamsPlayerDataProvider;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ContinuationToken } from '../../core/continuation-token';
|
|
2
|
+
import { CursorDataLoader } from '../../core/data-loaders';
|
|
3
|
+
export const makeStreamsPlayerDataProvider = (data) => {
|
|
4
|
+
const { config, categoryId, prefetchedStreams: initialPrefetchedStreams = [], initialStreamId } = data;
|
|
5
|
+
const loader = new CursorDataLoader({
|
|
6
|
+
loadPage: async (continuationToken) => {
|
|
7
|
+
const result = await config.streamPlayer.getStreamsCursor({
|
|
8
|
+
filter: {
|
|
9
|
+
categoryId,
|
|
10
|
+
excludeIds: initialPrefetchedStreams.length ? initialPrefetchedStreams.map((i) => i.id) : undefined
|
|
11
|
+
},
|
|
12
|
+
continuationToken: continuationToken.toNextChunkString(),
|
|
13
|
+
limit: 20
|
|
14
|
+
});
|
|
15
|
+
const items = result.items;
|
|
16
|
+
return {
|
|
17
|
+
items: items,
|
|
18
|
+
continuationToken: ContinuationToken.fromPayload(result.continuationToken)
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
let prefetchedStreams = initialPrefetchedStreams;
|
|
23
|
+
if (initialStreamId) {
|
|
24
|
+
const targetStream = prefetchedStreams.find((stream) => stream.id === initialStreamId);
|
|
25
|
+
if (targetStream) {
|
|
26
|
+
prefetchedStreams = [targetStream, ...prefetchedStreams.filter((stream) => stream.id !== initialStreamId)];
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
initialData: {
|
|
31
|
+
prefetchedStreams
|
|
32
|
+
},
|
|
33
|
+
loadMoreStreams: loader.loadMore,
|
|
34
|
+
getStreamPages: config.streamPlayer.getStreamPages
|
|
35
|
+
};
|
|
36
|
+
};
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
};
|
|
10
10
|
import { IconColor } from '../../ui/icon';
|
|
11
11
|
import { MediaVolumeManager } from '../../ui/media-playback';
|
|
12
|
-
import { PlayerButton, PlayerButtonsGroup } from '../../ui/player
|
|
12
|
+
import { PlayerButton, PlayerButtonsGroup } from '../../ui/player/button';
|
|
13
13
|
import IconHeartFilled from '@fluentui/svg-icons/icons/heart_20_filled.svg?raw';
|
|
14
14
|
import IconHeart from '@fluentui/svg-icons/icons/heart_28_regular.svg?raw';
|
|
15
15
|
import IconShare from '@fluentui/svg-icons/icons/share_28_regular.svg?raw';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getPostsCursor } from './posts-loader';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { getPostsCursor } from './posts-loader';
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
+
import type { PostPlayerModel } from '../posts-player/types';
|
|
1
2
|
import type { PostsPlayerPayloadFragment } from './operations.generated';
|
|
2
|
-
import type { PostPlayerModel } from './types';
|
|
3
3
|
export declare const mapToPostPlayerModel: (payload: PostsPlayerPayloadFragment) => PostPlayerModel;
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import type * as SchemaTypes from '../../../gql/types';
|
|
2
2
|
import type { TypedDocumentNode as DocumentNode } from '@graphql-typed-document-node/core';
|
|
3
|
-
export type
|
|
3
|
+
export type GetPostsQueryVariables = SchemaTypes.Exact<{
|
|
4
4
|
input: SchemaTypes.EmbedPostsInput;
|
|
5
5
|
image_scale?: SchemaTypes.InputMaybe<SchemaTypes.ImageScale>;
|
|
6
6
|
}>;
|
|
7
|
-
export type
|
|
8
|
-
|
|
7
|
+
export type GetPostsQuery = {
|
|
8
|
+
posts: {
|
|
9
9
|
continuationToken: string | null;
|
|
10
10
|
items: Array<{
|
|
11
11
|
id: string;
|
|
@@ -86,4 +86,82 @@ export type GetShortVideosQuery = {
|
|
|
86
86
|
}>;
|
|
87
87
|
};
|
|
88
88
|
};
|
|
89
|
-
export
|
|
89
|
+
export type PostsPlayerPayloadFragment = {
|
|
90
|
+
id: string;
|
|
91
|
+
enableSocialInteractions: boolean;
|
|
92
|
+
ownerProfile: {
|
|
93
|
+
id: string;
|
|
94
|
+
type: SchemaTypes.ProfileType;
|
|
95
|
+
};
|
|
96
|
+
allProducts: Array<{
|
|
97
|
+
id: string;
|
|
98
|
+
title: string;
|
|
99
|
+
shortDescription: string | null;
|
|
100
|
+
link: string | null;
|
|
101
|
+
media: Array<{
|
|
102
|
+
url: string;
|
|
103
|
+
thumbnailUrl: string | null;
|
|
104
|
+
type: SchemaTypes.MediaType;
|
|
105
|
+
}>;
|
|
106
|
+
brand: {
|
|
107
|
+
name: string;
|
|
108
|
+
} | null;
|
|
109
|
+
priceAndAvailability: {
|
|
110
|
+
currency: SchemaTypes.Currency;
|
|
111
|
+
price: number;
|
|
112
|
+
productSalePrices: Array<{
|
|
113
|
+
salePrice: number;
|
|
114
|
+
salePriceEffectiveDateFrom: any | null;
|
|
115
|
+
salePriceEffectiveDateTo: any | null;
|
|
116
|
+
}> | null;
|
|
117
|
+
};
|
|
118
|
+
}>;
|
|
119
|
+
ad: {
|
|
120
|
+
id: string;
|
|
121
|
+
title: string;
|
|
122
|
+
description: string | null;
|
|
123
|
+
price: number | null;
|
|
124
|
+
priceInfo: string | null;
|
|
125
|
+
currency: SchemaTypes.Currency | null;
|
|
126
|
+
type: SchemaTypes.AdType;
|
|
127
|
+
ctaButton: {
|
|
128
|
+
background: string;
|
|
129
|
+
textColor: string;
|
|
130
|
+
text: string;
|
|
131
|
+
url: string;
|
|
132
|
+
border: string;
|
|
133
|
+
} | null;
|
|
134
|
+
media: Array<{
|
|
135
|
+
url: string;
|
|
136
|
+
thumbnailUrl: string | null;
|
|
137
|
+
type: SchemaTypes.MediaType;
|
|
138
|
+
}>;
|
|
139
|
+
} | null;
|
|
140
|
+
postData: {
|
|
141
|
+
media: Array<{
|
|
142
|
+
url: string;
|
|
143
|
+
thumbnailUrl: string | null;
|
|
144
|
+
type: SchemaTypes.MediaType;
|
|
145
|
+
}>;
|
|
146
|
+
articleData: {
|
|
147
|
+
title: string;
|
|
148
|
+
kicker: string | null;
|
|
149
|
+
articleId: string;
|
|
150
|
+
} | null;
|
|
151
|
+
mediaData: {
|
|
152
|
+
text: string | null;
|
|
153
|
+
} | null;
|
|
154
|
+
momentData: {
|
|
155
|
+
text: string | null;
|
|
156
|
+
} | null;
|
|
157
|
+
shortVideoData: {
|
|
158
|
+
text: string | null;
|
|
159
|
+
} | null;
|
|
160
|
+
videoData: {
|
|
161
|
+
title: string | null;
|
|
162
|
+
text: string | null;
|
|
163
|
+
} | null;
|
|
164
|
+
};
|
|
165
|
+
};
|
|
166
|
+
export declare const PostsPlayerPayloadFragmentDoc: DocumentNode<PostsPlayerPayloadFragment, unknown>;
|
|
167
|
+
export declare const GetPostsDocument: DocumentNode<GetPostsQuery, GetPostsQueryVariables>;
|