{"version":3,"file":"static/chunks/8993-f678691b965def6f.js","mappings":"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","sources":["webpack://_N_E/./components/BackToTop/index.js","webpack://_N_E/./components/Games/Footer/bottomtime.js","webpack://_N_E/./components/Games/Header/menu.js","webpack://_N_E/./components/Games/Header/nav.js","webpack://_N_E/./components/Skeleton/indexdetail.js","webpack://_N_E/./components/Games/Betting/Events/OutRightEvent.js","webpack://_N_E/./components/Games/Betting/Events/Parts/TimeBlock.js","webpack://_N_E/./components/Games/Betting/Events/Parts/FavouriteStar.js","webpack://_N_E/./components/Games/Betting/Events/Parts/LinesCount.js","webpack://_N_E/./components/Games/Betting/Events/Parts/CornerCount.js","webpack://_N_E/./components/Games/Betting/Events/Parts/TeamBlock.js","webpack://_N_E/./components/Games/Betting/Events/Parts/OddsSwiper/LineDescCell.js","webpack://_N_E/./components/Games/Betting/Events/Parts/OddsSwiper/SelectionDesc.js","webpack://_N_E/./components/Games/Betting/Events/Parts/OddsSwiper/DisplayOdds.js","webpack://_N_E/./components/Games/Betting/Events/Parts/OddsSwiper/OddsCell.js","webpack://_N_E/./components/Games/Betting/Events/Parts/OddsSwiper/LineColumn.js","webpack://_N_E/./components/Games/Betting/Events/Parts/OddsSwiper/index.js","webpack://_N_E/./components/Games/Betting/Events/Parts/NormalEvents/VerticalEvent.js","webpack://_N_E/./components/Games/Betting/Events/Parts/LinesCountHorizontal.js","webpack://_N_E/./components/Games/Betting/Events/Parts/TeamBlockHorizontal.js","webpack://_N_E/./components/Games/Betting/Events/Parts/NormalEvents/HorizontalEvent.js","webpack://_N_E/./components/Games/Betting/Events/NormalEvent.js","webpack://_N_E/./components/Games/Betting/index.js","webpack://_N_E/./components/SuspendBtn/index.js","webpack://_N_E/./components/Games/EventListing.js","webpack://_N_E/./components/Skeleton/index.js","webpack://_N_E/./components/BackToTop/backTop.module.scss"],"sourcesContent":["import { useEffect, useState } from 'react';\nimport { ReactSVG } from '@/ReactSVG';\nimport backTop from './backTop.module.scss';\n\nexport default function BackToTop(props) {\n const [show, setShow] = useState(false);\n \n useEffect(() => { \n var supportPageOffset = window.pageYOffset !== undefined;\n var isCSS1Compat = ((document.compatMode || \"\") === \"CSS1Compat\"); \n\n function handleScroll() { \n const y = supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;\n if (y > 20) {\n setShow(true);\n } else {\n setShow(false);\n }\n }\n window.addEventListener(\"scroll\", handleScroll);\n return () => {\n window.removeEventListener(\"scroll\", handleScroll);\n }\n }, []);\n\n const onClick = () => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'smooth'\n });\n }\n\n return (\n
\n
\n \n
\n
\n );\n}","import React from 'react';\nimport dynamic from 'next/dynamic';\nimport { ReactSVG } from '@/ReactSVG';\nimport moment from 'moment';\nconst SwipeableBottomSheet = dynamic(import('react-swipeable-bottom-sheet'), { ssr: false });\nexport default class _Bottomtime extends React.Component {\n\tstate = {\n\t\tisBottomSheetVisible: false,\n\t\tactive: 0\n\t};\n\n\tShowBottomSheet = () => {\n\t\tthis.setState({ isBottomSheetVisible: true });\n\t\tsetTimeout(() => {\n\t\t\tdocument.body.style.overflow = 'hidden';\n\t\t}, 50);\n\t};\n\trender() {\n\t\tconst { Selectdate, SportId } = this.props;\n\t\tconst { isBottomSheetVisible } = this.state;\n\t\t/* 未来10天 */\n\t\tlet Nextdays = [];\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\tNextdays.unshift(moment(new Date(new Date().setDate(new Date().getDate() + i))).format('YYYY/MM/DD'));\n\t\t}\n\n\t\t//格式不一樣,要轉一下,傳入的格式是 YYYY-MM-DD\n\t\tlet SelectdateFormated = null;\n\t\tif (Selectdate) {\n\t\t\tSelectdateFormated = moment(Selectdate).format('YYYY/MM/DD');\n\t\t}\n\t\treturn (\n\t\t\t
\n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tisBottomSheetVisible: isOpen\n\t\t\t\t\t\t});\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tdocument.body.style.overflow = 'unset';\n\t\t\t\t\t\t}, 50);\n\t\t\t\t\t}}\n\t\t\t\t\tkey={isBottomSheetVisible}\n\t\t\t\t>\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

选择日期

