{"version":3,"sources":["webpack://_N_E/./client/utils/cookie.ts","webpack://_N_E/./client/utils/device.ts","webpack://_N_E/./static/hook/useApi.ts","webpack://_N_E/./static/layout/error.tsx","webpack://_N_E/./static/hook/useClient.ts","webpack://_N_E/./client/utils/staticOpenGraph.ts","webpack://_N_E/./static/layout/shareHead.tsx","webpack://_N_E/./static/layout/staticLayout.tsx"],"names":["Cookie","getItem","sKey","decodeURIComponent","document","cookie","replace","RegExp","encodeURIComponent","setItem","sValue","vEnd","sPath","sDomain","bSecure","test","sExpires","toUTCString","removeItem","this","hasItem","device","getPlatform","ua","match","indexOf","isIos","navigator","userAgent","isInSnack","isInOldSnack","isAndroid","isInUVideo","isAndroid4x","isLogin","ud","getAndroidVersion","version","toLowerCase","parseInt","split","getIOSVersion","length","Number","supportUniversalLink","getAppver","getUd","fetcher","url","fetch","credentials","then","res","json","useApi","api","useSWR","revalidateOnFocus","data","error","useState","noFetch","setNoFetch","useEffect","window","notLogin","result","isLoading","isError","Container","styled","div","rem","Error","tip","className","useClient","client","setClient","openGraph","siteName","ogType","twitterCardType","useAppLink","fbAppId","indexScheme","packageName","packageUrl","appId","appName","androidAppForGoogle","iosAppForGoogle","ShareHead","shareTitle","description","shareImg","siteUrl","setUrl","location","href","appMeta","rel","property","content","name","StaticLayout","title","loading","loadingConfig","needInApp","needLogin","abnormal","share","errorCollect","children","Children","ksBridge","login","success","reload","status","httpEquiv","dangerouslySetInnerHTML","__html","as","crossOrigin","type","src","process"],"mappings":"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","file":"static/chunks/9d87a13c613b66917af6b42a4ba8346bebb0527e.41b628c6fc9d9b2735d0.js","sourcesContent":["const Cookie = {\n getItem(sKey: string) {\n return (\n decodeURIComponent(\n document.cookie.replace(\n new RegExp(\n '(?:(?:^|.*;)\\\\s*' +\n encodeURIComponent(sKey).replace(/[-.+*]/g, '\\\\$&') +\n '\\\\s*\\\\=\\\\s*([^;]*).*$)|^.*$',\n ),\n '$1',\n ),\n ) || null\n );\n },\n setItem(\n sKey: string,\n sValue: any,\n vEnd?: Date,\n sPath?: string,\n sDomain?: string,\n bSecure?: string,\n ) {\n if (!sKey || /^(?:expires|max\\-age|path|domain|secure)$/i.test(sKey)) {\n return false;\n }\n const sExpires = (vEnd && '; expires=' + vEnd.toUTCString()) || '';\n document.cookie =\n encodeURIComponent(sKey) +\n '=' +\n encodeURIComponent(sValue) +\n sExpires +\n (sDomain ? '; domain=' + sDomain : '') +\n (sPath ? '; path=' + sPath : '') +\n (bSecure ? '; secure' : '');\n return true;\n },\n removeItem(sKey: string, sPath?: string, sDomain?: string) {\n if (!sKey || !this.hasItem(sKey)) {\n return false;\n }\n document.cookie =\n encodeURIComponent(sKey) +\n '=; expires=Thu, 01 Jan 1970 00:00:00 GMT' +\n (sDomain ? '; domain=' + sDomain : '') +\n (sPath ? '; path=' + sPath : '');\n return true;\n },\n hasItem(sKey: string) {\n return new RegExp(\n '(?:^|;\\\\s*)' +\n encodeURIComponent(sKey).replace(/[-.+*]/g, '\\\\$&') +\n '\\\\s*\\\\=',\n ).test(document.cookie);\n },\n};\n\nexport default Cookie;\n","import cookie from './cookie';\n\nconst device = {\n getPlatform(ua: string){\n if (ua.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/)) {\n return 'ios';\n }\n else if (ua.indexOf('Android') > -1 || ua.indexOf('Adr') > -1) {\n return 'android';\n }\n else\n return null;\n },\n isIos: () => !!navigator.userAgent.match(/\\(i[^;]+;( U;)? CPU.+Mac OS X/),\n isInSnack() {\n return /bulldog|kwai/i.test(navigator.userAgent);\n },\n isInOldSnack() {\n return (device.isIos() && cookie.getItem('kpn') !== 'KWAI_BULLDOG') || (device.isAndroid() && +(cookie.getItem('ver') || '') < 5.7);\n },\n isInUVideo() {\n return /uvideo/i.test(navigator.userAgent);\n },\n isAndroid: () => navigator.userAgent.indexOf('Android') > -1 || navigator.userAgent.indexOf('Adr') > -1,\n isAndroid4x: () => /Android 4\\./i.test(navigator.userAgent),\n // 如果是安卓设备,ud存在且不为'0'时,认作已登陆\n isLogin: () => {\n const ud = cookie.getItem('ud');\n return (device.isIos() && (cookie.getItem('token') || (!!ud && ud !== '(null)'))) || (device.isAndroid() && !!ud && ud !== '0');\n },\n getAndroidVersion () {\n const androidUa = navigator.userAgent.toLowerCase();\n let version = null;\n if (androidUa.indexOf('android') > 0) {\n const reg = /android [\\d._]+/gi;\n const v_info = navigator.userAgent.match(reg);\n version = (v_info + '').replace(/[^0-9|_.]/ig, '').replace(/_/ig, '.'); //得到版本号4.2.2\n version = parseInt(version.split('.')[0]);// 得到版本号第一位\n }\n return version;\n },\n getIOSVersion() {\n const match = navigator.userAgent.match(/OS (\\d+)_(\\d+)_?(\\d+)?/);\n if (!this.isIos() || !match || match.length < 3) {\n return false;\n }\n const version = Number(match[1]) + 0.1 * Number(match[2]);\n if (version > 0) {\n return version;\n }\n return false;\n },\n supportUniversalLink() {\n return this.getIOSVersion() >= 9;\n },\n\n getAppver: () => cookie.getItem('appver') || '1.0.0',\n getUd: () => cookie.getItem('ud') || '',\n};\n\n\nexport default device;\n","import useSWR from 'swr';\nimport { useEffect, useState } from 'react';\n\nexport const fetcher = (url: string) =>\n fetch(url, { credentials: 'same-origin' }).then((res) => {\n return res.json();\n });\n\nconst useApi = (api: string) => {\n const { data, error } = useSWR(api, fetcher, { revalidateOnFocus: false });\n const [noFetch, setNoFetch] = useState(false);\n\n useEffect(() => {\n if (!window.fetch) {\n setNoFetch(true);\n }\n }, []);\n\n return {\n data,\n notLogin: data && data.result === 109,\n isLoading: !error && !data,\n isError: error,\n noFetch,\n };\n};\n\nexport default useApi;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { rem } from '@/client/public/styledComponent/global';\n\nconst Container = styled.div`\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 999;\n background: #000;\n color: #fff;\n\n .text {\n font-size: ${rem(28)};\n font-family: Roboto-Regular;\n color: #939393;\n padding-bottom: 10vh;\n }\n\n //opacity: 0.5;\n`;\n\nconst Error = ({ tip }: { tip: string }) => {\n return (\n \n {tip}
\n \n );\n};\n\nexport default Error;\n","import { useEffect, useState } from 'react';\nimport device from '@/client/utils/device';\n\ninterface Client {\n isInSnack: boolean;\n isIos: boolean;\n}\n\nconst useClient = (): Client => {\n const [client, setClient] = useState({ isInSnack: true, isIos: false });\n\n useEffect(() => {\n setClient({\n isInSnack: device.isInSnack(),\n isIos: device.isIos(),\n });\n }, []);\n\n return client;\n};\n\nexport default useClient;\n","export const openGraph = {\n siteName: 'ikwaibulldog',\n ogType: 'website',\n twitterCardType: 'summary_large_image',\n useAppLink: false,\n fbAppId: '1301198813362609',\n indexScheme: 'ikwaibulldog://home',\n packageName: 'com.kwai.bulldog',\n packageUrl: 'https://play.google.com/store/apps/details?id=com.kwai.bulldog',\n appId: '1521114100',\n appName: 'Snack Video',\n androidAppForGoogle: 'android-app://com.kwai.bulldog/ikwaibulldog/home',\n iosAppForGoogle: 'ios-app://1521114100/ikwaibulldog/home',\n};\n","import React, { FC, useEffect, useState } from 'react';\nimport { openGraph } from '@/client/utils/staticOpenGraph';\n\nexport interface ShareHeadProps {\n shareTitle: string;\n description: string;\n shareImg: string;\n siteUrl?: string;\n}\n\nconst {\n siteName,\n ogType,\n twitterCardType,\n useAppLink,\n fbAppId,\n indexScheme,\n packageName,\n packageUrl,\n appId,\n appName,\n androidAppForGoogle,\n iosAppForGoogle,\n} = openGraph;\n\nconst ShareHead: FC = ({ shareTitle, description, shareImg, siteUrl }) => {\n const [url, setUrl] = useState(siteUrl);\n\n useEffect(() => {\n !url && setUrl(location.href);\n }, []);\n\n const appMeta = useAppLink && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n >\n );\n\n return (\n <>\n {/* facebook和whatsApp的分享用这些就可以了 */}\n \n \n \n \n \n \n \n \n\n {/* twitter有自己独特的分享头,但是也依赖上面的og系列 */}\n \n \n \n \n \n \n\n {/* AppLink 当有app的时候点进去可以直接进入app的某个页面,当没有的时候跳往app下载 */}\n {appMeta}\n >\n );\n};\n\nexport default ShareHead;\n","import React, { FC, ReactElement } from 'react';\nimport Head from 'next/head';\nimport Loading, { LoadingConfig } from '@/static/layout/loading';\nimport Error from '@/static/layout/error';\nimport useApi from '@/static/hook/useApi';\nimport useClient from '@/static/hook/useClient';\nimport { OverseaBridge } from '@/static/hook/useBridge';\nimport ShareHead, { ShareHeadProps } from '@/static/layout/shareHead';\n\ninterface Props {\n title: string;\n loading?: boolean;\n loadingConfig?: LoadingConfig;\n needInApp?: boolean;\n needLogin?: {\n status: boolean;\n ksBridge?: OverseaBridge;\n };\n disableIos?: boolean;\n abnormal?: {\n status: boolean;\n tip: string;\n };\n api?: string;\n share?: ShareHeadProps;\n errorCollect?: boolean;\n children: ReactElement;\n}\n\n/**\n * 通用的预渲染Layout\n * @param title 必须携带的参数,取消默认的title,因为该title要在客户端获取,如果有默认title在服务端渲染,会发生闪烁\n * @param loading 是否处于loading状态\n * @param loadingConfig loading相关属性\n * @param needInApp 是否只有在App中才能打开\n * @param needLogin 在端内打开页面时,是否需要登陆,\n * @param abnormal 异常提示,包括状态和文案\n * @param api 一条api请求,该请求在html下载完成后便开始预请求,方式为get,并对登陆状态进行捕获\n * @param share 是否支持站外分享,以及相应配置,注意不要用多语言等变量,head无法修改\n * @param errorCollect 是否通过写死在html中的脚本向雷达报错,处理cdn异常的情况\n * @param children\n * @constructor\n */\nconst StaticLayout: FC = ({\n title,\n loading = false,\n loadingConfig,\n needInApp = false,\n needLogin,\n abnormal,\n api = '',\n share,\n errorCollect,\n children,\n}) => {\n const { notLogin } = useApi(api);\n const { isInSnack } = useClient();\n\n let Children = (\n <>\n {loading ? : null}\n {children}\n >\n );\n\n if (isInSnack && needLogin && notLogin) {\n needLogin.ksBridge &&\n needLogin.ksBridge.login({\n success: () => window.location.reload(),\n });\n Children = ;\n }\n\n if (needInApp && !isInSnack) {\n Children = ;\n }\n\n // if (disableIos && isIos) {\n // Children = <>>;\n // window.location.href = '/one/common/404?type=device';\n // }\n\n if (abnormal && abnormal.status) {\n Children = ;\n }\n\n return (\n <>\n \n {title}\n \n \n \n \n \n \n \n\n {errorCollect && (\n <>\n \n >\n )}\n\n {share && }\n\n {api && }\n \n \n \n\n \n {process.env.eruda === 'on' && }\n {process.env.eruda === 'on' && }\n \n {Children}\n >\n );\n};\n\nexport default StaticLayout;\n"],"sourceRoot":""}