@wscsports/blaze-web-sdk 0.23.0 → 0.24.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wscsports/blaze-web-sdk",
3
- "version": "0.23.0",
3
+ "version": "0.24.0",
4
4
  "main": "publish/index",
5
5
  "types": "publish/index",
6
6
  "files": [
@@ -238,6 +238,7 @@ export declare class MomentEvent {
238
238
  'cc_state': string;
239
239
  'content_extra_info': string;
240
240
  'custom_action_button_name': string;
241
+ 'follow_state': string | null;
241
242
  }
242
243
  export declare class WidgetEvent {
243
244
  'page_view_id': string;
@@ -460,6 +461,14 @@ export declare class EventsListener {
460
461
  removeAll(): void;
461
462
  }
462
463
 
464
+ export declare class FollowingsManager {
465
+ private static followedEntities;
466
+ static isFollowing(entityId: string): boolean;
467
+ static initialize(followedList: string[]): void;
468
+ static follow(entityId: string): void;
469
+ static unfollow(entityId: string): void;
470
+ }
471
+
463
472
  export declare class FullscreenManager {
464
473
  private isFullscreen;
465
474
  private isProgrammaticChange;
@@ -496,6 +505,7 @@ export * from './throttle';
496
505
  export * from './url';
497
506
  export * from './visiblity-manager.class';
498
507
  export * from './accessibility';
508
+ export * from './followings-manager.class';
499
509
 
500
510
  export interface IBlazeWidgetLabel {
501
511
  readonly _type: 'BlazeWidgetLabel';
@@ -1073,10 +1083,53 @@ export declare class BlazeCtaButton extends BaseWidget {
1073
1083
  clearAllAnimations(): void;
1074
1084
  }
1075
1085
 
1086
+ export declare class BlazeFollowButton extends BaseWidget {
1087
+ private playerStyle;
1088
+ private containerEl;
1089
+ private avatarEl;
1090
+ private chipEl;
1091
+ private chipContentWrapperEl;
1092
+ private checkMarkIconEl;
1093
+ private plusIconEl;
1094
+ private textEl;
1095
+ private _isFollowing;
1096
+ private _entityId?;
1097
+ private _entityType?;
1098
+ private _avatarUrl?;
1099
+ private _sourceId?;
1100
+ private _sourceContentType?;
1101
+ onToggle?: (e: Event, data: FollowingSharedContext) => void;
1102
+ constructor(playerStyle: MomentPlayerStyle | undefined);
1103
+ connectedCallback(): void;
1104
+ disconnectedCallback(): void;
1105
+ setEntity(id: string | undefined, type?: BlazeFollowEntityType): void;
1106
+ setAvatar(url: string | undefined): void;
1107
+ setSource(sourceId: string, contentType: ContentType): void;
1108
+ get entityId(): string | undefined;
1109
+ get entityType(): BlazeFollowEntityType | undefined;
1110
+ get isFollowed(): boolean;
1111
+ private handleClick;
1112
+ private handleStateChange;
1113
+ private updateAriaLabel;
1114
+ private onMouseEnter;
1115
+ private onMouseLeave;
1116
+ private setupContainer;
1117
+ private handlePressKeyboard;
1118
+ private setupAvatar;
1119
+ private setupChip;
1120
+ private setupIcons;
1121
+ private updateIconVisibility;
1122
+ private updateIconColors;
1123
+ private applyStateToUi;
1124
+ setAriaLabel(label: string): void;
1125
+ private updateAvatarBackground;
1126
+ }
1127
+
1076
1128
  export * from './share-button';
1077
1129
  export * from './button';
1078
1130
  export * from './cta-button';
1079
1131
  export * from './call-to-action.button';
1132
+ export * from './follow-button';
1080
1133
 
1081
1134
  export type ShareButtonType = 'copy-link' | 'linked-in';
1082
1135
  type AttributeType = 'size' | 'button-type';
@@ -1151,7 +1204,9 @@ export declare enum MomentAction {
1151
1204
  PlaybackInitialStart = "playback_initial_start",
1152
1205
  ClosedCaptionsOff = "cc_off",
1153
1206
  ClosedCaptionsOn = "cc_on",
1154
- CustomActionButtonClick = "custom_action_button_click"
1207
+ CustomActionButtonClick = "custom_action_button_click",
1208
+ Follow = "follow",
1209
+ Unfollow = "unfollow"
1155
1210
  }
1156
1211
  export declare enum VideoAction {
1157
1212
  VideoStart = "video_start",
@@ -1236,6 +1291,8 @@ export declare const ASPECT_RATIO_16_9_STRING = "16 / 9";
1236
1291
  export declare const ASPECT_RATIO_9_16_STRING = "9 / 16";
1237
1292
  export declare const ASPECT_RATIO_4_3_STRING = "4 / 3";
1238
1293
 
1294
+ export declare const FOLLOW_BUTTON_STATE_CHANGE = "follow-button-state-change";
1295
+
1239
1296
  export * from './accessibility.constants';
1240
1297
  export * from './ads.constants';
1241
1298
  export * from './analytics.constants';
@@ -1370,6 +1427,14 @@ export type ContentEntities = {
1370
1427
  teamId: string | null;
1371
1428
  playerId: string | null;
1372
1429
  };
1430
+ export type BlazeFollowEntity = {
1431
+ storageFile: {
1432
+ url: string;
1433
+ fileSize: number | null;
1434
+ };
1435
+ entityType: BlazeFollowEntityType;
1436
+ entityId: string;
1437
+ };
1373
1438
  export interface IContent {
1374
1439
  id: string;
1375
1440
  title: string;
@@ -1384,6 +1449,7 @@ export interface IContent {
1384
1449
  description?: string;
1385
1450
  closedCaptions?: IClosedCaption[];
1386
1451
  extraInfo: ExtraInfo;
1452
+ followEntities?: BlazeFollowEntity[];
1387
1453
  }
1388
1454
  export interface IBlazeContent {
1389
1455
  id: string;
@@ -1646,7 +1712,8 @@ export interface IBlazeVideo extends IBlazeContent {
1646
1712
  }
1647
1713
 
1648
1714
  export declare enum ActionHandlerId {
1649
- AddCustomActionButton = "addCustomActionButton"
1715
+ AddCustomActionButton = "addCustomActionButton",
1716
+ AddFollowButton = "addFollowButton"
1650
1717
  }
1651
1718
 
1652
1719
  export declare enum ButtonState {
@@ -1776,6 +1843,7 @@ export interface WidgetsTagNameMap {
1776
1843
  'blaze-button': BlazeButton;
1777
1844
  'blaze-button-cta': BlazeCtaButton;
1778
1845
  'blaze-call-to-action-button': BlazeCallToActionButton;
1846
+ 'blaze-follow-button': BlazeFollowButton;
1779
1847
  'blaze-typography': BlazeTypography;
1780
1848
  'blaze-timer': BlazeTimer;
1781
1849
  }
@@ -1822,6 +1890,7 @@ interface WidgetsTagNameOptionsMap {
1822
1890
  'blaze-button': {};
1823
1891
  'blaze-button-cta': {};
1824
1892
  'blaze-call-to-action-button': {};
1893
+ 'blaze-follow-button': {};
1825
1894
  'blaze-typography': {};
1826
1895
  }
1827
1896
  export declare abstract class WidgetsFactory {
@@ -1881,6 +1950,7 @@ export declare const closedCaptionsOffIconSvg = "data:image/svg+xml;base64,PHN2Z
1881
1950
  export declare const shareVideosIconSvg = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWY2MzY4Ij48cGF0aCBkPSJNNjgwLTgwcS01MCAwLTg1LTM1dC0zNS04NXEwLTYgMy0yOEwyODItMzkycS0xNiAxNS0zNyAyMy41dC00NSA4LjVxLTUwIDAtODUtMzV0LTM1LTg1cTAtNTAgMzUtODV0ODUtMzVxMjQgMCA0NSA4LjV0MzcgMjMuNWwyODEtMTY0cS0yLTctMi41LTEzLjVUNTYwLTc2MHEwLTUwIDM1LTg1dDg1LTM1cTUwIDAgODUgMzV0MzUgODVxMCA1MC0zNSA4NXQtODUgMzVxLTI0IDAtNDUtOC41VDU5OC02NzJMMzE3LTUwOHEyIDcgMi41IDEzLjV0LjUgMTQuNXEwIDgtLjUgMTQuNVQzMTctNDUybDI4MSAxNjRxMTYtMTUgMzctMjMuNXQ0NS04LjVxNTAgMCA4NSAzNXQzNSA4NXEwIDUwLTM1IDg1dC04NSAzNVptMC04MHExNyAwIDI4LjUtMTEuNVQ3MjAtMjAwcTAtMTctMTEuNS0yOC41VDY4MC0yNDBxLTE3IDAtMjguNSAxMS41VDY0MC0yMDBxMCAxNyAxMS41IDI4LjVUNjgwLTE2MFpNMjAwLTQ0MHExNyAwIDI4LjUtMTEuNVQyNDAtNDgwcTAtMTctMTEuNS0yOC41VDIwMC01MjBxLTE3IDAtMjguNSAxMS41VDE2MC00ODBxMCAxNyAxMS41IDI4LjVUMjAwLTQ0MFptNDgwLTI4MHExNyAwIDI4LjUtMTEuNVQ3MjAtNzYwcTAtMTctMTEuNS0yOC41VDY4MC04MDBxLTE3IDAtMjguNSAxMS41VDY0MC03NjBxMCAxNyAxMS41IDI4LjVUNjgwLTcyMFptMCA1MjBaTTIwMC00ODBabTQ4MC0yODBaIi8+PC9zdmc+";
1882
1951
  export declare const linkIconSvg = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjRweCIgdmlld0JveD0iMCAtOTYwIDk2MCA5NjAiIHdpZHRoPSIyNHB4IiBmaWxsPSIjNWY2MzY4Ij48cGF0aCBkPSJNNDQwLTI4MEgyODBxLTgzIDAtMTQxLjUtNTguNVQ4MC00ODBxMC04MyA1OC41LTE0MS41VDI4MC02ODBoMTYwdjgwSDI4MHEtNTAgMC04NSAzNXQtMzUgODVxMCA1MCAzNSA4NXQ4NSAzNWgxNjB2ODBaTTMyMC00NDB2LTgwaDMyMHY4MEgzMjBabTIwMCAxNjB2LTgwaDE2MHE1MCAwIDg1LTM1dDM1LTg1cTAtNTAtMzUtODV0LTg1LTM1SDUyMHYtODBoMTYwcTgzIDAgMTQxLjUgNTguNVQ4ODAtNDgwcTAgODMtNTguNSAxNDEuNVQ2ODAtMjgwSDUyMFoiLz48L3N2Zz4=";
1883
1952
  export declare const checkMarkSvg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPG1hc2sgaWQ9Im1hc2swXzUxMl8xMDY4IiBzdHlsZT0ibWFzay10eXBlOmFscGhhIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4PSIwIiB5PSIwIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiPgo8cmVjdCB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIGZpbGw9IiNEOUQ5RDkiLz4KPC9tYXNrPgo8ZyBtYXNrPSJ1cmwoI21hc2swXzUxMl8xMDY4KSI+CjxwYXRoIGQ9Ik05LjU1MDEgMThMMy44NTAxIDEyLjNMNS4yNzUxIDEwLjg3NUw5LjU1MDEgMTUuMTVMMTguNzI1MSA1Ljk3NDk4TDIwLjE1MDEgNy4zOTk5OEw5LjU1MDEgMThaIiBmaWxsPSIjRjBGMEYwIi8+CjwvZz4KPC9zdmc+Cg==";
1953
+ export declare const plusSvg = "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTIiIGhlaWdodD0iMTIiIHZpZXdCb3g9IjAgMCAxMiAxMiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgICAgICA8bGluZSB4MT0iNS45NTcxOCIgeTE9IjEyIiB4Mj0iNS45NTcxOCIgeTI9IjMuOTM0MDNlLTA4IiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIxLjgiLz4KICAgICAgICA8bGluZSB5MT0iNS45NTcwNiIgeDI9IjEyIiB5Mj0iNS45NTcwNiIgc3Ryb2tlPSJjdXJyZW50Q29sb3IiIHN0cm9rZS13aWR0aD0iMS44Ii8+CiAgICAgIDwvc3ZnPg==";
1884
1954
 
1885
1955
  export interface AccessibilityContext {
1886
1956
  trigger: 'user' | 'auto' | 'navigation' | 'modal';
@@ -1924,6 +1994,7 @@ export interface IContentWidgetButtons {
1924
1994
  prevStory?: HTMLElement;
1925
1995
  nextMoment?: HTMLElement;
1926
1996
  prevMoment?: HTMLElement;
1997
+ follow?: HTMLElement;
1927
1998
  }
1928
1999
  export interface IContentWidgetData {
1929
2000
  id: string;
@@ -1933,6 +2004,7 @@ export interface IContentWidgetData {
1933
2004
  isLiked?: boolean;
1934
2005
  hasClosedCaptions?: boolean;
1935
2006
  ctaText?: string;
2007
+ isFollowed?: boolean;
1936
2008
  }
1937
2009
  export interface IContentWidgetElements {
1938
2010
  widget: HTMLElement;
@@ -2004,6 +2076,7 @@ export interface IBlazeSDKOptions {
2004
2076
  layoutDirection?: LocaleDirectionType;
2005
2077
  shouldAllowClosedCaptions?: boolean;
2006
2078
  disableAutoLoadingContent?: boolean;
2079
+ followedEntities?: string[];
2007
2080
  }
2008
2081
 
2009
2082
  export interface IButtonPlayerNavigationConfig {
@@ -2075,6 +2148,10 @@ export interface IDrawable {
2075
2148
  render: () => void;
2076
2149
  }
2077
2150
 
2151
+ export interface IFollowingsManager {
2152
+ isFollowing(entityId: string): boolean;
2153
+ }
2154
+
2078
2155
  export interface IHttpResponse<T = any> extends IResponse<T> {
2079
2156
  httpStatus?: number;
2080
2157
  }
@@ -2134,6 +2211,7 @@ export * from './data-source.interface';
2134
2211
  export * from './database.interface';
2135
2212
  export * from './device.interface';
2136
2213
  export * from './drawable.interface';
2214
+ export * from './followings-manager.interface';
2137
2215
  export * from './http-response.interface';
2138
2216
  export * from './icons.interface';
2139
2217
  export * from './logger.interface';
@@ -3262,6 +3340,24 @@ export type BlazeMomentsPlayerCtaStyle = {
3262
3340
  fontFamily: string;
3263
3341
  backgroundColor?: string;
3264
3342
  borderColor?: string;
3343
+ isVisible: boolean;
3344
+ };
3345
+ type BlazeChipFollowStyle = {
3346
+ followedBackgroundColor: string;
3347
+ unfollowedBackgroundColor: string;
3348
+ color: string;
3349
+ };
3350
+ type BlazeAvatarFollowStyle = {
3351
+ borderWidth: string;
3352
+ followedBorderColor: string;
3353
+ unfollowedBorderColor: string;
3354
+ };
3355
+ export type BlazeMomentsPlayerFollowButtonStyle = {
3356
+ isVisible: boolean;
3357
+ variant: BlazeFollowButtonVariant;
3358
+ followEntityTypePriority?: BlazeSelectableEntityType[];
3359
+ avatar: BlazeAvatarFollowStyle;
3360
+ chip: BlazeChipFollowStyle;
3265
3361
  };
3266
3362
  type BlazeMomentsPlayerCTAPositioning = 'CTA_BELLOW_BOTTOM_BUTTONS_BOX' | 'CTA_NEXT_TO_BOTTOM_BUTTONS_BOX';
3267
3363
  type BlazeMomentsPlayerCTAHorizontalAlignment = 'START' | 'CENTER' | 'END' | 'FULL_AVAILABLE_WIDTH';
@@ -3301,6 +3397,7 @@ export interface MomentPlayerStyle {
3301
3397
  contentBoxHorizontalSpacing: string;
3302
3398
  seekBar: BlazeMomentsPlayerSeekBarStyle;
3303
3399
  ctaButton: BlazeMomentsPlayerCtaStyle;
3400
+ followButton: BlazeMomentsPlayerFollowButtonStyle;
3304
3401
  }
3305
3402
  export interface VideoPlayerStyle {
3306
3403
  headingText: BlazeVideosPlayerHeadingTextStyle;
@@ -3333,6 +3430,7 @@ export interface BlazeVideosPlayerCtaStyle {
3333
3430
  visibility: BlazeVideoPlayerVisibility;
3334
3431
  borderColor: string;
3335
3432
  horizontalAlignment: ButtonPositionType;
3433
+ isVisible: boolean;
3336
3434
  }
3337
3435
  export type BlazeVideosPlayerCtaIconStyle = {
3338
3436
  position: 'START';
@@ -3356,6 +3454,7 @@ export interface CtaButtonStyle {
3356
3454
  width: string;
3357
3455
  height: string;
3358
3456
  position: ButtonPositionType;
3457
+ isVisible: boolean;
3359
3458
  icon: IconStyle;
3360
3459
  }
3361
3460
  export interface IconStyle {
@@ -3400,9 +3499,12 @@ export type CustomActionButtonOptions = {
3400
3499
  buttonName: string;
3401
3500
  onClick: (e: MouseEvent | Event, data: ContentEntities | null) => void;
3402
3501
  };
3502
+ export type FollowButtonOptions = {
3503
+ onClick: (e: MouseEvent | Event, data: FollowingSharedContext) => void;
3504
+ };
3403
3505
  export type ActionHandler = {
3404
3506
  actionId: `${ActionHandlerId}`;
3405
- options: CustomActionButtonOptions;
3507
+ options: CustomActionButtonOptions | FollowButtonOptions;
3406
3508
  };
3407
3509
 
3408
3510
  export type AnimationType = 'Growing' | 'Shrinking' | 'BottomToTop';
@@ -3855,6 +3957,16 @@ export type ElementType = WidgetElementType | ComponentsElementType;
3855
3957
 
3856
3958
  export type EnvironmentType = 'prod' | 'uat' | 'local';
3857
3959
 
3960
+ export type BlazeFollowButtonVariant = 'icon' | 'text';
3961
+ export type FollowingSharedContext = {
3962
+ sourceId: string;
3963
+ sourceContentType: ContentType;
3964
+ newFollowingState: boolean;
3965
+ followEntity: Omit<BlazeFollowEntity, 'storageFile'>;
3966
+ };
3967
+ export type BlazeSelectableEntityType = 'Player' | 'Team' | 'Property' | 'FirstAvailable';
3968
+ export type BlazeFollowEntityType = Omit<BlazeSelectableEntityType, 'FirstAvailable'>;
3969
+
3858
3970
  export type StoryGestureType = 'Swipe Up' | 'CTA Click';
3859
3971
  export type MomentGestureType = 'CTA Click';
3860
3972
 
@@ -3905,6 +4017,7 @@ export * from './widget-view-options.type';
3905
4017
  export * from './content-item.type';
3906
4018
  export * from './play-content-options.type';
3907
4019
  export * from './recommendations.type';
4020
+ export * from './follow-button.type';
3908
4021
 
3909
4022
  export type EntitiesType = 'playerId' | 'teamId' | 'gameId' | 'roundId';
3910
4023
  export type PerItemStyleOverrides = Partial<Record<EntitiesType, Array<{
@@ -4068,6 +4181,9 @@ export declare function transformContentsArray(items: ContentItem[]): BlazeConte
4068
4181
  type CountryCode = typeof CountryCodes[number];
4069
4182
  export declare function isValidCountryCode(countryCode: string): countryCode is CountryCode;
4070
4183
 
4184
+ export declare const getFollowEntityByPriority: (followEntityTypePriority?: BlazeSelectableEntityType[], followEntities?: BlazeFollowEntity[]) => BlazeFollowEntity | null;
4185
+ export declare const generateFollowStateForAnalytics: (entityId?: string, entityType?: BlazeFollowEntityType, followingsManager?: IFollowingsManager) => string | null;
4186
+
4071
4187
  export declare function GuardNullOrEmpty(name: string, value: any): void;
4072
4188
  export declare function isStory(content: IContent): content is IStory;
4073
4189
 
@@ -6264,6 +6380,7 @@ export declare class BlazeWidgetMoment extends BlazeWidgetContent {
6264
6380
  headElement: BlazeDiv;
6265
6381
  bodyElement: BlazeDiv;
6266
6382
  ctaButtonElement: BlazeCtaButton;
6383
+ followButtonElement?: BlazeFollowButton;
6267
6384
  isInit: boolean;
6268
6385
  isActive: boolean;
6269
6386
  isMomentPausedByPlayPauseButton: boolean;
@@ -6304,6 +6421,7 @@ export declare class BlazeWidgetMoment extends BlazeWidgetContent {
6304
6421
  configureButtons(): Promise<void>;
6305
6422
  appendButtonsContainer(): void;
6306
6423
  handleMobileSpecificFeatures(): void;
6424
+ configureFollowButton(): void;
6307
6425
  configureContentBody(): void;
6308
6426
  appendBottomContainer(): void;
6309
6427
  private updateLayoutPositioning;
@@ -6341,6 +6459,7 @@ export declare class BlazeWidgetMoment extends BlazeWidgetContent {
6341
6459
  handleOnCustomActionButtonClick(e: MouseEvent, handlerOptions: CustomActionButtonOptions): void;
6342
6460
  handleOnClose(): void;
6343
6461
  handleOnLikeClick(): void;
6462
+ handleFollowAnalytics(data: FollowingSharedContext): void;
6344
6463
  pause(): void;
6345
6464
  resume(): void;
6346
6465
  removeResumeButtonFromScreen(): void;