{"version":3,"sources":["index/Container.tsx","common/utils/loadScript.ts","common/utils/http/index.ts","common/utils/http/fetch.ts","common/utils/index.ts","config.ts","common/services/index.ts","common/consts.ts","index/App.tsx","components/Loading/index.tsx","common/utils/env.ts","common/polyfill.ts","index/Container.less","components/Loading/index.less"],"names":["Container","Map","http","Http","url","options","window","fetch","useMiddleware","ctx","next","a","isBrowser","prefetch","__prefetch__","key","req","prefetchId","p","getPrefetchData","res","defaultData","imageUrl","language","isInit","sandboxStr","queryShareInfo","isSandbox","host","post","config","body","front_params","JSON","stringify","login_type","channel_app_id","String","activity_id","process_id","originResult","json","result","code","data","process_exec_code","copywriting","message","value","get","valueArr","split","length","shareImageUrl","prefetchData","context","q","request","some","str","includes","_","query","id","content","titleWithI18n","de","en","es_ES","fr","it","ja","ko","pt","RU","th","VI","descWithI18n","start","Date","now","App","props","_ssrData","console","info","renderTDK","title","description","useEffect","location","href","origin","gameUtils","parseQuery","test","TeaSDK","initSendLogV3","app_id","pageConfig","zone","default_data","page_text","activity_form","sendLogV3","index","duration","Helmet","property","name","disableStream","init","level","targetRenderLevel","Number","features","ssr","customPrefetch","LoadingComponent","isNode","isBoe","process","env","LOAD_SERVICE_PSM","TCE_PSM","endsWith","TCE_HOST_ENV","isIOS","document","cookie","navigator","userAgent","isAndroid","isWeixin","isQQ","module","exports"],"mappings":"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","file":"static/js/index.c2cf9bc26a673312.chunk.js","sourcesContent":["import React from 'react';\nimport './Container.less';\n\nexport default function Container() {\n return <>;\n}\n","/* eslint-disable eslint-comments/disable-enable-pair */\n/* eslint-disable promise/param-names */\nconst scriptsMap = new Map();\nexport function loadScript(url: string, checkFn: () => boolean) {\n if (scriptsMap.get(url)) {\n return scriptsMap.get(url);\n }\n const script = document.createElement('script');\n script.src = url;\n document.head.appendChild(script);\n let resolve: any = null;\n let reject: any = null;\n let checking = true;\n const tick = () => {\n if (!checkFn) {\n return;\n }\n if (checkFn()) {\n resolve();\n } else if (checking) {\n setTimeout(() => tick, 50);\n }\n };\n\n script.onload = () => {\n script.onerror = null;\n script.onload = null;\n if (!checkFn) {\n checking = false;\n resolve();\n } else {\n tick();\n }\n };\n script.onerror = () => {\n script.onerror = null;\n script.onload = null;\n reject();\n };\n tick();\n scriptsMap.set(\n url,\n new Promise((r, j) => {\n resolve = r;\n reject = j;\n }),\n );\n return scriptsMap.get(url);\n}\n","import { Context, Http } from '@fe/g-utils';\nimport { isBrowser } from '../env';\nimport fetch from './fetch';\n\nconst http = new Http(fetch as any);\n\nhttp.useMiddleware(async (ctx: Context, next) => {\n if (isBrowser) {\n const prefetch = (window as any).__prefetch__;\n if (prefetch) {\n const key = ctx.req?.options?.prefetchId;\n const p = prefetch.getPrefetchData(key);\n if (p) {\n ctx.res = await p;\n return ctx;\n }\n }\n return next();\n } else {\n return next();\n }\n});\nexport default http;\n","import { HttpOptions } from '@fe/g-utils';\n\nexport default function fetch(\n url: string,\n options?: HttpOptions,\n): Promise {\n return window.fetch(url, options);\n}\n","import { isBrowser } from './env';\n\nexport * from './loadScript';\nexport { default as http } from './http';\n\nexport function parseQuery(): { [key: string]: any } {\n const { search } = location;\n const r = /([^=&?#]+)=([^&#]*)/g;\n const matches = search.match(r);\n if (!matches || !matches.length) {\n return {};\n }\n const query = {};\n matches.forEach(str => {\n const idx = str.indexOf('=');\n query[str.substr(0, idx)] = decodeURIComponent(str.substr(idx + 1));\n });\n return query;\n}\n\nexport const isSandbox = () => {\n if (!isBrowser) {\n return false;\n }\n\n const { hostname } = location;\n\n return (\n hostname.includes('.bytedance.net') || hostname === 'act-sandbox.snssdk.com'\n );\n};\n","// eslint-disable-next-line eslint-comments/disable-enable-pair\n/* eslint-disable import/no-anonymous-default-export */\nexport default {\n appId: 262304,\n actId: 30111563,\n appName: '',\n region: 'SG',\n enableShark: false,\n title: '赛季回顾中转页',\n description: '描述',\n image: '',\n ppe: ''\n};\n","import { http } from '../utils';\nimport config from '~/config';\n\nexport type PrefetchData = {\n imageUrl: string;\n shareImageUrl?: string;\n language: string;\n code?: number;\n message?: string;\n isInit?: boolean;\n};\n\nconst defaultData: PrefetchData = {\n imageUrl: '',\n language: '',\n isInit: false\n};\n\ntype FuncPreFetch = (context: any) => Promise;\n\ntype FuncQueryShareInfo = (key: string, isSandbox?: boolean) => Promise;\n\nexport const sandboxStr = ['sandbox', 'localhost'];\n\n// 获取key对应的内容\nexport const queryShareInfo: FuncQueryShareInfo = async (key: string, isSandbox = false) => {\n const host = isSandbox ? 'https://act-sandbox.vasnssdk.com' : 'https://www.marvelsnap.com';\n const originResult = await http.post(`${host}/act/${config.appId}/process/exec/v2`, {\n body: {\n front_params: JSON.stringify({ key }),\n login_type: 'no_login',\n channel_app_id: String(config.appId),\n activity_id: String(config.actId),\n process_id: '7312278496405969670'\n }\n });\n const result = await originResult.json();\n const { code, data = {} } = result;\n if (code !== 0) {\n return {\n ...defaultData,\n code: -2\n };\n }\n const { process_exec_code, copywriting } = data;\n if (process_exec_code !== 0) {\n return {\n ...defaultData,\n code: -3,\n message: copywriting\n };\n }\n const value = data?.get?.value?.value || '';\n const valueArr = value.split(',');\n if (valueArr?.length < 2) {\n return {\n ...defaultData,\n code: -4,\n message: `array length or type error: ${valueArr.length}/${valueArr[0]}`\n };\n }\n const imageUrl = valueArr[0] || '';\n const language = valueArr[1] || '';\n const shareImageUrl = valueArr[2] || '';\n\n return {\n language,\n imageUrl,\n shareImageUrl\n };\n};\n\n// 预取数据\nexport const prefetchData: FuncPreFetch = async (context) => {\n const data = defaultData;\n try {\n let q: Record = {};\n let isSandbox = false;\n try {\n // 判断是否沙箱\n const host = context?.request?.host || context?.request?.url || '';\n isSandbox = sandboxStr.some((str) => host.includes(str));\n } catch (_) {}\n if (context.request) {\n // 获取query\n q = context.request.query || {};\n }\n if (!q.id) {\n return {\n ...defaultData,\n isInit: true,\n code: -1\n };\n }\n const content = await queryShareInfo(q.id, isSandbox);\n return {\n ...content,\n isInit: true\n };\n } catch (e) {\n data.code = -9999;\n data.message = e.message;\n data.isInit = true;\n }\n\n return data;\n};\n","export const langMap = {\n en: 'en-US',\n 'en-SG': 'en-sea',\n 'zh-Hans': 'zh-Hans',\n 'zh-Hant': 'zh-TW',\n de: 'de_DE',\n 'es-MX': 'es-MX',\n es_ES: 'es_ES',\n th: 'th-TH',\n VI: 'vi-VN',\n fr: 'fr_FR',\n id: 'id-ID',\n it: 'it-IT',\n ja: 'ja-JP',\n ko: 'ko_KR',\n pt: 'pt_BR',\n RU: 'ru_RU'\n};\n\nexport const titleWithI18n: Record = {\n de: 'MARVEL SNAP – Dominiere das Marvel-Multiversum in einem rasanten Card Battler',\n en: 'MARVEL SNAP - Dominate the Marvel Multiverse in High-Speed Card Battling Action',\n 'en-SG': 'MARVEL SNAP - Dominate the Marvel Multiverse in High-Speed Card Battling Action',\n es_ES:\n 'MARVEL SNAP: domina el Multiverso Marvel en batallas de cartas superrápidas y llenas de acción',\n 'es-MX':\n 'MARVEL SNAP: domina el Multiverso Marvel en batallas de cartas superrápidas y llenas de acción',\n fr: `MARVEL SNAP - Dominez le multivers Marvel dans un jeu de combat de cartes rapide et rempli d'action`,\n id: 'MARVEL SNAP - Mulai Card Battle yang Cepat & Seru!',\n it: 'MARVEL SNAP - Domina il Multiverso Marvel in questo gioco di carte adrenalinico',\n ja: 'MARVEL SNAP - ハイスピードカードバトルで、マーベル・マルチバースを支配しよう',\n ko: '마블스냅 - 3분 컷 카드 대전 액션에서 마블 멀티버스를 지배하세요!',\n pt: 'MARVEL SNAP: Conquiste o Multiverso Marvel em um jogo de cartas frenético',\n RU: 'Marvel SNAP: участвуйте в динамичных карточных битвах и покорите мультивселенную Marvel',\n th: 'MARVEL SNAP - ครอบครองมาร์เวลมัลติเวิร์สในการดวลการ์ดที่รวดเร็ว',\n // vi: '',\n 'zh-Hans': '《MARVEL SNAP》——在快节奏卡牌对战中称霸漫威多元宇宙',\n 'zh-Hant': '《漫威:瞬戰超能》——在快節奏卡牌對戰中稱霸漫威多元宇宙',\n VI: ''\n};\n\nexport const descWithI18n: Record = {\n de:\n 'MARVEL SNAP ist ein rasanter Card Battler. Im Spiel kannst du dein eigenes Superheldenteam aus Charaktere aus dem Marvel-Multiversum aufbauen. Das Spiel ist einfach und unkompliziert, ohne numerisches Wachstum. Lade einfach das Spiel herunter! Und genieße ein 5-minütiges spannendes PVP-Duell, in dem es um Intelligenz, Mut und Glück geht.',\n en:\n 'MARVEL SNAP is a fast-paced card battle game. In the game, you will be able to choose members from the Marvel multiverse to build your own super hero team.The game is simple and straightforward, with no numerical growth. Just download the game! And enjoy a 5-minute exciting PVP duel of intelligence, courage and luck.',\n 'en-SG':\n 'MARVEL SNAP is a fast-paced card battle game. In the game, you will be able to choose members from the Marvel multiverse to build your own super hero team.The game is simple and straightforward, with no numerical growth. Just download the game! And enjoy a 5-minute exciting PVP duel of intelligence, courage and luck.',\n es_ES:\n 'MARVEL SNAP es un juego de batalla de cartas superrápido en el que podrás elegir miembros del multiverso de Marvel para crear tu propio equipo de superhéroes. El juego es simple y directo, sin crecimiento numérico. ¡Descárgalo ya! Y disfruta de un emocionante duelo JcJ de 5 minutos de inteligencia, valor y suerte.',\n 'es-MX':\n 'MARVEL SNAP es un juego de batalla de cartas superrápido en el que podrás elegir miembros del multiverso de Marvel para crear tu propio equipo de superhéroes. El juego es simple y directo, sin crecimiento numérico. ¡Descárgalo ya! Y disfruta de un emocionante duelo JcJ de 5 minutos de inteligencia, valor y suerte.',\n fr: `MARVEL SNAP est un jeu de bataille de cartes palpitant. Choisissez parmi les personnages du multivers Marvel pour constituer votre propre équipe de super-héros. Le jeu est simple et facile à prendre en main. Téléchargez-le et vous ferez l'expérience de duels JcJ de 5 minutes mettant votre intelligence, votre courage et votre chance à l'épreuve.`,\n id:\n 'MARVEL SNAP adalah battle game dengan ritme cepat. Di game ini, kamu bisa memilih karakter dari multiverse Marvel untuk membentuk tim super hero favoritmu. Game ini sangat simple dan mudah tanpa penghitungan angka yang rumit. Download game-nya sekarang dan nikmati duel PVP 5 menit yang melibatkan kecerdasan, keberanian dan keberuntungan!',\n it:\n 'MARVEL SNAP è un gioco di carte dal ritmo frenetico. In questo gioco, potrai scegliere tra i membri del Multiverso Marvel per costruire il tuo team di supereroi. È un gioco immediato e diretto, senza crescita numerica. Ti basterà scaricarlo per poter vivere 5 minuti di puro divertimento in un emozionante duello PvP di intelligenza, fortuna e coraggio!',\n ja:\n 'MARVEL SNAP は極めて速いペースで行われるカードバトルゲームです。ゲーム内ではマーベルの世界からヒーローたちを選び抜いて自分だけのチームを構成できます。ゲーム自体は至極単純で、面倒な数式も演算も必要ありません。ダウンロードしてすぐ遊べます!5分あれば楽しめる運と勇気と頭脳をぶつける PVP デュエルを堪能しましょう!',\n ko:\n '마블스냅은 빠르게 진행되는 카드 배틀 게임입니다. 게임 내에서 마블 멀티버스의 캐릭터들을 선택하여 나만의 슈퍼히어로 팀을 구성할 수 있습니다. 수치적 성장이 없어 간단하고 직관적입니다. 지금 바로 게임을 다운로드하고 5분간 진행되는 치열한 PVP 결투를 즐겨 보세요! 지력, 용기, 운을 시험해 볼 시간입니다.',\n pt:\n 'MARVEL SNAP é um jogo frenético de batalha com cartas. Nele, você poderá escolher membros do Multiverso da Marvel para montar sua própria equipe de super-heróis. O jogo é simples, direto e balanceado — é só baixar! E divirta-se com um emocionante duelo de 5 minutos que coloca sua inteligência, coragem e sorte contra outro jogador à prova.',\n RU:\n 'MARVEL SNAP — это динамичный карточный баттлер. В игре вы сможете выбирать персонажей мультивселенной Marvel, чтобы создать свою собственную команду супергероев. Игра проста и незамысловата, без какого-либо численного роста. Просто скачайте игру! И насладитесь 5-минутным захватывающим PVP-поединком интеллекта, мужества и удачи.',\n th:\n 'MARVEL SNAP เป็นเกมดวลการ์ดที่เดินเกมอย่างรวดเร็ว ในเกมนี้ คุณจะได้เลือกสมาชิกจากมาร์เวลมัลติเวิร์สเพื่อสร้างทีมซูเปอร์ฮีโร่ของคุณเอง เกมมีรูปแบบเข้าใจง่ายและตรงไปตรงมาโดยไม่ต้องพึ่งการเติบโตของตัวเลข เพียงแค่ดาวน์โหลดเกม! และสนุกไปกับการต่อสู้แบบ PVP อันน่าตื่นเต้นนาน 5 นาทีเพื่อประลองไหวพริบ ความกล้า และดวง',\n // vi:\n // 'MARVEL SNAP là một tựa game đấu bài siêu tốc. Trong trò chơi, bạn sẽ có thể chọn các thành viên từ đa vũ trụ Marvel để xây dựng chiến đội anh hùng của riêng mình. Trò chơi rất đơn giản, dễ hiểu và không có sự gia tăng về chỉ số thẻ bài. Bạn chỉ cần tải về trò chơi và tận hưởng trận đấu giữa người chơi với người chơi thú vị chỉ kéo dài 5 phút, trong đó bạn phải tận dụng trí thông minh, lòng can đảm và sự may mắn của mình.',\n 'zh-Hans':\n 'MARVEL SNAP是一款快节奏卡牌战斗游戏。在这款游戏中,你可以用漫威多元宇宙里的人物组成你的专属超级英雄战队。游戏简单直接,没有数值成长。立即下载MARVEL SNAP,在5分钟一局的刺激PVP对战中挑战你的智慧、胆量和运气吧!',\n 'zh-Hant':\n '《漫威:瞬戰超能》,節奏明快的卡牌對戰遊戲。在遊戲中,玩家會挑選來自漫威多重宇宙的成員,打造專屬自己的超級英雄團隊。遊玩機制簡單直白,沒有戰力養成要素。立即下載遊戲!享受鬥智鬥勇鬥運氣的5分鐘精彩PVP對決。',\n VI: ''\n};\n","import React, { useEffect } from 'react';\nimport { Helmet } from 'react-helmet';\nimport { Tea as TeaSDK, gameUtils } from '@fe/game-sdk';\nimport AppContainer from './Container';\nimport Loading from '~/components/Loading';\nimport { PrefetchData, prefetchData } from '~/common/services';\nimport { descWithI18n, titleWithI18n } from '~/common/consts';\nimport pageConfig from '~/config';\n\nconst start = Date.now();\nexport default function App(props: any) {\n const { data } = props._ssrData;\n\n const { language, imageUrl, shareImageUrl, isInit } = (data?.prefetchData as PrefetchData) || {};\n console.info('album', language, imageUrl);\n\n const renderTDK = () => {\n return {\n title: titleWithI18n[language] || titleWithI18n.en,\n description: descWithI18n[language] || descWithI18n.en\n };\n };\n\n useEffect(() => {\n if (!isInit) {\n return;\n }\n if (!imageUrl) {\n const sandboxStr = ['bytedance.net', 'sandbox', 'localhost'];\n const isSandbox =\n typeof window !== 'undefined' && sandboxStr.some((str) => location.origin.includes(str));\n const query = gameUtils.parseQuery();\n if (query?.test === '1') {\n return;\n }\n if (isSandbox) {\n location.href = `https://act-sandbox.vasnssdk.com/gms/b1e398fc30`;\n } else {\n // TODO 需要改成分享中转页(当前)页面域名\n location.href = `https://www.marvelsnap.com/seasonrecap/s20/share`;\n }\n return;\n }\n location.href = imageUrl;\n }, [imageUrl, isInit, shareImageUrl]);\n useEffect(() => {\n TeaSDK.initSendLogV3({\n app_id: pageConfig.appId,\n activity_id: pageConfig.actId,\n zone: pageConfig.region,\n // 非必传参数,这个字段可以自定义通用参数,并且会在所有埋点事件里统一传参\n default_data: {\n page_text: pageConfig.title,\n activity_form: '1'\n }\n });\n\n TeaSDK.sendLogV3('acv_pageview', {\n index: 1\n });\n TeaSDK.sendLogV3('acv_pageload', {\n index: 1,\n duration: Date.now() - start\n });\n }, []);\n return (\n <>\n \n \n \n \n \n \n \n \n \n {renderTDK().title}\n \n \n \n );\n}\n\n// 支持 react-helmet\nApp.disableStream = true;\n\nApp.init = (context) => {\n const { level } = context.request.query;\n if (['0', '1', '2'].includes(level)) {\n // 2 表示服务器渲染,1表示服务端预取数据,0表示客户端渲染\n context.targetRenderLevel = Number(level);\n }\n // 2 表示服务器渲染,1表示服务端预取数据,0表示客户端渲染\n};\n\nApp.prefetch = prefetchData;\n\nApp.config = {\n features: {\n ssr: {\n customPrefetch: {\n LoadingComponent: Loading\n }\n }\n }\n};\n","/**\n * @file 加载提示动画\n * @author lupengyu@bytedance.com\n */\n\nimport React from 'react';\nimport './index.less';\n\nexport default function Loading() {\n return (\n
\n
Loading...
\n
\n );\n}\n","export const isNode = typeof window === 'undefined';\nexport const isBrowser = !isNode;\n\nconst getPSM = () => {\n if (isBrowser || typeof process === 'undefined') {\n return '-';\n }\n const psm = process.env.LOAD_SERVICE_PSM || process.env.TCE_PSM || '-';\n return psm;\n};\n\nexport const isInternal = getPSM().endsWith('_internal');\n\nexport const emptyFn = () => {\n //\n};\nexport const isDev = process.env.NODE_ENV === 'development';\nexport const isBoe = process.env.TCE_HOST_ENV === 'boe';\nexport const isTestEnv =\n (isBrowser && document.cookie.includes('env=test')) || (isNode && isBoe);\n\nconst publicPath = isTestEnv\n ? '//p1.dailygn.com/obj/'\n : '//s16b.tiktokcdn.com/toutiao/fe/long_cache/';\nexport const baseUrl = isDev ? '/' : publicPath;\nexport const isIOS = isBrowser && /iPhone/i.test(window.navigator.userAgent);\nexport const isAndroid =\n isBrowser && /Android/i.test(window.navigator.userAgent);\n\nexport const isByte =\n isBrowser &&\n (/(NewsArticle)[\\s/_](\\d.\\d.\\d)/i.test(window.navigator.userAgent) ||\n /aweme_\\d+/i.test(window.navigator.userAgent) ||\n /live_stream_\\d+/i.test(window.navigator.userAgent) ||\n /VideoArticle/i.test(window.navigator.userAgent) ||\n /Super \\d.\\d.\\d/i.test(window.navigator.userAgent));\nexport const isGSDK =\n isBrowser && /BDGameSDK/i.test(window.navigator.userAgent);\nexport const isWeixin =\n isBrowser && /micromessenger/i.test(window.navigator.userAgent);\nexport const isQQ =\n isBrowser && /QQ\\/([\\d.]+)/.test(window.navigator.userAgent) && !isWeixin;\nexport const isQQBrowser =\n isBrowser &&\n /MQQBrowser/i.test(window.navigator.userAgent) &&\n !isWeixin &&\n !isQQ;\nexport const isQzone = isBrowser && /Qzone/i.test(window.navigator.userAgent);\nexport const isUcAndroidBrowser =\n isBrowser && /UCBrowser/i.test(window.navigator.userAgent) && isAndroid;\nexport const isUcIosBrowser =\n isBrowser && /UCBrowser/i.test(window.navigator.userAgent) && isIOS;\n\nexport function getServicePSM() {\n return `ttgame.platform.gms_act_gateway${isInternal ? '_internal' : ''}`;\n}\n\nexport function getCgameShiftServicePSM() {\n return isInternal\n ? 'ttgame.platform.gactivity_sandbox'\n : 'ttgame.platform.gactivity';\n}\n","import 'whatwg-fetch';\n\nconsole.info('--polyfill--');\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error\":\"Container__error--2_x9_\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"mask\":\"index__mask--3e9BQ\",\"loading\":\"index__loading--3vACX\",\"flip\":\"index__flip--1pTGB\"};"],"sourceRoot":""}