be-components 1.9.8 → 1.9.9

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.
Files changed (47) hide show
  1. package/lib/commonjs/Components/Icons.js +145 -0
  2. package/lib/commonjs/Components/Icons.js.map +1 -1
  3. package/lib/commonjs/Components/ViewportObserver.js.map +1 -1
  4. package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js +7 -2
  5. package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js.map +1 -1
  6. package/lib/commonjs/MarketComponents/components/BetScopeIndicator.js +19 -0
  7. package/lib/commonjs/MarketComponents/components/BetScopeIndicator.js.map +1 -0
  8. package/lib/commonjs/MarketComponents/components/MarketButton/index.js +6 -1
  9. package/lib/commonjs/MarketComponents/components/MarketButton/index.js.map +1 -1
  10. package/lib/commonjs/MarketComponents/components/OrderGradeBar.js +2 -2
  11. package/lib/commonjs/MarketComponents/components/OrderGradeBar.js.map +1 -1
  12. package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js +115 -7
  13. package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
  14. package/lib/module/Components/Icons.js +145 -0
  15. package/lib/module/Components/Icons.js.map +1 -1
  16. package/lib/module/Components/ViewportObserver.js.map +1 -1
  17. package/lib/module/MarketComponents/components/AthleteMarket/index.js +8 -3
  18. package/lib/module/MarketComponents/components/AthleteMarket/index.js.map +1 -1
  19. package/lib/module/MarketComponents/components/BetScopeIndicator.js +12 -0
  20. package/lib/module/MarketComponents/components/BetScopeIndicator.js.map +1 -0
  21. package/lib/module/MarketComponents/components/MarketButton/index.js +6 -1
  22. package/lib/module/MarketComponents/components/MarketButton/index.js.map +1 -1
  23. package/lib/module/MarketComponents/components/OrderGradeBar.js +2 -2
  24. package/lib/module/MarketComponents/components/OrderGradeBar.js.map +1 -1
  25. package/lib/module/MarketComponents/components/TeamEventMarket/index.js +116 -8
  26. package/lib/module/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
  27. package/lib/typescript/src/Components/Icons.d.ts +1 -0
  28. package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
  29. package/lib/typescript/src/Components/ViewportObserver.d.ts.map +1 -1
  30. package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts +2 -2
  31. package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts.map +1 -1
  32. package/lib/typescript/src/MarketComponents/components/BetScopeIndicator.d.ts +7 -0
  33. package/lib/typescript/src/MarketComponents/components/BetScopeIndicator.d.ts.map +1 -0
  34. package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts +2 -2
  35. package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts.map +1 -1
  36. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts +4 -2
  37. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts.map +1 -1
  38. package/lib/typescript/src/MarketComponents/index.d.ts +5 -4
  39. package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -1
  40. package/package.json +1 -1
  41. package/src/Components/Icons.tsx +48 -0
  42. package/src/Components/ViewportObserver.tsx +2 -4
  43. package/src/MarketComponents/components/AthleteMarket/index.tsx +12 -4
  44. package/src/MarketComponents/components/BetScopeIndicator.tsx +17 -0
  45. package/src/MarketComponents/components/MarketButton/index.tsx +5 -2
  46. package/src/MarketComponents/components/OrderGradeBar.tsx +2 -2
  47. package/src/MarketComponents/components/TeamEventMarket/index.tsx +66 -12
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import { View } from 'react-native';
3
+
4
+ type BetScopeIndicatorProps = {
5
+ bet_scope_grade?: number
6
+ }
7
+
8
+ const BetScopeIndicator = ({ bet_scope_grade }:BetScopeIndicatorProps) => {
9
+ if(!bet_scope_grade || bet_scope_grade < 100){ return <></> }
10
+ return (
11
+ <View>
12
+
13
+ </View>
14
+ )
15
+ }
16
+
17
+ export default React.memo(BetScopeIndicator, (left, right) => left.bet_scope_grade == right.bet_scope_grade)
@@ -43,7 +43,7 @@ const MarketCard = ({ side_option, locked, show_grades, market, trade, order, on
43
43
  }, 600);
44
44
  }
45
45
  },[trade])
