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.
- package/lib/commonjs/Components/Icons.js +145 -0
- package/lib/commonjs/Components/Icons.js.map +1 -1
- package/lib/commonjs/Components/ViewportObserver.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js +7 -2
- package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/BetScopeIndicator.js +19 -0
- package/lib/commonjs/MarketComponents/components/BetScopeIndicator.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/MarketButton/index.js +6 -1
- package/lib/commonjs/MarketComponents/components/MarketButton/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/OrderGradeBar.js +2 -2
- package/lib/commonjs/MarketComponents/components/OrderGradeBar.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js +115 -7
- package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
- package/lib/module/Components/Icons.js +145 -0
- package/lib/module/Components/Icons.js.map +1 -1
- package/lib/module/Components/ViewportObserver.js.map +1 -1
- package/lib/module/MarketComponents/components/AthleteMarket/index.js +8 -3
- package/lib/module/MarketComponents/components/AthleteMarket/index.js.map +1 -1
- package/lib/module/MarketComponents/components/BetScopeIndicator.js +12 -0
- package/lib/module/MarketComponents/components/BetScopeIndicator.js.map +1 -0
- package/lib/module/MarketComponents/components/MarketButton/index.js +6 -1
- package/lib/module/MarketComponents/components/MarketButton/index.js.map +1 -1
- package/lib/module/MarketComponents/components/OrderGradeBar.js +2 -2
- package/lib/module/MarketComponents/components/OrderGradeBar.js.map +1 -1
- package/lib/module/MarketComponents/components/TeamEventMarket/index.js +116 -8
- package/lib/module/MarketComponents/components/TeamEventMarket/index.js.map +1 -1
- package/lib/typescript/src/Components/Icons.d.ts +1 -0
- package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
- package/lib/typescript/src/Components/ViewportObserver.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts +2 -2
- package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/BetScopeIndicator.d.ts +7 -0
- package/lib/typescript/src/MarketComponents/components/BetScopeIndicator.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts +2 -2
- package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts +4 -2
- package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/index.d.ts +5 -4
- package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/Components/Icons.tsx +48 -0
- package/src/Components/ViewportObserver.tsx +2 -4
- package/src/MarketComponents/components/AthleteMarket/index.tsx +12 -4
- package/src/MarketComponents/components/BetScopeIndicator.tsx +17 -0
- package/src/MarketComponents/components/MarketButton/index.tsx +5 -2
- package/src/MarketComponents/components/OrderGradeBar.tsx +2 -2
- 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 >
|
|
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 >
|
|
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(
|
|
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 =
|
|
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
|
-
<
|
|
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
|
+
})
|