@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.
Files changed (219) hide show
  1. package/dist/ads/ad-card/cmp.ad-card.svelte +4 -16
  2. package/dist/content-player/cmp.content-player.svelte +1 -1
  3. package/dist/content-player/content-player-config.svelte.d.ts +2 -12
  4. package/dist/content-player/content-player-config.svelte.js +1 -1
  5. package/dist/content-player/content-player-settings.svelte.d.ts +16 -0
  6. package/dist/content-player/content-player-settings.svelte.js +27 -0
  7. package/dist/content-player/controls-and-attachments.svelte +32 -2
  8. package/dist/content-player/controls-and-attachments.svelte.d.ts +1 -0
  9. package/dist/content-player/index.d.ts +1 -0
  10. package/dist/content-player/index.js +1 -0
  11. package/dist/content-player/overview-panel.svelte +2 -2
  12. package/dist/content-player/ui-manager.svelte.d.ts +2 -1
  13. package/dist/content-player/ui-manager.svelte.js +2 -1
  14. package/dist/core/enums.d.ts +3 -0
  15. package/dist/core/enums.js +4 -0
  16. package/dist/core/theme/index.d.ts +2 -0
  17. package/dist/core/theme/index.js +1 -0
  18. package/dist/core/theme/theme-store.svelte.d.ts +6 -0
  19. package/dist/core/theme/theme-store.svelte.js +10 -0
  20. package/dist/external-api/data-providers/index.d.ts +6 -0
  21. package/dist/external-api/data-providers/index.js +6 -0
  22. package/dist/external-api/data-providers/internal-media-center-data-provider.svelte.d.ts +15 -0
  23. package/dist/{media-center/config/internal-media-center-config.js → external-api/data-providers/internal-media-center-data-provider.svelte.js} +33 -17
  24. package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.d.ts +1 -1
  25. package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.js +1 -1
  26. package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.d.ts +1 -1
  27. package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.d.ts +1 -1
  28. package/dist/{streams/streams-player → external-api/data-providers}/internal-streams-player-data-provider.js +1 -1
  29. package/dist/{media-center/config → external-api/data-providers}/operations.generated.d.ts +6 -0
  30. package/dist/{media-center/config → external-api/data-providers}/operations.generated.js +13 -0
  31. package/dist/{media-center/config → external-api/data-providers}/operations.graphql +6 -0
  32. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.d.ts +1 -1
  33. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/mapper.js +2 -2
  34. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.d.ts +1 -1
  35. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.d.ts +2 -2
  36. package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/posts-loader.js +1 -1
  37. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.d.ts +1 -1
  38. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/mapper.js +1 -1
  39. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.d.ts +1 -1
  40. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.d.ts +1 -1
  41. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/stream-pages-loader.js +2 -2
  42. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.d.ts +2 -2
  43. package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/streams-loader.js +6 -2
  44. package/dist/external-api/index.d.ts +3 -0
  45. package/dist/external-api/index.js +3 -0
  46. package/dist/external-api/media-page/index.d.ts +83 -0
  47. package/dist/external-api/media-page/index.js +82 -0
  48. package/dist/{short-videos → external-api}/short-videos-player/index.d.ts +27 -12
  49. package/dist/{short-videos → external-api}/short-videos-player/index.js +35 -28
  50. package/dist/external-api/streams-player/index.d.ts +105 -0
  51. package/dist/external-api/streams-player/index.js +110 -0
  52. package/dist/media-center/config/types.d.ts +28 -27
  53. package/dist/media-center/index.d.ts +3 -1
  54. package/dist/media-center/media-center/cmp.media-center-proxy.svelte +59 -0
  55. package/dist/media-center/media-center/cmp.media-center-proxy.svelte.d.ts +15 -0
  56. package/dist/media-center/media-center/discover/community-features-localization.d.ts +8 -0
  57. package/dist/media-center/media-center/discover/community-features-localization.js +31 -0
  58. package/dist/media-center/media-center/discover/community-features.svelte +171 -0
  59. package/dist/media-center/media-center/discover/community-features.svelte.d.ts +11 -0
  60. package/dist/media-center/media-center/discover/data-loading.d.ts +3 -3
  61. package/dist/media-center/media-center/discover/data-loading.js +5 -5
  62. package/dist/media-center/media-center/discover/discover-header.svelte +13 -65
  63. package/dist/media-center/media-center/discover/discover-header.svelte.d.ts +0 -2
  64. package/dist/media-center/media-center/discover/discover-view-handler.svelte.d.ts +3 -3
  65. package/dist/media-center/media-center/discover/discover-view-handler.svelte.js +4 -4
  66. package/dist/media-center/media-center/discover/discover-view.svelte +6 -6
  67. package/dist/media-center/media-center/discover/discover-view.svelte.d.ts +0 -2
  68. package/dist/media-center/media-center/feed/feed-handler.svelte.d.ts +5 -3
  69. package/dist/media-center/media-center/feed/feed-handler.svelte.js +18 -10
  70. package/dist/media-center/media-center/feed/feed-providers-generator.d.ts +11 -5
  71. package/dist/media-center/media-center/feed/feed-providers-generator.js +13 -9
  72. package/dist/media-center/media-center/footer/index.d.ts +1 -0
  73. package/dist/media-center/media-center/footer/index.js +1 -0
  74. package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte +5 -5
  75. package/dist/media-center/media-center/handlers/categories-handler.svelte.d.ts +3 -5
  76. package/dist/media-center/media-center/handlers/categories-handler.svelte.js +16 -13
  77. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.d.ts +18 -5
  78. package/dist/media-center/media-center/handlers/media-center-settings-handler.svelte.js +21 -9
  79. package/dist/media-center/media-center/{header-footer → header}/index.d.ts +0 -1
  80. package/dist/media-center/media-center/{header-footer → header}/index.js +0 -1
  81. package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte +5 -4
  82. package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte +138 -35
  83. package/dist/media-center/media-center/{header-footer → header}/media-center-header.svelte.d.ts +2 -2
  84. package/dist/media-center/media-center/index.d.ts +2 -1
  85. package/dist/media-center/media-center/index.js +2 -1
  86. package/dist/media-center/media-center/media-center-context.svelte.d.ts +16 -20
  87. package/dist/media-center/media-center/media-center-context.svelte.js +61 -19
  88. package/dist/media-center/media-center/media-center-settings.svelte.d.ts +11 -0
  89. package/dist/media-center/media-center/media-center-settings.svelte.js +23 -0
  90. package/dist/media-center/media-center/{cmp.media-center.svelte → media-center-view.svelte} +65 -108
  91. package/dist/media-center/media-center/media-center-view.svelte.d.ts +9 -0
  92. package/dist/media-center/media-center/menu/category-following-wrapper.svelte.d.ts +1 -1
  93. package/dist/media-center/media-center/menu/menu.svelte +40 -35
  94. package/dist/media-center/media-center/menu/menu.svelte.d.ts +0 -2
  95. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.d.ts +3 -3
  96. package/dist/media-center/media-center/menu/popular-streams-panel-handler.svelte.js +4 -4
  97. package/dist/media-center/media-center/moments/cmp.moments-circle.svelte +24 -7
  98. package/dist/media-center/media-center/moments/index.d.ts +1 -0
  99. package/dist/media-center/media-center/moments/index.js +1 -0
  100. package/dist/media-center/media-center/moments/moments-feed-handler.svelte.d.ts +26 -0
  101. package/dist/media-center/media-center/moments/moments-feed-handler.svelte.js +49 -0
  102. package/dist/media-center/media-center/moments/moments-state.svelte.d.ts +20 -0
  103. package/dist/media-center/media-center/moments/moments-state.svelte.js +82 -0
  104. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.d.ts +3 -3
  105. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel-handler.svelte.js +4 -4
  106. package/dist/media-center/media-center/streams-in-category/streams-in-category-panel.svelte +2 -3
  107. package/dist/media-center/media-center/types.d.ts +4 -11
  108. package/dist/media-center/membership/index.d.ts +1 -0
  109. package/dist/media-center/membership/index.js +1 -0
  110. package/dist/media-center/membership/mock-membership-handler.svelte.d.ts +10 -0
  111. package/dist/media-center/membership/mock-membership-handler.svelte.js +21 -0
  112. package/dist/media-center/membership/types.d.ts +10 -0
  113. package/dist/media-center/membership/types.js +1 -0
  114. package/dist/media-center/navigation/index.d.ts +2 -0
  115. package/dist/media-center/navigation/index.js +1 -0
  116. package/dist/media-center/navigation/media-center-state.d.ts +19 -0
  117. package/dist/media-center/navigation/media-center-state.js +1 -0
  118. package/dist/media-center/navigation/mock-navigation-handler.svelte.d.ts +6 -0
  119. package/dist/media-center/navigation/mock-navigation-handler.svelte.js +6 -0
  120. package/dist/media-center/navigation/types.d.ts +5 -0
  121. package/dist/media-center/navigation/types.js +1 -0
  122. package/dist/media-page/cmp.media-page.svelte +45 -0
  123. package/dist/media-page/cmp.media-page.svelte.d.ts +11 -0
  124. package/dist/media-page/index.d.ts +42 -58
  125. package/dist/media-page/index.js +131 -17
  126. package/dist/posts/attachments/cmp.attachments.svelte +1 -1
  127. package/dist/posts/controls/cmp.controls.svelte +4 -1
  128. package/dist/posts/controls/cmp.controls.svelte.d.ts +2 -0
  129. package/dist/posts/post-viewer/attachments-horizontal.svelte +4 -12
  130. package/dist/posts/post-viewer/heading.svelte +4 -4
  131. package/dist/posts/post-viewer/media/post-media.svelte +1 -1
  132. package/dist/posts/post-viewer/post-texts.svelte +2 -2
  133. package/dist/posts/posts-player/cmp.posts-player.svelte.d.ts +1 -0
  134. package/dist/posts/posts-player/index.d.ts +31 -32
  135. package/dist/posts/posts-player/index.js +90 -35
  136. package/dist/posts/posts-player/posts-player-proxy.svelte +13 -4
  137. package/dist/posts/posts-player/posts-player-proxy.svelte.d.ts +1 -0
  138. package/dist/posts/posts-player/posts-player-view.svelte +1 -1
  139. package/dist/posts/posts-player/types.d.ts +2 -1
  140. package/dist/products/product-card/cmp.product-card.svelte +4 -16
  141. package/dist/short-videos/short-video-card/cmp.short-video-card.svelte +6 -6
  142. package/dist/streams/layout/styles-transformer.d.ts +1 -1
  143. package/dist/streams/stream-card/cmp.stream-card.svelte +1 -1
  144. package/dist/streams/streams-player/cmp.streams-player.svelte +42 -0
  145. package/dist/streams/streams-player/cmp.streams-player.svelte.d.ts +24 -0
  146. package/dist/streams/streams-player/index.d.ts +18 -83
  147. package/dist/streams/streams-player/index.js +85 -65
  148. package/dist/streams/streams-player/stream-overview.svelte +1 -1
  149. package/dist/streams/streams-player/streams-player-buffer.svelte.js +2 -1
  150. package/dist/streams/streams-player/streams-player-proxy.svelte +32 -0
  151. package/dist/streams/streams-player/streams-player-proxy.svelte.d.ts +26 -0
  152. package/dist/streams/streams-player/streams-player-view.svelte +1 -1
  153. package/dist/streams/streams-player/types.d.ts +3 -1
  154. package/dist/ui/button/cmp.options-button.svelte +123 -0
  155. package/dist/ui/button/cmp.options-button.svelte.d.ts +20 -0
  156. package/dist/ui/button/index.d.ts +1 -0
  157. package/dist/ui/button/index.js +1 -0
  158. package/dist/ui/button/resources/button-theme.svelte +6 -143
  159. package/dist/ui/button/resources/button-types.d.ts +0 -1
  160. package/dist/ui/button/resources/button-types.js +0 -1
  161. package/dist/ui/icon/cmp.icon.svelte +8 -28
  162. package/dist/ui/image/cmp.image-rounded.svelte +3 -10
  163. package/dist/ui/image/cmp.image-stub.svelte +1 -4
  164. package/dist/ui/image/cmp.image.svelte +1 -4
  165. package/dist/ui/loading/cmp.loading.svelte +1 -4
  166. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte +2 -2
  167. package/dist/ui/player/button/cmp.mobile-player-buttons-group.svelte.d.ts +2 -2
  168. package/dist/ui/player/button/cmp.player-button.svelte +7 -3
  169. package/dist/ui/player/button/cmp.player-buttons-group.svelte +4 -3
  170. package/dist/ui/player/button/cmp.player-buttons-group.svelte.d.ts +2 -2
  171. package/dist/ui/player/button/index.d.ts +1 -1
  172. package/dist/ui/player/button/types.d.ts +1 -1
  173. package/dist/ui/player/colors/index.d.ts +1 -1
  174. package/dist/ui/player/colors/index.js +1 -1
  175. package/dist/ui/player/colors/player-colors.d.ts +15 -1
  176. package/dist/ui/player/colors/player-colors.js +24 -1
  177. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.d.ts +1 -0
  178. package/dist/ui/player/providers/default-chunks-player-buffer.svelte.js +7 -1
  179. package/dist/ui/player/providers/default-feed-player-buffer.svelte.d.ts +1 -0
  180. package/dist/ui/player/providers/default-feed-player-buffer.svelte.js +7 -1
  181. package/dist/ui/player/providers/types.d.ts +3 -1
  182. package/dist/ui/shadow-dom/cmp.shadow-root.svelte +158 -0
  183. package/dist/ui/shadow-dom/colors.scss +74 -0
  184. package/dist/ui/shadow-dom/index.d.ts +1 -0
  185. package/dist/ui/shadow-dom/index.js +1 -0
  186. package/dist/ui/shadow-dom/shadow-root-service.js +0 -4
  187. package/dist/ui/slider/cmp.slider.svelte +5 -5
  188. package/package.json +5 -1
  189. package/dist/content-player/content-player-settings.d.ts +0 -12
  190. package/dist/content-player/content-player-settings.js +0 -22
  191. package/dist/media-center/config/internal-media-center-config.d.ts +0 -14
  192. package/dist/media-center/media-center/cmp.media-center.svelte.d.ts +0 -4
  193. package/dist/media-center/media-center/discover/discover-header-localization.d.ts +0 -6
  194. package/dist/media-center/media-center/discover/discover-header-localization.js +0 -15
  195. package/dist/posts/handlers/index.d.ts +0 -1
  196. package/dist/posts/handlers/index.js +0 -1
  197. package/dist/short-videos/data-providers/index.d.ts +0 -1
  198. package/dist/short-videos/data-providers/index.js +0 -1
  199. package/dist/ui/with-background/cmp.with-background.svelte +0 -86
  200. package/dist/ui/with-background/index.d.ts +0 -1
  201. package/dist/ui/with-background/index.js +0 -1
  202. /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.d.ts +0 -0
  203. /package/dist/{media-center/config → external-api/data-providers}/internal-media-center-analytics-handler.js +0 -0
  204. /package/dist/{posts/handlers → external-api/data-providers}/internal-post-analytics-handler.js +0 -0
  205. /package/dist/{short-videos → external-api}/data-providers/internal-short-video-player-items-provider.d.ts +0 -0
  206. /package/dist/{streams/streams-player → external-api/data-providers}/internal-stream-analytics-handler.js +0 -0
  207. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.d.ts +0 -0
  208. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/index.js +0 -0
  209. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.generated.js +0 -0
  210. /package/dist/{posts/data-loaders → external-api/data-providers/post-data-loaders}/operations.graphql +0 -0
  211. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.d.ts +0 -0
  212. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/index.js +0 -0
  213. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.generated.js +0 -0
  214. /package/dist/{streams/data-loaders → external-api/data-providers/stream-data-loaders}/operations.graphql +0 -0
  215. /package/dist/media-center/media-center/{header-footer → footer}/media-center-footer.svelte.d.ts +0 -0
  216. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.d.ts +0 -0
  217. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-localization.js +0 -0
  218. /package/dist/media-center/media-center/{header-footer → header}/media-center-header-mobile.svelte.d.ts +0 -0
  219. /package/dist/ui/{with-background/cmp.with-background.svelte.d.ts → shadow-dom/cmp.shadow-root.svelte.d.ts} +0 -0
