@clyrex-digital/clyrex-controls-dev 0.8.1-dev.20260923125229 → 0.8.1-dev.20260924103055
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.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"use client";
|
|
4
4
|
|
|
5
5
|
// src/components/Slider.tsx
|
|
6
|
-
import React, { useState, useEffect, Children, cloneElement } from "react";
|
|
6
|
+
import React, { useState, useEffect, Children, cloneElement, useRef } from "react";
|
|
7
7
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
8
8
|
var Slider = ({
|
|
9
9
|
children,
|
|
@@ -32,6 +32,9 @@ var Slider = ({
|
|
|
32
32
|
typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
|
|
33
33
|
);
|
|
34
34
|
const [isPlaying, setIsPlaying] = useState(autoplay);
|
|
35
|
+
const trackRef = useRef(null);
|
|
36
|
+
console.log("trackRef:", trackRef);
|
|
37
|
+
const [videoProgress, setVideoProgress] = useState(null);
|
|
35
38
|
useEffect(() => {
|
|
36
39
|
if (typeof initialSlidesToShow === "number") {
|
|
37
40
|
setSlidesToShowState(initialSlidesToShow);
|
|
@@ -52,6 +55,42 @@ var Slider = ({
|
|
|
52
55
|
}, [initialSlidesToShow]);
|
|
53
56
|
useEffect(() => {
|
|
54
57
|
if (!autoplay) return;
|
|
58
|
+
const activeSlideElement = trackRef.current?.children[currentSlide];
|
|
59
|
+
const videoElement = activeSlideElement?.querySelector("video");
|
|
60
|
+
if (videoElement) {
|
|
61
|
+
videoElement.loop = false;
|
|
62
|
+
setVideoProgress(0);
|
|
63
|
+
if (videoElement.ended) {
|
|
64
|
+
videoElement.currentTime = 0;
|
|
65
|
+
}
|
|
66
|
+
videoElement.play().catch(() => {
|
|
67
|
+
});
|
|
68
|
+
const handleTimeUpdate = () => {
|
|
69
|
+
if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
|
|
70
|
+
const pct = videoElement.currentTime / videoElement.duration * 100;
|
|
71
|
+
setVideoProgress(pct);
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const handleVideoEnded = () => {
|
|
75
|
+
setVideoProgress(100);
|
|
76
|
+
nextSlide();
|
|
77
|
+
};
|
|
78
|
+
const handleVideoError = () => {
|
|
79
|
+
nextSlide();
|
|
80
|
+
};
|
|
81
|
+
videoElement.addEventListener("timeupdate", handleTimeUpdate);
|
|
82
|
+
videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
|
|
83
|
+
videoElement.addEventListener("ended", handleVideoEnded, { once: true });
|
|
84
|
+
videoElement.addEventListener("error", handleVideoError, { once: true });
|
|
85
|
+
return () => {
|
|
86
|
+
videoElement.removeEventListener("timeupdate", handleTimeUpdate);
|
|
87
|
+
videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
|
|
88
|
+
videoElement.removeEventListener("ended", handleVideoEnded);
|
|
89
|
+
videoElement.removeEventListener("error", handleVideoError);
|
|
90
|
+
videoElement.pause();
|
|
91
|
+
setVideoProgress(null);
|
|
92
|
+
};
|
|
93
|
+
}
|
|
55
94
|
const timer = setInterval(() => {
|
|
56
95
|
if (isPlaying) {
|
|
57
96
|
nextSlide();
|
|
@@ -148,7 +187,8 @@ var Slider = ({
|
|
|
148
187
|
activeClassName: dotActiveClassName,
|
|
149
188
|
inactiveClassName: dotInactiveClassName,
|
|
150
189
|
currentSlide,
|
|
151
|
-
totalSlides
|
|
190
|
+
totalSlides,
|
|
191
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
152
192
|
},
|
|
153
193
|
index
|
|
154
194
|
)) }),
|
|
@@ -162,6 +202,7 @@ var Slider = ({
|
|
|
162
202
|
/* @__PURE__ */ jsx(
|
|
163
203
|
"div",
|
|
164
204
|
{
|
|
205
|
+
ref: trackRef,
|
|
165
206
|
className: "flex h-full",
|
|
166
207
|
style: {
|
|
167
208
|
transition: transition ? "transform 0.5s ease" : "none",
|
|
@@ -207,7 +248,8 @@ var Slider = ({
|
|
|
207
248
|
activeClassName: dotActiveClassName,
|
|
208
249
|
inactiveClassName: dotInactiveClassName,
|
|
209
250
|
currentSlide,
|
|
210
|
-
totalSlides
|
|
251
|
+
totalSlides,
|
|
252
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
211
253
|
},
|
|
212
254
|
index
|
|
213
255
|
)) })
|
|
@@ -243,7 +285,8 @@ var ProgressPill = ({
|
|
|
243
285
|
activeClassName = "",
|
|
244
286
|
inactiveClassName = "",
|
|
245
287
|
currentSlide,
|
|
246
|
-
totalSlides
|
|
288
|
+
totalSlides,
|
|
289
|
+
customProgress = null
|
|
247
290
|
}) => {
|
|
248
291
|
const [progress, setProgress] = useState(0);
|
|
249
292
|
useEffect(() => {
|
|
@@ -252,7 +295,7 @@ var ProgressPill = ({
|
|
|
252
295
|
}
|
|
253
296
|
}, [active, index]);
|
|
254
297
|
useEffect(() => {
|
|
255
|
-
if (!active || !isPlaying) {
|
|
298
|
+
if (!active || !isPlaying || customProgress !== null) {
|
|
256
299
|
if (!active) {
|
|
257
300
|
setProgress(0);
|
|
258
301
|
}
|
|
@@ -270,7 +313,7 @@ var ProgressPill = ({
|
|
|
270
313
|
}
|
|
271
314
|
}, 50);
|
|
272
315
|
return () => clearInterval(interval);
|
|
273
|
-
}, [active, isPlaying, duration, index]);
|
|
316
|
+
}, [active, isPlaying, duration, index, customProgress]);
|
|
274
317
|
const isFilled = index < currentSlide;
|
|
275
318
|
const isActive = index === currentSlide;
|
|
276
319
|
const shouldShowProgress = isActive || style === "cumulative" && isFilled;
|
|
@@ -305,7 +348,7 @@ var ProgressPill = ({
|
|
|
305
348
|
};
|
|
306
349
|
const renderProgressBar = () => {
|
|
307
350
|
if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
|
|
308
|
-
const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
|
|
351
|
+
const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
|
|
309
352
|
return /* @__PURE__ */ jsx(
|
|
310
353
|
"div",
|
|
311
354
|
{
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
// src/components/Slider.tsx
|
|
4
|
-
import React, { useState, useEffect, Children, cloneElement } from "react";
|
|
4
|
+
import React, { useState, useEffect, Children, cloneElement, useRef } from "react";
|
|
5
5
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
6
6
|
var Slider = ({
|
|
7
7
|
children,
|
|
@@ -30,6 +30,9 @@ var Slider = ({
|
|
|
30
30
|
typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
|
|
31
31
|
);
|
|
32
32
|
const [isPlaying, setIsPlaying] = useState(autoplay);
|
|
33
|
+
const trackRef = useRef(null);
|
|
34
|
+
console.log("trackRef:", trackRef);
|
|
35
|
+
const [videoProgress, setVideoProgress] = useState(null);
|
|
33
36
|
useEffect(() => {
|
|
34
37
|
if (typeof initialSlidesToShow === "number") {
|
|
35
38
|
setSlidesToShowState(initialSlidesToShow);
|
|
@@ -50,6 +53,42 @@ var Slider = ({
|
|
|
50
53
|
}, [initialSlidesToShow]);
|
|
51
54
|
useEffect(() => {
|
|
52
55
|
if (!autoplay) return;
|
|
56
|
+
const activeSlideElement = trackRef.current?.children[currentSlide];
|
|
57
|
+
const videoElement = activeSlideElement?.querySelector("video");
|
|
58
|
+
if (videoElement) {
|
|
59
|
+
videoElement.loop = false;
|
|
60
|
+
setVideoProgress(0);
|
|
61
|
+
if (videoElement.ended) {
|
|
62
|
+
videoElement.currentTime = 0;
|
|
63
|
+
}
|
|
64
|
+
videoElement.play().catch(() => {
|
|
65
|
+
});
|
|
66
|
+
const handleTimeUpdate = () => {
|
|
67
|
+
if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
|
|
68
|
+
const pct = videoElement.currentTime / videoElement.duration * 100;
|
|
69
|
+
setVideoProgress(pct);
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const handleVideoEnded = () => {
|
|
73
|
+
setVideoProgress(100);
|
|
74
|
+
nextSlide();
|
|
75
|
+
};
|
|
76
|
+
const handleVideoError = () => {
|
|
77
|
+
nextSlide();
|
|
78
|
+
};
|
|
79
|
+
videoElement.addEventListener("timeupdate", handleTimeUpdate);
|
|
80
|
+
videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
|
|
81
|
+
videoElement.addEventListener("ended", handleVideoEnded, { once: true });
|
|
82
|
+
videoElement.addEventListener("error", handleVideoError, { once: true });
|
|
83
|
+
return () => {
|
|
84
|
+
videoElement.removeEventListener("timeupdate", handleTimeUpdate);
|
|
85
|
+
videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
|
|
86
|
+
videoElement.removeEventListener("ended", handleVideoEnded);
|
|
87
|
+
videoElement.removeEventListener("error", handleVideoError);
|
|
88
|
+
videoElement.pause();
|
|
89
|
+
setVideoProgress(null);
|
|
90
|
+
};
|
|
91
|
+
}
|
|
53
92
|
const timer = setInterval(() => {
|
|
54
93
|
if (isPlaying) {
|
|
55
94
|
nextSlide();
|
|
@@ -146,7 +185,8 @@ var Slider = ({
|
|
|
146
185
|
activeClassName: dotActiveClassName,
|
|
147
186
|
inactiveClassName: dotInactiveClassName,
|
|
148
187
|
currentSlide,
|
|
149
|
-
totalSlides
|
|
188
|
+
totalSlides,
|
|
189
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
150
190
|
},
|
|
151
191
|
index
|
|
152
192
|
)) }),
|
|
@@ -160,6 +200,7 @@ var Slider = ({
|
|
|
160
200
|
/* @__PURE__ */ jsx(
|
|
161
201
|
"div",
|
|
162
202
|
{
|
|
203
|
+
ref: trackRef,
|
|
163
204
|
className: "flex h-full",
|
|
164
205
|
style: {
|
|
165
206
|
transition: transition ? "transform 0.5s ease" : "none",
|
|
@@ -205,7 +246,8 @@ var Slider = ({
|
|
|
205
246
|
activeClassName: dotActiveClassName,
|
|
206
247
|
inactiveClassName: dotInactiveClassName,
|
|
207
248
|
currentSlide,
|
|
208
|
-
totalSlides
|
|
249
|
+
totalSlides,
|
|
250
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
209
251
|
},
|
|
210
252
|
index
|
|
211
253
|
)) })
|
|
@@ -241,7 +283,8 @@ var ProgressPill = ({
|
|
|
241
283
|
activeClassName = "",
|
|
242
284
|
inactiveClassName = "",
|
|
243
285
|
currentSlide,
|
|
244
|
-
totalSlides
|
|
286
|
+
totalSlides,
|
|
287
|
+
customProgress = null
|
|
245
288
|
}) => {
|
|
246
289
|
const [progress, setProgress] = useState(0);
|
|
247
290
|
useEffect(() => {
|
|
@@ -250,7 +293,7 @@ var ProgressPill = ({
|
|
|
250
293
|
}
|
|
251
294
|
}, [active, index]);
|
|
252
295
|
useEffect(() => {
|
|
253
|
-
if (!active || !isPlaying) {
|
|
296
|
+
if (!active || !isPlaying || customProgress !== null) {
|
|
254
297
|
if (!active) {
|
|
255
298
|
setProgress(0);
|
|
256
299
|
}
|
|
@@ -268,7 +311,7 @@ var ProgressPill = ({
|
|
|
268
311
|
}
|
|
269
312
|
}, 50);
|
|
270
313
|
return () => clearInterval(interval);
|
|
271
|
-
}, [active, isPlaying, duration, index]);
|
|
314
|
+
}, [active, isPlaying, duration, index, customProgress]);
|
|
272
315
|
const isFilled = index < currentSlide;
|
|
273
316
|
const isActive = index === currentSlide;
|
|
274
317
|
const shouldShowProgress = isActive || style === "cumulative" && isFilled;
|
|
@@ -303,7 +346,7 @@ var ProgressPill = ({
|
|
|
303
346
|
};
|
|
304
347
|
const renderProgressBar = () => {
|
|
305
348
|
if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
|
|
306
|
-
const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
|
|
349
|
+
const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
|
|
307
350
|
return /* @__PURE__ */ jsx(
|
|
308
351
|
"div",
|
|
309
352
|
{
|
package/dist/index.js
CHANGED
|
@@ -6096,6 +6096,9 @@ var init_Slider = __esm({
|
|
|
6096
6096
|
typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
|
|
6097
6097
|
);
|
|
6098
6098
|
const [isPlaying, setIsPlaying] = (0, import_react60.useState)(autoplay);
|
|
6099
|
+
const trackRef = (0, import_react60.useRef)(null);
|
|
6100
|
+
console.log("trackRef:", trackRef);
|
|
6101
|
+
const [videoProgress, setVideoProgress] = (0, import_react60.useState)(null);
|
|
6099
6102
|
(0, import_react60.useEffect)(() => {
|
|
6100
6103
|
if (typeof initialSlidesToShow === "number") {
|
|
6101
6104
|
setSlidesToShowState(initialSlidesToShow);
|
|
@@ -6116,6 +6119,42 @@ var init_Slider = __esm({
|
|
|
6116
6119
|
}, [initialSlidesToShow]);
|
|
6117
6120
|
(0, import_react60.useEffect)(() => {
|
|
6118
6121
|
if (!autoplay) return;
|
|
6122
|
+
const activeSlideElement = trackRef.current?.children[currentSlide];
|
|
6123
|
+
const videoElement = activeSlideElement?.querySelector("video");
|
|
6124
|
+
if (videoElement) {
|
|
6125
|
+
videoElement.loop = false;
|
|
6126
|
+
setVideoProgress(0);
|
|
6127
|
+
if (videoElement.ended) {
|
|
6128
|
+
videoElement.currentTime = 0;
|
|
6129
|
+
}
|
|
6130
|
+
videoElement.play().catch(() => {
|
|
6131
|
+
});
|
|
6132
|
+
const handleTimeUpdate = () => {
|
|
6133
|
+
if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
|
|
6134
|
+
const pct = videoElement.currentTime / videoElement.duration * 100;
|
|
6135
|
+
setVideoProgress(pct);
|
|
6136
|
+
}
|
|
6137
|
+
};
|
|
6138
|
+
const handleVideoEnded = () => {
|
|
6139
|
+
setVideoProgress(100);
|
|
6140
|
+
nextSlide();
|
|
6141
|
+
};
|
|
6142
|
+
const handleVideoError = () => {
|
|
6143
|
+
nextSlide();
|
|
6144
|
+
};
|
|
6145
|
+
videoElement.addEventListener("timeupdate", handleTimeUpdate);
|
|
6146
|
+
videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
|
|
6147
|
+
videoElement.addEventListener("ended", handleVideoEnded, { once: true });
|
|
6148
|
+
videoElement.addEventListener("error", handleVideoError, { once: true });
|
|
6149
|
+
return () => {
|
|
6150
|
+
videoElement.removeEventListener("timeupdate", handleTimeUpdate);
|
|
6151
|
+
videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
|
|
6152
|
+
videoElement.removeEventListener("ended", handleVideoEnded);
|
|
6153
|
+
videoElement.removeEventListener("error", handleVideoError);
|
|
6154
|
+
videoElement.pause();
|
|
6155
|
+
setVideoProgress(null);
|
|
6156
|
+
};
|
|
6157
|
+
}
|
|
6119
6158
|
const timer = setInterval(() => {
|
|
6120
6159
|
if (isPlaying) {
|
|
6121
6160
|
nextSlide();
|
|
@@ -6212,7 +6251,8 @@ var init_Slider = __esm({
|
|
|
6212
6251
|
activeClassName: dotActiveClassName,
|
|
6213
6252
|
inactiveClassName: dotInactiveClassName,
|
|
6214
6253
|
currentSlide,
|
|
6215
|
-
totalSlides
|
|
6254
|
+
totalSlides,
|
|
6255
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
6216
6256
|
},
|
|
6217
6257
|
index
|
|
6218
6258
|
)) }),
|
|
@@ -6226,6 +6266,7 @@ var init_Slider = __esm({
|
|
|
6226
6266
|
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
6227
6267
|
"div",
|
|
6228
6268
|
{
|
|
6269
|
+
ref: trackRef,
|
|
6229
6270
|
className: "flex h-full",
|
|
6230
6271
|
style: {
|
|
6231
6272
|
transition: transition ? "transform 0.5s ease" : "none",
|
|
@@ -6271,7 +6312,8 @@ var init_Slider = __esm({
|
|
|
6271
6312
|
activeClassName: dotActiveClassName,
|
|
6272
6313
|
inactiveClassName: dotInactiveClassName,
|
|
6273
6314
|
currentSlide,
|
|
6274
|
-
totalSlides
|
|
6315
|
+
totalSlides,
|
|
6316
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
6275
6317
|
},
|
|
6276
6318
|
index
|
|
6277
6319
|
)) })
|
|
@@ -6307,7 +6349,8 @@ var init_Slider = __esm({
|
|
|
6307
6349
|
activeClassName = "",
|
|
6308
6350
|
inactiveClassName = "",
|
|
6309
6351
|
currentSlide,
|
|
6310
|
-
totalSlides
|
|
6352
|
+
totalSlides,
|
|
6353
|
+
customProgress = null
|
|
6311
6354
|
}) => {
|
|
6312
6355
|
const [progress, setProgress] = (0, import_react60.useState)(0);
|
|
6313
6356
|
(0, import_react60.useEffect)(() => {
|
|
@@ -6316,7 +6359,7 @@ var init_Slider = __esm({
|
|
|
6316
6359
|
}
|
|
6317
6360
|
}, [active, index]);
|
|
6318
6361
|
(0, import_react60.useEffect)(() => {
|
|
6319
|
-
if (!active || !isPlaying) {
|
|
6362
|
+
if (!active || !isPlaying || customProgress !== null) {
|
|
6320
6363
|
if (!active) {
|
|
6321
6364
|
setProgress(0);
|
|
6322
6365
|
}
|
|
@@ -6334,7 +6377,7 @@ var init_Slider = __esm({
|
|
|
6334
6377
|
}
|
|
6335
6378
|
}, 50);
|
|
6336
6379
|
return () => clearInterval(interval);
|
|
6337
|
-
}, [active, isPlaying, duration, index]);
|
|
6380
|
+
}, [active, isPlaying, duration, index, customProgress]);
|
|
6338
6381
|
const isFilled = index < currentSlide;
|
|
6339
6382
|
const isActive = index === currentSlide;
|
|
6340
6383
|
const shouldShowProgress = isActive || style === "cumulative" && isFilled;
|
|
@@ -6369,7 +6412,7 @@ var init_Slider = __esm({
|
|
|
6369
6412
|
};
|
|
6370
6413
|
const renderProgressBar = () => {
|
|
6371
6414
|
if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
|
|
6372
|
-
const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
|
|
6415
|
+
const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
|
|
6373
6416
|
return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
6374
6417
|
"div",
|
|
6375
6418
|
{
|
package/dist/index.mjs
CHANGED
|
@@ -2423,7 +2423,7 @@ var Pagination = dynamic13(() => import("./Pagination-STOHS3LO.mjs"), { ssr: tru
|
|
|
2423
2423
|
var DataBindingControls = dynamic13(() => import("./DataBindingControls-SLNZLI3I.mjs"), {
|
|
2424
2424
|
ssr: true
|
|
2425
2425
|
});
|
|
2426
|
-
var Slider = dynamic13(() => import("./Slider-
|
|
2426
|
+
var Slider = dynamic13(() => import("./Slider-42T6THEQ.mjs"), {
|
|
2427
2427
|
ssr: false
|
|
2428
2428
|
});
|
|
2429
2429
|
function toCamelCase(str) {
|
package/dist/server.js
CHANGED
|
@@ -6094,6 +6094,9 @@ var init_Slider = __esm({
|
|
|
6094
6094
|
typeof initialSlidesToShow === "number" ? initialSlidesToShow : initialSlidesToShow.large
|
|
6095
6095
|
);
|
|
6096
6096
|
const [isPlaying, setIsPlaying] = (0, import_react60.useState)(autoplay);
|
|
6097
|
+
const trackRef = (0, import_react60.useRef)(null);
|
|
6098
|
+
console.log("trackRef:", trackRef);
|
|
6099
|
+
const [videoProgress, setVideoProgress] = (0, import_react60.useState)(null);
|
|
6097
6100
|
(0, import_react60.useEffect)(() => {
|
|
6098
6101
|
if (typeof initialSlidesToShow === "number") {
|
|
6099
6102
|
setSlidesToShowState(initialSlidesToShow);
|
|
@@ -6114,6 +6117,42 @@ var init_Slider = __esm({
|
|
|
6114
6117
|
}, [initialSlidesToShow]);
|
|
6115
6118
|
(0, import_react60.useEffect)(() => {
|
|
6116
6119
|
if (!autoplay) return;
|
|
6120
|
+
const activeSlideElement = trackRef.current?.children[currentSlide];
|
|
6121
|
+
const videoElement = activeSlideElement?.querySelector("video");
|
|
6122
|
+
if (videoElement) {
|
|
6123
|
+
videoElement.loop = false;
|
|
6124
|
+
setVideoProgress(0);
|
|
6125
|
+
if (videoElement.ended) {
|
|
6126
|
+
videoElement.currentTime = 0;
|
|
6127
|
+
}
|
|
6128
|
+
videoElement.play().catch(() => {
|
|
6129
|
+
});
|
|
6130
|
+
const handleTimeUpdate = () => {
|
|
6131
|
+
if (videoElement.duration && !isNaN(videoElement.duration) && videoElement.duration > 0) {
|
|
6132
|
+
const pct = videoElement.currentTime / videoElement.duration * 100;
|
|
6133
|
+
setVideoProgress(pct);
|
|
6134
|
+
}
|
|
6135
|
+
};
|
|
6136
|
+
const handleVideoEnded = () => {
|
|
6137
|
+
setVideoProgress(100);
|
|
6138
|
+
nextSlide();
|
|
6139
|
+
};
|
|
6140
|
+
const handleVideoError = () => {
|
|
6141
|
+
nextSlide();
|
|
6142
|
+
};
|
|
6143
|
+
videoElement.addEventListener("timeupdate", handleTimeUpdate);
|
|
6144
|
+
videoElement.addEventListener("loadedmetadata", handleTimeUpdate);
|
|
6145
|
+
videoElement.addEventListener("ended", handleVideoEnded, { once: true });
|
|
6146
|
+
videoElement.addEventListener("error", handleVideoError, { once: true });
|
|
6147
|
+
return () => {
|
|
6148
|
+
videoElement.removeEventListener("timeupdate", handleTimeUpdate);
|
|
6149
|
+
videoElement.removeEventListener("loadedmetadata", handleTimeUpdate);
|
|
6150
|
+
videoElement.removeEventListener("ended", handleVideoEnded);
|
|
6151
|
+
videoElement.removeEventListener("error", handleVideoError);
|
|
6152
|
+
videoElement.pause();
|
|
6153
|
+
setVideoProgress(null);
|
|
6154
|
+
};
|
|
6155
|
+
}
|
|
6117
6156
|
const timer = setInterval(() => {
|
|
6118
6157
|
if (isPlaying) {
|
|
6119
6158
|
nextSlide();
|
|
@@ -6210,7 +6249,8 @@ var init_Slider = __esm({
|
|
|
6210
6249
|
activeClassName: dotActiveClassName,
|
|
6211
6250
|
inactiveClassName: dotInactiveClassName,
|
|
6212
6251
|
currentSlide,
|
|
6213
|
-
totalSlides
|
|
6252
|
+
totalSlides,
|
|
6253
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
6214
6254
|
},
|
|
6215
6255
|
index
|
|
6216
6256
|
)) }),
|
|
@@ -6224,6 +6264,7 @@ var init_Slider = __esm({
|
|
|
6224
6264
|
/* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
6225
6265
|
"div",
|
|
6226
6266
|
{
|
|
6267
|
+
ref: trackRef,
|
|
6227
6268
|
className: "flex h-full",
|
|
6228
6269
|
style: {
|
|
6229
6270
|
transition: transition ? "transform 0.5s ease" : "none",
|
|
@@ -6269,7 +6310,8 @@ var init_Slider = __esm({
|
|
|
6269
6310
|
activeClassName: dotActiveClassName,
|
|
6270
6311
|
inactiveClassName: dotInactiveClassName,
|
|
6271
6312
|
currentSlide,
|
|
6272
|
-
totalSlides
|
|
6313
|
+
totalSlides,
|
|
6314
|
+
customProgress: index === currentSlide ? videoProgress : null
|
|
6273
6315
|
},
|
|
6274
6316
|
index
|
|
6275
6317
|
)) })
|
|
@@ -6305,7 +6347,8 @@ var init_Slider = __esm({
|
|
|
6305
6347
|
activeClassName = "",
|
|
6306
6348
|
inactiveClassName = "",
|
|
6307
6349
|
currentSlide,
|
|
6308
|
-
totalSlides
|
|
6350
|
+
totalSlides,
|
|
6351
|
+
customProgress = null
|
|
6309
6352
|
}) => {
|
|
6310
6353
|
const [progress, setProgress] = (0, import_react60.useState)(0);
|
|
6311
6354
|
(0, import_react60.useEffect)(() => {
|
|
@@ -6314,7 +6357,7 @@ var init_Slider = __esm({
|
|
|
6314
6357
|
}
|
|
6315
6358
|
}, [active, index]);
|
|
6316
6359
|
(0, import_react60.useEffect)(() => {
|
|
6317
|
-
if (!active || !isPlaying) {
|
|
6360
|
+
if (!active || !isPlaying || customProgress !== null) {
|
|
6318
6361
|
if (!active) {
|
|
6319
6362
|
setProgress(0);
|
|
6320
6363
|
}
|
|
@@ -6332,7 +6375,7 @@ var init_Slider = __esm({
|
|
|
6332
6375
|
}
|
|
6333
6376
|
}, 50);
|
|
6334
6377
|
return () => clearInterval(interval);
|
|
6335
|
-
}, [active, isPlaying, duration, index]);
|
|
6378
|
+
}, [active, isPlaying, duration, index, customProgress]);
|
|
6336
6379
|
const isFilled = index < currentSlide;
|
|
6337
6380
|
const isActive = index === currentSlide;
|
|
6338
6381
|
const shouldShowProgress = isActive || style === "cumulative" && isFilled;
|
|
@@ -6367,7 +6410,7 @@ var init_Slider = __esm({
|
|
|
6367
6410
|
};
|
|
6368
6411
|
const renderProgressBar = () => {
|
|
6369
6412
|
if (style === "modern" && isActive || style === "cumulative" && shouldShowProgress) {
|
|
6370
|
-
const displayProgress = style === "cumulative" && isFilled ? 100 : progress;
|
|
6413
|
+
const displayProgress = style === "cumulative" && isFilled ? 100 : customProgress !== null && customProgress !== void 0 ? customProgress : progress;
|
|
6371
6414
|
return /* @__PURE__ */ (0, import_jsx_runtime87.jsx)(
|
|
6372
6415
|
"div",
|
|
6373
6416
|
{
|
package/dist/server.mjs
CHANGED
|
@@ -2391,7 +2391,7 @@ var Pagination = dynamic13(() => import("./Pagination-V53JCR6P.mjs"), { ssr: tru
|
|
|
2391
2391
|
var DataBindingControls = dynamic13(() => import("./DataBindingControls-UDRT7JFF.mjs"), {
|
|
2392
2392
|
ssr: true
|
|
2393
2393
|
});
|
|
2394
|
-
var Slider = dynamic13(() => import("./Slider-
|
|
2394
|
+
var Slider = dynamic13(() => import("./Slider-UNNVADVP.mjs"), {
|
|
2395
2395
|
ssr: false
|
|
2396
2396
|
});
|
|
2397
2397
|
function toCamelCase(str) {
|