@streamscloud/embeddable 15.0.0-rc.0 → 15.0.0-rc.2

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.
Files changed (49) hide show
  1. package/dist/external-api/data-providers/internal-media-center-analytics-handler.js +5 -5
  2. package/dist/external-api/data-providers/internal-post-analytics-handler.js +2 -2
  3. package/dist/external-api/data-providers/internal-stream-analytics-handler.js +5 -5
  4. package/dist/external-api/media-page/index.js +1 -1
  5. package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +1 -1
  6. package/dist/media-center/media-center/discover/discover-view.svelte +11 -33
  7. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +12 -5
  8. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +17 -5
  9. package/dist/media-center/media-center/header/media-center-header-mobile.svelte +4 -2
  10. package/dist/media-center/media-center/header/media-center-header.svelte +4 -2
  11. package/dist/media-center/media-center/media-center-settings.svelte.js +2 -2
  12. package/dist/media-center/media-center/media-center-view.svelte +7 -3
  13. package/dist/media-center/media-center/menu/menu.svelte +4 -6
  14. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel.svelte +2 -6
  15. package/dist/posts/post-viewer/attachments-horizontal.svelte +15 -6
  16. package/dist/posts/post-viewer/cmp.post-viewer.svelte +4 -1
  17. package/dist/posts/post-viewer/cmp.post-viewer.svelte.d.ts +2 -0
  18. package/dist/posts/post-viewer/heading.svelte +6 -4
  19. package/dist/posts/post-viewer/media/post-media.svelte +5 -1
  20. package/dist/posts/post-viewer/post-texts.svelte +4 -2
  21. package/dist/streams/layout/cmp.layout.svelte +4 -1
  22. package/dist/streams/layout/cmp.layout.svelte.d.ts +1 -0
  23. package/dist/streams/layout/element-views/cmp.stock-stream-element.svelte +3 -2
  24. package/dist/streams/layout/element-views/price-element-view.svelte +5 -5
  25. package/dist/streams/layout/styles-transformer.d.ts +2 -1
  26. package/dist/streams/layout/styles-transformer.js +15 -9
  27. package/dist/streams/layout/styles.d.ts +1 -0
  28. package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte +2 -2
  29. package/dist/streams/stream-page-viewer/cmp.stream-page-viewer.svelte.d.ts +2 -0
  30. package/dist/streams/streams-player/streams-player-view.svelte +163 -46
  31. package/dist/streams/streams-player/types.d.ts +1 -0
  32. package/dist/ui/button/resources/button-theme.svelte +2 -4
  33. package/dist/ui/icon/cmp.icon.svelte +1 -1
  34. package/dist/ui/player/button/cmp.player-button.svelte +1 -3
  35. package/dist/ui/player/button/cmp.player-buttons-group.svelte +1 -3
  36. package/dist/ui/player/player/cmp.player.svelte.d.ts +6 -15
  37. package/dist/ui/player/player/controls-and-attachments.svelte.d.ts +6 -15
  38. package/dist/ui/player/player/overview-panel.svelte +1 -3
  39. package/dist/ui/player/player/overview-panel.svelte.d.ts +5 -14
  40. package/dist/ui/player/progress/cmp.chunks-progress.svelte +60 -0
  41. package/dist/ui/player/progress/cmp.chunks-progress.svelte.d.ts +9 -0
  42. package/dist/ui/player/progress/index.d.ts +1 -0
  43. package/dist/ui/player/progress/index.js +1 -0
  44. package/dist/ui/player/providers/chunks-player-buffer/player-chunks-manager.svelte.js +2 -2
  45. package/dist/ui/player/slider/cmp.player-slider.svelte.d.ts +5 -14
  46. package/dist/ui/player/slider-horizontal/cmp.slider.svelte +2 -6
  47. package/dist/ui/player/slider-horizontal/cmp.slider.svelte.d.ts +5 -12
  48. package/dist/ui/shadow-dom/cmp.shadow-root.svelte +2 -2
  49. package/package.json +2 -2