\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{Nextdays.sort().map((item, index) => {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\t\t\t\tactive: index\n\t\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t\t\tthis.props.ChangeGame(item);\n\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{item.substring(5)}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\t {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tisBottomSheetVisible: true\n\t\t\t\t\t\t});\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t日期\n\t\t\t\t
\n\t\t\t\n\t\t);\n\t}\n}\n","/* 賽事列表頁- 體育 和 市場 菜單 */\n\nimport { ReactSVG } from '@/ReactSVG';\nimport React from \"react\";\n\nclass HeaderMenu extends React.Component {\n constructor (props) {\n super(props);\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n render () {\n const {menuName, currentMenuName, items, selectedItem, formatItem, getItemKey} = this.props;\n\n const isOpen = (menuName === currentMenuName);\n\n //把選中的項目移到第一個\n let sortedItems = items;\n if (items && items.length > 0 && selectedItem) {\n const selectedItems = items.filter(i => getItemKey(i) === getItemKey(selectedItem));\n const withoutSelectedItems = items.filter(i => getItemKey(i) !== getItemKey(selectedItem));\n sortedItems = selectedItems.concat(withoutSelectedItems);\n }\n\n return {\n this.props.onClickMenu(menuName);\n }}\n className={isOpen ? 'Tabsmenu select' : 'Tabsmenu'}\n >\n {/* 游戏种类 */}\n \n {selectedItem ? formatItem(selectedItem) : null}\n \n
\n
\n {sortedItems.map((item, index) => {\n const itemKey = getItemKey(item);\n const selectedItemKey = getItemKey(selectedItem);\n return (\n {\n this.props.onClickItem(item,index);\n Pushgtagdata(`Odds_Filter`, 'Click', 'MainPage_ViewMore');\n }}\n >\n {formatItem(item)}\n
\n );\n })}\n
\n {\n this.props.onClickMoreButton();\n }}\n >\n \n 更多\n \n \n \n \n }\n}\n\nexport default HeaderMenu","/* \n\t投注页面 导航菜单 所有游戏种类\n*/\nimport React from 'react'\nimport { withBetterRouter } from '$LIB/js/withBetterRouter';\nimport { ReactSVG } from '@/ReactSVG';\nimport { DataConsumer } from '@/DataProvider/';\nimport Bottomsheet from '@/Games/Footer/bottomsheet';\nimport Bottomtime from '@/Games/Footer/bottomtime';\nimport moment from 'moment';\nimport {VendorMarkets} from \"../../../lib/vendor/data/VendorConsts\";\nimport HeaderMenu from \"./menu\";\nconst theDayAfterTenDays = moment().add(10, 'days').format('YYYY-MM-DD');\nconst theDaytoday = moment().format('YYYY-MM-DD');\n\nclass Bettingnav extends React.Component {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.state = {\n\t\t\tchosegame: '-1',\n\t\t\tisopen: false,\n\t\t\tisExpandAll: true, //默認全展開\n\t\t\tSportId: 1,\n\t\t\tMarketId: VendorMarkets.TODAY, //默認選 今日(包含滾球)\n\t\t\tSortWay: 1 /*排序 1联赛 2时间 0不指定排序 */,\n\t\t\tSelectdate: theDayAfterTenDays,\n\t\t\tcurrentMenu: null,\n\t\t\tnavBarFreeze: false,\n\t\t};\n\n\t\tthis.navRef = React.createRef();\n\t\tthis.sportsMore = React.createRef();\n\t\tthis.marketsMore = React.createRef();\n\n\t\tthis.clickMenu = this.clickMenu.bind(this);\n\t\tthis.clickSport = this.clickSport.bind(this);\n\t\tthis.clickMarket = this.clickMarket.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.props.NavRef && this.props.NavRef(this);\n\n\t\tconst {query} = this.props.router; //從鏈接獲取要加載的參數\n\n\t\tif(!(JSON.stringify(query) === \"{}\" || !query)) {\n\t\t\t//有傳入參數\n\t\t\tconst {SportId,MarketId,SortWay,Selectdate} = this.state;\n\t\t\tlet cloneQuery = Object.assign({SportId,MarketId,SortWay},query);\n\n\t\t\t//處理一下數據格式,要用int型態\n\t\t\tcloneQuery.SportId = parseInt(cloneQuery.SportId);\n\t\t\tcloneQuery.MarketId = parseInt(cloneQuery.MarketId);\n\t\t\tcloneQuery.SortWay = parseInt(cloneQuery.SortWay);\n\n\t\t\t//特別處理日期,實際上只會選一天\n\t\t\tcloneQuery.Selectdate = query.EndDate ?? Selectdate;\n\n\t\t\t//從路由更新 下拉菜單 選中項目\n\t\t\tthis.setState({ SportId:cloneQuery.SportId, MarketId: cloneQuery.MarketId, SortWay: cloneQuery.SortWay, Selectdate: cloneQuery.Selectdate })\n\n\t\t\t//更新banner\n\t\t\tthis.props.MenuChange(cloneQuery.SportId);\n\t\t}\n\n\t\t//處理捲動時,navbar固定在上方\n\t\tconst handleScroll = (topOffset = 0) => {\n\t\t\tconst bettingList = document.getElementById(\"Betting-list\");\n\n\t\t\tif (this.navRef.current && bettingList) {\n\t\t\t\tconst lgbcr = this.navRef.current.getBoundingClientRect(); //玩法組橫條\n\t\t\t\tvar lgbcr_height = lgbcr.height||(lgbcr.bottom - lgbcr.top); //相容ie\n\t\t\t\tconst lcbcr = bettingList.getBoundingClientRect(); //玩法列表\n\n\t\t\t\t//凍結的條件: 玩法列表的top 小於等於 天花板 +玩法組的height)\n\t\t\t\t//注意上面有header(topOffset) 版本迭代 已删除\n\t\t\t\tconst freeze = lcbcr.top <= lgbcr_height; //+ topOffset;\n\t\t\t\t//console.log('===',freeze,lcbcr.top,'<=',lgbcr_height + topOffset,lgbcr_height);\n\t\t\t\tif (this.state.navBarFreeze !== freeze) { //減少觸發render次數\n\t\t\t\t\tthis.setState({navBarFreeze: freeze});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t//console.log('===navRefs not FOUND');\n\t\t\t}\n\t\t}\n\n\t\tconst headerBar = document.getElementById(\"header-bar\");\n\t\tlet topOffset = 0;\n\t\tif(headerBar) {\n\t\t\ttopOffset = headerBar.clientHeight;\n\t\t}\n\n\t\tthis.handleScrollForNavbar = () => handleScroll(topOffset);\n\n\t\twindow.addEventListener(\"scroll\", this.handleScrollForNavbar);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (this.handleScrollForNavbar) {\n\t\t\twindow.removeEventListener(\"scroll\", this.handleScrollForNavbar)\n\t\t}\n\t}\n\n\tclickMenu(menuName) {\n\t\tlet newMenuName = menuName;\n\t\tif (this.state.currentMenu === newMenuName) {\n\t\t\tnewMenuName = null; //如果已經選中,再點一次就是取消\n\t\t}\n\t\tthis.setState({currentMenu:newMenuName});\n\t}\n\tclickSport(sportData) {\n\t\tconst sportId = sportData.SportId;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tSportId: sportId\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.ChangeGame();\n\t\t\t\tthis.props.MenuChange(sportId); //banner刷新\n\t\t\t}\n\t\t);\n\t}\n\tclickMarket(marketData) {\n\t\tconst marketId = marketData.MarketId;\n\t\tthis.setState(\n\t\t\t{\n\t\t\t\tMarketId: marketId\n\t\t\t},\n\t\t\t() => {\n\t\t\t\tthis.ChangeGame();\n\t\t\t}\n\t\t);\n\t}\n\n\t/* 选择游戏 */\n\tChangeGame = (date) => {\n\t\tconst { SportId, MarketId, SortWay } = this.state;\n\t\tlet StartDate = date ? moment(new Date(date)).format('YYYY-MM-DD') : theDaytoday; /* 今天 */\n\t\tlet EndDate = date ? moment(new Date(date)).format('YYYY-MM-DD') : theDayAfterTenDays; /* 10天後 */\n\t\tconst type = {\n\t\t\tSportId: SportId /* 体育类型 */,\n\t\t\tMarketId: MarketId /* 市场类型 */,\n\t\t\tSortWay: SortWay /* 排序 */,\n\t\t\tStartDate: StartDate /* 开始日期 */,\n\t\t\tEndDate: EndDate /* 结束日期 */\n\t\t};\n\t\tthis.props.GetEvents(type);\n\t\tthis.setState({\n\t\t\tSelectdate: date,\n\t\t\tisExpandAll: true, //選擇變化之後 要重置(全展開)\n\t\t},() => {\n\t\t\tthis.props.onToggleButtonClicked(true)\n\t\t});\n\t};\n\n\tchangeToggleButtonStatus = (isExpandAll) => {\n\t\tthis.setState({isExpandAll} );\n\t}\n\n\trender() {\n\t\tconst { SportId, MarketId, Selectdate } = this.state;\n\t\tconst { SportDatas, Loading } = this.props;\n\t\tlet selectedSport, selectedMarket;\n\t\tif (SportDatas) {\n\t\t\tconst targetSports = SportDatas.filter(s => parseInt(s.SportId) === parseInt(SportId));\n\t\t\tif (targetSports && targetSports.length > 0) {\n\t\t\t\tselectedSport = targetSports[0];\n\t\t\t} else {\n\t\t\t\tselectedSport = SportDatas[0]; //找不到就默認用第一個\n\t\t\t}\n\t\t\tif (selectedSport) {\n\t\t\t\tconst targetMarkets = selectedSport.Markets.filter(m => parseInt(m.MarketId) === parseInt(MarketId));\n\t\t\t\tif (targetMarkets && targetMarkets.length > 0) {\n\t\t\t\t\tselectedMarket = targetMarkets[0];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t//console.log('%c游戏分类和游戏计数', 'font-size:18px;color:red;', SportDatas); /* 赛事种类和计数 */\n\t\t//console.log(selectedSport)\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t{/* 體育菜單 */}\n\t\t\t\t\t item.SportName + ' ' + item.Count}\n\t\t\t\t\t\tgetItemKey={(item) => item.SportId}\n\t\t\t\t\t\tonClickMenu={this.clickMenu}\n\t\t\t\t\t\tonClickItem={this.clickSport}\n\t\t\t\t\t\tonClickMoreButton={() => { this.sportsMore.current.show() }}\n\t\t\t\t\t/>\n\t\t\t\t\t{/* 市場菜單 */}\n\t\t\t\t\t item.MarketName + ' ' + item.Count}\n\t\t\t\t\t\tgetItemKey={(item) => item.MarketId}\n\t\t\t\t\t\tonClickMenu={this.clickMenu}\n\t\t\t\t\t\tonClickItem={this.clickMarket}\n\t\t\t\t\t\tonClickMoreButton={() => { this.marketsMore.current.show() }}\n\t\t\t\t\t/>\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\t\t\tisExpandAll: !this.state.isExpandAll\n\t\t\t\t\t\t\t\t},() => {\n\t\t\t\t\t\t\t\t\tthis.props.onToggleButtonClicked(this.state.isExpandAll)\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t{/* 日期动作面板 */}\n\t\t\t\t{selectedMarket && parseInt(selectedMarket.MarketId) === VendorMarkets.EARLY && //早盤才可以選日期\n\t\t\t\t!Loading && (\n\t\t\t\t\t this.ChangeGame(e)} Selectdate={Selectdate} SportId={SportId} />\n\t\t\t\t)}\n\t\t\t\t{/* 點擊菜單的「更多」出現的下浮窗 */}\n\t\t\t\t{/* 體育 */}\n\t\t\t\t item.SportName + ' ' + item.Count}\n\t\t\t\t\tgetItemKey={(item) => item.SportId}\n\t\t\t\t\tonClickItem={this.clickSport}\n\t\t\t\t/>\n\t\t\t\t{/* 市場 */}\n\t\t\t\t item.MarketName + ' ' + item.Count}\n\t\t\t\t\tgetItemKey={(item) => item.MarketId}\n\t\t\t\t\tonClickItem={this.clickMarket}\n\t\t\t\t/>\n\t\t\t\n\t\t);\n\t}\n}\nexport default withBetterRouter(Bettingnav);\n","import React from \"react\";\n/* \n\t投注主页骨架屏\n*/\nexport default class Skeletondetail extends React.PureComponent {\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t{[ ...Array(5) ].map((i, k) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
\n\t\t);\n\t}\n}\n","/* 猜冠軍賽事 */\n\nimport { withBetterRouter } from '$LIB/js/withBetterRouter';\nimport React from \"react\";\nimport Toast from '@/Toast';\nimport LazyImageForLeague from \"@/LazyLoad/LazyImageForTeam\";\nimport { connect } from 'react-redux';\nimport ReactIMG from '@/ReactIMG';\n\nclass OutRightEvent extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n render () {\n const {Vendor, EventData, ToggleFavourite, ToSportsDetails, ClickOdds} = this.props;\n const isComboBet = this.props.betCartInfo['isComboBet' + Vendor.configs.VendorName];\n const betCartData = this.props.betCartInfo['betCart' + Vendor.configs.VendorName];\n\n return
\n
\n
\n
\n \n {EventData.getEventDateMoment().format(\n 'MM/DD HH:mm'\n )}\n \n ToggleFavourite(EventData)}\n >\n \n
\n
\n
\n
\n
\n +{EventData.TotalLineCount}\n
\n
\n
\n \n {EventData.Lines &&\n EventData.Lines[0] &&\n EventData.Lines[0].Selections.map(\n (SelectionData) => {\n let CheckSelect =\n (isComboBet == true)\n ? betCartData.filter(\n (i) =>\n i.SelectionId ==\n SelectionData.SelectionId\n )\n : [];\n\n const LineIsLocked = EventData.Lines[0].IsLocked;\n return (\n
\n {\n ToSportsDetails(Vendor, EventData);\n }}\n >\n \n {SelectionData.SelectionName}\n
\n {SelectionData.Odds ? (\n LineIsLocked ? (\n
\n \n
\n ) : (\n {\n ClickOdds(SelectionData)\n }}\n >\n {SelectionData.DisplayOdds}\n
\n )\n ) : (\n
-
\n )}\n
\n );\n }\n )}\n
\n }\n}\n\nconst mapStateToProps = (state) => ({\n betCartInfo: state.betCartInfo,\n});\n\nconst mapDispatchToProps = {\n};\n\nexport default withBetterRouter(connect(mapStateToProps, mapDispatchToProps)(OutRightEvent))\n","/* 展示 時間 直播等圖示 */\n\nimport React from \"react\";\nimport { ReactSVG } from '@/ReactSVG'\nimport { dataIsEqual } from \"$LIB/js/util\";\n\nclass TimeBlock extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['IsRB', 'SportId', 'RBPeriodName', 'RBMinute', 'HasLiveStreaming', 'HasStatistic', 'HasVisualization', 'EventDate'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.EventData, nextProps.EventData, this.MonitorProps);\n }\n\n render () {\n const {EventData} = this.props;\n\n return EventData ?\n (EventData.IsRB ? (\n
\n {parseInt(EventData.SportId) !== 1 ? ( //足球不用展示時間段,其他的如果有就展示\n EventData.RBPeriodName !== null && (\n \n {EventData.RBPeriodName}{' '}\n {EventData.RBMinute != '' && EventData.RBMinute + \"'\"}\n \n )\n ) : //足球如果沒有分鐘數,就把時間段展示出來\n EventData.RBMinute != '' ? (\n {EventData.RBMinute}'\n ) : (\n \n {EventData.RBPeriodName}\n \n )}\n\n {/* 是否有直播 HasVisualization */}\n {EventData.HasLiveStreaming && (\n \n )}\n {/* 分析数据 */}\n {EventData.HasStatistic && (\n \n )}\n {EventData.HasVisualization && (\n \n )}\n
\n ) : (\n \n {EventData.getEventDateMoment().format(\n 'MM/DD HH:mm'\n )}\n \n )) : null\n }\n}\n\nexport default TimeBlock","/* 展示 關注(收藏)星 包含點擊 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\nimport ReactIMG from '@/ReactIMG';\n\nclass FavouriteStar extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['IsFavourite'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.EventData, nextProps.EventData, this.MonitorProps);\n }\n\n render () {\n const {EventData, ToggleFavourite} = this.props;\n\n return EventData ? (\n ToggleFavourite(EventData)}\n >\n \n
\n ) : null\n }\n}\n\nexport default FavouriteStar\n","/* 展示 投注線(玩法)總數 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\n\nclass LinesCount extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['TotalLineCount'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.EventData, nextProps.EventData, this.MonitorProps);\n }\n\n render () {\n const {EventData} = this.props;\n\n return EventData ? (\n
\n +{EventData.TotalLineCount}\n
\n ) : null\n }\n}\n\nexport default LinesCount","/* 展示 角球 總數 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\nimport ReactIMG from '@/ReactIMG';\n\nclass CornerCount extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['HasCornerData','HomeCorner','AwayCorner'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.EventData, nextProps.EventData, this.MonitorProps);\n }\n\n render () {\n const {EventData} = this.props;\n\n return EventData && EventData.HasCornerData ? (\n
\n \n \n {EventData.HomeCorner}-{EventData.AwayCorner}\n \n
\n ) : null\n }\n}\n\nexport default CornerCount\n","/* 展示 球隊名 比分 紅牌 */\n\nimport React from \"react\";\nimport LazyImageForTeam from \"@/LazyLoad/LazyImageForTeam\";\nimport { dataIsEqual } from \"$LIB/js/util\";\n\nclass TeamBlock extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorPropsForHOME = ['IsRB','HomeTeamId','HomeTeamName','HomeScore','HomeRedCard'];\n this.MonitorPropsForAWAY = ['IsRB','AwayTeamId','AwayTeamName','AwayScore','AwayRedCard'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n if (this.props.Vendor !== nextProps.Vendor) {\n return true;\n }\n if (this.props.HomeOrAway !== nextProps.HomeOrAway) {\n return true;\n }\n return !dataIsEqual(this.props.EventData, nextProps.EventData, this['MonitorPropsFor' + this.props.HomeOrAway]);\n }\n\n render () {\n const {Vendor, EventData, ToSportsDetails, HomeOrAway} = this.props;\n\n let TeamId,TeamName,Score,RedCard,IconUrl;\n if (HomeOrAway === 'HOME') {\n TeamId = EventData.HomeTeamId;\n TeamName = EventData.HomeTeamName;\n Score = EventData.HomeScore;\n RedCard = EventData.HomeRedCard;\n IconUrl = EventData.HomeIconUrl;\n } else if (HomeOrAway === 'AWAY') {\n TeamId = EventData.AwayTeamId;\n TeamName = EventData.AwayTeamName;\n Score = EventData.AwayScore;\n RedCard = EventData.AwayRedCard;\n IconUrl = EventData.AwayIconUrl;\n }\n\n const HomeOrAwayIsOK = (['HOME','AWAY'].indexOf(HomeOrAway) !== -1)\n\n return EventData && HomeOrAwayIsOK ? (\n {\n ToSportsDetails(Vendor, EventData);\n }}\n >\n
\n \n {TeamName}\n
\n
\n {EventData.IsRB &&\n RedCard &&\n parseInt(RedCard) > 0 ? (\n \n {RedCard ?? 0}\n \n ) : null}\n
\n
\n \n {EventData.IsRB ? (Score ?? 0) : ''}\n \n
\n
\n ) : null\n }\n}\n\nexport default TeamBlock","/* 展示 投注線(Line)的頭 玩法說明(lineDesc) */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\n\nclass LineDescCell extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['PeriodName','BetTypeName'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.LineData, nextProps.LineData, this.MonitorProps);\n }\n\n render () {\n const {LineData} = this.props;\n\n return LineData ? (\n
\n \n {LineData.LineDesc}\n \n
\n ) : null\n }\n}\n\nexport default LineDescCell\n","/* 展示 賠率框前面的 玩法選項說明 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\n\nclass SelectionDesc extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['SelectionName','Handicap'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.SelectionData, nextProps.SelectionData, this.MonitorProps);\n }\n\n render () {\n const {SelectionData} = this.props;\n\n return SelectionData ? (\n \n {SelectionData.SelectionName}\n {SelectionData.Handicap}\n \n ) : (\n \n \n \n \n )\n }\n}\n\nexport default SelectionDesc","/* 展示 一個賠率 包含賠率上下變化 */\n\nimport React from \"react\";\nimport { dataIsEqual, ChangeSvg } from \"$LIB/js/util\";\nimport ReactIMG from '@/ReactIMG';\n\nclass DisplayOdds extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['DisplayOdds'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n if (this.props.UpOrDown !== nextProps.UpOrDown) {\n return true;\n }\n return !dataIsEqual(this.props.SelectionData, nextProps.SelectionData, this.MonitorProps);\n }\n\n render () {\n const {SelectionData, UpOrDown} = this.props;\n\n //console.log('===DisplayOdds',UpOrDown);\n\n let thisClassName = \"Number-black\";\n if (UpOrDown === 'UP') {\n thisClassName = \"red\"\n } else if (UpOrDown === 'DOWN') {\n thisClassName = \"green\"\n }\n\n return SelectionData ? (\n \n \n { UpOrDown === 'UP' ? : null}\n { UpOrDown === 'DOWN' ? : null }\n \n ) : (\n \n \n )\n }\n}\n\nexport default DisplayOdds\n","/* 展示 一個賠率框=投注選項(Selection) 包含處理投注線鎖定狀態 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\nimport SelectionDesc from \"./SelectionDesc\";\nimport DisplayOdds from \"./DisplayOdds\";\nimport { connect } from 'react-redux';\nimport ReactIMG from '@/ReactIMG';\n\nclass OddsCell extends React.Component {\n constructor (props) {\n super(props);\n this.state = {}\n\n //指定要監控變化的prop\n this.MonitorProps = ['LineIsLocked'];\n //有使用的component: SelectionDesc 和 DisplayOdds,裡面有用到的字段,也要監控\n this.MonitorPropsOfSelectionData = ['EventId', 'LineId', 'SelectionId', 'SelectionName', 'Handicap', 'DisplayOdds'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n isOddsUpOrDown = (SelectionData, list) => {\n if (SelectionData && list) {\n const thisKey = SelectionData.EventId + '|||' + SelectionData.LineId + '|||' + SelectionData.SelectionId;\n return (list.Selections[thisKey] === true);\n }\n return false;\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n //特別處理 賠率變化,直接判斷\n return !dataIsEqual(this.props.SelectionData, nextProps.SelectionData, this.MonitorPropsOfSelectionData)\n || !dataIsEqual(this.props,nextProps,this.MonitorProps)\n || !dataIsEqual(this.props.betCartInfo,nextProps.betCartInfo,['isComboBet' + nextProps.Vendor.configs.VendorName])\n || JSON.stringify(this.props.betCartInfo['betCart' + this.props.Vendor.configs.VendorName]) !== JSON.stringify(nextProps.betCartInfo['betCart' + nextProps.Vendor.configs.VendorName])\n || this.isOddsUpOrDown(this.props.SelectionData, this.props.OddsUpData) !== this.isOddsUpOrDown(nextProps.SelectionData, nextProps.OddsUpData)\n || this.isOddsUpOrDown(this.props.SelectionData, this.props.OddsDownData) !== this.isOddsUpOrDown(nextProps.SelectionData, nextProps.OddsDownData)\n }\n\n render () {\n const {SelectionData, LineIsLocked, OddsUpData, OddsDownData, ClickOdds} = this.props;\n const { Vendor } = this.props;\n const isComboBet = this.props.betCartInfo['isComboBet' + Vendor.configs.VendorName];\n const betCartData = this.props.betCartInfo['betCart' + Vendor.configs.VendorName];\n\n //console.log('=====Odds rendered', SelectionData ? SelectionData.EventId + '|||' + SelectionData.LineId + '|||' + SelectionData.SelectionId : 'NULL selection');\n\n let isOddsUp = this.isOddsUpOrDown(SelectionData,OddsUpData);\n let isOddsDown = this.isOddsUpOrDown(SelectionData,OddsDownData);\n\n const UpOrDown = (\n (isOddsUp === true)\n ? 'UP'\n : ((isOddsDown === true) ? 'DOWN' : '')\n );\n /* 高亮 */\n let MoreStatus = isComboBet && isComboBet != 'false';\n let CheckSelect =\n MoreStatus && SelectionData\n ? betCartData.filter((i) => i.SelectionId == SelectionData.SelectionId)\n : [];\n return (\n
\n
\n {LineIsLocked ? (\n
\n \n
\n ) : (\n {\n ClickOdds(SelectionData);\n Pushgtagdata(`Odds`, 'Submit', 'Odds_mainpage_vertical');\n }}\n >\n {/* 玩法選項 說明 */}\n \n {/* 賠率 包含上下變化 */}\n \n
\n )}\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n betCartInfo: state.betCartInfo,\n});\n\nconst mapDispatchToProps = {\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(OddsCell);\n","/* 展示 一直條 的投注線(Line) 包含一個頭,跟兩個OddsCell */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\nimport LineDescCell from \"./LineDescCell\";\nimport OddsCell from \"./OddsCell\";\nimport {VendorPeriodName} from \"$LIB/vendor/data/VendorConsts\";\nimport i18n from '$LIB/vendor/vendori18n';\n\nclass LineColumn extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['LeftOrRight','PeriodId'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n const thisPropLineKey = this.props.LineData ? this.props.LineData.EventId + '|||' + this.props.LineData.LineId : null;\n const nextPropLineKey = nextProps.LineData ? nextProps.LineData.EventId + '|||' + nextProps.LineData.LineId: null;\n\n return !dataIsEqual(this.props, nextProps, this.MonitorProps)\n || JSON.stringify(this.props.LineData) !== JSON.stringify(nextProps.LineData)\n || this.props.OddsUpData.Lines[thisPropLineKey] !== nextProps.OddsUpData.Lines[nextPropLineKey]\n || this.props.OddsDownData.Lines[thisPropLineKey] !== nextProps.OddsDownData.Lines[nextPropLineKey]\n }\n\n render () {\n const {Vendor, LineData, OddsUpData, OddsDownData, ClickOdds, LeftOrRight, PeriodId} = this.props;\n\n //console.log('====Line rendered', LineData ? LineData.EventId + '|||' + LineData.LineId : 'NULL Line');\n\n let selectionForHome=null;\n let selectionForAway=null;\n\n if (LineData && LineData.Selections && LineData.Selections.length > 1) {\n if (LineData.Selections.length === 2) {\n //一般來說應該會排整齊,第一個是主,第二個是客\n selectionForHome = LineData.Selections[0];\n selectionForAway = LineData.Selections[1];\n }\n\n //如果排錯,或者返回的selection不是剛好兩個,就嘗試用filter找對應的\n if (!selectionForHome || (selectionForHome.TargetTeamId !== null && selectionForHome.TargetTeamId !== selectionForHome.HomeTeamId)) {\n const selectionsForHome = LineData.Selections.filter(s => s.TargetTeamId === s.HomeTeamId);\n if (selectionsForHome && selectionsForHome.length > 0) {\n selectionForHome = selectionsForHome[0];\n }\n }\n if (!selectionForAway || (selectionForAway.TargetTeamId !== null && selectionForAway.TargetTeamId !== selectionForAway.AwayTeamId)) {\n const selectionsForAway = LineData.Selections.filter(s => s.TargetTeamId === s.AwayTeamId);\n if (selectionsForAway && selectionsForAway.length > 0) {\n selectionForAway = selectionsForAway[0];\n }\n }\n }\n\n return LineData ? (\n
\n
\n
\n {/* 頭部 玩法說明 */}\n \n
\n
\n
\n {/*主隊賠率*/}\n \n
\n
\n {/*客隊賠率*/}\n \n
\n
\n ) : ( //沒數據時放一個默認的\n
\n
\n
\n {/* 頭部 玩法說明 */}\n
\n \n {VendorPeriodName[PeriodId]}{LeftOrRight === 'LEFT' ? i18n.HANDICAP : i18n.BIGSMALL}\n \n
\n
\n
\n
\n {/*主隊賠率*/}\n
\n
\n
-
\n
\n
\n
\n
\n {/*客隊賠率*/}\n
\n
\n
-
\n
\n
\n
\n
\n )\n }\n}\n\nexport default LineColumn\n","/* 可滑動 賠率區塊 */\n\nimport React from 'react';\nimport { dataIsEqual } from '$LIB/js/util';\nimport LineColumn from './LineColumn';\nimport i18n from '$LIB/vendor/vendori18n';\n\nclass OddsSwiper extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {};\n\t}\n\n\t//優化效能:只有指定的prop變化時才要重新渲染\n\tshouldComponentUpdate(nextProps, nextState) {\n\t\tconst thisPropLines = this.props.EventData ? this.props.EventData.Lines : null;\n\t\tconst nextPropLines = nextProps.EventData ? nextProps.EventData.Lines : null;\n\t\tconst thisPropEventId = this.props.EventData ? this.props.EventData.EventId : null;\n\t\tconst nextPropEventId = nextProps.EventData ? nextProps.EventData.EventId : null;\n\t\treturn (\n\t\t\tJSON.stringify(thisPropLines) !== JSON.stringify(nextPropLines)\n\t\t\t|| this.props.OddsUpData.Events[thisPropEventId] !== nextProps.OddsUpData.Events[nextPropEventId]\n\t\t\t|| this.props.OddsDownData.Events[thisPropEventId] !== nextProps.OddsDownData.Events[nextPropEventId]\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { Vendor, EventData, OddsUpData, OddsDownData, ClickOdds } = this.props;\n\t\t//console.log('===OddsSwiper rendered', EventData ? EventData.EventId : 'NULL Event');\n\t\t//投注線兩個一組\n\t\tlet pairedLines = [];\n\t\tif (EventData && EventData.Lines && EventData.Lines.length > 0) {\n\t\t\t//判斷投注線有哪些種類的 periodId 1全場 2上半 3下半\n\t\t\tlet PeriodIds = [];\n\t\t\tEventData.Lines.map((d, n) => {\n\t\t\t\tif ([1,2,3].indexOf(d.PeriodId) > -1) {\n\t\t\t\t\tPeriodIds.push(d.PeriodId);\n\t\t\t\t}\n\t\t\t});\n\t\t\tconst Periodlist = [ ...new Set(PeriodIds) ];\n\t\t\tPeriodlist.map((periodId) => {\n\t\t\t\t//目前固定左讓球右大小,後面可能需要按體育類型去區分\n\t\t\t\tlet LeftLine = null;\n\t\t\t\tlet RightLine = null;\n\t\t\t\tconst LeftLines = EventData.Lines.filter((l) => l.PeriodId === periodId && l.BetTypeName === i18n.HANDICAP);\n\t\t\t\tif (LeftLines && LeftLines.length > 0) {\n\t\t\t\t\tLeftLine = LeftLines[0];\n\t\t\t\t}\n\t\t\t\tconst RightLines = EventData.Lines.filter((l) => l.PeriodId === periodId && l.BetTypeName === i18n.BIGSMALL);\n\t\t\t\tif (RightLines && RightLines.length > 0) {\n\t\t\t\t\tRightLine = RightLines[0];\n\t\t\t\t}\n\n\t\t\t\tconst PairId = (LeftLine ? LeftLine.LineId : '') + '_' + (RightLine ? RightLine.LineId : '');\n\t\t\t\tpairedLines.push({ LeftLine, RightLine, PairId, PeriodId: periodId });\n\t\t\t});\n\t\t}\n\t\treturn (\n\t\t\t
\n\t\t\t\t{pairedLines.length > 0 ? (\n\t\t\t\t\t/* 只保留第一层 全场让球 全场大小 */\n\t\t\t\t\tpairedLines.splice(0, 1).map((pariedLineData, index) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t) : (\n\t\t\t\t\t//沒數據時放一個默認的\n\t\t\t\t\t
    \n\t\t\t\t\t\t
  • 全场让球
  • \n\t\t\t\t\t\t
  • 全场大小
  • \n\t\t\t\t\t\t{[ ...Array(4) ].map((item, index) => {\n\t\t\t\t\t\t\treturn
  • -
  • ;\n\t\t\t\t\t\t})}\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport default OddsSwiper;\n","/* 直式/縱向 展示 比賽 (默認用這個) */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\nimport TimeBlock from \"../TimeBlock\";\nimport FavouriteStar from \"../FavouriteStar\";\nimport LinesCount from \"../LinesCount\";\nimport CornerCount from \"../CornerCount\";\nimport TeamBlock from \"../TeamBlock\";\nimport OddsSwiper from \"../OddsSwiper\";\n\nclass VerticalEvent extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n const thisPropEventId = this.props.EventData ? this.props.EventData.EventId : null;\n const nextPropEventId = nextProps.EventData ? nextProps.EventData.EventId : null;\n\n return (JSON.stringify(this.props.EventData) !== JSON.stringify(nextProps.EventData))\n || this.props.OddsUpData.Events[thisPropEventId] !== nextProps.OddsUpData.Events[nextPropEventId]\n || this.props.OddsDownData.Events[thisPropEventId] !== nextProps.OddsDownData.Events[nextPropEventId]\n }\n\n render () {\n const {Vendor, EventData, ToggleFavourite, ToSportsDetails, OddsUpData, OddsDownData, ClickOdds} = this.props;\n\n //console.log('===Event rendered', EventData ? EventData.EventId : 'NULL Event');\n\n return
\n
\n
\n
\n {/* 時間 直播等圖示 */}\n \n {/* 關注(收藏)星 */}\n \n
\n
\n
\n {/* 投注線(玩法)總數 */}\n \n
\n
\n {/* 角球 總數 */}\n \n
\n
\n {/* 场赛swiper滑动 赔率 */}\n
\n \n
\n
\n
\n {/* 主队 球隊名 比分 紅牌 */}\n \n {/* 客队 球隊名 比分 紅牌 */}\n \n
\n }\n}\n\nexport default VerticalEvent","/* 展示 投注線(玩法)總數 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\n\nclass LinesCountHorizontal extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n\n //指定要監控變化的prop\n this.MonitorProps = ['TotalLineCount'];\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n return !dataIsEqual(this.props.EventData, nextProps.EventData, this.MonitorProps);\n }\n\n render () {\n const {EventData} = this.props;\n\n return EventData ? (\n
\n +{EventData.TotalLineCount}\n \n
\n ) : null\n }\n}\n\nexport default LinesCountHorizontal","/* 橫式/橫向 展示 球隊名 比分 紅牌 */\n\nimport React from 'react';\nimport LazyImageForTeam from '@/LazyLoad/LazyImageForTeam';\nimport { dataIsEqual } from '$LIB/js/util';\nclass TeamBlockHorizontal extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {};\n\t\t//指定要監控變化的prop\n\t\tthis.MonitorPropsForHOME = [ 'IsRB', 'HomeTeamId', 'HomeTeamName', 'HomeScore', 'HomeRedCard' ];\n\t\tthis.MonitorPropsForAWAY = [ 'IsRB', 'AwayTeamId', 'AwayTeamName', 'AwayScore', 'AwayRedCard' ];\n\t}\n\t//優化效能:只有指定的prop變化時才要重新渲染\n\tshouldComponentUpdate(nextProps, nextState) {\n\t\tif (this.props.Vendor !== nextProps.Vendor) {\n\t\t\treturn true;\n\t\t}\n\t\tif (this.props.HomeOrAway !== nextProps.HomeOrAway) {\n\t\t\treturn true;\n\t\t}\n\t\treturn !dataIsEqual(this.props.EventData, nextProps.EventData, this['MonitorPropsFor' + this.props.HomeOrAway]);\n\t}\n\n\trender() {\n\t\tconst { Vendor, EventData, HomeOrAway } = this.props;\n\t\tlet TeamId, TeamName, Score, RedCard, WrapperClass, IconUrl;\n\t\tif (HomeOrAway === 'HOME') {\n\t\t\tTeamId = EventData.HomeTeamId;\n\t\t\tTeamName = EventData.HomeTeamName;\n\t\t\tScore = EventData.HomeScore;\n\t\t\tRedCard = EventData.HomeRedCard;\n\t\t\tWrapperClass = ' left-block';\n\t\t\tIconUrl = EventData.HomeIconUrl;\n\t\t} else if (HomeOrAway === 'AWAY') {\n\t\t\tTeamId = EventData.AwayTeamId;\n\t\t\tTeamName = EventData.AwayTeamName;\n\t\t\tScore = EventData.AwayScore;\n\t\t\tRedCard = EventData.AwayRedCard;\n\t\t\tWrapperClass = ' right-block';\n\t\t\tIconUrl = EventData.AwayIconUrl;\n\t\t}\n\t\tconst HomeOrAwayIsOK = [ 'HOME', 'AWAY' ].indexOf(HomeOrAway) !== -1;\n\t\treturn EventData && HomeOrAwayIsOK ? (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{TeamName}\n\t\t\t\t\t
\n \n {EventData.IsRB && RedCard && parseInt(RedCard) > 0 ? (\n {RedCard ?? 0}\n ) : null}\n \n\t\t\t\t
\n\t\t\t\t{/*比分*/}\n\t\t\t\t\n\t\t\t\t\t {EventData.IsRB ? (Score ?? 0) : ''}\n\t\t\t\t\n\t\t\t
\n\t\t) : null;\n\t}\n}\n\nexport default TeamBlockHorizontal;\n","/* 橫式/橫向 展示 比賽 */\n\nimport React from 'react';\nimport { dataIsEqual } from '$LIB/js/util';\nimport TimeBlock from '../TimeBlock';\nimport FavouriteStar from '../FavouriteStar';\nimport LinesCountHorizontal from '../LinesCountHorizontal';\nimport CornerCount from '../CornerCount';\nimport TeamBlockHorizontal from '../TeamBlockHorizontal';\n//import OddsHorizontal from '../OddsHorizontal';\nclass HorizontalEvent extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {};\n\t}\n\n\t//優化效能:只有指定的prop變化時才要重新渲染\n\tshouldComponentUpdate(nextProps, nextState) {\n\t\tconst thisPropEventId = this.props.EventData ? this.props.EventData.EventId : null;\n\t\tconst nextPropEventId = nextProps.EventData ? nextProps.EventData.EventId : null;\n\t\treturn (\n\t\t\tJSON.stringify(this.props.EventData) !== JSON.stringify(nextProps.EventData)\n\t\t\t|| this.props.OddsUpData.Events[thisPropEventId] !== nextProps.OddsUpData.Events[nextPropEventId]\n\t\t\t|| this.props.OddsDownData.Events[thisPropEventId] !== nextProps.OddsDownData.Events[nextPropEventId]\n\t\t);\n\t}\n\n\trender() {\n\t\tconst { Vendor, EventData, ToggleFavourite, ToSportsDetails } = this.props;\n\t\t//console.log('===Event rendered', EventData ? EventData.EventId : 'NULL Event');\n\t\treturn (\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{/* 時間 直播等圖示 */}\n\t\t\t\t\t\t\n\t\t\t\t\t\t{/* 關注(收藏)星 */}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{/* 角球 總數 */}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
{\n\t\t\t\t\t\t\t\t ToSportsDetails(Vendor, EventData);\n\t\t\t\t\t\t\t\t Pushgtagdata(`Odds`, 'Submit', `Odds_mainpage_horizontal`);\n\t\t\t\t\t\t\t }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{/* 投注線(玩法)總數 */}\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t {\n ToSportsDetails(Vendor, EventData);\n Pushgtagdata(`Odds`, 'Submit', `Odds_mainpage_horizontal`);\n\t\t\t\t\t}}\n\t\t\t\t>\n\t\t\t\t\t{/* 主队 球隊名 比分 紅牌 */}\n\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t\t{/* 中間的 vs 或 - 字樣 */}\n\t\t\t\t\t\t{EventData &&\n\t\t\t\t\t\t\t(EventData.IsRB ? (\n\t\t\t\t\t\t\t\t-\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\tVS\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t
\n\t\t\t\t\t{/* 客队 球隊名 比分 紅牌 */}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t{/* 版本迭代 盘口横向模式下 隐藏此处 */}\n\t\t\t\t{/* \n
\n \n
\n */}\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport default HorizontalEvent;\n","/* 一般體育賽事 */\n\nimport React from \"react\";\nimport { dataIsEqual } from \"$LIB/js/util\";\nimport VerticalEvent from \"./Parts/NormalEvents/VerticalEvent\";\nimport HorizontalEvent from \"./Parts/NormalEvents/HorizontalEvent\";\nimport {connect} from \"react-redux\";\n\nclass NormalEvent extends React.Component {\n constructor (props) {\n super(props);\n this.state = {\n }\n }\n\n componentDidMount () {\n }\n\n componentWillUnmount() {\n }\n\n //優化效能:只有指定的prop變化時才要重新渲染\n shouldComponentUpdate(nextProps, nextState) {\n const thisPropEventId = this.props.EventData ? this.props.EventData.EventId : null;\n const nextPropEventId = nextProps.EventData ? nextProps.EventData.EventId : null;\n\n return this.props.userSetting.ListDisplayType !== nextProps.userSetting.ListDisplayType\n || (JSON.stringify(this.props.EventData) !== JSON.stringify(nextProps.EventData))\n || this.props.OddsUpData.Events[thisPropEventId] !== nextProps.OddsUpData.Events[nextPropEventId]\n || this.props.OddsDownData.Events[thisPropEventId] !== nextProps.OddsDownData.Events[nextPropEventId]\n }\n\n render () {\n const {Vendor, EventData, ToggleFavourite, ToSportsDetails, OddsUpData, OddsDownData, ClickOdds} = this.props;\n const {ListDisplayType} = this.props.userSetting;\n\n //console.log('===Event rendered', EventData ? EventData.EventId : 'NULL Event');\n\n return parseInt(ListDisplayType) === 1 ? : \n }\n}\n\nconst mapStateToProps = state => ({\n userSetting: state.userSetting,\n});\n\nexport default connect(\n mapStateToProps,\n null,\n)(NormalEvent);","/*\n\t投注页面 导航菜单 所有游戏种类\n*/\nimport Router from 'next/router';\nimport React from 'react';\nimport Collapse, { Panel } from 'rc-collapse';\nimport { ReactSVG } from '@/ReactSVG';\n//import Swiper from '@/Games/Betting/Swiper';\nimport ReactPullLoad, { STATS } from 'react-pullload';\nimport Skeleton from '@/Skeleton/indexdetail';\nimport { forceCheck } from 'react-lazyload';\nimport LazyImageForLeague from '@/LazyLoad/LazyImageForLeague';\nimport LazyImageForTeam from '@/LazyLoad/LazyImageForTeam';\nimport SelectionData from '../../../lib/vendor/data/SelectionData';\nimport OutRightEvent from './Events/OutRightEvent';\nimport NormalEvent from './Events/NormalEvent';\nimport Toast from '@/Toast';\nimport md5 from 'crypto-js/md5';\nimport {VendorMarkets} from \"../../../lib/vendor/data/VendorConsts\";\nimport { connect } from 'react-redux';\nimport { ACTION_BetCart_setIsComboBet, ACTION_BetCart_add, ACTION_BetCart_remove, ACTION_BetCart_clear } from '$LIB/redux/actions/BetCartAction';\nimport EventData from \"$LIB/vendor/data/EventData\";\nimport ReactIMG from '@/ReactIMG';\nimport { checkIsLogin, redirectToLogin } from '$LIB/js/util';\n\nimport dynamic from 'next/dynamic';\n\nconst Bottombetbox = dynamic(\n\t() => import('@/Games/Footer/bottombetbox'),\n\t{ ssr: false }\n)\nconst BetCartPopup = dynamic(\n\t() => import('@/Games/Betting/BetCartPopup'),\n\t{ ssr: false }\n)\n\nconst EventPerPageCount = 20; //分頁展示,默認每頁(每次展示)多少筆\nclass Betting extends React.PureComponent {\n\tconstructor() {\n\t\tsuper();\n\t\tthis.state = {\n\t\t\tisOpen: false,\n\t\t\tactive: 0,\n\t\t\thasMore: true,\n\t\t\taction: STATS.init,\n\t\t\tinit: 10,\n\t\t\tChampionCancel: true,\n\t\t\tChampionactive: -1,\n\t\t\tChampTeameactive: 0,\n\t\t\tChampionSelects: [],\n\t\t\texpandAll: true, //是否全部展開\n\t\t\tLeagueToggleStatusArray: null //保存聯賽展開/收起狀態\n\t\t};\n\n\t\tthis.clickOdds = this.clickOdds.bind(this);\n\t}\n\tcomponentDidMount() {\n\t\tthis.props.BettingRef && this.props.BettingRef(this);\n\t}\n\n\thasMoreData = () => {\n\t\treturn this.props.EventDatas ? this.state.init < this.props.EventDatas.length : false;\n\t};\n\n\t/* 以下 属于方法下拉刷新 上拉加载 */\n\thandleAction = (action) => {\n\t\tif (action === this.state.action) {\n\t\t\treturn false;\n\t\t}\n\t\tif (action === STATS.refreshing) {\n\t\t\treturn false;\n\t\t} else if (action === STATS.loading) {\n\t\t\tthis.handLoadMore();\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\taction: action\n\t\t\t});\n\t\t}\n\t};\n\n\thandRefreshing = () => {\n\t\tif (STATS.refreshing === this.state.action) {\n\t\t\treturn false;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tthis.setState({\n\t\t\t\thasMore: true,\n\t\t\t\taction: STATS.refreshed\n\t\t\t});\n\t\t}, 1000);\n\t\tthis.setState({\n\t\t\taction: STATS.refreshing\n\t\t});\n\t};\n\n\thandLoadMore = () => {\n\t\tif (STATS.loading === this.state.action) {\n\t\t\treturn false;\n\t\t}\n\t\t//无更多内容则不执行后面逻辑\n\t\tif (!this.state.hasMore) {\n\t\t\treturn;\n\t\t}\n\t\tsetTimeout(() => {\n\t\t\tif (!this.hasMoreData()) {\n\t\t\t\tthis.setState({\n\t\t\t\t\taction: STATS.reset,\n\t\t\t\t\thasMore: false\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.setState({\n\t\t\t\t\taction: STATS.reset,\n\t\t\t\t\tinit: this.state.init + EventPerPageCount\n\t\t\t\t});\n\t\t\t}\n\t\t}, 1000);\n\t\tthis.setState({\n\t\t\taction: STATS.loading\n\t\t});\n\t};\n\n\t//數據刷新,需要把hasMore和init復原\n\tonEventsRefresh = () => {\n\t\tthis.setState({ hasMore: true, init: EventPerPageCount });\n\t};\n\n\t/* 跳转至详情 */\n\tToSportsDetails = (Vendor, EventData) => {\n\t\tconst { SportId, EventId, LeagueId, IsOutRightEvent } = EventData;\n\t\t//加速開啟:列表的數據,存到緩存 拿來展示,等拿到詳情數據 再取代掉\n\t\tconst cacheKey = SportId + '|||' + EventId;\n\t\tVendor._cacheSet(cacheKey, JSON.stringify(EventData), 10);\n\t\tRouter.push(\n\t\t\t`${Vendor.configs\n\t\t\t\t.VendorPage}/detail?sid=${SportId}&eid=${EventId}&lid=${LeagueId}&OE=${IsOutRightEvent}`\n\t\t);\n\t};\n\n\tShowBottomSheet = (type) => {\n\t\tthis.BetCartRef && this.BetCartRef.ShowBottomSheet(type);\n\t};\n\n\t/* 存储单投和串关数据 */\n\tPushBetCart = (data, type) => {\n\t\tconst { VendorName } = this.props.Vendor.configs;\n\t\tthis.props.betCart_add(data,VendorName)\n\t\tconst isComboBet = this.props.betCartInfo['isComboBet' + VendorName];\n\t\tif (!isComboBet) {\n\t\t\tthis.BetCartRef && this.BetCartRef.ShowBottomSheet(type);\n\t\t}\n\t}\n\n\t/* 删除数据 */\n\tRemoveBetCart = async (data = null) => {\n\t\tconst { VendorName } = this.props.Vendor.configs;\n\t\tif (data === null) {\n\t\t\t//清空\n\t\t\tawait this.props.betCart_clear(VendorName);\n\t\t\tawait this.props.betCart_setIsComboBet(false, VendorName);\n\t\t} else {\n\t\t\t//刪除單個\n\t\t\tawait this.props.betCart_remove(data, VendorName)\n\t\t}\n\n\t\t// 如果刪除後購物車為空,自動關閉購物車\n\t\tconst betCartData = this.props.betCartInfo['betCart' + VendorName];\n\t\tif (!betCartData || betCartData.length <= 0) {\n\t\t\tawait this.props.betCart_setIsComboBet(false, VendorName);\n\t\t\tthis.BetCartRef && this.BetCartRef.CloseBottomSheet();\n\t\t}\n\t};\n\n\t//點擊賠率=>投注\n\tclickOdds = (selectionData) => {\n\t\tif (!checkIsLogin()) {\n\t\t\tredirectToLogin();\n\t\t\treturn;\n\t\t}\n\t\t//自我限制\n\t\tif (global.hasSelfExclusion && global.hasSelfExclusion(3)) {\n\t\t\treturn;\n\t\t}\n\t\tif (!selectionData) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (!selectionData.DisplayOdds || selectionData.DisplayOdds == 0) return;\n\n\t\tconst { VendorName, MaxParlay } = this.props.Vendor.configs;\n\t\tconst isComboBet = this.props.betCartInfo['isComboBet' + VendorName];\n\t\tconst betCartData = this.props.betCartInfo['betCart' + VendorName];\n\n\t\tlet overMaxSelectionCount = betCartData.length >= MaxParlay; //是否超過最大限制\n\n\t\tif (!isComboBet) { //單投\n\t\t\tthis.PushBetCart(selectionData, 1);\n\t\t} else {\n\t\t\t//串關\n\t\t\t//沒超過最大限制\n\t\t\tif (!overMaxSelectionCount) {\n\t\t\t\t//串關模式是 點擊添加,再點一次就取消\n\t\t\t\tlet indexOf = betCartData.findIndex((v) => {\n\t\t\t\t\treturn v.SelectionId == selectionData.SelectionId;\n\t\t\t\t});\n\t\t\t\tif (indexOf === -1) {\n\t\t\t\t\tthis.PushBetCart(selectionData, 2);\n\t\t\t\t\tToast.success('添加成功');\n\t\t\t\t} else {\n\t\t\t\t\tthis.RemoveBetCart(selectionData);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tToast.error('哎呀,最多可投注串关' + MaxParlay + '场呦');\n\t\t\t}\n\t\t}\n\t};\n\n\ttoggleAll = (expandAll) => {\n\t\tlet newStatus = { expandAll };\n\t\tif (expandAll) {\n\t\t\tnewStatus['LeagueToggleStatusArray'] = null; //清空=全開\n\t\t} else {\n\t\t\tnewStatus['LeagueToggleStatusArray'] = []; //空數組=全關\n\t\t}\n\t\tthis.setState(newStatus);\n\t};\n\n\trender() {\n\t\tconst { ToggleFavourite, EventDatas, OddsUpData, OddsDownData, Loading, Vendor, BetType } = this.props;\n\t\tconst { init, hasMore, expandAll, LeagueToggleStatusArray } = this.state;\n\n\t\tconst betCartData = this.props.betCartInfo['betCart' + Vendor.configs.VendorName];\n\n\t\t/* 赛事的列表数据 */\n\t\t/* 截取的数据 */\n\t\tlet CutEventDatas = EventDatas.slice(0, init);\n\t\t/* 獲取聯賽分組 */\n\t\tlet leagueList = [];\n\t\tlet currentLeague = null;\n\t\tlet currentMarket = null;\n\t\t//console.log('=====CutEventDatas',JSON.parse(JSON.stringify(CutEventDatas)))\n\t\tCutEventDatas.map((ev, index) => {\n\t\t\tconst checkAndCreateSeparator = () => {\n\t\t\t\t//只有 市場選了[今天] 才需要展示 關注+滾球+今天\n\t\t\t\tif (!BetType || BetType.MarketId !== VendorMarkets.TODAY) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\n\t\t\t\t//處理分界點\n\t\t\t\tif (currentMarket !== ev.MarketIdForListing\n\t\t\t\t\t//分界點只有 關注,滾球 或 今天 才有 (IM早上9點-12點有可能返回早盤(market=1)比賽,用這個邏輯避免出現多餘的分界點)\n\t\t\t\t\t&& [VendorMarkets.FAVOURITE,VendorMarkets.RUNNING,VendorMarkets.TODAY].indexOf(ev.MarketIdForListing) !== -1\n\t\t\t\t) {\n\t\t\t\t\tlet header = 'separatorToday';\n\t\t\t\t\tif (ev.MarketIdForListing === VendorMarkets.FAVOURITE) {\n\t\t\t\t\t\theader = 'separatorFav';\n\t\t\t\t\t} else if (ev.MarketIdForListing === VendorMarkets.RUNNING) {\n\t\t\t\t\t\theader = 'separatorRun';\n\t\t\t\t\t}\n\t\t\t\t\tleagueList.push({\n\t\t\t\t\t\tLeagueId: header, //聯賽id\n\t\t\t\t\t\tLeagueName: header, //聯賽名\n\t\t\t\t\t\tLeagueKey: header,\n\t\t\t\t\t\tEventIds: [] //該聯賽分組下的賽事\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (index === 0) { //開頭第一個分隔線要先放\n\t\t\t\tcheckAndCreateSeparator();\n\t\t\t}\n\n\t\t\tlet createNewLeague = false;\n\t\t\t//逐筆往下查看賽事的聯賽變化\n\t\t\tif (currentLeague) {\n\t\t\t\tif (ev.LeagueId === currentLeague.LeagueId && ev.MarketIdForListing === currentMarket) {\n\t\t\t\t\t//聯賽相同,放一起\n\t\t\t\t\tcurrentLeague.EventIds.push(ev.EventId);\n\t\t\t\t} else {\n\t\t\t\t\t//不相同,保留現在的聯賽分組\n\t\t\t\t\tleagueList.push(currentLeague);\n\t\t\t\t\t//產生一個新的聯賽分組\n\t\t\t\t\tcreateNewLeague = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t//第一個執行 還沒有currentLeague,\n\t\t\t\t//產生一個新的聯賽分組\n\t\t\t\tcreateNewLeague = true;\n\t\t\t}\n\t\t\tif (createNewLeague) {\n\t\t\t\tcurrentLeague = {\n\t\t\t\t\tLeagueId: ev.LeagueId, //聯賽id\n\t\t\t\t\tLeagueName: ev.LeagueName, //聯賽名\n\t\t\t\t\tMarketId: ev.MarketIdForListing, //市場,主要用來區分關注賽事\n\t\t\t\t\tEventIds: [] //該聯賽分組下的賽事\n\t\t\t\t};\n\t\t\t\tcurrentLeague.EventIds.push(ev.EventId);\n\t\t\t\tcurrentLeague.LeagueKey = ev.LeagueId + '_' + ev.EventId + '_' + ev.MarketIdForListing; //因為時間排序 可能會有同一個聯賽 出現多次的情況,所以用 聯賽id + 第一個賽事id + 市場id 作為key\n\t\t\t}\n\n\t\t\tif (index !== 0) { //兩個不同市場的分隔線 要在數據建立好之後才加入\n\t\t\t\tcheckAndCreateSeparator();\n\t\t\t}\n\n\t\t\tcurrentMarket = ev.MarketIdForListing;\n\t\t\t//最後一筆 保留現在的聯賽分組\n\t\t\tif (index === CutEventDatas.length - 1) {\n\t\t\t\tleagueList.push(currentLeague);\n\t\t\t}\n\t\t});\n\n\t\t//console.log('=====leagueList',JSON.parse(JSON.stringify(leagueList)));\n\n\t\t//處理聯賽展開收起\n\t\tlet closedLeagueKeyArray = []; //收起的聯賽key\n\t\tif (LeagueToggleStatusArray && LeagueToggleStatusArray.length > 0) {\n\t\t\tLeagueToggleStatusArray.map((info) => {\n\t\t\t\tif (!info.isOpen) {\n\t\t\t\t\tclosedLeagueKeyArray.push(info.key);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\t//console.log('===closedLeagueKeyArray',closedLeagueKeyArray);\n\n\t\tconst allLeagueKeyArray = []; //全部的聯賽Key\n\t\tlet openLeagueKeyArray = []; //展開的聯賽key\n\t\tleagueList.map((l) => {\n\t\t\tconst thisKey = l.LeagueKey;\n\t\t\tallLeagueKeyArray.push(thisKey);\n\t\t\tif (closedLeagueKeyArray.indexOf(thisKey) === -1) {\n\t\t\t\topenLeagueKeyArray.push(thisKey); //默認展開\n\t\t\t}\n\t\t});\n\n\t\t//console.log('===openLeagueKeyArray',openLeagueKeyArray);\n\n\t\t//配置在key={} 用來觸發刷新\n\t\tconst allLeagueKeyArrayJSON = md5(JSON.stringify(allLeagueKeyArray));\n\n\t\t/* console.log('%c赛事列表的数据', 'font-size:36px;color:red;', EventDatas); */\n\t\t//console.log(leagueList)\n\t\treturn (\n\t\t\t
\n\t\t\t\t{Loading ? (\n\t\t\t\t\t\n\t\t\t\t) : EventDatas == '' ? BetType.MarketId == 4 ? (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t暂无关注赛事,马上关注赛事吧\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t
\n\t\t\t\t\t\t哎呀!暂无相关赛事,换个游戏试试吧!\n\t\t\t\t\t
\n\t\t\t\t) : (\n\t\t\t\t\t\n\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\tsetTimeout(forceCheck, 100); //lazyload強制觸發 避免聯賽收起時 有跑版問題\n\t\t\t\t\t\t\t\t//console.log('===onChange',keyArray);\n\n\t\t\t\t\t\t\t\tlet newState = {};\n\t\t\t\t\t\t\t\t//檢查是否全開或全收合了\n\t\t\t\t\t\t\t\tif (!keyArray || keyArray.length <= 0) {\n\t\t\t\t\t\t\t\t\t//全收合\n\t\t\t\t\t\t\t\t\t//切換nav上面的按鈕\n\t\t\t\t\t\t\t\t\tthis.props.onAllLeaguesToggled(false);\n\t\t\t\t\t\t\t\t\t//狀態也要跟著變\n\t\t\t\t\t\t\t\t\tnewState['expandAll'] = false;\n\t\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\t\tkeyArray &&\n\t\t\t\t\t\t\t\t\tArray.isArray(keyArray) &&\n\t\t\t\t\t\t\t\t\tkeyArray.length > 0 &&\n\t\t\t\t\t\t\t\t\tleagueList.length === keyArray.length\n\t\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\t\t//全展開\n\t\t\t\t\t\t\t\t\t//數據量一樣\n\t\t\t\t\t\t\t\t\t//排序後用JSON.stringify比較\n\t\t\t\t\t\t\t\t\tconst sortedLeagueKeys = leagueList.map((l) => l.LeagueKey).sort();\n\t\t\t\t\t\t\t\t\tconst sortedSelectedKeyArray = keyArray.map((l) => l).sort();\n\t\t\t\t\t\t\t\t\tif (JSON.stringify(sortedLeagueKeys) === JSON.stringify(sortedSelectedKeyArray)) {\n\t\t\t\t\t\t\t\t\t\t//全展開\n\t\t\t\t\t\t\t\t\t\t//切換nav上面的按鈕\n\t\t\t\t\t\t\t\t\t\tthis.props.onAllLeaguesToggled(true);\n\t\t\t\t\t\t\t\t\t\t//狀態也要跟著變\n\t\t\t\t\t\t\t\t\t\tnewState['expandAll'] = true;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tconst LeagueToggleStatusArray = allLeagueKeyArray.map((thisKey) => {\n\t\t\t\t\t\t\t\t\tif (keyArray.indexOf(thisKey) !== -1) {\n\t\t\t\t\t\t\t\t\t\treturn { key: thisKey, isOpen: true };\n\t\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\t\treturn { key: thisKey, isOpen: false };\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tnewState['LeagueToggleStatusArray'] = LeagueToggleStatusArray; //保存展開/收起狀態\n\n\t\t\t\t\t\t\t\tthis.setState(newState);\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tkey={expandAll + '_' + allLeagueKeyArrayJSON}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{leagueList.map((leagueData) => {\n\t\t\t\t\t\t\t\tif (leagueData.LeagueId === 'separatorFav') {\n\t\t\t\t\t\t\t\t\treturn
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t关注赛事\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (leagueData.LeagueId === 'separatorRun') {\n\t\t\t\t\t\t\t\t\treturn
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t滚球\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (leagueData.LeagueId === 'separatorToday') {\n\t\t\t\t\t\t\t\t\treturn
\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t即将进行的赛事\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t{leagueData.LeagueName}\n\t\t\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\theaderClass=\"my-header-class\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{CutEventDatas.filter(\n\t\t\t\t\t\t\t\t\t\t\t(data) =>\n\t\t\t\t\t\t\t\t\t\t\t\tdata.LeagueId == leagueData.LeagueId &&\n\t\t\t\t\t\t\t\t\t\t\t\tdata.MarketIdForListing == leagueData.MarketId && //加上關注賽事 就有可能出現重複比賽,加入查詢條件\n\t\t\t\t\t\t\t\t\t\t\t\tleagueData.EventIds.indexOf(data.EventId) !== -1\n\t\t\t\t\t\t\t\t\t\t).map((CutEventitem, CutEventkey) => {\n\t\t\t\t\t\t\t\t\t\t\treturn CutEventitem.IsOutRightEvent ? (\n\t\t\t\t\t\t\t\t\t\t\t\t/* 猜冠军赛事 */\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\t/* 常规赛事 */\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t\t{checkIsLogin() ? <>\n\t\t\t\t\t{/* 投注板块 */}\n\t\t\t\t\t { this.BetCartRef = ref }}\n\t\t\t\t\t\tVendor={this.props.Vendor}\n\t\t\t\t\t\tRemoveBetCart={this.RemoveBetCart}\n\t\t\t\t\t/>\n\t\t\t\t\t{/* 购物车浮窗 */}\n\t\t\t\t\t{betCartData && betCartData.length > 0 ?\n\t\t\t\t\t : null }\n\t\t\t\t : null}\n\t\t\t
\n\t\t);\n\t}\n}\n\nconst mapStateToProps = (state) => ({\n\tbetCartInfo: state.betCartInfo,\n});\n\nconst mapDispatchToProps = {\n\tbetCart_setIsComboBet: ACTION_BetCart_setIsComboBet,\n\tbetCart_add: ACTION_BetCart_add,\n\tbetCart_remove: ACTION_BetCart_remove,\n\tbetCart_clear: ACTION_BetCart_clear,\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Betting);\n\n/* 预防 大数据*/\nexport function GameDataCut(data, callback, pageSize = 10) {\n\tlet totalCount = data.length;\n\tlet GamePageNumber = 1;\n\tlet totalPageNumer = Math.ceil(totalCount / pageSize);\n\n\tlet handler = () => {\n\t\tlet start = (GamePageNumber - 1) * pageSize;\n\t\tlet end = GamePageNumber * pageSize;\n\t\tlet currentData = data.slice(start, end);\n\t\tif (typeof callback === 'function') {\n\t\t\tcallback(currentData, {\n\t\t\t\ttotalCount,\n\t\t\t\ttotalPageNumer,\n\t\t\t\tGamePageNumber,\n\t\t\t\tpageSize\n\t\t\t});\n\t\t}\n\t\tif (GamePageNumber < totalPageNumer) {\n\t\t\twindow.requestAnimationFrame(handler);\n\t\t}\n\t\tGamePageNumber++;\n\t};\n\thandler();\n}\n","import React, { Component } from 'react';\nimport ReactIMG from '@/ReactIMG';\n\n//import { Cookie } from '../../Data/Helper';\nclass _SuspendBtn extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\toLeft: '',\n\t\t\toTop: '',\n\t\t\topenRemark: true\n\t\t};\n\t\tthis.$vm = null; // 悬浮按钮\n\t\tthis.moving = false; // 移动状态\n\n\t\tthis.oW = null; // 悬钮距离\n\t\tthis.oH = null;\n\n\t\tthis.htmlWidth = null; // 页面宽度\n\t\tthis.htmlHeight = null;\n\n\t\tthis.bWidth = null; // 悬钮宽度\n\t\tthis.bHeight = null;\n\n\t\tthis.click = false; // 是否是点击\n\t\tthis.onClose = this.onClose.bind(this);\n\t\tthis.openURL = this.openURL.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.$vm.addEventListener(\n\t\t\t'touchmove',\n\t\t\t(e) => {\n\t\t\t\tif (e.cancelable) {\n\t\t\t\t\te.preventDefault();\n\t\t\t\t}\n\t\t\t},\n\t\t\t{\n\t\t\t\tpassive: false\n\t\t\t}\n\t\t);\n\t}\n\n\t// 移动触发\n\tonTouchStart(e) {\n\t\te = e.touches[0];\n\t\tthis.click = true;\n\n\t\tthis.oW = e.clientX - this.$vm.getBoundingClientRect().left;\n\t\tthis.oH = e.clientY - this.$vm.getBoundingClientRect().top;\n\n\t\tthis.htmlWidth = document.documentElement.clientWidth;\n\t\tthis.htmlHeight = document.documentElement.clientHeight;\n\n\t\tthis.bWidth = this.$vm.offsetWidth;\n\t\tthis.bHeight = this.$vm.offsetHeight;\n\n\t\tlet oLeft = e.clientX - this.oW;\n\t\tlet oTop = e.clientY - this.oH;\n\t\tthis.setState({\n\t\t\toLeft,\n\t\t\toTop\n\t\t});\n\n\t\tthis.moving = true;\n\t}\n\n\t// 移动结束\n\tonTouchEnd(e) {\n\t\tthis.moving = false;\n\n\t\tthis.$vm.className = this.$vm.className + ' t-suspend-button-animate';\n\n\t\t// 左侧距离\n\t\tlet oLeft = this.state.oLeft;\n\t\tif (oLeft < (this.htmlWidth - this.bWidth) / 2) {\n\t\t\toLeft = 0;\n\t\t} else {\n\t\t\toLeft = this.htmlWidth - this.bWidth;\n\t\t}\n\n\t\tthis.setState({\n\t\t\toLeft\n\t\t});\n\t}\n\n\t// 开始移动\n\tonTouchMove(e) {\n\t\tthis.$vm.className = 't-suspend-button';\n\t\tthis.moving && this.onMove(e);\n\t}\n\n\t// 移动中\n\tonMove(e) {\n\t\te = e.touches[0];\n\t\tthis.click = false;\n\n\t\t// 左侧距离\n\t\tlet oLeft = e.clientX - this.oW;\n\t\tlet oTop = e.clientY - this.oH;\n\t\tif (oLeft < 0) {\n\t\t\toLeft = 0;\n\t\t} else if (oLeft > this.htmlWidth - this.bWidth) {\n\t\t\toLeft = this.htmlWidth - this.bWidth;\n\t\t}\n\t\tif (oTop < 0) {\n\t\t\toTop = 0;\n\t\t} else if (oTop > this.htmlHeight - this.bHeight) {\n\t\t\toTop = this.htmlHeight - this.bHeight;\n\t\t}\n\n\t\tthis.setState({\n\t\t\toLeft,\n\t\t\toTop\n\t\t});\n\t}\n\n\tonClose() {\n\t\tlet that = this;\n\t\tthat.setState({\n\t\t\topenRemark: false\n\t\t});\n\t\t// if (!Cookie.Get('TI10EventModal_CN_Mobile')) {\n\t\t// \tCookie.Create('TI10EventModal_CN_Mobile', true, 1);\n\t\t// }\n\t}\n\n\topenURL() {\n\t\tlet that = this;\n\t\tthat.props.clickGoRed();\n\t}\n\n\trender() {\n\t\tconst { iconImgUrl } = this.props;\n\t\tconst { openRemark } = this.state;\n\t\treturn (\n\t\t\t
\n\t\t\t\t{openRemark && (\n\t\t\t\t\t (this.$vm = $vm)}\n\t\t\t\t\t\tonTouchStart={(e) => this.onTouchStart(e)}\n\t\t\t\t\t\tonTouchMove={(e) => this.onTouchMove(e)}\n\t\t\t\t\t\tonTouchEnd={(e) => this.onTouchEnd(e)}\n\t\t\t\t\t\tstyle={{\n\t\t\t\t\t\t\tleft: `${this.state.oLeft}px`,\n\t\t\t\t\t\t\ttop: `${this.state.oTop}px`\n\t\t\t\t\t\t\t// ...style\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t\n\t\t\t\t\t\t{iconImgUrl && \"\"}\n\t\t\t\t\t\n\t\t\t\t)}\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport const SuspendBtn = _SuspendBtn;\n","import Router from 'next/router';\nimport Layout from '@/Layout';\n//import Header from '@/Games/Header/';\nimport Nav from '@/Games/Header/nav';\nimport Betting from '@/Games/Betting';\nimport BackToTop from '@/BackToTop';\nimport { EventChangeType, SortWays, SpecialUpdateType, VendorMarkets } from '$LIB/vendor/data/VendorConsts';\nimport Skeleton from '@/Skeleton/';\nimport reactUpdate from 'immutability-helper';\nimport moment from 'moment';\nimport { withBetterRouter } from '$LIB/js/withBetterRouter';\nimport React from 'react';\nimport HostConfig from \"$LIB/Host.config\";\nimport EventData from \"$LIB/vendor/data/EventData\";\nimport ReactIMG from '@/ReactIMG';\nimport { checkIsLogin } from '$LIB/js/util';\nimport { ApiPort } from \"$LIB/SPORTAPI\";\nimport { fetchRequest } from \"$LIB/SportRequest\";\nimport {SuspendBtn} from '../SuspendBtn/';\n\nimport dynamic from 'next/dynamic';\n\nconst MiniEvent = dynamic(\n\t() => import('@/Games/Betting/MiniEvent'),\n\t{ ssr: false }\n)\n\nclass EventListing extends React.PureComponent {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tmodalVisible: false,\n\t\t\tSportDatas: [],\n\t\t\tEventDatas: [],\n\t\t\tEventDetail: null,\n\t\t\tOddsUpData: {Events:{},Lines:{},Selections:{}} /* 上升赔率 */,\n\t\t\tOddsDownData: {Events:{},Lines:{},Selections:{}} /* 下降赔率 */,\n\t\t\tEventDataslength: 0,\n\t\t\tLoading: false,\n\t\t\tfirstloade: true,\n\t\t\t//從詳情頁過來的 縮小的比分框\n\t\t\tshowMiniEvent: false,\n\t\t\tminiEventId: null,\n\t\t\tminiSportId: 1,\n\t\t\tminiLeagueId: null,\n\t\t\tminiShowType: 0,\n\t\t\tBetType: '',\n\t\t\tminiGames: null,\n\t\t};\n\n\t\t//用來標記是否需要用緩存服務器數據\n\t\tthis.SportDatasHasSet = false;\n\t\tthis.EventDatasHasSet = false;\n\t\tthis.SportDatasUseCache = false;\n\t\tthis.EventDatasUseCache = false;\n\n\t\t//用來標記延遲執行的getEvents還要不要跑\n\t\tthis.GetEventsCalled = false;\n\n\t\tthis.initDelayTimer = null; //初始延遲加載的timer\n\t\tthis.initDelayTimer2 = null; //初始延遲加載的timer2\n\t\tthis.isDidUnmount = null; //紀錄是否已unmount,判斷異步動作是否還要執行\n\t}\n\n\t//默認查詢\n\tgetDefaultQueryParams() {\n\t\tconst theDayAfterTenDays = moment().add(10, 'days').format('YYYY-MM-DD');\n\t\tconst theDaytoday = moment().format('YYYY-MM-DD');\n\t\tconst type = {\n\t\t\tSportId: 1 /* 体育类型 不分Vendor 1 都是默認足球 */,\n\t\t\tMarketId: VendorMarkets.TODAY /* 市场类型 */, //默認選 今日(包含滾球)\n\t\t\tSortWay: SortWays.LeagueName /* 排序 */, //默認聯賽排序\n\t\t\tStartDate: theDaytoday /* 开始时间 */,\n\t\t\tEndDate: theDayAfterTenDays /* 结束时间 */\n\t\t};\n\t\tthis.setState({\n\t\t\tBetType: type\n\t\t});\n\t\treturn type;\n\t}\n\n\tasync componentDidMount() {\n\t\tthis.isDidUnmount = false;\n\t\tconst {query} = this.props.router; //從鏈接獲取要加載的參數\n\t\tconst { Vendor } = this.props;\n\n\t\tif ( !query || (JSON.stringify(query) === JSON.stringify({})) ) //沒參數 才使用API緩存\n\t\t{\n\t\t\tconsole.log('=======PLAN TO USE API CACHE=======')\n\t\t\tconst thisSportName = Vendor.configs.VendorName.toLowerCase()\n\n\t\t\tconst handleInitialCache = (cacheData) => {\n\t\t\t\tif (cacheData && (global.initialCache[thisSportName].isUsed === false)) {\n\t\t\t\t\tlet newState = {};\n\t\t\t\t\tif (!this.SportDatasHasSet) { //確定沒數據才用\n\t\t\t\t\t\tconsole.log('=======USE API CACHE for COUNT=======')\n\t\t\t\t\t\tif (this.state.firstloade === true) { //避免整頁刷新\n\t\t\t\t\t\t\tnewState.firstloade = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewState.SportDatas = cacheData.count\n\t\t\t\t\t\tthis.SportDatasUseCache = true;\n\t\t\t\t\t\tVendor.storeInitialCacheToPollingCache(cacheData,'count'); //API緩存也加入polling數據緩存機制\n\t\t\t\t\t}\n\t\t\t\t\tif (!this.EventDatasHasSet) { //確定沒數據才用\n\t\t\t\t\t\tconsole.log('=======USE API CACHE for EVENTS=======')\n\t\t\t\t\t\tif (this.state.firstloade === true) { //避免整頁刷新\n\t\t\t\t\t\t\tnewState.firstloade = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (this.state.Loading === true) {\n\t\t\t\t\t\t\tnewState.Loading = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnewState.EventDatas = cacheData.list\n\t\t\t\t\t\tthis.EventDatasUseCache = true;\n\t\t\t\t\t\tVendor.storeInitialCacheToPollingCache(cacheData,'event'); //API緩存也加入polling數據緩存機制\n\t\t\t\t\t}\n\t\t\t\t\tif (JSON.stringify(newState) !== '{}') {\n\t\t\t\t\t\tthis.setState(newState);\n\t\t\t\t\t}\n\t\t\t\t\tglobal.initialCache[thisSportName].isUsed = true; //標記為已使用\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log('=======ABORT USE API CACHE=======')\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (!checkIsLogin()) {\n\t\t\t\t//優化Performance:未登入,優先等待並使用 initialCache\n\t\t\t\tlet cacheData = await global.initialCache[thisSportName].cachePromise;\n\t\t\t\thandleInitialCache(cacheData);\n\t\t\t} else {\n\t\t\t\t//已登入則按原方式 initialCache 和 正常獲取 競速,先拿到的先用\n\t\t\t\tglobal.initialCache[thisSportName].cachePromise.then(handleInitialCache);\n\t\t\t}\n\n\t\t} else {\n\t\t\tconsole.log('=======NO API CACHE=======')\n\t\t}\n\n\t\t//優化Performance: 未登入+使用緩存 延遲10秒才開始獲取數據\n\t\tlet initDelay = 0;\n\t\tif (!checkIsLogin()\n\t\t\t&& this.SportDatasUseCache\n\t\t) {\n\t\t\tinitDelay = 10*1000;\n\t\t}\n\t\tconsole.log('=====Performance:Sports+Events:initDelay',initDelay);\n\n\t\tthis.initDelayTimer = setTimeout(() => {\n\t\t\tif (this.isDidUnmount) return;\n\t\t\tconsole.log('=====Performance:Sports:called',initDelay);\n\n\t\t\t//輪詢 體育計數\n\t\t\tthis.sportsPollingKey = Vendor.getSportsPollingGlobal('eventListing', (PollingResult) => {\n\t\t\t\tif (this.isDidUnmount) return;\n\t\t\t\t//console.log('===update Sports', PollingResult);\n\n\t\t\t\tthis.SportDatasHasSet = true;\n\n\t\t\t\tif (this.SportDatasUseCache) {\n\t\t\t\t\tthis.SportDatasUseCache = false; //跳過第一次更新\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\tlet newState = {SportDatas: PollingResult.NewData};\n\n\t\t\t\tif (this.state.firstloade === true) { //避免整頁刷新\n\t\t\t\t\tnewState.firstloade = false;\n\t\t\t\t}\n\t\t\t\tthis.setState(newState);\n\t\t\t});\n\t\t}, initDelay);\n\n\t\t//強制更新 體育計數 for 關注比賽移除 使用\n\t\tconst updateSportsCount = (thisVendorName) => {\n\t\t\tif (Vendor.configs.VendorName === thisVendorName) { //同vendor才適用\n\t\t\t\tVendor.getSports().then((PollingResult) => {\n\t\t\t\t\t//console.log('===eventListing_updateSportsCount');\n\t\t\t\t\tthis.setState({SportDatas: PollingResult.NewData});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\tif (typeof window !== \"undefined\") { //綁定到window上 全局可用\n\t\t\twindow.eventListing_updateSportsCount = updateSportsCount.bind(this);\n\t\t}\n\n\t\t//沒有查詢參數,就傳默認的\n\t\tconst defaultQuery = this.getDefaultQueryParams();\n\t\tif (JSON.stringify(query) === '{}' || !query || (!query.SportId && !query.miniSportId)) {\n\t\t\t//console.log('===DidMount load default',JSON.parse(JSON.stringify(query)))\n\t\t\tthis.initDelayTimer2 = setTimeout(() => {\n\t\t\t\tif (this.isDidUnmount) return;\n\t\t\t\tif (initDelay > 0 && this.GetEventsCalled) {\n\t\t\t\t\tconsole.log('=====Performance:Events:bypass',initDelay);\n\t\t\t\t\treturn; //有延遲執行的話,需要檢查 如果用戶已經有操作切換(call GetEvents()) 就不用再跑這裡,不然用戶先前的操作會被蓋掉\n\t\t\t\t}\n\t\t\t\tconsole.log('=====Performance:Events:called',initDelay);\n\t\t\t\tthis.GetEvents(defaultQuery, false); //默認參數不用更新網址鏈接\n\t\t\t}, initDelay); //和上面一樣延遲執行\n\t\t} else {\n\t\t\t//有傳入參數\n\t\t\tconst thisQuery = Object.assign({}, defaultQuery, query);\n\t\t\t//處理一下數據格式,要用int型態\n\t\t\tif (thisQuery.SportId) {\n\t\t\t\tthisQuery.SportId = parseInt(thisQuery.SportId);\n\t\t\t}\n\t\t\tif (thisQuery.MarketId) {\n\t\t\t\tthisQuery.MarketId = parseInt(thisQuery.MarketId);\n\t\t\t}\n\t\t\tif (thisQuery.SortWay) {\n\t\t\t\tthisQuery.SortWay = parseInt(thisQuery.SortWay);\n\t\t\t}\n\t\t\tif (thisQuery.StartDate) {\n\t\t\t\tthisQuery.StartDate = thisQuery.StartDate;\n\t\t\t}\n\t\t\tif (thisQuery.EndDate) {\n\t\t\t\tthisQuery.EndDate = thisQuery.EndDate;\n\t\t\t}\n\n\t\t\t//console.log('===DidMount load from query',JSON.parse(JSON.stringify(query)))\n\n\t\t\tthis.GetEvents(thisQuery);\n\n\t\t\tif (thisQuery.miniEventId) {\n\t\t\t\tthis.setState({\n\t\t\t\t\tshowMiniEvent: true,\n\t\t\t\t\tminiEventId: thisQuery.miniEventId,\n\t\t\t\t\tminiSportId: thisQuery.miniSportId,\n\t\t\t\t\tminiLeagueId: thisQuery.miniLeagueId,\n\t\t\t\t\tminiShowType: thisQuery.miniShowType,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tthis.getMiniGameInfo()\n\t}\n\n\tcomponentWillUnmount() {\n\t\tthis.isDidUnmount = true;\n\t\tconst { Vendor } = this.props;\n\t\tVendor.deletePolling(this.sportsPollingKey);\n\t\tVendor.deletePolling(this.eventPollingKey);\n\n\t\t//強制更新 體育計數 for 關注比賽移除 使用\n\t\tif (typeof window !== \"undefined\") {\n\t\t\twindow.eventListing_updateSportsCount = null;\n\t\t}\n\t\tclearTimeout(this.initDelayTimer);\n\t\tclearTimeout(this.initDelayTimer2);\n\t}\n\n\t/* 获取游戏列表数据 */\n\tGetEvents = (type, updateUrl=true) => {\n\t\tconst { Vendor } = this.props;\n\t\tif (updateUrl === true) {\n\t\t\tthis.GetEventsCalled = true;\n\t\t}\n\t\t//輪詢 比賽數據\n\t\tthis.setState({\n\t\t\tLoading: !this.EventDatasUseCache, //緩存就不用loading 直接現地切換\n\t\t\tBetType: type\n\t\t});\n\t\tthis.eventPollingKey = Vendor.getEventsPollingGlobal('eventListing',\n\t\t\tasync (PollingResult) => {\n\t\t\t\tif (this.isDidUnmount) return;\n\t\t\t\t//console.log('===update Events', JSON.parse(JSON.stringify(PollingResult)));\n\n\t\t\t\tthis.EventDatasHasSet = true;\n\n\t\t\t\tif (this.EventDatasUseCache) {\n\t\t\t\t\tthis.EventDatasUseCache = false;\n\n\t\t\t\t\t//如果沒有關注比賽,才跳過第一次更新(API緩存 拿不到關注比賽,所以第一次更新不能跳過,不然會出現的很慢)\n\t\t\t\t\tconst favEvents = await Vendor.getFavouriteEvents();\n\t\t\t\t\tconst currentFavEventsForThisSport = favEvents.filter(item => item.SportId === type.SportId);\n\t\t\t\t\tif (!currentFavEventsForThisSport || currentFavEventsForThisSport.length <=0) {\n\t\t\t\t\t\t//console.log('===update Events EventDatasUseCache');\n\t\t\t\t\t\treturn\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t//處理 數據變化\n\t\t\t\tlet OddsUpData = {Events:{},Lines:{},Selections:{}};\n\t\t\t\tlet OddsDownData = {Events:{},Lines:{},Selections:{}};\n\t\t\t\tPollingResult.Changes.map((changeData) => {\n\t\t\t\t\t//類型:更新\n\t\t\t\t\tif (changeData.ChangeType === EventChangeType.Update) {\n\t\t\t\t\t\tchangeData.SpecialUpdates.map((sUpdateData) => {\n\t\t\t\t\t\t\tconst thisEventId = changeData.EventId; //比賽ID\n\t\t\t\t\t\t\t// 處理賠率上升動畫\n\t\t\t\t\t\t\tif (sUpdateData.UpdateType === SpecialUpdateType.OddsUp) {\n\t\t\t\t\t\t\t\tconst thisLineId = sUpdateData.LineId; //投注線ID\n\t\t\t\t\t\t\t\tconst thisSelectionId = sUpdateData.SelectionId; //投注選項ID\n\t\t\t\t\t\t\t\tconst lineKey = thisEventId + '|||' + thisLineId;\n\t\t\t\t\t\t\t\tconst selectionKey = thisEventId + '|||' + thisLineId + '|||' + thisSelectionId;\n\t\t\t\t\t\t\t\tOddsUpData.Events[thisEventId] = true;\n\t\t\t\t\t\t\t\tOddsUpData.Lines[lineKey] = true;\n\t\t\t\t\t\t\t\tOddsUpData.Selections[selectionKey] = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// 處理賠率下降動畫\n\t\t\t\t\t\t\tif (sUpdateData.UpdateType === SpecialUpdateType.OddsDown) {\n\t\t\t\t\t\t\t\tconst thisLineId = sUpdateData.LineId; //投注線ID\n\t\t\t\t\t\t\t\tconst thisSelectionId = sUpdateData.SelectionId; //投注選項ID\n\t\t\t\t\t\t\t\tconst lineKey = thisEventId + '|||' + thisLineId;\n\t\t\t\t\t\t\t\tconst selectionKey = thisEventId + '|||' + thisLineId + '|||' + thisSelectionId;\n\t\t\t\t\t\t\t\tOddsDownData.Events[thisEventId] = true;\n\t\t\t\t\t\t\t\tOddsDownData.Lines[lineKey] = true;\n\t\t\t\t\t\t\t\tOddsDownData.Selections[selectionKey] = true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\t//整理一次setState 避免多次刷新\n\t\t\t\tlet newState = {\n\t\t\t\t\tLoading: false,\n\t\t\t\t\tEventDatas: PollingResult.NewData,\n\t\t\t\t\tOddsUpData,\n\t\t\t\t\tOddsDownData,\n\t\t\t\t};\n\n\t\t\t\tif (this.state.firstloade === true) { //避免整頁刷新\n\t\t\t\t\tnewState.firstloade = false;\n\t\t\t\t}\n\n\t\t\t\tthis.setState(newState);\n\t\t\t},\n\t\t\ttype.SportId,\n\t\t\ttype.MarketId,\n\t\t\ttype.SortWay,\n\t\t\ttype.StartDate,\n\t\t\ttype.EndDate\n\t\t); // <==查詢參數\n\n\t\t//更新網址鏈接\n\t\tif (updateUrl===true) { //最一開始沒帶參數的時候,不用更新網址鏈接\n\t\t\tconst {pathname, query} = this.props.router;\n\t\t\tconst params = new URLSearchParams(type);\n\n\t\t\t//console.log('===push from GETEvents')\n\n\t\t\t//用replace,避免用戶可以點擊back返回\n\t\t\tRouter.replace(pathname + '?' + params.toString(), undefined, {shallow: true});\n\t\t}\n\n\t\t//通知數據更新\n\t\tif (this.BettingRef) {\n\t\t\tthis.BettingRef.onEventsRefresh();\n\t\t}\n\t};\n\n\t//切換關注比賽\n\ttoggleFavourite = async (event) => {\n\t\tconst { Vendor } = this.props;\n\t\tif (!event.IsFavourite) {\n\t\t\tawait Vendor.addFavouriteEvent(event.EventId, event.SportId, event.IsOutRightEvent);\n\t\t} else {\n\t\t\tawait Vendor.removeFavouriteEvent(event.EventId);\n\t\t}\n\t\t//更新count\n\t\tconst newCount = Vendor.getSports().then((PollingResult) => {\n\t\t\tthis.setState({ SportDatas: PollingResult.NewData });\n\t\t});\n\n\t\t//更新賽事列表\n\t\t//切換 星號 展示\n\t\tlet targetIndexes = []; //因為增加展示 關注比賽,相同EventId會出現兩個\n\t\tthis.state.EventDatas.map((item, index) => {\n\t\t\tif (item.EventId === event.EventId) {\n\t\t\t\ttargetIndexes.push(index);\n\t\t\t}\n\t\t});\n\t\tif (targetIndexes.length > 0) {\n\t\t\tlet updates = {};\n\t\t\ttargetIndexes.map(targetIndex => {\n\t\t\t\tupdates[targetIndex] = {IsFavourite: {$set: !event.IsFavourite}};\n\t\t\t});\n\t\t\tthis.setState({ EventDatas: reactUpdate(this.state.EventDatas, updates) }, () => {\n\t\t\t\t//星號切換完 才處理數據\n\t\t\t\tif (this.state.BetType && this.state.BetType.MarketId === VendorMarkets.TODAY) {\n\t\t\t\t\tif (!event.IsFavourite) {\n\t\t\t\t\t\t//加入關注比賽\n\t\t\t\t\t\tconst cloneEvents = this.state.EventDatas.filter(ev => ev.EventId == event.EventId).map(ev => EventData.clone(ev));\n\t\t\t\t\t\tif (cloneEvents.length > 0) {\n\t\t\t\t\t\t\tlet cloneEvent = cloneEvents[0];\n\t\t\t\t\t\t\tcloneEvent.MarketIdForListing = VendorMarkets.FAVOURITE; //手動設定\n\t\t\t\t\t\t\t//找出全部關注比賽\n\t\t\t\t\t\t\tlet favEvents = [cloneEvent]; //新的這個也加進去\n\t\t\t\t\t\t\tfor (let i = 0; i < this.state.EventDatas.length; i++) {\n\t\t\t\t\t\t\t\tconst thisEv = this.state.EventDatas[i];\n\t\t\t\t\t\t\t\tif (thisEv.MarketIdForListing !== VendorMarkets.FAVOURITE) {\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tfavEvents.push(thisEv);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t//重新排序\n\t\t\t\t\t\t\tEventData.sortEvents(favEvents,this.state.BetType.SortWay);\n\t\t\t\t\t\t\t//重新插入關注比賽\n\t\t\t\t\t\t\tthis.setState({EventDatas: reactUpdate(this.state.EventDatas, {$splice: [[0, favEvents.length-1, ...favEvents]]})});\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t//刪除關注比賽\n\t\t\t\t\t\tconst targetIndex = this.state.EventDatas.findIndex(ev => ev.EventId == event.EventId);\n\t\t\t\t\t\tif (targetIndex > -1) {\n\t\t\t\t\t\t\tthis.setState({EventDatas: reactUpdate(this.state.EventDatas, {$splice: [[targetIndex, 1]]})});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\n\t//获取游戏活动\n\tgetMiniGameInfo = () => {\n\t\t//每次有新活動 改這些設定\n\t\tconst currentEventName = '14thAnniversary';\t//活動名稱(對應api返回的)\n\t\tconst currentEventPageUrl = '/event_Anniversary'; //活動頁router路徑\n\t\tconst currentEventClickPiwikName = 'Enter_' + currentEventName; //點擊事件piwik名字\n\t\tfetchRequest(ApiPort.MiniGames, \"get\")\n\t\t\t.then((data) => {\n\t\t\t\tif (data && data.result) {\n\t\t\t\t\tlet game = data.result.find(item=>item.name == currentEventName);\n\t\t\t\t\tif (game) {\n\t\t\t\t\t\t//把活動配置保存在miniGames\n\t\t\t\t\t\tgame.eventPageUrl = currentEventPageUrl;\n\t\t\t\t\t\tgame.eventClickPiwikName = currentEventClickPiwikName;\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tminiGames: game,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tlocalStorage.setItem('miniGames', JSON.stringify(game))\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.setState({\n\t\t\t\t\t\t\tminiGames: null,\n\t\t\t\t\t\t})\n\t\t\t\t\t\tlocalStorage.removeItem('miniGames')\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t\t.catch((err) => {\n\t\t\t\tconsole.log(err)\n\t\t\t});\n\t}\n\n\trender() {\n\t\tconst { SportDatas, EventDatas, OddsUpData, OddsDownData, Loading, firstloade, BetType } = this.state;\n\t\tconst { Vendor } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t{firstloade ? (\n\t\t\t\t\t\n\t\t\t\t) : (\n\t\t\t\t\t
\n\t\t\t\t\t\t{this.state.showMiniEvent ? (\n\t\t\t\t\t\t\t {\n\t\t\t\t\t\t\t\t\tthis.setState({ showMiniEvent: false, miniEventId: null, miniSportId: 1,miniLeagueId: null, miniShowType: 0 });\n\n\t\t\t\t\t\t\t\t\t//更新網址鏈接\n\t\t\t\t\t\t\t\t\tconst { pathname, query } = this.props.router;\n\t\t\t\t\t\t\t\t\tlet cloneQuery = Object.assign({}, query);\n\t\t\t\t\t\t\t\t\t//刪除mini配置\n\t\t\t\t\t\t\t\t\tdelete cloneQuery['miniEventId'];\n\t\t\t\t\t\t\t\t\tdelete cloneQuery['miniSportId'];\n\t\t\t\t\t\t\t\t\tdelete cloneQuery['miniLeagueId'];\n\t\t\t\t\t\t\t\t\tdelete cloneQuery['miniShowType'];\n\t\t\t\t\t\t\t\t\tconst params = new URLSearchParams(cloneQuery);\n\t\t\t\t\t\t\t\t\t//用replace,避免用戶可以點擊back返回\n\t\t\t\t\t\t\t\t\tRouter.replace(pathname + '?' + params.toString(), undefined, { shallow: true });\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{/* 版本迭代 删除主页banner 优化性能 */}\n\t\t\t\t\t\t\t{/* { this.HeaderRef = ref; } }\n\t\t\t\t\t\t\t/> */}\n\t\t\t\t\t\t\t{ //歐洲杯頭部\n\t\t\t\t\t\t\t\tHostConfig.Config.isEUROCUP2021\n\t\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t\t\tPushgtagdata(`Engagement Event`, 'Launch', 'Enter_EUROPage');\n\t\t\t\t\t\t\t\t\t\t\t\twindow.location.href = '/ec2021';\n\t\t\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t { this.NavRef = ref; }}\n\t\t\t\t\t\t\t\tMenuChange={(ID) => {\n\t\t\t\t\t\t\t\t\t//菜單 體育項目變化=>刷新banner數據\n\t\t\t\t\t\t\t\t\tif (this.HeaderRef) {\n\t\t\t\t\t\t\t\t\t\tthis.HeaderRef.getBannerData(ID);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tonToggleButtonClicked={expandAll=> {\n\t\t\t\t\t\t\t\t\t//菜單 點擊全展開/全收起按鈕=>賽事列表展開/收起\n\t\t\t\t\t\t\t\t\tif (this.BettingRef) {\n\t\t\t\t\t\t\t\t\t\tthis.BettingRef.toggleAll(expandAll);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tVendor={Vendor}\n\t\t\t\t\t\t\t\tSportDatas={SportDatas}\n\t\t\t\t\t\t\t\tGetEvents={(e) => this.GetEvents(e)}\n\t\t\t\t\t\t\t\tLoading={Loading}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t { this.BettingRef = ref; }}\n\t\t\t\t\t\t\t\tonAllLeaguesToggled={isExpandAll=> {\n\t\t\t\t\t\t\t\t\t//賽事列表 全展開 或 全收起=> 菜單的 全展開/全收起按鈕 要一起變化\n\t\t\t\t\t\t\t\t\tif (this.NavRef) {\n\t\t\t\t\t\t\t\t\t\tthis.NavRef.changeToggleButtonStatus(isExpandAll);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\tVendor={Vendor}\n\t\t\t\t\t\t\t\tToggleFavourite={this.toggleFavourite}\n\t\t\t\t\t\t\t\tOddsUpData={OddsUpData} /* 上升赔率 */\n\t\t\t\t\t\t\t\tOddsDownData={OddsDownData} /* 下降赔率 */\n\t\t\t\t\t\t\t\tSportDatas={SportDatas} /* 游戏类型 和游戏数据计数 */\n\t\t\t\t\t\t\t\tEventDatas={EventDatas} /* 当前进行的所有赛事 */\n\t\t\t\t\t\t\t\tGetEvents={(e) => this.GetEvents(e)}\n\t\t\t\t\t\t\t\tLoading={Loading}\n\t\t\t\t\t\t\t\tBetType={BetType}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{/* 不可删除 */}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t(this.state.miniGames !== null) ?\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tRouter.push(this.state.miniGames.eventPageUrl);\n\t\t\t\t\t\t\t\t\t\tPushgtagdata('Engagement_Event', 'Click', this.state.miniGames.eventClickPiwikName);\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/> : null\n\t\t\t\t\t\t}\n\t\t\t\t\t
\n\t\t\t\t)}\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport default withBetterRouter(EventListing);\n","import React from \"react\";\n/* \n\t投注主页骨架屏\n*/\nexport default class Skeleton extends React.PureComponent {\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t{/*
\n\t\t\t\t\t
\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t{[ ...Array(3) ].map((i, k) => {\n\t\t\t\t\t\t\treturn
;\n\t\t\t\t\t\t})}\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
*/}\n\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t{[ ...Array(6) ].map((i, k) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
\n\t\t);\n\t}\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"backTopContainer\":\"backTop_backTopContainer__pvlj6\",\"backTopContent\":\"backTop_backTopContent__LK6Dd\",\"backTopHide\":\"backTop_backTopHide__mwmkb\",\"backTop_icon\":\"backTop_backTop_icon__7u0c2\"};"],"names":["BackToTop","props","useState","useEffect","handleScroll","y","supportPageOffset","window","pageYOffset","isCSS1Compat","document","documentElement","scrollTop","body","setShow","undefined","compatMode","addEventListener","removeEventListener","div","className","backTop","show","style","ReactSVG","src","onClick","scrollTo","top","left","behavior","SwipeableBottomSheet","dynamic","ssr","_Bottomtime","state","isBottomSheetVisible","active","ShowBottomSheet","setState","setTimeout","overflow","render","this","Selectdate","SportId","Nextdays","i","unshift","moment","Date","setDate","getDate","format","SelectdateFormated","zIndex","bodyStyle","height","overflowHeight","marginTop","open","onChange","isOpen","h3","ul","sort","map","item","index","li","ChangeGame","substring","React","HeaderMenu","componentDidMount","componentWillUnmount","menuName","currentMenuName","items","selectedItem","formatItem","getItemKey","sortedItems","length","selectedItems","filter","withoutSelectedItems","concat","onClickMenu","display","itemKey","selectedItemKey","onClickItem","Pushgtagdata","onClickMoreButton","theDayAfterTenDays","add","theDaytoday","Bettingnav","date","type","MarketId","SortWay","StartDate","EndDate","GetEvents","isExpandAll","onToggleButtonClicked","changeToggleButtonStatus","chosegame","isopen","VendorMarkets","currentMenu","navBarFreeze","navRef","sportsMore","marketsMore","clickMenu","bind","clickSport","clickMarket","NavRef","router","query","JSON","stringify","cloneQuery","Object","assign","parseInt","MenuChange","headerBar","getElementById","clientHeight","handleScrollForNavbar","bettingList","current","lgbcr","getBoundingClientRect","lgbcr_height","bottom","freeze","newMenuName","sportData","sportId","marketData","marketId","selectedSport","selectedMarket","SportDatas","Loading","targetSports","s","targetMarkets","Markets","m","ref","SportName","Count","MarketName","label","input","hidden","checked","readOnly","targetWay","span","Bottomtime","e","Bottomsheet","headerName","withBetterRouter","Skeletondetail","Array","k","OutRightEvent","Vendor","EventData","ToggleFavourite","ToSportsDetails","ClickOdds","isComboBet","betCartInfo","configs","VendorName","betCartData","getEventDateMoment","ReactIMG","IsFavourite","TotalLineCount","OutRightEventName","Lines","Selections","SelectionData","CheckSelect","SelectionId","LineIsLocked","IsLocked","LazyImageForLeague","LeagueId","SelectionName","Odds","DisplayOdds","connect","TimeBlock","MonitorProps","shouldComponentUpdate","nextProps","nextState","dataIsEqual","IsRB","RBPeriodName","b","RBMinute","HasLiveStreaming","HasStatistic","HasVisualization","FavouriteStar","LinesCount","CornerCount","HasCornerData","HomeCorner","AwayCorner","TeamBlock","MonitorPropsForHOME","MonitorPropsForAWAY","HomeOrAway","TeamId","TeamName","Score","RedCard","IconUrl","HomeTeamId","HomeTeamName","HomeScore","HomeRedCard","HomeIconUrl","AwayTeamId","AwayTeamName","AwayScore","AwayRedCard","AwayIconUrl","HomeOrAwayIsOK","indexOf","LazyImageForTeam","thisClassName","color","LineDescCell","LineData","LineDesc","SelectionDesc","small","Handicap","UpOrDown","dangerouslySetInnerHTML","__html","ChangeSvg","OddsCell","isOddsUpOrDown","list","thisKey","EventId","LineId","MonitorPropsOfSelectionData","OddsUpData","OddsDownData","isOddsUp","isOddsDown","MoreStatus","LineColumn","thisPropLineKey","nextPropLineKey","LeftOrRight","PeriodId","selectionForHome","selectionForAway","TargetTeamId","selectionsForHome","selectionsForAway","VendorPeriodName","i18n","OddsSwiper","thisPropLines","nextPropLines","thisPropEventId","nextPropEventId","Events","pairedLines","PeriodIds","d","n","push","Set","periodId","LeftLine","RightLine","LeftLines","l","BetTypeName","RightLines","PairId","pariedLineData","VerticalEvent","LinesCountHorizontal","TeamBlockHorizontal","WrapperClass","HorizontalEvent","NormalEvent","userSetting","ListDisplayType","Bottombetbox","BetCartPopup","Betting","hasMoreData","EventDatas","init","handleAction","action","STATS","handLoadMore","handRefreshing","hasMore","onEventsRefresh","IsOutRightEvent","cacheKey","_cacheSet","Router","VendorPage","BetCartRef","PushBetCart","betCart_add","data","RemoveBetCart","betCart_clear","betCart_setIsComboBet","betCart_remove","CloseBottomSheet","clickOdds","selectionData","checkIsLogin","global","hasSelfExclusion","MaxParlay","overMaxSelectionCount","Toast","findIndex","v","redirectToLogin","toggleAll","expandAll","newStatus","ChampionCancel","Championactive","ChampTeameactive","ChampionSelects","LeagueToggleStatusArray","BettingRef","BetType","CutEventDatas","leagueList","currentLeague","currentMarket","ev","checkAndCreateSeparator","MarketIdForListing","header","LeagueName","LeagueKey","EventIds","createNewLeague","closedLeagueKeyArray","info","key","allLeagueKeyArray","openLeagueKeyArray","allLeagueKeyArrayJSON","md5","id","Skeleton","br","ReactPullLoad","downEnough","paddingTop","distanceBottom","Collapse","defaultActiveKey","accordion","keyArray","forceCheck","newState","onAllLeaguesToggled","isArray","sortedLeagueKeys","sortedSelectedKeyArray","leagueData","Panel","headerClass","CutEventitem","CutEventkey","mapDispatchToProps","ACTION_BetCart_setIsComboBet","ACTION_BetCart_add","ACTION_BetCart_remove","ACTION_BetCart_clear","SuspendBtn","_SuspendBtn","oLeft","oTop","openRemark","$vm","moving","oW","oH","htmlWidth","htmlHeight","bWidth","bHeight","click","onClose","openURL","cancelable","preventDefault","passive","onTouchStart","touches","clientX","clientY","clientWidth","offsetWidth","offsetHeight","onTouchEnd","onTouchMove","onMove","clickGoRed","iconImgUrl","width","background","img","alt","Component","MiniEvent","EventListing","updateUrl","GetEventsCalled","EventDatasUseCache","eventPollingKey","getEventsPollingGlobal","PollingResult","favEvents","currentFavEventsForThisSport","isDidUnmount","EventDatasHasSet","getFavouriteEvents","Changes","changeData","ChangeType","EventChangeType","SpecialUpdates","sUpdateData","thisEventId","UpdateType","SpecialUpdateType","thisLineId","lineKey","selectionKey","NewData","firstloade","pathname","params","URLSearchParams","toString","shallow","toggleFavourite","event","targetIndexes","updates","addFavouriteEvent","removeFavouriteEvent","getSports","then","targetIndex","$set","reactUpdate","$splice","cloneEvents","cloneEvent","thisEv","getMiniGameInfo","currentEventName","fetchRequest","ApiPort","result","game","find","name","eventPageUrl","eventClickPiwikName","miniGames","localStorage","setItem","removeItem","catch","err","modalVisible","EventDetail","EventDataslength","showMiniEvent","miniEventId","miniSportId","miniLeagueId","miniShowType","SportDatasHasSet","SportDatasUseCache","initDelayTimer","initDelayTimer2","getDefaultQueryParams","SortWays","thisSportName","handleInitialCache","cacheData","initDelay","updateSportsCount","defaultQuery","thisQuery","toLowerCase","initialCache","isUsed","count","storeInitialCacheToPollingCache","cachePromise","sportsPollingKey","getSportsPollingGlobal","thisVendorName","eventListing_updateSportsCount","deletePolling","clearTimeout","Layout","showheader","ShowType","CloseMini","HostConfig","location","href","Nav","ID","HeaderRef","getBannerData","featureIconUrl","module","exports"],"sourceRoot":""}