funuicss 2.6.1 → 2.6.3
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/css/fun.css +287 -71
- package/hooks/useHls.d.ts +8 -0
- package/hooks/useHls.js +105 -0
- package/hooks/useHls.tsx +69 -0
- package/index.d.ts +1 -0
- package/index.js +3 -1
- package/index.tsx +2 -1
- package/package.json +5 -2
- package/tsconfig.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/ui/alert/Alert.js +2 -2
- package/ui/alert/Alert.tsx +2 -2
- package/ui/drop/Dropdown.d.ts +6 -0
- package/ui/drop/Dropdown.js +10 -2
- package/ui/drop/Dropdown.tsx +23 -2
- package/ui/specials/Circle.js +2 -2
- package/ui/specials/Circle.tsx +2 -2
- package/ui/theme/darkenUtils.d.ts +2 -0
- package/ui/theme/darkenUtils.js +27 -0
- package/ui/theme/darkenUtils.ts +15 -0
- package/ui/theme/theme.d.ts +1 -1
- package/ui/theme/theme.js +15 -13
- package/ui/theme/theme.tsx +17 -17
- package/ui/theme/themes.d.ts +106 -0
- package/ui/theme/themes.js +63 -0
- package/ui/theme/themes.ts +79 -0
- package/ui/video/Video.d.ts +11 -0
- package/ui/video/Video.js +258 -0
- package/ui/video/Video.tsx +287 -0
- package/ui/video/videoFunctions.d.ts +3 -0
- package/ui/video/videoFunctions.js +19 -0
- package/ui/video/videoFunctions.tsx +19 -0
- package/ui/video/videoShortcuts.d.ts +1 -0
- package/ui/video/videoShortcuts.js +11 -0
- package/ui/video/videoShortcuts.ts +12 -0
- package/ui/video/FunPlayer.d.ts +0 -0
- package/ui/video/FunPlayer.js +0 -203
- package/ui/video/FunPlayer.tsx +0 -221
package/css/fun.css
CHANGED
|
@@ -76,7 +76,11 @@
|
|
|
76
76
|
--lighter: #fafafa ;
|
|
77
77
|
--hoverable: #fcfcfc ;
|
|
78
78
|
--muted: #78716c;
|
|
79
|
-
--dark: #
|
|
79
|
+
--dark: #121212;
|
|
80
|
+
--cardBg: var(--raiseOpaque);
|
|
81
|
+
--card: 8px 8px 16px #d1d9e6, /* soft shadow */
|
|
82
|
+
-8px -8px 16px #ffffff; /* soft highlight */
|
|
83
|
+
--linkColor:rgb(58, 58, 58);
|
|
80
84
|
|
|
81
85
|
/* Primary Colors */
|
|
82
86
|
--primary: #6366f1;
|
|
@@ -179,26 +183,10 @@
|
|
|
179
183
|
--black: #000000;
|
|
180
184
|
--lightText: #FFFFFF;
|
|
181
185
|
--darkText: #27272a;
|
|
182
|
-
|
|
183
|
-
--bd-color:#1e1e1e;
|
|
184
|
-
--bd-theme:#fff;
|
|
185
|
-
--dark: #1e1e1e;
|
|
186
|
-
--lightDark: #4e4e4e66;
|
|
187
|
-
--success: #48c78e;
|
|
188
|
-
--successLight:var(--success200);
|
|
189
|
-
--warning: #dc8001cc;
|
|
190
|
-
--warningLight:#fff4e5 ;
|
|
191
|
-
--danger: #dc1101cc;
|
|
192
|
-
--dangerLight:#fdeded;
|
|
193
|
-
--info: #5fbbe2;
|
|
194
|
-
--infoLight:#e5f6fd;
|
|
195
186
|
--light: var(--lighter);
|
|
196
|
-
--deepLight: #2fa2b1;
|
|
197
187
|
--gradient:linear-gradient(90deg, var(--secondary) 0%, var(--primary) 100%);
|
|
198
188
|
--gradientColors:90deg, var(--secondary) 0%, var(--primary) 100%;
|
|
199
|
-
--
|
|
200
|
-
|
|
201
|
-
/* Body and font */
|
|
189
|
+
--danger:var(--error);
|
|
202
190
|
--bd-font-weight: 400;
|
|
203
191
|
--bdfontSize: 1rem;
|
|
204
192
|
--minifiedFontSize:0.88rem;
|
|
@@ -226,7 +214,6 @@
|
|
|
226
214
|
--inputPadding:0.5rem 0;
|
|
227
215
|
--inputRoundedPadding:0.5rem 1rem;
|
|
228
216
|
--shadowMedium:0 0.8rem 2rem 0 rgba(3, 3, 3, 0.1);
|
|
229
|
-
--card:rgba(0, 0, 0, 0.05) 0px 4px 16px, rgba(0, 0, 0, 0.05) 0px 8px 32px;
|
|
230
217
|
--raised:0 0.1rem 0.2rem 0rem rgba(0, 0, 0, 0.3);
|
|
231
218
|
/* medium Screen body */
|
|
232
219
|
|
|
@@ -234,13 +221,6 @@
|
|
|
234
221
|
}
|
|
235
222
|
|
|
236
223
|
|
|
237
|
-
/* DarkTheme */
|
|
238
|
-
:root{
|
|
239
|
-
--inputOutline:var(--primary);
|
|
240
|
-
--lightThemeDark: var(--dark)
|
|
241
|
-
}
|
|
242
|
-
|
|
243
|
-
|
|
244
224
|
/* For WebKit browsers (Chrome, Edge, Brave, Safari) */
|
|
245
225
|
::-webkit-scrollbar {
|
|
246
226
|
width: 10px;
|
|
@@ -272,7 +252,40 @@
|
|
|
272
252
|
*{
|
|
273
253
|
font-family: var(--font-font);
|
|
274
254
|
scroll-behavior: smooth;
|
|
275
|
-
|
|
255
|
+
transition: 0.3s ease-in-out all !important;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.card,
|
|
259
|
+
.input,
|
|
260
|
+
.navigation-bar ,
|
|
261
|
+
.modal ,
|
|
262
|
+
.modal-content,
|
|
263
|
+
.button,
|
|
264
|
+
.text,
|
|
265
|
+
.div,
|
|
266
|
+
.table,
|
|
267
|
+
.table-head,
|
|
268
|
+
.table-body,
|
|
269
|
+
.table-row,
|
|
270
|
+
.table-cell,
|
|
271
|
+
.list,
|
|
272
|
+
.list-item,
|
|
273
|
+
.breadcrumb,
|
|
274
|
+
.breadcrumb-link,
|
|
275
|
+
.breadcrumb-item,
|
|
276
|
+
.loader,
|
|
277
|
+
.grid,
|
|
278
|
+
.col,
|
|
279
|
+
.container,
|
|
280
|
+
.step-container,
|
|
281
|
+
.step,
|
|
282
|
+
.step-header,
|
|
283
|
+
.step-line,
|
|
284
|
+
.dropdown,
|
|
285
|
+
.dropdown-menu,
|
|
286
|
+
.dropdown-item,
|
|
287
|
+
.progress-bar{
|
|
288
|
+
color: var(--text-color) ;
|
|
276
289
|
}
|
|
277
290
|
|
|
278
291
|
/* normalise css */
|
|
@@ -316,6 +329,7 @@ Link {
|
|
|
316
329
|
background: transparent;
|
|
317
330
|
transition: 0.3s;
|
|
318
331
|
color: var(--linkColor);
|
|
332
|
+
font-weight: 500;
|
|
319
333
|
}
|
|
320
334
|
a:hover {
|
|
321
335
|
color: var(--linkHover);
|
|
@@ -1832,6 +1846,7 @@ button:disabled {
|
|
|
1832
1846
|
/* Typography */
|
|
1833
1847
|
.baseColor, .text-base{
|
|
1834
1848
|
color: var(--text-color) !important;}
|
|
1849
|
+
|
|
1835
1850
|
body {
|
|
1836
1851
|
font-size: var(--text-base);
|
|
1837
1852
|
line-height: 1.5rem;
|
|
@@ -2389,13 +2404,8 @@ h6, .h6 {
|
|
|
2389
2404
|
border-top-right-radius: 0 !important;
|
|
2390
2405
|
border-bottom-right-radius: 0 !important;
|
|
2391
2406
|
}
|
|
2392
|
-
|
|
2393
|
-
|
|
2394
|
-
display: flex;
|
|
2395
|
-
align-items: center;
|
|
2396
|
-
justify-content: center;
|
|
2397
|
-
border-radius: 50%;
|
|
2398
|
-
}
|
|
2407
|
+
|
|
2408
|
+
|
|
2399
2409
|
/* cursor */
|
|
2400
2410
|
.cursor-pointer {
|
|
2401
2411
|
cursor: pointer;
|
|
@@ -2585,11 +2595,11 @@ h6, .h6 {
|
|
|
2585
2595
|
|
|
2586
2596
|
/*cards*/
|
|
2587
2597
|
.card {
|
|
2588
|
-
|
|
2589
|
-
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2598
|
+
background: var(--cardBg) !important;
|
|
2599
|
+
box-shadow: var(--card);
|
|
2600
|
+
transition: 0.3s;
|
|
2601
|
+
backdrop-filter: var(--raiseBackdrop) ;
|
|
2602
|
+
color: var(--text-color);
|
|
2593
2603
|
}
|
|
2594
2604
|
.card.xl{
|
|
2595
2605
|
box-shadow: rgba(0, 0, 0, 0.1) 0px 10px 50px !important;
|
|
@@ -2677,6 +2687,7 @@ h6, .h6 {
|
|
|
2677
2687
|
|
|
2678
2688
|
.linkWrapper {
|
|
2679
2689
|
display: none;
|
|
2690
|
+
animation: SlideRight 0.2s linear;
|
|
2680
2691
|
}
|
|
2681
2692
|
|
|
2682
2693
|
.sidebar-trigger {
|
|
@@ -2686,6 +2697,149 @@ h6, .h6 {
|
|
|
2686
2697
|
|
|
2687
2698
|
|
|
2688
2699
|
|
|
2700
|
+
/* video */
|
|
2701
|
+
.video_player{
|
|
2702
|
+
border-radius: 1rem;
|
|
2703
|
+
width: 100%;
|
|
2704
|
+
}
|
|
2705
|
+
.video_container{
|
|
2706
|
+
position: relative;
|
|
2707
|
+
width: fit-content;
|
|
2708
|
+
height: fit-content;
|
|
2709
|
+
padding: 0;
|
|
2710
|
+
border-radius: 1rem;
|
|
2711
|
+
color: var(--text-color);
|
|
2712
|
+
}
|
|
2713
|
+
.video_controls{
|
|
2714
|
+
position: absolute;
|
|
2715
|
+
bottom: 0;
|
|
2716
|
+
left: 0;
|
|
2717
|
+
width: 100%;
|
|
2718
|
+
height: 100%;
|
|
2719
|
+
display: flex;
|
|
2720
|
+
flex-direction: column;
|
|
2721
|
+
justify-content: flex-end;
|
|
2722
|
+
padding: 1rem;
|
|
2723
|
+
display: none;
|
|
2724
|
+
color: rgb(218, 217, 217);
|
|
2725
|
+
border-radius: 1rem;
|
|
2726
|
+
}
|
|
2727
|
+
|
|
2728
|
+
.video_poster{
|
|
2729
|
+
position: absolute;
|
|
2730
|
+
top: 0;
|
|
2731
|
+
width: 100%;
|
|
2732
|
+
height: 100%;
|
|
2733
|
+
border-radius: 1rem;
|
|
2734
|
+
background-position: center !important;
|
|
2735
|
+
background-size: cover;
|
|
2736
|
+
background-repeat: no-repeat;
|
|
2737
|
+
}
|
|
2738
|
+
.video_controls.show_controls{
|
|
2739
|
+
display: flex ;
|
|
2740
|
+
}
|
|
2741
|
+
|
|
2742
|
+
.video_controls.hide_controls{
|
|
2743
|
+
display: none !important;
|
|
2744
|
+
}
|
|
2745
|
+
|
|
2746
|
+
.video_container:hover .video_controls{
|
|
2747
|
+
display: flex;
|
|
2748
|
+
}
|
|
2749
|
+
|
|
2750
|
+
.video_player_design {
|
|
2751
|
+
border-radius: 1.5rem;
|
|
2752
|
+
/* box-shadow: rgba(17, 12, 46, 0.15) 0px 48px 100px 0px; */
|
|
2753
|
+
box-shadow: rgba(50, 50, 93, 0.25) 0px 50px 100px -20px, rgba(0, 0, 0, 0.3) 0px 30px 60px -30px;
|
|
2754
|
+
}
|
|
2755
|
+
|
|
2756
|
+
.center-play-icon{
|
|
2757
|
+
position: absolute;
|
|
2758
|
+
top: 50%;
|
|
2759
|
+
left: 50%;
|
|
2760
|
+
transform: translate(-50%, -50%);
|
|
2761
|
+
z-index: 2;
|
|
2762
|
+
}
|
|
2763
|
+
.play-button {
|
|
2764
|
+
display: flex;
|
|
2765
|
+
align-items: center;
|
|
2766
|
+
justify-content: center;
|
|
2767
|
+
width: 60px;
|
|
2768
|
+
height: 60px;
|
|
2769
|
+
border: 3px solid var(--primary300);
|
|
2770
|
+
border-radius: 50%;
|
|
2771
|
+
background: var(--primary);
|
|
2772
|
+
color: var(--white);
|
|
2773
|
+
transition: transform 0.3s ease;
|
|
2774
|
+
animation: pulse 2s infinite;
|
|
2775
|
+
cursor: pointer;
|
|
2776
|
+
|
|
2777
|
+
}
|
|
2778
|
+
|
|
2779
|
+
.play-button:hover {
|
|
2780
|
+
transform: scale(1.1);
|
|
2781
|
+
background: var(--raiseThemes);
|
|
2782
|
+
backdrop-filter: var(--raiseBackdrop) !important;
|
|
2783
|
+
border-color: var(--borderColor);
|
|
2784
|
+
color: var(--text-color);
|
|
2785
|
+
}
|
|
2786
|
+
|
|
2787
|
+
@keyframes pulse {
|
|
2788
|
+
0% {
|
|
2789
|
+
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.5);
|
|
2790
|
+
}
|
|
2791
|
+
70% {
|
|
2792
|
+
box-shadow: 0 0 0 20px rgba(255, 255, 255, 0);
|
|
2793
|
+
}
|
|
2794
|
+
100% {
|
|
2795
|
+
box-shadow: 0 0 0 0 rgba(255, 255, 255, 0);
|
|
2796
|
+
}
|
|
2797
|
+
}
|
|
2798
|
+
|
|
2799
|
+
.styled-slider {
|
|
2800
|
+
appearance: none;
|
|
2801
|
+
width: 100%;
|
|
2802
|
+
height: 10px;
|
|
2803
|
+
background: linear-gradient(
|
|
2804
|
+
to right,
|
|
2805
|
+
var(--primary) 0%,
|
|
2806
|
+
var(--primary) calc(var(--progress, 0%) * 1%),
|
|
2807
|
+
var(--primary50) calc(var(--progress, 0%) * 1%),
|
|
2808
|
+
var(--primary50) 100%
|
|
2809
|
+
);
|
|
2810
|
+
border-radius: 3px;
|
|
2811
|
+
outline: none;
|
|
2812
|
+
transition: background 0.3s ease;
|
|
2813
|
+
position: relative;
|
|
2814
|
+
}
|
|
2815
|
+
|
|
2816
|
+
/* Thumb hidden by default */
|
|
2817
|
+
.styled-slider::-webkit-slider-thumb {
|
|
2818
|
+
appearance: none;
|
|
2819
|
+
height: 14px;
|
|
2820
|
+
width: 14px;
|
|
2821
|
+
border-radius: 50%;
|
|
2822
|
+
background: var(--primary);
|
|
2823
|
+
border: none;
|
|
2824
|
+
cursor: pointer;
|
|
2825
|
+
opacity: 0;
|
|
2826
|
+
transition: opacity 0.3s ease;
|
|
2827
|
+
margin-top: -4px;
|
|
2828
|
+
}
|
|
2829
|
+
|
|
2830
|
+
|
|
2831
|
+
.styled-slider::-moz-range-thumb {
|
|
2832
|
+
height: 14px;
|
|
2833
|
+
width: 14px;
|
|
2834
|
+
border-radius: 50%;
|
|
2835
|
+
background: var(--primary);
|
|
2836
|
+
border: none;
|
|
2837
|
+
cursor: pointer;
|
|
2838
|
+
opacity: 0;
|
|
2839
|
+
transition: opacity 0.3s ease;
|
|
2840
|
+
}
|
|
2841
|
+
|
|
2842
|
+
|
|
2689
2843
|
|
|
2690
2844
|
/* Mobile layout when menu is open */
|
|
2691
2845
|
.navbar-mobile-open {
|
|
@@ -2992,6 +3146,7 @@ h6, .h6 {
|
|
|
2992
3146
|
|
|
2993
3147
|
.alert-container > .alert{
|
|
2994
3148
|
box-shadow: var(--card);
|
|
3149
|
+
background: var(--cardBg);
|
|
2995
3150
|
}
|
|
2996
3151
|
.alert-container
|
|
2997
3152
|
{
|
|
@@ -3031,35 +3186,6 @@ h6, .h6 {
|
|
|
3031
3186
|
justify-content: center;
|
|
3032
3187
|
}
|
|
3033
3188
|
|
|
3034
|
-
.alert.success {
|
|
3035
|
-
background-color: var(--successLight) !important;
|
|
3036
|
-
|
|
3037
|
-
}
|
|
3038
|
-
.alert.info {
|
|
3039
|
-
background-color: var(--infoLight) !important;
|
|
3040
|
-
}
|
|
3041
|
-
.alert.warning {
|
|
3042
|
-
background-color: var(--warningLight) !important;
|
|
3043
|
-
}
|
|
3044
|
-
.alert.danger {
|
|
3045
|
-
background-color: var(--dangerLight) !important;
|
|
3046
|
-
}
|
|
3047
|
-
.alert.success .alert-text,
|
|
3048
|
-
.alert-icon {
|
|
3049
|
-
color: rgb(30, 70, 32) !important;
|
|
3050
|
-
}
|
|
3051
|
-
.alert.info .alert-text,
|
|
3052
|
-
.alert-icon {
|
|
3053
|
-
color: rgb(1, 67, 97) !important;
|
|
3054
|
-
}
|
|
3055
|
-
.alert.warning .alert-text,
|
|
3056
|
-
.alert-icon {
|
|
3057
|
-
color: rgb(102, 60, 0) !important;
|
|
3058
|
-
}
|
|
3059
|
-
.alert.danger .alert-text,
|
|
3060
|
-
.alert-icon {
|
|
3061
|
-
color: rgb(95, 33, 32) !important;
|
|
3062
|
-
}
|
|
3063
3189
|
|
|
3064
3190
|
/*border radius and borders*/
|
|
3065
3191
|
.round, .circle {
|
|
@@ -3144,6 +3270,7 @@ h6, .h6 {
|
|
|
3144
3270
|
border-radius: 50%;
|
|
3145
3271
|
}
|
|
3146
3272
|
|
|
3273
|
+
|
|
3147
3274
|
.avatar {
|
|
3148
3275
|
display: flex;
|
|
3149
3276
|
align-items: center;
|
|
@@ -3151,6 +3278,9 @@ h6, .h6 {
|
|
|
3151
3278
|
border-radius: 50%;
|
|
3152
3279
|
overflow: hidden;
|
|
3153
3280
|
font-weight: bold;
|
|
3281
|
+
background-color: var(--raiseOpaque);
|
|
3282
|
+
backdrop-filter: var(--raiseBackdrop);
|
|
3283
|
+
color: var(--text-color);
|
|
3154
3284
|
}
|
|
3155
3285
|
|
|
3156
3286
|
|
|
@@ -3174,10 +3304,11 @@ h6, .h6 {
|
|
|
3174
3304
|
transition: 0.5s;
|
|
3175
3305
|
z-index: 1;
|
|
3176
3306
|
width: 100%;
|
|
3307
|
+
min-width: max-content !important;
|
|
3177
3308
|
overflow: hidden;
|
|
3178
3309
|
border-radius: 0.5rem;
|
|
3179
|
-
background-color: var(--
|
|
3180
|
-
backdrop-filter: var(--raiseBackdrop) ;
|
|
3310
|
+
background-color: var(--raiseOpaque) !important;
|
|
3311
|
+
backdrop-filter: var(--raiseBackdrop) !important ;
|
|
3181
3312
|
display: none;
|
|
3182
3313
|
}
|
|
3183
3314
|
|
|
@@ -3709,6 +3840,91 @@ th {
|
|
|
3709
3840
|
}
|
|
3710
3841
|
}
|
|
3711
3842
|
|
|
3843
|
+
/* Base Animation Setup */
|
|
3844
|
+
.animated {
|
|
3845
|
+
animation-duration: 0.4s;
|
|
3846
|
+
animation-fill-mode: both;
|
|
3847
|
+
animation-timing-function: ease;
|
|
3848
|
+
will-change: transform, opacity;
|
|
3849
|
+
}
|
|
3850
|
+
|
|
3851
|
+
/* Slide Animations */
|
|
3852
|
+
.slide-up {
|
|
3853
|
+
animation-name: slideUp;
|
|
3854
|
+
}
|
|
3855
|
+
|
|
3856
|
+
.slide-down {
|
|
3857
|
+
animation-name: slideDown;
|
|
3858
|
+
}
|
|
3859
|
+
|
|
3860
|
+
.slide-left {
|
|
3861
|
+
animation-name: slideLeft;
|
|
3862
|
+
}
|
|
3863
|
+
|
|
3864
|
+
.slide-right {
|
|
3865
|
+
animation-name: slideRight;
|
|
3866
|
+
}
|
|
3867
|
+
|
|
3868
|
+
/* Fade Animation */
|
|
3869
|
+
.fade-in {
|
|
3870
|
+
animation-name: fadeIn;
|
|
3871
|
+
}
|
|
3872
|
+
|
|
3873
|
+
/* Keyframes */
|
|
3874
|
+
@keyframes slideUp {
|
|
3875
|
+
from {
|
|
3876
|
+
transform: translateY(20px);
|
|
3877
|
+
opacity: 0;
|
|
3878
|
+
}
|
|
3879
|
+
to {
|
|
3880
|
+
transform: translateY(0);
|
|
3881
|
+
opacity: 1;
|
|
3882
|
+
}
|
|
3883
|
+
}
|
|
3884
|
+
|
|
3885
|
+
@keyframes slideDown {
|
|
3886
|
+
from {
|
|
3887
|
+
transform: translateY(-20px);
|
|
3888
|
+
opacity: 0;
|
|
3889
|
+
}
|
|
3890
|
+
to {
|
|
3891
|
+
transform: translateY(0);
|
|
3892
|
+
opacity: 1;
|
|
3893
|
+
}
|
|
3894
|
+
}
|
|
3895
|
+
|
|
3896
|
+
@keyframes slideLeft {
|
|
3897
|
+
from {
|
|
3898
|
+
transform: translateX(20px);
|
|
3899
|
+
opacity: 0;
|
|
3900
|
+
}
|
|
3901
|
+
to {
|
|
3902
|
+
transform: translateX(0);
|
|
3903
|
+
opacity: 1;
|
|
3904
|
+
}
|
|
3905
|
+
}
|
|
3906
|
+
|
|
3907
|
+
@keyframes slideRight {
|
|
3908
|
+
from {
|
|
3909
|
+
transform: translateX(-20px);
|
|
3910
|
+
opacity: 0;
|
|
3911
|
+
}
|
|
3912
|
+
to {
|
|
3913
|
+
transform: translateX(0);
|
|
3914
|
+
opacity: 1;
|
|
3915
|
+
}
|
|
3916
|
+
}
|
|
3917
|
+
|
|
3918
|
+
@keyframes fadeIn {
|
|
3919
|
+
from {
|
|
3920
|
+
opacity: 0;
|
|
3921
|
+
}
|
|
3922
|
+
to {
|
|
3923
|
+
opacity: 1;
|
|
3924
|
+
}
|
|
3925
|
+
}
|
|
3926
|
+
|
|
3927
|
+
|
|
3712
3928
|
/*icons*/
|
|
3713
3929
|
.icon.size-smaller {
|
|
3714
3930
|
font-size: 0.5em;
|
|
@@ -3803,7 +4019,7 @@ th {
|
|
|
3803
4019
|
gap: 1rem;
|
|
3804
4020
|
}
|
|
3805
4021
|
.modal-content {
|
|
3806
|
-
background
|
|
4022
|
+
background: var(--cardBg);
|
|
3807
4023
|
backdrop-filter: blur(20rem) ;
|
|
3808
4024
|
max-width: 700px;
|
|
3809
4025
|
padding: 1rem 1.5rem;
|
package/hooks/useHls.js
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === "function" ? Iterator : Object).prototype);
|
|
13
|
+
return g.next = verb(0), g["throw"] = verb(1), g["return"] = verb(2), typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
18
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
40
|
+
};
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.useHls = useHls;
|
|
43
|
+
// hooks/useHls.ts
|
|
44
|
+
var react_1 = require("react");
|
|
45
|
+
var hls_js_1 = __importDefault(require("hls.js"));
|
|
46
|
+
function useHls(_a) {
|
|
47
|
+
var _this = this;
|
|
48
|
+
var videoRef = _a.videoRef, src = _a.src, autoPlay = _a.autoPlay, onLoaded = _a.onLoaded;
|
|
49
|
+
(0, react_1.useEffect)(function () {
|
|
50
|
+
var video = videoRef.current;
|
|
51
|
+
if (!video || !src)
|
|
52
|
+
return;
|
|
53
|
+
var hls = null;
|
|
54
|
+
var isHls = src.endsWith('.m3u8');
|
|
55
|
+
var setup = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
56
|
+
return __generator(this, function (_a) {
|
|
57
|
+
if (isHls && hls_js_1.default.isSupported()) {
|
|
58
|
+
hls = new hls_js_1.default();
|
|
59
|
+
hls.loadSource(src);
|
|
60
|
+
hls.attachMedia(video);
|
|
61
|
+
hls.on(hls_js_1.default.Events.MANIFEST_PARSED, function () {
|
|
62
|
+
onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
|
|
63
|
+
if (autoPlay) {
|
|
64
|
+
video
|
|
65
|
+
.play()
|
|
66
|
+
.then(function () { return console.log('HLS auto-play success'); })
|
|
67
|
+
.catch(function (err) { return console.warn('HLS auto-play error:', err); });
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
hls.on(hls_js_1.default.Events.ERROR, function (event, data) {
|
|
71
|
+
console.error('HLS.js error:', data);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
|
75
|
+
video.src = src;
|
|
76
|
+
video.onloadedmetadata = function () {
|
|
77
|
+
onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
|
|
78
|
+
if (autoPlay) {
|
|
79
|
+
video
|
|
80
|
+
.play()
|
|
81
|
+
.then(function () { return console.log('Native HLS auto-play success'); })
|
|
82
|
+
.catch(function (err) { return console.warn('Native HLS auto-play error:', err); });
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
video.src = src;
|
|
88
|
+
onLoaded === null || onLoaded === void 0 ? void 0 : onLoaded();
|
|
89
|
+
if (autoPlay) {
|
|
90
|
+
video
|
|
91
|
+
.play()
|
|
92
|
+
.then(function () { return console.log('MP4 auto-play success'); })
|
|
93
|
+
.catch(function (err) { return console.warn('MP4 auto-play error:', err); });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return [2 /*return*/];
|
|
97
|
+
});
|
|
98
|
+
}); };
|
|
99
|
+
setup();
|
|
100
|
+
return function () {
|
|
101
|
+
if (hls)
|
|
102
|
+
hls.destroy();
|
|
103
|
+
};
|
|
104
|
+
}, [videoRef, src, autoPlay, onLoaded]);
|
|
105
|
+
}
|
package/hooks/useHls.tsx
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
// hooks/useHls.ts
|
|
2
|
+
import { useEffect } from 'react';
|
|
3
|
+
import Hls from 'hls.js';
|
|
4
|
+
|
|
5
|
+
interface UseHlsOptions {
|
|
6
|
+
videoRef: React.RefObject<HTMLVideoElement>;
|
|
7
|
+
src: string;
|
|
8
|
+
autoPlay?: boolean;
|
|
9
|
+
onLoaded?: () => void;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export function useHls({ videoRef, src, autoPlay, onLoaded }: UseHlsOptions) {
|
|
13
|
+
useEffect(() => {
|
|
14
|
+
const video = videoRef.current;
|
|
15
|
+
if (!video || !src) return;
|
|
16
|
+
|
|
17
|
+
let hls: Hls | null = null;
|
|
18
|
+
const isHls = src.endsWith('.m3u8');
|
|
19
|
+
|
|
20
|
+
const setup = async () => {
|
|
21
|
+
if (isHls && Hls.isSupported()) {
|
|
22
|
+
hls = new Hls();
|
|
23
|
+
hls.loadSource(src);
|
|
24
|
+
hls.attachMedia(video);
|
|
25
|
+
|
|
26
|
+
hls.on(Hls.Events.MANIFEST_PARSED, () => {
|
|
27
|
+
onLoaded?.();
|
|
28
|
+
if (autoPlay) {
|
|
29
|
+
video
|
|
30
|
+
.play()
|
|
31
|
+
.then(() => console.log('HLS auto-play success'))
|
|
32
|
+
.catch((err) => console.warn('HLS auto-play error:', err));
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
hls.on(Hls.Events.ERROR, (event, data) => {
|
|
37
|
+
console.error('HLS.js error:', data);
|
|
38
|
+
});
|
|
39
|
+
} else if (video.canPlayType('application/vnd.apple.mpegurl')) {
|
|
40
|
+
video.src = src;
|
|
41
|
+
|
|
42
|
+
video.onloadedmetadata = () => {
|
|
43
|
+
onLoaded?.();
|
|
44
|
+
if (autoPlay) {
|
|
45
|
+
video
|
|
46
|
+
.play()
|
|
47
|
+
.then(() => console.log('Native HLS auto-play success'))
|
|
48
|
+
.catch((err) => console.warn('Native HLS auto-play error:', err));
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
} else {
|
|
52
|
+
video.src = src;
|
|
53
|
+
onLoaded?.();
|
|
54
|
+
if (autoPlay) {
|
|
55
|
+
video
|
|
56
|
+
.play()
|
|
57
|
+
.then(() => console.log('MP4 auto-play success'))
|
|
58
|
+
.catch((err) => console.warn('MP4 auto-play error:', err));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
setup();
|
|
64
|
+
|
|
65
|
+
return () => {
|
|
66
|
+
if (hls) hls.destroy();
|
|
67
|
+
};
|
|
68
|
+
}, [videoRef, src, autoPlay, onLoaded]);
|
|
69
|
+
}
|
package/index.d.ts
CHANGED
|
@@ -40,3 +40,4 @@ export { default as Bars } from "./ui/chart/Bar";
|
|
|
40
40
|
export { default as Lines } from "./ui/chart/Line";
|
|
41
41
|
export { default as ChartPie } from "./ui/chart/Pie";
|
|
42
42
|
export { default as SideBar } from "./ui/sidebar/SideBar";
|
|
43
|
+
export { default as Video } from "./ui/video/Video";
|
package/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.SideBar = exports.ChartPie = exports.Lines = exports.Bars = exports.FullCenteredPage = exports.CircleGroup = exports.Circle = exports.Hr = exports.Section = exports.RowFlex = exports.Tip = exports.AppBar = exports.ToolTip = exports.Notification = exports.FunLoader = exports.ProgressBar = exports.DropMenu = exports.DropItem = exports.Dropdown = exports.DropDown = exports.DropUp = exports.UnAuthorized = exports.NotFound = exports.StepLine = exports.StepHeader = exports.Step = exports.StepContainer = exports.Div = exports.Text = exports.List = exports.Table = exports.Modal = exports.Loader = exports.Input = exports.Col = exports.Grid = exports.Container = exports.BreadCrumb = exports.Card = exports.Button = exports.ThemeProvider = exports.Alert = void 0;
|
|
6
|
+
exports.Video = exports.SideBar = exports.ChartPie = exports.Lines = exports.Bars = exports.FullCenteredPage = exports.CircleGroup = exports.Circle = exports.Hr = exports.Section = exports.RowFlex = exports.Tip = exports.AppBar = exports.ToolTip = exports.Notification = exports.FunLoader = exports.ProgressBar = exports.DropMenu = exports.DropItem = exports.Dropdown = exports.DropDown = exports.DropUp = exports.UnAuthorized = exports.NotFound = exports.StepLine = exports.StepHeader = exports.Step = exports.StepContainer = exports.Div = exports.Text = exports.List = exports.Table = exports.Modal = exports.Loader = exports.Input = exports.Col = exports.Grid = exports.Container = exports.BreadCrumb = exports.Card = exports.Button = exports.ThemeProvider = exports.Alert = void 0;
|
|
7
7
|
var Alert_1 = require("./ui/alert/Alert");
|
|
8
8
|
Object.defineProperty(exports, "Alert", { enumerable: true, get: function () { return __importDefault(Alert_1).default; } });
|
|
9
9
|
var theme_1 = require("./ui/theme/theme");
|
|
@@ -88,3 +88,5 @@ var Pie_1 = require("./ui/chart/Pie");
|
|
|
88
88
|
Object.defineProperty(exports, "ChartPie", { enumerable: true, get: function () { return __importDefault(Pie_1).default; } });
|
|
89
89
|
var SideBar_1 = require("./ui/sidebar/SideBar");
|
|
90
90
|
Object.defineProperty(exports, "SideBar", { enumerable: true, get: function () { return __importDefault(SideBar_1).default; } });
|
|
91
|
+
var Video_1 = require("./ui/video/Video");
|
|
92
|
+
Object.defineProperty(exports, "Video", { enumerable: true, get: function () { return __importDefault(Video_1).default; } });
|
package/index.tsx
CHANGED
|
@@ -39,4 +39,5 @@ export { default as FullCenteredPage } from "./ui/specials/FullCenteredPage"
|
|
|
39
39
|
export { default as Bars } from "./ui/chart/Bar"
|
|
40
40
|
export { default as Lines } from "./ui/chart/Line"
|
|
41
41
|
export { default as ChartPie } from "./ui/chart/Pie"
|
|
42
|
-
export { default as SideBar } from "./ui/sidebar/SideBar"
|
|
42
|
+
export { default as SideBar } from "./ui/sidebar/SideBar"
|
|
43
|
+
export { default as Video } from "./ui/video/Video"
|