be-components 1.6.0 → 1.6.2

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 (99) hide show
  1. package/lib/commonjs/CompetitionManager/components/AthleteSelector.js +50 -1
  2. package/lib/commonjs/CompetitionManager/components/AthleteSelector.js.map +1 -1
  3. package/lib/commonjs/Components/Icons.js +90 -0
  4. package/lib/commonjs/Components/Icons.js.map +1 -1
  5. package/lib/commonjs/MarketComponents/api/index.js +213 -0
  6. package/lib/commonjs/MarketComponents/api/index.js.map +1 -0
  7. package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js +183 -0
  8. package/lib/commonjs/MarketComponents/components/AthleteMarket/index.js.map +1 -0
  9. package/lib/commonjs/MarketComponents/components/EventMarket/index.js +209 -0
  10. package/lib/commonjs/MarketComponents/components/EventMarket/index.js.map +1 -0
  11. package/lib/commonjs/MarketComponents/components/MarketButton/api/index.js +179 -0
  12. package/lib/commonjs/MarketComponents/components/MarketButton/api/index.js.map +1 -0
  13. package/lib/commonjs/MarketComponents/components/MarketButton/index.js +69 -0
  14. package/lib/commonjs/MarketComponents/components/MarketButton/index.js.map +1 -0
  15. package/lib/commonjs/MarketComponents/components/OrderGradeBar.js +154 -0
  16. package/lib/commonjs/MarketComponents/components/OrderGradeBar.js.map +1 -0
  17. package/lib/commonjs/MarketComponents/components/TeamEventMarket/api/index.js +48 -0
  18. package/lib/commonjs/MarketComponents/components/TeamEventMarket/api/index.js.map +1 -0
  19. package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js +510 -0
  20. package/lib/commonjs/MarketComponents/components/TeamEventMarket/index.js.map +1 -0
  21. package/lib/commonjs/MarketComponents/index.js +12 -0
  22. package/lib/commonjs/MarketComponents/index.js.map +1 -0
  23. package/lib/commonjs/index.js +7 -0
  24. package/lib/commonjs/index.js.map +1 -1
  25. package/lib/module/CompetitionManager/components/AthleteSelector.js +50 -1
  26. package/lib/module/CompetitionManager/components/AthleteSelector.js.map +1 -1
  27. package/lib/module/Components/Icons.js +90 -0
  28. package/lib/module/Components/Icons.js.map +1 -1
  29. package/lib/module/MarketComponents/api/index.js +207 -0
  30. package/lib/module/MarketComponents/api/index.js.map +1 -0
  31. package/lib/module/MarketComponents/components/AthleteMarket/index.js +176 -0
  32. package/lib/module/MarketComponents/components/AthleteMarket/index.js.map +1 -0
  33. package/lib/module/MarketComponents/components/EventMarket/index.js +202 -0
  34. package/lib/module/MarketComponents/components/EventMarket/index.js.map +1 -0
  35. package/lib/module/MarketComponents/components/MarketButton/api/index.js +172 -0
  36. package/lib/module/MarketComponents/components/MarketButton/api/index.js.map +1 -0
  37. package/lib/module/MarketComponents/components/MarketButton/index.js +62 -0
  38. package/lib/module/MarketComponents/components/MarketButton/index.js.map +1 -0
  39. package/lib/module/MarketComponents/components/OrderGradeBar.js +148 -0
  40. package/lib/module/MarketComponents/components/OrderGradeBar.js.map +1 -0
  41. package/lib/module/MarketComponents/components/TeamEventMarket/api/index.js +42 -0
  42. package/lib/module/MarketComponents/components/TeamEventMarket/api/index.js.map +1 -0
  43. package/lib/module/MarketComponents/components/TeamEventMarket/index.js +501 -0
  44. package/lib/module/MarketComponents/components/TeamEventMarket/index.js.map +1 -0
  45. package/lib/module/MarketComponents/index.js +5 -0
  46. package/lib/module/MarketComponents/index.js.map +1 -0
  47. package/lib/module/index.js +2 -1
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/typescript/src/CompetitionManager/components/AthleteSelector.d.ts.map +1 -1
  50. package/lib/typescript/src/Components/Icons.d.ts +3 -0
  51. package/lib/typescript/src/Components/Icons.d.ts.map +1 -1
  52. package/lib/typescript/src/MarketComponents/api/index.d.ts +22 -0
  53. package/lib/typescript/src/MarketComponents/api/index.d.ts.map +1 -0
  54. package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts +26 -0
  55. package/lib/typescript/src/MarketComponents/components/AthleteMarket/index.d.ts.map +1 -0
  56. package/lib/typescript/src/MarketComponents/components/EventMarket/index.d.ts +22 -0
  57. package/lib/typescript/src/MarketComponents/components/EventMarket/index.d.ts.map +1 -0
  58. package/lib/typescript/src/MarketComponents/components/MarketButton/api/index.d.ts +15 -0
  59. package/lib/typescript/src/MarketComponents/components/MarketButton/api/index.d.ts.map +1 -0
  60. package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts +14 -0
  61. package/lib/typescript/src/MarketComponents/components/MarketButton/index.d.ts.map +1 -0
  62. package/lib/typescript/src/MarketComponents/components/OrderGradeBar.d.ts +10 -0
  63. package/lib/typescript/src/MarketComponents/components/OrderGradeBar.d.ts.map +1 -0
  64. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/api/index.d.ts +10 -0
  65. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/api/index.d.ts.map +1 -0
  66. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts +28 -0
  67. package/lib/typescript/src/MarketComponents/components/TeamEventMarket/index.d.ts.map +1 -0
  68. package/lib/typescript/src/MarketComponents/index.d.ts +28 -0
  69. package/lib/typescript/src/MarketComponents/index.d.ts.map +1 -0
  70. package/lib/typescript/src/index.d.ts +2 -1
  71. package/lib/typescript/src/index.d.ts.map +1 -1
  72. package/package.json +1 -1
  73. package/src/CompetitionManager/components/AthleteSelector.tsx +36 -0
  74. package/src/Components/Icons.tsx +50 -0
  75. package/src/MarketComponents/api/index.ts +143 -0
  76. package/src/MarketComponents/components/AthleteMarket/index.tsx +113 -0
  77. package/src/MarketComponents/components/EventMarket/index.tsx +119 -0
  78. package/src/MarketComponents/components/MarketButton/api/index.ts +152 -0
  79. package/src/MarketComponents/components/MarketButton/index.tsx +50 -0
  80. package/src/MarketComponents/components/OrderGradeBar.tsx +110 -0
  81. package/src/MarketComponents/components/TeamEventMarket/api/index.ts +35 -0
  82. package/src/MarketComponents/components/TeamEventMarket/index.tsx +311 -0
  83. package/src/MarketComponents/index.tsx +5 -0
  84. package/src/index.tsx +2 -0
  85. package/src/types.d.ts +78 -2
  86. package/lib/commonjs/Markets/api/index.js +0 -28
  87. package/lib/commonjs/Markets/api/index.js.map +0 -1
  88. package/lib/commonjs/Markets/components/MarketButton.js +0 -25
  89. package/lib/commonjs/Markets/components/MarketButton.js.map +0 -1
  90. package/lib/module/Markets/api/index.js +0 -23
  91. package/lib/module/Markets/api/index.js.map +0 -1
  92. package/lib/module/Markets/components/MarketButton.js +0 -18
  93. package/lib/module/Markets/components/MarketButton.js.map +0 -1
  94. package/lib/typescript/src/Markets/api/index.d.ts +0 -7
  95. package/lib/typescript/src/Markets/api/index.d.ts.map +0 -1
  96. package/lib/typescript/src/Markets/components/MarketButton.d.ts +0 -11
  97. package/lib/typescript/src/Markets/components/MarketButton.d.ts.map +0 -1
  98. package/src/Markets/api/index.ts +0 -18
  99. package/src/Markets/components/MarketButton.tsx +0 -24
