@streamscloud/embeddable 12.1.0 → 12.2.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 +1 -0
- package/dist/content-player/content-player-settings.js +1 -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/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 +1 -0
- package/dist/core/theme/index.js +1 -0
- package/dist/core/theme/theme-store.svelte.d.ts +5 -0
- package/dist/core/theme/theme-store.svelte.js +10 -0
- 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 +12 -0
- package/dist/media-center/media-center/discover/discover-header.svelte +10 -13
- package/dist/media-center/media-center/discover/discover-header.svelte.d.ts +0 -2
- 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/handlers/media-center-settings-handler.svelte.d.ts +2 -0
- package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +20 -1
- package/dist/media-center/media-center/header-footer/media-center-footer.svelte +5 -5
- package/dist/media-center/media-center/header-footer/media-center-header-mobile.svelte +5 -4
- package/dist/media-center/media-center/header-footer/media-center-header.svelte +6 -8
- package/dist/media-center/media-center/header-footer/media-center-header.svelte.d.ts +0 -2
- package/dist/media-center/media-center/index.d.ts +1 -1
- package/dist/media-center/media-center/index.js +1 -1
- package/dist/media-center/media-center/media-center-context.svelte.d.ts +3 -13
- package/dist/media-center/media-center/media-center-context.svelte.js +11 -7
- package/dist/media-center/media-center/{cmp.media-center.svelte → media-center-view.svelte} +56 -107
- package/dist/media-center/media-center/media-center-view.svelte.d.ts +7 -0
- package/dist/media-center/media-center/menu/menu.svelte +27 -23
- package/dist/media-center/media-center/menu/menu.svelte.d.ts +0 -2
- package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +7 -3
- 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 +1 -8
- package/dist/media-page/cmp.media-page.svelte +39 -0
- package/dist/media-page/cmp.media-page.svelte.d.ts +10 -0
- package/dist/media-page/index.d.ts +2 -0
- package/dist/media-page/index.js +3 -2
- 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 +1 -0
- package/dist/posts/posts-player/index.js +2 -2
- 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/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/data-loaders/streams-loader.js +6 -2
- 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 +1 -0
- package/dist/streams/streams-player/index.js +5 -5
- package/dist/streams/streams-player/stream-overview.svelte +1 -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/ui/button/resources/button-theme.svelte +0 -151
- 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/player-colors.d.ts +1 -0
- package/dist/ui/shadow-dom/cmp.shadow-root.svelte +156 -0
- package/dist/ui/shadow-dom/colors.scss +72 -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 +1 -1
- package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +0 -4
- 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/ui/{with-background/cmp.with-background.svelte.d.ts → shadow-dom/cmp.shadow-root.svelte.d.ts} +0 -0
|
@@ -20,7 +20,7 @@ export declare class MediaCenterContext {
|
|
|
20
20
|
categoryFollowingHandler: IContentCategoryFollowingHandler | null;
|
|
21
21
|
settingsHandler: MediaCenterSettingsHandler;
|
|
22
22
|
closeOrchestrator: ICloseOrchestrator;
|
|
23
|
-
private
|
|
23
|
+
private _targetData;
|
|
24
24
|
constructor(data: {
|
|
25
25
|
config: IMediaCenterConfig;
|
|
26
26
|
closeOrchestrator: ICloseOrchestrator;
|
|
@@ -28,18 +28,7 @@ export declare class MediaCenterContext {
|
|
|
28
28
|
on: MediaCenterContextInitializationCallbacks;
|
|
29
29
|
});
|
|
30
30
|
get targetData(): import("../config/types").MediaCenterTargetDataModel | null;
|
|
31
|
-
get playerColors():
|
|
32
|
-
brand: string | null;
|
|
33
|
-
button: string | null;
|
|
34
|
-
buttonInactive: string | null;
|
|
35
|
-
cardButton: string | null;
|
|
36
|
-
cardBackground: string | null;
|
|
37
|
-
menuBackground: string | null;
|
|
38
|
-
playerBackground: string | null;
|
|
39
|
-
price: string | null;
|
|
40
|
-
salePrice: string | null;
|
|
41
|
-
sidebarBackground: string | null;
|
|
42
|
-
} | null;
|
|
31
|
+
get playerColors(): import("../../ui/player/colors").PlayerColors | undefined;
|
|
43
32
|
get loading(): boolean;
|
|
44
33
|
get overlayIsActive(): boolean;
|
|
45
34
|
get backgroundWrapperProps(): {
|
|
@@ -48,6 +37,7 @@ export declare class MediaCenterContext {
|
|
|
48
37
|
backgroundColor?: string | null;
|
|
49
38
|
};
|
|
50
39
|
get feedPlayerProps(): import("./types").PlayerProps | null;
|
|
40
|
+
get locale(): import("../../core/locale").Locale;
|
|
51
41
|
toggleMenu: () => void;
|
|
52
42
|
showMenu: () => void;
|
|
53
43
|
hideMenu: () => void;
|
|
@@ -21,7 +21,7 @@ export class MediaCenterContext {
|
|
|
21
21
|
categoryFollowingHandler = $state.raw(null);
|
|
22
22
|
settingsHandler;
|
|
23
23
|
closeOrchestrator;
|
|
24
|
-
|
|
24
|
+
_targetData = $state.raw(null);
|
|
25
25
|
constructor(data) {
|
|
26
26
|
const { config, closeOrchestrator, settings, on } = data;
|
|
27
27
|
this.closeOrchestrator = closeOrchestrator;
|
|
@@ -35,10 +35,10 @@ export class MediaCenterContext {
|
|
|
35
35
|
this.init(config, on);
|
|
36
36
|
}
|
|
37
37
|
get targetData() {
|
|
38
|
-
return this.
|
|
38
|
+
return this._targetData;
|
|
39
39
|
}
|
|
40
40
|
get playerColors() {
|
|
41
|
-
return this.
|
|
41
|
+
return this.settingsHandler.playerSettings.playerColors;
|
|
42
42
|
}
|
|
43
43
|
get loading() {
|
|
44
44
|
return this.discoverHandler.loading || this.streamsInCategoryHandler.loading;
|
|
@@ -52,6 +52,9 @@ export class MediaCenterContext {
|
|
|
52
52
|
get feedPlayerProps() {
|
|
53
53
|
return this.feedHandler.feedPlayerProps;
|
|
54
54
|
}
|
|
55
|
+
get locale() {
|
|
56
|
+
return this.settingsHandler.locale;
|
|
57
|
+
}
|
|
55
58
|
toggleMenu = () => {
|
|
56
59
|
if (this.menuActive) {
|
|
57
60
|
this.hideMenu();
|
|
@@ -114,13 +117,14 @@ export class MediaCenterContext {
|
|
|
114
117
|
};
|
|
115
118
|
init = async (config, on) => {
|
|
116
119
|
try {
|
|
117
|
-
|
|
118
|
-
if (!
|
|
120
|
+
const configModel = await config.getConfig();
|
|
121
|
+
if (!configModel) {
|
|
119
122
|
on.failed();
|
|
120
123
|
return;
|
|
121
124
|
}
|
|
122
|
-
this.categoriesHandler.init({ categories:
|
|
123
|
-
this.settingsHandler.updatePlayerColors(
|
|
125
|
+
this.categoriesHandler.init({ categories: configModel.contentCategories, tagAssociations: configModel.categoryTagAssociations });
|
|
126
|
+
this.settingsHandler.updatePlayerColors(configModel.playerColors);
|
|
127
|
+
this._targetData = configModel.targetData;
|
|
124
128
|
on.initialized(this);
|
|
125
129
|
this.initialized = true;
|
|
126
130
|
}
|
|
@@ -11,46 +11,13 @@ import { Utils } from '../../core/utils';
|
|
|
11
11
|
import { default as PostsPlayerView } from '../../posts/posts-player/posts-player-view.svelte';
|
|
12
12
|
import { default as StreamsPlayerView } from '../../streams/streams-player/streams-player-view.svelte';
|
|
13
13
|
import { Loading } from '../../ui/loading';
|
|
14
|
-
import { WithBackground } from '../../ui/with-background';
|
|
15
14
|
import { DiscoverPanel } from './discover';
|
|
16
15
|
import { MediaCenterHeader, MediaCenterFooter, MediaCenterHeaderMobile } from './header-footer';
|
|
17
16
|
import { MediaCenterContext } from './media-center-context.svelte';
|
|
18
17
|
import { Menu } from './menu';
|
|
19
18
|
import { StreamsInCategoryPanel } from './streams-in-category';
|
|
20
19
|
import { fade } from 'svelte/transition';
|
|
21
|
-
let {
|
|
22
|
-
const context = new MediaCenterContext({
|
|
23
|
-
config,
|
|
24
|
-
closeOrchestrator,
|
|
25
|
-
settings,
|
|
26
|
-
on: {
|
|
27
|
-
initialized: (instance) => {
|
|
28
|
-
switch (modeProps.mode) {
|
|
29
|
-
case 'posts':
|
|
30
|
-
instance.playPostsFeed({
|
|
31
|
-
dataProvider: modeProps.props.dataProvider,
|
|
32
|
-
onPostActivated: modeProps.props.onPostActivated
|
|
33
|
-
});
|
|
34
|
-
break;
|
|
35
|
-
case 'streams':
|
|
36
|
-
instance.playStreamsFeed({
|
|
37
|
-
dataProvider: modeProps.props.dataProvider,
|
|
38
|
-
onStreamActivated: modeProps.props.onStreamActivated
|
|
39
|
-
});
|
|
40
|
-
break;
|
|
41
|
-
case 'discover':
|
|
42
|
-
instance.activateDiscover({ categoryId: null });
|
|
43
|
-
break;
|
|
44
|
-
default:
|
|
45
|
-
Utils.assertUnreachable(modeProps);
|
|
46
|
-
}
|
|
47
|
-
},
|
|
48
|
-
failed: () => {
|
|
49
|
-
console.error('Media Center initialization failed');
|
|
50
|
-
closeOrchestrator.requestClose();
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
});
|
|
20
|
+
let { context } = $props();
|
|
54
21
|
let headerHeight = $state(0);
|
|
55
22
|
let isMobileView = $state(false);
|
|
56
23
|
const selectCategory = (categoryId) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -108,7 +75,7 @@ const swipeToOpen = (node) => {
|
|
|
108
75
|
let startY = 0;
|
|
109
76
|
let isTracking = false;
|
|
110
77
|
let hasOpened = false;
|
|
111
|
-
let threshold =
|
|
78
|
+
let threshold = 50;
|
|
112
79
|
const MIN_DISTANCE = 10;
|
|
113
80
|
function handleTouchStart(e) {
|
|
114
81
|
if (e.touches.length !== 1) {
|
|
@@ -159,67 +126,59 @@ const swipeToOpen = (node) => {
|
|
|
159
126
|
};
|
|
160
127
|
</script>
|
|
161
128
|
|
|
162
|
-
|
|
163
|
-
<
|
|
164
|
-
{
|
|
165
|
-
|
|
166
|
-
{:else}
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
{#if !isMobileView}
|
|
170
|
-
<MediaCenterHeader context={context} locale={settings?.locale} on={{ headerHeightChanged: onHeaderHeightChanged }} />
|
|
171
|
-
{:else}
|
|
172
|
-
<MediaCenterHeaderMobile context={context} on={{ headerHeightChanged: onHeaderHeightChanged }} />
|
|
173
|
-
{/if}
|
|
174
|
-
|
|
175
|
-
<div class="media-center__content-container">
|
|
176
|
-
{#if context.mediaCenterMode === 'feed' && context.feedPlayerProps}
|
|
177
|
-
<div class="media-center__content" class:media-center__content--faded={context.overlayIsActive} transition:fade={{ duration: 300 }}>
|
|
178
|
-
{#if context.feedPlayerProps.type === 'posts'}
|
|
179
|
-
<PostsPlayerView {...context.feedPlayerProps.props} />
|
|
180
|
-
{:else if context.feedPlayerProps.type === 'streams'}
|
|
181
|
-
<StreamsPlayerView {...context.feedPlayerProps.props} />
|
|
182
|
-
{/if}
|
|
183
|
-
</div>
|
|
184
|
-
{:else if context.mediaCenterMode === 'discover'}
|
|
185
|
-
<div class="media-center__content" transition:fade={{ duration: 300 }}>
|
|
186
|
-
<DiscoverPanel
|
|
187
|
-
context={context}
|
|
188
|
-
locale={settings?.locale}
|
|
189
|
-
on={{
|
|
190
|
-
shortVideoSelected: (shortVideo) => activateSelectedShortVideoPlayer(shortVideo),
|
|
191
|
-
streamSelected: (stream) => activateSelectedStreamPlayer(stream)
|
|
192
|
-
}} />
|
|
193
|
-
</div>
|
|
194
|
-
{/if}
|
|
195
|
-
</div>
|
|
196
|
-
{#if context.loading}
|
|
197
|
-
<Loading positionFixedCenter={true} timeout={600} />
|
|
198
|
-
{/if}
|
|
129
|
+
<div class="media-center" use:onWidthAnchorMounted>
|
|
130
|
+
<div class="media-center__header-and-content">
|
|
131
|
+
{#if !isMobileView}
|
|
132
|
+
<MediaCenterHeader context={context} on={{ headerHeightChanged: onHeaderHeightChanged }} />
|
|
133
|
+
{:else}
|
|
134
|
+
<MediaCenterHeaderMobile context={context} on={{ headerHeightChanged: onHeaderHeightChanged }} />
|
|
135
|
+
{/if}
|
|
199
136
|
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
137
|
+
<div class="media-center__content-container" use:swipeToOpen>
|
|
138
|
+
{#if context.mediaCenterMode === 'feed' && context.feedPlayerProps}
|
|
139
|
+
<div class="media-center__content" class:media-center__content--faded={context.overlayIsActive} transition:fade={{ duration: 300 }}>
|
|
140
|
+
{#if context.feedPlayerProps.type === 'posts'}
|
|
141
|
+
<PostsPlayerView {...context.feedPlayerProps.props} />
|
|
142
|
+
{:else if context.feedPlayerProps.type === 'streams'}
|
|
143
|
+
<StreamsPlayerView {...context.feedPlayerProps.props} />
|
|
144
|
+
{/if}
|
|
145
|
+
</div>
|
|
146
|
+
{:else if context.mediaCenterMode === 'discover'}
|
|
147
|
+
<div class="media-center__content" transition:fade={{ duration: 300 }}>
|
|
148
|
+
<DiscoverPanel
|
|
149
|
+
context={context}
|
|
150
|
+
on={{
|
|
151
|
+
shortVideoSelected: (shortVideo) => activateSelectedShortVideoPlayer(shortVideo),
|
|
152
|
+
streamSelected: (stream) => activateSelectedStreamPlayer(stream)
|
|
153
|
+
}} />
|
|
205
154
|
</div>
|
|
206
155
|
{/if}
|
|
156
|
+
</div>
|
|
207
157
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
</div>
|
|
158
|
+
{#if context.menuActive}
|
|
159
|
+
<div class="menu-overlay" class:menu-overlay--mobile={isMobileView} onclick={context.hideMenu} onkeydown={() => {}} role="none">
|
|
160
|
+
<div class="menu-overlay__panel">
|
|
161
|
+
<Menu context={context} on={{ categorySelected: selectCategory, streamSelected: activateSelectedStreamPlayer }} />
|
|
213
162
|
</div>
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
163
|
+
</div>
|
|
164
|
+
{/if}
|
|
165
|
+
</div>
|
|
166
|
+
{#if context.loading}
|
|
167
|
+
<Loading positionFixedCenter={true} timeout={600} />
|
|
168
|
+
{/if}
|
|
169
|
+
|
|
170
|
+
{#if context.streamsInCategoryHandler.active}
|
|
171
|
+
<div class="media-center-overlay" class:media-center-overlay--mobile={isMobileView} style={`top:${headerHeight}px`} transition:fade={{ duration: 300 }}>
|
|
172
|
+
<StreamsInCategoryPanel
|
|
173
|
+
handler={context.streamsInCategoryHandler}
|
|
174
|
+
on={{ streamSelected: (id, categoryId, streams) => activateSelectedStreamOfCategoryPlayer(id, streams, categoryId) }} />
|
|
220
175
|
</div>
|
|
221
|
-
|
|
222
|
-
|
|
176
|
+
{/if}
|
|
177
|
+
|
|
178
|
+
{#if isMobileView}
|
|
179
|
+
<MediaCenterFooter context={context} />
|
|
180
|
+
{/if}
|
|
181
|
+
</div>
|
|
223
182
|
|
|
224
183
|
<style>@keyframes fadeIn {
|
|
225
184
|
0% {
|
|
@@ -243,6 +202,13 @@ const swipeToOpen = (node) => {
|
|
|
243
202
|
flex-direction: column;
|
|
244
203
|
position: relative;
|
|
245
204
|
}
|
|
205
|
+
.media-center__header-and-content {
|
|
206
|
+
display: flex;
|
|
207
|
+
flex-direction: column;
|
|
208
|
+
flex: 1;
|
|
209
|
+
min-height: 0;
|
|
210
|
+
position: relative;
|
|
211
|
+
}
|
|
246
212
|
.media-center__content-container {
|
|
247
213
|
flex: 1;
|
|
248
214
|
min-height: 0;
|
|
@@ -301,26 +267,9 @@ const swipeToOpen = (node) => {
|
|
|
301
267
|
}
|
|
302
268
|
.menu-overlay--mobile {
|
|
303
269
|
right: 0;
|
|
304
|
-
bottom: 6.25rem;
|
|
305
270
|
}
|
|
306
271
|
.menu-overlay__panel {
|
|
307
272
|
width: 17.5rem;
|
|
308
273
|
height: 100%;
|
|
309
274
|
max-height: 100%;
|
|
310
|
-
}
|
|
311
|
-
|
|
312
|
-
.menu-swipe-area {
|
|
313
|
-
display: none;
|
|
314
|
-
position: absolute;
|
|
315
|
-
top: 0;
|
|
316
|
-
left: 0;
|
|
317
|
-
width: 1.875rem;
|
|
318
|
-
height: 100%;
|
|
319
|
-
z-index: 1;
|
|
320
|
-
/* Set 'container-type: inline-size;' to reference container*/
|
|
321
|
-
}
|
|
322
|
-
@container (width < 576px) {
|
|
323
|
-
.menu-swipe-area {
|
|
324
|
-
display: block;
|
|
325
|
-
}
|
|
326
275
|
}</style>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { MediaCenterContext } from './media-center-context.svelte';
|
|
2
|
+
type Props = {
|
|
3
|
+
context: MediaCenterContext;
|
|
4
|
+
};
|
|
5
|
+
declare const MediaCenterView: import("svelte").Component<Props, {}, "">;
|
|
6
|
+
type MediaCenterView = ReturnType<typeof MediaCenterView>;
|
|
7
|
+
export default MediaCenterView;
|
|
@@ -10,8 +10,8 @@ import { MenuLocalization } from './menu-localization';
|
|
|
10
10
|
import IconChevronDownFilled from '@fluentui/svg-icons/icons/chevron_down_20_filled.svg?raw';
|
|
11
11
|
import IconChevronRightFilled from '@fluentui/svg-icons/icons/chevron_right_20_filled.svg?raw';
|
|
12
12
|
import { slide } from 'svelte/transition';
|
|
13
|
-
let { context,
|
|
14
|
-
const localization = $derived(new MenuLocalization(locale));
|
|
13
|
+
let { context, on } = $props();
|
|
14
|
+
const localization = $derived(new MenuLocalization(context.locale));
|
|
15
15
|
const target = $derived.by(() => context.targetData);
|
|
16
16
|
const generateCategoriesMap = () => {
|
|
17
17
|
const expanded = {};
|
|
@@ -45,12 +45,12 @@ const styles = $derived.by(() => {
|
|
|
45
45
|
</div>
|
|
46
46
|
<div class="media-center-target__info">
|
|
47
47
|
<div class="media-center-target__name">
|
|
48
|
-
<LineClamp maxLines={1} locale={locale}>
|
|
48
|
+
<LineClamp maxLines={1} locale={context.locale}>
|
|
49
49
|
{target.name}
|
|
50
50
|
</LineClamp>
|
|
51
51
|
</div>
|
|
52
52
|
{#if target.membersCount}
|
|
53
|
-
<LineClamp maxLines={1} locale={locale}>
|
|
53
|
+
<LineClamp maxLines={1} locale={context.locale}>
|
|
54
54
|
<div class="media-center-target__members">
|
|
55
55
|
<span class="media-center-target__members-count">
|
|
56
56
|
{compactNumber(target.membersCount, { locale: localization.locale })}
|
|
@@ -70,22 +70,19 @@ const styles = $derived.by(() => {
|
|
|
70
70
|
</div>
|
|
71
71
|
<div class="media-center-menu__tree">
|
|
72
72
|
<div class="media-center-menu__tree-item">
|
|
73
|
-
<div class="menu-item">
|
|
74
|
-
<div class="menu-item__value">
|
|
75
|
-
<div
|
|
76
|
-
class="menu-item__text"
|
|
77
|
-
class:menu-item__text--active={!context.categoriesHandler.selectedCategoryId}
|
|
78
|
-
onclick={() => context.playRootFeed()}
|
|
79
|
-
onkeydown={() => {}}
|
|
80
|
-
role="button"
|
|
81
|
-
tabindex="0">
|
|
73
|
+
<div class="menu-item" class:menu-item--active={!context.categoriesHandler.selectedCategoryId}>
|
|
74
|
+
<div class="menu-item__value" onclick={() => context.playRootFeed()} onkeydown={() => {}} role="button" tabindex="0">
|
|
75
|
+
<div class="menu-item__text" class:menu-item__text--active={!context.categoriesHandler.selectedCategoryId}>
|
|
82
76
|
{context.mediaCenterMode === 'discover' ? localization.discoverLabel : localization.feedLabel}
|
|
83
77
|
</div>
|
|
84
78
|
</div>
|
|
85
79
|
</div>
|
|
86
80
|
</div>
|
|
87
81
|
{#snippet categoryItem(category: { type: 'main'; value: MediaCenterCategoryModel } | { type: 'child'; value: MediaCenterSubCategoryModel })}
|
|
88
|
-
<div
|
|
82
|
+
<div
|
|
83
|
+
class="menu-item"
|
|
84
|
+
class:menu-item--child={category.type === 'child'}
|
|
85
|
+
class:menu-item--active={context.categoriesHandler.selectedCategoryId === category.value.id}>
|
|
89
86
|
<div class="menu-item__value" onclick={() => on.categorySelected(category.value.id)} onkeydown={() => {}} role="button" tabindex="0">
|
|
90
87
|
<div class="menu-item__image">
|
|
91
88
|
<ImageRound src={category.value.image} noBorders={true} />
|
|
@@ -155,7 +152,8 @@ const styles = $derived.by(() => {
|
|
|
155
152
|
}
|
|
156
153
|
}
|
|
157
154
|
.media-center-menu {
|
|
158
|
-
--_media-center-menu--background-color: var(--media-center-menu--background-color, rgb(from
|
|
155
|
+
--_media-center-menu--background-color: var(--media-center-menu--background-color, rgb(from var(--sc-mc-color--bg-panel) r g b / 95%));
|
|
156
|
+
--_media-center-menu--items--padding-inline: 0.625rem;
|
|
159
157
|
background: var(--_media-center-menu--background-color);
|
|
160
158
|
height: 100%;
|
|
161
159
|
min-height: 100%;
|
|
@@ -167,8 +165,7 @@ const styles = $derived.by(() => {
|
|
|
167
165
|
gap: 1.25rem;
|
|
168
166
|
flex-direction: column;
|
|
169
167
|
min-height: 0;
|
|
170
|
-
padding: 0.9375rem
|
|
171
|
-
padding-right: 0.75rem;
|
|
168
|
+
padding: 0.9375rem 0.375rem;
|
|
172
169
|
border-radius: 0 1rem 1rem 0;
|
|
173
170
|
}
|
|
174
171
|
.media-center-menu__content {
|
|
@@ -208,7 +205,8 @@ const styles = $derived.by(() => {
|
|
|
208
205
|
font-size: 1.125rem;
|
|
209
206
|
line-height: 1.75rem;
|
|
210
207
|
font-weight: 500;
|
|
211
|
-
color:
|
|
208
|
+
color: var(--sc-mc-color--text-primary);
|
|
209
|
+
padding-inline: var(--_media-center-menu--items--padding-inline);
|
|
212
210
|
}
|
|
213
211
|
.media-center-menu__tree {
|
|
214
212
|
display: flex;
|
|
@@ -227,7 +225,7 @@ const styles = $derived.by(() => {
|
|
|
227
225
|
flex-direction: column;
|
|
228
226
|
gap: 1rem;
|
|
229
227
|
padding-top: 1.25rem;
|
|
230
|
-
padding-
|
|
228
|
+
padding-inline: var(--_media-center-menu--items--padding-inline);
|
|
231
229
|
}
|
|
232
230
|
.media-center-menu__popular-streams {
|
|
233
231
|
display: grid;
|
|
@@ -240,12 +238,17 @@ const styles = $derived.by(() => {
|
|
|
240
238
|
-webkit-user-drag: none;
|
|
241
239
|
user-select: none;
|
|
242
240
|
height: 2.25rem;
|
|
241
|
+
padding-left: var(--_media-center-menu--items--padding-inline);
|
|
243
242
|
--_menu-item--text--font-size: 0.9375rem;
|
|
244
243
|
--_menu-item--image--size: 1.5rem;
|
|
245
244
|
}
|
|
246
245
|
.menu-item :global([contenteditable]) {
|
|
247
246
|
user-select: text;
|
|
248
247
|
}
|
|
248
|
+
.menu-item--active {
|
|
249
|
+
background-color: hsl(from var(--_media-center-menu--background-color) h s calc(l + 5)/alpha);
|
|
250
|
+
border-radius: 0.25rem;
|
|
251
|
+
}
|
|
249
252
|
.menu-item--child {
|
|
250
253
|
height: 2.125rem;
|
|
251
254
|
padding-left: 1.25rem;
|
|
@@ -270,7 +273,7 @@ const styles = $derived.by(() => {
|
|
|
270
273
|
}
|
|
271
274
|
.menu-item__text {
|
|
272
275
|
max-width: 100%;
|
|
273
|
-
color:
|
|
276
|
+
color: var(--sc-mc-color--text-primary);
|
|
274
277
|
font-size: var(--_menu-item--text--font-size);
|
|
275
278
|
font-weight: 400;
|
|
276
279
|
text-align: left;
|
|
@@ -297,7 +300,7 @@ const styles = $derived.by(() => {
|
|
|
297
300
|
margin-left: 0.25rem;
|
|
298
301
|
}
|
|
299
302
|
.menu-item__collapser {
|
|
300
|
-
--icon--color:
|
|
303
|
+
--icon--color: var(--sc-mc-color--text-primary);
|
|
301
304
|
--icon--size: 1rem;
|
|
302
305
|
padding: 0.5rem;
|
|
303
306
|
}
|
|
@@ -309,6 +312,7 @@ const styles = $derived.by(() => {
|
|
|
309
312
|
display: flex;
|
|
310
313
|
align-items: center;
|
|
311
314
|
gap: 0.9375rem;
|
|
315
|
+
padding-inline: var(--_media-center-menu--items--padding-inline);
|
|
312
316
|
}
|
|
313
317
|
.media-center-target__image {
|
|
314
318
|
width: 3.5rem;
|
|
@@ -321,7 +325,7 @@ const styles = $derived.by(() => {
|
|
|
321
325
|
.media-center-target__info {
|
|
322
326
|
display: flex;
|
|
323
327
|
flex-direction: column;
|
|
324
|
-
color:
|
|
328
|
+
color: var(--sc-mc-color--text-primary);
|
|
325
329
|
}
|
|
326
330
|
.media-center-target__name {
|
|
327
331
|
font-size: 1.125rem;
|
|
@@ -342,5 +346,5 @@ const styles = $derived.by(() => {
|
|
|
342
346
|
font-size: 0.75rem;
|
|
343
347
|
line-height: 1;
|
|
344
348
|
font-weight: 400;
|
|
345
|
-
color:
|
|
349
|
+
color: var(--sc-mc-color--text-secondary);
|
|
346
350
|
}</style>
|
|
@@ -1,9 +1,7 @@
|
|
|
1
|
-
import type { Locale } from '../../../core/locale';
|
|
2
1
|
import type { StreamPlayerModel } from '../../../streams/streams-player';
|
|
3
2
|
import type { MediaCenterContext } from '../media-center-context.svelte';
|
|
4
3
|
type Props = {
|
|
5
4
|
context: MediaCenterContext;
|
|
6
|
-
locale?: Locale;
|
|
7
5
|
on: {
|
|
8
6
|
categorySelected: (categoryId: string) => void;
|
|
9
7
|
streamSelected: (stream: StreamPlayerModel) => void;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
<script lang="ts">import {
|
|
1
|
+
<script lang="ts">import { Theme } from '../../../core/theme';
|
|
2
|
+
import { ImageRound } from '../../../ui/image';
|
|
2
3
|
let { context } = $props();
|
|
3
4
|
const styles = $derived.by(() => {
|
|
4
5
|
var _a;
|
|
@@ -8,9 +9,12 @@ const styles = $derived.by(() => {
|
|
|
8
9
|
}
|
|
9
10
|
return values.join(';');
|
|
10
11
|
});
|
|
12
|
+
const handleClick = () => {
|
|
13
|
+
Theme.toggle();
|
|
14
|
+
};
|
|
11
15
|
</script>
|
|
12
16
|
|
|
13
|
-
<div class="moments-circle" style={styles}>
|
|
17
|
+
<div class="moments-circle" style={styles} onclick={handleClick} onkeydown={() => {}} role="none">
|
|
14
18
|
{#if context.targetData}
|
|
15
19
|
<ImageRound src={context.targetData.image} />
|
|
16
20
|
{/if}
|
|
@@ -28,7 +32,7 @@ const styles = $derived.by(() => {
|
|
|
28
32
|
}
|
|
29
33
|
}
|
|
30
34
|
.moments-circle {
|
|
31
|
-
--_moments-circle--brand-color: var(--moments-circle--brand-color,
|
|
35
|
+
--_moments-circle--brand-color: var(--moments-circle--brand-color, var(--sc-mc-color--border-brand));
|
|
32
36
|
width: 6.25%rem;
|
|
33
37
|
min-width: 6.25%rem;
|
|
34
38
|
max-width: 6.25%rem;
|
|
@@ -63,8 +63,7 @@ let { handler, on } = $props();
|
|
|
63
63
|
font-size: 1.125rem;
|
|
64
64
|
line-height: 1.75rem;
|
|
65
65
|
font-weight: 500;
|
|
66
|
-
color:
|
|
67
|
-
text-shadow: 0 1px 0 rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.1), 0 1px 6px rgba(0, 0, 0, 0.05);
|
|
66
|
+
color: var(--sc-mc-color--text-primary);
|
|
68
67
|
}
|
|
69
68
|
.streams-in-category__section-header::before {
|
|
70
69
|
content: "";
|
|
@@ -72,7 +71,7 @@ let { handler, on } = $props();
|
|
|
72
71
|
width: 0.3125rem;
|
|
73
72
|
height: 1.625rem;
|
|
74
73
|
border-radius: 0.125rem;
|
|
75
|
-
background:
|
|
74
|
+
background: var(--sc-mc-color--border-brand);
|
|
76
75
|
}
|
|
77
76
|
.streams-in-category__section-content {
|
|
78
77
|
--product-card--aspect-ratio: 9/16;
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import type { Locale } from '../../core/locale';
|
|
2
|
-
import type { IMediaCenterConfig } from '../config/types';
|
|
3
2
|
import type { PostPlayerModel, PostsPlayerProps } from '../../posts/posts-player/types';
|
|
4
3
|
import type { IStreamsPlayerDataProvider, StreamAmplificationParameters, StreamsPlayerProps } from '../../streams/streams-player/types';
|
|
5
|
-
import type { ICloseOrchestrator } from '../../ui/player/close-orchestrator';
|
|
6
4
|
import type { IPlayerDataProvider } from '../../ui/player/providers';
|
|
7
5
|
export type MediaCenterMode = 'feed' | 'discover';
|
|
8
6
|
export type MediaCenterCategoryData = {
|
|
@@ -11,12 +9,6 @@ export type MediaCenterCategoryData = {
|
|
|
11
9
|
parentId: string | undefined;
|
|
12
10
|
parentName: string | undefined;
|
|
13
11
|
};
|
|
14
|
-
export type MediaCenterProps = {
|
|
15
|
-
config: IMediaCenterConfig;
|
|
16
|
-
settings?: MediaCenterSettings;
|
|
17
|
-
modeProps: MediaCenterModeProps;
|
|
18
|
-
closeOrchestrator: ICloseOrchestrator;
|
|
19
|
-
};
|
|
20
12
|
export type MediaCenterModeProps = {
|
|
21
13
|
mode: 'posts';
|
|
22
14
|
props: {
|
|
@@ -47,4 +39,5 @@ export type MediaCenterSettings = {
|
|
|
47
39
|
locale?: Locale;
|
|
48
40
|
showStreamsCloudWatermark?: boolean;
|
|
49
41
|
disableBackground?: boolean;
|
|
42
|
+
theme?: 'light' | 'dark';
|
|
50
43
|
};
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
<script lang="ts">var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { MediaCenterProxy } from '../media-center/media-center';
|
|
11
|
+
import { CloseOrchestrator } from '../ui/player/close-orchestrator';
|
|
12
|
+
import { createShadowRoot } from '../ui/shadow-dom';
|
|
13
|
+
import { mount, unmount } from 'svelte';
|
|
14
|
+
let { config, settings, modeProps } = $props();
|
|
15
|
+
const initHost = (node) => {
|
|
16
|
+
const shadowRoot = createShadowRoot(node);
|
|
17
|
+
const mounted = mount(MediaCenterProxy, {
|
|
18
|
+
target: shadowRoot,
|
|
19
|
+
props: {
|
|
20
|
+
config,
|
|
21
|
+
settings,
|
|
22
|
+
modeProps,
|
|
23
|
+
closeOrchestrator: new CloseOrchestrator({
|
|
24
|
+
closeFn: () => __awaiter(void 0, void 0, void 0, function* () {
|
|
25
|
+
yield unmount(mounted);
|
|
26
|
+
}),
|
|
27
|
+
canClose: false
|
|
28
|
+
})
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
destroy: () => {
|
|
33
|
+
unmount(mounted);
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<div class="streams-player-host" use:initHost></div>
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { IMediaCenterConfig } from '../media-center';
|
|
2
|
+
import type { MediaCenterModeProps, MediaCenterSettings } from '../media-center/media-center/types';
|
|
3
|
+
type Props = {
|
|
4
|
+
config: IMediaCenterConfig;
|
|
5
|
+
settings?: MediaCenterSettings;
|
|
6
|
+
modeProps: MediaCenterModeProps;
|
|
7
|
+
};
|
|
8
|
+
declare const Cmp: import("svelte").Component<Props, {}, "">;
|
|
9
|
+
type Cmp = ReturnType<typeof Cmp>;
|
|
10
|
+
export default Cmp;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Locale } from '../core/locale';
|
|
2
2
|
import { type IMediaCenterConfig } from '../media-center/config/types';
|
|
3
|
+
export { default as MediaPage } from './cmp.media-page.svelte';
|
|
3
4
|
export type { IMediaCenterConfig };
|
|
4
5
|
export { mapToPostPlayerModel } from '../posts/data-loaders/mapper';
|
|
5
6
|
/**
|
|
@@ -118,4 +119,5 @@ export type MediaPageViewerSettings = {
|
|
|
118
119
|
locale?: Locale;
|
|
119
120
|
showStreamsCloudWatermark?: boolean;
|
|
120
121
|
hideCloseButton?: boolean;
|
|
122
|
+
theme?: 'light' | 'dark';
|
|
121
123
|
};
|
package/dist/media-page/index.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { toastrWarning } from '../core/toastr';
|
|
2
2
|
import { InternalMediaCenterConfig } from '../media-center/config/internal-media-center-config';
|
|
3
3
|
import {} from '../media-center/config/types';
|
|
4
|
-
import {
|
|
4
|
+
import { MediaCenterProxy } from '../media-center/media-center';
|
|
5
5
|
import { CloseOrchestrator } from '../ui/player/close-orchestrator';
|
|
6
6
|
import { ModalShadowHost } from '../ui/shadow-dom';
|
|
7
7
|
import { mount, unmount } from 'svelte';
|
|
8
|
+
export { default as MediaPage } from './cmp.media-page.svelte';
|
|
8
9
|
export { mapToPostPlayerModel } from '../posts/data-loaders/mapper';
|
|
9
10
|
export function openMediaPageModal(init) {
|
|
10
11
|
const { id, graphqlOrigin, initiator, viewerSettings, on } = init;
|
|
@@ -28,7 +29,7 @@ export function openMediaPageModal(init) {
|
|
|
28
29
|
},
|
|
29
30
|
canClose: !viewerSettings?.hideCloseButton
|
|
30
31
|
});
|
|
31
|
-
mounted = mount(
|
|
32
|
+
mounted = mount(MediaCenterProxy, {
|
|
32
33
|
target: shadowHost.shadowRoot,
|
|
33
34
|
props: {
|
|
34
35
|
config: mediaCenterConfig,
|
|
@@ -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(() => {
|