@streamscloud/embeddable 12.1.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/ads/ad-card/cmp.ad-card.svelte +4 -16
- package/dist/content-player/cmp.content-player.svelte +1 -1
- package/dist/content-player/content-player-config.svelte.d.ts +2 -12
- 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/controls-and-attachments.svelte +32 -2
- package/dist/content-player/controls-and-attachments.svelte.d.ts +1 -0
- package/dist/content-player/index.d.ts +1 -0
- package/dist/content-player/index.js +1 -0
- package/dist/content-player/overview-panel.svelte +2 -2
- package/dist/content-player/ui-manager.svelte.d.ts +2 -1
- package/dist/content-player/ui-manager.svelte.js +2 -1
- package/dist/core/enums.d.ts +3 -0
- package/dist/core/enums.js +4 -0
- package/dist/core/theme/index.d.ts +2 -0
- package/dist/core/theme/index.js +1 -0
- package/dist/core/theme/theme-store.svelte.d.ts +6 -0
- package/dist/core/theme/theme-store.svelte.js +10 -0
- 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 +6 -2
- 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 +59 -0
- package/dist/media-center/media-center/cmp.media-center-proxy.svelte.d.ts +15 -0
- 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 +13 -65
- package/dist/media-center/media-center/discover/discover-header.svelte.d.ts +0 -2
- 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/discover/discover-view.svelte +6 -6
- package/dist/media-center/media-center/discover/discover-view.svelte.d.ts +0 -2
- 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/{header-footer → footer}/media-center-footer.svelte +5 -5
- 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 -5
- package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +21 -9
- 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-mobile.svelte +5 -4
- package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte +138 -35
- package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte.d.ts +2 -2
- package/dist/media-center/media-center/index.d.ts +2 -1
- package/dist/media-center/media-center/index.js +2 -1
- package/dist/media-center/media-center/media-center-context.svelte.d.ts +16 -20
- package/dist/media-center/media-center/media-center-context.svelte.js +61 -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/{cmp.media-center.svelte → media-center-view.svelte} +65 -108
- package/dist/media-center/media-center/media-center-view.svelte.d.ts +9 -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 +40 -35
- package/dist/media-center/media-center/menu/menu.svelte.d.ts +0 -2
- 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 +24 -7
- 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/streams-in-category/streams-in-category-panel.svelte +2 -3
- package/dist/media-center/media-center/types.d.ts +4 -11
- 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 +45 -0
- package/dist/media-page/cmp.media-page.svelte.d.ts +11 -0
- package/dist/media-page/index.d.ts +42 -58
- package/dist/media-page/index.js +131 -17
- package/dist/posts/attachments/cmp.attachments.svelte +1 -1
- package/dist/posts/controls/cmp.controls.svelte +4 -1
- package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
- package/dist/posts/post-viewer/attachments-horizontal.svelte +4 -12
- package/dist/posts/post-viewer/heading.svelte +4 -4
- package/dist/posts/post-viewer/media/post-media.svelte +1 -1
- package/dist/posts/post-viewer/post-texts.svelte +2 -2
- package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +1 -0
- package/dist/posts/posts-player/index.d.ts +31 -32
- package/dist/posts/posts-player/index.js +90 -35
- package/dist/posts/posts-player/posts-player-proxy.svelte +13 -4
- package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +1 -0
- package/dist/posts/posts-player/posts-player-view.svelte +1 -1
- package/dist/posts/posts-player/types.d.ts +2 -1
- package/dist/products/product-card/cmp.product-card.svelte +4 -16
- package/dist/short-videos/short-video-card/cmp.short-video-card.svelte +6 -6
- package/dist/streams/layout/styles-transformer.d.ts +1 -1
- package/dist/streams/stream-card/cmp.stream-card.svelte +1 -1
- package/dist/streams/streams-player/cmp.streams-player.svelte +42 -0
- package/dist/streams/streams-player/cmp.streams-player.svelte.d.ts +24 -0
- package/dist/streams/streams-player/index.d.ts +18 -83
- package/dist/streams/streams-player/index.js +85 -65
- package/dist/streams/streams-player/stream-overview.svelte +1 -1
- package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -1
- package/dist/streams/streams-player/streams-player-proxy.svelte +32 -0
- package/dist/streams/streams-player/streams-player-proxy.svelte.d.ts +26 -0
- 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 +6 -143
- package/dist/ui/button/resources/button-types.d.ts +0 -1
- package/dist/ui/button/resources/button-types.js +0 -1
- package/dist/ui/icon/cmp.icon.svelte +8 -28
- package/dist/ui/image/cmp.image-rounded.svelte +3 -10
- package/dist/ui/image/cmp.image-stub.svelte +1 -4
- package/dist/ui/image/cmp.image.svelte +1 -4
- package/dist/ui/loading/cmp.loading.svelte +1 -4
- package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte +2 -2
- package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte.d.ts +2 -2
- package/dist/ui/player/button/cmp.player-button.svelte +7 -3
- package/dist/ui/player/button/cmp.player-buttons-group.svelte +4 -3
- package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -2
- package/dist/ui/player/button/index.d.ts +1 -1
- package/dist/ui/player/button/types.d.ts +1 -1
- 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 +15 -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 +158 -0
- package/dist/ui/shadow-dom/colors.scss +74 -0
- package/dist/ui/shadow-dom/index.d.ts +1 -0
- package/dist/ui/shadow-dom/index.js +1 -0
- package/dist/ui/shadow-dom/shadow-root-service.js +0 -4
- package/dist/ui/slider/cmp.slider.svelte +5 -5
- 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 -22
- package/dist/media-center/config/internal-media-center-config.d.ts +0 -14
- package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +0 -4
- 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/ui/with-background/cmp.with-background.svelte +0 -86
- package/dist/ui/with-background/index.d.ts +0 -1
- package/dist/ui/with-background/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.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.d.ts +0 -0
- /package/dist/ui/{with-background/cmp.with-background.svelte.d.ts → shadow-dom/cmp.shadow-root.svelte.d.ts} +0 -0
package/dist/media-page/index.js
CHANGED
|
@@ -1,21 +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 {
|
|
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
|
-
export {
|
|
6
|
+
export { default as MediaPage } from './cmp.media-page.svelte';
|
|
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
|
+
*/
|
|
9
68
|
export function openMediaPageModal(init) {
|
|
10
|
-
const {
|
|
11
|
-
let mediaCenterConfig = init.mediaCenterConfig;
|
|
12
|
-
if (!mediaCenterConfig && id) {
|
|
13
|
-
mediaCenterConfig = new InternalMediaCenterConfig({ mediaPageId: id, graphqlOrigin, initiator });
|
|
14
|
-
}
|
|
15
|
-
if (!mediaCenterConfig) {
|
|
16
|
-
toastrWarning('Config is not specified.');
|
|
17
|
-
return;
|
|
18
|
-
}
|
|
69
|
+
const { dataProvider, viewerSettings, on } = init;
|
|
19
70
|
const shadowHost = new ModalShadowHost();
|
|
20
71
|
let mounted = null;
|
|
21
72
|
const makeCloseOrchestrator = () => new CloseOrchestrator({
|
|
@@ -28,13 +79,76 @@ export function openMediaPageModal(init) {
|
|
|
28
79
|
},
|
|
29
80
|
canClose: !viewerSettings?.hideCloseButton
|
|
30
81
|
});
|
|
31
|
-
mounted = mount(
|
|
82
|
+
mounted = mount(MediaCenterProxy, {
|
|
32
83
|
target: shadowHost.shadowRoot,
|
|
33
84
|
props: {
|
|
34
|
-
|
|
35
|
-
settings: viewerSettings,
|
|
85
|
+
dataProvider,
|
|
86
|
+
settings: new MediaCenterSettings(viewerSettings),
|
|
36
87
|
modeProps: {
|
|
37
|
-
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
|
+
}
|
|
38
152
|
},
|
|
39
153
|
closeOrchestrator: makeCloseOrchestrator()
|
|
40
154
|
}
|
|
@@ -15,7 +15,7 @@ const trackingParams = $derived.by(() => {
|
|
|
15
15
|
</script>
|
|
16
16
|
|
|
17
17
|
{#if model.attachments}
|
|
18
|
-
<div class="post-attachments"
|
|
18
|
+
<div class="post-attachments">
|
|
19
19
|
{#if model.attachments.ads.length}
|
|
20
20
|
{#each model.attachments.ads as ad (ad.id)}
|
|
21
21
|
<AdCard
|
|
@@ -16,7 +16,7 @@ import IconShare from '@fluentui/svg-icons/icons/share_48_regular.svg?raw';
|
|
|
16
16
|
import IconShoppingBag from '@fluentui/svg-icons/icons/shopping_bag_32_regular.svg?raw';
|
|
17
17
|
import IconSpeaker2 from '@fluentui/svg-icons/icons/speaker_2_32_regular.svg?raw';
|
|
18
18
|
import IconSpeakerMute from '@fluentui/svg-icons/icons/speaker_mute_32_regular.svg?raw';
|
|
19
|
-
let { model, activeColor, inactiveColor, socialInteractionsHandler, on } = $props();
|
|
19
|
+
let { model, activeColor, inactiveColor, socialInteractionsHandler, extraActions, on } = $props();
|
|
20
20
|
const showSocialInteractions = $derived(!!socialInteractionsHandler && model.enableSocialInteractions);
|
|
21
21
|
let isLikedStore = $state.raw({
|
|
22
22
|
get isLiked() {
|
|
@@ -39,6 +39,9 @@ const actions = $derived.by(() => {
|
|
|
39
39
|
if (model.media && !model.media.currentItem.isImage) {
|
|
40
40
|
result.push({ icon: MediaVolumeManager.isMuted ? IconSpeakerMute : IconSpeaker2, callback: onMuteClicked });
|
|
41
41
|
}
|
|
42
|
+
if (extraActions === null || extraActions === void 0 ? void 0 : extraActions.length) {
|
|
43
|
+
result.push(...extraActions);
|
|
44
|
+
}
|
|
42
45
|
return result;
|
|
43
46
|
});
|
|
44
47
|
$effect(() => {
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { PostModel } from '../model';
|
|
2
2
|
import type { IPostSocialInteractionsHandler } from '../social-interactions';
|
|
3
|
+
import { type PlayerButtonDef } from '../../ui/player/button';
|
|
3
4
|
type Props = {
|
|
4
5
|
model: PostModel;
|
|
5
6
|
activeColor: string | null;
|
|
6
7
|
inactiveColor: string | null;
|
|
7
8
|
socialInteractionsHandler?: IPostSocialInteractionsHandler;
|
|
9
|
+
extraActions?: PlayerButtonDef[];
|
|
8
10
|
on?: {
|
|
9
11
|
attachmentsClicked?: () => void;
|
|
10
12
|
};
|
|
@@ -192,19 +192,14 @@ const variables = $derived.by(() => {
|
|
|
192
192
|
align-items: center;
|
|
193
193
|
width: 15.625rem;
|
|
194
194
|
padding: 0.375rem;
|
|
195
|
-
background-color:
|
|
196
|
-
color:
|
|
197
|
-
border: 0.0625rem solid
|
|
195
|
+
background-color: rgb(from var(--sc-mc-color--bg-card) r g b/90%);
|
|
196
|
+
color: var(--sc-mc-color--text-primary);
|
|
197
|
+
border: 0.0625rem solid var(--sc-mc-color--border-card);
|
|
198
198
|
border-radius: 0.25rem;
|
|
199
199
|
}
|
|
200
200
|
.attachments-card--single {
|
|
201
201
|
width: 100%;
|
|
202
202
|
}
|
|
203
|
-
:global([data-theme="dark"]) .attachments-card {
|
|
204
|
-
background-color: rgba(18, 18, 18, 0.9);
|
|
205
|
-
color: #ffffff;
|
|
206
|
-
border-color: #1e1e1e;
|
|
207
|
-
}
|
|
208
203
|
.attachments-card__thumb {
|
|
209
204
|
--image--rounded--width: 2.375rem;
|
|
210
205
|
--image--rounded--height: 2.375rem;
|
|
@@ -226,11 +221,8 @@ const variables = $derived.by(() => {
|
|
|
226
221
|
}
|
|
227
222
|
.attachments-card__extra-info {
|
|
228
223
|
font-size: 0.625rem;
|
|
229
|
-
color:
|
|
224
|
+
color: var(--sc-mc-color--text-secondary);
|
|
230
225
|
white-space: nowrap;
|
|
231
226
|
overflow: hidden;
|
|
232
227
|
text-overflow: ellipsis;
|
|
233
|
-
}
|
|
234
|
-
:global([data-theme="dark"]) .attachments-card__extra-info {
|
|
235
|
-
color: #ffffff;
|
|
236
228
|
}</style>
|
|
@@ -67,8 +67,8 @@ const variables = $derived.by(() => {
|
|
|
67
67
|
font-size: 0.75rem;
|
|
68
68
|
line-height: 0.9375rem;
|
|
69
69
|
font-weight: 500;
|
|
70
|
-
color:
|
|
71
|
-
text-shadow:
|
|
70
|
+
color: var(--sc-mc-color--text-white);
|
|
71
|
+
text-shadow: var(--sc-mc-color--text-white-shadow);
|
|
72
72
|
text-overflow: ellipsis;
|
|
73
73
|
width: 100%;
|
|
74
74
|
white-space: nowrap;
|
|
@@ -79,6 +79,6 @@ const variables = $derived.by(() => {
|
|
|
79
79
|
font-size: 0.625rem;
|
|
80
80
|
line-height: 0.75rem;
|
|
81
81
|
font-weight: 400;
|
|
82
|
-
color:
|
|
83
|
-
text-shadow:
|
|
82
|
+
color: var(--sc-mc-color--text-white);
|
|
83
|
+
text-shadow: var(--sc-mc-color--text-white-shadow);
|
|
84
84
|
}</style>
|
|
@@ -52,7 +52,7 @@ let { id, media, locale, autoplay = 'on-appearance', on } = $props();
|
|
|
52
52
|
height: 100%;
|
|
53
53
|
min-height: 100%;
|
|
54
54
|
max-height: 100%;
|
|
55
|
-
background-color:
|
|
55
|
+
background-color: rgb(from var(--sc-mc-color--bg-panel) r g b/60%);
|
|
56
56
|
}
|
|
57
57
|
.post-media--fit {
|
|
58
58
|
--video--media-fit: contain;
|
|
@@ -45,8 +45,8 @@ const variables = $derived.by(() => {
|
|
|
45
45
|
}
|
|
46
46
|
}
|
|
47
47
|
.post-viewer-texts {
|
|
48
|
-
color:
|
|
49
|
-
text-shadow:
|
|
48
|
+
color: var(--sc-mc-color--text-white);
|
|
49
|
+
text-shadow: var(--sc-mc-color--text-white-shadow);
|
|
50
50
|
padding: var(--_post-viewer-texts--padding);
|
|
51
51
|
display: flex;
|
|
52
52
|
flex-direction: column;
|
|
@@ -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,9 +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
|
-
};
|
|
@@ -1,16 +1,90 @@
|
|
|
1
1
|
import {} from '../../media-center/config/types';
|
|
2
|
-
import { MediaCenter } 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
|
}
|
|
@@ -1,14 +1,23 @@
|
|
|
1
|
-
<script lang="ts">import {} from '../../
|
|
2
|
-
import {
|
|
1
|
+
<script lang="ts">import { Theme } from '../../core/theme';
|
|
2
|
+
import {} from '../../ui/player/close-orchestrator';
|
|
3
|
+
import { ShadowRoot } from '../../ui/shadow-dom';
|
|
3
4
|
import { default as PostsPlayerView } from './posts-player-view.svelte';
|
|
5
|
+
import { untrack } from 'svelte';
|
|
4
6
|
let { dataProvider, socialInteractionsHandler, closeOrchestrator, playerSettings, analyticsHandler, on } = $props();
|
|
5
7
|
let backgroundImageUrl = $state(null);
|
|
6
8
|
const handleBackgroundImagedLoaded = (url) => {
|
|
7
9
|
backgroundImageUrl = url;
|
|
8
10
|
};
|
|
11
|
+
$effect(() => {
|
|
12
|
+
void (playerSettings === null || playerSettings === void 0 ? void 0 : playerSettings.theme);
|
|
13
|
+
untrack(() => {
|
|
14
|
+
var _a;
|
|
15
|
+
Theme.set((_a = playerSettings === null || playerSettings === void 0 ? void 0 : playerSettings.theme) !== null && _a !== void 0 ? _a : 'dark');
|
|
16
|
+
});
|
|
17
|
+
});
|
|
9
18
|
</script>
|
|
10
19
|
|
|
11
|
-
<
|
|
20
|
+
<ShadowRoot backgroundDisabled={playerSettings?.disableBackground === true} backgroundImageUrl={backgroundImageUrl}>
|
|
12
21
|
<PostsPlayerView
|
|
13
22
|
dataProvider={{ type: 'provider', provider: dataProvider }}
|
|
14
23
|
socialInteractionsHandler={socialInteractionsHandler}
|
|
@@ -16,4 +25,4 @@ const handleBackgroundImagedLoaded = (url) => {
|
|
|
16
25
|
analyticsHandler={analyticsHandler}
|
|
17
26
|
closeOrchestrator={closeOrchestrator}
|
|
18
27
|
on={{ postActivated: on?.postActivated, backgroundImageLoaded: playerSettings?.disableBackground === true ? undefined : handleBackgroundImagedLoaded }} />
|
|
19
|
-
</
|
|
28
|
+
</ShadowRoot>
|
|
@@ -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
|
};
|