@@ -0,0 +1,311 @@
1
+ import React, { useEffect, useState } from 'react';
2
+ import { View, Image, FlatList, TouchableOpacity, ActivityIndicator } from 'react-native';
3
+ import type { AthleteProps, BestAvailableOrderProps, CompetitionProps, EventOrderStatProps, EventProps, MarketProps, MarketSideOptionProps, OrderProps, SquaresCompetitionProps, TradeProps } from '../../../types';
4
+ import { view_styles } from '../../../constants/styles';
5
+ import { Button, Icons, LinearDiagnal, Text } from '../../../Components';
6
+ import {TeamEventMarketHelpers} from './api';
7
+ import MarketButton from '../../components/MarketButton';
8
+ import Colors from '../../../constants/colors';
9
+ import moment from 'moment-mini';
10
+ import AthleteMarket from '../../components/AthleteMarket';
11
+ import EventMarket from '../../components/EventMarket';
12
+
13
+ import { MarketComponentApi, MarketComponentHelpers } from '../../api';
14
+ import { MarketButtonHelpers } from '../MarketButton/api';
15
+
16
+ type TeamEventMarketProps = {
17
+ event:EventProps,
18
+ markets:MarketProps[],
19
+ competition?:CompetitionProps,
20
+ squares_competition?:SquaresCompetitionProps,
21
+ latest_trades:TradeProps[],
22
+ best_available_orders:BestAvailableOrderProps[],
23
+ event_order_stats:EventOrderStatProps[],
24
+ default_price_view: 'last_trade'|'best_available',
25
+ onView:(data:{ event_id:string, event_type:string, market_id:string, side_type?:string, side_id?:string }) => void,
26
+ onOrder:(order:OrderProps) => void,
27
+ onExpand?:(expanded:boolean) => void,
28
+ onCompetitionSelect:(competition_id:string) => void,
29
+ onSquaresSelect: (sq_comp_id:string) => void,
30
+ onViewAdditionalMarkets: (event_id:string, event_type:string) => void,
31
+ onTradeLongPress:(trade:TradeProps) => void
32
+ }
33
+ const TeamEventMarket = ({ event, competition, squares_competition, markets, latest_trades, best_available_orders, event_order_stats, default_price_view, onSquaresSelect, onCompetitionSelect, onExpand, onOrder, onView, onViewAdditionalMarkets, onTradeLongPress }:TeamEventMarketProps) => {
34
+ const [ expanded_data, setExpandedData ] = useState<{
35
+ expanded:boolean,
36
+ loaded:boolean,
37
+ loading:boolean,
38
+ athletes:AthleteProps[]
39
+ }>({
40
+ loaded:false,
41
+ loading:false,
42
+ expanded:false,
43
+ athletes:[]
44
+ })
45
+ const { expanded, athletes, loaded, loading } = expanded_data;
46
+
47
+ useEffect(() => {
48
+ MarketComponentApi.setEnvironment();
49
+ },[])
50
+
51
+ const expandedEvent = async() => {
52
+ if(onExpand){ onExpand(expanded ? false : true) }
53
+ if(expanded){ return setExpandedData({ ...expanded_data, expanded: false }) }
54
+ if(loaded){ return setExpandedData({ ...expanded_data, expanded: true }) }
55
+ setExpandedData({ ...expanded_data, expanded:true, loading:true });
56
+
57
+ //Need to load our athletes in here!
58
+ const away_athletes = await MarketComponentApi.getAthletesByTeamId(event.away_team_id);
59
+ const home_athletes = await MarketComponentApi.getAthletesByTeamId(event.home_team_id);
60
+ setExpandedData({
61
+ expanded:true,
62
+ loaded:true,
63
+ loading:false,
64
+ athletes: away_athletes.concat(home_athletes)
65
+ })
66
+ }
67
+
68
+ const primary_markets = TeamEventMarketHelpers.getPrimaryMarkets(event, markets);
69
+
70
+
71
+ const renderSides = (data:{ item:MarketSideOptionProps, index:number, market:MarketProps }) => {
72
+ const ba_order = best_available_orders.find(o => o.market_id == data.market.market_id && o.side == data.item.side)
73
+ const side_details = MarketComponentHelpers.getTeamEventSideIds(event, data.market, data.item);
74
+ if(!side_details){ return <></> } //Bomb out if we cant get the side details
75
+ 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);
76
+ if(!trade){
77
+ trade = MarketButtonHelpers.getTradeFromMarket(data.market, event.event_id, 'team', data.item.side, data.item.id_source, side_details.side_id, side_details.reversed_side_id)
78
+ }
79
+ if(!trade){ return <></> }
80
+ return (
81
+ <View style={{ margin:2, width:50, height:50 }}>
82
+ <MarketButton
83
+ side_option={data.item}
84
+ market={data.market}
85
+ trade={trade}
86
+ order={ba_order}
87
+ onLongPress={onTradeLongPress}
88
+ onPress={(order) => {
89
+ const order_title = MarketComponentHelpers.getOrderTitleForTeamEvent(order, data.market, event);
90
+ if(!order_title){ return alert('Unable to process order') }
91
+ onOrder({ ...order, title: order_title })
92
+ }}
93
+ />
94
+ </View>
95
+ )
96
+ }
97
+
98
+ const renderMarketHeaders = (data:{ item:MarketProps, index:number }) => {
99
+ return (
100
+ <View style={{ width:50, marginLeft:2, marginRight:2 }}>
101
+ <Text size={12} color={Colors.brand.midnight} textAlign='center'>{data.item.type.toUpperCase()}</Text>
102
+ </View>
103
+ )
104
+ }
105
+
106
+ const renderNonPrimaryMarkets = (data: { item:EventOrderStatProps, index:number }) => {
107
+ const market = markets.find(m => m.market_id == data.item.market_id);
108
+ if(!market){ return <></> }
109
+ switch(market.level){
110
+ case 'athlete':
111
+ const athlete = athletes.find(a => a.athlete_id == data.item.side_id)
112
+ if(!athlete){ return <></> }
113
+ const athlete_trades = latest_trades.filter(t => t.market_type == 'FOR_MONEY' && t.market_id == data.item.market_id && t.side_type == 'athlete' && t.side_id == data.item.side_id);
114
+ const athlete_orders = best_available_orders.filter(t => t.market_id == data.item.market_id && t.side_type == 'athlete' && t.side_id == data.item.side_id);
115
+ return (
116
+ <View>
117
+ <AthleteMarket
118
+ event={event}
119
+ event_type='team'
120
+ athlete={athlete}
121
+ market={market}
122
+ event_order_stats={[data.item]}
123
+ latest_trades={athlete_trades}
124
+ onTradeLongPress={onTradeLongPress}
125
+ default_price_view={default_price_view}
126
+ best_available_orders={athlete_orders}
127
+ onOrder={onOrder}
128
+ onView={onView}
129
+ />
130
+ </View>
131
+ )
132
+ case 'event':
133
+ const event_trades = latest_trades.filter(t => t.market_type == 'FOR_MONEY' && t.market_id == data.item.market_id);
134
+ const event_orders = best_available_orders.filter(t => t.market_id == data.item.market_id);
135
+ return (
136
+ <View>
137
+ <EventMarket
138
+ event={event}
139
+ market={market}
140
+ onTradeLongPress={onTradeLongPress}
141
+ event_order_stats={[data.item]}
142
+ latest_trades={event_trades}
143
+ best_available_orders={event_orders}
144
+ default_price_view={default_price_view}
145
+ onOrder={onOrder}
146
+ onView={onView}
147
+ />
148
+ </View>
149
+ )
150
+ default: return<></>
151
+ }
152
+ }
153
+
154
+ const renderPrimaryMarkets = (data:{ item:MarketProps, index:number }) => {
155
+ return (
156
+ <View>
157
+ <FlatList
158
+ key={`${event.event_id}_side_options`}
159
+ data={data.item.side_options.sort((a,b) => {
160
+ let a_t = a.side == data.item.trade_side ? 1 : 0
161
+ let b_t = b.side == data.item.trade_side ? 1 : 0
162
+ return a_t - b_t
163
+ })}
164
+ keyExtractor={(item) => item.side}
165
+ renderItem={({ item, index }) => renderSides({ item, index, market:data.item })}
166
+ />
167
+ </View>
168
+ )
169
+ }
170
+
171
+ if(!event.away || !event.home){ return <></> }
172
+
173
+ const upcoming = moment().isBefore(moment(event.scheduled_datetime)) ? true : false
174
+ const { liquidity, open_order_count } = MarketComponentHelpers.getLiqudity(event_order_stats);
175
+
176
+ const non_primary_markets = TeamEventMarketHelpers.sortNonPrimaryMarkets(TeamEventMarketHelpers.getNonPrimaryMarkets(event, markets), event_order_stats)
177
+
178
+ return (
179
+ <View style={{ ...view_styles.section, borderWidth:1, borderColor:Colors.shades.shade600 }}>
180
+ <View nativeID='event_header_data' style={{ flexDirection:'row', padding:10, borderBottomWidth:1, borderBottomColor:Colors.shades.shade600 }}>
181
+ <View style={{ flex:1 }}>
182
+ {event.event_sub_title ?
183
+ <Text size={12} color={Colors.brand.midnight} weight='semibold'>{event.event_sub_title}</Text>
184
+ :<></>}
185
+ </View>
186
+ <View style={{ flexDirection:'row', alignItems:'center' }}>
187
+ <Icons.TVIcon size={10} color={Colors.brand.midnight} />
188
+ <Text style={{ marginLeft:8 }} size={12} color={Colors.brand.midnight} weight='semibold'>{event.info?.broadcast?.network}</Text>
189
+ </View>
190
+ </View>
191
+ <View nativeID='primary_markets' style={{ flexDirection:'row' }}>
192
+ <View nativeID='team_details' style={{ flex:1, padding:5, paddingRight:0 }}>
193
+ <View style={{ flexDirection:'row', alignItems:'center', marginTop:5, marginBottom:5, marginLeft:10 }}>
194
+ <View style={{ marginRight:5, height:10, width:10, borderRadius:100, backgroundColor:upcoming?Colors.brand.electric:Colors.utility.success }} />
195
+ <Text size={12} color={Colors.brand.midnight}>{TeamEventMarketHelpers.getTimeDetail(event)}</Text>
196
+ </View>
197
+ <View nativeID='away_details' style={{ ...view_styles.body_row, minHeight:48 }}>
198
+ <Image
199
+ source={{ uri: event.away.image?.url }}
200
+ style={{ height:30, width:30 }}
201
+ resizeMode='cover'
202
+ />
203
+ <View style={{ flex:1, flexDirection:'row', alignItems:'center', marginLeft:5 }}>
204
+ <View style={{ flex:1, marginRight:5 }}>
205
+ <Text theme='header_2'>{event.away.market_name} {event.away.name}</Text>
206
+ {event.away_sub_title ?
207
+ <Text style={{ marginTop:3 }} theme='body_2'>{event.away_sub_title}</Text>
208
+ :<></>}
209
+ </View>
210
+ <Text theme='body'>{event.away_team_score}</Text>
211
+ </View>
212
+ </View>
213
+ <View nativeID='home_details' style={{ ...view_styles.body_row, minHeight:48 }}>
214
+ <Image
215
+ source={{ uri: event.home.image?.url }}
216
+ style={{ height:30, width:30 }}
217
+ resizeMode='cover'
218
+ />
219
+ <View style={{ flex:1, flexDirection:'row', alignItems:'center', marginLeft:5 }}>
220
+ <View style={{ flex:1, marginRight:5 }}>
221
+ <Text theme='header_2'>{event.home.market_name} {event.home.name}</Text>
222
+ {event.home_sub_title ?
223
+ <Text style={{ marginTop:3 }} theme='body_2'>{event.home_sub_title}</Text>
224
+ :<></>}
225
+ </View>
226
+ <Text theme='body'>{event.home_team_score}</Text>
227
+ </View>
228
+ </View>
229
+ </View>
230
+ <View nativeID='primary_market_details' style={{ padding:5 }}>
231
+ <View style={{ marginTop:5, marginBottom:5 }}>
232
+ <FlatList
233
+ key={`${event.event_id}_market_headers`}
234
+ data={primary_markets}
235
+ keyExtractor={(item) => item.market_id.toString()}
236
+ horizontal
237
+ renderItem={renderMarketHeaders}
238
+ />
239
+ </View>
240
+ <FlatList
241
+ key={`${event.event_id}_primary_markets`}
242
+ data={primary_markets}
243
+ horizontal
244
+ renderItem={renderPrimaryMarkets}
245
+ keyExtractor={(item) => item.market_id.toString()}
246
+ />
247
+ </View>
248
+ </View>
249
+ <View style={{ backgroundColor:Colors.shades.shade100, padding:10, flexDirection:'row', alignItems:'center', flexWrap:'wrap', borderBottomLeftRadius:8, borderBottomRightRadius:8 }}>
250
+ <TouchableOpacity style={{ flex:1, flexDirection:'row', minWidth:115 }} onPress={() => {
251
+ if(!primary_markets[0]){ return }
252
+ onView({ event_id: event.event_id, event_type:'team', market_id: primary_markets[0].market_id });
253
+ }}>
254
+ <View style={{ backgroundColor:Colors.shades.white, height:30, width:30, borderRadius:100, justifyContent:'center', alignItems:'center', ...view_styles.float }}>
255
+ <Icons.LiquidityIcon color={Colors.brand.midnight} size={30}/>
256
+ </View>
257
+ <View style={{ marginLeft:5 }}>
258
+ <Text theme='body_2'>Liquidity</Text>
259
+ <Text size={12} color={Colors.brand.electric} weight='semibold'>${liquidity.toFixed()} {open_order_count} Orders</Text>
260
+ </View>
261
+ </TouchableOpacity>
262
+ {squares_competition ?
263
+ <TouchableOpacity
264
+ style={{ marginRight:10, flexDirection:'row', alignItems:'center', padding:10, borderRadius:22, backgroundColor:Colors.highlights.highlight100, ...view_styles.float }}
265
+ onPress={() => onSquaresSelect(squares_competition.sq_comp_id)}>
266
+ <Icons.SquaresIcon size={18} color={Colors.shades.white} />
267
+ <Text style={{ marginLeft:5 }} size={14} color={Colors.shades.white} weight='semibold'>Squares</Text>
268
+ </TouchableOpacity>
269
+ :<></>}
270
+ {competition ?
271
+ <TouchableOpacity
272
+ style={{ marginRight:10, flexDirection:'row', alignItems:'center', padding:10, borderRadius:22, backgroundColor:Colors.highlights.highlight500, ...view_styles.float }}
273
+ onPress={() => onCompetitionSelect(competition.competition_id)}>
274
+ <Icons.PickEmIcon size={18} color={Colors.shades.white} />
275
+ <Text style={{ marginLeft:5 }} size={14} color={Colors.shades.white} weight='semibold'>Pick 6</Text>
276
+ </TouchableOpacity>
277
+ :<></>}
278
+ <TouchableOpacity style={{ height:35, width:35, justifyContent:'center', borderRadius:100, alignItems:'center', backgroundColor:Colors.shades.white, ...view_styles.float }} onPress={() => expandedEvent()}>
279
+ <Icons.ChevronIcon direction={expanded ? 'up' : 'down'} size={8} color={Colors.brand.midnight} />
280
+ </TouchableOpacity>
281
+ </View>
282
+ {expanded ?
283
+ <View>
284
+ <View style={{ flexDirection:'row', alignItems:'center' }}>
285
+ <View style={{flex:1}}>
286
+ <LinearDiagnal label_size={12} label={'Hot Markets'} left_color={Colors.utility.warning} right_color={Colors.utility.error}/>
287
+ </View>
288
+ {loading ?
289
+ <ActivityIndicator style={{ paddingRight:20 }} size='small' color={Colors.brand.midnight} />
290
+ :
291
+ <Button
292
+ title='SEE ALL'
293
+ padding={15}
294
+ title_color={Colors.brand.electric}
295
+ onPress={() => onViewAdditionalMarkets(event.event_id, 'team')}
296
+ />
297
+ }
298
+ </View>
299
+ <FlatList
300
+ data={non_primary_markets}
301
+ renderItem={renderNonPrimaryMarkets}
302
+ keyExtractor={(item) => `${item.market_id}:${item.side_type}:${item.side_id}`}
303
+ horizontal
304
+ />
305
+ </View>
306
+ :<></>}
307
+ </View>
308
+ )
309
+ }
310
+
311
+ export default TeamEventMarket
@@ -0,0 +1,5 @@
1
+ import TeamEventMarket from './components/TeamEventMarket';
2
+
3
+ export default {
4
+ TeamEventMarket
5
+ }
package/src/index.tsx CHANGED
@@ -25,6 +25,7 @@ import EngageModule from "./Engage";
25
25
  import SeasonManager from "./CompetitionSeasonManager";