46
-
46
+
47
47
  return (
48
48
  <TouchableOpacity
49
49
  style={{ flex:1, backgroundColor:color, borderRadius:4}}
@@ -81,4 +81,7 @@ const MarketCard = ({ side_option, locked, show_grades, market, trade, order, on
81
81
  )
82
82
  }
83
83
 
84
- export default MarketCard
84
+ export default React.memo(MarketCard, (left, right) => {
85
+ if(JSON.stringify(left) != JSON.stringify(right)){ return false }
86
+ return true
87
+ })
@@ -68,7 +68,7 @@ const OrderGradeBar = ({ grade, view_type, mask, onSelectGrade }:OrderGradeBarPr
68
68
  if(!grade && grade !== 0){ return <></> }
69
69
  //Check if the grade is greater than the minumum of the box
70
70
  const filled = grade >= data.item.min ? true : false
71
- const success = grade > 97.5 ? true : false
71
+ const success = grade > 100 ? true : false
72
72
  const locked = !premium ? true : false
73
73
 
74
74
  //Render the box
@@ -84,7 +84,7 @@ const OrderGradeBar = ({ grade, view_type, mask, onSelectGrade }:OrderGradeBarPr
84
84
  }
85
85
 
86
86
  if(view_type == 'market'){
87
- const success = grade > 97.5 ? true : false
87
+ const success = grade > 100 ? true : false
88
88
  if(!premium){
89
89
  return (<></>)
90
90
  }
@@ -1,6 +1,6 @@
1
- import React, { useCallback, useEffect, useState } from 'react';
1
+ import React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
2
  import { View, Image, FlatList, TouchableOpacity, ActivityIndicator, ScrollView } from 'react-native';
3
- import type { AthleteProps, BestAvailableOrderProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, MarketSideOptionProps, OrderProps, SquaresCompetitionProps, TradeProps } from '../../../types';
3
+ import type { AthleteProps, BestAvailableOrderProps, CompanyProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, MarketSideOptionProps, OrderProps, SquaresCompetitionProps, TradeProps } from '../../../types';
4
4
  import { view_styles } from '../../../constants/styles';
5
5
  import { Button, Icons, LinearDiagnal, Text } from '../../../Components';
6
6
  import {TeamEventMarketHelpers} from './api';
@@ -11,6 +11,9 @@ import EventMarket from '../../components/EventMarket';
11
11
 
12
12
  import { MarketComponentApi, MarketComponentHelpers } from '../../api';
13
13
  import { MarketButtonHelpers } from '../MarketButton/api';
14
+ import LinearGradient from 'react-native-linear-gradient';
15
+ import { useIsInViewport } from '../../../Components/ViewportObserver';
16
+ import type { BEEventProps } from '../../../Observer/api/types';
14
17
 
15
18
  type TeamEventMarketProps = {
16
19
  event:EventProps,
@@ -25,6 +28,7 @@ type TeamEventMarketProps = {
25
28
  default_price_view: 'last_trade'|'best_available',
26
29
  onView:(data:{ event_id:string, event_type:string, market_id:string, side_type?:string, side_id?:string }) => void,
27
30
  onOrder:(order:OrderProps) => void,
31
+ onEvent?:(be_event:BEEventProps) => void,
28
32
  onExpand?:(expanded:boolean) => void,
29
33
  show_grades?:boolean,
30
34
  onCompetitionSelect:(competition_id:string) => void,
@@ -34,7 +38,7 @@ type TeamEventMarketProps = {
34
38
  onActivate?:(event_id:string, event_type:string) => void
35
39
  activate_loading?:boolean
36
40
  }
37
- const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, competitions, squares_competition, show_grades, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onSquaresSelect, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets, onTradeLongPress, onActivate }:TeamEventMarketProps) => {
41
+ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, competitions, squares_competition, show_grades, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onSquaresSelect, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets, onTradeLongPress, onActivate, onEvent }:TeamEventMarketProps) => {
38
42
  const [ expanded_data, setExpandedData ] = useState<{
39
43
  expanded:boolean,
40
44
  loaded:boolean,
@@ -46,11 +50,12 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
46
50
  expanded:false,
47
51
  athletes:[]
48
52
  })
49
- const [ sponsor, setSponsor ] = useState(false);
53
+ const [ sponsor, setSponsor ] = useState<CompanyProps|undefined>(undefined);
50
54
  const [ competitions_expanded, setCompetitionsExpanded ] = useState(false);
51
55
  const { expanded, athletes, loaded, loading } = expanded_data;
52
56
  const event_status = TeamEventMarketHelpers.getEventStatus(event);
53
-
57
+ const ref = useRef(null)
58
+ const isInViewport = useIsInViewport(ref)
54
59
 
55
60
  useEffect(() => {
56
61
  MarketComponentApi.setEnvironment();
@@ -58,6 +63,24 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
58
63
  if(event.sponsor_id){ getCompanyFromServer(event.sponsor_id) }
59
64
  },[])
60
65
 
66
+ useEffect(() => {
67
+ if(isInViewport && onEvent && event.sponsor_id){
68
+ let be_event:BEEventProps = {
69
+ event_name:'company_view',
70
+ event_data: {
71
+ view_type: 'contest',
72
+ view_location: 'list',
73
+ contest_type:'team',
74
+ contest_id:event.event_id,
75
+ company_id: event.sponsor_id
76
+ },
77
+ level:2
78
+ }
79
+ onEvent(be_event)
80
+ }
81
+ },[isInViewport])
82
+
83
+
61
84
  const getCompanyFromServer = async(company_id:string) => {
62
85
  const resp = await MarketComponentApi.getCompanyById(company_id)
63
86
  if(!resp?.company){ return }
@@ -84,7 +107,9 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
84
107
  })
85
108
  }
