be-components 1.6.7 → 1.7.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/lib/commonjs/MarketComponents/api/index.js +34 -0
- package/lib/commonjs/MarketComponents/api/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js +15 -3
- package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/components/AthleteTournamentMarket/index.js +197 -0
- package/lib/commonjs/MarketComponents/components/AthleteTournamentMarket/index.js.map +1 -0
- package/lib/commonjs/MarketComponents/components/EventMarket/index.js +3 -2
- package/lib/commonjs/MarketComponents/components/EventMarket/index.js.map +1 -1
- package/lib/commonjs/MarketComponents/index.js +7 -1
- package/lib/commonjs/MarketComponents/index.js.map +1 -1
- package/lib/module/MarketComponents/api/index.js +34 -0
- package/lib/module/MarketComponents/api/index.js.map +1 -1
- package/lib/module/MarketComponents/components/AthleteMarket/index.js +15 -3
- package/lib/module/MarketComponents/components/AthleteMarket/index.js.map +1 -1
- package/lib/module/MarketComponents/components/AthleteTournamentMarket/index.js +190 -0
- package/lib/module/MarketComponents/components/AthleteTournamentMarket/index.js.map +1 -0
- package/lib/module/MarketComponents/components/EventMarket/index.js +3 -2
- package/lib/module/MarketComponents/components/EventMarket/index.js.map +1 -1
- package/lib/module/MarketComponents/index.js +7 -1
- package/lib/module/MarketComponents/index.js.map +1 -1
- package/lib/typescript/src/MarketComponents/api/index.d.ts +4 -0
- package/lib/typescript/src/MarketComponents/api/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts +3 -1
- package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/components/AthleteTournamentMarket/index.d.ts +29 -0
- package/lib/typescript/src/MarketComponents/components/AthleteTournamentMarket/index.d.ts.map +1 -0
- package/lib/typescript/src/MarketComponents/components/EventMarket/index.d.ts +2 -1
- package/lib/typescript/src/MarketComponents/components/EventMarket/index.d.ts.map +1 -1
- package/lib/typescript/src/MarketComponents/index.d.ts +67 -0
- package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/MarketComponents/api/index.ts +18 -0
- package/src/MarketComponents/components/AthleteMarket/index.tsx +10 -2
- package/src/MarketComponents/components/AthleteTournamentMarket/index.tsx +123 -0
- package/src/MarketComponents/components/EventMarket/index.tsx +4 -1
- package/src/MarketComponents/index.tsx +7 -1
- package/src/types.d.ts +1 -0
|
@@ -16,6 +16,8 @@ type AthleteMarketProps = {
|
|
|
16
16
|
hide_stat_banner?:boolean,
|
|
17
17
|
width?:number,
|
|
18
18
|
market:MarketProps,
|
|
19
|
+
show_event?:boolean,
|
|
20
|
+
hide_liquidity?:boolean,
|
|
19
21
|
latest_trades:TradeProps[],
|
|
20
22
|
best_available_orders:BestAvailableOrderProps[],
|
|
21
23
|
event_order_stats:EventOrderStatProps[],
|
|
@@ -26,7 +28,7 @@ type AthleteMarketProps = {
|
|
|
26
28
|
onTradeLongPress:(trade:TradeProps) => void
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }:AthleteMarketProps) => {
|
|
31
|
+
const AthleteMarket = ({ event, show_event, hide_liquidity, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }:AthleteMarketProps) => {
|
|
30
32
|
const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
|
|
31
33
|
|
|
32
34
|
const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
|
|
@@ -67,7 +69,11 @@ const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_
|
|
|
67
69
|
right_color={'#ebd197'}
|
|
68
70
|
/>
|
|
69
71
|
:<></>}
|
|
70
|
-
|
|
72
|
+
{show_event ?
|
|
73
|
+
<View style={{ padding:5, backgroundColor:Colors.shades.shade100 }}>
|
|
74
|
+
<Text size={12} color={Colors.brand.midnight} textAlign='center' weight='semibold'>{event.event_title}</Text>
|
|
75
|
+
</View>
|
|
76
|
+
:<></>}
|
|
71
77
|
<View style={{ ...view_styles.section_body, flex:1, padding:0, justifyContent:'center', alignItems:'center' }}>
|
|
72
78
|
<AthleteImage
|
|
73
79
|
athlete={athlete}
|
|
@@ -89,6 +95,7 @@ const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_
|
|
|
89
95
|
})}
|
|
90
96
|
|
|
91
97
|
</View>
|
|
98
|
+
{!hide_liquidity ?
|
|
92
99
|
<View style={{ backgroundColor:Colors.shades.shade100, padding:10, flexDirection:'row', alignItems:'center', borderBottomLeftRadius:8, borderBottomRightRadius:8 }}>
|
|
93
100
|
<TouchableOpacity style={{ flex:1, flexDirection:'row' }} onPress={() => {
|
|
94
101
|
onView({
|
|
@@ -108,6 +115,7 @@ const AthleteMarket = ({ event, hide_stat_banner, width, athlete, market, event_
|
|
|
108
115
|
</View>
|
|
109
116
|
</TouchableOpacity>
|
|
110
117
|
</View>
|
|
118
|
+
:<></>}
|
|
111
119
|
</View>
|
|
112
120
|
)
|
|
113
121
|
}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { View, TouchableOpacity } from 'react-native';
|
|
3
|
+
import type { AthleteProps, BestAvailableOrderProps, EventOrderStatProps, MarketProps, MarketSideOptionProps, OrderProps, TournamentProps, TradeProps } from "../../../types"
|
|
4
|
+
import { view_styles } from '../../../constants/styles';
|
|
5
|
+
import MarketButton from '../../components/MarketButton';
|
|
6
|
+
import { Icons, LinearDiagnal, Text } from '../../../Components';
|
|
7
|
+
import Colors from '../../../constants/colors';
|
|
8
|
+
import { MarketButtonHelpers } from '../MarketButton/api';
|
|
9
|
+
import { MarketComponentHelpers } from '../../api';
|
|
10
|
+
import { AthleteImage } from '../../../Components/Jerseys';
|
|
11
|
+
|
|
12
|
+
type AthleteTournamentMarketProps = {
|
|
13
|
+
tournament:TournamentProps,
|
|
14
|
+
event_type:'team'|'tournament'|'match',
|
|
15
|
+
athlete:AthleteProps,
|
|
16
|
+
hide_stat_banner?:boolean,
|
|
17
|
+
width?:number,
|
|
18
|
+
market:MarketProps,
|
|
19
|
+
show_event?:boolean,
|
|
20
|
+
hide_liquidity?:boolean,
|
|
21
|
+
latest_trades:TradeProps[],
|
|
22
|
+
best_available_orders:BestAvailableOrderProps[],
|
|
23
|
+
event_order_stats:EventOrderStatProps[],
|
|
24
|
+
default_price_view:'last_trade'|'best_available',
|
|
25
|
+
onOrder:(order:OrderProps) => void,
|
|
26
|
+
show_grades?:boolean,
|
|
27
|
+
onView:(data:{event_id:string, event_type:string, market_id:string, side_type:'athlete', side_id:string}) => void,
|
|
28
|
+
onTradeLongPress:(trade:TradeProps) => void
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const AthleteTournamentMarket = ({ tournament, show_event, hide_liquidity, hide_stat_banner, width, athlete, market, event_order_stats, default_price_view, latest_trades, show_grades, best_available_orders, onOrder, onView, onTradeLongPress }:AthleteTournamentMarketProps) => {
|
|
32
|
+
const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
|
|
33
|
+
|
|
34
|
+
const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
|
|
35
|
+
const ba_order = best_available_orders.find(o => o.market_id == market.market_id && o.side_type == 'athlete' && o.side_id == athlete.athlete_id && o.side == data.item.side);
|
|
36
|
+
const side_details = MarketComponentHelpers.getTournamentSideIds(market, data.item, athlete, undefined);
|
|
37
|
+
if(!side_details){ return <></> }
|
|
38
|
+
let trade = MarketButtonHelpers.getVisibleTrade(default_price_view, data.market, data.item, latest_trades, best_available_orders, side_details.side_id, side_details.reversed_side_id);
|
|
39
|
+
if(!trade){
|
|
40
|
+
trade = MarketButtonHelpers.getTradeFromMarket(market, tournament.tournament_id, 'team', data.item.side, data.item.id_source, side_details.side_id, side_details.reversed_side_id);
|
|
41
|
+
}
|
|
42
|
+
return (
|
|
43
|
+
<View style={{ margin:2, height:50, width:75 }}>
|
|
44
|
+
<MarketButton
|
|
45
|
+
side_option={data.item}
|
|
46
|
+
market={data.market}
|
|
47
|
+
trade={trade}
|
|
48
|
+
show_grades={show_grades}
|
|
49
|
+
order={ba_order}
|
|
50
|
+
onLongPress={onTradeLongPress}
|
|
51
|
+
onPress={(order) => {
|
|
52
|
+
const order_title = MarketComponentHelpers.getOrderTitleForTournament(order, market, tournament, athlete);
|
|
53
|
+
if(!order_title){ return alert('Unable to process order') }
|
|
54
|
+
onOrder({ ...order, title: order_title })
|
|
55
|
+
}}
|
|
56
|
+
/>
|
|
57
|
+
</View>
|
|
58
|
+
)
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<View style={{ ...view_styles.section, flex:1, borderWidth:1, borderColor:Colors.shades.shade600, width }}>
|
|
63
|
+
{!hide_stat_banner ?
|
|
64
|
+
<LinearDiagnal
|
|
65
|
+
label={market.stat_label ?? market.type}
|
|
66
|
+
label_size={14}
|
|
67
|
+
style={{ borderTopLeftRadius:8, padding:5 }}
|
|
68
|
+
left_color={Colors.incentive.gold}
|
|
69
|
+
right_color={'#ebd197'}
|
|
70
|
+
/>
|
|
71
|
+
:<></>}
|
|
72
|
+
{show_event ?
|
|
73
|
+
<View style={{ padding:5, backgroundColor:Colors.shades.shade100 }}>
|
|
74
|
+
<Text size={12} color={Colors.brand.midnight} textAlign='center' weight='semibold'>{tournament.tournament_name}</Text>
|
|
75
|
+
</View>
|
|
76
|
+
:<></>}
|
|
77
|
+
<View style={{ ...view_styles.section_body, flex:1, padding:0, justifyContent:'center', alignItems:'center' }}>
|
|
78
|
+
<AthleteImage
|
|
79
|
+
athlete={athlete}
|
|
80
|
+
size={50}
|
|
81
|
+
number_size={12}
|
|
82
|
+
/>
|
|
83
|
+
<View style={{ padding:10, paddingBottom:0 }}>
|
|
84
|
+
<Text weight='bold' size={14} color={Colors.brand.midnight} textAlign='center'>{athlete.first_name} {athlete.last_name}</Text>
|
|
85
|
+
<Text style={{ marginTop:3 }} color={Colors.brand.midnight} weight='regular' textAlign='center' size={12}>{athlete.team?`${athlete.team.abbr}`:''} ({athlete.position})</Text>
|
|
86
|
+
</View>
|
|
87
|
+
</View>
|
|
88
|
+
<View nativeID='market_sides' style={{ flexDirection:'row', justifyContent:'center', alignItems:'center', padding:10 }}>
|
|
89
|
+
{market.side_options.sort((a,b) => {
|
|
90
|
+
let a_t = a.side == market.trade_side ? 1 : 0
|
|
91
|
+
let b_t = b.side == market.trade_side ? 1 : 0
|
|
92
|
+
return a_t - b_t
|
|
93
|
+
}).map((so, index) => {
|
|
94
|
+
return renderSides({ item:so, index, market })
|
|
95
|
+
})}
|
|
96
|
+
|
|
97
|
+
</View>
|
|
98
|
+
{!hide_liquidity ?
|
|
99
|
+
<View style={{ backgroundColor:Colors.shades.shade100, padding:10, flexDirection:'row', alignItems:'center', borderBottomLeftRadius:8, borderBottomRightRadius:8 }}>
|
|
100
|
+
<TouchableOpacity style={{ flex:1, flexDirection:'row' }} onPress={() => {
|
|
101
|
+
onView({
|
|
102
|
+
event_id: tournament.tournament_id,
|
|
103
|
+
event_type: 'tournament',
|
|
104
|
+
market_id: market.market_id,
|
|
105
|
+
side_type: 'athlete',
|
|
106
|
+
side_id: athlete.athlete_id
|
|
107
|
+
});
|
|
108
|
+
}}>
|
|
109
|
+
<View style={{ backgroundColor:Colors.shades.white, height:30, width:30, borderRadius:100, justifyContent:'center', alignItems:'center', ...view_styles.float }}>
|
|
110
|
+
<Icons.LiquidityIcon color={Colors.brand.midnight} size={30}/>
|
|
111
|
+
</View>
|
|
112
|
+
<View style={{ marginLeft:10 }}>
|
|
113
|
+
<Text theme='body_2'>Liquidity</Text>
|
|
114
|
+
<Text size={12} color={Colors.brand.electric} weight='semibold'>${liquidity.toFixed()} {open_order_count} Orders</Text>
|
|
115
|
+
</View>
|
|
116
|
+
</TouchableOpacity>
|
|
117
|
+
</View>
|
|
118
|
+
:<></>}
|
|
119
|
+
</View>
|
|
120
|
+
)
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
export default AthleteTournamentMarket
|
|
@@ -15,6 +15,7 @@ type EventMarketProps = {
|
|
|
15
15
|
market:MarketProps,
|
|
16
16
|
hide_market_banner?:boolean,
|
|
17
17
|
latest_trades:TradeProps[],
|
|
18
|
+
hide_liquidity?:boolean,
|
|
18
19
|
best_available_orders:BestAvailableOrderProps[],
|
|
19
20
|
event_order_stats:EventOrderStatProps[],
|
|
20
21
|
show_grades?:boolean,
|
|
@@ -24,7 +25,7 @@ type EventMarketProps = {
|
|
|
24
25
|
onTradeLongPress:(trade:TradeProps) => void
|
|
25
26
|
}
|
|
26
27
|
|
|
27
|
-
const EventMarket = ({ width, event, market, latest_trades, best_available_orders, hide_market_banner, event_order_stats, show_grades, default_price_view, onOrder, onView, onTradeLongPress }:EventMarketProps) => {
|
|
28
|
+
const EventMarket = ({ width, event, hide_liquidity, market, latest_trades, best_available_orders, hide_market_banner, event_order_stats, show_grades, default_price_view, onOrder, onView, onTradeLongPress }:EventMarketProps) => {
|
|
28
29
|
const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
|
|
29
30
|
|
|
30
31
|
const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
|
|
@@ -97,6 +98,7 @@ const EventMarket = ({ width, event, market, latest_trades, best_available_order
|
|
|
97
98
|
})}
|
|
98
99
|
|
|
99
100
|
</View>
|
|
101
|
+
{!hide_liquidity ?
|
|
100
102
|
<View style={{ backgroundColor:Colors.shades.shade100, padding:10, flexDirection:'row', alignItems:'center', borderBottomLeftRadius:8, borderBottomRightRadius:8 }}>
|
|
101
103
|
<TouchableOpacity style={{ flex:1, flexDirection:'row' }} onPress={() => {
|
|
102
104
|
onView({
|
|
@@ -114,6 +116,7 @@ const EventMarket = ({ width, event, market, latest_trades, best_available_order
|
|
|
114
116
|
</View>
|
|
115
117
|
</TouchableOpacity>
|
|
116
118
|
</View>
|
|
119
|
+
:<></>}
|
|
117
120
|
</View>
|
|
118
121
|
)
|
|
119
122
|
}
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
import TeamEventMarket from './components/TeamEventMarket';
|
|
2
|
+
import AthleteMarket from './components/AthleteMarket';
|
|
3
|
+
import EventMarket from './components/EventMarket';
|
|
4
|
+
import AthleteTournamentMarket from './components/AthleteTournamentMarket';
|
|
2
5
|
|
|
3
6
|
export default {
|
|
4
|
-
TeamEventMarket
|
|
7
|
+
TeamEventMarket,
|
|
8
|
+
AthleteMarket,
|
|
9
|
+
EventMarket,
|
|
10
|
+
AthleteTournamentMarket
|
|
5
11
|
}
|