26
26
  import SeasonModule from "./CompetitionSeason";
27
27
  import CreateSeasonForm from "./CompetitionSeasonManager/components/CreateSeasonForm";
28
+ import MarketComponents from './MarketComponents';
28
29
 
29
30
  export {
30
31
  Authenticator,
@@ -42,6 +43,7 @@ export {
42
43
  Colors,
43
44
  MyWallet,
44
45
  Checkout,
46
+ MarketComponents,
45
47
  PollCampaign,
46
48
  PollCampaignApi,
47
49
  PollApi,
package/src/types.d.ts CHANGED
@@ -1007,9 +1007,11 @@ export interface TradeProps {
1007
1007
  event_type: 'tournament'|'team'|'match'
1008
1008
  var_1: number;
1009
1009
  side:string;
1010
+ limit_override?:boolean,
1011
+ draft_liquidity?:number,
1010
1012
  side_id:string;
1011
1013
  reversed_side_id:string;
1012
- side_type:'athlete'|'team'|'side';
1014
+ side_type:'athlete'|'team'|'side'|'exotic';
1013
1015
  odds: number;
1014
1016
  probability:number;
1015
1017
  market_type: 'FOR_MONEY' | 'FREE';
@@ -1647,4 +1649,78 @@ export interface BestAvailableOrderProps {
1647
1649
  promoted?:boolean,
1648
1650
  odds: number,
1649
1651
  probability: number
1650
- }
1652
+ }
1653
+
1654
+ export interface EventOrderStatProps {
1655
+ event_id: string;
1656
+ event_type:string;
1657
+ market_id: string;
1658
+ side_id:string;
1659
+ side_type:string;
1660
+ open_order_count: number|string;
1661
+ open_order_amount: number;
1662
+ market_type: string;
1663
+ }
1664
+
1665
+
1666
+ export interface OrderProps {
1667
+ order_id:string; //Primary key of the order
1668
+ player_id:string; //Id of the player creating the order
1669
+ order_type: 'market' | 'limit' | 'h2h'; //Order type determines how it will be matched in the marketplace
1670
+ collar_pct: number; //Pct worse price willing to accept on a market order
1671
+ side: string; //Side of the order
1672
+ side_id: string; //Id of the side - this could be either a team or athlete or over / under
1673
+ side_type: 'athlete' | 'team' | 'side';
1674
+ reversed?:boolean,
1675
+ draft_liquidity?:number,
1676
+ be_type: 'market' | 'prop' | 'ind'; //The old be-type of order so we can compare to historical orders
1677
+ buy_sell_ind: 'buy' | 'sell'; //Indicates whether this order is selling a position or attempting to buy one
1678
+ open_amt: number; //Amount still available to be matched
1679
+ called_amt: number; //Amount already fulfilled
1680
+ potential_winnings: number //Potential winnings calculated by open_amt and odds / prob
1681
+ market_id: string; //Id of the market that this order is (i.e., Spread, Total, stat, etc)
1682
+ market?: MarketProps; //Market object of the ID
1683
+ title: string; //Title of the order
1684
+ event_id: string; //Id of the event associated with the order
1685
+ event_type: 'team' | 'tournament'|'match'; //Is the event a team event or individual (i.e., golf tournament / UFC)
1686
+ position_ids: string[]; //Array of positions that were created due to trades
1687
+ expire_datetime: any; //Expiration time of the order
1688
+ create_datetime?: any; //Create time of the order
1689
+ last_update_datetime?: any; //Last update time of te order
1690
+ odds: number; //American odds of the order
1691
+ probability: number; //Implied probability of the order
1692
+ var_1: number; //
1693
+ league_id?:string;
1694
+ promo_balance?:boolean,
1695
+ promoted?:boolean //Should show up on the lead even screen
1696
+ rejections:number;
1697
+ location?: any; //JSON of coordinate (lat and long)
1698
+ region?: string;
1699
+ market_type: 'FREE' | 'FOR_MONEY';
1700
+ available_for_parlays:boolean; //Indicates of the order can be accepted by a person trying a parlay
1701
+ status: 'cancelled' | 'approved' | 'closed'; //Current status of the order
1702
+ cancel_type?: 'expired' | 'manual' | 'closed'; //If the order is cancelled, then how was it cancelled?
1703
+ resolution_status: 'inprogress' | 'closed';
1704
+ live?:boolean; //If the order is created after the start time of the event, then an indicator of live is added
1705
+ h2h?:boolean;
1706
+ h2h_id?:string; //If the order is h2h, then this is the id of the other user
1707
+ h2h_user?:any //Player type
1708
+ parlay_id?:string //id of the parlay
1709
+ event?:any //Event details,
1710
+ selling_position_id?:string,
1711
+ result_viewed?:boolean,
1712
+ commission_pct:number,
1713
+ positions:PositionProps[]
1714
+ pfof?:boolean
1715
+ influencer_id?:string,
1716
+ influencer?:PublicPlayerProps,
1717
+ influence_type?: 'copy' | 'fade',
1718
+ tip_type?: 'win' | 'all',
1719
+ tip_pct?:number,
1720
+ tip_processed?:boolean,
1721
+ legacy_id?: string,
1722
+ grade?: number,
1723
+ last_grade_datetime?:any,
1724
+ no_bet?:boolean,
1725
+ no_bet_reason?:string
1726
+ }
@@ -1,28 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.MarketHelpers = void 0;
7
- const MarketHelpers = exports.MarketHelpers = {
8
- getVar1Label: (market, var_1) => {
9
- if (market.type != 'Spread') {
10
- return `${var_1}`;
11
- }
12
- if (var_1 < 0) {
13
- return `${var_1}`;
14
- }
15
- return `+${var_1}`;
16
- },
17
- getOddsLabel: (odds, decimals) => {
18
- let new_odds = odds.toFixed();
19
- if (decimals) {
20
- new_odds = odds.toFixed(decimals);
21
- }
22
- if (odds < 0) {
23
- return `${new_odds}`;
24
- }
25
- return `+${new_odds}`;
26
- }
27
- };
28
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MarketHelpers","exports","getVar1Label","market","var_1","type","getOddsLabel","odds","decimals","new_odds","toFixed"],"sourceRoot":"../../../../src","sources":["Markets/api/index.ts"],"mappings":";;;;;;AAKA,MAAMA,aAAa,GAAAC,OAAA,CAAAD,aAAA,GAAG;EAClBE,YAAY,EAAEA,CAACC,MAAkB,EAAEC,KAAY,KAAK;IAChD,IAAGD,MAAM,CAACE,IAAI,IAAI,QAAQ,EAAC;MAAE,OAAQ,GAAED,KAAM,EAAC;IAAC;IAC/C,IAAGA,KAAK,GAAG,CAAC,EAAC;MAAE,OAAQ,GAAEA,KAAM,EAAC;IAAC;IACjC,OAAQ,IAAGA,KAAM,EAAC;EACtB,CAAC;EACDE,YAAY,EAAEA,CAACC,IAAW,EAAEC,QAAgB,KAAK;IAC7C,IAAIC,QAAQ,GAAGF,IAAI,CAACG,OAAO,CAAC,CAAC;IAC7B,IAAGF,QAAQ,EAAC;MAAEC,QAAQ,GAAGF,IAAI,CAACG,OAAO,CAACF,QAAQ,CAAC;IAAC;IAChD,IAAGD,IAAI,GAAG,CAAC,EAAC;MAAE,OAAQ,GAAEE,QAAS,EAAC;IAAC;IACnC,OAAQ,IAAGA,QAAS,EAAC;EACzB;AACJ,CAAC","ignoreList":[]}
@@ -1,25 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
- var _react = _interopRequireDefault(require("react"));
8
- var _reactNative = require("react-native");
9
- var _Text = _interopRequireDefault(require("../../Components/Text"));
10
- var _api = require("../api");
11
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
- const MarketCard = ({
13
- market,
14
- trade
15
- }) => {
16
- return /*#__PURE__*/_react.default.createElement(_reactNative.TouchableOpacity, {
17
- style: {
18
- padding: 5
19
- }
20
- }, trade && market.var_1_required ? /*#__PURE__*/_react.default.createElement(_Text.default, {
21
- theme: "body"
22
- }, _api.MarketHelpers.getVar1Label(market, trade.var_1)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null));
23
- };
24
- var _default = exports.default = MarketCard;
25
- //# sourceMappingURL=MarketButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_Text","_api","obj","__esModule","default","MarketCard","market","trade","createElement","TouchableOpacity","style","padding","var_1_required","theme","MarketHelpers","getVar1Label","var_1","Fragment","_default","exports"],"sourceRoot":"../../../../src","sources":["Markets/components/MarketButton.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAH,sBAAA,CAAAC,OAAA;AAEA,IAAAG,IAAA,GAAAH,OAAA;AAAuC,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAQvC,MAAMG,UAAU,GAAGA,CAAC;EAAEC,MAAM;EAAEC;AAAwB,CAAC,KAAK;EAExD,oBACIX,MAAA,CAAAQ,OAAA,CAAAI,aAAA,CAACT,YAAA,CAAAU,gBAAgB;IAACC,KAAK,EAAE;MAAEC,OAAO,EAAC;IAAE;EAAE,GAClCJ,KAAK,IAAID,MAAM,CAACM,cAAc,gBAC/BhB,MAAA,CAAAQ,OAAA,CAAAI,aAAA,CAACR,KAAA,CAAAI,OAAI;IAACS,KAAK,EAAC;EAAM,GAAEC,kBAAa,CAACC,YAAY,CAACT,MAAM,EAAEC,KAAK,CAACS,KAAK,CAAQ,CAAC,gBAC1EpB,MAAA,CAAAQ,OAAA,CAAAI,aAAA,CAAAZ,MAAA,CAAAQ,OAAA,CAAAa,QAAA,MAAI,CACS,CAAC;AAE3B,CAAC;AAAA,IAAAC,QAAA,GAAAC,OAAA,CAAAf,OAAA,GAEcC,UAAU","ignoreList":[]}
@@ -1,23 +0,0 @@
1
- export { MarketHelpers };
2
- const MarketHelpers = {
3
- getVar1Label: (market, var_1) => {
4
- if (market.type != 'Spread') {
5
- return `${var_1}`;
6
- }
7
- if (var_1 < 0) {
8
- return `${var_1}`;
9
- }
10
- return `+${var_1}`;
11
- },
12
- getOddsLabel: (odds, decimals) => {
13
- let new_odds = odds.toFixed();
14
- if (decimals) {
15
- new_odds = odds.toFixed(decimals);
16
- }
17
- if (odds < 0) {
18
- return `${new_odds}`;
19
- }
20
- return `+${new_odds}`;
21
- }
22
- };
23
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["MarketHelpers","getVar1Label","market","var_1","type","getOddsLabel","odds","decimals","new_odds","toFixed"],"sourceRoot":"../../../../src","sources":["Markets/api/index.ts"],"mappings":"AAGA,SAASA,aAAa;AAEtB,MAAMA,aAAa,GAAG;EAClBC,YAAY,EAAEA,CAACC,MAAkB,EAAEC,KAAY,KAAK;IAChD,IAAGD,MAAM,CAACE,IAAI,IAAI,QAAQ,EAAC;MAAE,OAAQ,GAAED,KAAM,EAAC;IAAC;IAC/C,IAAGA,KAAK,GAAG,CAAC,EAAC;MAAE,OAAQ,GAAEA,KAAM,EAAC;IAAC;IACjC,OAAQ,IAAGA,KAAM,EAAC;EACtB,CAAC;EACDE,YAAY,EAAEA,CAACC,IAAW,EAAEC,QAAgB,KAAK;IAC7C,IAAIC,QAAQ,GAAGF,IAAI,CAACG,OAAO,CAAC,CAAC;IAC7B,IAAGF,QAAQ,EAAC;MAAEC,QAAQ,GAAGF,IAAI,CAACG,OAAO,CAACF,QAAQ,CAAC;IAAC;IAChD,IAAGD,IAAI,GAAG,CAAC,EAAC;MAAE,OAAQ,GAAEE,QAAS,EAAC;IAAC;IACnC,OAAQ,IAAGA,QAAS,EAAC;EACzB;AACJ,CAAC","ignoreList":[]}
@@ -1,18 +0,0 @@
1
- import React from 'react';
2
- import { TouchableOpacity } from "react-native";
3
- import Text from '../../Components/Text';
4
- import { MarketHelpers } from '../api';
5
- const MarketCard = ({
6
- market,
7
- trade
8
- }) => {
9
- return /*#__PURE__*/React.createElement(TouchableOpacity, {
10
- style: {
11
- padding: 5
12
- }
13
- }, trade && market.var_1_required ? /*#__PURE__*/React.createElement(Text, {
14
- theme: "body"
15
- }, MarketHelpers.getVar1Label(market, trade.var_1)) : /*#__PURE__*/React.createElement(React.Fragment, null));
16
- };
17
- export default MarketCard;
18
- //# sourceMappingURL=MarketButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["React","TouchableOpacity","Text","MarketHelpers","MarketCard","market","trade","createElement","style","padding","var_1_required","theme","getVar1Label","var_1","Fragment"],"sourceRoot":"../../../../src","sources":["Markets/components/MarketButton.tsx"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,gBAAgB,QAAQ,cAAc;AAC/C,OAAOC,IAAI,MAAM,uBAAuB;AAExC,SAASC,aAAa,QAAQ,QAAQ;AAQtC,MAAMC,UAAU,GAAGA,CAAC;EAAEC,MAAM;EAAEC;AAAwB,CAAC,KAAK;EAExD,oBACIN,KAAA,CAAAO,aAAA,CAACN,gBAAgB;IAACO,KAAK,EAAE;MAAEC,OAAO,EAAC;IAAE;EAAE,GAClCH,KAAK,IAAID,MAAM,CAACK,cAAc,gBAC/BV,KAAA,CAAAO,aAAA,CAACL,IAAI;IAACS,KAAK,EAAC;EAAM,GAAER,aAAa,CAACS,YAAY,CAACP,MAAM,EAAEC,KAAK,CAACO,KAAK,CAAQ,CAAC,gBAC1Eb,KAAA,CAAAO,aAAA,CAAAP,KAAA,CAAAc,QAAA,MAAI,CACS,CAAC;AAE3B,CAAC;AAED,eAAeV,UAAU","ignoreList":[]}
@@ -1,7 +0,0 @@
1
- import type { MarketProps } from "../../types";
2
- export { MarketHelpers };
3
- declare const MarketHelpers: {
4
- getVar1Label: (market: MarketProps, var_1: number) => string;
5
- getOddsLabel: (odds: number, decimals?: number) => string;
6
- };
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/Markets/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,aAAa,EAAE,CAAA;AAExB,QAAA,MAAM,aAAa;2BACO,WAAW,SAAQ,MAAM;yBAK3B,MAAM,aAAY,MAAM;CAM/C,CAAA"}
@@ -1,11 +0,0 @@
1
- import React from 'react';
2
- import type { BestAvailableOrderProps, MarketProps, MarketSideOptionProps, TradeProps } from '../../types';
3
- type MarketButtonProps = {
4
- market: MarketProps;
5
- side_option: MarketSideOptionProps;
6
- trade?: TradeProps;
7
- order?: BestAvailableOrderProps;
8
- };
9
- declare const MarketCard: ({ market, trade }: MarketButtonProps) => React.JSX.Element;
10
- export default MarketCard;
11
- //# sourceMappingURL=MarketButton.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"MarketButton.d.ts","sourceRoot":"","sources":["../../../../../src/Markets/components/MarketButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,uBAAuB,EAAE,WAAW,EAAE,qBAAqB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG3G,KAAK,iBAAiB,GAAG;IACrB,MAAM,EAAC,WAAW,CAAC;IACnB,WAAW,EAAC,qBAAqB,CAAC;IAClC,KAAK,CAAC,EAAC,UAAU,CAAC;IAClB,KAAK,CAAC,EAAC,uBAAuB,CAAA;CACjC,CAAA;AACD,QAAA,MAAM,UAAU,sBAAsB,iBAAiB,sBAStD,CAAA;AAED,eAAe,UAAU,CAAA"}
@@ -1,18 +0,0 @@
1
- import type { MarketProps } from "../../types"
2
-
3
-
4
- export { MarketHelpers }
5
-
6
- const MarketHelpers = {
7
- getVar1Label: (market:MarketProps, var_1:number) => {
8
- if(market.type != 'Spread'){ return `${var_1}` }
9
- if(var_1 < 0){ return `${var_1}` }
10
- return `+${var_1}`
11
- },
12
- getOddsLabel: (odds:number, decimals?:number) => {
13
- let new_odds = odds.toFixed()
14
- if(decimals){ new_odds = odds.toFixed(decimals) }
15
- if(odds < 0){ return `${new_odds}` }
16
- return `+${new_odds}`
17
- }
18
- }
@@ -1,24 +0,0 @@
1
- import React from 'react';
2
- import { TouchableOpacity } from "react-native"
3
- import Text from '../../Components/Text';
4
- import type { BestAvailableOrderProps, MarketProps, MarketSideOptionProps, TradeProps } from '../../types';
5
- import { MarketHelpers } from '../api';
6
-
7
- type MarketButtonProps = {
8
- market:MarketProps,
9
- side_option:MarketSideOptionProps,
10
- trade?:TradeProps,
11
- order?:BestAvailableOrderProps
12
- }
13
- const MarketCard = ({ market, trade }:MarketButtonProps) => {
14
-
15
- return (
16
- <TouchableOpacity style={{ padding:5 }}>
17
- {trade && market.var_1_required ?
18
- <Text theme='body'>{MarketHelpers.getVar1Label(market, trade.var_1)}</Text>
19
- :<></>}
20
- </TouchableOpacity>
21
- )
22
- }
23
-
24
- export default MarketCard