@@ -36,7 +36,7 @@ export class InternalMediaCenterAnalyticsHandler {
36
36
  eventType: EventType.Viewed,
37
37
  relatedEntities: [
38
38
  {
39
- relationType: EntityRelationType.PlacedIn,
39
+ relationType: EntityRelationType.NestedIn,
40
40
  entity: {
41
41
  type: EntityType.Stream,
42
42
  id: streamId
@@ -68,7 +68,7 @@ export class InternalMediaCenterAnalyticsHandler {
68
68
  eventType: EventType.Appeared,
69
69
  relatedEntities: [
70
70
  {
71
- relationType: EntityRelationType.PlacedIn,
71
+ relationType: EntityRelationType.NestedIn,
72
72
  entity: {
73
73
  type: EntityType.Stream,
74
74
  id: streamId
@@ -84,7 +84,7 @@ export class InternalMediaCenterAnalyticsHandler {
84
84
  eventType: EventType.Clicked,
85
85
  relatedEntities: [
86
86
  {
87
- relationType: EntityRelationType.PlacedIn,
87
+ relationType: EntityRelationType.NestedIn,
88
88
  entity: {
89
89
  type: EntityType.Stream,
90
90
  id: streamId
@@ -117,7 +117,7 @@ export class InternalMediaCenterAnalyticsHandler {
117
117
  eventType: EventType.Appeared,
118
118
  relatedEntities: [
119
119
  {
120
- relationType: EntityRelationType.PlacedIn,
120
+ relationType: EntityRelationType.NestedIn,
121
121
  entity: {
122
122
  type: EntityType.ShortVideo,
123
123
  id: videoId
@@ -133,7 +133,7 @@ export class InternalMediaCenterAnalyticsHandler {
133
133
  eventType: EventType.Clicked,
134
134
  relatedEntities: [
135
135
  {
136
- relationType: EntityRelationType.PlacedIn,
136
+ relationType: EntityRelationType.NestedIn,
137
137
  entity: {
138
138
  type: EntityType.ShortVideo,
139
139
  id: videoId
@@ -36,7 +36,7 @@ export class InternalPostAnalyticsHandler {
36
36
  eventType: EventType.Appeared,
37
37
  relatedEntities: [
38
38
  {
39
- relationType: EntityRelationType.PlacedIn,
39
+ relationType: EntityRelationType.NestedIn,
40
40
  entity: {
41
41
  type: EntityType.ShortVideo,
42
42
  id: videoId
@@ -52,7 +52,7 @@ export class InternalPostAnalyticsHandler {
52
52
  eventType: EventType.Clicked,
53
53
  relatedEntities: [
54
54
  {
55
- relationType: EntityRelationType.PlacedIn,
55
+ relationType: EntityRelationType.NestedIn,
56
56
  entity: {
57
57
  type: EntityType.ShortVideo,
58
58
  id: videoId
@@ -28,7 +28,7 @@ export class InternalStreamAnalyticsHandler {
28
28
  eventType: EventType.Viewed,
29
29
  relatedEntities: [
30
30
  {
31
- relationType: EntityRelationType.PlacedIn,
31
+ relationType: EntityRelationType.NestedIn,
32
32
  entity: {
33
33
  type: EntityType.Stream,
34
34
  id: streamId
@@ -60,7 +60,7 @@ export class InternalStreamAnalyticsHandler {
60
60
  eventType: EventType.Appeared,
61
61
  relatedEntities: [
62
62
  {
63
- relationType: EntityRelationType.PlacedIn,
63
+ relationType: EntityRelationType.NestedIn,
64
64
  entity: {
65
65
  type: EntityType.Stream,
66
66
  id: streamId
@@ -76,7 +76,7 @@ export class InternalStreamAnalyticsHandler {
76
76
  eventType: EventType.Clicked,
77
77
  relatedEntities: [
78
78
  {
79
- relationType: EntityRelationType.PlacedIn,
79
+ relationType: EntityRelationType.NestedIn,
80
80
  entity: {
81
81
  type: EntityType.Stream,
82
82
  id: streamId
@@ -109,7 +109,7 @@ export class InternalStreamAnalyticsHandler {
109
109
  eventType: EventType.Appeared,
110
110
  relatedEntities: [
111
111
  {
112
- relationType: EntityRelationType.PlacedIn,
112
+ relationType: EntityRelationType.NestedIn,
113
113
  entity: {
114
114
  type: EntityType.ShortVideo,
115
115
  id: videoId
@@ -125,7 +125,7 @@ export class InternalStreamAnalyticsHandler {
125
125
  eventType: EventType.Clicked,
126
126
  relatedEntities: [
127
127
  {
128
- relationType: EntityRelationType.PlacedIn,
128
+ relationType: EntityRelationType.NestedIn,
129
129
  entity: {
130
130
  type: EntityType.ShortVideo,
131
131
  id: videoId
@@ -74,7 +74,7 @@ export function openMediaPageModal(init) {
74
74
  viewerSettings: {
75
75
  hideCloseButton: viewerSettings?.hideCloseButton,
76
76
  locale: viewerSettings?.locale,
77
- showStreamsCloudWatermark: true,
77
+ showStreamsCloudWatermark: viewerSettings?.showStreamsCloudWatermark,
78
78
  theme: viewerSettings?.theme
79
79
  },
80
80
  on
@@ -58,7 +58,7 @@ export class DiscoverViewHandler {
58
58
  }
59
59
  }
60
60
  finally {
61
- this._shortVideosLoadingDeferred.resolve();
61
+ this._shortVideosLoadingDeferred?.resolve();
62
62
  this._shortVideosLoadingDeferred = null;
63
63
  }
64
64
  };
@@ -146,6 +146,7 @@ const genereateStreamActions = (id) => {
146
146
  overflow-y: auto;
147
147
  --_cross-browser-scrollbar--thumb-color: transparent;
148
148
  --_cross-browser-scrollbar--track-color: transparent;
149
+ /* Set 'container-type: inline-size;' to reference container*/
149
150
  }
150
151
  .media-center-discover:hover {
151
152
  --_cross-browser-scrollbar--thumb-color: var(--scrollbar--thumb-color, #7d7d7d);
@@ -169,9 +170,6 @@ const genereateStreamActions = (id) => {
169
170
  scrollbar-width: thin;
170
171
  }
171
172
  }
172
- .media-center-discover {
173
- /* Set 'container-type: inline-size;' to reference container*/
174
- }
175
173
  @container (width < 576px) {
176
174
  .media-center-discover {
177
175
  padding-inline: 0.9375rem;
@@ -183,23 +181,19 @@ const genereateStreamActions = (id) => {
183
181
  margin: 0 auto;
184
182
  padding-bottom: 1.25rem;
185
183
  /* Set 'container-type: inline-size;' to reference container*/
184
+ /* Set 'container-type: inline-size;' to reference container*/
185
+ /* Set 'container-type: inline-size;' to reference container*/
186
186
  }
187
187
  @container (width < 992px) {
188
188
  .media-center-discover__content {
189
189
  padding-bottom: 1rem;
190
190
  }
191
191
  }
192
- .media-center-discover__content {
193
- /* Set 'container-type: inline-size;' to reference container*/
194
- }
195
192
  @container (width < 768px) {
196
193
  .media-center-discover__content {
197
194
  padding-bottom: 0.8125rem;
198
195
  }
199
196
  }
200
- .media-center-discover__content {
201
- /* Set 'container-type: inline-size;' to reference container*/
202
- }
203
197
  @container (width < 576px) {
204
198
  .media-center-discover__content {
205
199
  padding-bottom: 0.625rem;
@@ -210,23 +204,19 @@ const genereateStreamActions = (id) => {
210
204
  flex-direction: column;
211
205
  gap: 3rem;
212
206
  /* Set 'container-type: inline-size;' to reference container*/
207
+ /* Set 'container-type: inline-size;' to reference container*/
208
+ /* Set 'container-type: inline-size;' to reference container*/
213
209
  }
214
210
  @container (width < 992px) {
215
211
  .media-center-discover__feed {
216
212
  gap: 2.5rem;
217
213
  }
218
214
  }
219
- .media-center-discover__feed {
220
- /* Set 'container-type: inline-size;' to reference container*/
221
- }
222
215
  @container (width < 768px) {
223
216
  .media-center-discover__feed {
224
217
  gap: 2rem;
225
218
  }
226
219
  }
227
- .media-center-discover__feed {
228
- /* Set 'container-type: inline-size;' to reference container*/
229
- }
230
220
  @container (width < 576px) {
231
221
  .media-center-discover__feed {
232
222
  gap: 1.5rem;
@@ -263,13 +253,13 @@ const genereateStreamActions = (id) => {
263
253
  .media-center-discover__section-content--4 {
264
254
  gap: 1.25rem;
265
255
  grid-template-columns: repeat(4, minmax(0, 1fr));
256
+ /* Set 'container-type: inline-size;' to reference container*/
257
+ /* Set 'container-type: inline-size;' to reference container*/
258
+ /* Set 'container-type: inline-size;' to reference container*/
266
259
  }
267
260
  .media-center-discover__section-content--4 :global(> :nth-child(n + 5)) {
268
261
  display: var(--_section-content--more-items--display);
269
262
  }
270
- .media-center-discover__section-content--4 {
271
- /* Set 'container-type: inline-size;' to reference container*/
272
- }
273
263
  @container (width < 992px) {
274
264
  .media-center-discover__section-content--4 {
275
265
  gap: 1rem;
@@ -279,9 +269,6 @@ const genereateStreamActions = (id) => {
279
269
  display: var(--_section-content--more-items--display);
280
270
  }
281
271
  }
282
- .media-center-discover__section-content--4 {
283
- /* Set 'container-type: inline-size;' to reference container*/
284
- }
285
272
  @container (width < 768px) {
286
273
  .media-center-discover__section-content--4 {
287
274
  gap: 0.75rem;
@@ -294,9 +281,6 @@ const genereateStreamActions = (id) => {
294
281
  display: var(--_section-content--more-items--display);
295
282
  }
296
283
  }
297
- .media-center-discover__section-content--4 {
298
- /* Set 'container-type: inline-size;' to reference container*/
299
- }
300
284
  @container (width < 576px) {
301
285
  .media-center-discover__section-content--4 {
302
286
  gap: 0.625rem;
@@ -305,13 +289,13 @@ const genereateStreamActions = (id) => {
305
289
  .media-center-discover__section-content--5 {
306
290
  gap: 1.875rem;
307
291
  grid-template-columns: repeat(5, minmax(0, 1fr));
292
+ /* Set 'container-type: inline-size;' to reference container*/
293
+ /* Set 'container-type: inline-size;' to reference container*/
294
+ /* Set 'container-type: inline-size;' to reference container*/
308
295
  }
309
296
  .media-center-discover__section-content--5 :global(> :nth-child(n + 6)) {
310
297
  display: var(--_section-content--more-items--display);
311
298
  }
312
- .media-center-discover__section-content--5 {
313
- /* Set 'container-type: inline-size;' to reference container*/
314
- }
315
299
  @container (width < 992px) {
316
300
  .media-center-discover__section-content--5 {
317
301
  gap: 1.5rem;
@@ -321,9 +305,6 @@ const genereateStreamActions = (id) => {
321
305
  display: var(--_section-content--more-items--display);
322
306
  }
323
307
  }
324
- .media-center-discover__section-content--5 {
325
- /* Set 'container-type: inline-size;' to reference container*/
326
- }
327
308
  @container (width < 768px) {
328
309
  .media-center-discover__section-content--5 {
329
310
  gap: 1.125rem;
@@ -333,9 +314,6 @@ const genereateStreamActions = (id) => {
333
314
  display: var(--_section-content--more-items--display);
334
315
  }
335
316
  }
336
- .media-center-discover__section-content--5 {
337
- /* Set 'container-type: inline-size;' to reference container*/
338
- }
339
317
  @container (width < 576px) {
340
318
  .media-center-discover__section-content--5 {
341
319
  gap: 0.9375rem;
@@ -12,11 +12,7 @@ export declare class MediaCenterSettingsHandler {
12
12
  readonly dataProvider: IMediaCenterDataProvider;
13
13
  settings: MediaCenterSettings;
14
14
  });
15
- get playerSettings(): {
16
- locale?: Locale;
17
- showStreamsCloudWatermark?: boolean;
18
- playerColors?: Record<ThemeValue, PlayerColors>;
19
- };
15
+ get playerSettings(): ContentPlayerSettingsLocal;
20
16
  get actualMediaCenterColors(): PlayerColors;
21
17
  get locale(): Locale;
22
18
  get backgroundWrapperProps(): {
@@ -25,8 +21,19 @@ export declare class MediaCenterSettingsHandler {
25
21
  backgroundColor?: string | null;
26
22
  };
27
23
  get backgroundImageLoadedHandler(): ((url: string | null) => void) | undefined;
24
+ setMinOverlayOffsetTop: (value: number) => void;
28
25
  updateBackgroundImageUrl: (url: string | null | "not-applicable") => void;
29
26
  }
30
27
  export type MediaCenterSettingsWithColors = MediaCenterSettings & {
31
28
  playerColors?: PlayerColors;
32
29
  };
30
+ declare class ContentPlayerSettingsLocal {
31
+ private settings;
32
+ private dataProvider;
33
+ locale?: Locale;
34
+ showStreamsCloudWatermark?: boolean;
35
+ playerColors?: Record<ThemeValue, PlayerColors>;
36
+ overlayMinOffsetTop?: number;
37
+ constructor(settings: MediaCenterSettings, dataProvider: IMediaCenterDataProvider);
38
+ }
39
+ export {};
@@ -4,14 +4,11 @@ export class MediaCenterSettingsHandler {
4
4
  _backgroundImageUrl = $state(null);
5
5
  _mediaCenterSettings;
6
6
  _dataProvider;
7
- _contentPlayerSettings = $derived.by(() => ({
8
- locale: this._mediaCenterSettings.locale,
9
- playerColors: this._dataProvider.model?.playerColors,
10
- showStreamsCloudWatermark: this._mediaCenterSettings.showStreamsCloudWatermark
11
- }));
7
+ _contentPlayerSettings;
12
8
  constructor(init) {
13
9
  this._mediaCenterSettings = init.settings;
14
10
  this._dataProvider = init.dataProvider;
11
+ this._contentPlayerSettings = new ContentPlayerSettingsLocal(this._mediaCenterSettings, this._dataProvider);
15
12
  }
16
13
  get playerSettings() {
17
14
  return this._contentPlayerSettings;
@@ -32,7 +29,22 @@ export class MediaCenterSettingsHandler {
32
29
  get backgroundImageLoadedHandler() {
33
30
  return this._mediaCenterSettings.disableBackground ? undefined : (url) => this.updateBackgroundImageUrl(url);
34
31
  }
32
+ setMinOverlayOffsetTop = (value) => {
33
+ this._contentPlayerSettings.overlayMinOffsetTop = value;
34
+ };
35
35
  updateBackgroundImageUrl = (url) => {
36
36
  this._backgroundImageUrl = url;
37
37
  };
38
38
  }
39
+ class ContentPlayerSettingsLocal {
40
+ settings;
41
+ dataProvider;
42
+ locale = $derived.by(() => this.settings.locale);
43
+ showStreamsCloudWatermark = $derived.by(() => this.settings.showStreamsCloudWatermark);
44
+ playerColors = $derived.by(() => this.dataProvider.model?.playerColors);
45
+ overlayMinOffsetTop = $state(0);
46
+ constructor(settings, dataProvider) {
47
+ this.settings = settings;
48
+ this.dataProvider = dataProvider;
49
+ }
50
+ }
@@ -6,13 +6,15 @@ let { context, locale = 'en', on } = $props();
6
6
  const localization = $derived(new MediaCenterHeaderLocalization(locale));
7
7
  const headerMounted = (node) => {
8
8
  const heightResizeObserver = new ResizeObserver(() => {
9
+ var _a;
9
10
  const headerHeight = node.clientHeight;
10
- on.headerHeightChanged(headerHeight);
11
+ (_a = on === null || on === void 0 ? void 0 : on.headerHeightChanged) === null || _a === void 0 ? void 0 : _a.call(on, headerHeight);
11
12
  });
12
13
  heightResizeObserver.observe(node);
13
14
  return {
14
15
  destroy: () => {
15
- on.headerHeightChanged(0);
16
+ var _a;
17
+ (_a = on === null || on === void 0 ? void 0 : on.headerHeightChanged) === null || _a === void 0 ? void 0 : _a.call(on, 0);
16
18
  heightResizeObserver.disconnect();
17
19
  }
18
20
  };
@@ -19,14 +19,16 @@ let scrollAreaRef = $state(null);
19
19
  const headerMounted = (node) => {
20
20
  headerRef = node;
21
21
  const heightResizeObserver = new ResizeObserver(() => {
22
+ var _a;
22
23
  const headerHeight = node.clientHeight;
23
- on.headerHeightChanged(headerHeight);
24
+ (_a = on === null || on === void 0 ? void 0 : on.headerHeightChanged) === null || _a === void 0 ? void 0 : _a.call(on, headerHeight);
24
25
  calcHeaderGridProportions();
25
26
  });
26
27
  heightResizeObserver.observe(node);
27
28
  return {
28
29
  destroy: () => {
29
- on.headerHeightChanged(0);
30
+ var _a;
31
+ (_a = on === null || on === void 0 ? void 0 : on.headerHeightChanged) === null || _a === void 0 ? void 0 : _a.call(on, 0);
30
32
  heightResizeObserver.disconnect();
31
33
  }
32
34
  };
@@ -1,6 +1,6 @@
1
1
  export class MediaCenterSettings {
2
2
  locale = $state('en');
3
- showStreamsCloudWatermark = $state(true);
3
+ showStreamsCloudWatermark = $state(false);
4
4
  disableBackground = $state(false);
5
5
  theme = $state('dark');
6
6
  state = $state.raw(null);
@@ -9,7 +9,7 @@ export class MediaCenterSettings {
9
9
  }
10
10
  update = (data) => {
11
11
  this.locale = data?.locale ?? 'en';
12
- this.showStreamsCloudWatermark = data?.showStreamsCloudWatermark ?? true;
12
+ this.showStreamsCloudWatermark = data?.showStreamsCloudWatermark ?? false;
13
13
  this.disableBackground = data?.disableBackground ?? false;
14
14
  this.theme = data?.theme ?? 'dark';
15
15
  this.state = data?.state ?? null;
@@ -69,9 +69,13 @@ const activateSelectedStreamPlayer = (stream, categoryId) => {
69
69
  const activateSelectedStreamOfCategoryPlayer = (id, prefetchedStreams, categoryId) => {
70
70
  context.playStreamsFeed({ filter: { categoryId }, init: { prefetchedStreams, initialStreamId: id } });
71
71
  };
72
- const onHeaderHeightChanged = (height) => {
72
+ const onDesktopHeaderHeightChanged = (height) => {
73
73
  headerHeight = height;
74
74
  };
75
+ const onMobileHeaderHeightChanged = (height) => {
76
+ headerHeight = height;
77
+ context.settingsHandler.setMinOverlayOffsetTop(height);
78
+ };
75
79
  const onWidthAnchorMounted = (node) => {
76
80
  const resizeObserver = new ResizeObserver(() => {
77
81
  isMobileView = node.clientWidth <= 576;
@@ -142,9 +146,9 @@ const swipeToOpen = (node) => {
142
146
  <div class="media-center" use:onWidthAnchorMounted>
143
147
  <div class="media-center__header-and-content">
144
148
  {#if !isMobileView}
145
- <MediaCenterHeader context={context} dynamicActions={dynamicActions} on={{ headerHeightChanged: onHeaderHeightChanged }} />
149
+ <MediaCenterHeader context={context} dynamicActions={dynamicActions} on={{ headerHeightChanged: onDesktopHeaderHeightChanged }} />
146
150
  {:else}
147
- <MediaCenterHeaderMobile context={context} on={{ headerHeightChanged: onHeaderHeightChanged }} />
151
+ <MediaCenterHeaderMobile context={context} on={{ headerHeightChanged: onMobileHeaderHeightChanged }} />
148
152
  {/if}
149
153
 
150
154
  <div class="media-center__content-container" use:swipeToOpen>
@@ -241,16 +241,14 @@ const styles = $derived.by(() => {
241
241
  display: flex;
242
242
  -webkit-user-drag: none;
243
243
  user-select: none;
244
- }
245
- .menu-item :global([contenteditable]) {
246
- user-select: text;
247
- }
248
- .menu-item {
249
244
  height: 2.25rem;
250
245
  padding-left: var(--_media-center-menu--items--padding-inline);
251
246
  --_menu-item--text--font-size: 0.9375rem;
252
247
  --_menu-item--image--size: 1.5rem;
253
248
  }
249
+ .menu-item :global([contenteditable]) {
250
+ user-select: text;
251
+ }
254
252
  .menu-item--active {
255
253
  background-color: hsl(from var(--_media-center-menu--background-color) h s calc(l + 5)/alpha);
256
254
  border-radius: 0.25rem;
@@ -293,7 +291,7 @@ const styles = $derived.by(() => {
293
291
  }
294
292
  .menu-item__text:hover, .menu-item__text--active {
295
293
  font-weight: 600;
296
- letter-spacing: -0.5px;
294
+ letter-spacing: -0.2px;
297
295
  }
298
296
  .menu-item__tag {
299
297
  height: min-content;
@@ -80,23 +80,19 @@ let { handler, on } = $props();
80
80
  gap: 2rem 1.25rem;
81
81
  grid-template-columns: repeat(5, minmax(0, 1fr));
82
82
  /* Set 'container-type: inline-size;' to reference container*/
83
+ /* Set 'container-type: inline-size;' to reference container*/
84
+ /* Set 'container-type: inline-size;' to reference container*/
83
85
  }
84
86
  @container (width < 992px) {
85
87
  .streams-in-category__section-content {
86
88
  grid-template-columns: repeat(4, minmax(0, 1fr));
87
89
  }
88
90
  }
89
- .streams-in-category__section-content {
90
- /* Set 'container-type: inline-size;' to reference container*/
91
- }
92
91
  @container (width < 768px) {
93
92
  .streams-in-category__section-content {
94
93
  grid-template-columns: repeat(3, minmax(0, 1fr));
95
94
  }
96
95
  }
97
- .streams-in-category__section-content {
98
- /* Set 'container-type: inline-size;' to reference container*/
99
- }
100
96
  @container (width < 576px) {
101
97
  .streams-in-category__section-content {
102
98
  grid-template-columns: repeat(2, minmax(0, 1fr));
@@ -109,14 +109,13 @@ const variables = $derived.by(() => {
109
109
  <div
110
110
  class="attachments-horizontal__item"
111
111
  class:attachments-horizontal__item--single={attachmentsToShow.length === 1}
112
- data-theme={attachment.isAd ? 'default' : 'dark'}
113
112
  onclick={() => handleAttachmentClick(attachment)}
114
113
  onkeydown={() => {}}
115
114
  role="none"
116
115
  bind:this={attachmentElements[attachment.productId ? `product-${attachment.productId}` : `ad-${attachment.adId}`]}
117
116
  data-product-id={attachment.productId || undefined}
118
117
  data-ad-id={attachment.adId || undefined}>
119
- <div class="attachments-card" class:attachments-card--single={attachmentsToShow.length === 1}>
118
+ <div class="attachments-card" class:attachments-card--single={attachmentsToShow.length === 1} class:attachments-card--dark={!attachment.isAd}>
120
119
  <div class="attachments-card__thumb">
121
120
  <ImageRounded src={attachment.image} alt="" noBorders={true} />
122
121
  </div>
@@ -187,17 +186,27 @@ const variables = $derived.by(() => {
187
186
  }
188
187
 
189
188
  .attachments-card {
189
+ --_attachments-card--background-color: #ffffff;
190
+ --_attachments-card--border-color: #f2f2f2;
191
+ --_attachments-card--text--color: #000000;
192
+ --_attachments-card--text--secondary--color: #6b7280;
190
193
  display: grid;
191
194
  grid-template-columns: 2.375rem 1fr;
192
195
  grid-column-gap: 0.75rem;
193
196
  align-items: center;
194
197
  width: 15.625rem;
195
198
  padding: 0.375rem;
196
- background-color: rgb(from var(--sc-mc-color--bg-card) r g b/90%);
197
- color: var(--sc-mc-color--text-primary);
198
- border: 0.0625rem solid var(--sc-mc-color--border-card);
199
+ background-color: rgb(from var(--_attachments-card--background-color) r g b/90%);
200
+ color: var(--_attachments-card--text--color);
201
+ border: 0.0625rem solid var(--_attachments-card--border-color);
199
202
  border-radius: 0.25rem;
200
203
  }
204
+ .attachments-card--dark {
205
+ --_attachments-card--background-color: #000000;
206
+ --_attachments-card--border-color: #000000;
207
+ --_attachments-card--text--color: #ffffff;
208
+ --_attachments-card--text--secondary--color: #d1d5db;
209
+ }
201
210
  .attachments-card--single {
202
211
  width: 100%;
203
212
  }
@@ -222,7 +231,7 @@ const variables = $derived.by(() => {
222
231
  }
223
232
  .attachments-card__extra-info {
224
233
  font-size: 0.625rem;
225
- color: var(--sc-mc-color--text-secondary);
234
+ color: var(--_attachments-card--text--secondary--color);
226
235
  white-space: nowrap;
227
236
  overflow: hidden;
228
237
  text-overflow: ellipsis;
@@ -7,7 +7,7 @@ import { default as PostMedia } from './media/post-media.svelte';
7
7
  import { default as Texts } from './post-texts.svelte';
8
8
  import { PostViewerLocalization } from './post-viewer-localization';
9
9
  import { PostViewerUiManager } from './ui-manager.svelte';
10
- let { model, trackingParams: externalTrackingParams, controlsColors = null, enableAttachments = true, controlActions, enableControls = true, autoplay = 'on-appearance', locale = 'en', on } = $props();
10
+ let { model, trackingParams: externalTrackingParams, controlsColors = null, enableAttachments = true, controlActions, enableControls = true, autoplay = 'on-appearance', locale = 'en', on, overlay } = $props();
11
11
  const localization = $derived(new PostViewerLocalization(locale));
12
12
  const uiManager = new PostViewerUiManager();
13
13
  $effect(() => {
@@ -88,6 +88,9 @@ const variables = $derived.by(() => {
88
88
  scaleEffect={true} />
89
89
  </div>
90
90
  {/if}
91
+ {#if overlay}
92
+ {@render overlay()}
93
+ {/if}
91
94
  </div>
92
95
 
93
96
  <style>@keyframes fadeIn {
@@ -2,6 +2,7 @@ import type { Locale } from '../../core/locale';
2
2
  import type { TrackingParams } from '../../marketing-tracking';
3
3
  import { PostModel } from '../model';
4
4
  import { type PlayerButtonDef } from '../../ui/player/button';
5
+ import type { Snippet } from 'svelte';
5
6
  type Props = {
6
7
  model: PostModel;
7
8
  trackingParams: TrackingParams | null;
@@ -21,6 +22,7 @@ type Props = {
21
22
  adClick?: (adId: string) => void;
22
23
  adImpression?: (adId: string) => void;
23
24
  };
25
+ overlay?: Snippet;
24
26
  };
25
27
  declare const Cmp: import("svelte").Component<Props, {}, "">;
26
28
  type Cmp = ReturnType<typeof Cmp>;
@@ -41,6 +41,8 @@ const variables = $derived.by(() => {
41
41
  }
42
42
  }
43
43
  .post-viewer-heading {
44
+ --_post-viewer-heading-texts--color: #ffffff;
45
+ --_post-viewer-heading--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);
44
46
  display: flex;
45
47
  align-items: center;
46
48
  padding: var(--_post-viewer--heading--padding);
@@ -67,8 +69,8 @@ const variables = $derived.by(() => {
67
69
  font-size: 0.75rem;
68
70
  line-height: 0.9375rem;
69
71
  font-weight: 500;
70
- color: var(--sc-mc-color--text-white);
71
- text-shadow: var(--sc-mc-color--text-white-shadow);
72
+ color: var(--_post-viewer-heading-texts--color);
73
+ text-shadow: var(--_post-viewer-heading--text--shadow);
72
74
  text-overflow: ellipsis;
73
75
  width: 100%;
74
76
  white-space: nowrap;
@@ -79,6 +81,6 @@ const variables = $derived.by(() => {
79
81
  font-size: 0.625rem;
80
82
  line-height: 0.75rem;
81
83
  font-weight: 400;
82
- color: var(--sc-mc-color--text-white);
83
- text-shadow: var(--sc-mc-color--text-white-shadow);
84
+ color: var(--_post-viewer-heading-texts--color);
85
+ text-shadow: var(--_post-viewer-heading--text--shadow);
84
86
  }</style>
@@ -46,13 +46,17 @@ let { id, media, locale, autoplay = 'on-appearance', on } = $props();
46
46
  }
47
47
  }
48
48
  .post-media {
49
+ --_post-media--background-color: #ffffff;
49
50
  width: 100%;
50
51
  min-width: 100%;
51
52
  max-width: 100%;
52
53
  height: 100%;
53
54
  min-height: 100%;
54
55
  max-height: 100%;
55
- background-color: rgb(from var(--sc-mc-color--bg-panel) r g b/60%);
56
+ background-color: rgb(from var(--_post-media--background-color) r g b/60%);
57
+ }
58
+ :global([data-theme="dark"]) .post-media {
59
+ --_post-media--background-color: #000000;
56
60
  }
57
61
  .post-media--fit {
58
62
  --video--media-fit: contain;
@@ -45,8 +45,10 @@ const variables = $derived.by(() => {
45
45
  }
46
46
  }
47
47
  .post-viewer-texts {
48
- color: var(--sc-mc-color--text-white);
49
- text-shadow: var(--sc-mc-color--text-white-shadow);
48
+ --_post-viewer-texts--color: #ffffff;
49
+ --_post-viewer-texts--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);
50
+ color: var(--_post-viewer-texts--color);
51
+ text-shadow: var(--_post-viewer-texts--shadow);
50
52
  padding: var(--_post-viewer-texts--padding);
51
53
  display: flex;
52
54
  flex-direction: column;
@@ -1,6 +1,6 @@
1
1
  <script lang="ts">import { ProportionalContainer } from '../../ui/proportional-container';
2
2
  import { generateStreamLayoutStyles } from './styles-transformer';
3
- let { model, children, controls } = $props();
3
+ let { model, children, controls, overlay } = $props();
4
4
  </script>
5
5
 
6
6
  <ProportionalContainer ratio={9 / 16}>
@@ -9,6 +9,9 @@ let { model, children, controls } = $props();
9
9
  {#if controls}
10
10
  {@render controls()}
11
11
  {/if}
12
+ {#if overlay}
13
+ {@render overlay()}
14
+ {/if}
12
15
  </div>
13
16
  </ProportionalContainer>
14
17
 
@@ -6,6 +6,7 @@ type Props = {
6
6
  };
7
7
  children: Snippet;
8
8
  controls?: Snippet;
9
+ overlay?: Snippet;
9
10
  };
10
11
  declare const Cmp: import("svelte").Component<Props, {}, "">;
11
12
  type Cmp = ReturnType<typeof Cmp>;