unified-video-framework 1.4.441 → 1.4.442
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/package.json +1 -1
- package/packages/core/dist/version.d.ts +1 -1
- package/packages/core/dist/version.js +1 -1
- package/packages/core/src/version.ts +1 -1
- package/packages/web/dist/WebPlayer.d.ts.map +1 -1
- package/packages/web/dist/WebPlayer.js +83 -56
- package/packages/web/dist/WebPlayer.js.map +1 -1
- package/packages/web/src/WebPlayer.ts +86 -60
|
@@ -2907,20 +2907,22 @@ export class WebPlayer extends BasePlayer {
|
|
|
2907
2907
|
// 1. Globe Block (Left)
|
|
2908
2908
|
const globeBlock = document.createElement('div');
|
|
2909
2909
|
globeBlock.style.cssText = `
|
|
2910
|
-
width: ${height}px;
|
|
2910
|
+
width: ${height * 1.2}px;
|
|
2911
2911
|
height: ${height}px;
|
|
2912
|
-
background: linear-gradient(135deg, #
|
|
2912
|
+
background: linear-gradient(135deg, #e74c3c 0%, #c0392b 100%);
|
|
2913
2913
|
display: flex;
|
|
2914
2914
|
align-items: center;
|
|
2915
2915
|
justify-content: center;
|
|
2916
2916
|
flex-shrink: 0;
|
|
2917
|
-
clip-path: polygon(0 0
|
|
2918
|
-
z-index:
|
|
2919
|
-
box-shadow:
|
|
2917
|
+
clip-path: polygon(0% 0%, 75% 0%, 100% 100%, 0% 100%);
|
|
2918
|
+
z-index: 20;
|
|
2919
|
+
box-shadow: 10px 0 20px rgba(0,0,0,0.4);
|
|
2920
|
+
position: relative;
|
|
2920
2921
|
`;
|
|
2921
2922
|
const globe = this.createGlobeElement(true);
|
|
2922
|
-
globe.style.width = '
|
|
2923
|
-
globe.style.height = '
|
|
2923
|
+
globe.style.width = '45%';
|
|
2924
|
+
globe.style.height = '45%';
|
|
2925
|
+
globe.style.marginRight = '15%'; // Offset from the angle
|
|
2924
2926
|
globeBlock.appendChild(globe);
|
|
2925
2927
|
ticker.appendChild(globeBlock);
|
|
2926
2928
|
|
|
@@ -2930,19 +2932,21 @@ export class WebPlayer extends BasePlayer {
|
|
|
2930
2932
|
flex-grow: 1;
|
|
2931
2933
|
display: flex;
|
|
2932
2934
|
flex-direction: column;
|
|
2933
|
-
margin-left: -${height * 0.
|
|
2935
|
+
margin-left: -${height * 0.3}px; /* Deeper overlap */
|
|
2936
|
+
z-index: 10;
|
|
2934
2937
|
`;
|
|
2935
2938
|
|
|
2936
2939
|
// Row 1: Top Blue Bar (Headline)
|
|
2937
2940
|
const topBar = document.createElement('div');
|
|
2938
2941
|
topBar.style.cssText = `
|
|
2939
|
-
height:
|
|
2940
|
-
background: linear-gradient(90deg, #1e3c72 0%, #2a5298 100%);
|
|
2942
|
+
height: 55%;
|
|
2943
|
+
background: linear-gradient(90deg, #1e3c72 0%, #2a5298 50%, #1e3c72 100%);
|
|
2941
2944
|
clip-path: polygon(5% 0, 100% 0, 98% 100%, 0% 100%);
|
|
2942
2945
|
display: flex;
|
|
2943
2946
|
align-items: center;
|
|
2944
|
-
padding: 0 40px;
|
|
2947
|
+
padding: 0 40px 0 60px;
|
|
2945
2948
|
color: white;
|
|
2949
|
+
border-bottom: 3px solid rgba(255,255,255,0.1);
|
|
2946
2950
|
`;
|
|
2947
2951
|
|
|
2948
2952
|
const breakingText = document.createElement('span');
|
|
@@ -2950,9 +2954,11 @@ export class WebPlayer extends BasePlayer {
|
|
|
2950
2954
|
breakingText.style.cssText = `
|
|
2951
2955
|
font-weight: 900;
|
|
2952
2956
|
font-style: italic;
|
|
2953
|
-
font-size: ${height * 0.
|
|
2957
|
+
font-size: ${height * 0.2}px;
|
|
2954
2958
|
margin-right: 20px;
|
|
2955
|
-
|
|
2959
|
+
white-space: nowrap;
|
|
2960
|
+
color: #fff;
|
|
2961
|
+
text-shadow: 0 0 10px rgba(255,255,255,0.5);
|
|
2956
2962
|
`;
|
|
2957
2963
|
topBar.appendChild(breakingText);
|
|
2958
2964
|
|
|
@@ -2971,33 +2977,33 @@ export class WebPlayer extends BasePlayer {
|
|
|
2971
2977
|
// Row 2: Bottom Black Bar (Scrolling Items)
|
|
2972
2978
|
const bottomBar = document.createElement('div');
|
|
2973
2979
|
bottomBar.style.cssText = `
|
|
2974
|
-
height:
|
|
2975
|
-
background: #
|
|
2980
|
+
height: 45%;
|
|
2981
|
+
background: #0d0d0d;
|
|
2976
2982
|
display: flex;
|
|
2977
2983
|
align-items: center;
|
|
2978
|
-
clip-path: polygon(
|
|
2984
|
+
clip-path: polygon(2% 0, 100% 0, 100% 100%, 0% 100%);
|
|
2985
|
+
border-top: 1px solid rgba(255,255,255,0.05);
|
|
2979
2986
|
`;
|
|
2980
2987
|
|
|
2981
|
-
// LIVE badge
|
|
2982
2988
|
const liveBadge = document.createElement('div');
|
|
2983
2989
|
liveBadge.textContent = 'LIVE';
|
|
2984
2990
|
liveBadge.style.cssText = `
|
|
2985
2991
|
background: #f1c40f;
|
|
2986
|
-
color:
|
|
2992
|
+
color: #000;
|
|
2987
2993
|
font-weight: 900;
|
|
2988
|
-
font-size: ${height * 0.
|
|
2989
|
-
padding: 2px
|
|
2990
|
-
margin-left:
|
|
2991
|
-
clip-path: polygon(0 0,
|
|
2994
|
+
font-size: ${height * 0.16}px;
|
|
2995
|
+
padding: 2px 12px;
|
|
2996
|
+
margin-left: 50px;
|
|
2997
|
+
clip-path: polygon(0 0, 85% 0, 100% 100%, 0 100%);
|
|
2992
2998
|
`;
|
|
2993
2999
|
bottomBar.appendChild(liveBadge);
|
|
2994
3000
|
|
|
2995
3001
|
// Scrolling track
|
|
2996
3002
|
const trackContainer = document.createElement('div');
|
|
2997
3003
|
trackContainer.style.cssText = `flex-grow: 1; overflow: hidden; height: 100%; display: flex; align-items: center;`;
|
|
2998
|
-
|
|
2999
3004
|
const track = this.createSeamlessScrollingTrack(config.items || [], config);
|
|
3000
3005
|
track.style.fontSize = `${height * 0.18}px`;
|
|
3006
|
+
track.style.color = '#fff';
|
|
3001
3007
|
trackContainer.appendChild(track);
|
|
3002
3008
|
bottomBar.appendChild(trackContainer);
|
|
3003
3009
|
|
|
@@ -3020,8 +3026,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
3020
3026
|
position: absolute;
|
|
3021
3027
|
left: 5%;
|
|
3022
3028
|
right: 5%;
|
|
3029
|
+
bottom: ${bottomOffset}px;
|
|
3023
3030
|
height: ${height}px;
|
|
3024
|
-
${position === 'top' ? `top: ${topOffset}px;` : `bottom: ${bottomOffset}px;`}
|
|
3025
3031
|
display: flex;
|
|
3026
3032
|
align-items: flex-end;
|
|
3027
3033
|
font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
@@ -3029,28 +3035,38 @@ export class WebPlayer extends BasePlayer {
|
|
|
3029
3035
|
pointer-events: none;
|
|
3030
3036
|
`;
|
|
3031
3037
|
|
|
3032
|
-
// Globe icon (floating on left)
|
|
3038
|
+
// Globe icon (floating on left, nested for z-index control)
|
|
3039
|
+
const globeWrapper = document.createElement('div');
|
|
3040
|
+
globeWrapper.style.cssText = `
|
|
3041
|
+
width: ${height * 0.75}px;
|
|
3042
|
+
height: ${height * 0.75}px;
|
|
3043
|
+
position: relative;
|
|
3044
|
+
z-index: 30;
|
|
3045
|
+
margin-right: 10px;
|
|
3046
|
+
flex-shrink: 0;
|
|
3047
|
+
`;
|
|
3048
|
+
|
|
3033
3049
|
const globeContainer = document.createElement('div');
|
|
3034
3050
|
globeContainer.style.cssText = `
|
|
3035
|
-
width:
|
|
3036
|
-
height:
|
|
3037
|
-
background:
|
|
3051
|
+
width: 100%;
|
|
3052
|
+
height: 100%;
|
|
3053
|
+
background: radial-gradient(circle, #e74c3c 0%, #c0392b 100%);
|
|
3038
3054
|
border-radius: 50%;
|
|
3039
3055
|
display: flex;
|
|
3040
3056
|
align-items: center;
|
|
3041
3057
|
justify-content: center;
|
|
3042
|
-
|
|
3043
|
-
|
|
3044
|
-
border: 2px solid rgba(255,255,255,0.2);
|
|
3058
|
+
box-shadow: 0 0 25px rgba(0,0,0,0.6);
|
|
3059
|
+
border: 3px solid #fff;
|
|
3045
3060
|
`;
|
|
3046
3061
|
const globe = this.createGlobeElement(true);
|
|
3047
3062
|
globe.style.width = '70%';
|
|
3048
3063
|
globe.style.height = '70%';
|
|
3049
3064
|
globeContainer.appendChild(globe);
|
|
3050
|
-
|
|
3065
|
+
globeWrapper.appendChild(globeContainer);
|
|
3066
|
+
ticker.appendChild(globeWrapper);
|
|
3051
3067
|
|
|
3052
3068
|
const content = document.createElement('div');
|
|
3053
|
-
content.style.cssText = `flex-grow: 1; display: flex; flex-direction: column;`;
|
|
3069
|
+
content.style.cssText = `flex-grow: 1; display: flex; flex-direction: column; z-index: 20;`;
|
|
3054
3070
|
|
|
3055
3071
|
// Row 1: Yellow/Red Header
|
|
3056
3072
|
const row1 = document.createElement('div');
|
|
@@ -3062,40 +3078,44 @@ export class WebPlayer extends BasePlayer {
|
|
|
3062
3078
|
background: #f1c40f;
|
|
3063
3079
|
color: black;
|
|
3064
3080
|
font-weight: 900;
|
|
3065
|
-
padding: 0
|
|
3081
|
+
padding: 0 25px;
|
|
3066
3082
|
display: flex;
|
|
3067
3083
|
align-items: center;
|
|
3068
|
-
clip-path: polygon(0 0,
|
|
3069
|
-
font-size: ${height * 0.
|
|
3084
|
+
clip-path: polygon(0 0, 85% 0, 100% 100%, 0 100%);
|
|
3085
|
+
font-size: ${height * 0.2}px;
|
|
3086
|
+
position: relative;
|
|
3087
|
+
z-index: 2;
|
|
3070
3088
|
`;
|
|
3071
3089
|
row1.appendChild(badge);
|
|
3072
3090
|
|
|
3073
3091
|
const headline = document.createElement('div');
|
|
3074
3092
|
headline.textContent = config.headline || 'LOREM IPSUM DOLOR SIT AMET, CONSECTETUER';
|
|
3075
3093
|
headline.style.cssText = `
|
|
3076
|
-
background: #e74c3c;
|
|
3094
|
+
background: linear-gradient(90deg, #e74c3c 0%, #c1392b 100%);
|
|
3077
3095
|
color: white;
|
|
3078
3096
|
font-weight: 700;
|
|
3079
|
-
padding: 0
|
|
3097
|
+
padding: 0 40px;
|
|
3080
3098
|
display: flex;
|
|
3081
3099
|
align-items: center;
|
|
3082
3100
|
flex-grow: 1;
|
|
3083
|
-
margin-left: -
|
|
3084
|
-
clip-path: polygon(
|
|
3101
|
+
margin-left: -20px;
|
|
3102
|
+
clip-path: polygon(5% 0, 100% 0, 95% 100%, 0 100%);
|
|
3085
3103
|
font-size: ${height * 0.22}px;
|
|
3104
|
+
border-bottom: 2px solid rgba(255,255,255,0.2);
|
|
3086
3105
|
`;
|
|
3087
3106
|
row1.appendChild(headline);
|
|
3088
3107
|
content.appendChild(row1);
|
|
3089
3108
|
|
|
3090
|
-
// Row 2: Blue Ticker
|
|
3109
|
+
// Row 2: Blue Ticker (Semi-transparent)
|
|
3091
3110
|
const row2 = document.createElement('div');
|
|
3092
3111
|
row2.style.cssText = `
|
|
3093
3112
|
height: 40%;
|
|
3094
|
-
background:
|
|
3113
|
+
background: rgba(41, 128, 185, 0.9);
|
|
3095
3114
|
display: flex;
|
|
3096
3115
|
align-items: center;
|
|
3097
|
-
margin-top:
|
|
3098
|
-
clip-path: polygon(
|
|
3116
|
+
margin-top: 4px;
|
|
3117
|
+
clip-path: polygon(1% 0, 100% 0, 100% 100%, 2% 100%);
|
|
3118
|
+
backdrop-filter: blur(5px);
|
|
3099
3119
|
`;
|
|
3100
3120
|
|
|
3101
3121
|
const live = document.createElement('div');
|
|
@@ -3105,8 +3125,10 @@ export class WebPlayer extends BasePlayer {
|
|
|
3105
3125
|
color: #2980b9;
|
|
3106
3126
|
font-weight: 900;
|
|
3107
3127
|
padding: 0 15px;
|
|
3108
|
-
margin:
|
|
3109
|
-
|
|
3128
|
+
margin-left: 30px;
|
|
3129
|
+
margin-right: 15px;
|
|
3130
|
+
font-size: ${height * 0.16}px;
|
|
3131
|
+
box-shadow: 2px 0 5px rgba(0,0,0,0.2);
|
|
3110
3132
|
`;
|
|
3111
3133
|
row2.appendChild(live);
|
|
3112
3134
|
|
|
@@ -3227,8 +3249,8 @@ export class WebPlayer extends BasePlayer {
|
|
|
3227
3249
|
position: absolute;
|
|
3228
3250
|
left: 15%;
|
|
3229
3251
|
right: 15%;
|
|
3252
|
+
bottom: ${bottomOffset}px;
|
|
3230
3253
|
height: ${height}px;
|
|
3231
|
-
${position === 'top' ? `top: ${topOffset}px;` : `bottom: ${bottomOffset}px;`}
|
|
3232
3254
|
display: flex;
|
|
3233
3255
|
align-items: flex-end;
|
|
3234
3256
|
font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif;
|
|
@@ -3239,35 +3261,37 @@ export class WebPlayer extends BasePlayer {
|
|
|
3239
3261
|
// Large Blue Box
|
|
3240
3262
|
const newsBox = document.createElement('div');
|
|
3241
3263
|
newsBox.style.cssText = `
|
|
3242
|
-
width: ${height * 1.
|
|
3264
|
+
width: ${height * 1.6}px;
|
|
3243
3265
|
height: 100%;
|
|
3244
|
-
background: #1e3c72;
|
|
3266
|
+
background: linear-gradient(135deg, #1e3c72 0%, #2a5298 100%);
|
|
3245
3267
|
display: flex;
|
|
3246
3268
|
flex-direction: column;
|
|
3247
3269
|
justify-content: center;
|
|
3248
|
-
|
|
3270
|
+
align-items: center;
|
|
3249
3271
|
position: relative;
|
|
3250
|
-
clip-path: polygon(0 0, 100% 0,
|
|
3272
|
+
clip-path: polygon(0 0, 100% 0, 85% 100%, 0 100%);
|
|
3251
3273
|
flex-shrink: 0;
|
|
3274
|
+
z-index: 30;
|
|
3275
|
+
box-shadow: 5px 0 15px rgba(0,0,0,0.4);
|
|
3252
3276
|
`;
|
|
3253
3277
|
|
|
3254
3278
|
const bt = document.createElement('div');
|
|
3255
|
-
bt.style.cssText = `display: flex; gap: 5px; margin-bottom:
|
|
3279
|
+
bt.style.cssText = `display: flex; gap: 5px; margin-bottom: 2px; width: 100%; justify-content: center; padding-right: 15%;`;
|
|
3256
3280
|
|
|
3257
3281
|
const b1 = document.createElement('span');
|
|
3258
3282
|
b1.textContent = 'BREAKING';
|
|
3259
|
-
b1.style.cssText = `background: #c0392b; font-size:
|
|
3283
|
+
b1.style.cssText = `background: #c0392b; font-size: ${height * 0.14}px; font-weight: 900; padding: 2px 6px; border-radius: 2px; color: white;`;
|
|
3260
3284
|
bt.appendChild(b1);
|
|
3261
3285
|
|
|
3262
3286
|
const b2 = document.createElement('span');
|
|
3263
3287
|
b2.textContent = 'LIVE';
|
|
3264
|
-
b2.style.cssText = `background: #f1c40f; font-size:
|
|
3288
|
+
b2.style.cssText = `background: #f1c40f; font-size: ${height * 0.14}px; font-weight: 900; padding: 2px 6px; border-radius: 2px; color: black;`;
|
|
3265
3289
|
bt.appendChild(b2);
|
|
3266
3290
|
newsBox.appendChild(bt);
|
|
3267
3291
|
|
|
3268
3292
|
const nt = document.createElement('div');
|
|
3269
3293
|
nt.textContent = 'NEWS';
|
|
3270
|
-
nt.style.cssText = `font-size: ${height * 0.
|
|
3294
|
+
nt.style.cssText = `font-size: ${height * 0.45}px; font-weight: 900; color: white; letter-spacing: 4px; padding-right: 15%; line-height: 1;`;
|
|
3271
3295
|
newsBox.appendChild(nt);
|
|
3272
3296
|
ticker.appendChild(newsBox);
|
|
3273
3297
|
|
|
@@ -3276,18 +3300,20 @@ export class WebPlayer extends BasePlayer {
|
|
|
3276
3300
|
redBar.style.cssText = `
|
|
3277
3301
|
flex-grow: 1;
|
|
3278
3302
|
height: 50%;
|
|
3279
|
-
background: #c0392b;
|
|
3280
|
-
margin-left: -${height * 0.
|
|
3303
|
+
background: linear-gradient(90deg, #c0392b 0%, #e74c3c 100%);
|
|
3304
|
+
margin-left: -${height * 0.2}px;
|
|
3281
3305
|
display: flex;
|
|
3282
3306
|
align-items: center;
|
|
3283
|
-
padding-left:
|
|
3284
|
-
|
|
3307
|
+
padding-left: ${height * 0.3}px;
|
|
3308
|
+
padding-right: 20px;
|
|
3309
|
+
clip-path: polygon(5% 0, 100% 0, 100% 100%, 0 100%);
|
|
3310
|
+
z-index: 20;
|
|
3285
3311
|
`;
|
|
3286
3312
|
|
|
3287
3313
|
const tCont = document.createElement('div');
|
|
3288
3314
|
tCont.style.cssText = `flex-grow: 1; overflow: hidden; height: 100%; display: flex; align-items: center; color: white;`;
|
|
3289
3315
|
const track = this.createSeamlessScrollingTrack(config.items || [], config);
|
|
3290
|
-
track.style.fontSize = `${height * 0.
|
|
3316
|
+
track.style.fontSize = `${height * 0.22}px`;
|
|
3291
3317
|
track.style.fontWeight = '700';
|
|
3292
3318
|
tCont.appendChild(track);
|
|
3293
3319
|
redBar.appendChild(tCont);
|