86
109
 
87
- const primary_markets = TeamEventMarketHelpers.getPrimaryMarkets(event, markets);
110
+ const primary_markets = useMemo(() => {
111
+ return TeamEventMarketHelpers.getPrimaryMarkets(event, markets)
112
+ }, [markets.length])
88
113
 
89
114
  const handleSelectCompetition = () => {
90
115
  if(!competitions || competitions.length == 0){ return }
@@ -146,7 +171,8 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
146
171
  <Text size={12} color={Colors.brand.midnight} textAlign='center'>{data.item.type.toUpperCase()}</Text>
147
172
  </View>
148
173
  )
149
- },[])
174
+ },[primary_markets.length])
175
+
150
176
 
151
177
  const renderNonPrimaryMarkets = useCallback((data: { item:EventOrderStatProps, index:number }) => {
152
178
  const market = markets.find(m => m.market_id == data.item.market_id);
@@ -219,12 +245,36 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
219
245
  if(!event.away || !event.home){ return <></> }
220
246
 
221
247
  const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
222
- const { non_primary_markets, available } = TeamEventMarketHelpers.sortNonPrimaryMarkets(TeamEventMarketHelpers.getNonPrimaryMarkets(event, markets), event_order_stats, latest_trades)
248
+ const { non_primary_markets, available } = useMemo(() => TeamEventMarketHelpers.sortNonPrimaryMarkets(TeamEventMarketHelpers.getNonPrimaryMarkets(event, markets), event_order_stats, latest_trades),[])
249
+
223
250
  return (
224
- <View style={{ ...view_styles.section, borderWidth:1, borderColor:Colors.shades.shade600 }}>
251
+ <View ref={ref} style={{ ...view_styles.section, borderWidth:1, borderColor:Colors.shades.shade600 }}>
225
252
  {sponsor ?
226
- <Text>HEY</Text>
227
- :<></>}
253
+ <LinearGradient style={{ marginTop:-1, marginLeft:-1, marginRight:-1, padding:10, flexDirection:'row', borderTopRightRadius:8, borderTopLeftRadius:8 }} start={{x: 0, y: 0}} end={{x: 1, y: 0}} colors={[sponsor.brand_primary ?? Colors.brand.midnight, sponsor.brand_secondary ?? Colors.brand.cyan]}>
254
+ <View style={{ height:30, width:30, borderRadius:4, backgroundColor:Colors.shades.white }}>
255
+ <Image
256
+ source={{ uri: sponsor.company_image?.url }}
257
+ style={{ height:30, width:30, borderRadius:4 }}
258
+ resizeMode='cover'
259
+ />
260
+ </View>
261
+ <View style={{ flex:1, marginLeft:10 }}>
262
+ <Text size={12} color={Colors.shades.white} weight='bold'>Brought to you by {sponsor.company_name}</Text>
263
+ <View style={{ marginTop:3, flexDirection:'row', alignItems:'center' }}>
264
+ {show_id ?
265
+ <Text style={{ marginLeft:2, marginRight:3 }} size={12} color={Colors.shades.white} weight='semibold' selectable>{event.event_id} </Text>
266
+ :<></>}
267
+ {event.event_sub_title ?
268
+ <Text size={12} color={Colors.shades.white} weight='semibold'>{event.event_sub_title}</Text>
269
+ :<></>}
270
+ </View>
271
+ </View>
272
+ <View style={{ flexDirection:'row', alignItems:'center' }}>
273
+ <Icons.TVIcon size={10} color={Colors.shades.white} />
274
+ <Text style={{ marginLeft:8 }} size={12} color={Colors.shades.white} weight='semibold'>{event.info?.broadcast?.network}</Text>
275
+ </View>
276
+ </LinearGradient>
277
+ :
228
278
  <View nativeID='event_header_data' style={{ flexDirection:'row', padding:10, borderBottomWidth:1, borderBottomColor:Colors.shades.shade600 }}>
229
279
  {onActivate && event_status != 'closed' ?
230
280
  <Button
@@ -250,6 +300,7 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
250
300
  <Text style={{ marginLeft:8 }} size={12} color={Colors.brand.midnight} weight='semibold'>{event.info?.broadcast?.network}</Text>
251
301
  </View>
252
302
  </View>
303
+ }
253
304
  <View nativeID='primary_markets' style={{ flexDirection:'row' }}>
254
305
  <View nativeID='team_details' style={{ flex:1, padding:5, paddingRight:0 }}>
255
306
  <View style={{ flexDirection:'row', alignItems:'center', marginTop:5, marginBottom:5, marginLeft:10 }}>
@@ -418,4 +469,7 @@ const TeamEventMarket = ({ event, init_expanded, show_id, activate_loading, comp
418
469
  )
419
470
  }
420
471
 
421
- export default TeamEventMarket
472
+ export default React.memo(TeamEventMarket, (left, right) => {
473
+ if(JSON.stringify(left) != JSON.stringify(right)){ return false }
474
+ return true
475
+ })