@@ -9,6 +9,7 @@ export declare class DefaultChunksPlayerBuffer<TItem extends WithId, TChunk exte
9
9
  readonly navigationDisabled: boolean;
10
10
  readonly animationDuration = 500;
11
11
  private _playerChunksManager;
12
+ private _onEndReachedFn;
12
13
  constructor(provider: IChunksPlayerDataProvider<TItem, TChunk>);
13
14
  get activeChunk(): import("./chunks-player-buffer").PlayerChunk<TItem, TChunk>;
14
15
  setActiveChunkItemIndex: (index: number) => void;
@@ -5,12 +5,14 @@ export class DefaultChunksPlayerBuffer {
5
5
  loaded = $derived.by(() => this._playerChunksManager.flattenedChunkItems);
6
6
  currentIndex = $derived.by(() => this._playerChunksManager.flattenedActiveChunkItemIndex);
7
7
  current = $derived(this.currentIndex >= 0 ? this.loaded[this.currentIndex] : null);
8
- canLoadNext = $derived(this.currentIndex < this.loaded.length - 1);
8
+ canLoadNext = $derived.by(() => this.currentIndex < this.loaded.length - 1 || !!this._onEndReachedFn);
9
9
  canLoadPrevious = $derived(this.currentIndex > 0);
10
10
  navigationDisabled = $derived(!this.canLoadNext && !this.canLoadPrevious);
11
11
  animationDuration = 500;
12
12
  _playerChunksManager;
13
+ _onEndReachedFn;
13
14
  constructor(provider) {
15
+ this._onEndReachedFn = provider.onEndReached;
14
16
  // Throttle navigation methods
15
17
  this.loadNext = Utils.throttle(this.loadNext, this.animationDuration);
16
18
  this.loadPrevious = Utils.throttle(this.loadPrevious, this.animationDuration);
@@ -30,6 +32,10 @@ export class DefaultChunksPlayerBuffer {
30
32
  if (!this.canLoadNext) {
31
33
  return;
32
34
  }
35
+ if (this.currentIndex >= this.loaded.length - 1) {
36
+ this._onEndReachedFn?.();
37
+ return;
38
+ }
33
39
  this._playerChunksManager.activateItemAtFlattenedIndex(this.currentIndex + 1);
34
40
  };
35
41
  loadPrevious = async () => {
@@ -16,6 +16,7 @@ export declare class DefaultFeedPlayerBuffer<T extends WithId> implements IFeedP
16
16
  private _loaded;
17
17
  private _loadMoreFn;
18
18
  private _fetchDeferred;
19
+ private _onEndReachedFn;
19
20
  constructor(provider: IFeedPlayerDataProvider<T>);
20
21
  loadNext: () => Promise<void>;
21
22
  loadPrevious: () => Promise<void>;
@@ -6,7 +6,7 @@ export class DefaultFeedPlayerBuffer {
6
6
  loaded = $derived.by(() => this._loaded);
7
7
  currentIndex = $derived.by(() => this._currentIndex);
8
8
  current = $derived(this.currentIndex >= 0 ? this.loaded[this.currentIndex] : null);
9
- canLoadNext = $derived(this.currentIndex < this.loaded.length - 1);
9
+ canLoadNext = $derived.by(() => this.currentIndex < this.loaded.length - 1 || !!this._onEndReachedFn);
10
10
  canLoadPrevious = $derived(this.currentIndex > 0);
11
11
  navigationDisabled = $derived(!this.canLoadNext && !this.canLoadPrevious);
12
12
  animationDuration = 500;
@@ -14,7 +14,9 @@ export class DefaultFeedPlayerBuffer {
14
14
  _loaded = $state.raw([]);
15
15
  _loadMoreFn;
16
16
  _fetchDeferred = $state.raw(null);
17
+ _onEndReachedFn;
17
18
  constructor(provider) {
19
+ this._onEndReachedFn = provider.onEndReached;
18
20
  this._loadMoreFn = provider.loadMore;
19
21
  // Throttle navigation methods
20
22
  this.loadNext = Utils.throttle(this.loadNext, this.animationDuration);
@@ -25,6 +27,10 @@ export class DefaultFeedPlayerBuffer {
25
27
  if (!this.canLoadNext) {
26
28
  return;
27
29
  }
30
+ if (this.currentIndex >= this.loaded.length - 1) {
31
+ this._onEndReachedFn?.();
32
+ return;
33
+ }
28
34
  ++this._currentIndex;
29
35
  this.warmUpBuffer();
30
36
  };
@@ -6,7 +6,8 @@ export interface IFeedPlayerDataProvider<T extends WithId> {
6
6
  startIndex: number;
7
7
  startMediaIndex?: number;
8
8
  };
9
- loadMore(): Promise<T[]>;
9
+ loadMore: () => Promise<T[]>;
10
+ onEndReached?: () => void;
10
11
  }
11
12
  export interface IChunksPlayerDataProvider<TItem extends WithId, TChunk extends WithId = WithId> {
12
13
  kind: 'chunks';
@@ -19,6 +20,7 @@ export interface IChunksPlayerDataProvider<TItem extends WithId, TChunk extends
19
20
  items: TItem[];
20
21
  continuationToken: string | null;
21
22
  }>;
23
+ onEndReached?: () => void;
22
24
  }
23
25
  export type IPlayerBuffer<T extends WithId> = IFeedPlayerBuffer<T> | IChunksPlayerBuffer<T>;
24
26
  export interface IPlayerBufferBase<T extends WithId> {
@@ -0,0 +1,158 @@
1
+ <script lang="ts">import { Theme } from '../../core/theme';
2
+ let { backgroundDisabled, backgroundImageUrl, backgroundColor, children } = $props();
3
+ const styles = $derived.by(() => {
4
+ const values = [];
5
+ if (backgroundImageUrl) {
6
+ values.push(`--shadow-root--background-image-url: url(${backgroundImageUrl})`);
7
+ }
8
+ if (backgroundColor) {
9
+ values.push(`--shadow-root--background: ${backgroundColor}`);
10
+ }
11
+ return values.join(';');
12
+ });
13
+ </script>
14
+
15
+ <svelte:head>
16
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300..700&display=swap" />
17
+ <meta name="theme-color" content="#242424" />
18
+ <meta name="color-scheme" content="dark" />
19
+ <meta name="mobile-web-app-capable" content="yes" />
20
+ <meta name="apple-mobile-web-app-capable" content="yes" />
21
+ <meta name="apple-mobile-web-app-status-bar-style" content="black" />
22
+
23
+ <style>
24
+ html,
25
+ body {
26
+ background-color: #242424;
27
+ color-scheme: dark;
28
+ }
29
+ </style>
30
+ </svelte:head>
31
+
32
+ <div
33
+ class="shadow-root"
34
+ class:shadow-root--background-enabled={!backgroundDisabled}
35
+ class:shadow-root--background-active={!backgroundDisabled && backgroundImageUrl && backgroundImageUrl !== 'not-applicable'}
36
+ class:shadow-root--background-loading={!backgroundDisabled && !backgroundImageUrl}
37
+ style={styles}
38
+ data-theme={Theme.get()}>
39
+ {@render children()}
40
+ </div>
41
+
42
+ <style>@keyframes fadeIn {
43
+ 0% {
44
+ opacity: 1;
45
+ }
46
+ 50% {
47
+ opacity: 0.4;
48
+ }
49
+ 100% {
50
+ opacity: 1;
51
+ }
52
+ }
53
+ :host,
54
+ :global([data-theme="default"]) {
55
+ /* Backgrounds */
56
+ --sc-mc-color--bg-button: #ffffff;
57
+ --sc-mc-color--bg-card: #ffffff;
58
+ --sc-mc-color--bg-image: #d1d5db;
59
+ --sc-mc-color--bg-panel: #ffffff;
60
+ --sc-mc-color--bg-screen: #f9fafb;
61
+ /* Borders */
62
+ --sc-mc-color--border-brand: #144ab0;
63
+ --sc-mc-color--border-card: #f2f2f2;
64
+ /* Buttons */
65
+ --sc-mc-color--button-secondary: #9ca3af;
66
+ --sc-mc-color--button-player: #272727;
67
+ /* Icons */
68
+ --sc-mc-color--icon-brand: #144ab0;
69
+ --sc-mc-color--icon-destructive: #e71d36;
70
+ --sc-mc-color--icon-overlay: #ffffff;
71
+ --sc-mc-color--icon-overlay-shadow: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
72
+ --sc-mc-color--icon-primary: #1f2937;
73
+ --sc-mc-color--icon-secondary: #9ca3af;
74
+ --sc-mc-color--icon-success: #0cce6b;
75
+ --sc-mc-color--icon-warning: #ffa62b;
76
+ /* Text */
77
+ --sc-mc-color--text-brand: #144ab0;
78
+ --sc-mc-color--text-inverted: #ffffff;
79
+ --sc-mc-color--text-primary: #000000;
80
+ --sc-mc-color--text-secondary: #6b7280;
81
+ --sc-mc-color--text-white: #ffffff;
82
+ --sc-mc-color--text-white-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);
83
+ --sc-mc-color--text-inactive: #e5e7eb;
84
+ }
85
+
86
+ :global([data-theme="dark"]) {
87
+ /* Backgrounds */
88
+ --sc-mc-color--bg-button: #111827;
89
+ --sc-mc-color--bg-card: #000000;
90
+ --sc-mc-color--bg-image: #374151;
91
+ --sc-mc-color--bg-panel: #000000;
92
+ --sc-mc-color--bg-screen: #1e1e1e;
93
+ /* Borders */
94
+ --sc-mc-color--border-brand: #5a8dec;
95
+ --sc-mc-color--border-card: #000000;
96
+ /* Buttons */
97
+ --sc-mc-color--button-secondary: #9ca3af;
98
+ --sc-mc-color--button-player: #000000;
99
+ /* Icons */
100
+ --sc-mc-color--icon-brand: #ffffff;
101
+ --sc-mc-color--icon-destructive: #d4172d;
102
+ --sc-mc-color--icon-overlay: #ffffff;
103
+ --sc-mc-color--icon-overlay-shadow: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
104
+ --sc-mc-color--icon-primary: #1f2937;
105
+ --sc-mc-color--icon-secondary: #9ca3af;
106
+ --sc-mc-color--icon-success: #0cce6b;
107
+ --sc-mc-color--icon-warning: #ffa62b;
108
+ /* Text */
109
+ --sc-mc-color--text-brand: #5a8dec;
110
+ --sc-mc-color--text-inverted: #ffffff;
111
+ --sc-mc-color--text-primary: #ffffff;
112
+ --sc-mc-color--text-secondary: #d1d5db;
113
+ --sc-mc-color--text-white: #ffffff;
114
+ --sc-mc-color--text-white-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);
115
+ --sc-mc-color--text-inactive: #d1d5db;
116
+ }
117
+
118
+ .shadow-root {
119
+ --_shadow-root--background-color: rgb(from var(--shadow-root--background, var(--sc-mc-color--bg-screen)) r g b);
120
+ --_shadow-root--shield-color: rgb(from var(--shadow-root--background, rgb(from var(--sc-mc-color--bg-screen) r g b / 50%)) r g b / alpha);
121
+ --_shadow-root--background-image-url: var(--shadow-root--background-image-url);
122
+ font-family: "Inter", sans-serif;
123
+ font-size: 16px;
124
+ font-weight: normal;
125
+ color: var(--sc-mc-color--text-primary);
126
+ width: 100%;
127
+ min-width: 100%;
128
+ max-width: 100%;
129
+ height: 100%;
130
+ min-height: 100%;
131
+ max-height: 100%;
132
+ container-type: inline-size;
133
+ display: flex;
134
+ flex-direction: column;
135
+ position: relative;
136
+ }
137
+ .shadow-root:before {
138
+ content: "";
139
+ position: absolute;
140
+ inset: 0;
141
+ backdrop-filter: blur(30px);
142
+ background-color: var(--_shadow-root--shield-color);
143
+ display: none;
144
+ }
145
+ .shadow-root--background-enabled {
146
+ background-color: var(--_shadow-root--background-color);
147
+ }
148
+ .shadow-root--background-enabled:before {
149
+ display: block;
150
+ }
151
+ .shadow-root--background-active {
152
+ background-image: var(--_shadow-root--background-image-url);
153
+ background-size: cover;
154
+ background-blend-mode: multiply;
155
+ }
156
+ .shadow-root--background-loading {
157
+ background-color: transparent;
158
+ }</style>
@@ -0,0 +1,74 @@
1
+ @use 'src/styles/colors';
2
+
3
+ :host,
4
+ :global([data-theme='default']) {
5
+ /* Backgrounds */
6
+ --sc-mc-color--bg-button: #{colors.$color-white};
7
+ --sc-mc-color--bg-card: #{colors.$color-white};
8
+ --sc-mc-color--bg-image: #{colors.$color-neutral-300};
9
+ --sc-mc-color--bg-panel: #{colors.$color-white};
10
+ --sc-mc-color--bg-screen: #{colors.$color-neutral-50};
11
+
12
+ /* Borders */
13
+ --sc-mc-color--border-brand: #{colors.$color-primary-500};
14
+ --sc-mc-color--border-card: #{colors.$color-gray-100};
15
+
16
+ /* Buttons */
17
+ --sc-mc-color--button-secondary: #{colors.$color-neutral-400};
18
+ --sc-mc-color--button-player: #{colors.$color-dark-500};
19
+
20
+ /* Icons */
21
+ --sc-mc-color--icon-brand: #{colors.$color-primary-500};
22
+ --sc-mc-color--icon-destructive: #{colors.$color-destructive-500};
23
+ --sc-mc-color--icon-overlay: #{colors.$color-white};
24
+ --sc-mc-color--icon-overlay-shadow: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
25
+ --sc-mc-color--icon-primary: #{colors.$color-neutral-800};
26
+ --sc-mc-color--icon-secondary: #{colors.$color-neutral-400};
27
+ --sc-mc-color--icon-success: #{colors.$color-success-500};
28
+ --sc-mc-color--icon-warning: #{colors.$color-warning-500};
29
+
30
+ /* Text */
31
+ --sc-mc-color--text-brand: #{colors.$color-primary-500};
32
+ --sc-mc-color--text-inverted: #{colors.$color-white};
33
+ --sc-mc-color--text-primary: #{colors.$color-black};
34
+ --sc-mc-color--text-secondary: #{colors.$color-neutral-500};
35
+ --sc-mc-color--text-white: #{colors.$color-white};
36
+ --sc-mc-color--text-white-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);
37
+ --sc-mc-color--text-inactive: #{colors.$color-neutral-200};
38
+ }
39
+
40
+ :global([data-theme='dark']) {
41
+ /* Backgrounds */
42
+ --sc-mc-color--bg-button: #{colors.$color-neutral-900};
43
+ --sc-mc-color--bg-card: #{colors.$color-black};
44
+ --sc-mc-color--bg-image: #{colors.$color-neutral-700};
45
+ --sc-mc-color--bg-panel: #{colors.$color-black};
46
+ --sc-mc-color--bg-screen: #{colors.$color-dark-800};
47
+
48
+ /* Borders */
49
+ --sc-mc-color--border-brand: #{colors.$color-primary-400};
50
+ --sc-mc-color--border-card: #{colors.$color-black};
51
+
52
+ /* Buttons */
53
+ --sc-mc-color--button-secondary: #{colors.$color-neutral-400};
54
+ --sc-mc-color--button-player: #{colors.$color-black};
55
+
56
+ /* Icons */
57
+ --sc-mc-color--icon-brand: #{colors.$color-white};
58
+ --sc-mc-color--icon-destructive: #{colors.$color-destructive-600};
59
+ --sc-mc-color--icon-overlay: #{colors.$color-white};
60
+ --sc-mc-color--icon-overlay-shadow: drop-shadow(1px 1px 0 rgba(0, 0, 0, 0.2));
61
+ --sc-mc-color--icon-primary: #{colors.$color-neutral-800};
62
+ --sc-mc-color--icon-secondary: #{colors.$color-neutral-400};
63
+ --sc-mc-color--icon-success: #{colors.$color-success-500};
64
+ --sc-mc-color--icon-warning: #{colors.$color-warning-500};
65
+
66
+ /* Text */
67
+ --sc-mc-color--text-brand: #{colors.$color-primary-400};
68
+ --sc-mc-color--text-inverted: #{colors.$color-white};
69
+ --sc-mc-color--text-primary: #{colors.$color-white};
70
+ --sc-mc-color--text-secondary: #{colors.$color-neutral-300};
71
+ --sc-mc-color--text-white: #{colors.$color-white};
72
+ --sc-mc-color--text-white-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);
73
+ --sc-mc-color--text-inactive: #{colors.$color-neutral-300};
74
+ }
@@ -1,2 +1,3 @@
1
1
  export { ModalShadowHost } from './modal-shadow-host';
2
2
  export { createShadowRoot } from './shadow-root-service';
3
+ export { default as ShadowRoot } from './cmp.shadow-root.svelte';
@@ -1,2 +1,3 @@
1
1
  export { ModalShadowHost } from './modal-shadow-host';
2
2
  export { createShadowRoot } from './shadow-root-service';
3
+ export { default as ShadowRoot } from './cmp.shadow-root.svelte';
@@ -3,10 +3,6 @@ import reset from './reset-shadow.css?raw';
3
3
  export const createShadowRoot = (host) => {
4
4
  prepareShadowRootHost(host);
5
5
  const shadowRoot = host.attachShadow({ mode: 'open' });
6
- const link = document.createElement('link');
7
- link.rel = 'stylesheet';
8
- link.href = 'https://fonts.googleapis.com/css2?family=Inter:wght@300..700&display=swap';
9
- shadowRoot.appendChild(link);
10
6
  const styleElement = document.createElement('style');
11
7
  styleElement.textContent = normalize + reset;
12
8
  shadowRoot.appendChild(styleElement);
@@ -301,10 +301,10 @@ const showClassicArrowsAndDots = $derived([SliderMode.ArrowsAndDots, SliderMode.
301
301
  font-size: 0.75rem;
302
302
  width: 1.875rem;
303
303
  height: 1.875rem;
304
- background-color: #9ca3af;
304
+ background-color: var(--sc-mc-color--button-secondary);
305
305
  border-radius: 50%;
306
306
  text-align: center;
307
- color: #ffffff;
307
+ color: var(--sc-mc-color--text-white);
308
308
  position: absolute;
309
309
  top: 50%;
310
310
  transform: translateY(-50%);
@@ -342,17 +342,17 @@ const showClassicArrowsAndDots = $derived([SliderMode.ArrowsAndDots, SliderMode.
342
342
  font-weight: 300;
343
343
  width: 5.625rem;
344
344
  text-align: center;
345
- color: #ffffff;
345
+ color: var(--sc-mc-color--text-white);
346
346
  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);
347
347
  }
348
348
  .slider__counts-navigation-button {
349
349
  font-size: 0.75rem;
350
350
  width: 1.625rem;
351
351
  height: 1.625rem;
352
- background-color: #9ca3af;
352
+ background-color: var(--sc-mc-color--button-secondary);
353
353
  border-radius: 50%;
354
354
  text-align: center;
355
- color: #ffffff;
355
+ color: var(--sc-mc-color--text-white);
356
356
  visibility: hidden;
357
357
  /* Set 'container-type: inline-size;' to reference container*/
358
358
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@streamscloud/embeddable",
3
- "version": "12.1.0",
3
+ "version": "13.0.0",
4
4
  "author": "StreamsCloud",
5
5
  "repository": {
6
6
  "type": "git",
@@ -33,6 +33,10 @@
33
33
  "types": "./dist/index.d.ts",
34
34
  "svelte": "./dist/index.js"
35
35
  },
36
+ "./external-api": {
37
+ "types": "./dist/external-api/index.d.ts",
38
+ "svelte": "./dist/external-api/index.js"
39
+ },
36
40
  "./media-center": {
37
41
  "types": "./dist/media-center/index.d.ts",
38
42
  "svelte": "./dist/media-center/index.js"
@@ -1,12 +0,0 @@
1
- import type { Locale } from '../core/locale';
2
- import type { PlayerColors } from '../ui/player/colors';
3
- export declare class ContentPlayerSettings {
4
- locale: Locale;
5
- showStreamsCloudWatermark: boolean;
6
- playerColors: NonNullable<PlayerColors>;
7
- constructor(init?: {
8
- locale?: Locale;
9
- showStreamsCloudWatermark?: boolean;
10
- playerColors?: PlayerColors;
11
- });
12
- }
@@ -1,22 +0,0 @@
1
- export class ContentPlayerSettings {
2
- locale = 'en';
3
- showStreamsCloudWatermark = false;
4
- playerColors = {
5
- brand: null,
6
- button: null,
7
- buttonInactive: null,
8
- cardButton: null,
9
- cardBackground: null,
10
- playerBackground: null,
11
- price: null,
12
- salePrice: null,
13
- sidebarBackground: null
14
- };
15
- constructor(init) {
16
- if (init) {
17
- this.locale = init.locale ?? this.locale;
18
- this.showStreamsCloudWatermark = init.showStreamsCloudWatermark ?? this.showStreamsCloudWatermark;
19
- this.playerColors = init?.playerColors ?? this.playerColors;
20
- }
21
- }
22
- }
@@ -1,14 +0,0 @@
1
- import type { IMediaCenterConfig } from './types';
2
- export declare class InternalMediaCenterConfig implements IMediaCenterConfig {
3
- postsPlayer: IMediaCenterConfig['postsPlayer'];
4
- streamPlayer: IMediaCenterConfig['streamPlayer'];
5
- handlers: IMediaCenterConfig['handlers'];
6
- getConfig: IMediaCenterConfig['getConfig'];
7
- private graphql;
8
- constructor(input: {
9
- mediaPageId: string;
10
- initiator?: string;
11
- graphqlOrigin?: string;
12
- testingStuff?: boolean;
13
- });
14
- }
@@ -1,4 +0,0 @@
1
- import type { MediaCenterProps } from './types';
2
- declare const Cmp: import("svelte").Component<MediaCenterProps, {}, "">;
3
- type Cmp = ReturnType<typeof Cmp>;
4
- export default Cmp;
@@ -1,6 +0,0 @@
1
- import { type Locale } from '../../../core/locale';
2
- export declare class DiscoverHeaderLocalization {
3
- membersLabel: (count: number) => string;
4
- locale: Locale;
5
- constructor(locale: Locale);
6
- }
@@ -1,15 +0,0 @@
1
- import {} from '../../../core/locale';
2
- export class DiscoverHeaderLocalization {
3
- membersLabel;
4
- locale;
5
- constructor(locale) {
6
- this.membersLabel = loc.membersLabel[locale];
7
- this.locale = locale;
8
- }
9
- }
10
- const loc = {
11
- membersLabel: {
12
- en: (count) => (count === 1 ? `Member` : `Members`),
13
- no: (count) => (count === 1 ? `Medlem` : `Medlemmer`)
14
- }
15
- };
@@ -1 +0,0 @@
1
- export { InternalPostAnalyticsHandler } from './internal-post-analytics-handler';
@@ -1 +0,0 @@
1
- export { InternalPostAnalyticsHandler } from './internal-post-analytics-handler';
@@ -1 +0,0 @@
1
- export { InternalShortVideoPlayerItemsProvider } from './internal-short-video-player-items-provider';
@@ -1 +0,0 @@
1
- export { InternalShortVideoPlayerItemsProvider } from './internal-short-video-player-items-provider';
@@ -1,86 +0,0 @@
1
- <script lang="ts">let { backgroundDisabled, backgroundImageUrl, backgroundColor, children } = $props();
2
- const styles = $derived.by(() => {
3
- const values = [];
4
- if (backgroundImageUrl) {
5
- values.push(`--with-background--background-image-url: url(${backgroundImageUrl})`);
6
- }
7
- if (backgroundColor) {
8
- values.push(`--with-background--background: ${backgroundColor}`);
9
- }
10
- return values.join(';');
11
- });
12
- export {};
13
- </script>
14
-
15
- <svelte:head>
16
- <meta name="theme-color" content="#242424" />
17
- <meta name="color-scheme" content="dark" />
18
- <meta name="mobile-web-app-capable" content="yes" />
19
- <meta name="apple-mobile-web-app-capable" content="yes" />
20
- <meta name="apple-mobile-web-app-status-bar-style" content="black" />
21
-
22
- <style>
23
- html,
24
- body {
25
- background-color: #242424;
26
- color-scheme: dark;
27
- }
28
- </style>
29
- </svelte:head>
30
-
31
- <div
32
- class="with-background"
33
- class:with-background--background-enabled={!backgroundDisabled}
34
- class:with-background--background-active={!backgroundDisabled && backgroundImageUrl && backgroundImageUrl !== 'not-applicable'}
35
- class:with-background--background-loading={!backgroundDisabled && backgroundImageUrl !== 'not-applicable'}
36
- style={styles}>
37
- {@render children()}
38
- </div>
39
-
40
- <style>@keyframes fadeIn {
41
- 0% {
42
- opacity: 1;
43
- }
44
- 50% {
45
- opacity: 0.4;
46
- }
47
- 100% {
48
- opacity: 1;
49
- }
50
- }
51
- .with-background {
52
- --_with-background--background: var(--with-background--background);
53
- --_with-background--background-image-url: var(--with-background--background-image-url);
54
- width: 100%;
55
- min-width: 100%;
56
- max-width: 100%;
57
- height: 100%;
58
- min-height: 100%;
59
- max-height: 100%;
60
- container-type: inline-size;
61
- display: flex;
62
- flex-direction: column;
63
- position: relative;
64
- }
65
- .with-background:before {
66
- content: "";
67
- position: absolute;
68
- inset: 0;
69
- backdrop-filter: blur(30px);
70
- background-color: var(--_with-background--background);
71
- display: none;
72
- }
73
- .with-background--background-enabled {
74
- background-color: #7d7d7d;
75
- }
76
- .with-background--background-enabled:before {
77
- display: block;
78
- }
79
- .with-background--background-active {
80
- background-image: var(--_with-background--background-image-url);
81
- background-size: cover;
82
- background-blend-mode: multiply;
83
- }
84
- .with-background--background-loading {
85
- background-color: transparent;
86
- }</style>
@@ -1 +0,0 @@
1
- export { default as WithBackground } from './cmp.with-background.svelte';
@@ -1 +0,0 @@
1
- export { default as WithBackground } from './cmp.with-background.svelte';