` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `
` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n","import React__default from 'react';\n\nfunction withTUXIcon(Icon) {\n return function (props) {\n var color = props.color,\n size = props.size,\n circleBackground = props.circleBackground;\n var iconProps = {};\n\n if (color !== undefined) {\n iconProps.className = \"text-color-\".concat(color);\n }\n\n if (size !== undefined) {\n iconProps.fontSize = \"\".concat(size, \"px\");\n }\n\n if (circleBackground !== undefined) {\n var backgroundColor = circleBackground.backgroundColor,\n circleSize = circleBackground.circleSize;\n var circleSizeVal = \"\".concat(circleSize, \"px\");\n var circleBackgroundStyles = {\n width: circleSizeVal,\n height: circleSizeVal\n };\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"inline-flex items-center justify-center rounded-full background-color-\".concat(backgroundColor),\n style: circleBackgroundStyles\n }, /*#__PURE__*/React__default.createElement(Icon, iconProps));\n }\n\n return /*#__PURE__*/React__default.createElement(Icon, iconProps);\n };\n}\n\nexport { withTUXIcon };\n","import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport { withTUXIcon } from './withTUXIcon.js';\nimport * as React from 'react';\n\nfunction IconXMarkSmall(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"currentColor\"\n }, props, {\n viewBox: \"0 0 48 48\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n className: props.className\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M21.17 24l-7.88-7.88a1 1 0 010-1.41l1.42-1.42a1 1 0 011.41 0L24 21.17l7.88-7.88a1 1 0 011.41 0l1.42 1.42a1 1 0 010 1.41L26.83 24l7.88 7.88a1 1 0 010 1.41l-1.42 1.42a1 1 0 01-1.41 0L24 26.83l-7.88 7.88a1 1 0 01-1.41 0l-1.42-1.42a1 1 0 010-1.41L21.17 24z\"\n }));\n}\nvar TUXIconXMarkSmall = withTUXIcon(IconXMarkSmall);\n\nexport default IconXMarkSmall;\nexport { TUXIconXMarkSmall };\n","import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport { withTUXIcon } from './withTUXIcon.js';\nimport * as React from 'react';\n\nfunction IconTickFillSmall(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"currentColor\"\n }, props, {\n viewBox: \"0 0 48 48\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n className: props.className\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M36.04 13.36c.2-.2.52-.2.71 0l2.5 2.59c.2.2.2.5 0 .7L21.12 34.83c-.91.91-2.37.89-3.25-.05L9.34 25.7a.5.5 0 01.01-.7l2.58-2.5a.5.5 0 01.71.01l6.92 7.37 16.48-16.52z\"\n }));\n}\nvar TUXIconTickFillSmall = withTUXIcon(IconTickFillSmall);\n\nexport default IconTickFillSmall;\nexport { TUXIconTickFillSmall };\n","var genID = function () {\n var count = 0;\n return function () {\n return (count++).toString();\n };\n}();\n\nexport { genID };\n//# sourceMappingURL=genID.js.map\n","import { slicedToArray as _slicedToArray, objectSpread2 as _objectSpread2, toConsumableArray as _toConsumableArray } from '../../_virtual/_rollupPluginBabelHelpers.js';\nimport clsx from 'clsx';\nimport React, { useState, useCallback, useImperativeHandle } from 'react';\nimport ReactDOM from 'react-dom';\nimport { CSSTransition, TransitionGroup } from 'react-transition-group';\nimport { IconXMarkSmall, IconTickFillSmall } from '@byted-tiktok/tux-icons';\nimport { genID } from '../../utils/genID.js';\nimport { TUXPortal } from '../TUXPortal/TUXPortal.js';\nimport { useTUXContext } from '../TUXProvider/TUXProvider.js';\nimport { TUXTextWIP } from '../TUXText/TUXText.js';\n\nvar _IconXMarkSmall, _IconTickFillSmall;\nvar toastInstance = null;\nvar DEFAULT_DURATION = 2000;\nvar TUXToastView = function TUXToastView(_ref) {\n var _ref$message = _ref.message,\n message = _ref$message === void 0 ? '' : _ref$message,\n icon = _ref.icon;\n\n var _useTUXContext = useTUXContext(),\n platform = _useTUXContext.platform;\n\n return /*#__PURE__*/React.createElement(\"div\", {\n className: clsx('tt-toast__container background-color-ToastDefault text-color-ConstTextInverse mx-16 py-8 box-border flex items-center justify-center', Boolean(icon) && 'pe-8', !icon && 'px-8', platform === 'iOS' && 'tt-toast--iOS')\n }, icon && /*#__PURE__*/React.createElement(\"span\", {\n className: \"tt-toast__icon mx-8 flex items-center\"\n }, icon), /*#__PURE__*/React.createElement(TUXTextWIP, {\n type: \"P1-SemiBold\",\n className: 'tt-toast__text' + (!icon ? \" text-center\" : \"\")\n }, message));\n};\nvar TUXToast = function TUXToast(_ref2) {\n var _ref2$message = _ref2.message,\n message = _ref2$message === void 0 ? '' : _ref2$message,\n icon = _ref2.icon,\n _ref2$isVisible = _ref2.isVisible,\n isVisible = _ref2$isVisible === void 0 ? false : _ref2$isVisible,\n getContainer = _ref2.getContainer;\n return /*#__PURE__*/React.createElement(TUXPortal, {\n getContainer: getContainer\n }, /*#__PURE__*/React.createElement(CSSTransition, {\n in: isVisible,\n timeout: 300,\n classNames: {\n enterActive: 'tt-toast--enter',\n enterDone: 'tt-toast--enter',\n exitActive: 'tt-toast--leave'\n }\n }, /*#__PURE__*/React.createElement(TUXToastView, {\n message: message,\n icon: icon\n })));\n};\nvar TUXToastQueue = /*#__PURE__*/React.forwardRef(function (_props, ref) {\n var _useState = useState([]),\n _useState2 = _slicedToArray(_useState, 2),\n toastList = _useState2[0],\n setToastList = _useState2[1];\n\n var add = useCallback(function (config) {\n var key = genID();\n\n var item = _objectSpread2(_objectSpread2({}, config), {}, {\n isVisible: true,\n key: key,\n createTime: Date.now()\n });\n\n var duration = item.duration || DEFAULT_DURATION;\n setToastList(function (currentList) {\n return [].concat(_toConsumableArray(currentList), [item]);\n });\n setTimeout(function () {\n setToastList(function (l) {\n return l.filter(function (v) {\n return v !== item;\n });\n });\n }, duration);\n }, []);\n useImperativeHandle(ref, function () {\n return {\n add: add\n };\n }, [add]);\n return /*#__PURE__*/React.createElement(TransitionGroup, null, toastList.map(function (conf) {\n return /*#__PURE__*/React.createElement(CSSTransition, {\n key: conf.key,\n timeout: 300,\n classNames: {\n enterActive: 'tt-toast--enter',\n enterDone: 'tt-toast--enter',\n exitActive: 'tt-toast--leave'\n }\n }, /*#__PURE__*/React.createElement(TUXToastView, conf));\n }));\n});\nTUXToastQueue.displayName = 'TUXToastQueue';\n\nvar newInstance = function newInstance(callback) {\n var div = document.createElement('div');\n document.body.appendChild(div);\n var called = false;\n\n function ref(_toast) {\n if (called) {\n return;\n }\n\n called = true;\n callback({\n toast: function toast(config) {\n _toast.add(config);\n },\n destroy: function destroy() {\n ReactDOM.unmountComponentAtNode(div);\n\n if (div.parentNode) {\n div.parentNode.removeChild(div);\n }\n }\n });\n }\n\n ReactDOM.render( /*#__PURE__*/React.createElement(TUXToastQueue, {\n ref: ref\n }), div);\n};\n\nvar toast = function toast(config) {\n if (!toastInstance) {\n newInstance(function (inst) {\n toastInstance = inst;\n toastInstance.toast(config);\n });\n } else {\n toastInstance.toast(config);\n }\n};\n\nvar info = function info(conf) {\n var message;\n var duration = DEFAULT_DURATION;\n\n if (typeof conf === 'string') {\n message = conf;\n } else {\n message = conf.message;\n conf.duration && (duration = conf.duration);\n }\n\n toast({\n message: message,\n duration: duration\n });\n};\n\nvar error = function error(conf) {\n var message;\n var duration = DEFAULT_DURATION;\n\n if (typeof conf === 'string') {\n message = conf;\n } else {\n message = conf.message;\n conf.duration && (duration = conf.duration);\n }\n\n toast({\n message: message,\n icon: _IconXMarkSmall || (_IconXMarkSmall = /*#__PURE__*/React.createElement(IconXMarkSmall, {\n className: \"text-color-Negative\"\n })),\n duration: duration\n });\n};\n\nvar success = function success(conf) {\n var message;\n var duration = DEFAULT_DURATION;\n\n if (typeof conf === 'string') {\n message = conf;\n } else {\n message = conf.message;\n conf.duration && (duration = conf.duration);\n }\n\n toast({\n message: message,\n icon: _IconTickFillSmall || (_IconTickFillSmall = /*#__PURE__*/React.createElement(IconTickFillSmall, {\n className: \"text-color-Positive\"\n })),\n duration: duration\n });\n};\n\nTUXToast.info = info;\nTUXToast.error = error;\nTUXToast.success = success;\n\nexport { TUXToast, TUXToastView };\n//# sourceMappingURL=TUXToast.js.map\n","import { slicedToArray as _slicedToArray } from '../../_virtual/_rollupPluginBabelHelpers.js';\nimport React, { useState, useEffect } from 'react';\nimport ReactDOM from 'react-dom';\n\nvar TUXPortal = function TUXPortal(_ref) {\n var children = _ref.children,\n getContainer = _ref.getContainer;\n\n var _useState = useState(null),\n _useState2 = _slicedToArray(_useState, 2),\n mountNode = _useState2[0],\n setMountNode = _useState2[1];\n\n useEffect(function () {\n var _getContainer;\n\n if (getContainer === false) {\n return;\n }\n\n var container = (_getContainer = getContainer === null || getContainer === void 0 ? void 0 : getContainer()) !== null && _getContainer !== void 0 ? _getContainer : document.body;\n setMountNode(container);\n }, [getContainer]);\n\n if (getContainer === false) {\n return /*#__PURE__*/React.createElement(React.Fragment, null, children);\n }\n\n return mountNode ? /*#__PURE__*/ReactDOM.createPortal(children, mountNode) : null;\n};\n\nexport { TUXPortal };\n//# sourceMappingURL=TUXPortal.js.map\n","import clsx from 'clsx';\nimport React from 'react';\n\nvar TUXTextWIP = function TUXTextWIP(_ref) {\n var type = _ref.type,\n children = _ref.children,\n _ref$className = _ref.className,\n className = _ref$className === void 0 ? '' : _ref$className;\n return /*#__PURE__*/React.createElement(\"span\", {\n className: clsx(type, className)\n }, children);\n};\n\nexport { TUXTextWIP };\n//# sourceMappingURL=TUXText.js.map\n","function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nexport { _extends as extends };\n","import React__default from 'react';\n\nfunction withTUXIcon(Icon) {\n return function (props) {\n var color = props.color,\n size = props.size,\n circleBackground = props.circleBackground;\n var iconProps = {};\n\n if (color !== undefined) {\n iconProps.className = \"text-color-\".concat(color);\n }\n\n if (size !== undefined) {\n iconProps.fontSize = \"\".concat(size, \"px\");\n }\n\n if (circleBackground !== undefined) {\n var backgroundColor = circleBackground.backgroundColor,\n circleSize = circleBackground.circleSize;\n var circleSizeVal = \"\".concat(circleSize, \"px\");\n var circleBackgroundStyles = {\n width: circleSizeVal,\n height: circleSizeVal\n };\n return /*#__PURE__*/React__default.createElement(\"div\", {\n className: \"inline-flex items-center justify-center rounded-full background-color-\".concat(backgroundColor),\n style: circleBackgroundStyles\n }, /*#__PURE__*/React__default.createElement(Icon, iconProps));\n }\n\n return /*#__PURE__*/React__default.createElement(Icon, iconProps);\n };\n}\n\nexport { withTUXIcon };\n","import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport { withTUXIcon } from './withTUXIcon.js';\nimport * as React from 'react';\n\nfunction IconLargeMissedEvent(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"currentColor\"\n }, props, {\n viewBox: \"0 0 72 72\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n className: props.className\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47.07 13.39a1.53 1.53 0 003.06 0v-3.36h6.5v29.94c0 14.03-4.23 16.23-8.8 18.3H12.36c3.2-2.67 5.84-7.52 5.84-18.3V10.03h6.76v3.36a1.53 1.53 0 003.05 0v-3.36h8v3.36a1.53 1.53 0 003.06 0v-3.36h8v3.36zM28.01 6.97h8V2.56a1.53 1.53 0 113.06 0v4.41h8V2.56a1.53 1.53 0 113.06 0v4.41h8.03c.84 0 1.53.69 1.53 1.53v31.47c0 16.3-6.05 19.03-10.9 21.22-.2.1-.42.14-.64.14H6.67a1.53 1.53 0 01-.63-2.92c4.69-2.11 9.11-4.11 9.11-18.44V8.5c0-.84.68-1.53 1.53-1.53h8.28V2.56a1.53 1.53 0 113.05 0v4.41zm38.1 64H24.86c-.84 0-1.53-.68-1.53-1.53v-4.42a1.53 1.53 0 113.06 0v2.9h38.2V8.5a1.53 1.53 0 113.06 0v60.94c0 .85-.68 1.53-1.52 1.53zm-33.77-30.1a1.53 1.53 0 01-1.08-2.6l4.12-4.13L31.26 30a1.53 1.53 0 012.16-2.15l4.12 4.12 4.13-4.12A1.53 1.53 0 0143.82 30l-4.12 4.13 4.12 4.12a1.53 1.53 0 01-2.15 2.16l-4.13-4.12-4.12 4.12c-.3.3-.69.45-1.08.45z\"\n }));\n}\nvar TUXIconLargeMissedEvent = withTUXIcon(IconLargeMissedEvent);\n\nexport default IconLargeMissedEvent;\nexport { TUXIconLargeMissedEvent };\n","import { isSSR } from './isSSR.js';\nimport { platform } from './platform.js';\n\nfunction fixSafariActive() {\n if (!isSSR() && platform === 'iOS') {\n // Fix for mobile safari won't trigger :active pseudo state\n // https://stackoverflow.com/questions/3885018/active-pseudo-class-doesnt-work-in-mobile-safari\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n document.addEventListener('touchstart', function () {}, false);\n }\n}\n\nexport { fixSafariActive };\n//# sourceMappingURL=fixSafariActive.js.map\n","import { ConfigProvider } from '@fe/armor_component';\nimport { useContext } from 'react';\nimport { AppContext } from '../app/app-layout';\nexport default (() => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return (useContext((ConfigProvider.ConfigContext as any)) as T);\n});","import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport { withTUXIcon } from './withTUXIcon.js';\nimport * as React from 'react';\n\nfunction IconTabArrowCounterClockwiseFill(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"currentColor\"\n }, props, {\n viewBox: \"0 0 48 48\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n className: props.className\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M12.05 22.89l2.36-2.18a1 1 0 011.41.06l1.35 1.45a1 1 0 01-.07 1.43l-5.74 5.15a2 2 0 01-2.77 0L3.3 23.62a1 1 0 01-.01-1.42l1.4-1.4a1 1 0 011.42 0l1.93 1.92a16 16 0 115.56 13.45.95.95 0 01-.04-1.4l1.39-1.43c.38-.4 1.01-.4 1.44-.05a12 12 0 10-4.35-10.4z\"\n }));\n}\nvar TUXIconTabArrowCounterClockwiseFill = withTUXIcon(IconTabArrowCounterClockwiseFill);\n\nexport default IconTabArrowCounterClockwiseFill;\nexport { TUXIconTabArrowCounterClockwiseFill };\n","import { TUXButton } from '@byted-tiktok/tux-components';\nimport { IconTabArrowCounterClockwiseFill } from '@byted-tiktok/tux-icons';\nimport React, { FC, useState } from 'react';\nimport useConfig from 'packages/common/hooks/useConfig';\nimport { sendLog } from 'packages/common/bridge';\nimport styles from './index.css';\ntype StatusProps = {\n icon: React.ReactElement;\n title?: string;\n subtitle?: string;\n isRetry?: boolean;\n darkMode?: boolean;\n errText?: string;\n page?: string;\n};\n\nconst Status: FC = ({\n title,\n subtitle,\n icon,\n isRetry,\n darkMode,\n errText,\n page\n}) => {\n const {\n t,\n query\n } = useConfig();\n const [loading, setLoading] = useState(false);\n\n const handleRetry = () => {\n sendLog('load_fail_page_click', {\n page,\n enter_from: query.query\n });\n setLoading(true);\n setTimeout(() => {\n window.location.reload();\n }, 3000);\n };\n\n return \n
\n
{icon}
\n {title &&
\n {title}\n
}\n {subtitle &&
\n {subtitle}\n
}\n
\n {isRetry &&
\n } onClick={handleRetry} isLoading={loading} />\n
}\n {errText &&
\n {errText}\n
}\n
;\n};\n\nexport default Status;","import { IconLargeMissedEvent } from '@byted-tiktok/tux-icons';\nimport useConfig from 'packages/common/hooks/useConfig';\nimport { emitCounter } from 'packages/common/slardar';\nimport React, { FC, useEffect } from 'react';\nimport Status from './Status';\ntype ErrorPageProps = {\n darkMode?: boolean;\n errText?: string;\n page?: string;\n};\nexport const ErrorPage10019: FC = props => {\n const {\n t\n } = useConfig();\n const {\n darkMode,\n errText,\n page\n } = props;\n useEffect(() => {\n emitCounter('participate-another-activity', 1);\n }, []);\n return } title={t('participate_another_activity_title', \"Rewards activity isn't available\")} subtitle={t('participate_another_activity_subtitle', \"You've participated in another rewards activity on TikTok.\")} darkMode={darkMode} errText={errText} page={page} />;\n};","import { extends as _extends } from './_virtual/_rollupPluginBabelHelpers.js';\nimport { withTUXIcon } from './withTUXIcon.js';\nimport * as React from 'react';\n\nfunction IconLargeErrorRobot(props) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n fill: \"currentColor\"\n }, props, {\n viewBox: \"0 0 72 72\",\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"1em\",\n height: \"1em\",\n className: props.className\n }), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M33.85 13.66a6.42 6.42 0 011.53-12.63 6.42 6.42 0 011.52 12.63V24.5h18.18a8.5 8.5 0 018.48 8.48v29.5a8.5 8.5 0 01-8.49 8.49H15.68a8.5 8.5 0 01-8.48-8.48V32.98a8.5 8.5 0 018.48-8.48h18.17V13.66zm1.53-9.58a3.37 3.37 0 000 6.72 3.36 3.36 0 000-6.72zm-19.7 23.47c-3 0-5.43 2.43-5.43 5.43v29.5c0 3 2.43 5.44 5.43 5.44h39.4c3 0 5.43-2.43 5.43-5.43V32.98c0-3-2.43-5.43-5.43-5.43h-39.4zm7 16.94a1.52 1.52 0 103.06 0v-4.64a1.52 1.52 0 10-3.05 0v4.64zm24.06 14.7c-.44 0-.86-.19-1.17-.54a13.37 13.37 0 00-20.39 0 1.54 1.54 0 01-2.15.18 1.52 1.52 0 01-.17-2.15 16.4 16.4 0 0125.03 0 1.53 1.53 0 01-1.15 2.5zM46.54 46c-.84 0-1.52-.68-1.52-1.52v-4.64a1.52 1.52 0 113.05 0v4.64c0 .83-.68 1.52-1.53 1.52z\"\n }));\n}\nvar TUXIconLargeErrorRobot = withTUXIcon(IconLargeErrorRobot);\n\nexport default IconLargeErrorRobot;\nexport { TUXIconLargeErrorRobot };\n","import React, { FC, useEffect } from 'react';\nimport { IconLargeErrorRobot } from '@byted-tiktok/tux-icons';\nimport Status from './Status';\nimport useConfig from 'packages/common/hooks/useConfig';\nimport { sendLog } from 'packages/common/bridge';\ntype ErrorPageProps = {\n darkMode?: boolean;\n errText?: string;\n page?: string;\n};\nexport const ErrorPage500: FC = props => {\n const {\n t,\n query\n } = useConfig();\n const {\n darkMode,\n errText,\n page\n } = props;\n useEffect(() => {\n sendLog('load_fail_page_show', {\n page,\n enter_from: query.enter_from\n });\n }, []);\n return } title={t('something_went_wrong_title', 'Something went wrong')} subtitle={t('something_went_wrong_subtitle', 'Please try again')} darkMode={darkMode} errText={errText} page={page} isRetry />;\n};","import { EVENTS, GetEmitArgs, GetOnFunction } from './event';\nexport default class EventBus {\n eventList: {\n [key: string]: Set;\n };\n\n constructor() {\n this.eventList = {};\n }\n\n $on(event: T, fn: GetOnFunction) {\n if (!this.eventList[event]) {\n this.eventList[event] = new Set();\n }\n\n this.eventList[event].add(fn);\n return {\n stop: () => {\n this.eventList[event].delete(fn);\n }\n };\n }\n\n $emit(event: T, args?: GetEmitArgs) {\n this.eventList[event] && this.eventList[event].forEach(fn => {\n fn(args || {});\n });\n }\n\n}","import React from 'react';\nimport { advancedTranslation, checkInApp, getAppRegion, translationFactory } from 'packages/common/utils';\nimport { TUXProvider } from '@byted-tiktok/tux-components';\nimport { ConfigConsumerProps } from 'packages/common';\nimport { getFormater } from 'packages/common/time-format';\nimport { TransformedLocaleConfig } from '@byted/date-fmt/dist/type';\nimport { TFunction } from 'packages/common/utils';\nimport EventBus from '../event-bus';\ntype AbTestParams = {\n [paramScope: string]: {\n versionId: number; // abtest group version_name\n\n value: Record; // abtest group parameters\n\n };\n};\nexport type AppLayoutPropsType = {\n ___commonParams: {\n query: Record;\n userAgent: string;\n isIOS: boolean;\n isPC?: boolean;\n starlingData: Record;\n tccData: ConfigConsumerProps;\n dateFormatConfig: TransformedLocaleConfig & {\n meridiem: string;\n };\n abGroups: AbTestParams;\n };\n ___dataSource: unknown[];\n};\nexport interface AppContext {\n query: Record;\n isIOS: boolean;\n appRegion: string;\n config: ConfigConsumerProps;\n dir: 'rtl' | 'ltr';\n isInApp: boolean;\n t: TFunction;\n advancedT: TFunction;\n dateFormat: ReturnType;\n dataSource: unknown[];\n eventBus: EventBus;\n abGroups: AbTestParams;\n}\nexport const formatAppContext = (props: AppLayoutPropsType): AppContext => {\n const {\n ___commonParams\n } = props;\n const {\n lng,\n dir: queryDir\n } = ___commonParams.query;\n const dir: 'rtl' | 'ltr' = queryDir === 'rtl' || ['ar', 'he', 'ur'].some(key => lng?.startsWith(key)) ? 'rtl' : 'ltr'; // starling\n\n const translation = translationFactory(___commonParams.starlingData || {}, lng);\n const advancedT = advancedTranslation(___commonParams.starlingData || {});\n const isInApp = checkInApp(___commonParams.userAgent);\n const dateFormat = getFormater(___commonParams.dateFormatConfig);\n const appRegion = (getAppRegion(___commonParams.userAgent) as string);\n const configData: AppContext = {\n query: ___commonParams.query,\n isIOS: ___commonParams.isIOS,\n config: ___commonParams.tccData,\n abGroups: ___commonParams.abGroups || {},\n appRegion,\n isInApp,\n t: translation,\n advancedT,\n dir,\n dateFormat,\n dataSource: props.___dataSource,\n eventBus: new EventBus()\n };\n return configData;\n};\n\nconst TUXLayout: React.FC = props => {\n return \n {props.children}\n ;\n};\n\nexport default TUXLayout;","import React from 'react';\nimport { isCsr } from '@fe/armor_utils';\nimport { getUserInfo } from 'packages/common/bridge';\nimport { ConfigProvider } from '@fe/armor_component';\nimport { TUXProvider } from '@byted-tiktok/tux-components';\nimport { ErrorPage10019 } from '../ErrorPage/10019';\nimport { ErrorPage500 } from '../ErrorPage/500';\nimport { AppContext, AppLayoutPropsType, formatAppContext } from 'packages/common/app/app-layout';\nimport { captureMessage, setSlardrUserId } from 'packages/common/slardar';\nexport type ConfigLayoutPropsType = AppLayoutPropsType;\n\nclass ConfigLayout extends React.Component {\n errorCode = 0;\n configData: AppContext;\n\n constructor(props: ConfigLayoutPropsType) {\n super(props);\n this.configData = formatAppContext(props);\n\n if (isCsr() && this.configData.isInApp) {\n // init slardar_web_id for feedback track\n getUserInfo().then(user => {\n if (user.user_id) {\n setSlardrUserId(user.user_id);\n }\n });\n }\n }\n\n componentDidCatch(err: Error) {\n captureMessage(err);\n\n if (err.message === '10019') {\n this.errorCode = 10019;\n } else {\n this.errorCode = 500;\n }\n\n this.forceUpdate();\n }\n\n render() {\n return \n \n {this.errorCode ? this.errorCode === 10019 ? : : this.props.children}\n \n ;\n }\n\n}\n\nexport default ConfigLayout;","export const APPIDS: Record = {\n M: '1233',\n T: '1180',\n LITE: '1340'\n};\nexport const onelinkMap = {\n '1180': {\n schema: 'snssdk1180://webview',\n link: 'https://snssdk1180.onelink.me/BAuo'\n },\n '1233': {\n schema: 'snssdk1233://webview',\n link: 'https://snssdk1233.onelink.me/bIdt'\n },\n '1340': {\n schema: 'snssdk1340://webview',\n link: 'https://snssdk1340.onelink.me/k3Nj'\n }\n};\nexport function querystringify(obj: Record) {\n const pairs: string[] = [];\n let value: string;\n let key: string;\n\n for (key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n value = `${obj[key]}`;\n\n if (!value && (value === null || typeof value === 'undefined')) {\n value = '';\n }\n\n key = encodeURIComponent(key);\n value = encodeURIComponent(value);\n if (key === null || value === null) continue;\n pairs.push(key + '=' + value);\n }\n }\n\n return pairs.length ? pairs.join('&') : '';\n}\nexport const getOneLink = (query: Record, code: string, _lng: string, region: string, aid: keyof typeof onelinkMap, isArmor?: boolean) => {\n const ACTIVITY_URL = `${window.location.origin}${isArmor ? '/activity/armor/referral_v2_task' : '/activity/referral/task'}`;\n const config = onelinkMap[aid];\n const activityQuery: Record = { ...query,\n enter_from: 'share',\n invite_code: code\n };\n\n if (region === 'br' && aid === '1340') {\n activityQuery.template = 'referral';\n activityQuery.cid = 'br_lite';\n }\n\n const schemaQuery = {\n url: `${ACTIVITY_URL}?${querystringify(activityQuery)}`\n };\n const onelinkQuery = {\n af_dp: `${config.schema}?${querystringify(schemaQuery)}`,\n af_web_dp: 'https://www.tiktok.com',\n c: `UG_Referral_${region.toUpperCase()}`,\n is_retargeting: 'true',\n pid: 'referral',\n af_adset: code\n };\n return `${config.link}?${querystringify(onelinkQuery)}`;\n};","import { querystringify } from 'packages/referral_share/share/util';\nimport { useCallback } from 'react';\nimport { closeWebView, openWebView } from '../bridge';\nimport { captureMessage } from '../slardar';\nimport useConfig from './useConfig';\nexport function replaceURL(href: string) {\n try {\n closeWebView();\n openWebView(href);\n } catch (err) {\n captureMessage(new Error('Failed to openWebView immediately after closeWebView'));\n }\n}\nconst only_cash_terms_link = 'https://sf16-draftcdn-sg.ibytedtos.com/obj/ies-hotsoon-draft-sg/tiktok/8eb2c148-b529-4907-be34-cf91434d69e6.html';\nconst cash_coupon_temrs_link = 'https://sf16-draftcdn-sg.ibytedtos.com/obj/ies-hotsoon-draft-sg/tiktok/daa5d24f-cd65-4535-ab6f-77ebb4721ab7.html';\nexport default function useOpenView() {\n const {\n query: baseQuery,\n config: {\n couponType,\n rulesLink\n }\n } = useConfig();\n const replaceCardPage = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n replaceURL(`/activity/armor/card_collection?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const replaceCardPagePersonal = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n replaceURL(`/activity/armor/card_collection_personal?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const openTask = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n delete baseQuery.module_id;\n openWebView(`/activity/referral/task?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const replaceTask = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n replaceURL(`/activity/referral/task?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const replaceArmorTask = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n replaceURL(`/activity/armor/referral_v2_task?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const replaceGiftGivingTask = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n window.location.replace(`${window.location.origin}` + `/activity/armor/gift_giving?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const replaceXmasGift = useCallback((extraQuery: Record = {}) => {\n replaceURL(`/activity/armor/dollars_xmas?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const replaceContributeReward = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n window.location.replace(`${window.location.origin}` + `/activity/armor/contribute_reward?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const openRules = useCallback((enter_from?: string) => {\n delete baseQuery.hide_nav_bar;\n delete baseQuery.should_full_screen;\n const query = { ...baseQuery\n };\n\n if (enter_from) {\n query.enter_from = enter_from;\n }\n\n if (query.region === 'kr') {\n +couponType === 1 ? openWebView(cash_coupon_temrs_link) : openWebView(only_cash_terms_link);\n } else {\n openWebView(rulesLink);\n }\n }, [baseQuery]);\n const openWithdraw = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_withdraw?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const replaceWithdraw = useCallback((query = {}) => {\n window.location.replace(`${window.location.origin}` + `/activity/armor/referral_withdraw?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openGiftMainPage = useCallback((query = {}) => {\n openWebView(`/activity/armor/gift_giving?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openPIPOPage = useCallback((extraQuery: {\n [key: string]: string;\n } = {}) => {\n delete baseQuery.module_id;\n openWebView(`/activity/armor/gift_card_list?${querystringify({ ...baseQuery,\n ...extraQuery\n })}`);\n }, [baseQuery]);\n const openCoupon = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_coupon?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openCouponCollection = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_coupon_collection?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openMyOffer = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_my_offer?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openCouponDetail = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_coupon_detail?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openSuperCash = useCallback((prefix: string, query = {}) => {\n openWebView(`https://${prefix}.tiktok.com/tt_armor/referral/redpack?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openMerchantDetail = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_merchant_detail?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openOfferDetail = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_offer_detail?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openGiftDetail = useCallback((query = {}) => {\n delete baseQuery.u_code;\n delete baseQuery.gift_token;\n openWebView(`/activity/armor/gift_detail?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openRecordHistory = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_record_history?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openAmbassadorManage = useCallback((query = {}) => {\n openWebView(`/activity/armor/ambassador_manage?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openGiftGivingPage = useCallback((query = {}) => {\n openWebView(`/activity/armor/gift_giving?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openMyPocketPage = useCallback((query = {}) => {\n delete baseQuery.u_code;\n delete baseQuery.gift_token;\n openWebView(`/activity/armor/my_pockets?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openInvite = useCallback((query = {}) => {\n openWebView(`/activity/armor/referral_v2_invite?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openTributeList = useCallback((query = {}) => {\n openWebView(`/activity/armor/invite_tribute_list?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n const openDonation = useCallback((query = {}) => {\n openWebView(`/activity/referral/donation?${querystringify({ ...baseQuery,\n ...query\n })}`);\n }, [baseQuery]);\n return {\n openTask,\n openRules,\n openWithdraw,\n openCoupon,\n openCouponCollection,\n openMyOffer,\n openCouponDetail,\n openSuperCash,\n openMerchantDetail,\n openOfferDetail,\n openRecordHistory,\n openAmbassadorManage,\n replaceCardPage,\n replaceCardPagePersonal,\n replaceTask,\n openMyPocketPage,\n openGiftMainPage,\n openGiftGivingPage,\n openGiftDetail,\n openDonation,\n replaceArmorTask,\n replaceWithdraw,\n replaceGiftGivingTask,\n replaceXmasGift,\n replaceContributeReward,\n openInvite,\n openTributeList,\n openPIPOPage\n };\n}","export const formattingDetailFn = (type: 'cash' | 'point' | undefined, currencySymbol: string, currencyUnit: string, lng: string) => (value = 0): {\n symbol: string;\n amount: string;\n unit: string | undefined;\n} => {\n const count = type === 'cash' ? value / 100 : value;\n return {\n unit: type === 'cash' && currencyUnit ? currencyUnit : '',\n symbol: type === 'cash' ? currencySymbol : '',\n amount: count.toLocaleString(lng + '-u-nu-latn')\n };\n};\nexport const formattingFn = (type: 'cash' | 'point' | undefined, currencySymbol: string, currencyUnit: string, lng: string, needSymbol = true) => (value = 0) => {\n const detail = formattingDetailFn(type, currencySymbol, currencyUnit, lng)(value);\n\n if (type !== 'cash') {\n return detail.amount;\n }\n\n if (detail.symbol && needSymbol) {\n return detail.symbol + detail.amount;\n } else {\n return detail.amount + detail.unit;\n }\n};","import React, { useState } from 'react';\nimport cls from 'classnames';\nimport Styles from './index.css';\ntype SizeType = 'tiny' | 'small' | 'middle' | 'large';\nexport interface AvatarProps {\n size: SizeType | number;\n src: string;\n className: string;\n style: React.CSSProperties;\n vwSize: number;\n onClick: React.MouseEventHandler;\n needForceUpdate?: boolean;\n borderColor?: string;\n borderSize?: number;\n}\n\nconst Avatar: React.FC> = ({\n size = 'small',\n src,\n className,\n vwSize,\n children,\n style,\n needForceUpdate = true,\n borderColor = 'rgba(22, 24, 35, 0.12)',\n borderSize = 1,\n ...props\n}) => {\n const [useFallbackAvatar, setUseFallbackAvatar] = useState(false);\n const [, setLoaded] = useState(false);\n const sizeMap = {\n tiny: 24,\n small: 48,\n middle: 56,\n large: 72\n };\n let uuid = 0;\n let _size = size;\n\n if (typeof size === 'string') {\n _size = sizeMap[size];\n }\n\n const handleImageError = () => {\n setUseFallbackAvatar(true);\n };\n\n const avatar = src ? src.replace(/.webp$/, '.jpeg') : '//sf16-sg.tiktokcdn.com/obj/eden-sg/vhogeh7psuhpa/activity_referral/default-avatar.svg';\n const wrapperCls = cls(Styles['avatar'], className, {\n [Styles['is-children']]: children\n });\n const avatarStyle = {\n border: `${borderSize}px solid ${borderColor}`,\n width: vwSize ? `${vwSize}vw` : `${_size}px`,\n height: vwSize ? `${vwSize}vw` : `${_size}px`\n };\n return \n {children ? children :
{\n setLoaded(true);\n }} src={useFallbackAvatar ? '//sf16-sg.tiktokcdn.com/obj/eden-sg/vhogeh7psuhpa/activity_referral/default-avatar.svg' : avatar} onError={handleImageError} />}\n ;\n};\n\nexport default Avatar;","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport axios from 'axios';\nimport { bridgeFetch } from './bridge';\nimport { emitCustom, emitLog } from './slardar';\nimport { querystring, querystringify, isDev, isInApp } from './utils';\nexport interface Response {\n status_code: number;\n err_no: number;\n err_tips: string;\n data: T;\n}\ntype Method = 'GET' | 'POST' | undefined;\ninterface FetchOptions {\n url: string;\n params?: any;\n method?: Extract;\n header?: {};\n}\nexport default function request(options: FetchOptions, useBridge = true): Promise> {\n let {\n url\n } = options;\n const {\n params = {}\n } = options;\n const startTime = Date.now();\n let apiCode = 0;\n\n if (!/^https?:\\/\\//.test(url)) {\n const host_name = isDev() ? window.location.origin : 'https://api-h2.tiktokv.com';\n url = host_name + url;\n }\n\n let retPromise: Promise;\n\n if (isInApp() && useBridge) {\n retPromise = bridgeFetch({ ...options,\n url,\n params,\n header: {\n 'Content-Type': 'application/json'\n }\n });\n } else {\n if (isDev()) {\n const __url = new URL(url);\n\n const {\n origin,\n pathname,\n search\n } = __url;\n const query = { ...querystring(location.search),\n ...querystring(search)\n };\n url = `${origin}${pathname}?${querystringify(query)}`;\n }\n\n if (options.method === undefined || /^get$/i.test(options.method)) {\n retPromise = axios(url, options);\n } else {\n retPromise = axios(url, {\n data: params,\n ...options\n });\n }\n\n retPromise = retPromise.then(res => res.data);\n }\n\n const apiName = new URL(url).pathname;\n retPromise.then(res => {\n emitLog(JSON.stringify(res), 'debug', {\n apiName\n });\n\n if (res?.status_code) {\n apiCode = res.status_code;\n }\n\n if (res?.err_no) {\n apiCode = res.err_no;\n }\n\n return res;\n }).catch(err => {\n // bridge can not throw http_code err\n apiCode = -1;\n throw err;\n }).finally(() => {\n const apiName = new URL(url).pathname;\n emitCustom('referral_api', {\n rt: Date.now() - startTime\n }, {\n apiCode: apiCode.toString(),\n apiName: apiName\n });\n });\n return (retPromise as any);\n}\nexport function get(url: string, options?: Partial): Promise> {\n return request({\n method: 'GET',\n url,\n ...options\n });\n}\nexport function post(url: string, options?: Partial): Promise> {\n return request({\n method: 'POST',\n url,\n ...options\n });\n}\nexport function ferryFetch(url: string, init?: RequestInit) {\n const method = (init?.method || 'GET' as Extract);\n\n if (init?.body) {\n const params = typeof init?.body === 'string' ? JSON.parse(init?.body) : {};\n return request({\n method,\n url,\n params\n });\n }\n\n return request({\n method,\n url\n });\n}\nexport function axiosFetch(url: string, init?: RequestInit) {\n const method = (init?.method || 'GET' as Extract);\n\n if (init?.body) {\n const params = typeof init?.body === 'string' ? JSON.parse(init?.body) : {};\n return request({\n method,\n url,\n params\n }, false);\n }\n\n return request({\n method,\n url\n }, false);\n}","import { ferryFetch } from '../../common/request';\nimport { querystringify } from '../../common/utils';\ninterface UserInfo {\n avatar_url: string;\n name: string;\n}\nexport interface SharePageData {\n invite_code: string;\n user_info: UserInfo;\n landing_download_url: string;\n marquee_list: {\n id: string;\n take_cash_amount: string;\n name: string;\n avatar_url: string;\n }[];\n share_info: {\n content_map: {\n [k: string]: string;\n };\n image_url_map: {\n [k: string]: string;\n };\n total_amount: {\n [k: string]: string;\n };\n };\n video_info?: VideoInfo;\n}\ninterface Tag {\n Id: string;\n Title: string;\n}\ninterface Music {\n Title: string;\n CoverThumb: {\n UrlList: string[];\n };\n}\nexport interface VideoInfo {\n cover: {\n UrlList: string[];\n };\n title: string;\n username: string;\n avatar_url: string;\n tag: Tag[];\n video_url: {\n UrlList: string[];\n };\n music: Music;\n}\ninterface ShareParam {\n u_code: string;\n aid: string;\n carrier_region: string;\n activity_type: number;\n item_id?: string;\n}\nexport interface ShareResponse {\n data?: SharePageData;\n err_no: number;\n err_tips?: string;\n}\nexport const getShareInfo = (params: ShareParam) => {\n return ferryFetch(`${window.location.origin}/luckycat/tiktokm/v1/relation/share_page?${querystringify(((params as unknown) as Record))}`).then(data => {\n return (data as ShareResponse);\n });\n};","import cls from 'classnames';\nimport useConfig from 'packages/common/hooks/useConfig';\nimport React, { useEffect, useRef, useState } from 'react';\nimport DownloadBtnSvg from './images/share-download-btn.svg';\nimport StarDownImage from './images/star-down.svg';\nimport StarUpImage from './images/star-up.svg';\ntype DownloadBtnProps = {\n btnClickHandler: React.MouseEventHandler;\n shadowDomClassName?: string;\n containerClassName?: string;\n};\n\nconst DownloadBtn: React.FC = ({\n btnClickHandler,\n containerClassName = ''\n}) => {\n const {\n t\n } = useConfig();\n const domPaddingLength = 16 * 2;\n const [fontSizeIndex, setFontSizeIndex] = useState(0);\n const fontClassNameArr = ['H1-Bold', 'H2-Bold', 'H3-Bold', 'H4-Bold', 'H4-Bold truncate'];\n const buttonWrapperDom = useRef(null);\n const buttonTextDom = useRef(null);\n useEffect(() => {\n const wrapperDom = buttonWrapperDom.current;\n const textDom = buttonTextDom.current;\n if (!wrapperDom || !textDom) return;\n if (fontSizeIndex === fontClassNameArr.length - 1) return;\n\n if (wrapperDom.getBoundingClientRect().width - textDom.getBoundingClientRect().width < domPaddingLength) {\n setFontSizeIndex(fontSizeIndex + 1);\n }\n }, [fontSizeIndex, setFontSizeIndex, buttonWrapperDom, buttonTextDom]);\n return \n \n \n {t('referral_optimize_landing_cta_download')}\n
\n \n \n ;\n};\n\nexport default DownloadBtn;","import Avatar from 'packages/common/components/Avatar';\nimport useConfig from 'packages/common/hooks/useConfig';\nimport React from 'react';\ntype InviterCodeFooterProps = {\n avatar?: string;\n code: string;\n copyHandler: React.MouseEventHandler;\n};\n\nconst InviterCodeFooter: React.FC = ({\n avatar = '',\n code,\n copyHandler\n}) => {\n const {\n t\n } = useConfig();\n return \n \n \n\n \n\n \n {t('referral_optimize_landing_cta_copy_go')}\n \n \n \n ;\n};\n\nexport default InviterCodeFooter;","import React from 'react';\nimport cls from 'classnames';\nimport Avatar from 'packages/common/components/Avatar';\ntype StepCardProps = {\n steps: {\n title: React.ReactNode;\n extra?: React.ReactNode;\n }[];\n avatar?: string;\n title?: React.ReactNode;\n className?: string;\n};\n\nconst StepCard: React.FC = ({\n steps,\n avatar,\n title,\n className = ''\n}) => \n {avatar && }\n\n {title && }\n\n \n {steps.map((item, index) => )}\n \n\n \n ;\n\nexport default StepCard;","import { TUXToast } from '@byted-tiktok/tux-components';\nimport { isCsr, isIOS, sendEvent } from '@fe/armor_utils';\nimport cls from 'classnames';\nimport copy from 'copy-to-clipboard';\nimport useConfig from 'packages/common/hooks/useConfig';\nimport useOpenView from 'packages/common/hooks/useOpenView';\nimport { formattingFn } from 'packages/common/number-format';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { Props } from '.';\nimport Avatar from '../../common/components/Avatar';\nimport { getShareInfo, SharePageData } from '../share/service';\nimport { APPIDS, onelinkMap, querystringify } from '../share/util';\nimport DownloadBtn from './download-btn';\nimport CoinLeftOne from './images/coin-left-1.svg';\nimport CoinRightOne from './images/coin-right-1.svg';\nimport ImageMainBg from './images/image-main-bg.svg';\nimport VideoCloseSvg from './images/share-close-video.svg';\nimport ImageVideoPlaySvg from './images/share-image-video-play.svg';\nimport LiteLogoSvg from './images/share-logo-new-ui-lite.svg';\nimport LogoSvg from './images/share-logo-new-ui.svg';\nimport MoreInfoSvg from './images/share-more-icon.svg';\nimport VideoGroupPlaySvg from './images/share-video-group-play.svg';\nimport videoPoster from './images/video-poster.jpg';\nimport InviterCodeFooter from './inviter-code-footer';\nimport StepCard from './step-card';\n\nconst getOneLink = (query: Record, code: string, _lng: string, region: string, aid: keyof typeof onelinkMap) => {\n const ACTIVITY_URL = `${window.location.origin}/activity/referral/task`;\n const config = onelinkMap[aid];\n const activityQuery: Record = { ...query,\n enter_from: 'share',\n invite_code: code\n };\n\n if (region === 'br' && aid === '1340') {\n activityQuery.template = 'referral';\n activityQuery.cid = 'br_lite';\n }\n\n const schemaQuery = {\n url: `${ACTIVITY_URL}?${querystringify(activityQuery)}`\n };\n const onelinkQuery = {\n af_dp: `${config.schema}?${querystringify(schemaQuery)}`,\n af_web_dp: 'https://www.tiktok.com',\n c: `UG_Referral_${region.toUpperCase()}`,\n is_retargeting: 'true',\n pid: 'referral',\n af_adset: code\n };\n return `${config.link}?${querystringify(onelinkQuery)}`;\n};\n\nconst format = (dataSource: SharePageData, query: Record) => {\n const {\n invite_code,\n share_info,\n user_info\n } = dataSource;\n let title = '';\n let imageUrl = '';\n const {\n content_key,\n image_url_key\n } = query;\n\n if (share_info) {\n const {\n content_map,\n image_url_map\n } = share_info;\n\n if (content_map && typeof content_map[content_key] === 'string') {\n title = content_map[content_key];\n }\n\n if (image_url_map && typeof image_url_map[image_url_key] === 'string') {\n imageUrl = content_map[content_key];\n }\n }\n\n return {\n userName: user_info.name,\n userAvatar: user_info.avatar_url,\n inviteCode: invite_code,\n title,\n imageUrl\n };\n};\n\nconst Module = (props: Props) => {\n const {\n ___commonParams,\n ___dataSource = []\n } = props;\n const dataSource = ___dataSource[0];\n const {\n t,\n config,\n isInApp\n } = useConfig();\n const {\n abDefault,\n newUserVideo: videoSrc = '',\n currencySymbol,\n currencyUnit,\n upto\n } = config;\n const query = ___commonParams.query;\n const isLite = query.aid === '1340';\n\n function getShareUIGroup() {\n // ABTest `invitation_opt_group` process:\n // 1. [task page / invite page] get `invitation_opt_group` from referral api\n // 2. [task page / invite page] pass `invitation_opt_group` as a query to the share ul\n // 3. [share page] get `invitation_opt_group` from url query\n if (query.referral_landing_opt_group) {\n return +query.referral_landing_opt_group;\n }\n\n if (abDefault?.abdefault_referral_landing_opt_group) {\n return +abDefault.abdefault_referral_landing_opt_group;\n }\n\n return 0;\n }\n\n let isImageGroup = getShareUIGroup() === 1;\n\n if (!isImageGroup && !videoSrc) {\n isImageGroup = true;\n }\n\n const {\n u_code,\n region,\n aid,\n lng,\n activity_name,\n enter_from\n } = query;\n const [shareInfo, setShareInfo] = useState(dataSource?.err_no === 0 ? format((dataSource.data as SharePageData), query) : {\n userName: '',\n userAvatar: '',\n inviteCode: '',\n title: '',\n imageUrl: ''\n });\n useEffect(() => {\n if (isCsr() && dataSource?.err_no !== 0) {\n getShareInfo({\n u_code,\n aid,\n carrier_region: region,\n activity_type: 2\n }).then(({\n data,\n err_no\n }) => {\n if (err_no === 0) {\n setShareInfo(format((data as SharePageData), query));\n }\n });\n }\n }, []);\n const {\n replaceTask\n } = useOpenView();\n useEffect(() => {\n if (isInApp) {\n if (shareInfo.inviteCode) {\n /**\n * share-page may be visited in TikTok App!\n *\n * Some share-page link format(e.g. https://vm.tiktok.com/ZSJPk6RRJ/) may trigger deeplink\n * (Android App Links / Apple Universal Links) and immediately send user to share-page within TikTok App.\n *\n * In such case, we can autoredirect to task-page once invite_code is ready\n * for (maybe) a better user experience :-)\n */\n replaceTask({\n invite_code: shareInfo.inviteCode\n });\n }\n }\n }, [isInApp, shareInfo.inviteCode]);\n useEffect(() => {\n sendEvent('luckycat_predefine_pageview_redpacket', {\n enter_from,\n from_user_id: u_code,\n region,\n activity_type: activity_name || 'invite',\n app_id: aid\n });\n }, [activity_name, aid, enter_from, region, u_code]);\n const handleCopy = useCallback(() => {\n copy(shareInfo.inviteCode);\n TUXToast.info(t('copy.success', 'Copied successfully'));\n sendEvent('luckycat_copy_invite_code', {\n from_user_id: query.u_code,\n is_succ: 1,\n enter_from: query.enter_from,\n activity_type: '',\n region: query.region,\n app_id: query.aid\n });\n }, [shareInfo.inviteCode]);\n const handleDownload = useCallback(() => {\n sendEvent('luckycat_click_download', {\n region: query.region,\n app_id: query.aid\n });\n let isLiteShareOnIOS = false;\n\n if (isIOS() && aid === '1340') {\n isLiteShareOnIOS = true;\n }\n\n location.href = getOneLink(query, shareInfo.inviteCode, lng, region, isLiteShareOnIOS ? APPIDS.M : (aid as keyof typeof onelinkMap));\n }, [shareInfo.inviteCode]);\n const playerDom = useRef(null);\n const [isVideoFullScreen, setIsVideoFullScreen] = useState(false);\n const [isVideoCanPlay, setIsVideoCanPlay] = useState(false);\n const [isVideoPause, setIsVideoPause] = useState(false);\n const cashFormattingFn = formattingFn('cash', currencySymbol, currencyUnit, query.lng);\n const steps = [{\n title: \n {t('referral_optimize_landing_step_01', 'Open TikTok')}\n \n }, {\n title: \n {isImageGroup ? t('referral_optimize_landing_step_02', \"Enter {username}'s invite code\", {\n username: shareInfo.userName\n }) : t('referral_optimize_enter_code', 'Enter invite code to earn {currencySymbol}{number}', {\n currencySymbol: cashFormattingFn(upto),\n number: ''\n })}\n ,\n extra: \n \n \n {shareInfo.inviteCode}\n \n \n {t('copy', 'Copy')}\n \n \n \n }];\n\n if (isImageGroup) {\n steps.push({\n title: \n {t('referral_optimize_landing_step_03', 'Get up to {currencySymbol}{number}', {\n currencySymbol: cashFormattingFn(upto),\n number: ''\n })}\n \n });\n }\n\n const defaultContent: string = t('referral_optimize_landing_title', \"Join TikTok using my invite code and we'll both get\");\n const title = <>\n \n {defaultContent}\n
\n \n {cashFormattingFn(upto)}\n
\n >;\n\n const videoPauseHandler = () => {\n const video = playerDom.current;\n if (!video || isVideoPause) return;\n setIsVideoPause(true);\n video.pause();\n };\n\n const playVideoHandler = () => {\n sendEvent('luckycat_zoomvideo_click', {});\n const video = playerDom.current;\n if (!video || !isVideoCanPlay) return;\n const videoPlayPromise = video.play();\n\n if (videoPlayPromise !== undefined) {\n videoPlayPromise.then(_ => {\n if (!isVideoFullScreen) {\n setIsVideoFullScreen(true);\n }\n\n if (isVideoPause) {\n setIsVideoPause(false);\n }\n });\n } else {\n if (!isVideoFullScreen) {\n setIsVideoFullScreen(true);\n }\n\n if (isVideoPause) {\n setIsVideoPause(false);\n }\n }\n };\n\n const videoStopPlayingHandler = () => {\n const video = playerDom.current;\n if (!video) return;\n setIsVideoFullScreen(false);\n video.pause();\n };\n\n const inviteCodeFooterClickHandler: React.MouseEventHandler = useCallback(() => {\n sendEvent('luckycat_copyandgo_click', {\n from_user_id: query.u_code || '',\n is_succ: 1,\n enter_from: query.enter_from,\n activity_type: '',\n region: query.region,\n app_id: query.app_id\n });\n handleCopy();\n handleDownload();\n }, [handleCopy, handleDownload]);\n useEffect(() => {\n if (!playerDom.current) {\n return;\n }\n\n const callback = () => {\n setIsVideoCanPlay(true);\n };\n\n playerDom.current.addEventListener('canplay', callback, false);\n return () => {\n playerDom.current?.removeEventListener('canplay', callback);\n };\n }, [setIsVideoCanPlay]);\n return \n {\n /* {styles} */\n }\n\n {isImageGroup ? <>\n
\n \n
\n \n {videoSrc && \n {t('referral_optimize_tutorial_watch_01', 'Watch')}\n
\n {t('referral_optimize_tutorial_watch_02', 'tutorial video')}\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
;\n};\n\nexport default Module;","import React from 'react';\nimport ConfigLayout, { ConfigLayoutPropsType } from 'packages/common/components/ConfigLayout';\nimport Share from './share';\nimport { ShareResponse } from '../share/service';\nexport type Props = {\n /** ___服务端数据源(private) */\n ___dataSource: [ShareResponse];\n /** ___公共参数(private) */\n\n ___commonParams: ConfigLayoutPropsType['___commonParams'];\n};\n\nclass ShareLayout extends React.Component {\n render() {\n return \n \n ;\n }\n\n}\n\nexport default ShareLayout;"],"names":["root","factory","exports","module","require","define","amd","a","i","self","__WEBPACK_EXTERNAL_MODULE__13e__","__WEBPACK_EXTERNAL_MODULE_c0f__","__WEBPACK_EXTERNAL_MODULE_a873__","__WEBPACK_EXTERNAL_MODULE_efd__","__WEBPACK_EXTERNAL_MODULE_d85__","formatI18NTime","time","local","type","dayjs","locale","format","getFormater","localConfig","meridiem","eval","BDDateFmt","date","formatType","beautifyTimeNumber","number","String","padStart","global","isCallable","tryToString","TypeError","argument","isConstructor","wellKnownSymbol","create","definePropertyModule","UNSCOPABLES","ArrayPrototype","Array","prototype","undefined","f","configurable","value","key","charAt","S","index","unicode","length","isPrototypeOf","it","Prototype","isObject","fails","ArrayBuffer","buffer","Object","isExtensible","defineProperty","toObject","toAbsoluteIndex","lengthOfArrayLike","O","this","argumentsLength","arguments","end","endPos","$forEach","STRICT_METHOD","arrayMethodIsStrict","forEach","callbackfn","bind","call","callWithSafeIterationClosing","isArrayIteratorMethod","createProperty","getIterator","getIteratorMethod","arrayLike","IS_CONSTRUCTOR","mapfn","mapping","result","step","iterator","next","iteratorMethod","done","toIndexedObject","createMethod","IS_INCLUDES","$this","el","fromIndex","includes","indexOf","uncurryThis","IndexedObject","arraySpeciesCreate","push","TYPE","IS_MAP","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","IS_FILTER_REJECT","NO_HOLES","that","specificCreate","boundFunction","target","map","filter","some","every","find","findIndex","filterReject","V8_VERSION","SPECIES","METHOD_NAME","array","constructor","foo","Boolean","method","max","Math","start","k","fin","n","slice","arraySlice","floor","mergeSort","comparefn","middle","insertionSort","merge","element","j","left","right","llength","rlength","lindex","rindex","isArray","originalArray","C","arraySpeciesConstructor","anObject","iteratorClose","fn","ENTRIES","error","ITERATOR","SAFE_CLOSING","called","iteratorWithReturn","from","exec","SKIP_CLOSING","ITERATION_SUPPORT","object","toString","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","CORRECT_ARGUMENTS","tag","tryGet","callee","redefineAll","anInstance","iterate","defineIterator","setSpecies","DESCRIPTORS","fastKey","InternalStateModule","setInternalState","set","internalStateGetterFor","getterFor","getConstructor","wrapper","CONSTRUCTOR_NAME","ADDER","Constructor","iterable","first","last","size","AS_ENTRIES","getInternalState","previous","state","entry","getEntry","removed","clear","data","prev","has","get","add","setStrong","ITERATOR_NAME","getInternalCollectionState","getInternalIteratorState","iterated","kind","$","isForced","redefine","InternalMetadataModule","checkCorrectnessOfIteration","setToStringTag","inheritIfRequired","common","IS_WEAK","NativeConstructor","NativePrototype","exported","fixMethod","KEY","uncurriedNativeMethod","entries","enable","instance","HASNT_CHAINING","THROWS_ON_PRIMITIVES","ACCEPT_ITERABLES","BUGGY_ZERO","$instance","dummy","forced","hasOwn","ownKeys","getOwnPropertyDescriptorModule","source","exceptions","keys","getOwnPropertyDescriptor","MATCH","regexp","error1","error2","F","getPrototypeOf","IteratorPrototype","createPropertyDescriptor","Iterators","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","bitmap","enumerable","writable","toPropertyKey","propertyKey","IS_PURE","FunctionName","createIteratorConstructor","setPrototypeOf","createNonEnumerableProperty","IteratorsCore","PROPER_FUNCTION_NAME","PROPER","CONFIGURABLE_FUNCTION_NAME","CONFIGURABLE","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","Iterable","DEFAULT","IS_SET","FORCED","CurrentIteratorPrototype","methods","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","name","values","proto","path","wrappedWellKnownSymbolModule","Symbol","document","EXISTS","createElement","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","classList","documentCreateElement","DOMTokenListPrototype","window","userAgent","test","Pebble","classof","process","getBuiltIn","match","version","Deno","versions","v8","split","setGlobal","copyConstructorProperties","options","targetProperty","sourceProperty","descriptor","TARGET","GLOBAL","STATIC","stat","noTargetGet","sham","regexpExec","RegExpPrototype","RegExp","SHAM","SYMBOL","DELEGATES_TO_SYMBOL","DELEGATES_TO_EXEC","execCalled","re","flags","uncurriedNativeRegExpMethod","nativeMethod","str","arg2","forceStringMethod","$exec","preventExtensions","NATIVE_BIND","FunctionPrototype","Function","apply","Reflect","aCallable","hasOwnProperty","getDescriptor","aFunction","namespace","getMethod","usingIterator","V","P","func","replace","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","matched","position","captures","namedCaptures","replacement","tailPos","m","symbols","ch","capture","check","globalThis","g","b","console","propertyIsEnumerable","Wrapper","NewTarget","NewTargetPrototype","store","functionToString","inspectSource","hiddenKeys","getOwnPropertyNamesModule","getOwnPropertyNamesExternalModule","uid","FREEZING","REQUIRED","METADATA","id","setMetadata","objectID","weakData","meta","getOwnPropertyNames","splice","getWeakData","onFreeze","NATIVE_WEAK_MAP","shared","sharedKey","OBJECT_ALREADY_INITIALIZED","WeakMap","wmget","wmhas","wmset","metadata","facade","STATE","enforce","noop","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","feature","detection","normalize","POLYFILL","NATIVE","string","toLowerCase","isRegExp","USE_SYMBOL_AS_UID","$Symbol","Result","stopped","ResultPrototype","unboundFunction","iterFn","IS_ITERATOR","INTERRUPTED","stop","condition","callFn","innerResult","innerError","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","obj","flush","head","notify","toggle","node","promise","then","macrotask","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","IS_NODE","MutationObserver","WebKitMutationObserver","Promise","queueMicrotaskDescriptor","queueMicrotask","parent","domain","exit","enter","resolve","nextTick","createTextNode","observe","characterData","task","getOwnPropertySymbols","symbol","url","URL","searchParams","pathname","toJSON","sort","href","URLSearchParams","username","host","hash","PromiseCapability","reject","$$resolve","$$reject","objectKeys","getOwnPropertySymbolsModule","propertyIsEnumerableModule","$assign","assign","concat","A","B","alphabet","chr","join","T","activeXDocument","definePropertiesModule","enumBugKeys","html","IE_PROTO","EmptyConstructor","scriptTag","content","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","style","display","appendChild","src","contentWindow","open","Properties","V8_PROTOTYPE_DEFINE_BUG","defineProperties","props","IE8_DOM_DEFINE","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","$getOwnPropertyNames","windowNames","getWindowNames","internalObjectKeys","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","ARRAY_BUFFER_NON_EXTENSIBLE","$isExtensible","FAILS_ON_PRIMITIVES","names","$propertyIsEnumerable","NASHORN_BUG","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","input","pref","val","valueOf","newPromiseCapability","x","promiseCapability","Queue","tail","item","enforceInternalState","TEMPLATE","unsafe","simple","R","re1","re2","regexpFlags","stickyHelpers","UNSUPPORTED_DOT_ALL","UNSUPPORTED_NCG","nativeReplace","nativeExec","patchedExec","UPDATES_LAST_INDEX_WRONG","lastIndex","UNSUPPORTED_Y","BROKEN_CARET","NPCG_INCLUDED","reCopy","group","raw","groups","sticky","charsAdded","strCopy","multiline","ignoreCase","dotAll","$RegExp","MISSED_STICKY","is","y","TAG","SHARED","mode","copyright","license","aConstructor","defaultConstructor","toIntegerOrInfinity","requireObjectCoercible","charCodeAt","CONVERT_TO_STRING","pos","second","codeAt","$repeat","repeat","ceil","IS_END","maxLength","fillString","fillLen","stringFiller","intMaxLength","stringLength","fillStr","maxInt","regexNonASCII","regexSeparators","OVERFLOW_ERROR","RangeError","fromCharCode","digitToBasic","digit","adapt","delta","numPoints","firstTime","baseMinusTMin","base","encode","output","counter","extra","ucs2decode","currentValue","inputLength","bias","basicLength","handledCPCount","handledCPCountPlusOne","q","t","qMinusT","baseMinusT","label","encoded","labels","count","Infinity","whitespaces","whitespace","ltrim","rtrim","trim","location","defer","channel","port","validateArgumentsLength","setImmediate","clearImmediate","Dispatch","MessageChannel","queue","ONREADYSTATECHANGE","run","runner","listener","event","post","postMessage","protocol","handler","args","now","port2","port1","onmessage","addEventListener","importScripts","removeChild","setTimeout","min","integer","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","random","NATIVE_SYMBOL","passed","required","WellKnownSymbolsStore","symbolFor","createWellKnownSymbol","withoutSetter","description","fill","addToUnscopables","$filter","arrayMethodHasSpeciesSupport","$includes","$IndexOf","un$IndexOf","NEGATIVE_ZERO","searchElement","ARRAY_ITERATOR","Arguments","un$Join","ES3_STRINGS","separator","$map","un$Slice","HAS_SPECIES_SUPPORT","$some","thisNumberValue","NUMBER","NativeNumber","NumberPrototype","toNumeric","primValue","toNumber","third","radix","maxCode","digits","code","NaN","parseInt","NumberWrapper","nativeGetOwnPropertyDescriptor","getOwnPropertyDescriptors","nativeKeys","NativePromise","speciesConstructor","promiseResolve","real","onFinally","isFunction","e","Internal","OwnPromiseCapability","PromiseWrapper","nativeThen","microtask","hostReportErrors","newPromiseCapabilityModule","perform","IS_BROWSER","PROMISE","getInternalPromiseState","NativePromisePrototype","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","NATIVE_REJECTION_EVENT","PromiseRejectionEvent","UNHANDLED_REJECTION","SUBCLASSING","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","INCORRECT_ITERATION","all","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","reason","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","executor","onFulfilled","onRejected","wrap","r","capability","$promiseResolve","remaining","alreadyCalled","race","regExpFlags","NativeRegExp","SyntaxError","getFlags","stringIndexOf","IS_NCG","CORRECT_NEW","BASE_FORCED","RegExpWrapper","pattern","rawFlags","handled","thisIsRegExp","patternIsRegExp","flagsAreUndefined","rawPattern","named","brackets","ncg","groupid","groupname","handleNCG","handleDotAll","proxy","$toString","TO_STRING","n$ToString","NOT_GENERIC","INCORRECT_NAME","p","rf","collection","init","notARegExp","correctIsRegExpLogic","searchString","STRING_ITERATOR","point","fixRegExpWellKnownSymbolLogic","advanceStringIndex","regExpExec","nativeMatch","maybeCallNative","matcher","rx","res","fullUnicode","matchStr","$padStart","getSubstitution","REPLACE","REPLACE_KEEPS_$0","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","_","UNSAFE_SUBSTITUTE","searchValue","replaceValue","replacer","functionalReplace","results","accumulatedResult","nextSourcePosition","replacerArgs","sameValue","SEARCH","nativeSearch","searcher","previousLastIndex","callRegExpExec","MAX_UINT32","$push","SPLIT_WORKS_WITH_OVERWRITTEN_EXEC","originalExec","SPLIT","nativeSplit","internalSplit","limit","lim","lastLength","lastLastIndex","separatorCopy","splitter","unicodeMatching","z","un$StartsWith","startsWith","CORRECT_IS_REGEXP_LOGIC","search","$trim","forcedStringTrimMethod","nativeObjectCreate","getOwnPropertyNamesExternal","defineWellKnownSymbol","HIDDEN","SymbolPrototype","QObject","$stringify","nativeDefineProperty","nativeGetOwnPropertyNames","nativePropertyIsEnumerable","AllSymbols","ObjectPrototypeSymbols","StringToSymbolRegistry","SymbolToStringRegistry","USE_SETTER","findChild","setSymbolDescriptor","ObjectPrototypeDescriptor","$defineProperties","properties","$getOwnPropertySymbols","IS_OBJECT_PROTOTYPE","keyFor","sym","useSetter","useSimple","stringify","space","$replacer","hint","DOMIterables","handlePrototype","CollectionPrototype","COLLECTION_NAME","ArrayIteratorMethods","ArrayValues","USE_NATIVE_URL","arraySort","URL_SEARCH_PARAMS","URL_SEARCH_PARAMS_ITERATOR","getInternalParamsState","n$Fetch","N$Request","Headers","RequestPrototype","HeadersPrototype","decodeURIComponent","encodeURIComponent","shift","plus","sequences","percentSequence","bytes","percentDecode","sequence","deserialize","replacements","serialize","URLSearchParamsIterator","params","URLSearchParamsState","parseObject","parseQuery","bindURL","update","entryIterator","entryNext","query","attribute","attributes","updateURL","URLSearchParamsConstructor","URLSearchParamsPrototype","append","getAll","found","callback","headersHas","headersSet","wrapRequestOptions","headers","body","fetch","RequestConstructor","Request","getState","EOF","arrayFrom","toASCII","URLSearchParamsModule","getInternalURLState","getInternalSearchParamsState","NativeURL","pow","numberToString","pop","unshift","INVALID_SCHEME","INVALID_HOST","INVALID_PORT","ALPHA","ALPHANUMERIC","DIGIT","HEX_START","OCT","DEC","HEX","FORBIDDEN_HOST_CODE_POINT","FORBIDDEN_HOST_CODE_POINT_EXCLUDING_PERCENT","LEADING_AND_TRAILING_C0_CONTROL_OR_SPACE","TAB_AND_NEW_LINE","serializeHost","compress","ignore0","ipv6","maxIndex","currStart","currLength","findLongestZeroSequence","C0ControlPercentEncodeSet","fragmentPercentEncodeSet","pathPercentEncodeSet","userinfoPercentEncodeSet","percentEncode","specialSchemes","ftp","file","http","https","ws","wss","isWindowsDriveLetter","normalized","startsWithWindowsDriveLetter","isSingleDot","segment","SCHEME_START","SCHEME","NO_SCHEME","SPECIAL_RELATIVE_OR_AUTHORITY","PATH_OR_AUTHORITY","RELATIVE","RELATIVE_SLASH","SPECIAL_AUTHORITY_SLASHES","SPECIAL_AUTHORITY_IGNORE_SLASHES","AUTHORITY","HOST","HOSTNAME","PORT","FILE","FILE_SLASH","FILE_HOST","PATH_START","PATH","CANNOT_BE_A_BASE_URL_PATH","QUERY","FRAGMENT","URLState","isBase","baseState","failure","urlString","parse","stateOverride","codePoints","bufferCodePoints","pointer","seenAt","seenBracket","seenPasswordToken","scheme","password","fragment","cannotBeABaseURL","isSpecial","includesCredentials","codePoint","encodedCodePoints","parseHost","shortenPath","numbersSeen","ipv4Piece","swaps","swap","address","pieceIndex","parseIPv6","partsLength","numbers","part","ipv4","parts","parseIPv4","cannotHaveUsernamePasswordPort","pathSize","setHref","getOrigin","URLConstructor","origin","getProtocol","setProtocol","getUsername","setUsername","getPassword","setPassword","getHost","setHost","getHostname","setHostname","hostname","getPort","setPort","getPathname","setPathname","getSearch","setSearch","getSearchParams","getHash","setHash","URLPrototype","accessorDescriptor","getter","nativeCreateObjectURL","createObjectURL","nativeRevokeObjectURL","revokeObjectURL","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","Error","defaultClearTimeout","runTimeout","fun","clearTimeout","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","len","marker","runClearTimeout","Item","title","browser","env","argv","on","addListener","once","off","removeListener","removeAllListeners","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","classCallCheck","_defineProperties","createClass","protoProps","staticProps","localeConfig","months","monthsShort","weekdays","weekdaysMin","weekdaysShort","formats","lt","lts","LTS","L","LL","LLL","LLLL","l","ll","lll","llll","am","pm","AM","PM","past","one","other","M","w","d","h","s","future","abbr","justNow","yesterday","today","tomorrow","hour","isLowerCase","ONE","FEW","MANY","OTHER","DEFAULT_THRESHOLDS","relativeTimeKey","num","unit","LOCALE_NAMES_SET","Set","englishFormats","u","formatStr","FORMAT_DEFAULT","getPluralType","plugin","dayjsClass","justNowThreshold","getTimeExpression","startTime","endTime","_endTime$$locale","$locale","abs","diff","isSame","subtract","$i","_o","c","oldFormat","Ls","en","_this$$locale","fromToBase","useAbbreviation","thresholds","rounding","durationStr","_thresholds$i","thresholdDiff","absDiff","pluralType","tense","to","round","dateOrTimestamp","getDate","lowerCased","language","parseLocale","utc","Date","o","utcOffset","year","month","clone","D","ms","Q","v","$L","$u","$x","$offset","$d","substring","UTC","$y","getFullYear","$M","getMonth","$D","$W","getDay","$H","getHours","$m","getMinutes","$s","getSeconds","$ms","getMilliseconds","$utils","isValid","startOf","endOf","isAfter","isBefore","$g","unix","getTime","toDate","weekStart","$set","daysInMonth","Number","substr","YY","YYYY","MM","MMM","MMMM","DD","dd","ddd","dddd","H","HH","hh","mm","ss","SSS","Z","getTimezoneOffset","toISOString","toUTCString","extend","isDayjs","toUpperCase","getUTCFullYear","getUTCMonth","getUTCDate","getUTCDay","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","$localOffset","isUTC","utils","settle","cookies","buildURL","buildFullPath","parseHeaders","isURLSameOrigin","createError","config","requestData","requestHeaders","isFormData","request","XMLHttpRequest","auth","unescape","Authorization","btoa","fullPath","baseURL","paramsSerializer","onreadystatechange","readyState","status","responseURL","responseHeaders","getAllResponseHeaders","response","responseType","responseText","statusText","onabort","onerror","ontimeout","timeoutErrorMessage","isStandardBrowserEnv","xsrfValue","withCredentials","xsrfCookieName","read","xsrfHeaderName","setRequestHeader","isUndefined","onDownloadProgress","onUploadProgress","upload","cancelToken","cancel","abort","send","Axios","mergeConfig","createInstance","defaultConfig","context","axios","instanceConfig","defaults","Cancel","CancelToken","isCancel","promises","spread","isAxiosError","message","__CANCEL__","resolvePromise","token","throwIfRequested","InterceptorManager","dispatchRequest","interceptors","chain","interceptor","fulfilled","rejected","getUri","handlers","use","eject","isAbsoluteURL","combineURLs","requestedURL","enhanceError","transformData","throwIfCancellationRequested","transformRequest","adapter","transformResponse","fileName","lineNumber","columnNumber","stack","config1","config2","valueFromConfig2Keys","mergeDeepPropertiesKeys","defaultToConfig2Keys","directMergeKeys","getMergedValue","isPlainObject","mergeDeepProperties","prop","axiosKeys","otherKeys","validateStatus","fns","normalizeHeaderName","DEFAULT_CONTENT_TYPE","setContentTypeIfUnset","isArrayBuffer","isBuffer","isStream","isFile","isBlob","isArrayBufferView","isURLSearchParams","JSON","maxContentLength","maxBodyLength","thisArg","serializedParams","isDate","hashmarkIndex","relativeURL","expires","secure","cookie","isNumber","toGMTString","isString","remove","payload","originURL","msie","navigator","urlParsingNode","resolveURL","setAttribute","requestURL","parsed","normalizedName","ignoreDuplicateOf","line","arr","FormData","isView","pipe","product","assignValue","stripBOM","classNames","classes","arg","argType","inner","default","deselectCurrent","clipboardToIE11Formatting","text","debug","reselectPrevious","range","selection","mark","success","createRange","getSelection","textContent","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","stopPropagation","preventDefault","clipboardData","warn","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","err","copyKey","prompt","removeRange","removeAllRanges","invalidDate","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bool","any","arrayOf","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","runtime","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","info","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isNaN","displayName","isGeneratorFunction","genFun","ctor","awrap","async","iter","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","rangeCount","active","activeElement","ranges","getRangeAt","tagName","blur","focus","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__esModule","definition","CouponEntryABTest","ComponentStatus","ActivityType","TaskDoneErrorNumber","querystringify","pairs","translationFactory","starling","lng","defaultStr","opt","sourceStr","sourceStrAfter","bracketList","bracketPosition","itemStr","lastPosition","getPluralStarlingConfig","quantifier","getStrBasedOnQuantifiers","isInApp","isCsr","captureMessage","Slardar","emitCounter","eventName","_value","tags","categories","tiktok","getAppInfo","device_id","deviceId","closeWebView","reactId","openWebView","schema","sendLog","_path","isSSR","platform","documentElement","contains","toVal","mix","tmp","BUTTON_HEIGHT","large","medium","small","tiny","TUXButton","_ref","_ref$variant","variant","_ref$size","_ref$disabled","disabled","_ref$isLoading","isLoading","_ref$icon","icon","onClick","onDisabledButtonClick","minWidth","maxWidth","width","_ref$className","className","iconSize","buttonClass","useMemo","loadingIcon","loadingIconSize","bottom","fontSize","height","viewBox","xmlns","fillRule","clipRule","buttonHeight","lineHeight","TUXContext","createContext","uniform","children","_ref$platform","platform$1","theme","hasStatusBar","androidStatusBarHeight","_ref$uniform","initialValue","Provider","enumerableOnly","_objectSpread2","_slicedToArray","_arrayWithHoles","_i","_s","_e","_arr","_n","_d","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","_toConsumableArray","_arrayLikeToArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","minLen","arr2","excluded","sourceKeys","_inheritsLoose","subClass","superClass","replaceClassName","origClass","classToRemove","UNMOUNTED","EXITED","ENTERING","ENTERED","EXITING","Transition","_React$Component","_this","initialStatus","appear","isMounting","appearStatus","in","unmountOnExit","mountOnEnter","nextCallback","getDerivedStateFromProps","prevState","_proto","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","componentWillUnmount","cancelNextCallback","getTimeouts","mounting","performEnter","performExit","setState","_this2","appearing","_ref2","nodeRef","maybeNode","maybeAppearing","timeouts","enterTimeout","safeSetState","onEntered","onEnter","onEntering","onTransitionEnd","_this3","onExit","onExiting","onExited","nextState","setNextCallback","_this4","doesNotHaveTimeoutOrListener","addEndListener","_ref3","maybeNextCallback","render","_this$props","childProps","TransitionGroupContext","contextType","propTypes","defaultProps","removeClass","baseVal","CSSTransition","_len","_key","appliedClasses","_this$resolveArgument","resolveArguments","removeClasses","addClass","_this$resolveArgument2","_this$resolveArgument3","getClassNames","isStringClassNames","baseClassName","activeClassName","doneClassName","phase","scrollTop","hasClass","_addClass","_this$appliedClasses$","getChildMapping","mapFn","Children","child","isValidElement","mapper","getProp","getNextChildMapping","nextProps","prevChildMapping","nextChildMapping","getValueForKey","nextKeysPending","pendingKeys","prevKey","childMapping","nextKey","pendingNextKey","mergeChildMappings","hasPrev","hasNext","prevChild","isLeaving","cloneElement","TransitionGroup","handleExited","ReferenceError","contextValue","firstRender","mounted","currentChildMapping","Component","component","childFactory","withTUXIcon","Icon","color","circleBackground","iconProps","backgroundColor","circleSize","circleSizeVal","circleBackgroundStyles","IconXMarkSmall","IconTickFillSmall","_IconXMarkSmall","_IconTickFillSmall","genID","TUXPortal","getContainer","_useState2","useState","mountNode","setMountNode","useEffect","_getContainer","container","TUXTextWIP","toastInstance","DEFAULT_DURATION","TUXToastView","_ref$message","useContext","TUXToast","_ref2$message","_ref2$isVisible","isVisible","enterActive","enterDone","exitActive","TUXToastQueue","_props","ref","toastList","setToastList","useCallback","createTime","duration","currentList","useImperativeHandle","conf","toast","div","_toast","destroy","parentNode","newInstance","inst","IconLargeMissedEvent","ConfigProvider","IconTabArrowCounterClockwiseFill","subtitle","isRetry","darkMode","errText","page","useConfig","loading","setLoading","styles","enter_from","reload","ErrorPage10019","IconLargeErrorRobot","ErrorPage500","EventBus","eventList","$on","delete","$emit","formatAppContext","ua","region","___commonParams","translation","starlingData","advancedT","tempStrOne","tempStrOther","checkInApp","dateFormat","dateFormatConfig","appRegion","isIOS","tccData","abGroups","dataSource","___dataSource","eventBus","ConfigLayout","errorCode","configData","user","userId","user_id","componentDidCatch","forceUpdate","status_bar_height","React","APPIDS","onelinkMap","link","replaceURL","vwSize","needForceUpdate","borderColor","borderSize","useFallbackAvatar","setUseFallbackAvatar","setLoaded","uuid","_size","avatar","wrapperCls","cls","Styles","avatarStyle","border","onLoad","onError","useBridge","retPromise","option","apiCode","header","apiName","level","status_code","err_no","catch","finally","metrics","rt","getShareInfo","btnClickHandler","containerClassName","fontSizeIndex","setFontSizeIndex","fontClassNameArr","buttonWrapperDom","useRef","buttonTextDom","wrapperDom","textDom","getBoundingClientRect","background","DownloadBtnSvg","jsx","StarUpImage","StarDownImage","copyHandler","steps","invite_code","share_info","user_info","imageUrl","content_key","image_url_key","content_map","image_url_map","userName","userAvatar","avatar_url","inviteCode","abDefault","newUserVideo","videoSrc","currencySymbol","currencyUnit","upto","isLite","aid","isImageGroup","referral_landing_opt_group","abdefault_referral_landing_opt_group","u_code","activity_name","shareInfo","setShareInfo","carrier_region","activity_type","baseQuery","couponType","rulesLink","replaceCardPage","extraQuery","replaceCardPagePersonal","openTask","module_id","replaceTask","replaceArmorTask","replaceGiftGivingTask","replaceXmasGift","replaceContributeReward","openRules","hide_nav_bar","should_full_screen","openWithdraw","replaceWithdraw","openGiftMainPage","openPIPOPage","openCoupon","openCouponCollection","openMyOffer","openCouponDetail","openSuperCash","prefix","openMerchantDetail","openOfferDetail","openGiftDetail","gift_token","openRecordHistory","openAmbassadorManage","openGiftGivingPage","openMyPocketPage","openInvite","openTributeList","openDonation","useOpenView","sendEvent","from_user_id","app_id","handleCopy","copy","is_succ","handleDownload","isLiteShareOnIOS","_lng","ACTIVITY_URL","activityQuery","template","cid","schemaQuery","onelinkQuery","af_dp","af_web_dp","is_retargeting","pid","af_adset","getOneLink","playerDom","isVideoFullScreen","setIsVideoFullScreen","isVideoCanPlay","setIsVideoCanPlay","isVideoPause","setIsVideoPause","cashFormattingFn","needSymbol","detail","amount","toLocaleString","formattingDetailFn","formattingFn","defaultContent","playVideoHandler","video","videoPlayPromise","play","inviteCodeFooterClickHandler","removeEventListener","LiteLogoSvg","LogoSvg","ImageVideoPlaySvg","MoreInfoSvg","VideoGroupPlaySvg","playsInline","loop","poster","videoPoster","pause","autoPlay","shadowDomClassName","ImageMainBg","CoinLeftOne","CoinRightOne","VideoCloseSvg","ShareLayout"],"sourceRoot":""}