@streamscloud/kit 0.1.12 → 0.2.0-1772457727942
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/core/toastr/index.d.ts +1 -1
- package/dist/core/toastr/toastr.scss +38 -0
- package/dist/core/toastr/toastr.svelte.d.ts +1 -1
- package/dist/core/toastr/toastr.svelte.js +13 -6
- package/dist/core/toastr/types.d.ts +2 -0
- package/dist/core/transitions/slide-horizontally.js +1 -1
- package/dist/styles/_mixins.scss +3 -2
- package/dist/styles/_transitions.scss +24 -0
- package/dist/styles/reset.css +1 -1
- package/dist/ui/button/resources/button-base.svelte +1 -1
- package/dist/ui/cropper/image-editor-dialog/cmp.image-editor-dialog.svelte +2 -2
- package/dist/ui/dialog/cmp.dialog-container.svelte +12 -12
- package/dist/ui/dialog/cmp.dialog.svelte +1 -1
- package/dist/ui/dialog/dialog-data.d.ts +6 -0
- package/dist/ui/dialog/dialog-mount.d.ts +1 -1
- package/dist/ui/dialog/dialog-mount.js +2 -2
- package/dist/ui/dialog/dialogs.svelte.d.ts +3 -0
- package/dist/ui/dialog/dialogs.svelte.js +21 -2
- package/dist/ui/dialog/index.d.ts +2 -1
- package/dist/ui/dialog/index.js +2 -1
- package/dist/ui/dialog/types.svelte.d.ts +3 -14
- package/dist/ui/dialog/types.svelte.js +3 -18
- package/dist/ui/dropdown/cmp.dropdown.svelte +20 -3
- package/dist/ui/form-group/cmp.form-group-label.svelte +25 -0
- package/dist/ui/form-group/cmp.form-group-label.svelte.d.ts +8 -0
- package/dist/ui/form-group/cmp.form-group-note.svelte +16 -0
- package/dist/ui/form-group/cmp.form-group-note.svelte.d.ts +7 -0
- package/dist/ui/form-group/cmp.form-group.svelte +16 -0
- package/dist/ui/form-group/cmp.form-group.svelte.d.ts +8 -0
- package/dist/ui/form-group/index.d.ts +3 -0
- package/dist/ui/form-group/index.js +3 -0
- package/dist/ui/html-block/cmp.html-block.svelte +112 -0
- package/dist/ui/html-block/cmp.html-block.svelte.d.ts +7 -0
- package/dist/ui/html-block/index.d.ts +1 -0
- package/dist/ui/html-block/index.js +1 -0
- package/dist/ui/media-viewer-dialog/cmp.media-viewer-dialog.svelte +50 -0
- package/dist/ui/media-viewer-dialog/cmp.media-viewer-dialog.svelte.d.ts +9 -0
- package/dist/ui/media-viewer-dialog/index.d.ts +15 -0
- package/dist/ui/media-viewer-dialog/index.js +21 -0
- package/dist/ui/media-viewer-dialog/media-viewer-item.svelte +61 -0
- package/dist/ui/media-viewer-dialog/media-viewer-item.svelte.d.ts +7 -0
- package/dist/ui/media-viewer-dialog/types.d.ts +15 -0
- package/dist/ui/media-viewer-dialog/types.js +1 -0
- package/dist/ui/player/carousel/cmp.carousel.svelte +27 -7
- package/dist/ui/player/carousel/cmp.carousel.svelte.d.ts +3 -1
- package/dist/ui/player/feed-slider/cmp.feed-slider.svelte +3 -5
- package/dist/ui/player/utils/index.d.ts +1 -0
- package/dist/ui/player/utils/index.js +1 -0
- package/dist/ui/player/{feed-slider → utils}/wheel-gestures-adapter.d.ts +6 -2
- package/dist/ui/player/{feed-slider → utils}/wheel-gestures-adapter.js +22 -13
- package/dist/ui/seek-bar/cmp.seek-bar.svelte +1 -1
- package/dist/ui/video/cmp.video.svelte +20 -9
- package/package.json +17 -1
|
@@ -8,10 +8,11 @@ import IconSpeaker from '@fluentui/svg-icons/icons/speaker_2_20_regular.svg?raw'
|
|
|
8
8
|
import IconSpeakerMute from '@fluentui/svg-icons/icons/speaker_mute_20_regular.svg?raw';
|
|
9
9
|
import { untrack } from 'svelte';
|
|
10
10
|
import { fade } from 'svelte/transition';
|
|
11
|
-
let { src, poster, id = randomNanoid(), controls =
|
|
11
|
+
let { src, poster, id = randomNanoid(), controls = false, autoplay = false, loop = false, inert = false, allowPreloading = false, hideSpeaker = false, hidePlayButton = false, intersectionContainer, scrubberPosition = 'bottom', on } = $props();
|
|
12
12
|
let video = $state(null);
|
|
13
13
|
let videoContainerRef = $state(null);
|
|
14
14
|
let showControlsOnHover = $state(false);
|
|
15
|
+
let showProgressOnHover = $state(false);
|
|
15
16
|
let isVideoPaused = $state(true);
|
|
16
17
|
let percentageCompleted = $state(0);
|
|
17
18
|
let everActivated = $state(false);
|
|
@@ -57,6 +58,7 @@ $effect(() => untrack(() => {
|
|
|
57
58
|
PlaybackManager.unregisterPlayer(id);
|
|
58
59
|
};
|
|
59
60
|
}));
|
|
61
|
+
let latestEntry = null;
|
|
60
62
|
// Intersection observer for lazy loading and autoplay-on-appearance
|
|
61
63
|
$effect(() => {
|
|
62
64
|
if (!videoContainerRef) {
|
|
@@ -69,12 +71,13 @@ $effect(() => {
|
|
|
69
71
|
return;
|
|
70
72
|
}
|
|
71
73
|
const [entry] = entries;
|
|
74
|
+
latestEntry = entry;
|
|
72
75
|
if ((entry.isIntersecting || allowPreloading) && !video.src) {
|
|
73
76
|
video.src = src;
|
|
74
77
|
video.load();
|
|
75
78
|
if (autoplayState === true) {
|
|
76
79
|
const handleCanPlay = () => {
|
|
77
|
-
if (
|
|
80
|
+
if (latestEntry?.isIntersecting) {
|
|
78
81
|
void play();
|
|
79
82
|
autoplayState = false;
|
|
80
83
|
}
|
|
@@ -95,7 +98,7 @@ $effect(() => {
|
|
|
95
98
|
}
|
|
96
99
|
if (entry.intersectionRatio >= 0.6) {
|
|
97
100
|
const handleCanPlay = () => {
|
|
98
|
-
if (
|
|
101
|
+
if (latestEntry && latestEntry.intersectionRatio >= 0.6) {
|
|
99
102
|
void play();
|
|
100
103
|
}
|
|
101
104
|
};
|
|
@@ -246,7 +249,13 @@ const handleSeek = (percent) => {
|
|
|
246
249
|
<img class="video__poster" src={poster} alt="" />
|
|
247
250
|
{/if}
|
|
248
251
|
{#if !controls || !everActivated}
|
|
249
|
-
<div
|
|
252
|
+
<div
|
|
253
|
+
class="video__overlay"
|
|
254
|
+
onclick={togglePlay}
|
|
255
|
+
onkeydown={() => ({})}
|
|
256
|
+
onmouseenter={() => (showControlsOnHover = true)}
|
|
257
|
+
onmouseleave={() => (showControlsOnHover = false)}
|
|
258
|
+
role="none">
|
|
250
259
|
{#if isVideoPaused && !hidePlayButton}
|
|
251
260
|
<button type="button" aria-label="play" class="video__playback-button" onclick={togglePlay} onkeydown={() => ({})}>
|
|
252
261
|
<Icon src={IconPlay} color="white" />
|
|
@@ -256,6 +265,7 @@ const handleSeek = (percent) => {
|
|
|
256
265
|
<Icon src={IconPause} color="white" />
|
|
257
266
|
</button>
|
|
258
267
|
{/if}
|
|
268
|
+
|
|
259
269
|
{#if (showControlsOnHover || MediaVolumeManager.isMuted) && !hideSpeaker}
|
|
260
270
|
<button type="button" aria-label={MediaVolumeManager.isMuted ? 'mute' : 'unmute'} class="video__mute-button" onclick={toggleMute}>
|
|
261
271
|
{#if MediaVolumeManager.isMuted}
|
|
@@ -271,10 +281,10 @@ const handleSeek = (percent) => {
|
|
|
271
281
|
class="video__progress-container"
|
|
272
282
|
class:video__progress-container--top={scrubberPosition === 'top'}
|
|
273
283
|
class:video__progress-container--bottom={scrubberPosition === 'bottom'}
|
|
274
|
-
onmouseenter={() => (
|
|
275
|
-
onmouseleave={() => (
|
|
284
|
+
onmouseenter={() => (showProgressOnHover = true)}
|
|
285
|
+
onmouseleave={() => (showProgressOnHover = false)}
|
|
276
286
|
role="none">
|
|
277
|
-
{#if
|
|
287
|
+
{#if showProgressOnHover || (!showProgressOnHover && isVideoPaused)}
|
|
278
288
|
<div
|
|
279
289
|
class="video__seek-bar"
|
|
280
290
|
transition:fade={{ duration: isVideoPaused ? 0 : 300 }}
|
|
@@ -321,12 +331,12 @@ A full-featured video player with custom overlay controls, play/pause, mute, see
|
|
|
321
331
|
background: var(--_video--background-color);
|
|
322
332
|
}
|
|
323
333
|
.video__playback-button {
|
|
334
|
+
--sc-kit--icon--size: 2.5rem;
|
|
324
335
|
--sc-kit--icon--filter: drop-shadow(1px 1px #000000);
|
|
325
336
|
position: absolute;
|
|
326
337
|
top: 50%;
|
|
327
338
|
left: 50%;
|
|
328
339
|
transform: translate(-50%, -50%);
|
|
329
|
-
font-size: 2em;
|
|
330
340
|
}
|
|
331
341
|
.video__playback-button--pause {
|
|
332
342
|
/* Set 'container-type: inline-size;' to reference container*/
|
|
@@ -337,10 +347,11 @@ A full-featured video player with custom overlay controls, play/pause, mute, see
|
|
|
337
347
|
}
|
|
338
348
|
}
|
|
339
349
|
.video__mute-button {
|
|
350
|
+
--sc-kit--icon--size: 1.25rem;
|
|
351
|
+
--sc-kit--icon--filter: drop-shadow(1px 1px #000000);
|
|
340
352
|
position: absolute;
|
|
341
353
|
top: 0.625em;
|
|
342
354
|
right: 0.625em;
|
|
343
|
-
font-size: 1em;
|
|
344
355
|
z-index: 1;
|
|
345
356
|
}
|
|
346
357
|
.video__poster {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@streamscloud/kit",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0-1772457727942",
|
|
4
4
|
"author": "StreamsCloud",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
"pack": "npm run build && npm pack",
|
|
18
18
|
"preview": "vite preview",
|
|
19
19
|
"check": "svelte-check --tsconfig ./tsconfig.app.json && tsc -p tsconfig.node.json",
|
|
20
|
+
"check:strict": "svelte-check --tsconfig ./tsconfig.app.json --fail-on-warnings --output machine && eslint . --format codeframe --max-warnings 0 && prettier --check --plugin prettier-plugin-svelte --cache .",
|
|
20
21
|
"lint": "prettier --check --plugin prettier-plugin-svelte . && eslint .",
|
|
21
22
|
"lint-format": "prettier --write --plugin prettier-plugin-svelte . && eslint --fix .",
|
|
22
23
|
"format": "prettier --write --plugin prettier-plugin-svelte ."
|
|
@@ -104,6 +105,10 @@
|
|
|
104
105
|
"types": "./dist/ui/dialog/index.d.ts",
|
|
105
106
|
"svelte": "./dist/ui/dialog/index.js"
|
|
106
107
|
},
|
|
108
|
+
"./ui/form-group": {
|
|
109
|
+
"types": "./dist/ui/form-group/index.d.ts",
|
|
110
|
+
"svelte": "./dist/ui/form-group/index.js"
|
|
111
|
+
},
|
|
107
112
|
"./ui/dropdown": {
|
|
108
113
|
"types": "./dist/ui/dropdown/index.d.ts",
|
|
109
114
|
"svelte": "./dist/ui/dropdown/index.js"
|
|
@@ -112,6 +117,10 @@
|
|
|
112
117
|
"types": "./dist/ui/dynamic-component/index.d.ts",
|
|
113
118
|
"svelte": "./dist/ui/dynamic-component/index.js"
|
|
114
119
|
},
|
|
120
|
+
"./ui/html-block": {
|
|
121
|
+
"types": "./dist/ui/html-block/index.d.ts",
|
|
122
|
+
"svelte": "./dist/ui/html-block/index.js"
|
|
123
|
+
},
|
|
115
124
|
"./ui/icon": {
|
|
116
125
|
"types": "./dist/ui/icon/index.d.ts",
|
|
117
126
|
"svelte": "./dist/ui/icon/index.js"
|
|
@@ -144,6 +153,10 @@
|
|
|
144
153
|
"types": "./dist/ui/media-playback/index.d.ts",
|
|
145
154
|
"svelte": "./dist/ui/media-playback/index.js"
|
|
146
155
|
},
|
|
156
|
+
"./ui/media-viewer-dialog": {
|
|
157
|
+
"types": "./dist/ui/media-viewer-dialog/index.d.ts",
|
|
158
|
+
"svelte": "./dist/ui/media-viewer-dialog/index.js"
|
|
159
|
+
},
|
|
147
160
|
"./ui/player/buttons": {
|
|
148
161
|
"types": "./dist/ui/player/buttons/index.d.ts",
|
|
149
162
|
"svelte": "./dist/ui/player/buttons/index.js"
|
|
@@ -203,6 +216,9 @@
|
|
|
203
216
|
},
|
|
204
217
|
"./styles/theme": {
|
|
205
218
|
"sass": "./dist/styles/_theme.scss"
|
|
219
|
+
},
|
|
220
|
+
"./styles/transitions": {
|
|
221
|
+
"sass": "./dist/styles/_transitions.scss"
|
|
206
222
|
}
|
|
207
223
|
},
|
|
208
224
|
"dependencies": {
|