@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,36 @@
|
|
|
1
1
|
import type { Locale } from '../core/locale';
|
|
2
|
-
import { type
|
|
2
|
+
import { type IMediaCenterDataProvider } from '../media-center/config/types';
|
|
3
|
+
import type { PostPlayerModel } from '../posts/posts-player';
|
|
4
|
+
import type { IStreamsPlayerDataProvider } from '../streams/streams-player';
|
|
5
|
+
import type { StreamAmplificationParameters } from '../streams/streams-player/types';
|
|
6
|
+
import type { IPlayerDataProvider } from '../ui/player/providers';
|
|
3
7
|
export { default as MediaPage } from './cmp.media-page.svelte';
|
|
4
|
-
export type {
|
|
5
|
-
export { mapToPostPlayerModel } from '../posts/data-loaders/mapper';
|
|
8
|
+
export type { IMediaCenterDataProvider };
|
|
6
9
|
/**
|
|
7
10
|
* Opens the media page modal.
|
|
8
11
|
*
|
|
9
|
-
* Two overloads (mutually exclusive; enforced by TypeScript):
|
|
10
|
-
* - Config mode: openMediaPageModal({ mediaCenterConfig, viewerSettings?, on? })
|
|
11
|
-
* - Internal config mode: openMediaPageModal({ id, initiator, graphqlOrigin?, viewerSettings?, on? })
|
|
12
|
-
*
|
|
13
12
|
* @param init Configuration options.
|
|
14
13
|
*
|
|
15
|
-
* Config mode
|
|
16
|
-
* @param {
|
|
14
|
+
* Config mode
|
|
15
|
+
* @param {IMediaCenterDataProvider} init.dataProvider
|
|
17
16
|
* Configuration for the media center.
|
|
18
17
|
*
|
|
19
|
-
* Internal config mode (overload 2)
|
|
20
|
-
* @param {string} init.id
|
|
21
|
-
* Media page ID, used to construct an internal media-center config.
|
|
22
|
-
* @param {string} init.initiator
|
|
23
|
-
* Initiator identifier (used for tracking/analytics and GraphQL).
|
|
24
|
-
* @param {string} [init.graphqlOrigin]
|
|
25
|
-
* Optional GraphQL origin (base URL). If omitted, the default origin is determined internally.
|
|
26
|
-
*
|
|
27
18
|
* Common (optional)
|
|
28
|
-
* @param {
|
|
19
|
+
* @param {Object} [init.viewerSettings]
|
|
29
20
|
* Viewer UI and behavior settings.
|
|
30
21
|
*
|
|
31
|
-
* Fields of
|
|
32
|
-
* - {boolean} [disableBackground]
|
|
33
|
-
* If true
|
|
34
|
-
* - {Locale} [locale
|
|
22
|
+
* Fields of `viewerSettings`:
|
|
23
|
+
* - {boolean} [viewerSettings.disableBackground]
|
|
24
|
+
* If true, hides the viewer background image.
|
|
25
|
+
* - {Locale} [viewerSettings.locale]
|
|
35
26
|
* Localization for the viewer UI. Supported values: 'en' | 'no'.
|
|
36
27
|
* If omitted, the default locale 'en' is used.
|
|
37
|
-
* - {boolean} [showStreamsCloudWatermark]
|
|
28
|
+
* - {boolean} [viewerSettings.showStreamsCloudWatermark]
|
|
38
29
|
* If true, shows the StreamsCloud watermark.
|
|
39
|
-
* - {boolean} [hideCloseButton]
|
|
30
|
+
* - {boolean} [viewerSettings.hideCloseButton]
|
|
40
31
|
* If true, hides the close button.
|
|
32
|
+
* - {'light' | 'dark'} [viewerSettings.theme]
|
|
33
|
+
* Optional theme for the viewer UI.
|
|
41
34
|
*
|
|
42
35
|
* Events
|
|
43
36
|
* @param {{ closed?: () => void }} [init.on]
|
|
@@ -45,52 +38,28 @@ export { mapToPostPlayerModel } from '../posts/data-loaders/mapper';
|
|
|
45
38
|
* @param {() => void} [init.on.closed]
|
|
46
39
|
* Called after the modal is fully closed (after unmount and removal from the DOM).
|
|
47
40
|
*
|
|
48
|
-
* Notes
|
|
49
|
-
* - If neither mediaCenterConfig nor id is specified, a warning is shown and the modal is not opened.
|
|
50
|
-
*
|
|
51
41
|
* @returns {void}
|
|
52
42
|
*
|
|
53
43
|
* @example <caption>Config mode</caption>
|
|
54
44
|
* ```ts
|
|
55
45
|
* import {
|
|
56
46
|
* openMediaPageModal,
|
|
57
|
-
* type
|
|
47
|
+
* type IMediaCenterDataProvider
|
|
58
48
|
* } from '@streamscloud/embeddable/media-page';
|
|
59
49
|
*
|
|
60
|
-
* const
|
|
50
|
+
* const dataProvider: IMediaDataProvider= {
|
|
61
51
|
* // ...your media center configuration
|
|
62
52
|
* };
|
|
63
53
|
*
|
|
64
54
|
* openMediaPageModal({
|
|
65
|
-
*
|
|
55
|
+
* dataProvider,
|
|
66
56
|
* viewerSettings: {
|
|
67
|
-
* //
|
|
57
|
+
* // Example: switch to Norwegian (if supported by your Locale type)
|
|
68
58
|
* locale: 'no',
|
|
69
59
|
* disableBackground: false,
|
|
70
60
|
* hideCloseButton: false,
|
|
71
61
|
* showStreamsCloudWatermark: true,
|
|
72
|
-
*
|
|
73
|
-
* on: {
|
|
74
|
-
* closed: () => console.log('Media page modal closed'),
|
|
75
|
-
* },
|
|
76
|
-
* });
|
|
77
|
-
* ```
|
|
78
|
-
*
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
* @example <caption>Internal config mode</caption>
|
|
82
|
-
* ```ts
|
|
83
|
-
* import { openMediaPageModal } from '@streamscloud/embeddable/media-page';
|
|
84
|
-
*
|
|
85
|
-
* openMediaPageModal({
|
|
86
|
-
* id: 'media-page-123',
|
|
87
|
-
* initiator: 'marketing-campaign',
|
|
88
|
-
* graphqlOrigin: 'https://api.example.com',
|
|
89
|
-
* viewerSettings: {
|
|
90
|
-
* locale: 'en',
|
|
91
|
-
* disableBackground: true,
|
|
92
|
-
* hideCloseButton: false,
|
|
93
|
-
* showStreamsCloudWatermark: false,
|
|
62
|
+
* theme: 'dark',
|
|
94
63
|
* },
|
|
95
64
|
* on: {
|
|
96
65
|
* closed: () => console.log('Media page modal closed'),
|
|
@@ -99,19 +68,32 @@ export { mapToPostPlayerModel } from '../posts/data-loaders/mapper';
|
|
|
99
68
|
* ```
|
|
100
69
|
*/
|
|
101
70
|
export declare function openMediaPageModal(init: {
|
|
102
|
-
|
|
71
|
+
dataProvider: IMediaCenterDataProvider;
|
|
103
72
|
viewerSettings?: MediaPageViewerSettings;
|
|
104
73
|
on?: {
|
|
105
74
|
closed?: () => void;
|
|
106
75
|
};
|
|
107
76
|
}): void;
|
|
108
|
-
export declare function
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
77
|
+
export declare function openMediaPageModalWithInitialPostsProvider(init: {
|
|
78
|
+
dataProvider: IPlayerDataProvider<PostPlayerModel>;
|
|
79
|
+
mediaCenterDataProvider: IMediaCenterDataProvider;
|
|
80
|
+
viewerSettings?: MediaPageViewerSettings;
|
|
81
|
+
on?: {
|
|
82
|
+
closed?: () => void;
|
|
83
|
+
postActivated?: (id: string) => void;
|
|
84
|
+
};
|
|
85
|
+
}): void;
|
|
86
|
+
export declare function openMediaPageModalWithInitialStreamsProvider(init: {
|
|
87
|
+
dataProvider: IStreamsPlayerDataProvider;
|
|
88
|
+
amplificationParameters?: StreamAmplificationParameters;
|
|
89
|
+
mediaCenterDataProvider: IMediaCenterDataProvider;
|
|
112
90
|
viewerSettings?: MediaPageViewerSettings;
|
|
113
91
|
on?: {
|
|
114
92
|
closed?: () => void;
|
|
93
|
+
streamActivated?: (data: {
|
|
94
|
+
title: string;
|
|
95
|
+
image: string | null;
|
|
96
|
+
}) => void;
|
|
115
97
|
};
|
|
116
98
|
}): void;
|
|
117
99
|
export type MediaPageViewerSettings = {
|
package/dist/media-page/index.js
CHANGED
|
@@ -1,22 +1,72 @@
|
|
|
1
|
-
import { toastrWarning } from '../core/toastr';
|
|
2
|
-
import { InternalMediaCenterConfig } from '../media-center/config/internal-media-center-config';
|
|
3
1
|
import {} from '../media-center/config/types';
|
|
4
|
-
import { MediaCenterProxy } from '../media-center/media-center';
|
|
2
|
+
import { MediaCenterProxy, MediaCenterSettings } from '../media-center/media-center';
|
|
5
3
|
import { CloseOrchestrator } from '../ui/player/close-orchestrator';
|
|
6
4
|
import { ModalShadowHost } from '../ui/shadow-dom';
|
|
7
5
|
import { mount, unmount } from 'svelte';
|
|
8
6
|
export { default as MediaPage } from './cmp.media-page.svelte';
|
|
9
|
-
|
|
7
|
+
/**
|
|
8
|
+
* Opens the media page modal.
|
|
9
|
+
*
|
|
10
|
+
* @param init Configuration options.
|
|
11
|
+
*
|
|
12
|
+
* Config mode
|
|
13
|
+
* @param {IMediaCenterDataProvider} init.dataProvider
|
|
14
|
+
* Configuration for the media center.
|
|
15
|
+
*
|
|
16
|
+
* Common (optional)
|
|
17
|
+
* @param {Object} [init.viewerSettings]
|
|
18
|
+
* Viewer UI and behavior settings.
|
|
19
|
+
*
|
|
20
|
+
* Fields of `viewerSettings`:
|
|
21
|
+
* - {boolean} [viewerSettings.disableBackground]
|
|
22
|
+
* If true, hides the viewer background image.
|
|
23
|
+
* - {Locale} [viewerSettings.locale]
|
|
24
|
+
* Localization for the viewer UI. Supported values: 'en' | 'no'.
|
|
25
|
+
* If omitted, the default locale 'en' is used.
|
|
26
|
+
* - {boolean} [viewerSettings.showStreamsCloudWatermark]
|
|
27
|
+
* If true, shows the StreamsCloud watermark.
|
|
28
|
+
* - {boolean} [viewerSettings.hideCloseButton]
|
|
29
|
+
* If true, hides the close button.
|
|
30
|
+
* - {'light' | 'dark'} [viewerSettings.theme]
|
|
31
|
+
* Optional theme for the viewer UI.
|
|
32
|
+
*
|
|
33
|
+
* Events
|
|
34
|
+
* @param {{ closed?: () => void }} [init.on]
|
|
35
|
+
* Optional event handlers.
|
|
36
|
+
* @param {() => void} [init.on.closed]
|
|
37
|
+
* Called after the modal is fully closed (after unmount and removal from the DOM).
|
|
38
|
+
*
|
|
39
|
+
* @returns {void}
|
|
40
|
+
*
|
|
41
|
+
* @example <caption>Config mode</caption>
|
|
42
|
+
* ```ts
|
|
43
|
+
* import {
|
|
44
|
+
* openMediaPageModal,
|
|
45
|
+
* type IMediaCenterDataProvider
|
|
46
|
+
* } from '@streamscloud/embeddable/media-page';
|
|
47
|
+
*
|
|
48
|
+
* const dataProvider: IMediaDataProvider= {
|
|
49
|
+
* // ...your media center configuration
|
|
50
|
+
* };
|
|
51
|
+
*
|
|
52
|
+
* openMediaPageModal({
|
|
53
|
+
* dataProvider,
|
|
54
|
+
* viewerSettings: {
|
|
55
|
+
* // Example: switch to Norwegian (if supported by your Locale type)
|
|
56
|
+
* locale: 'no',
|
|
57
|
+
* disableBackground: false,
|
|
58
|
+
* hideCloseButton: false,
|
|
59
|
+
* showStreamsCloudWatermark: true,
|
|
60
|
+
* theme: 'dark',
|
|
61
|
+
* },
|
|
62
|
+
* on: {
|
|
63
|
+
* closed: () => console.log('Media page modal closed'),
|
|
64
|
+
* },
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
10
68
|
export function openMediaPageModal(init) {
|
|
11
|
-
const {
|
|
12
|
-
let mediaCenterConfig = init.mediaCenterConfig;
|
|
13
|
-
if (!mediaCenterConfig && id) {
|
|
14
|
-
mediaCenterConfig = new InternalMediaCenterConfig({ mediaPageId: id, graphqlOrigin, initiator });
|
|
15
|
-
}
|
|
16
|
-
if (!mediaCenterConfig) {
|
|
17
|
-
toastrWarning('Config is not specified.');
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
69
|
+
const { dataProvider, viewerSettings, on } = init;
|
|
20
70
|
const shadowHost = new ModalShadowHost();
|
|
21
71
|
let mounted = null;
|
|
22
72
|
const makeCloseOrchestrator = () => new CloseOrchestrator({
|
|
@@ -32,10 +82,73 @@ export function openMediaPageModal(init) {
|
|
|
32
82
|
mounted = mount(MediaCenterProxy, {
|
|
33
83
|
target: shadowHost.shadowRoot,
|
|
34
84
|
props: {
|
|
35
|
-
|
|
36
|
-
settings: viewerSettings,
|
|
85
|
+
dataProvider,
|
|
86
|
+
settings: new MediaCenterSettings(viewerSettings),
|
|
37
87
|
modeProps: {
|
|
38
|
-
mode: '
|
|
88
|
+
mode: 'default'
|
|
89
|
+
},
|
|
90
|
+
closeOrchestrator: makeCloseOrchestrator()
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
shadowHost.attachToBody();
|
|
94
|
+
}
|
|
95
|
+
export function openMediaPageModalWithInitialPostsProvider(init) {
|
|
96
|
+
const { dataProvider, mediaCenterDataProvider, viewerSettings, on } = init;
|
|
97
|
+
const shadowHost = new ModalShadowHost();
|
|
98
|
+
let mounted = null;
|
|
99
|
+
const makeCloseOrchestrator = () => new CloseOrchestrator({
|
|
100
|
+
closeFn: async () => {
|
|
101
|
+
await unmount(mounted);
|
|
102
|
+
shadowHost.remove();
|
|
103
|
+
if (on?.closed) {
|
|
104
|
+
on.closed();
|
|
105
|
+
}
|
|
106
|
+
},
|
|
107
|
+
canClose: !viewerSettings?.hideCloseButton
|
|
108
|
+
});
|
|
109
|
+
mounted = mount(MediaCenterProxy, {
|
|
110
|
+
target: shadowHost.shadowRoot,
|
|
111
|
+
props: {
|
|
112
|
+
dataProvider: mediaCenterDataProvider,
|
|
113
|
+
settings: new MediaCenterSettings(viewerSettings),
|
|
114
|
+
modeProps: {
|
|
115
|
+
mode: 'posts',
|
|
116
|
+
props: {
|
|
117
|
+
dataProvider,
|
|
118
|
+
onPostActivated: on?.postActivated
|
|
119
|
+
}
|
|
120
|
+
},
|
|
121
|
+
closeOrchestrator: makeCloseOrchestrator()
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
shadowHost.attachToBody();
|
|
125
|
+
}
|
|
126
|
+
export function openMediaPageModalWithInitialStreamsProvider(init) {
|
|
127
|
+
const { dataProvider, amplificationParameters, mediaCenterDataProvider, viewerSettings, on } = init;
|
|
128
|
+
const shadowHost = new ModalShadowHost();
|
|
129
|
+
let mounted = null;
|
|
130
|
+
const makeCloseOrchestrator = () => new CloseOrchestrator({
|
|
131
|
+
closeFn: async () => {
|
|
132
|
+
await unmount(mounted);
|
|
133
|
+
shadowHost.remove();
|
|
134
|
+
if (on?.closed) {
|
|
135
|
+
on.closed();
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
canClose: !viewerSettings?.hideCloseButton
|
|
139
|
+
});
|
|
140
|
+
mounted = mount(MediaCenterProxy, {
|
|
141
|
+
target: shadowHost.shadowRoot,
|
|
142
|
+
props: {
|
|
143
|
+
dataProvider: mediaCenterDataProvider,
|
|
144
|
+
settings: new MediaCenterSettings(viewerSettings),
|
|
145
|
+
modeProps: {
|
|
146
|
+
mode: 'streams',
|
|
147
|
+
props: {
|
|
148
|
+
dataProvider,
|
|
149
|
+
amplificationParameters,
|
|
150
|
+
onStreamActivated: on?.streamActivated
|
|
151
|
+
}
|
|
39
152
|
},
|
|
40
153
|
closeOrchestrator: makeCloseOrchestrator()
|
|
41
154
|
}
|
|
@@ -1,24 +1,19 @@
|
|
|
1
1
|
import type { Locale } from '../../core/locale';
|
|
2
|
-
import { type
|
|
2
|
+
import { type IMediaCenterDataProvider } from '../../media-center/config/types';
|
|
3
3
|
import type { IPostSocialInteractionsHandler } from '../social-interactions';
|
|
4
4
|
import { default as PostsPlayer } from './cmp.posts-player.svelte';
|
|
5
5
|
import type { IPostAnalyticsHandler, PostPlayerModel } from './types';
|
|
6
6
|
export { PostsPlayer, type PostPlayerModel };
|
|
7
|
-
export type {
|
|
8
|
-
export { mapToPostPlayerModel } from '../data-loaders/mapper';
|
|
7
|
+
export type { IMediaCenterDataProvider, IPostAnalyticsHandler };
|
|
9
8
|
/**
|
|
10
9
|
* Opens the posts player modal.
|
|
11
10
|
*
|
|
12
|
-
* @param init Configuration options.
|
|
11
|
+
* @param init Configuration options for the posts player.
|
|
13
12
|
*
|
|
14
13
|
* Data provider (required)
|
|
15
|
-
* @param init.postsProvider
|
|
14
|
+
* @param {IPostsPlayerDataProvider} init.postsProvider
|
|
16
15
|
* Provider that supplies post items to the player.
|
|
17
16
|
*
|
|
18
|
-
* Media center (optional)
|
|
19
|
-
* @param {IMediaCenterConfig} [init.mediaCenterConfig]
|
|
20
|
-
* Optional media-center config passed to MediaCenter.
|
|
21
|
-
*
|
|
22
17
|
* Analytics (optional)
|
|
23
18
|
* @param {IPostAnalyticsHandler} [init.analyticsHandler]
|
|
24
19
|
* Custom analytics handler for posts player events.
|
|
@@ -27,20 +22,23 @@ export { mapToPostPlayerModel } from '../data-loaders/mapper';
|
|
|
27
22
|
* @param {IPostSocialInteractionsHandler} [init.socialInteractionsHandler]
|
|
28
23
|
* Handler for social interactions (like, share, etc.).
|
|
29
24
|
*
|
|
30
|
-
* Player settings
|
|
31
|
-
* @param {
|
|
25
|
+
* Player settings (optional)
|
|
26
|
+
* @param {object} [init.playerSettings]
|
|
32
27
|
* Player UI and behavior settings.
|
|
33
|
-
* Fields of
|
|
28
|
+
* Fields of PostsPlayerSettings:
|
|
34
29
|
* - {boolean} [disableBackground]
|
|
35
30
|
* If true, hides the player's background image.
|
|
36
31
|
* - {boolean} [hideCloseButton]
|
|
37
32
|
* If true, hides the close button.
|
|
33
|
+
* Note: when true, the `CloseOrchestrator` will not allow closing via the close button.
|
|
38
34
|
* - {'en'|'no'} [locale='en']
|
|
39
35
|
* Localization for the player UI. Default is 'en'; use 'no' for Norwegian.
|
|
40
36
|
* - {boolean} [showStreamsCloudWatermark]
|
|
41
37
|
* If true, shows the StreamsCloud watermark.
|
|
38
|
+
* - {'light' | 'dark'} [theme]
|
|
39
|
+
* Optional theme for the player UI.
|
|
42
40
|
*
|
|
43
|
-
* Events
|
|
41
|
+
* Events (optional)
|
|
44
42
|
* @param {{ playerClosed?: () => void; postActivated?: (id: string) => void }} [init.on]
|
|
45
43
|
* Optional event handlers.
|
|
46
44
|
* @param {() => void} [init.on.playerClosed]
|
|
@@ -55,16 +53,26 @@ export { mapToPostPlayerModel } from '../data-loaders/mapper';
|
|
|
55
53
|
* import { openPostsPlayer } from '@streamscloud/embeddable/posts-player';
|
|
56
54
|
*
|
|
57
55
|
* openPostsPlayer({
|
|
58
|
-
* postsProvider:
|
|
59
|
-
*
|
|
56
|
+
* postsProvider: {
|
|
57
|
+
* kind: 'feed',
|
|
58
|
+
* initialData: {
|
|
59
|
+
* prefetchedItems: myPrefetchedPosts,
|
|
60
|
+
* startIndex: 0,
|
|
61
|
+
* startMediaIndex: 0,
|
|
62
|
+
* },
|
|
63
|
+
* loadMore: async () => {
|
|
64
|
+
* // return next chunk of PostPlayerModel[]
|
|
65
|
+
* return await fetchMorePosts();
|
|
66
|
+
* },
|
|
67
|
+
* },
|
|
60
68
|
* analyticsHandler: myAnalyticsHandler,
|
|
61
69
|
* socialInteractionsHandler: mySocialHandler,
|
|
62
70
|
* playerSettings: {
|
|
63
|
-
* // Default locale is 'en'; set 'no' to switch to Norwegian:
|
|
64
71
|
* locale: 'no',
|
|
65
72
|
* disableBackground: false,
|
|
66
73
|
* hideCloseButton: false,
|
|
67
74
|
* showStreamsCloudWatermark: true,
|
|
75
|
+
* theme: 'dark',
|
|
68
76
|
* },
|
|
69
77
|
* on: {
|
|
70
78
|
* playerClosed: () => console.log('Player closed'),
|
|
@@ -73,20 +81,17 @@ export { mapToPostPlayerModel } from '../data-loaders/mapper';
|
|
|
73
81
|
* });
|
|
74
82
|
* ```
|
|
75
83
|
*/
|
|
76
|
-
export declare function openPostsPlayer(init: {
|
|
77
|
-
postsProvider: IPostsPlayerDataProvider;
|
|
78
|
-
mediaCenterConfig: IMediaCenterConfig;
|
|
79
|
-
playerSettings?: PostsPlayerSettings;
|
|
80
|
-
on?: {
|
|
81
|
-
playerClosed?: () => void;
|
|
82
|
-
postActivated?: (id: string) => void;
|
|
83
|
-
};
|
|
84
|
-
}): void;
|
|
85
84
|
export declare function openPostsPlayer(init: {
|
|
86
85
|
postsProvider: IPostsPlayerDataProvider;
|
|
87
86
|
analyticsHandler?: IPostAnalyticsHandler;
|
|
88
87
|
socialInteractionsHandler?: IPostSocialInteractionsHandler;
|
|
89
|
-
playerSettings?:
|
|
88
|
+
playerSettings?: {
|
|
89
|
+
disableBackground?: boolean;
|
|
90
|
+
locale?: Locale;
|
|
91
|
+
showStreamsCloudWatermark?: boolean;
|
|
92
|
+
hideCloseButton?: boolean;
|
|
93
|
+
theme?: 'light' | 'dark';
|
|
94
|
+
};
|
|
90
95
|
on?: {
|
|
91
96
|
playerClosed?: () => void;
|
|
92
97
|
postActivated?: (id: string) => void;
|
|
@@ -115,10 +120,3 @@ export type IPostsPlayerDataProvider<TChunk extends WithId = WithId> = {
|
|
|
115
120
|
type WithId = {
|
|
116
121
|
id: string;
|
|
117
122
|
};
|
|
118
|
-
export type PostsPlayerSettings = {
|
|
119
|
-
disableBackground?: boolean;
|
|
120
|
-
locale?: Locale;
|
|
121
|
-
showStreamsCloudWatermark?: boolean;
|
|
122
|
-
hideCloseButton?: boolean;
|
|
123
|
-
theme?: 'light' | 'dark';
|
|
124
|
-
};
|
|
@@ -1,16 +1,90 @@
|
|
|
1
1
|
import {} from '../../media-center/config/types';
|
|
2
|
-
import { MediaCenterProxy } from '../../media-center/media-center';
|
|
3
2
|
import { CloseOrchestrator } from '../../ui/player/close-orchestrator';
|
|
4
3
|
import { ModalShadowHost } from '../../ui/shadow-dom';
|
|
5
4
|
import { default as PostsPlayer } from './cmp.posts-player.svelte';
|
|
6
5
|
import { default as PostsPlayerProxy } from './posts-player-proxy.svelte';
|
|
7
6
|
import { mount, unmount } from 'svelte';
|
|
8
7
|
export { PostsPlayer };
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Opens the posts player modal.
|
|
10
|
+
*
|
|
11
|
+
* @param init Configuration options for the posts player.
|
|
12
|
+
*
|
|
13
|
+
* Data provider (required)
|
|
14
|
+
* @param {IPostsPlayerDataProvider} init.postsProvider
|
|
15
|
+
* Provider that supplies post items to the player.
|
|
16
|
+
*
|
|
17
|
+
* Analytics (optional)
|
|
18
|
+
* @param {IPostAnalyticsHandler} [init.analyticsHandler]
|
|
19
|
+
* Custom analytics handler for posts player events.
|
|
20
|
+
*
|
|
21
|
+
* Social interactions (optional)
|
|
22
|
+
* @param {IPostSocialInteractionsHandler} [init.socialInteractionsHandler]
|
|
23
|
+
* Handler for social interactions (like, share, etc.).
|
|
24
|
+
*
|
|
25
|
+
* Player settings (optional)
|
|
26
|
+
* @param {object} [init.playerSettings]
|
|
27
|
+
* Player UI and behavior settings.
|
|
28
|
+
* Fields of PostsPlayerSettings:
|
|
29
|
+
* - {boolean} [disableBackground]
|
|
30
|
+
* If true, hides the player's background image.
|
|
31
|
+
* - {boolean} [hideCloseButton]
|
|
32
|
+
* If true, hides the close button.
|
|
33
|
+
* Note: when true, the `CloseOrchestrator` will not allow closing via the close button.
|
|
34
|
+
* - {'en'|'no'} [locale='en']
|
|
35
|
+
* Localization for the player UI. Default is 'en'; use 'no' for Norwegian.
|
|
36
|
+
* - {boolean} [showStreamsCloudWatermark]
|
|
37
|
+
* If true, shows the StreamsCloud watermark.
|
|
38
|
+
* - {'light' | 'dark'} [theme]
|
|
39
|
+
* Optional theme for the player UI.
|
|
40
|
+
*
|
|
41
|
+
* Events (optional)
|
|
42
|
+
* @param {{ playerClosed?: () => void; postActivated?: (id: string) => void }} [init.on]
|
|
43
|
+
* Optional event handlers.
|
|
44
|
+
* @param {() => void} [init.on.playerClosed]
|
|
45
|
+
* Called after the player is fully closed (after unmount and removal from the DOM).
|
|
46
|
+
* @param {(id: string) => void} [init.on.postActivated]
|
|
47
|
+
* Called when a post becomes active (receives the post's id).
|
|
48
|
+
*
|
|
49
|
+
* @returns {void}
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```ts
|
|
53
|
+
* import { openPostsPlayer } from '@streamscloud/embeddable/posts-player';
|
|
54
|
+
*
|
|
55
|
+
* openPostsPlayer({
|
|
56
|
+
* postsProvider: {
|
|
57
|
+
* kind: 'feed',
|
|
58
|
+
* initialData: {
|
|
59
|
+
* prefetchedItems: myPrefetchedPosts,
|
|
60
|
+
* startIndex: 0,
|
|
61
|
+
* startMediaIndex: 0,
|
|
62
|
+
* },
|
|
63
|
+
* loadMore: async () => {
|
|
64
|
+
* // return next chunk of PostPlayerModel[]
|
|
65
|
+
* return await fetchMorePosts();
|
|
66
|
+
* },
|
|
67
|
+
* },
|
|
68
|
+
* analyticsHandler: myAnalyticsHandler,
|
|
69
|
+
* socialInteractionsHandler: mySocialHandler,
|
|
70
|
+
* playerSettings: {
|
|
71
|
+
* locale: 'no',
|
|
72
|
+
* disableBackground: false,
|
|
73
|
+
* hideCloseButton: false,
|
|
74
|
+
* showStreamsCloudWatermark: true,
|
|
75
|
+
* theme: 'dark',
|
|
76
|
+
* },
|
|
77
|
+
* on: {
|
|
78
|
+
* playerClosed: () => console.log('Player closed'),
|
|
79
|
+
* postActivated: (id) => console.log('Activated post', id),
|
|
80
|
+
* },
|
|
81
|
+
* });
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
10
84
|
export function openPostsPlayer(init) {
|
|
11
|
-
const { postsProvider: dataProvider,
|
|
85
|
+
const { postsProvider: dataProvider, analyticsHandler, socialInteractionsHandler, playerSettings, on } = init;
|
|
12
86
|
const shadowHost = new ModalShadowHost();
|
|
13
|
-
let mounted;
|
|
87
|
+
let mounted = null;
|
|
14
88
|
const makeCloseOrchestrator = () => new CloseOrchestrator({
|
|
15
89
|
closeFn: async () => {
|
|
16
90
|
await unmount(mounted);
|
|
@@ -21,37 +95,18 @@ export function openPostsPlayer(init) {
|
|
|
21
95
|
},
|
|
22
96
|
canClose: !playerSettings?.hideCloseButton
|
|
23
97
|
});
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
onPostActivated: on?.postActivated
|
|
35
|
-
}
|
|
36
|
-
},
|
|
37
|
-
closeOrchestrator: makeCloseOrchestrator()
|
|
98
|
+
mounted = mount(PostsPlayerProxy, {
|
|
99
|
+
target: shadowHost.shadowRoot,
|
|
100
|
+
props: {
|
|
101
|
+
dataProvider,
|
|
102
|
+
socialInteractionsHandler,
|
|
103
|
+
analyticsHandler,
|
|
104
|
+
playerSettings,
|
|
105
|
+
closeOrchestrator: makeCloseOrchestrator(),
|
|
106
|
+
on: {
|
|
107
|
+
postActivated: on?.postActivated
|
|
38
108
|
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
mounted = mount(PostsPlayerProxy, {
|
|
43
|
-
target: shadowHost.shadowRoot,
|
|
44
|
-
props: {
|
|
45
|
-
dataProvider,
|
|
46
|
-
socialInteractionsHandler,
|
|
47
|
-
analyticsHandler,
|
|
48
|
-
playerSettings,
|
|
49
|
-
closeOrchestrator: makeCloseOrchestrator(),
|
|
50
|
-
on: {
|
|
51
|
-
postActivated: on?.postActivated
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
});
|
|
55
|
-
}
|
|
109
|
+
}
|
|
110
|
+
});
|
|
56
111
|
shadowHost.attachToBody();
|
|
57
112
|
}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
};
|
|
10
10
|
import { PostType } from '../..';
|
|
11
11
|
import { ContentPlayer, ContentPlayerConfig } from '../../content-player';
|
|
12
|
-
import { ContentPlayerSettings } from '../../content-player/content-player-settings';
|
|
12
|
+
import { ContentPlayerSettings } from '../../content-player/content-player-settings.svelte';
|
|
13
13
|
import { preloadImage } from '../../core/image-preloader';
|
|
14
14
|
import { getPostCoverImage } from '../model';
|
|
15
15
|
import {} from '../../ui/player/providers';
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Locale } from '../../core/locale';
|
|
2
|
+
import type { ThemeValue } from '../../core/theme';
|
|
2
3
|
import type { IPostModel } from '..';
|
|
3
4
|
import type { IPostSocialInteractionsHandler } from '../social-interactions';
|
|
4
5
|
import type { ICloseOrchestrator } from '../../ui/player/close-orchestrator';
|
|
@@ -36,5 +37,5 @@ export type PostsPlayerProps = {
|
|
|
36
37
|
export type PostPlayerSettings = {
|
|
37
38
|
locale?: Locale;
|
|
38
39
|
showStreamsCloudWatermark?: boolean;
|
|
39
|
-
playerColors?: PlayerColors
|
|
40
|
+
playerColors?: Record<ThemeValue, PlayerColors>;
|
|
40
41
|
};
|
|
@@ -9,7 +9,7 @@ export declare const generateTextStyles: (styles: Partial<TextStreamElementStyle
|
|
|
9
9
|
export declare const generateImageStyles: (styles: Partial<ImageStreamElementStyles> | null) => string;
|
|
10
10
|
export declare const mapFontFamily: (value: StreamElementStyleFontFamily | null | undefined) => string;
|
|
11
11
|
export declare const mapFontWeight: (value: StreamElementStyleFontWeight | null | undefined) => "normal" | "600" | "500";
|
|
12
|
-
export declare const mapTextAlign: (value: StreamElementStyleHorizontalAlign | null | undefined) => "
|
|
12
|
+
export declare const mapTextAlign: (value: StreamElementStyleHorizontalAlign | null | undefined) => "right" | "left" | "center";
|
|
13
13
|
export declare const mapFlexJustifyContent: (value: StreamElementStyleHorizontalAlign | null | undefined) => "center" | "flex-start" | "flex-end";
|
|
14
14
|
export declare const transformFontSizeValue: (value: number | null | undefined) => string;
|
|
15
15
|
export declare const transformNumericValue: (value: number | null | undefined, fallback?: string) => string;
|