@streamscloud/embeddable 12.2.0 → 13.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.
- package/dist/content-player/content-player-config.svelte.d.ts +2 -13
- package/dist/content-player/content-player-config.svelte.js +1 -1
- package/dist/content-player/content-player-settings.svelte.d.ts +16 -0
- package/dist/content-player/content-player-settings.svelte.js +27 -0
- package/dist/content-player/index.d.ts +1 -0
- package/dist/content-player/index.js +1 -0
- package/dist/core/theme/index.d.ts +1 -0
- package/dist/core/theme/theme-store.svelte.d.ts +3 -2
- package/dist/external-api/data-providers/index.d.ts +6 -0
- package/dist/external-api/data-providers/index.js +6 -0
- package/dist/external-api/data-providers/internal-media-center-data-provider.svelte.d.ts +15 -0
- package/dist/{media-center/config/internal-media-center-config.js → external-api/data-providers/internal-media-center-data-provider.svelte.js} +33 -17
- package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.d.ts +1 -1
- package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.js +1 -1
- package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.d.ts +1 -1
- package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.d.ts +1 -1
- package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.js +1 -1
- package/dist/{media-center/config → external-api/data-providers}/operations.generated.d.ts +6 -0
- package/dist/{media-center/config → external-api/data-providers}/operations.generated.js +13 -0
- package/dist/{media-center/config → external-api/data-providers}/operations.graphql +6 -0
- package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.d.ts +1 -1
- package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.js +2 -2
- package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.d.ts +1 -1
- package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.d.ts +2 -2
- package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.js +1 -1
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.d.ts +1 -1
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.js +1 -1
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.d.ts +1 -1
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.d.ts +1 -1
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.js +2 -2
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.d.ts +2 -2
- package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.js +1 -1
- package/dist/external-api/index.d.ts +3 -0
- package/dist/external-api/index.js +3 -0
- package/dist/external-api/media-page/index.d.ts +83 -0
- package/dist/external-api/media-page/index.js +82 -0
- package/dist/{short-videos → external-api}/short-videos-player/index.d.ts +27 -12
- package/dist/{short-videos → external-api}/short-videos-player/index.js +35 -28
- package/dist/external-api/streams-player/index.d.ts +105 -0
- package/dist/external-api/streams-player/index.js +110 -0
- package/dist/media-center/config/types.d.ts +28 -27
- package/dist/media-center/index.d.ts +3 -1
- package/dist/media-center/media-center/cmp.media-center-proxy.svelte +4 -4
- package/dist/media-center/media-center/cmp.media-center-proxy.svelte.d.ts +7 -4
- package/dist/media-center/media-center/discover/community-features-localization.d.ts +8 -0
- package/dist/media-center/media-center/discover/community-features-localization.js +31 -0
- package/dist/media-center/media-center/discover/community-features.svelte +171 -0
- package/dist/media-center/media-center/discover/community-features.svelte.d.ts +11 -0
- package/dist/media-center/media-center/discover/data-loading.d.ts +3 -3
- package/dist/media-center/media-center/discover/data-loading.js +5 -5
- package/dist/media-center/media-center/discover/discover-header.svelte +7 -56
- package/dist/media-center/media-center/discover/discover-view-handler.svelte.d.ts +3 -3
- package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +4 -4
- package/dist/media-center/media-center/feed/feed-handler.svelte.d.ts +5 -3
- package/dist/media-center/media-center/feed/feed-handler.svelte.js +18 -10
- package/dist/media-center/media-center/feed/feed-providers-generator.d.ts +11 -5
- package/dist/media-center/media-center/feed/feed-providers-generator.js +13 -9
- package/dist/media-center/media-center/footer/index.d.ts +1 -0
- package/dist/media-center/media-center/footer/index.js +1 -0
- package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +3 -5
- package/dist/media-center/media-center/handlers/categories-handler.svelte.js +16 -13
- package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +18 -7
- package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +18 -25
- package/dist/media-center/media-center/{header-footer → header}/index.d.ts +0 -1
- package/dist/media-center/media-center/{header-footer → header}/index.js +0 -1
- package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte +133 -28
- package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte.d.ts +2 -0
- package/dist/media-center/media-center/index.d.ts +1 -0
- package/dist/media-center/media-center/index.js +1 -0
- package/dist/media-center/media-center/media-center-context.svelte.d.ts +15 -9
- package/dist/media-center/media-center/media-center-context.svelte.js +57 -19
- package/dist/media-center/media-center/media-center-settings.svelte.d.ts +11 -0
- package/dist/media-center/media-center/media-center-settings.svelte.js +23 -0
- package/dist/media-center/media-center/media-center-view.svelte +11 -3
- package/dist/media-center/media-center/media-center-view.svelte.d.ts +2 -0
- package/dist/media-center/media-center/menu/category-following-wrapper.svelte.d.ts +1 -1
- package/dist/media-center/media-center/menu/menu.svelte +15 -14
- package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +3 -3
- package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +4 -4
- package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +22 -9
- package/dist/media-center/media-center/moments/index.d.ts +1 -0
- package/dist/media-center/media-center/moments/index.js +1 -0
- package/dist/media-center/media-center/moments/moments-feed-handler.svelte.d.ts +26 -0
- package/dist/media-center/media-center/moments/moments-feed-handler.svelte.js +49 -0
- package/dist/media-center/media-center/moments/moments-state.svelte.d.ts +20 -0
- package/dist/media-center/media-center/moments/moments-state.svelte.js +82 -0
- package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.d.ts +3 -3
- package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.js +4 -4
- package/dist/media-center/media-center/types.d.ts +3 -3
- package/dist/media-center/membership/index.d.ts +1 -0
- package/dist/media-center/membership/index.js +1 -0
- package/dist/media-center/membership/mock-membership-handler.svelte.d.ts +10 -0
- package/dist/media-center/membership/mock-membership-handler.svelte.js +21 -0
- package/dist/media-center/membership/types.d.ts +10 -0
- package/dist/media-center/membership/types.js +1 -0
- package/dist/media-center/navigation/index.d.ts +2 -0
- package/dist/media-center/navigation/index.js +1 -0
- package/dist/media-center/navigation/media-center-state.d.ts +19 -0
- package/dist/media-center/navigation/media-center-state.js +1 -0
- package/dist/media-center/navigation/mock-navigation-handler.svelte.d.ts +6 -0
- package/dist/media-center/navigation/mock-navigation-handler.svelte.js +6 -0
- package/dist/media-center/navigation/types.d.ts +5 -0
- package/dist/media-center/navigation/types.js +1 -0
- package/dist/media-page/cmp.media-page.svelte +10 -4
- package/dist/media-page/cmp.media-page.svelte.d.ts +6 -5
- package/dist/media-page/index.d.ts +40 -58
- package/dist/media-page/index.js +129 -16
- package/dist/posts/posts-player/index.d.ts +31 -33
- package/dist/posts/posts-player/index.js +90 -35
- package/dist/posts/posts-player/posts-player-view.svelte +1 -1
- package/dist/posts/posts-player/types.d.ts +2 -1
- package/dist/streams/layout/styles-transformer.d.ts +1 -1
- package/dist/streams/streams-player/index.d.ts +17 -83
- package/dist/streams/streams-player/index.js +84 -64
- package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -1
- package/dist/streams/streams-player/streams-player-view.svelte +1 -1
- package/dist/streams/streams-player/types.d.ts +3 -1
- package/dist/ui/button/cmp.options-button.svelte +123 -0
- package/dist/ui/button/cmp.options-button.svelte.d.ts +20 -0
- package/dist/ui/button/index.d.ts +1 -0
- package/dist/ui/button/index.js +1 -0
- package/dist/ui/button/resources/button-theme.svelte +16 -2
- package/dist/ui/player/colors/index.d.ts +1 -1
- package/dist/ui/player/colors/index.js +1 -1
- package/dist/ui/player/colors/player-colors.d.ts +14 -1
- package/dist/ui/player/colors/player-colors.js +24 -1
- package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +1 -0
- package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +7 -1
- package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +1 -0
- package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +7 -1
- package/dist/ui/player/providers/types.d.ts +3 -1
- package/dist/ui/shadow-dom/cmp.shadow-root.svelte +6 -4
- package/dist/ui/shadow-dom/colors.scss +6 -4
- package/package.json +5 -1
- package/dist/content-player/content-player-settings.d.ts +0 -12
- package/dist/content-player/content-player-settings.js +0 -23
- package/dist/media-center/config/internal-media-center-config.d.ts +0 -14
- package/dist/media-center/media-center/discover/discover-header-localization.d.ts +0 -6
- package/dist/media-center/media-center/discover/discover-header-localization.js +0 -15
- package/dist/posts/handlers/index.d.ts +0 -1
- package/dist/posts/handlers/index.js +0 -1
- package/dist/short-videos/data-providers/index.d.ts +0 -1
- package/dist/short-videos/data-providers/index.js +0 -1
- /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.d.ts +0 -0
- /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.js +0 -0
- /package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.js +0 -0
- /package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.d.ts +0 -0
- /package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.js +0 -0
- /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.d.ts +0 -0
- /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.js +0 -0
- /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.js +0 -0
- /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.graphql +0 -0
- /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.d.ts +0 -0
- /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.js +0 -0
- /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.js +0 -0
- /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.graphql +0 -0
- /package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte +0 -0
- /package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte.d.ts +0 -0
- /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.d.ts +0 -0
- /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.js +0 -0
- /package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte +0 -0
- /package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte.d.ts +0 -0
|
@@ -1,43 +1,53 @@
|
|
|
1
1
|
import type { Locale } from '../../core/locale';
|
|
2
|
-
import { type
|
|
3
|
-
export type {
|
|
2
|
+
import { type IMediaCenterDataProvider } from '../../media-center/config/types';
|
|
3
|
+
export type { IMediaCenterDataProvider };
|
|
4
4
|
/**
|
|
5
5
|
* Opens the short videos player modal.
|
|
6
6
|
*
|
|
7
|
+
* Uses an internal data provider configured by a list of short-video IDs,
|
|
8
|
+
* GraphQL parameters and optional media page configuration.
|
|
9
|
+
*
|
|
7
10
|
* @param init Configuration options.
|
|
8
11
|
*
|
|
9
|
-
*
|
|
12
|
+
* Required
|
|
10
13
|
* @param {string[]} init.ids
|
|
11
14
|
* List of short-video IDs to display.
|
|
12
15
|
* @param {string} init.initiator
|
|
13
16
|
* Identifier of the initiator (used for tracking/analytics and GraphQL).
|
|
17
|
+
*
|
|
18
|
+
* Optional
|
|
14
19
|
* @param {string} [init.graphqlOrigin]
|
|
15
20
|
* Optional GraphQL origin (base URL). If omitted, the default origin is determined internally.
|
|
16
21
|
* @param {string} [init.initialId]
|
|
17
22
|
* ID of the video to open first (optional).
|
|
18
23
|
* @param {string} [init.mediaPageId]
|
|
19
24
|
* Optional media page ID used to construct an internal media-center config.
|
|
25
|
+
* If provided, the short videos player will be opened inside a media page modal.
|
|
20
26
|
*
|
|
21
27
|
* Player settings
|
|
22
|
-
* @param {
|
|
23
|
-
* Handler for social interactions (like, share, etc.).
|
|
24
|
-
* @param [init.playerSettings]
|
|
28
|
+
* @param {Object} [init.playerSettings]
|
|
25
29
|
* Player UI and behavior settings.
|
|
26
30
|
*
|
|
27
|
-
* Fields of
|
|
31
|
+
* Fields of playerSettings:
|
|
32
|
+
* - {boolean} [disableBackground]
|
|
33
|
+
* If true, hides the player's background image.
|
|
28
34
|
* - {boolean} [hideCloseButton]
|
|
29
35
|
* If true, hides the close button.
|
|
30
36
|
* - {Locale} [locale='en']
|
|
31
37
|
* Localization for the player UI. Supported values: 'en' | 'no'.
|
|
32
38
|
* If omitted, the default locale 'en' is used.
|
|
39
|
+
* - {boolean} [showStreamsCloudWatermark]
|
|
40
|
+
* If true, shows the StreamsCloud watermark.
|
|
41
|
+
* - {'light' | 'dark'} [theme]
|
|
42
|
+
* Optional theme for the player UI.
|
|
33
43
|
*
|
|
34
44
|
* Events
|
|
35
|
-
* @param {{ playerClosed?: () => void;
|
|
45
|
+
* @param {{ playerClosed?: () => void; postActivated?: (id: string) => void }} [init.on]
|
|
36
46
|
* Optional event handlers.
|
|
37
47
|
* @param {() => void} [init.on.playerClosed]
|
|
38
48
|
* Called after the player is fully closed (after unmount and removal from the DOM).
|
|
39
|
-
* @param {(id: string) => void} [init.on.
|
|
40
|
-
* Called when a video becomes active (receives the video's id).
|
|
49
|
+
* @param {(id: string) => void} [init.on.postActivated]
|
|
50
|
+
* Called when a short video becomes active (receives the video's id).
|
|
41
51
|
*
|
|
42
52
|
* @returns {void}
|
|
43
53
|
*
|
|
@@ -57,6 +67,7 @@ export type { IMediaCenterConfig };
|
|
|
57
67
|
* disableBackground: false,
|
|
58
68
|
* hideCloseButton: false,
|
|
59
69
|
* showStreamsCloudWatermark: true,
|
|
70
|
+
* theme: 'dark',
|
|
60
71
|
* },
|
|
61
72
|
* on: {
|
|
62
73
|
* playerClosed: () => console.log('Player closed'),
|
|
@@ -71,10 +82,14 @@ export declare function openShortVideosPlayer(init: {
|
|
|
71
82
|
initialId?: string;
|
|
72
83
|
mediaPageId?: string;
|
|
73
84
|
playerSettings?: {
|
|
74
|
-
|
|
85
|
+
disableBackground?: boolean;
|
|
75
86
|
locale?: Locale;
|
|
87
|
+
showStreamsCloudWatermark?: boolean;
|
|
88
|
+
hideCloseButton?: boolean;
|
|
89
|
+
theme?: 'light' | 'dark';
|
|
76
90
|
};
|
|
77
91
|
on?: {
|
|
78
92
|
playerClosed?: () => void;
|
|
93
|
+
postActivated?: (id: string) => void;
|
|
79
94
|
};
|
|
80
|
-
}):
|
|
95
|
+
}): void;
|
|
@@ -1,45 +1,54 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { InternalMediaCenterDataProvider, InternalShortVideoPlayerItemsProvider, InternalPostAnalyticsHandler } from '../data-providers';
|
|
2
2
|
import {} from '../../media-center/config/types';
|
|
3
|
-
import {
|
|
3
|
+
import { openMediaPageModalWithInitialPostsProvider } from '../../media-page';
|
|
4
4
|
import { openPostsPlayer } from '../../posts/posts-player';
|
|
5
|
-
import { InternalShortVideoPlayerItemsProvider } from '../data-providers';
|
|
6
5
|
/**
|
|
7
6
|
* Opens the short videos player modal.
|
|
8
7
|
*
|
|
8
|
+
* Uses an internal data provider configured by a list of short-video IDs,
|
|
9
|
+
* GraphQL parameters and optional media page configuration.
|
|
10
|
+
*
|
|
9
11
|
* @param init Configuration options.
|
|
10
12
|
*
|
|
11
|
-
*
|
|
13
|
+
* Required
|
|
12
14
|
* @param {string[]} init.ids
|
|
13
15
|
* List of short-video IDs to display.
|
|
14
16
|
* @param {string} init.initiator
|
|
15
17
|
* Identifier of the initiator (used for tracking/analytics and GraphQL).
|
|
18
|
+
*
|
|
19
|
+
* Optional
|
|
16
20
|
* @param {string} [init.graphqlOrigin]
|
|
17
21
|
* Optional GraphQL origin (base URL). If omitted, the default origin is determined internally.
|
|
18
22
|
* @param {string} [init.initialId]
|
|
19
23
|
* ID of the video to open first (optional).
|
|
20
24
|
* @param {string} [init.mediaPageId]
|
|
21
25
|
* Optional media page ID used to construct an internal media-center config.
|
|
26
|
+
* If provided, the short videos player will be opened inside a media page modal.
|
|
22
27
|
*
|
|
23
28
|
* Player settings
|
|
24
|
-
* @param {
|
|
25
|
-
* Handler for social interactions (like, share, etc.).
|
|
26
|
-
* @param [init.playerSettings]
|
|
29
|
+
* @param {Object} [init.playerSettings]
|
|
27
30
|
* Player UI and behavior settings.
|
|
28
31
|
*
|
|
29
|
-
* Fields of
|
|
32
|
+
* Fields of playerSettings:
|
|
33
|
+
* - {boolean} [disableBackground]
|
|
34
|
+
* If true, hides the player's background image.
|
|
30
35
|
* - {boolean} [hideCloseButton]
|
|
31
36
|
* If true, hides the close button.
|
|
32
37
|
* - {Locale} [locale='en']
|
|
33
38
|
* Localization for the player UI. Supported values: 'en' | 'no'.
|
|
34
39
|
* If omitted, the default locale 'en' is used.
|
|
40
|
+
* - {boolean} [showStreamsCloudWatermark]
|
|
41
|
+
* If true, shows the StreamsCloud watermark.
|
|
42
|
+
* - {'light' | 'dark'} [theme]
|
|
43
|
+
* Optional theme for the player UI.
|
|
35
44
|
*
|
|
36
45
|
* Events
|
|
37
|
-
* @param {{ playerClosed?: () => void;
|
|
46
|
+
* @param {{ playerClosed?: () => void; postActivated?: (id: string) => void }} [init.on]
|
|
38
47
|
* Optional event handlers.
|
|
39
48
|
* @param {() => void} [init.on.playerClosed]
|
|
40
49
|
* Called after the player is fully closed (after unmount and removal from the DOM).
|
|
41
|
-
* @param {(id: string) => void} [init.on.
|
|
42
|
-
* Called when a video becomes active (receives the video's id).
|
|
50
|
+
* @param {(id: string) => void} [init.on.postActivated]
|
|
51
|
+
* Called when a short video becomes active (receives the video's id).
|
|
43
52
|
*
|
|
44
53
|
* @returns {void}
|
|
45
54
|
*
|
|
@@ -59,6 +68,7 @@ import { InternalShortVideoPlayerItemsProvider } from '../data-providers';
|
|
|
59
68
|
* disableBackground: false,
|
|
60
69
|
* hideCloseButton: false,
|
|
61
70
|
* showStreamsCloudWatermark: true,
|
|
71
|
+
* theme: 'dark',
|
|
62
72
|
* },
|
|
63
73
|
* on: {
|
|
64
74
|
* playerClosed: () => console.log('Player closed'),
|
|
@@ -66,32 +76,29 @@ import { InternalShortVideoPlayerItemsProvider } from '../data-providers';
|
|
|
66
76
|
* });
|
|
67
77
|
* ```
|
|
68
78
|
*/
|
|
69
|
-
export
|
|
79
|
+
export function openShortVideosPlayer(init) {
|
|
70
80
|
const { ids, graphqlOrigin, initialId, initiator, playerSettings, on } = init;
|
|
71
81
|
const dataProvider = new InternalShortVideoPlayerItemsProvider({ ids, graphqlOrigin, initialId, initiator });
|
|
72
|
-
const
|
|
82
|
+
const mediaCenterDataProvider = init.mediaPageId
|
|
83
|
+
? new InternalMediaCenterDataProvider({ mediaPageId: init.mediaPageId, graphqlOrigin, initiator })
|
|
84
|
+
: undefined;
|
|
73
85
|
const analyticsHandler = new InternalPostAnalyticsHandler(graphqlOrigin);
|
|
74
|
-
if (
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
on
|
|
86
|
+
if (mediaCenterDataProvider) {
|
|
87
|
+
openMediaPageModalWithInitialPostsProvider({
|
|
88
|
+
dataProvider: dataProvider,
|
|
89
|
+
mediaCenterDataProvider,
|
|
90
|
+
viewerSettings: playerSettings,
|
|
91
|
+
on: {
|
|
92
|
+
closed: on?.playerClosed,
|
|
93
|
+
postActivated: on?.postActivated
|
|
94
|
+
}
|
|
84
95
|
});
|
|
85
96
|
}
|
|
86
97
|
else {
|
|
87
98
|
openPostsPlayer({
|
|
88
99
|
postsProvider: dataProvider,
|
|
89
100
|
analyticsHandler,
|
|
90
|
-
playerSettings:
|
|
91
|
-
hideCloseButton: playerSettings?.hideCloseButton,
|
|
92
|
-
locale: playerSettings?.locale,
|
|
93
|
-
showStreamsCloudWatermark: true
|
|
94
|
-
},
|
|
101
|
+
playerSettings: playerSettings,
|
|
95
102
|
on
|
|
96
103
|
});
|
|
97
104
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Locale } from '../../core/locale';
|
|
2
|
+
import { type IMediaCenterDataProvider } from '../../media-center/config/types';
|
|
3
|
+
import type { StreamPageViewerModel } from '../../streams/stream-page-viewer/types';
|
|
4
|
+
import type { IStreamAnalyticsHandler, IStreamsPlayerDataProvider, StreamAmplificationParameters, StreamPlayerModel } from '../../streams/streams-player/types';
|
|
5
|
+
export { type StreamPlayerModel, type StreamPageViewerModel };
|
|
6
|
+
export type { IStreamsPlayerDataProvider, IStreamAnalyticsHandler, IMediaCenterDataProvider };
|
|
7
|
+
/**
|
|
8
|
+
* Opens the streams player modal.
|
|
9
|
+
*
|
|
10
|
+
* Uses an internal data provider configured by a list of stream IDs,
|
|
11
|
+
* GraphQL parameters and optional media page configuration.
|
|
12
|
+
*
|
|
13
|
+
* @param init Configuration options.
|
|
14
|
+
*
|
|
15
|
+
* Required
|
|
16
|
+
* @param {string[]} init.ids
|
|
17
|
+
* List of stream IDs to display.
|
|
18
|
+
* @param {string} init.initiator
|
|
19
|
+
* Initiator identifier (used for tracking/analytics and GraphQL).
|
|
20
|
+
*
|
|
21
|
+
* Optional
|
|
22
|
+
* @param {string} [init.graphqlOrigin]
|
|
23
|
+
* Optional GraphQL origin (base URL). If omitted, the default origin is determined internally.
|
|
24
|
+
* @param {string} [init.initialId]
|
|
25
|
+
* ID of the stream to open first (optional).
|
|
26
|
+
* @param {string} [init.mediaPageId]
|
|
27
|
+
* Optional media page ID used to construct an internal media-center config.
|
|
28
|
+
* If provided, the streams player will be opened inside a media page modal.
|
|
29
|
+
* @param {StreamAmplificationParameters} [init.amplificationParameters]
|
|
30
|
+
* Optional parameters to configure amplification behavior.
|
|
31
|
+
* @param {Object} [init.playerSettings]
|
|
32
|
+
* Player UI and behavior settings.
|
|
33
|
+
*
|
|
34
|
+
* Fields of playerSettings:
|
|
35
|
+
* - {boolean} [disableBackground]
|
|
36
|
+
* If true, hides the player's background image.
|
|
37
|
+
* - {boolean} [hideCloseButton]
|
|
38
|
+
* If true, hides the close button.
|
|
39
|
+
* - {Locale} [locale='en']
|
|
40
|
+
* Localization for the player UI. Supported values: 'en' | 'no'.
|
|
41
|
+
* If omitted, the default locale 'en' is used.
|
|
42
|
+
* - {boolean} [showStreamsCloudWatermark]
|
|
43
|
+
* If true, shows the StreamsCloud watermark.
|
|
44
|
+
* - {'light' | 'dark'} [theme]
|
|
45
|
+
* Optional theme for the player UI.
|
|
46
|
+
*
|
|
47
|
+
* Events
|
|
48
|
+
* @param {{ streamActivated?: (data: { title: string; image: string | null }) => void; playerClosed?: () => void }} [init.on]
|
|
49
|
+
* Optional event handlers.
|
|
50
|
+
* @param {(data: { title: string; image: string | null }) => void} [init.on.streamActivated]
|
|
51
|
+
* Called when the stream becomes active. Receives a subset of data with title and image.
|
|
52
|
+
* @param {() => void} [init.on.playerClosed]
|
|
53
|
+
* Called after the player is fully closed (after unmount and removal from the DOM).
|
|
54
|
+
*
|
|
55
|
+
* @returns {void}
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* import { openStreamsPlayer } from '@streamscloud/embeddable/stream-player';
|
|
60
|
+
*
|
|
61
|
+
* openStreamsPlayer({
|
|
62
|
+
* ids: ['stream_123'],
|
|
63
|
+
* initiator: 'marketing-campaign',
|
|
64
|
+
* graphqlOrigin: 'https://api.example.com',
|
|
65
|
+
* mediaPageId: 'media-page-123',
|
|
66
|
+
* amplificationParameters: {
|
|
67
|
+
* // ...your amplification parameters
|
|
68
|
+
* },
|
|
69
|
+
* playerSettings: {
|
|
70
|
+
* // Locale defaults to 'en'; set 'no' to switch to Norwegian:
|
|
71
|
+
* locale: 'no',
|
|
72
|
+
* disableBackground: false,
|
|
73
|
+
* hideCloseButton: false,
|
|
74
|
+
* showStreamsCloudWatermark: true,
|
|
75
|
+
* theme: 'dark',
|
|
76
|
+
* },
|
|
77
|
+
* on: {
|
|
78
|
+
* streamActivated: ({ title, image }) => console.log('Stream active:', title, image),
|
|
79
|
+
* playerClosed: () => console.log('Player closed'),
|
|
80
|
+
* },
|
|
81
|
+
* });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export declare function openStreamsPlayer(init: {
|
|
85
|
+
ids: string[];
|
|
86
|
+
initiator: string;
|
|
87
|
+
graphqlOrigin?: string;
|
|
88
|
+
initialId?: string;
|
|
89
|
+
mediaPageId?: string;
|
|
90
|
+
amplificationParameters?: StreamAmplificationParameters;
|
|
91
|
+
playerSettings?: {
|
|
92
|
+
disableBackground?: boolean;
|
|
93
|
+
locale?: Locale;
|
|
94
|
+
showStreamsCloudWatermark?: boolean;
|
|
95
|
+
hideCloseButton?: boolean;
|
|
96
|
+
theme?: 'light' | 'dark';
|
|
97
|
+
};
|
|
98
|
+
on?: {
|
|
99
|
+
streamActivated?: (data: {
|
|
100
|
+
title: string;
|
|
101
|
+
image: string | null;
|
|
102
|
+
}) => void;
|
|
103
|
+
playerClosed?: () => void;
|
|
104
|
+
};
|
|
105
|
+
}): void;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { InternalMediaCenterDataProvider, InternalStreamsPlayerDataProvider, InternalStreamAnalyticsHandler } from '../data-providers';
|
|
2
|
+
import {} from '../../media-center/config/types';
|
|
3
|
+
import { openMediaPageModalWithInitialStreamsProvider } from '../../media-page';
|
|
4
|
+
import { openStreamsPlayer as openStreamsPlayerInternal } from '../../streams/streams-player';
|
|
5
|
+
export {};
|
|
6
|
+
/**
|
|
7
|
+
* Opens the streams player modal.
|
|
8
|
+
*
|
|
9
|
+
* Uses an internal data provider configured by a list of stream IDs,
|
|
10
|
+
* GraphQL parameters and optional media page configuration.
|
|
11
|
+
*
|
|
12
|
+
* @param init Configuration options.
|
|
13
|
+
*
|
|
14
|
+
* Required
|
|
15
|
+
* @param {string[]} init.ids
|
|
16
|
+
* List of stream IDs to display.
|
|
17
|
+
* @param {string} init.initiator
|
|
18
|
+
* Initiator identifier (used for tracking/analytics and GraphQL).
|
|
19
|
+
*
|
|
20
|
+
* Optional
|
|
21
|
+
* @param {string} [init.graphqlOrigin]
|
|
22
|
+
* Optional GraphQL origin (base URL). If omitted, the default origin is determined internally.
|
|
23
|
+
* @param {string} [init.initialId]
|
|
24
|
+
* ID of the stream to open first (optional).
|
|
25
|
+
* @param {string} [init.mediaPageId]
|
|
26
|
+
* Optional media page ID used to construct an internal media-center config.
|
|
27
|
+
* If provided, the streams player will be opened inside a media page modal.
|
|
28
|
+
* @param {StreamAmplificationParameters} [init.amplificationParameters]
|
|
29
|
+
* Optional parameters to configure amplification behavior.
|
|
30
|
+
* @param {Object} [init.playerSettings]
|
|
31
|
+
* Player UI and behavior settings.
|
|
32
|
+
*
|
|
33
|
+
* Fields of playerSettings:
|
|
34
|
+
* - {boolean} [disableBackground]
|
|
35
|
+
* If true, hides the player's background image.
|
|
36
|
+
* - {boolean} [hideCloseButton]
|
|
37
|
+
* If true, hides the close button.
|
|
38
|
+
* - {Locale} [locale='en']
|
|
39
|
+
* Localization for the player UI. Supported values: 'en' | 'no'.
|
|
40
|
+
* If omitted, the default locale 'en' is used.
|
|
41
|
+
* - {boolean} [showStreamsCloudWatermark]
|
|
42
|
+
* If true, shows the StreamsCloud watermark.
|
|
43
|
+
* - {'light' | 'dark'} [theme]
|
|
44
|
+
* Optional theme for the player UI.
|
|
45
|
+
*
|
|
46
|
+
* Events
|
|
47
|
+
* @param {{ streamActivated?: (data: { title: string; image: string | null }) => void; playerClosed?: () => void }} [init.on]
|
|
48
|
+
* Optional event handlers.
|
|
49
|
+
* @param {(data: { title: string; image: string | null }) => void} [init.on.streamActivated]
|
|
50
|
+
* Called when the stream becomes active. Receives a subset of data with title and image.
|
|
51
|
+
* @param {() => void} [init.on.playerClosed]
|
|
52
|
+
* Called after the player is fully closed (after unmount and removal from the DOM).
|
|
53
|
+
*
|
|
54
|
+
* @returns {void}
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```ts
|
|
58
|
+
* import { openStreamsPlayer } from '@streamscloud/embeddable/stream-player';
|
|
59
|
+
*
|
|
60
|
+
* openStreamsPlayer({
|
|
61
|
+
* ids: ['stream_123'],
|
|
62
|
+
* initiator: 'marketing-campaign',
|
|
63
|
+
* graphqlOrigin: 'https://api.example.com',
|
|
64
|
+
* mediaPageId: 'media-page-123',
|
|
65
|
+
* amplificationParameters: {
|
|
66
|
+
* // ...your amplification parameters
|
|
67
|
+
* },
|
|
68
|
+
* playerSettings: {
|
|
69
|
+
* // Locale defaults to 'en'; set 'no' to switch to Norwegian:
|
|
70
|
+
* locale: 'no',
|
|
71
|
+
* disableBackground: false,
|
|
72
|
+
* hideCloseButton: false,
|
|
73
|
+
* showStreamsCloudWatermark: true,
|
|
74
|
+
* theme: 'dark',
|
|
75
|
+
* },
|
|
76
|
+
* on: {
|
|
77
|
+
* streamActivated: ({ title, image }) => console.log('Stream active:', title, image),
|
|
78
|
+
* playerClosed: () => console.log('Player closed'),
|
|
79
|
+
* },
|
|
80
|
+
* });
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
export function openStreamsPlayer(init) {
|
|
84
|
+
const { ids, initialId, graphqlOrigin, initiator, amplificationParameters, playerSettings, on } = init;
|
|
85
|
+
const dataProvider = new InternalStreamsPlayerDataProvider({ ids, initialId, graphqlOrigin, initiator });
|
|
86
|
+
const mediaCenterDataProvider = init.mediaPageId
|
|
87
|
+
? new InternalMediaCenterDataProvider({ mediaPageId: init.mediaPageId, graphqlOrigin, initiator })
|
|
88
|
+
: undefined;
|
|
89
|
+
const analyticsHandler = new InternalStreamAnalyticsHandler(graphqlOrigin);
|
|
90
|
+
if (mediaCenterDataProvider) {
|
|
91
|
+
openMediaPageModalWithInitialStreamsProvider({
|
|
92
|
+
dataProvider: dataProvider,
|
|
93
|
+
mediaCenterDataProvider,
|
|
94
|
+
viewerSettings: playerSettings,
|
|
95
|
+
on: {
|
|
96
|
+
closed: on?.playerClosed,
|
|
97
|
+
streamActivated: on?.streamActivated
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
openStreamsPlayerInternal({
|
|
103
|
+
dataProvider,
|
|
104
|
+
analyticsHandler,
|
|
105
|
+
amplificationParameters,
|
|
106
|
+
playerSettings,
|
|
107
|
+
on
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
import { PostType } from '../../core/enums';
|
|
2
|
+
import type { ThemeValue } from '../../core/theme';
|
|
2
3
|
import type { IContentCategoryFollowingHandler } from '../categories-following';
|
|
4
|
+
import type { IMediaCenterMembershipHandler } from '../membership';
|
|
5
|
+
import type { IMediaCenterNavigationHandler } from '../navigation';
|
|
3
6
|
import type { IPostAnalyticsHandler, PostPlayerModel } from '../../posts/posts-player/types';
|
|
4
7
|
import type { IPostSocialInteractionsHandler } from '../../posts/social-interactions';
|
|
5
8
|
import type { StreamPageViewerModel } from '../../streams/stream-page-viewer/types';
|
|
6
9
|
import type { IStreamAnalyticsHandler, StreamPlayerModel } from '../../streams/streams-player/types';
|
|
7
|
-
|
|
8
|
-
|
|
10
|
+
import type { PlayerColors } from '../../ui/player/colors';
|
|
11
|
+
export interface IMediaCenterDataProvider {
|
|
12
|
+
model: MediaCenterModel | null;
|
|
13
|
+
fetchModel: () => Promise<MediaCenterModel | null>;
|
|
9
14
|
handlers?: {
|
|
10
15
|
analyticsHandler?: IPostAnalyticsHandler & IStreamAnalyticsHandler;
|
|
11
|
-
socialInteractionsHandler?: IPostSocialInteractionsHandler;
|
|
12
16
|
categoriesFollowingHandler?: IContentCategoryFollowingHandler;
|
|
17
|
+
membershipHandler?: IMediaCenterMembershipHandler;
|
|
18
|
+
navigationHandler?: IMediaCenterNavigationHandler;
|
|
19
|
+
socialInteractionsHandler?: IPostSocialInteractionsHandler;
|
|
13
20
|
};
|
|
14
21
|
postsPlayer: {
|
|
15
22
|
getPostsCursor: (input: {
|
|
16
23
|
filter: {
|
|
17
24
|
types: PostType[];
|
|
18
25
|
categoryId?: string;
|
|
26
|
+
includeIds?: string[];
|
|
19
27
|
excludeIds?: string[];
|
|
20
28
|
};
|
|
21
29
|
limit: number;
|
|
@@ -43,7 +51,22 @@ export interface IMediaCenterConfig {
|
|
|
43
51
|
}>;
|
|
44
52
|
};
|
|
45
53
|
}
|
|
46
|
-
export type
|
|
54
|
+
export type MediaCenterModel = {
|
|
55
|
+
id: string;
|
|
56
|
+
handle: string;
|
|
57
|
+
name: string;
|
|
58
|
+
description: string | null;
|
|
59
|
+
image: string | null;
|
|
60
|
+
logo: string | null;
|
|
61
|
+
banner: string | null;
|
|
62
|
+
moments: {
|
|
63
|
+
id: string;
|
|
64
|
+
cover: string;
|
|
65
|
+
isSeen: boolean;
|
|
66
|
+
}[];
|
|
67
|
+
communityFeatures: {
|
|
68
|
+
membersCount: number;
|
|
69
|
+
} | null;
|
|
47
70
|
contentCategories: {
|
|
48
71
|
id: string;
|
|
49
72
|
name: string;
|
|
@@ -58,27 +81,5 @@ export type MediaCenterConfigModel = {
|
|
|
58
81
|
backgroundColor: string;
|
|
59
82
|
} | null;
|
|
60
83
|
}[];
|
|
61
|
-
|
|
62
|
-
playerColors: {
|
|
63
|
-
brand: string | null;
|
|
64
|
-
button: string | null;
|
|
65
|
-
buttonInactive: string | null;
|
|
66
|
-
cardButton: string | null;
|
|
67
|
-
cardBackground: string | null;
|
|
68
|
-
menuBackground: string | null;
|
|
69
|
-
playerBackground: string | null;
|
|
70
|
-
price: string | null;
|
|
71
|
-
salePrice: string | null;
|
|
72
|
-
sidebarBackground: string | null;
|
|
73
|
-
} | null;
|
|
74
|
-
};
|
|
75
|
-
export type MediaCenterTargetDataModel = {
|
|
76
|
-
id: string;
|
|
77
|
-
name: string;
|
|
78
|
-
image: string | null;
|
|
79
|
-
membersCount: number;
|
|
80
|
-
logo: string | null;
|
|
81
|
-
handle: string;
|
|
82
|
-
description: string | null;
|
|
83
|
-
banner: string | null;
|
|
84
|
+
playerColors: Record<ThemeValue, PlayerColors>;
|
|
84
85
|
};
|
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export type {
|
|
1
|
+
export type { IMediaCenterDataProvider } from './config/types';
|
|
2
2
|
export type { IContentCategoryFollowingHandler } from './categories-following/types';
|
|
3
|
+
export type { IMediaCenterMembershipHandler } from './membership';
|
|
4
|
+
export type { IMediaCenterNavigationHandler, MediaCenterState } from './navigation';
|
|
@@ -6,9 +6,9 @@ import { ShadowRoot } from '../../ui/shadow-dom';
|
|
|
6
6
|
import { MediaCenterContext } from './media-center-context.svelte';
|
|
7
7
|
import { default as MediaCenterView } from './media-center-view.svelte';
|
|
8
8
|
import { untrack } from 'svelte';
|
|
9
|
-
let {
|
|
9
|
+
let { dataProvider, modeProps, settings, closeOrchestrator, dynamicActions } = $props();
|
|
10
10
|
const context = new MediaCenterContext({
|
|
11
|
-
|
|
11
|
+
dataProvider,
|
|
12
12
|
closeOrchestrator,
|
|
13
13
|
settings,
|
|
14
14
|
on: {
|
|
@@ -26,7 +26,7 @@ const context = new MediaCenterContext({
|
|
|
26
26
|
onStreamActivated: modeProps.props.onStreamActivated
|
|
27
27
|
});
|
|
28
28
|
break;
|
|
29
|
-
case '
|
|
29
|
+
case 'default':
|
|
30
30
|
instance.activateDiscover({ categoryId: null });
|
|
31
31
|
break;
|
|
32
32
|
default:
|
|
@@ -54,6 +54,6 @@ $effect(() => {
|
|
|
54
54
|
Not initialized placeholder
|
|
55
55
|
{:else}
|
|
56
56
|
<ShadowRoot {...context.backgroundWrapperProps}>
|
|
57
|
-
<MediaCenterView context={context} />
|
|
57
|
+
<MediaCenterView context={context} dynamicActions={dynamicActions} />
|
|
58
58
|
</ShadowRoot>
|
|
59
59
|
{/if}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { IMediaCenterDataProvider } from '../config/types';
|
|
2
2
|
import { type ICloseOrchestrator } from '../../ui/player/close-orchestrator';
|
|
3
|
-
import type { MediaCenterSettings
|
|
3
|
+
import type { MediaCenterSettings } from './media-center-settings.svelte';
|
|
4
|
+
import type { MediaCenterModeProps } from './types';
|
|
5
|
+
import { type Snippet } from 'svelte';
|
|
4
6
|
type Props = {
|
|
5
|
-
|
|
6
|
-
settings
|
|
7
|
+
dataProvider: IMediaCenterDataProvider;
|
|
8
|
+
settings: MediaCenterSettings;
|
|
7
9
|
modeProps: MediaCenterModeProps;
|
|
8
10
|
closeOrchestrator: ICloseOrchestrator;
|
|
11
|
+
dynamicActions?: Snippet;
|
|
9
12
|
};
|
|
10
13
|
declare const Cmp: import("svelte").Component<Props, {}, "">;
|
|
11
14
|
type Cmp = ReturnType<typeof Cmp>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Locale } from '../../../core/locale';
|
|
2
|
+
export declare class CommunityFeaturesLocalization {
|
|
3
|
+
membersLabel: (count: number) => string;
|
|
4
|
+
memberButtonLabel: string;
|
|
5
|
+
joinButtonLabel: string;
|
|
6
|
+
leaveButtonLabel: string;
|
|
7
|
+
constructor(locale: Locale);
|
|
8
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import {} from '../../../core/locale';
|
|
2
|
+
export class CommunityFeaturesLocalization {
|
|
3
|
+
membersLabel;
|
|
4
|
+
memberButtonLabel;
|
|
5
|
+
joinButtonLabel;
|
|
6
|
+
leaveButtonLabel;
|
|
7
|
+
constructor(locale) {
|
|
8
|
+
this.membersLabel = loc.membersLabel[locale];
|
|
9
|
+
this.memberButtonLabel = loc.memberButtonLabel[locale];
|
|
10
|
+
this.joinButtonLabel = loc.joinButtonLabel[locale];
|
|
11
|
+
this.leaveButtonLabel = loc.leaveButtonLabel[locale];
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
const loc = {
|
|
15
|
+
membersLabel: {
|
|
16
|
+
en: (count) => (count === 1 ? `Member` : `Members`),
|
|
17
|
+
no: (count) => (count === 1 ? `Medlem` : `Medlemmer`)
|
|
18
|
+
},
|
|
19
|
+
memberButtonLabel: {
|
|
20
|
+
en: 'Member',
|
|
21
|
+
no: 'Medlem'
|
|
22
|
+
},
|
|
23
|
+
joinButtonLabel: {
|
|
24
|
+
en: 'Join',
|
|
25
|
+
no: 'Bli med'
|
|
26
|
+
},
|
|
27
|
+
leaveButtonLabel: {
|
|
28
|
+
en: 'Leave',
|
|
29
|
+
no: 'Forlat'
|
|
30
|
+
}
|
|
31
|
+
};
|