{"version":3,"file":"static/js/1972.068f4c36.chunk.js","mappings":"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","sources":["client/components/FontScaleDiv.js","client/components/LazyLoadImg.js","client/components/Result/prizeList/ShowEffect.js","client/components/PopupWithFixHeader.js","client/components/Result/Actions/ActionButton.js","client/components/Result/Actions/ActionHeader.js","client/components/Result/DialogParticipantPrizeEmpty.js","client/components/Result/Actions/WinnerButton.js","client/components/Result/Actions/OpenWinnerButton.js","client/components/Result/Actions/SecondaryButton.js","client/components/Result/Actions/SignUpFormButton.js","client/components/Result/EntriesInfo/customResult/ResultInfoInvoice.js","client/components/Result/EntriesInfo/customResult/ResultContest.js","components/Comment/CommentSettings.js","client/components/Result/EntriesInfo/customResult/ResultComment.js","client/game_photoUpload/PhotoUpload/VerifyStatusLabel.js","client/components/Result/EntriesInfo/customResult/ResultInfoList.js","client/components/Result/EntriesInfo/customResult/ResultValidStatus.js","client/components/Result/EntriesInfo/EntriesList.js","client/components/Result/EntriesInfo/EntriesListContainer.js","client/components/Result/EntriesInfo/SerialDateInfo.js","client/components/Result/EntriesInfo/customResult/CollapseWrapper.js","client/components/Result/EntriesInfo/customResult/ResultDownloadBtn.js","client/components/Result/EntriesInfo/customResult/UgcReuploadBtn.js","client/components/Result/EntriesInfo/customResult/ResultUGC.js","client/components/Result/EntriesInfo/customResult/UgcVoteInfo.js","client/components/Result/ResultPromoTitle.js","components/Button/FeverBadgeButton.js","client/components/Result/ViewPrizeListButton.js","client/components/Result/utils/getWinnerLabelAndBtnTextGenerator.js","client/components/verify/VerifyStatusLabel.js","client/hooks/moduleVerifyUtilHooks.js","client/hooks/useClientHistory.js","client/hooks/useClientResultCollaspe.js","client/hooks/useGameActionEnableInfo.js","client/hooks/usePrizeRuleChecker.js","client/hooks/useSystemBtnStyleByTheme.js","client/utils/getProxyImgUrl.js","components/Comment/AsceptRatioContainer.js","components/RatioContainerStyle.js","config/entryVerifyStatus.js","config/formBasedSectionTypes.js","editor/game_invoice/utils/invoiceType.js","editor/game_purchaseReward/utils/invoiceType.js"],"sourcesContent":["import React, { useLayoutEffect, useRef } from 'react';\nimport { css } from '@emotion/core';\nimport $ from 'jquery';\n\nfunction FontScaleDiv({\n content = '',\n placeholder = '',\n style = {},\n maxFontSize = 24,\n minFontSize = 16,\n lineHeight = 1.2,\n rowLimit = 2\n}) {\n const inputRef = useRef(null);\n const maxHeight = maxFontSize * lineHeight * rowLimit;\n const showPlaceholder = !String(content).trim();\n\n useLayoutEffect(() => {\n const e = inputRef.current;\n if (e) {\n let elem = $(e);\n elem.css('font-size', `${maxFontSize}px`);\n while (e.scrollHeight > maxHeight && elem.css('font-size') > `${minFontSize}px`) {\n elem.css('font-size', '-=1');\n }\n }\n }, [maxHeight, maxFontSize, minFontSize, content]);\n\n return (\n \n {showPlaceholder ? placeholder : content}\n \n );\n}\n\nexport default FontScaleDiv;\n\nconst containerStyle = css`\n overflow: hidden;\n overflow-wrap: break-word;\n letter-spacing: normal;\n white-space: pre-wrap;\n font-weight: 500;\n`;\n\nconst getCustomStyle = ({ lineHeight, maxFontSize, maxHeight }) => css`\n max-height: ${maxHeight}px;\n font-size: ${maxFontSize}px;\n line-height: ${lineHeight};\n`;\n","import React, { useEffect, useRef } from 'react';\nimport { useInView } from 'react-intersection-observer';\n\nconst isSupportNativeLazylaod = 'loading' in HTMLImageElement.prototype;\n\nexport default function LazyLoadImg({ src, alt, enableLazyLoad = false, ...restProps }) {\n const imgRef = useRef(null);\n const { ref, inView } = useInView({\n triggerOnce: true,\n rootMargin: '50px 0%',\n threshold: [0, 0.5, 1],\n skip: isSupportNativeLazylaod || !enableLazyLoad\n });\n const canSetSrc = isSupportNativeLazylaod || !enableLazyLoad || inView;\n const imgProps = (() => {\n let props = {};\n if (isSupportNativeLazylaod) {\n props.loading = 'lazy';\n }\n if (canSetSrc) {\n props.src = src;\n }\n return props;\n })();\n\n useEffect(() => {\n if (imgRef.current) {\n imgRef.current.classList.add('fever-anim-gradient-bg');\n imgRef.current.addEventListener('load', handleLoad);\n }\n function handleLoad() {\n if (imgRef.current) {\n imgRef.current.classList.remove('fever-anim-gradient-bg');\n imgRef.current.removeEventListener('load', handleLoad);\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n return (\n {\n imgRef.current = node;\n ref(node);\n }}\n alt={alt}\n {...imgProps}\n {...restProps}\n />\n );\n}\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Fade from '@material-ui/core/Fade';\n\nfunction ShowEffect({ children, show, onEntered = () => {}, onExited = () => {} }) {\n return (\n \n {children}\n \n );\n}\n\nShowEffect.propTypes = {\n children: PropTypes.node,\n show: PropTypes.bool\n};\n\nexport default ShowEffect;\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport MuiDialog from '@material-ui/core/Dialog';\nimport ShowEffect from 'client/components/Result/prizeList/ShowEffect';\nimport ScrollerFixedHeader from 'client/components/Result/prizeList/ScrollerFixedHeader';\nimport { useFixedPopupHeightResizePostMessage } from 'client/hooks/useHeightResizePostMessage';\n\nexport const modes = {\n COMP: 'component',\n GLOBAL: 'global'\n};\n\nexport default function PopupWithFixHeader({\n maxWidth = 720,\n mode = modes.COMP,\n title,\n styles,\n show = false,\n onEffectEntered,\n onEffectExited,\n onClose,\n children\n}) {\n const bindRef = useFixedPopupHeightResizePostMessage({ isTrigger: show });\n\n return mode === modes.COMP ? (\n \n \n \n
\n {children}\n
\n \n
\n ) : (\n \n
\n \n
{children}
\n
\n
\n );\n}\n\nconst baseStyle = css`\n background: #fff;\n border-radius: 8px;\n overflow: auto;\n`;\n\nconst compPopupStyle = css`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n margin: auto;\n min-height: 100%;\n height: 100%;\n z-index: 5;\n`;\n\nconst dialogStyle = css`\n width: calc(100%);\n height: auto;\n max-height: calc(100% - 120px);\n min-height: 240px;\n`;\n\nconst listContainerStyle = css`\n padding: 0 16px 8px;\n`;\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\n\nimport ButtonWithLoadingEffect from 'Mui/ButtonWithLoadingEffect';\nimport { stylePropType } from 'utils/propTypes';\n\nfunction ActionButton({ text, onClick, btnStyle = '', disabled, isLoading }) {\n return (\n \n \n {text}\n \n \n );\n}\n\nActionButton.propTypes = {\n text: PropTypes.oneOfType([PropTypes.string, PropTypes.object]),\n onClick: PropTypes.func,\n btnStyle: stylePropType,\n disabled: PropTypes.bool,\n isLoading: PropTypes.bool\n};\n\nexport default ActionButton;\n\nconst buttonStyle = css`\n padding: 10px 16px;\n width: 100%;\n height: 48px;\n border-radius: 28px;\n`;\n\nconst textStyle = css`\n display: flex;\n align-items: center;\n color: inherit;\n`;\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\n\nimport { stylePropType } from 'utils/propTypes';\n\nfunction ActionHeader({ title, titleStyle, children, buttonStyle }) {\n return (\n <>\n {title && (\n \n {title}\n \n )}\n\n
\n {children}\n
\n \n );\n}\n\nActionHeader.propTypes = {\n title: PropTypes.string,\n titleStyle: stylePropType,\n children: PropTypes.node\n};\n\nexport default ActionHeader;\n\nconst headerStyle = css`\n margin: 16px 0;\n text-align: center;\n`;\n\nconst buttonContainerStyle = css`\n margin: 16px 0;\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { css } from '@emotion/core';\nimport i18n from 'i18next';\n\nimport Modal from '@material-ui/core/Modal';\nimport Backdrop from '@material-ui/core/Backdrop';\nimport Typography from '@material-ui/core/Typography';\nimport Fade from '@material-ui/core/Fade';\nimport Button from '@material-ui/core/Button';\n\nimport { system800 } from 'Mui/styles/color';\n\nexport default function DialogParticipantPrizeEmpty({ title, desc, isOpen, onCloseHandler }) {\n return (\n {\n if (reason !== 'backdropClick' && reason !== 'escapeKeyDown') {\n onCloseHandler();\n }\n }}\n >\n \n
\n {title}\n {desc}\n
\n \n
\n
\n
\n \n );\n}\n\nDialogParticipantPrizeEmpty.propTypes = {\n title: PropTypes.string,\n desc: PropTypes.string,\n isOpen: PropTypes.bool,\n onCloseHandler: PropTypes.func,\n onRecopyHandler: PropTypes.func,\n loading: PropTypes.bool\n};\n\nconst modalStyle = css`\n display: flex;\n justify-content: center;\n align-items: center;\n background: rgba(255, 255, 255, 0.56);\n backdrop-filter: blur(10.8731px);\n`;\n\nconst containerStyle = css`\n width: 100%;\n max-width: 343px;\n display: flex;\n flex-direction: column;\n padding: 16px;\n border-radius: 12px;\n background-color: #ffffff;\n outline: none;\n`;\n\nconst titleStyle = css`\n margin: 6px auto;\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-size: 24px;\n line-height: 24px;\n color: ${system800.color};\n`;\n\nconst descriptionStyle = css`\n min-height: 88px;\n display: flex;\n justify-content: center;\n align-items: center;\n font-style: normal;\n font-weight: normal;\n font-size: 16px;\n line-height: 20px;\n color: ${system800.color};\n`;\n\nconst actionButtonContainerStyle = css`\n display: flex;\n align-items: center;\n justify-content: center;\n padding-top: 12px;\n padding-bottom: 4px;\n`;\n\nconst buttonStyle = css`\n width: 144px;\n height: 48px;\n background: #02a0fc;\n border-radius: 50px;\n color: #ffffff;\n`;\n","import React, { useState } from 'react';\nimport ActionButton from 'client/components/Result/Actions/ActionButton';\nimport getWinnerLabelAndBtnTextGenerator from 'client/components/Result/utils/getWinnerLabelAndBtnTextGenerator';\n\nexport default function WinnerButton({ lotteryType, btnStyle, onClick = async () => {} }) {\n const [isFetching, setIsFetching] = useState(false);\n const { btn } = getWinnerLabelAndBtnTextGenerator({\n lotteryType\n });\n return (\n {\n setIsFetching(true);\n await onClick();\n setIsFetching(false);\n }}\n btnStyle={btnStyle}\n isLoading={isFetching}\n />\n );\n}\n","import React, { useMemo, useState, useImperativeHandle, useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport i18n from 'i18next';\n\nimport { getLotteryInfo, getWinner, checkIsQualifyToGetWinner } from 'api/client';\nimport * as clientErrTypes from 'config/clientErrorTypes';\nimport {\n isCanSetVerifyMechanismGames,\n isForceVerifyMechanismGames,\n isPurePrizeGames,\n pureGameTypeMappingLotteryType\n} from 'config/promoGameTypes';\nimport {\n isLotteryHasAnimation,\n lotteryParticipantTypes,\n lotteryGeneralAnimationType\n} from 'config/promoLotteryTypes';\nimport { gameRunningStatuses } from 'config/gameRunningStatuses';\nimport { isGetWinnerEmptySuspendError } from 'client/utils/errorObjectChecker';\nimport { updateParticipantRemainder } from 'client/redux/modules/lotteryParticipant';\nimport { handlers } from 'client/redux/modules/systemErrorDialog';\nimport { suspendPromo } from 'client/redux/modules/promoState';\nimport { updateFlowOfEntryRecord, entryFlowKeys } from 'client/redux/modules/userGameResultRecords';\nimport { successGetWinner } from 'client/redux/modules/userEntryState';\nimport {\n setCurrentPrizeUUID,\n setCurrentUnanimationEntriesUUID,\n setGameAlreadyToPlay\n} from 'client/redux/modules/purePrizeState';\nimport { setShouldUpdateUserWinnerList, setAnimatingLotteries } from 'client/redux/modules/flags';\n\nimport useClientErrorHandler, { generateApiErrObj } from 'client/hooks/useClientErrorHandler';\nimport useClientHistory, { JOIN } from 'client/hooks/useClientHistory';\n\nimport DialogParticipantPrizeEmpty from 'client/components/Result/DialogParticipantPrizeEmpty';\nimport WinnerButton from 'client/components/Result/Actions/WinnerButton';\nimport usePrizeRuleChecker from 'client/hooks/usePrizeRuleChecker';\nimport { updateFlowOfMGMEntryRecord } from 'client/redux/modules/mgmReferral';\nimport { isObject } from 'utils/objectManipulate';\n\nfunction OpenWinnerButton(\n {\n onOpenWinner = () => {},\n openWinnerListChangeCallback = () => {},\n enableGetWinnerByApi,\n btnStyle\n },\n ref\n) {\n const dispatch = useDispatch();\n const history = useClientHistory();\n const errHandler = useClientErrorHandler();\n const { isMgmShare, isMgmSelf } = useSelector(s => s.flags);\n const { unOpenWinner, unOpenWinnerOfLotteryPickWinner } = useCategorizedUnOpenWinner(false);\n const {\n unOpenWinner: unOpenMgmWinner,\n unOpenWinnerOfLotteryPickWinner: unOpenMgmWinnerOfLotteryPickWinner\n } = useCategorizedUnOpenWinner(true);\n const {\n isLotteryParticipantRequiredAllCorrect,\n isLotteryInstantRequiredAllCorrect,\n checkIsGameChallengeAllCorrect,\n canClaimPrize\n } = usePrizeRuleChecker();\n const { uuid: promoUUID, type: gameType } = useSelector(s => s.promo);\n const { enableVerifyMechanism } = useSelector(s => s.settingPromo);\n const { gameRunningStatus } = useSelector(s => s.promoState);\n const currentEntryUUID = useSelector(s => s.userEntryState.currentEntryUUID);\n const userGameResultRecords = useSelector(s => s.userGameResultRecords);\n const { userGameResultRecords: mgmUserGameResultRecords } = useSelector(s => s.mgmReferral);\n const lotteryParticipant = useSelector(s => s.lotteryParticipant);\n const lotteryInstant = useSelector(s => s.lotteryInstant);\n const {\n lotteryInstant: mgmLotteryInstant = {},\n lotteryParticipant: mgmLotteryParticipant = {},\n lotteryTasks: mgmLotteryTasks = {}\n } = useSelector(s => s.mgmReferral);\n const lotteryTasks = useSelector(s => s.lotteryTasks);\n const { mgmReferral: { uuid: mgmPromoUUID, type: mgmPromoType } = {} } = useSelector(\n s => s.mgmRelation\n );\n const hasEnableLotteryParticipant = Boolean(lotteryParticipant.uuid);\n const hasEnableMgmLotteryParticipant = Boolean(mgmLotteryParticipant.uuid);\n const hasEnableLotteryInstant = Boolean(lotteryInstant.uuid);\n const hasEnableMgmLotteryInstant = Boolean(mgmLotteryInstant.uuid);\n const hasEnableSignupForm = useSelector(s => Boolean(s.signUpForm.id));\n const hasEnableLotteryTasks = Object.keys(lotteryTasks).length > 0;\n const hasEnableMgmLotteryTasks = Object.keys(mgmLotteryTasks).length > 0;\n const isPurePrizeGame = isPurePrizeGames(gameType);\n const isVerifyToGetWinnerGame =\n isForceVerifyMechanismGames(gameType) ||\n (isCanSetVerifyMechanismGames(gameType) && Boolean(enableVerifyMechanism));\n const isPickWinnerLotteryParticipant =\n lotteryParticipant.type === lotteryParticipantTypes.PICK_THE_PRIZE ||\n mgmLotteryParticipant.type === lotteryParticipantTypes.PICK_THE_PRIZE;\n const [openWinnerEmptyDialog, setOpenWinnerEmptyDialog] = useState(false);\n\n let hasPendingVerifyEntry = false;\n\n const getWinnerList = ({\n promoUUID,\n promoType,\n lotteryInstant,\n lotteryParticipant,\n lotteryTasks,\n hasEnableLotteryInstant,\n hasEnableLotteryParticipant,\n isMgmWinner = false,\n unOpenWinner,\n unOpenWinnerOfLotteryPickWinner\n }) => {\n let listGetInstantWinnerAndOpen = [];\n let listGetParticipantWinnerAndOpen = [];\n let listContinueParticipantPickWinner = [];\n let listContinueTaskPickWinner = [];\n\n const targetUserGameResultRecords = isMgmWinner\n ? mgmUserGameResultRecords\n : userGameResultRecords;\n\n const otherUserGameResultRecords = isMgmWinner\n ? userGameResultRecords\n : mgmUserGameResultRecords;\n\n if (enableGetWinnerByApi) {\n for (const entryRecord of targetUserGameResultRecords) {\n // 一般模組要去判斷 qualify 、 deletedAt\n const { deletedAt, flow, gameResult } = entryRecord;\n const parseGameResult = isObject(gameResult) ? gameResult : JSON.parse(gameResult);\n\n const enableOpenWinnerParticipantLotteryPrize = canClaimPrize(\n isLotteryParticipantRequiredAllCorrect,\n checkIsGameChallengeAllCorrect({ type: promoType, gameResult: parseGameResult })\n );\n const enableOpenWinnerInstantLotteryPrize = canClaimPrize(\n isLotteryInstantRequiredAllCorrect,\n checkIsGameChallengeAllCorrect({ type: promoType, gameResult: parseGameResult })\n );\n\n const qualifyStatus = !isVerifyToGetWinnerGame\n ? entryQualifyStatus.PASS\n : Boolean(flow.qualified)\n ? entryQualifyStatus.PASS\n : entryQualifyStatus.PENDING;\n\n // MGM 要去判斷原本的 GameResult 是否全被刪除\n const isDeleted = isMgmWinner\n ? otherUserGameResultRecords.every(obj => obj.deletedAt !== null)\n : Boolean(deletedAt);\n\n const hasFulfillSignupForm = !hasEnableSignupForm || Boolean(flow.formSignUp);\n const hasGameResult = Boolean(flow.gameResult);\n\n // MGM 不用判斷填表\n const isEntryCanJoinLottery = isMgmWinner\n ? !isDeleted && hasGameResult\n : !isDeleted && hasGameResult && hasFulfillSignupForm;\n\n hasPendingVerifyEntry = isMgmWinner\n ? isEntryCanJoinLottery\n : isEntryCanJoinLottery && qualifyStatus === entryQualifyStatus.PENDING;\n\n const isPassEntryCanJoinLottery = isMgmWinner\n ? isEntryCanJoinLottery\n : isEntryCanJoinLottery && qualifyStatus === entryQualifyStatus.PASS;\n\n if (isPassEntryCanJoinLottery) {\n // 確認是否已配開完動畫獎 (已有 flow lotteryParticipant or 還有待配開的獎項(hasEnableLotteryParticipant))\n const hasFulfillLotteryParticipant =\n !hasEnableLotteryParticipant || Boolean(flow.lotteryParticipant);\n // 確認是否已配開完即時獎 (已有 flow lotteryInstant or 還有待配開的獎項(hasEnableLotteryInstant))\n const hasFulfillLotteryInstant =\n !hasEnableLotteryInstant || Boolean(flow.lotteryInstant);\n // 確認是否已配開完關卡獎 (已有 flow lotteryInstant or 還有待配開的獎項(hasEnableLotteryInstant))\n const hasFulfillLotteryTask =\n (isMgmWinner ? !hasEnableMgmLotteryTasks : !hasEnableLotteryTasks) ||\n Boolean(flow.lotteryTask);\n\n if (!hasFulfillLotteryInstant) {\n // 確認若有開全對才給獎,game result 的答題紀錄需要全對才能往下執行領獎\n // 沒開也可以直接領獎\n\n if (enableOpenWinnerInstantLotteryPrize) {\n // 如果遇到獎品發完,活動暫停,客戶補獎後,user 可以重新領取畫面會出現 【領取獎品】的功能\n if (checkIfLotteryHasRemainPrize(lotteryInstant)) {\n listGetInstantWinnerAndOpen.push({\n lotteryType: lotteryInstant.type,\n handler: async () => {\n try {\n const prizeUUID = await getWinnerPrizeByLottery({\n promoUUID,\n entryUUID: entryRecord.uuid,\n lotteryUUID: lotteryInstant.uuid\n });\n if (prizeUUID) {\n const updateUserEntryState = isMgmWinner\n ? updateFlowOfMGMEntryRecord\n : updateFlowOfEntryRecord;\n dispatch(\n updateUserEntryState({\n entryUUID: entryRecord.uuid,\n key: entryFlowKeys.LOTTERY_INSTANT\n })\n );\n dispatch(setShouldUpdateUserWinnerList());\n if (entryRecord.uuid === currentEntryUUID) {\n dispatch(successGetWinner(lotteryInstant.type));\n }\n await openWinner({\n promoUUID,\n entryUUID: entryRecord.uuid,\n prizeUUID,\n lotteryUUID: lotteryInstant.uuid,\n lotteryType: lotteryInstant.type\n // lotteryInstant\n });\n }\n } catch (err) {\n errHandler({\n err,\n handler: handlers.RELOAD\n });\n }\n }\n });\n }\n }\n }\n\n if (!hasFulfillLotteryParticipant) {\n if (isPickWinnerLotteryParticipant) {\n if (enableOpenWinnerParticipantLotteryPrize) {\n // 如果遇到獎品發完,活動暫停,客戶補獎後,user 可以重新領取畫面會出現 【選擇獎品】的功能\n if (checkIfPickWinnerLotteryHasRemainPrize(lotteryParticipant)) {\n // 即時獎是自由選且未完成的話,通過該 button 進入\n listContinueParticipantPickWinner.push({\n lotteryType: lotteryParticipant.type,\n handler: () =>\n openWinner({\n promoUUID,\n entryUUID: entryRecord.uuid,\n lotteryUUID: lotteryParticipant.uuid,\n lotteryType: lotteryParticipant.type,\n lotteryParticipant\n })\n });\n }\n }\n } else {\n if (enableOpenWinnerParticipantLotteryPrize) {\n // 如果遇到獎品發完,活動暫停,客戶補獎後,user 可以重新領取畫面會出現 【試手氣】的功能\n if (checkIfLotteryHasRemainPrize(lotteryParticipant)) {\n // 參加獎非自由選,能夠通過該 button 配審核成功獎、補配\n listGetParticipantWinnerAndOpen.push({\n lotteryType: lotteryParticipant.type,\n handler: async () => {\n try {\n const prizeUUID = await getWinnerPrizeByLottery({\n promoUUID,\n entryUUID: entryRecord.uuid,\n lotteryUUID: lotteryParticipant.uuid\n });\n if (prizeUUID) {\n const updateUserEntryState = isMgmWinner\n ? updateFlowOfMGMEntryRecord\n : updateFlowOfEntryRecord;\n dispatch(\n updateUserEntryState({\n entryUUID: entryRecord.uuid,\n key: entryFlowKeys.LOTTERY_PARTICIPANT\n })\n );\n dispatch(setShouldUpdateUserWinnerList());\n if (entryRecord.uuid === currentEntryUUID) {\n dispatch(\n successGetWinner(\n lotteryParticipant.type\n )\n );\n }\n await openWinner({\n promoUUID,\n entryUUID: entryRecord.uuid,\n prizeUUID,\n lotteryUUID: lotteryParticipant.uuid,\n lotteryType: lotteryParticipant.type,\n lotteryParticipant\n });\n }\n } catch (err) {\n errHandler({\n err,\n handler: handlers.RELOAD\n });\n }\n }\n });\n }\n }\n }\n }\n // ALAN TODO: 不確定要不要補上 instant\n if (!hasFulfillLotteryTask) {\n const unOpenTaskPickWinnerPrize = unOpenWinnerOfLotteryPickWinner.find(\n w =>\n w.entryUuid === entryRecord.uuid &&\n lotteryTasks[w.prize.lotteryUuid] !== undefined\n );\n // 如果關卡獎自由選配到一半且未完成的話,從該按鈕進入\n if (\n unOpenTaskPickWinnerPrize &&\n checkIfPickWinnerLotteryHasRemainPrize(\n lotteryTasks[unOpenTaskPickWinnerPrize.prize.lotteryUuid]\n )\n ) {\n listContinueTaskPickWinner.push({\n lotteryType: unOpenTaskPickWinnerPrize.type,\n handler: () =>\n openWinner({\n promoUUID,\n entryUUID: entryRecord.uuid,\n lotteryUUID: unOpenTaskPickWinnerPrize.prize.lotteryUuid,\n lotteryType: unOpenTaskPickWinnerPrize.type,\n lotteryParticipant\n })\n });\n }\n }\n }\n }\n }\n\n const listOpenWinner = unOpenWinner.map(w => ({\n lotteryType: w.lotteryType,\n handler: () =>\n openWinner({\n promoUUID,\n entryUUID: w.entryUuid,\n prizeUUID: w.prize.uuid,\n lotteryUUID: w.prize.lotteryUuid,\n lotteryType: w.lotteryType,\n lotteryParticipant\n // lotteryInstant\n })\n }));\n\n // 活動不能再參加(暫停、結束)的話,未完成的自由選已領取的獎品要讓 user 開\n const listOpenWinnerOfUnCompletePickWinner = (gameRunningStatus ===\n gameRunningStatuses.RUNNING\n ? []\n : unOpenWinnerOfLotteryPickWinner\n ).map(w => ({\n lotteryType: lotteryGeneralAnimationType,\n handler: () =>\n toLotteryAnimation({\n entryUUID: w.entryUuid,\n prizeUUID: w.prize.uuid,\n animatingLottery: {\n uuid: w.prize.lotteryUuid,\n type: lotteryGeneralAnimationType\n }\n })\n }));\n return {\n openWinnerList: [\n ...listGetInstantWinnerAndOpen,\n ...listGetParticipantWinnerAndOpen,\n ...listOpenWinner,\n ...listOpenWinnerOfUnCompletePickWinner\n ],\n pickWinnerList: [...listContinueParticipantPickWinner, ...listContinueTaskPickWinner]\n };\n };\n\n const mgmWinnerList =\n isMgmShare || isMgmSelf\n ? getWinnerList({\n promoUUID: mgmPromoUUID,\n promoType: mgmPromoType,\n lotteryInstant: mgmLotteryInstant,\n lotteryParticipant: mgmLotteryParticipant,\n lotteryTasks: mgmLotteryTasks,\n hasEnableLotteryInstant: hasEnableMgmLotteryInstant,\n hasEnableLotteryParticipant: hasEnableMgmLotteryParticipant,\n isMgmWinner: true,\n unOpenWinner: unOpenMgmWinner,\n unOpenWinnerOfLotteryPickWinner: unOpenMgmWinnerOfLotteryPickWinner\n })\n : { openWinnerList: [], pickWinnerList: [] };\n\n const winnerList = getWinnerList({\n promoUUID: promoUUID,\n promoType: gameType,\n lotteryInstant: lotteryInstant,\n lotteryParticipant: lotteryParticipant,\n lotteryTasks: lotteryTasks,\n hasEnableLotteryInstant: hasEnableLotteryInstant,\n hasEnableLotteryParticipant: hasEnableLotteryParticipant,\n isMgmWinner: false,\n unOpenWinner: unOpenWinner,\n unOpenWinnerOfLotteryPickWinner: unOpenWinnerOfLotteryPickWinner\n });\n\n const openWinnerList = [...winnerList.openWinnerList, ...mgmWinnerList.openWinnerList];\n const pickWinnerList = [...winnerList.pickWinnerList, ...mgmWinnerList.pickWinnerList];\n // 送去 Lottery 頁做開獎\n function toLotteryAnimation({ entryUUID, prizeUUID = '', animatingLottery }) {\n onOpenWinner({\n entriesUUID: entryUUID,\n prizeUUID,\n animatingLottery\n });\n }\n async function openWinner({\n promoUUID,\n entryUUID,\n prizeUUID = '',\n lotteryUUID,\n lotteryType,\n // lotteryInstant = {},\n lotteryParticipant = {}\n }) {\n // 純獎模組的動畫獎直接回 join 流程遊玩\n if (\n isPurePrizeGame &&\n Boolean(\n pureGameTypeMappingLotteryType[gameType] === lotteryType &&\n lotteryUUID === lotteryParticipant.uuid\n )\n ) {\n dispatch(setCurrentPrizeUUID(prizeUUID));\n dispatch(setCurrentUnanimationEntriesUUID(entryUUID));\n dispatch(setGameAlreadyToPlay());\n dispatch(\n setAnimatingLotteries({\n type: lotteryType,\n uuid: lotteryUUID,\n animationSettings: lotteryParticipant.AnimationSettings\n })\n );\n history.push(JOIN);\n } else {\n // 非純獎模組的動畫獎,前往領取獎品動畫頁(/lottery)做開獎\n toLotteryAnimation({\n entryUUID,\n prizeUUID,\n animatingLottery: await getAnimatingLottery({\n lotteryUUID,\n lotteryType,\n lotteryParticipant,\n promoUUID\n })\n });\n }\n }\n async function getAnimatingLottery({\n lotteryUUID,\n lotteryType,\n lotteryParticipant,\n promoUUID\n }) {\n if (!isLotteryHasAnimation(lotteryType)) {\n return { type: lotteryType, uuid: lotteryUUID };\n } else if (lotteryUUID === lotteryParticipant.uuid) {\n return {\n type: lotteryType,\n uuid: lotteryUUID,\n AnimationSettings: lotteryParticipant.AnimationSettings\n };\n } else {\n const {\n payload: { lotterySetting: { AnimationSettings } = {} } = {}\n } = await getLotteryInfo(promoUUID, lotteryUUID);\n return { type: lotteryType, uuid: lotteryUUID, AnimationSettings };\n }\n }\n // 拿 Lottery 去做配獎,並回傳配到的獎品\n async function getWinnerPrizeByLottery({ promoUUID, entryUUID, lotteryUUID }) {\n await checkIsQualifyToGetWinner({\n promoUUID: promoUUID,\n entriesUUID: entryUUID,\n lotteryUUID\n });\n const winnerResp = await getWinner(promoUUID, entryUUID, lotteryUUID);\n const { httpStatus, payload } = winnerResp;\n if (httpStatus === 200) {\n const prizeUUID = payload[0];\n return prizeUUID;\n } else if (httpStatus === 226) {\n setOpenWinnerEmptyDialog(true);\n return null;\n } else if (isGetWinnerEmptySuspendError(winnerResp)) {\n dispatch(suspendPromo());\n setOpenWinnerEmptyDialog(true);\n return null;\n } else if (httpStatus === 400) {\n if (payload.message === clientErrTypes.POINTS_IS_NOT_ENOUGH_BY_PRE_CHECK) {\n throw generateApiErrObj(\n winnerResp,\n clientErrTypes.POINTS_IS_NOT_ENOUGH_BY_PRE_CHECK\n );\n } else if (payload.message === clientErrTypes.POINTS_IS_NOT_ENOUGH) {\n throw generateApiErrObj(winnerResp, clientErrTypes.POINTS_IS_NOT_ENOUGH);\n } else {\n throw generateApiErrObj(winnerResp, clientErrTypes.GET_WINNER);\n }\n } else {\n throw generateApiErrObj(winnerResp, clientErrTypes.GET_WINNER);\n }\n }\n function checkIfPickWinnerLotteryHasRemainPrize(lottery = {}) {\n const { remainder, prizeLimited } = lottery;\n return !prizeLimited || remainder > 0;\n }\n function checkIfLotteryHasRemainPrize(lottery = {}) {\n const { remainder, prizeLimited, suspendWhenNoPrize } = lottery;\n if (suspendWhenNoPrize) {\n return true;\n } else {\n return !prizeLimited || remainder > 0;\n }\n }\n\n const shouldShowButton = openWinnerList.length + pickWinnerList.length > 0;\n const winnerListLength = openWinnerList.length || pickWinnerList.length;\n useImperativeHandle(ref, () => ({\n getOpenWinnerButtonData: () => ({\n shouldShowButton,\n hasEnableLotteryParticipant:\n hasEnableLotteryParticipant || hasEnableMgmLotteryParticipant,\n hasEnableLotteryInstant: hasEnableLotteryInstant || hasEnableMgmLotteryInstant,\n hasPendingVerifyEntry,\n openWinnerList,\n pickWinnerList\n })\n }));\n\n // To sync ref data from children (OpenWinnerButton) to parent component (ResultHeader)\n useEffect(() => {\n openWinnerListChangeCallback(winnerListLength);\n }, [openWinnerListChangeCallback, winnerListLength]);\n\n return (\n <>\n {openWinnerList.length > 0 && (\n \n )}\n\n {pickWinnerList.length > 0 && (\n \n )}\n {\n setOpenWinnerEmptyDialog(false);\n dispatch(updateParticipantRemainder(0));\n }}\n />\n \n );\n}\n\nexport default React.forwardRef(OpenWinnerButton);\n\nconst entryQualifyStatus = {\n PASS: 'passed',\n PENDING: 'pending'\n};\n\nfunction useCategorizedUnOpenWinner(isMgmWinner) {\n const { unOpenWinnerPrize = [] } = useSelector(s => s.userWinnerPrize);\n const { userWinnerPrize: { unOpenWinnerPrize: mgmUnOpenWinnerPrize = [] } = {} } = useSelector(\n s => s.mgmReferral\n );\n const currentUnOpenWinnerPrize = isMgmWinner ? mgmUnOpenWinnerPrize : unOpenWinnerPrize;\n\n return useMemo(() => {\n const validUnOpenWinner = currentUnOpenWinnerPrize.filter(w => !w.deletedAt);\n return {\n unOpenWinner: validUnOpenWinner.filter(\n w => w.lotteryType !== lotteryParticipantTypes.PICK_THE_PRIZE\n ),\n unOpenWinnerOfLotteryPickWinner: validUnOpenWinner.filter(\n w => w.lotteryType === lotteryParticipantTypes.PICK_THE_PRIZE\n )\n };\n }, [currentUnOpenWinnerPrize]);\n}\n","import React from 'react';\nimport { css } from '@emotion/core';\n\nimport { scrollPromoBodyIntoView } from 'client/utils/scroll';\nimport ActionButton from 'client/components/Result/Actions/ActionButton';\n\nfunction SecondaryButton({ text, IconComponent = null, onClick = () => {}, ...restProps }) {\n function handleClick() {\n scrollPromoBodyIntoView();\n onClick();\n }\n\n return (\n \n {Boolean(IconComponent) && }\n {text}\n \n }\n onClick={handleClick}\n {...restProps}\n />\n );\n}\n\nexport default SecondaryButton;\n\nconst iconStyle = css`\n margin-right: 4px;\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\n\nimport ActionHeader from 'client/components/Result/Actions/ActionHeader';\nimport ActionButton from 'client/components/Result/Actions/ActionButton';\n\nexport default function SignUpFormButton({ themeStyle, btnStyle, onClick = () => {} }) {\n const { buttonText, hint } = useSelector(s => s.signUpForm);\n\n return (\n \n \n \n );\n}\n","import React from 'react';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Divider from '@material-ui/core/Divider';\nimport Typography from '@material-ui/core/Typography';\n\nimport { entryVerifyStatus } from 'config/entryVerifyStatus';\nimport { invoiceTypes } from 'editor/game_invoice/utils/invoiceType';\n\nimport VerifyStatusLabel from 'client/components/verify/VerifyStatusLabel';\nimport usePromoSettingThemeStyle from 'client/hooks/usePromoSettingThemeStyle';\n\nexport default function ResultInfoInvoice({ result = {}, validStatus }) {\n const themeStyle = usePromoSettingThemeStyle();\n const { gameResult: { receiptType, receiptNumber, invoiceNumber } = {} } = result;\n const [title, value] = (() => {\n switch (Number(receiptType)) {\n case invoiceTypes.EINVOICE:\n return [i18n.t('label.result.title.einvoice'), invoiceNumber];\n case invoiceTypes.EINVOICE_CARRIERS:\n return [i18n.t('label.result.title.einvoice_carrier'), invoiceNumber];\n case invoiceTypes.INVOICE:\n return [i18n.t('label.result.title.invoice'), invoiceNumber];\n case invoiceTypes.RECEIPT:\n return [i18n.t('label.result.title.receipt'), receiptNumber];\n default:\n return [];\n }\n })();\n\n return (\n <>\n \n {title} - {String(value).toUpperCase()}\n \n
\n {validStatus !== entryVerifyStatus.PASSED && (\n \n )}\n
\n \n \n );\n}\n\nconst wrapperStyle = color => css`\n margin-top: 16px;\n color: ${color};\n`;\n\nconst statusCtyle = css`\n max-width: 89px;\n margin-top: 20px;\n`;\n\nconst dividerStyle = css`\n margin: 16px -6px;\n`;\n","import React from 'react';\nimport i18n from 'i18next';\nimport querystring from 'query-string';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport Collapse from '@material-ui/core/Collapse';\nimport Divider from '@material-ui/core/Divider';\nimport ShareIcon from '@material-ui/icons/Share';\nimport PlayCircleFilledWhiteIcon from '@material-ui/icons/PlayCircleFilledWhite';\n\nimport { functional } from 'Mui/styles/color';\nimport { lightenDarkenColor } from 'utils/colorConvert';\nimport { utcDTStr2LocalDTStr } from 'utils/dateTime';\nimport { prefixChar } from 'utils/manipulateString';\nimport { convertProxyImgUrl } from 'client/utils/getProxyImgUrl';\n\nimport {\n usePrimaryPromoSelector,\n useSecondaryPromoSelector\n} from 'client/game_photoContest/hooks/useReduxSelector';\nimport useHistoryPathPush from 'client/hooks/useHistoryPathPush';\n\nimport Button from 'Mui/Button';\nimport NativeShareWrapper from 'client/components/Result/Share/NativeShareWrapper';\nimport ShareDialogWrapper from 'ugc/components/ShareDialogWrapper';\nimport { gameTypes } from 'config/promoGameTypes';\nimport ugcTypes from 'config/ugcTypes';\n\nfunction ResultContest({ isExpand, isMultiple, serialNo, resultInfo = [] }) {\n const history = useHistoryPathPush();\n const { id: contestPromoId, name: promoTitle } = usePrimaryPromoSelector(s => s.promo);\n const { type: secondaryGameType } = useSecondaryPromoSelector(s => s.promo);\n\n const isVideoTypeMedia = secondaryGameType === gameTypes.VIDEO_UPLOAD;\n\n function toPortfolio(serialNo) {\n history.push({ pathname: `/${contestPromoId}/${serialNo}` });\n }\n function getPortfolioShareUrl(serialNo) {\n const qs = querystring.stringify({ t: Date.now() });\n return `${window.location.origin}/ugc/${contestPromoId}/${serialNo}?${qs}`;\n }\n\n const filteredResultInfo = resultInfo.map(ri => ({\n ...ri,\n mediaLibrary: {\n ...ri?.mediaLibrary,\n media: ri?.mediaLibrary?.media?.filter(_ => _.type === ugcTypes.IMAGE)\n }\n }));\n\n return (\n <>\n
\n \n {i18n.t('label.serial_number')}\n {serialNo}\n \n {isMultiple && }\n
\n {filteredResultInfo.length > 0 && (\n \n {filteredResultInfo.map(r => {\n const shareUrl = getPortfolioShareUrl(r.mediaLibrary.entryId);\n return (\n
\n \n {isVideoTypeMedia && (\n \n )}\n
\n
\n
\n \n {`${i18n.t(\n 'label.contest_ugc.result.vote_id'\n )}${prefixChar(r.voteId, '0', 7)}`}\n \n \n {`${i18n.t(\n 'label.contest_ugc.result.vote_date'\n )}${utcDTStr2LocalDTStr(\n r.voteCreatedAt,\n 'YYYY-MM-DD'\n )}`}\n \n
\n
\n toPortfolio(r.mediaLibrary.entryId)}\n >\n {i18n.t('button.go_to_work_page')}\n \n \n \n {({ onOpen }) => (\n }\n >\n {i18n.t('label.share_media_work')}\n \n )}\n \n \n
\n
\n \n );\n })}\n
\n )}\n {isMultiple && }\n \n );\n}\n\nexport default ResultContest;\n\nconst containerStyle = css`\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 16px 0;\n`;\n\nconst mediaWrapperStyle = css`\n position: relative;\n display: flex;\n padding: 8px 0;\n &:last-of-type {\n padding-bottom: 16px;\n }\n`;\n\nconst mediaImgStyle = url => css`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 150px;\n min-width: 150px;\n max-width: 150px;\n overflow: hidden;\n background-image: url(${url});\n background-size: cover;\n background-repeat: no-repeat;\n background-position: center;\n`;\n\nconst mediaInfoStyle = css`\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n width: 100%;\n padding: 0 8px;\n > div:first-of-type {\n display: flex;\n flex-direction: column;\n }\n > div:last-of-type {\n display: flex;\n flex-direction: column;\n align-items: flex-end;\n }\n`;\n\nconst btnStyle = css`\n padding: 8px 16px;\n min-width: 120px;\n border-radius: 28px;\n white-space: nowrap;\n`;\n\nconst containedBtnStyle = css`\n margin-bottom: 8px;\n background-color: ${functional.color};\n color: #fff;\n &:hover {\n background-color: ${lightenDarkenColor(functional.color, 0.1)};\n }\n`;\n\nconst outlinedBtnStyle = css`\n border-color: inherit;\n`;\n\nconst playIconStyle = css`\n max-width: 53px;\n max-height: 53px;\n color: #ffffff;\n width: 100%;\n height: 100%;\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { css } from '@emotion/core';\nimport FontScaleDiv from 'client/components/FontScaleDiv';\n\nfunction CommentSettings({ settings = {}, result, isFixed, isResult = false }) {\n const { isSmallScreenApp } = useSelector(s => s.appState);\n const {\n value,\n settings: { colorBackGround, colorBorder, colorMask, colorText, mode } = {}\n } = settings;\n\n const toGiveBackground = type => {\n if (type === 'image') {\n return value;\n } else if (type === 'color') {\n return colorBackGround;\n }\n };\n\n return (\n \n \n {isFixed ? (\n \n ) : (\n result\n )}\n \n \n );\n}\n\nexport default CommentSettings;\n\nconst showBackgroundUrlStyle = (backgroundColor, background, isResult) => css`\n background: linear-gradient(0deg, ${backgroundColor}, ${backgroundColor}), url(${background});\n width: 100%;\n height: 100%;\n background-repeat: no-repeat;\n background-size: cover;\n background-position: center;\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 8px;\n &:hover {\n > .NO_CLOSE_PANEL_CLASS_NAME {\n opacity: 1;\n }\n }\n border-radius: ${isResult && '0px 24px 24px 24px;'};\n`;\nconst showBackgroundColorStyle = backgroundColor => css`\n background: ${backgroundColor};\n`;\nconst showTextStyle = (textColor, borderColor, isResult) => css`\n width: 100%;\n height: 100%;\n display: flex;\n justify-content: center;\n align-items: center;\n font-family: 'Noto Sans TC';\n font-weight: 500;\n font-size: 44px;\n line-height: 64px;\n text-align: left;\n letter-spacing: 0.15px;\n color: ${textColor};\n border: 1px solid ${borderColor};\n padding: 8px;\n overflow: hidden;\n border-radius: ${isResult && '0px 24px 24px 24px;'};\n word-break: break-word;\n word-wrap: break-word;\n`;\nconst noFixedTextStyle = css`\n align-items: start;\n flex: 0.9;\n font-size: 20px;\n line-height: 29px;\n letter-spacing: 0.15px;\n justify-content: start;\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport Collapse from '@material-ui/core/Collapse';\nimport Divider from '@material-ui/core/Divider';\n\nimport { below } from 'utils/breakpoint';\nimport { entryVerifyStatus } from 'config/entryVerifyStatus';\n\nimport useIsContestUgcModule from 'client/game_photoContest/hooks/useIsContestUgcModule';\n\nimport VerifyStatusLabel from 'client/components/verify/VerifyStatusLabel';\nimport UgcVoteInfo from 'client/components/Result/EntriesInfo/customResult/UgcVoteInfo';\nimport SerialDateInfo from 'client/components/Result/EntriesInfo/SerialDateInfo';\n\nimport CommentSettings from 'components/Comment/CommentSettings';\nimport AsceptRatioContainer from 'components/Comment/AsceptRatioContainer';\n\nfunction ResultComment({\n isExpand,\n isMultiple,\n serialNo,\n resultCreatedAt,\n componentStyle,\n validStatus,\n resultInfo: { ugcAuthorName, mediaLibraryUuid, media } = {}\n}) {\n const isContestUgcModule = useIsContestUgcModule();\n const { enableFixedAspectRatio, enableParticipantName } = useSelector(s => s.settingGame);\n const isFixed = enableFixedAspectRatio === 1;\n const { settingOptions } = useSelector(s => s.gameState);\n\n return (\n \n
\n {validStatus !== entryVerifyStatus.PASSED && (\n \n )}\n
{!isExpand && }
\n
\n \n {Boolean(enableParticipantName) && (\n
\n \n {ugcAuthorName}\n \n
\n )}\n
\n {media.map(({ result, promotionOptionUuid: commentBgUUID }) => {\n const settings = settingOptions.find(({ uuid }) => uuid === commentBgUUID);\n return isFixed ? (\n \n \n \n ) : (\n \n );\n })}\n {isContestUgcModule && validStatus === entryVerifyStatus.PASSED && isExpand && (\n \n )}\n
\n
\n {isMultiple && }\n
\n );\n}\n\nexport default ResultComment;\n\nconst textContainerStyle = css`\n padding: 22px 8px;\n`;\n\nconst titleStyle = (componentStyle = {}) => css`\n font-weight: 500;\n color: ${componentStyle.titleColor};\n word-break: break-all;\n`;\n\nconst statusContainerStyle = css`\n padding: 8px 0;\n display: flex;\n justify-content: space-between;\n`;\n\nconst toggleIconStyle = css`\n display: flex;\n align-items: center;\n`;\n\nconst containerStyle = (containerStyle = {}) => css`\n padding: 0 24px;\n background-color: ${containerStyle.contentBgColor};\n margin: 0 -24px;\n ${below('sm')} {\n margin: 0 -16px;\n }\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport { entryVerifyStatus } from 'config/entryVerifyStatus';\nimport { error, system600, verifyPass } from 'Mui/styles/color';\n\nfunction VerifyStatusLabel({ status = entryVerifyStatus.WAITING, style = {} }) {\n const isWait = status === entryVerifyStatus.WAITING;\n const isNotPass = status === entryVerifyStatus.NOT_PASS;\n const isPass = status === entryVerifyStatus.PASSED;\n\n return (\n \n {isWait && i18n.t('label.wait_for_verify')}\n {isNotPass && i18n.t('label.not_passed')}\n {isPass && i18n.t('label.passed')}\n \n );\n}\n\nVerifyStatusLabel.propTypes = {\n status: PropTypes.number\n};\n\nexport default VerifyStatusLabel;\n\nconst basicStyle = css`\n padding: 2px 6px;\n background-color: ${system600.color};\n border-radius: 4px;\n color: #fff;\n user-select: none;\n text-align: center;\n`;\n\nconst waitStyle = css`\n background-color: ${system600.color};\n`;\n\nconst warningStyle = css`\n background-color: ${error.color};\n`;\nconst passStyle = css`\n background-color: ${verifyPass.color};\n`;\n","import React from 'react';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Divider from '@material-ui/core/Divider';\nimport Typography from '@material-ui/core/Typography';\nimport { receiptSubTypes, receiptTypes } from 'editor/game_purchaseReward/utils/invoiceType';\nimport VerifyStatusLabel from 'client/game_photoUpload/PhotoUpload/VerifyStatusLabel';\nimport usePromoSettingThemeStyle from 'client/hooks/usePromoSettingThemeStyle';\nimport { gameTypes } from 'config/promoGameTypes';\n\nexport default function ResultInfoList({ result = {}, validStatus, gameType }) {\n const themeStyle = usePromoSettingThemeStyle();\n\n const title = (() => {\n const { receiptType, receiptSubtype, receiptNumber = '' } = result;\n const upperCaseReceiptNumber = String(receiptNumber).toUpperCase();\n\n switch (gameType) {\n case gameTypes.PURCHASE_REWARD:\n let type = '';\n switch (Number(receiptType)) {\n case receiptTypes.EINVOICE:\n type = i18n.t(\n receiptSubtype === receiptSubTypes.CARRIER\n ? 'label.result.title.einvoice_carrier'\n : 'label.result.title.einvoice'\n );\n break;\n case receiptTypes.INVOICE:\n type = i18n.t('label.result.title.invoice');\n break;\n case receiptTypes.RECEIPT:\n type = i18n.t('label.result.title.receipt');\n break;\n default:\n break;\n }\n return `${type} - ${upperCaseReceiptNumber}`;\n case gameTypes.ORDER_REWARD:\n return `${i18n.t('label.result.title.order_number')}:${upperCaseReceiptNumber}`;\n default:\n break;\n }\n })();\n\n return (\n <>\n
\n \n {title}\n \n
\n \n
\n
\n \n \n );\n}\n\nconst wrapperStyle = css`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst titleWrapperStyle = color => css`\n margin-top: 16px;\n color: ${color};\n`;\n\nconst statusStyle = css`\n max-width: 89px;\n margin-top: 20px;\n`;\n\nconst dividerStyle = css`\n margin: 16px -6px;\n`;\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport VerifyStatusLabel from 'client/components/verify/VerifyStatusLabel';\nimport { entryVerifyStatus } from 'config/entryVerifyStatus';\n\nexport default function ResultValidStatus({ validStatus }) {\n return validStatus !== entryVerifyStatus.PASSED ? (\n
\n \n
\n ) : null;\n}\n\nconst statusStyle = css`\n margin-top: 20px;\n display: flex;\n justify-content: space-between;\n`;\n","import React from 'react';\nimport { useSelector } from 'react-redux';\nimport PropTypes from 'prop-types';\nimport dayjs from 'dayjs';\n\nimport { gameTypes, isContestGamesWithSecondaryUgc, isUgcGames } from 'config/promoGameTypes';\nimport { getEntryVerifyStatus } from 'config/entryVerifyStatus';\nimport { isJSONParsable, isObject } from 'utils/objectManipulate';\nimport { utcDTStr2LocalDTStr } from 'utils/dateTime';\nimport { componentStylePropTypes } from 'client/gameFormBased/utils/propTypes';\n\nimport useClientResultCollaspe from 'client/hooks/useClientResultCollaspe';\n\nimport ResultInfoInvoice from 'client/components/Result/EntriesInfo/customResult/ResultInfoInvoice';\nimport ResultUGC from 'client/components/Result/EntriesInfo/customResult/ResultUGC';\nimport ResultContest from 'client/components/Result/EntriesInfo/customResult/ResultContest';\nimport ResultComment from 'client/components/Result/EntriesInfo/customResult/ResultComment';\nimport CollapseWrapper from 'client/components/Result/EntriesInfo/customResult/CollapseWrapper';\nimport SerialDateInfo from 'client/components/Result/EntriesInfo/SerialDateInfo';\nimport ResultInfoList from 'client/components/Result/EntriesInfo/customResult/ResultInfoList';\nimport ResultValidStatus from 'client/components/Result/EntriesInfo/customResult/ResultValidStatus';\n\nfunction EntriesList({ items = [], gameType, componentStyle }) {\n const { enableVerifyMechanism } = useSelector(s => s.settingPromo);\n const isShowValidStatus = Boolean(enableVerifyMechanism);\n const { Comp = () => false, needCollapse = false } = getCustomResultByGameType(\n gameType,\n isShowValidStatus\n );\n const { updateCollapse = () => {}, openTarget = 0 } = useClientResultCollaspe(\n needCollapse,\n items.length - 1\n );\n const parseData = data => (isObject(data) ? data : JSON.parse(data));\n\n return items.map((item, index) => {\n const {\n flow: { gameResult: gameResultCreatedAt, qualified = false } = {},\n deletedAt,\n gameResult,\n id\n } = item;\n const validStatus = getEntryVerifyStatus({ deletedAt, qualified });\n const resultCreatedAt = Boolean(gameResultCreatedAt)\n ? dayjs(utcDTStr2LocalDTStr(gameResultCreatedAt)).format('YYYY-MM-DD HH:mm')\n : 'YYYY-MM-DD HH:mm';\n const result = isJSONParsable(gameResult) ? parseData(gameResult) : gameResult ?? {};\n const isExpand = openTarget === index;\n\n return (\n
\n {!needCollapse && (\n \n \n \n )}\n {needCollapse && (\n \n 1,\n serialNo: id,\n resultCreatedAt,\n componentStyle,\n validStatus,\n resultInfo: result,\n gameType\n }}\n />\n \n )}\n
\n );\n });\n}\n\nEntriesList.propTypes = {\n data: PropTypes.object,\n gameType: PropTypes.number,\n promoId: PropTypes.number,\n componentStyle: componentStylePropTypes\n};\n\nexport default EntriesList;\n\nfunction getCustomResultByGameType(gameType, isShowValidStatus) {\n switch (true) {\n case gameType === gameTypes.PURCHASE_REWARD:\n case gameType === gameTypes.ORDER_REWARD:\n return { Comp: ResultInfoList };\n case gameType === gameTypes.INVOICE:\n return { Comp: ResultInfoInvoice };\n case gameType === gameTypes.COMMENT:\n return { Comp: ResultComment, needCollapse: true };\n case isContestGamesWithSecondaryUgc(gameType):\n return { Comp: ResultContest, needCollapse: true };\n case isUgcGames(gameType):\n return { Comp: ResultUGC, needCollapse: true };\n case isShowValidStatus:\n return { Comp: ResultValidStatus };\n default:\n return {};\n }\n}\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport { below } from 'utils/breakpoint';\nimport { componentStylePropTypes } from 'client/gameFormBased/utils/propTypes';\nimport EntriesList from 'client/components/Result/EntriesInfo/EntriesList';\nimport ResultPromoTitle from 'client/components/Result/ResultPromoTitle';\n\nfunction EntriesListContainer({\n gameType,\n title,\n entriesList = [],\n hasCustomResult,\n showFullList = false,\n isLoading,\n style,\n componentStyle\n}) {\n const list = showFullList ? entriesList : entriesList.slice(-1);\n\n return (\n \n \n {isLoading ? (\n new Array(4)\n .fill(0)\n .map((_, index) => )\n ) : (\n \n )}\n \n );\n}\n\nEntriesListContainer.propTypes = {\n title: PropTypes.string,\n entriesList: PropTypes.array,\n showFullList: PropTypes.bool,\n isLoading: PropTypes.bool,\n style: PropTypes.oneOfType([PropTypes.object, PropTypes.string]),\n gameType: PropTypes.number,\n componentStyle: componentStylePropTypes\n};\n\nexport default EntriesListContainer;\n\nconst containerStyle = css`\n padding: 24px;\n ${below('sm')} {\n padding: 16px;\n }\n`;\n","import React from 'react';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport { below } from 'utils/breakpoint';\n\nexport default function SerialDateInfo({ id, date, children }) {\n return (\n <>\n
\n \n {i18n.t('label.serial_number')}\n {id}\n \n \n {i18n.t('label.join')}\n {date}\n \n
\n {children}\n \n );\n}\n\nconst listStyle = css`\n display: flex;\n justify-content: space-between;\n padding: 8px 0;\n > * {\n color: inherit;\n }\n`;\n\nconst numStyle = css`\n padding-right: 24px;\n ${below('sm')} {\n padding-right: 4px;\n }\n`;\n\nconst dateStyle = css`\n @media only screen and (max-width: 380px) {\n display: inline-block;\n }\n`;\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport PropTypes from 'prop-types';\n\nfunction CollapseWrapper({ children, isCollapse, updateCollapse, openIndex, disable }) {\n if (!isCollapse) {\n return children;\n }\n const handleOpenCollapse = () => {\n if (!disable) {\n updateCollapse(openIndex);\n }\n };\n return (\n
\n {children}\n
\n );\n}\n\nCollapseWrapper.propTypes = {\n children: PropTypes.node,\n isCollapse: PropTypes.bool,\n updateCollapse: PropTypes.func,\n openIndex: PropTypes.number,\n disable: PropTypes.bool\n};\n\nexport default CollapseWrapper;\n\nconst clickStyle = css`\n cursor: pointer;\n`;\n","import React from 'react';\nimport i18n from 'i18next';\nimport { isIOS, isAndroid, isChrome, isMobile } from 'react-device-detect';\nimport { IS_IFRAME_MODE } from 'config/envVariable';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowUpwardIcon from '@material-ui/icons/ArrowUpward';\n\nfunction ResultDownloadBtn({ href, componentStyle }) {\n const mobileDisplayText =\n isIOS && !(isChrome && IS_IFRAME_MODE)\n ? i18n.t('label.ugc.img.mobile_ios_download')\n : i18n.t('label.ugc.img.mobile_download');\n\n return (\n \n \n \n {isMobile ? mobileDisplayText : i18n.t('label.ugc.img.download')}\n \n \n );\n}\n\nexport default ResultDownloadBtn;\n\nconst downloadDivStyle = css`\n display: flex;\n cursor: pointer;\n text-decoration: none;\n color: #000000;\n'\n`;\nconst downloadStyle = (componentStyle = {}) => css`\n font-weight: 500;\n color: ${componentStyle.titleColor};\n word-break: break-all;\n margin-left: 13px;\n`;\nconst downloadIconStyle = (componentStyle = {}) => css`\n color: ${componentStyle.titleColor};\n`;\n","import React from 'react';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport ReplayIcon from '@material-ui/icons/Replay';\n\nfunction UgcReuploadBtn({ style, onClick = () => {}, componentStyle }) {\n return (\n \n );\n}\n\nexport default UgcReuploadBtn;\n\nconst btnStyle = css`\n display: flex;\n cursor: pointer;\n text-decoration: none;\n color: #000000;\n background-color: transparent;\n border: none;\n`;\nconst labelStyle = (componentStyle = {}) => css`\n font-weight: 500;\n color: ${componentStyle.titleColor};\n word-break: break-all;\n margin-left: 13px;\n`;\nconst iconStyle = (componentStyle = {}) => css`\n color: ${componentStyle.titleColor};\n`;\n","import React from 'react';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';\nimport Collapse from '@material-ui/core/Collapse';\nimport Divider from '@material-ui/core/Divider';\nimport ShareIcon from '@material-ui/icons/Share';\n\nimport { below } from 'utils/breakpoint';\nimport { entryVerifyStatus } from 'config/entryVerifyStatus';\nimport getUrlWrapTestCode from 'ugc/utils/getUrlWrapTestCode';\nimport { convertProxyImgUrl } from 'client/utils/getProxyImgUrl';\nimport {\n isShowResultDownloadBtnGame,\n isShowUgcResultReuploadBtnGame\n} from 'config/promoGameTypesClientConfig';\n\nimport {\n usePrimaryPromoSelector,\n useSecondaryPromoSelector\n} from 'client/game_photoContest/hooks/useReduxSelector';\nimport useIsContestUgcModule from 'client/game_photoContest/hooks/useIsContestUgcModule';\n\nimport Button from 'Mui/Button';\nimport UgcReuploadBtn from 'client/components/Result/EntriesInfo/customResult/UgcReuploadBtn';\nimport ResultDownloadBtn from 'client/components/Result/EntriesInfo/customResult/ResultDownloadBtn';\nimport ShareDialogWrapper from 'ugc/components/ShareDialogWrapper';\nimport SuccessButton from 'client/game_photoUpload/PhotoUpload/SuccessButton';\nimport VerifyStatusLabel from 'client/components/verify/VerifyStatusLabel';\nimport NativeShareWrapper from 'client/components/Result/Share/NativeShareWrapper';\nimport UgcVoteInfo from 'client/components/Result/EntriesInfo/customResult/UgcVoteInfo';\nimport SerialDateInfo from 'client/components/Result/EntriesInfo/SerialDateInfo';\nimport RatioContainerStyle from 'components/RatioContainerStyle';\nimport ResponsiveUgcProxyPicture from 'client/components/ResponsiveUgcProxyPicture';\nimport { gameTypes } from 'config/promoGameTypes';\nimport ugcTypes from 'config/ugcTypes';\nimport VideoPlayer from 'components/VideoPlayer';\n\nfunction ResultUGC({\n isExpand,\n isMultiple,\n serialNo,\n resultCreatedAt,\n componentStyle,\n blockTitle,\n validStatus,\n noNegativeMargin,\n resultInfo: { ugcAuthorName, mediaLibraryUuid, title, desc, media } = {},\n onReuploadBtnClick = () => {},\n renderCustomBtnComponent = () => false\n}) {\n const isContestUgcModule = useIsContestUgcModule();\n const { id: promoId, type: gameType } = usePrimaryPromoSelector(s => s.promo);\n const { type: secondaryGameType } = useSecondaryPromoSelector(s => s.promo);\n const notPassQueryTimeStamp =\n validStatus !== entryVerifyStatus.PASSED ? `?t=${new Date().getTime()}` : '';\n const shareUrl = `${window.location.protocol}//${\n window.location.hostname\n }/ugc/${promoId}/${serialNo}${notPassQueryTimeStamp ?? ``}`;\n const ugcUrl = getUrlWrapTestCode(`${window.location.origin}/ugc/${promoId}/${serialNo}`);\n const showResultDownloadButton = isShowResultDownloadBtnGame(gameType);\n const showUgcReuploadBtn = isShowUgcResultReuploadBtnGame(gameType);\n\n const isVideoUpload = secondaryGameType === gameTypes.VIDEO_UPLOAD;\n const mediaData = media.filter(item => {\n if (isVideoUpload) {\n return item.type === ugcTypes.VIDEO;\n } else {\n return item.type === ugcTypes.IMAGE;\n }\n });\n\n const renderSubHeader = () => {\n const renderVerifyLabel = validStatus !== entryVerifyStatus.PASSED;\n const renderExpandError = !isExpand;\n if (!renderVerifyLabel && !renderExpandError) {\n return null;\n } else {\n return (\n
\n {renderVerifyLabel ? :
}\n
{renderExpandError && }
\n
\n );\n }\n };\n return (\n
\n {Boolean(blockTitle) && (\n \n {blockTitle}\n \n )}\n \n {renderSubHeader()}\n {renderCustomBtnComponent()}\n \n
\n {mediaData.map(({ result, id: ugcId }) => {\n const imgUrl = convertProxyImgUrl({ url: result, resizeWidth: 1200 });\n return imgUrl ? (\n
\n {Boolean(isVideoUpload) ? (\n
\n \n
\n ) : (\n \n \n \n )}\n
\n {showResultDownloadButton && (\n \n )}\n {showUgcReuploadBtn &&\n validStatus === entryVerifyStatus.NOT_PASS && (\n \n )}\n
\n
\n ) : null;\n })}\n {isContestUgcModule &&\n validStatus === entryVerifyStatus.PASSED &&\n isExpand && (\n \n )}\n {Boolean(ugcAuthorName) && (\n
\n \n {ugcAuthorName}\n \n
\n )}\n {Boolean(title) && (\n
\n \n {title}\n \n
\n )}\n {Boolean(desc) && (\n
\n \n {desc}\n \n
\n )}\n
\n \n \n {i18n.t('button.go_to_work_page')}\n \n \n \n \n {({ onOpen }) => (\n }\n >\n {i18n.t('label.share_media_work')}\n \n )}\n \n \n
\n
\n
\n {isMultiple && }\n
\n
\n );\n}\n\nexport default ResultUGC;\n\nconst containerStyle = css`\n width: 100%;\n`;\n\nconst blockTitleStyle = css`\n margin-top: 8px;\n`;\n\nconst textContainerStyle = css`\n padding: 22px 8px;\n`;\n\nconst titleStyle = (componentStyle = {}) => css`\n font-weight: 500;\n color: ${componentStyle.titleColor};\n word-break: break-all;\n`;\n\nconst descStyle = (componentStyle = {}) => css`\n min-height: 76px;\n white-space: pre-wrap;\n color: ${componentStyle.descColor};\n word-break: break-all;\n`;\n\nconst btnConatinerStyle = css`\n display: flex;\n justify-content: center;\n padding: 16px 8px;\n & button {\n color: inherit;\n }\n`;\n\nconst statusContainerStyle = css`\n padding: 8px 0;\n display: flex;\n justify-content: space-between;\n`;\n\nconst toggleIconStyle = css`\n display: flex;\n align-items: center;\n`;\n\nconst collapseStyle = (noNegativeMargin, componentStyle = {}) => css`\n padding: 0 24px;\n background-color: ${componentStyle.contentBgColor};\n ${noNegativeMargin ? '' : 'margin: 0 -24px;'}\n ${below('sm')} {\n ${noNegativeMargin ? '' : 'margin: 0 -16px;'}\n }\n`;\n\nconst linkStyle = (componentStyle = {}) => css`\n text-decoration: none;\n color: ${componentStyle.buttonLabelColor};\n margin-right: 16px;\n`;\n\nconst shareBtnStyle = css`\n font-size: 16px;\n padding: 8px 24px;\n min-width: 120px;\n border-radius: 28px;\n white-space: nowrap;\n border-color: inherit;\n`;\n\nconst toPortfolioBtnStyle = css`\n font-size: 16px;\n padding: 8px 24px;\n`;\n\nconst btnWrapperStyle = css`\n display: flex;\n justify-content: center;\n align-items: center;\n padding: 20px;\n`;\n\nconst reuploadBtnStyle = css`\n margin-left: 16px;\n`;\n\nconst imgWrapperStyle = css`\n width: 90%;\n margin: 16px auto 0;\n & .fever-ratio-container-content {\n display: flex;\n justify-content: center;\n & img {\n width: 100%;\n object-fit: contain;\n }\n }\n`;\nconst videoWrapperStyle = css`\n width: 90%;\n margin: 16px auto 0;\n height: 457px;\n ${below('xsm')} {\n width: 100%;\n height: 179px;\n }\n`;\n","import React, { useMemo, useEffect, useState } from 'react';\nimport { useSelector } from 'react-redux';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\nimport Skeleton from '@material-ui/lab/Skeleton';\n\nimport { getUgcMediaVoteAndRankingInfo } from 'api/ugc';\nimport { hasUtcDTStartInLocal } from 'utils/dateTime';\n\nimport useClientErrorHandler from 'client/hooks/useClientErrorHandler';\nimport { usePrimaryPromoSelector } from 'client/game_photoContest/hooks/useReduxSelector';\n\nexport default function UgcVoteInfo({ mediaLibraryUUID, componentStyle = {} }) {\n const errHandler = useClientErrorHandler();\n const { id: contestPromoId } = usePrimaryPromoSelector(s => s.promo);\n const { startDate } = usePrimaryPromoSelector(s => s.settingPromo);\n const { isTestMode } = useSelector(s => s.promoState);\n const isVoteStart = useMemo(() => {\n if (isTestMode) {\n return true;\n } else if (startDate) {\n return hasUtcDTStartInLocal(startDate);\n }\n return false;\n }, [startDate, isTestMode]);\n const [isFetching, setIsFetching] = useState(false);\n const [mediaRank, setMediaRank] = useState(0);\n const [mediaVotes, setMediaVotes] = useState(0);\n\n useEffect(() => {\n async function get() {\n setIsFetching(true);\n try {\n const {\n payload: { rank, votes }\n } = await getUgcMediaVoteAndRankingInfo(contestPromoId, mediaLibraryUUID);\n setMediaRank(rank);\n setMediaVotes(votes);\n } catch (err) {\n errHandler({ err });\n } finally {\n setIsFetching(false);\n }\n }\n if (isVoteStart) {\n get();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isVoteStart]);\n\n return (\n
\n {isVoteStart ? (\n <>\n \n {isFetching ? (\n \n ) : (\n `${i18n.t('label.contest_ugc.vote.rank')}${mediaRank}`\n )}\n \n \n {isFetching ? (\n \n ) : (\n `${i18n.t('label.contest_ugc.vote.count')}${mediaVotes}`\n )}\n \n \n ) : (\n \n {i18n.t('label.contest_ugc.vote.not_yet_start')}\n \n )}\n
\n );\n}\n\nconst containerStyle = css`\n display: flex;\n align-items: center;\n padding: 16px;\n font-size: 16px;\n & * {\n font-size: inherit;\n color: inherit;\n }\n`;\n\nconst rankStyle = ({ buttonLabelColor, buttonColor }) =>\n css`\n color: ${buttonLabelColor};\n background-color: ${buttonColor};\n margin-right: 16px;\n padding: 8px;\n border-radius: 4px;\n `;\n\nconst voteCountStyle = ({ buttonColor }) =>\n css`\n color: ${buttonColor};\n `;\n\nconst notStartHintStyle = css`\n color: #757575;\n`;\n","import React from 'react';\nimport { css } from '@emotion/core';\nimport PropTypes from 'prop-types';\nimport Typography from '@material-ui/core/Typography';\nimport Skeleton from '@material-ui/lab/Skeleton';\nimport { stylePropType } from 'utils/propTypes';\n\nconst ResultPromoTitle = ({ title, isLoading, style }) => {\n return (\n
\n \n {isLoading ? : title}\n \n
\n );\n};\n\nexport default ResultPromoTitle;\n\nResultPromoTitle.propTypes = {\n title: PropTypes.string.isRequired,\n isLoading: PropTypes.bool,\n style: stylePropType\n};\n\nconst titleContainerStyle = css`\n padding-bottom: 8px;\n > * {\n color: inherit;\n }\n`;\n","import React from 'react';\nimport Badge from '@material-ui/core/Badge';\nimport { css } from '@emotion/core';\nimport { promo500, system100 } from 'Mui/styles/color';\nimport { Tooltip } from '@material-ui/core';\nimport { adjustColorAlpha } from 'utils/colorConvert';\n\nconst BUTTON_VARIANT = {\n CONTAINED: 'contained',\n OUTLINED: 'outlined'\n};\n\n/**\n * @method FeverBadgeButton - 帶有 Icon 與數量 的按鈕\n * @param {Object} props\n * @param {String} props.Icon - 圖示 ( 優先級大於圖片 URL )\n * @param {String} props.imageUrl - 按鈕圖示的圖片連結\n * @param {Number} props.size - 按鈕大小 ( 單位:px )\n * @param {Number} props.number - 按鈕訊息數\n * @param {Number} props.maxNumber - 按鈕訊息數最大值 ( Ex. 設定 999 ,超過則會顯示 999+ )\n * @param {Object} props.numberStyle - 按鈕訊息數樣式\n * @param {String} props.numberStyle.color - 按鈕訊息數文字顏色\n * @param {String} props.numberStyle.bgColor - 按鈕訊息數背景顏色\n * @param {Object} props.buttonSyle - 按鈕顏色樣式\n * @param {String} props.buttonSyle.color - 按鈕文字顏色\n * @param {String} props.buttonSyle.icon - 按鈕圖示顏色\n * @param {String} props.buttonSyle.bgColor - 按鈕背景顏色\n * @param {Boolean} props.showNumber - 是否顯示訊息數\n * @param {Boolean} props.showZero - 是否顯示 0\n * @param {String} props.variant - 按鈕模式 ( contained - 填滿 , outlined - 框線 )\n * @param {String} props.toolTip - 按鈕 hover tooltip\n * @param {Boolean} props.disabled - 禁用\n * @param {String} props.onClick - 點擊事件\n * @returns {JSX.Element}\n */\n\nexport default function FeverBadgeButton({\n Icon,\n imageUrl = '',\n size = 48,\n number = 0,\n maxNumber = 999,\n numberStyle = {\n color: '#fff',\n bgColor: promo500.color\n },\n buttonSyle = {\n background: adjustColorAlpha(promo500.color, 0.16),\n hoverBackground: adjustColorAlpha(promo500.color, 0.3),\n icon: promo500.color,\n border: ''\n },\n showNumber = true,\n showZero = false,\n variant = BUTTON_VARIANT.CONTAINED,\n toolTip = '',\n disabled = false,\n onClick = () => {}\n}) {\n return (\n {\n if (!disabled) onClick();\n }}\n >\n \n \n
\n {Icon && }\n {!Icon && imageUrl && (\n \n )}\n
\n \n
\n
\n );\n}\n\nconst iconStyle = ({ size, icon }) => css`\n color: ${icon};\n width: ${size / 2}px;\n height: ${size / 2}px;\n`;\n\nconst iconContainerStyle = ({\n size,\n background,\n border,\n hoverBackground,\n variant,\n disabled\n}) => css`\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n width: ${size}px;\n height: ${size}px;\n ${variant === BUTTON_VARIANT.CONTAINED && disabled\n ? `background-color: ${system100.color}`\n : `background-color: ${background}`};\n ${variant === BUTTON_VARIANT.CONTAINED &&\n !disabled &&\n `&:hover {background-color: ${\n Boolean(hoverBackground) ? hoverBackground : adjustColorAlpha(background, 0.5)\n }}`};\n ${variant === BUTTON_VARIANT.OUTLINED && `border: solid 2px ${border};`}\n`;\n\nconst containerStyle = disabled => css`\n ${disabled ? 'cursor:not-allowed;' : 'cursor:pointer;'}\n & > * {\n margin: 8px;\n }\n`;\n\nconst numberContainerStyle = ({ color, bgColor }) => css`\n .MuiBadge-badge {\n color: ${color};\n background-color: ${bgColor};\n line-height: unset;\n letter-spacing: normal;\n }\n`;\n","import React, { useImperativeHandle } from 'react';\nimport { useSelector, useDispatch } from 'react-redux';\nimport { css } from '@emotion/core';\nimport i18n from 'i18next';\n\nimport { below } from 'utils/breakpoint';\nimport { isSmallPromoWidth } from 'config/promoGameTypes';\nimport { scrollPromoBodyIntoView } from 'client/utils/scroll';\nimport { togglePrizeList } from 'client/redux/modules/flags';\nimport { IS_IFRAME_MODE, IFRAME_MODE_MIN_HEIGHT } from 'config/envVariable';\nimport { postHeightMessage } from 'client/hooks/useHeightResizePostMessage';\n\nimport { useIsModuleNeedVerify } from 'client/hooks/moduleVerifyUtilHooks';\nimport RedeemIcon from '@material-ui/icons/Redeem';\nimport PopupWithFixHeader from 'client/components/PopupWithFixHeader';\nimport PrizeList from 'client/components/Result/prizeList/PrizeList';\nimport FeverBadgeButton from 'components/Button/FeverBadgeButton';\n\nfunction ViewPrizeListButton({ btnStyle, isLoading, onToPrize = () => {} }, ref) {\n const dispatch = useDispatch();\n const isModuleNeedVerify = useIsModuleNeedVerify();\n const { type: gameType } = useSelector(s => s.promo);\n const isPrizeListOpen = useSelector(s => s.flags.isPrizeListOpen);\n const { isMgmShare, isMgmSelf } = useSelector(s => s.flags);\n const { userGameResultRecords: mgmUserGameResultRecords = [] } = useSelector(\n s => s.mgmReferral\n );\n const userGameResultRecords = useSelector(s => s.userGameResultRecords);\n const entryIdMappingGameRecords = getEntryIdMappingGameRecordsSelector(userGameResultRecords);\n const entryIdMappingMGMGameRecords = getEntryIdMappingGameRecordsSelector(\n mgmUserGameResultRecords\n );\n\n const { winnerPrizes = [] } = useSelector(s => s.userWinnerPrize);\n const { userWinnerPrize: { winnerPrizes: mgmWinnerPrize = [] } = {} } = useSelector(\n s => s.mgmReferral\n );\n const currentWinnerPrize = Boolean(isMgmShare)\n ? mgmWinnerPrize\n : Boolean(isMgmSelf)\n ? [...mgmWinnerPrize, ...winnerPrizes]\n : winnerPrizes;\n\n const validWinnerList = currentWinnerPrize.filter(w => {\n const recordOfWinner = entryIdMappingGameRecords[w.entryId];\n const mgmRecordOfWinner = entryIdMappingMGMGameRecords[w.entryId];\n if (mgmRecordOfWinner) {\n if (mgmRecordOfWinner?.deletedAt) {\n return false;\n } else {\n return true;\n }\n } else {\n if (recordOfWinner?.deletedAt) {\n return false;\n } else if (isModuleNeedVerify && !recordOfWinner?.flow?.qualified) {\n return false;\n } else {\n return true;\n }\n }\n });\n\n const winnerLength = validWinnerList.length;\n\n function showPrizeList() {\n dispatch(togglePrizeList(true));\n }\n function closePrizeList() {\n dispatch(togglePrizeList(false));\n }\n function handleToPrize({ prizeUUID, entriesUUID }) {\n scrollPromoBodyIntoView();\n onToPrize({ prizeUUID, entriesUUID });\n }\n function handleEffectEntered() {\n if (IS_IFRAME_MODE) {\n const targetElement = document.getElementById('promo-prize-list');\n if (targetElement) {\n const height = targetElement.clientHeight;\n postHeightMessage(Math.max(height, IFRAME_MODE_MIN_HEIGHT));\n }\n }\n }\n function handleEffectExited() {\n if (IS_IFRAME_MODE) {\n const targetElement = document.getElementById('promo-client-body');\n if (targetElement) {\n const height = targetElement.clientHeight;\n postHeightMessage(Math.max(height, IFRAME_MODE_MIN_HEIGHT));\n }\n }\n }\n\n useImperativeHandle(ref, () => ({\n getWinnerPrizeCount: () => winnerLength\n }));\n\n if (winnerLength === 0) {\n return null;\n }\n\n const handleShowPrize = () => {\n const [{ entryUuid: entriesUUID, prize: { uuid: prizeUUID } = {} }] = validWinnerList;\n handleToPrize({ prizeUUID, entriesUUID });\n };\n\n return (\n <>\n
\n \n
\n \n \n handleToPrize({ prizeUUID, entriesUUID })\n }\n />\n \n \n );\n}\n\nexport default React.forwardRef(ViewPrizeListButton);\n\nconst getEntryIdMappingGameRecordsSelector = userGameResultRecords =>\n userGameResultRecords.reduce((obj, record) => {\n obj[record.id] = record;\n return obj;\n }, {});\n\nconst btnContainerStyle = css`\n margin: 16px 0;\n padding: 0 4px;\n ${below('sm')} {\n margin: 8px 0;\n }\n`;\n","import i18n from 'i18next';\nimport { isLotteryHasAnimation, lotteryParticipantTypes } from 'config/promoLotteryTypes';\n\nfunction getWinnerLabelAndBtnTextGenerator({ lotteryType }) {\n if (lotteryType === lotteryParticipantTypes.PICK_THE_PRIZE) {\n return {\n header: count =>\n i18n.t('label.open_winner.pick_prize', {\n count\n }),\n btn: () => i18n.t('btn.open_winner.client_pick')\n };\n } else if (isLotteryHasAnimation(lotteryType)) {\n return {\n header: count =>\n i18n.t('label.open_winner.pure_prize', {\n count\n }),\n btn: () => i18n.t('btn.open_winner.pure_prize')\n };\n } else {\n return {\n header: count =>\n i18n.t('label.open_winner.prize', {\n count\n }),\n btn: () => i18n.t('label.get_prize')\n };\n }\n}\n\nexport default getWinnerLabelAndBtnTextGenerator;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport i18n from 'i18next';\nimport { css } from '@emotion/core';\nimport Typography from '@material-ui/core/Typography';\n\nimport { entryVerifyStatus } from 'config/entryVerifyStatus';\nimport { error, system600 } from 'Mui/styles/color';\n\nfunction VerifyStatusLabel({\n status = entryVerifyStatus.ENTRY_VERIFY_PASSED,\n style = {},\n dense = false\n}) {\n const isWait = status === entryVerifyStatus.WAITING;\n const isNotPass = status === entryVerifyStatus.NOT_PASS;\n\n if (status === entryVerifyStatus.ENTRY_VERIFY_PASSED) return;\n\n return (\n \n \n {isWait && i18n.t('label.wait_for_verify')}\n {isNotPass && i18n.t('label.not_passed')}\n \n \n );\n}\n\nVerifyStatusLabel.propTypes = {\n status: PropTypes.number\n};\n\nexport default VerifyStatusLabel;\n\nconst statusStyle = css`\n min-width: 72px;\n background-color: ${system600.color};\n border-radius: 4px;\n color: #fff;\n user-select: none;\n text-align: center;\n > * {\n color: inherit;\n }\n`;\n\nconst paddingStyle = dense => css`\n padding: ${dense ? '4px' : '6px 12px'};\n`;\n\nconst waitStyle = css`\n background-color: ${system600.color};\n`;\n\nconst warningStyle = css`\n background-color: ${error.color};\n`;\n","import { isCanSetVerifyMechanismGames, isForceVerifyMechanismGames } from 'config/promoGameTypes';\nimport { useSelector } from 'react-redux';\nimport { parseJSON_ifParsable } from 'utils/objectManipulate';\n\nexport function useIsModuleNeedVerify() {\n const gameType = useSelector(s => s.promo.type);\n const { enableVerifyMechanism } = useSelector(s => s.settingPromo);\n return (\n isForceVerifyMechanismGames(gameType) ||\n (isCanSetVerifyMechanismGames(gameType) && Boolean(enableVerifyMechanism))\n );\n}\n\nexport function useIsVerifyModuleCanGetParticipantWinner() {\n const gameType = useSelector(s => s.promo.type);\n const { enableVerifyMechanism } = useSelector(s => s.settingPromo);\n const currentEntryUUID = useSelector(s => s.userEntryState.currentEntryUUID);\n const lotteryParticipant = useSelector(s => s.lotteryParticipant);\n const lotteryInstant = useSelector(s => s.lotteryInstant);\n const isNeedVerifyModule =\n isForceVerifyMechanismGames(gameType) ||\n (isCanSetVerifyMechanismGames(gameType) && Boolean(enableVerifyMechanism));\n\n const canGetWinner = userGameResultRecords => {\n const currentGameResult =\n userGameResultRecords.find(r => r.uuid === currentEntryUUID) ?? {};\n const gameResultString = currentGameResult?.gameResult;\n\n const parseGameResult = parseJSON_ifParsable(gameResultString);\n\n const isMemoryGame = parseGameResult?.status !== undefined;\n const isMemoryGameChallengeFail = parseGameResult?.status === 0;\n const isQuizGame = parseGameResult?.gameResult?.wrongTotal !== undefined;\n const isQuizGameChallengeFail = Number(parseGameResult?.gameResult?.wrongTotal) !== 0;\n const isGameChallengeFail =\n (isMemoryGame && isMemoryGameChallengeFail) || (isQuizGame && isQuizGameChallengeFail);\n if (Boolean(currentGameResult.deletedAt)) return false;\n //兩個獎項都開條件 但遊戲失敗 所以不能getWinner\n else if (\n Boolean(lotteryParticipant?.TasksSetting?.uuid) &&\n Boolean(lotteryInstant?.TasksSetting?.uuid) &&\n isGameChallengeFail\n )\n return false;\n //只開 Instant獎項 但遊戲失敗 所以不能getWinner\n else if (\n Boolean(lotteryInstant?.TasksSetting?.uuid) &&\n !Boolean(lotteryParticipant?.uuid) &&\n isGameChallengeFail\n )\n return false;\n //只開 Participant 獎項 但遊戲失敗 所以不能getWinner\n else if (\n Boolean(lotteryParticipant?.TasksSetting?.uuid) &&\n !Boolean(lotteryInstant?.uuid) &&\n isGameChallengeFail\n )\n return false;\n else {\n if (\n isForceVerifyMechanismGames(gameType) ||\n (isCanSetVerifyMechanismGames(gameType) && Boolean(enableVerifyMechanism))\n ) {\n const { flow: { qualified } = {} } = currentGameResult;\n return Boolean(qualified);\n } else return true;\n }\n };\n // 因為 redux 更新時間點與此 hook 屬於同個 event loop , 所以無法透過 redux 去取得最新的 userGameResultRecords\n return gameResultRecords => ({\n isNeedVerifyModule,\n canGetWinner: canGetWinner(gameResultRecords)\n });\n}\n","import { useSelector, useDispatch } from 'react-redux';\nimport { useHistory, useParams, useLocation } from 'react-router-dom';\n\nimport {\n lotteryAnimationPathMapping,\n lotteryOpenPathParams,\n lotteryParticipantTypes\n} from 'config/promoLotteryTypes';\nimport { isNoResultPageGames } from 'config/promoGameTypesClientConfig';\nimport { setAnimatingLotteries } from 'client/redux/modules/flags';\n\nexport const LOTTERY = 'lottery'; // params: lotteries?, prizeUUID, entriesUUID\nexport const PRIZE = 'prize'; // params: prizeUUID, entriesUUID\nexport const RESULT = 'result';\nexport const JOIN = 'join';\nexport const SIGNUP_FORM = 'form/signup';\nexport const REDEEM_FORM = 'form/redeem'; // params: formId, prizeUUID, entriesUUID\nexport const NOT_FOUND = '/notfound';\n\nexport default function useClientHistory() {\n const dispatch = useDispatch();\n const history = useHistory();\n const currentLocation = useLocation();\n const { promoUUID, promoId } = useParams();\n const { type: gameType } = useSelector(s => s.promo);\n\n function generatePath(\n pathType,\n { animatingLottery, prizeUUID, entriesUUID, formId } = {},\n location\n ) {\n const { search, hash } = location || window.location;\n let path = pathType;\n\n switch (pathType) {\n case LOTTERY: {\n if (animatingLottery) {\n dispatch(setAnimatingLotteries(animatingLottery));\n }\n if (animatingLottery.type === lotteryParticipantTypes.PICK_THE_PRIZE) {\n return getFullPath(\n path +\n `/${lotteryAnimationPathMapping[animatingLottery.type]}/${entriesUUID}`\n );\n } else {\n return getFullPath(\n path +\n `/${\n lotteryAnimationPathMapping[animatingLottery.type] ||\n lotteryOpenPathParams.GENERAL\n }/${prizeUUID}/${entriesUUID}`\n );\n }\n }\n case PRIZE:\n return getFullPath(path + `/${prizeUUID}/${entriesUUID}`);\n case REDEEM_FORM:\n return getFullPath(path + `/${formId}/${prizeUUID}/${entriesUUID}`);\n case RESULT:\n return getFullPath(isNoResultPageGames(gameType) ? JOIN : RESULT);\n default:\n return getFullPath(path);\n }\n\n function getFullPath(p) {\n return (p[0] === '/' ? p : `/${promoUUID}/${promoId}/${p}`) + `${search}${hash}`;\n }\n }\n function getRouteTransitionClassname(targetPath) {\n const currentPath = currentLocation.pathname;\n switch (true) {\n case targetPath === JOIN:\n case targetPath === RESULT && currentPath.includes(PRIZE):\n case targetPath === RESULT && currentPath.includes(SIGNUP_FORM):\n case targetPath === PRIZE && currentPath.includes(REDEEM_FORM):\n return 'fever-fade-prev';\n default:\n return 'fever-fade-next';\n }\n }\n function redirectPath(method, pathType, params, location) {\n const path = generatePath(pathType, params, location);\n const transition = getRouteTransitionClassname(pathType);\n history[method](path, { transition });\n }\n\n return {\n push: (pathType, params, location) => redirectPath('push', pathType, params, location),\n replace: (pathType, params, location) =>\n redirectPath('replace', pathType, params, location),\n originalPush: (...args) => history.push(...args),\n originalReplace: (...args) => history.replace(...args)\n };\n}\n","import { useState } from 'react';\n\nfunction useClientResultCollaspe(needCollapse, initialIndex = 0) {\n const [openTarget, setOpenTarget] = useState(initialIndex);\n if (!needCollapse) {\n return {};\n }\n return { openTarget, updateCollapse: setOpenTarget };\n}\n\nexport default useClientResultCollaspe;\n","import { useSelector } from 'react-redux';\n\nimport { gameRunningStatuses } from 'config/gameRunningStatuses';\nimport { isFulFilledEntries } from 'client/hooks/useInitPromo/userEntryState/entriesChecker';\n\nimport useHasReachPlayTimesLimit from 'client/hooks/useHasReachPlayTimesLimit';\n\nexport default function useGameActionEnableInfo() {\n const hasReachPlayTimesLimit = useHasReachPlayTimesLimit();\n const gameType = useSelector(s => s.promo.type);\n const {\n gameRunningStatus,\n periodPlayMatchedInfo: { matchedInfo: { match: isInPlayTimePeriod } = {} } = {}\n } = useSelector(s => s.promoState);\n const { notQualifiedType } = useSelector(s => s.userLoginState);\n const { hasUsablePasscode } = useSelector(s => s.promoState);\n const {\n hasGameResult,\n hasFilledSignupForm,\n hasInstantPrize,\n hasParticipantPrize,\n createEntryNotQualifiedType,\n isNeedReducePoint,\n isNeedEnterPasscode\n } = useSelector(s => s.userEntryState);\n const { playOnce } = useSelector(s => s.settingGame);\n\n const isGameJoinableOnTime =\n gameRunningStatus === gameRunningStatuses.RUNNING && isInPlayTimePeriod;\n const isUserInputReady = !isNeedReducePoint && (!isNeedEnterPasscode || hasUsablePasscode);\n const isQualifiedToPlayGame =\n isGameJoinableOnTime && !createEntryNotQualifiedType && !notQualifiedType;\n const shouldAutoRedirectGameStage = isQualifiedToPlayGame;\n const isQualifiedToGetWinner = isGameJoinableOnTime && !notQualifiedType;\n const canFillSignupform = isGameJoinableOnTime && hasGameResult && !hasFilledSignupForm;\n const canGetNewEntry = (() => {\n const isCurrentEntryFulfill = isFulFilledEntries(gameType, {\n hasGameResult,\n hasFilledSignupForm,\n hasInstantPrize,\n hasParticipantPrize\n });\n return isQualifiedToPlayGame && !hasReachPlayTimesLimit && isCurrentEntryFulfill;\n })();\n const canBackToJoinGamePage = isQualifiedToPlayGame && !hasGameResult;\n const canReplayCurrentEntry = isQualifiedToPlayGame && !playOnce;\n\n return {\n shouldAutoRedirectGameStage,\n isGameJoinableOnTime,\n isUserInputReady,\n isQualifiedToPlayGame,\n isQualifiedToGetWinner,\n canFillSignupform,\n canGetNewEntry,\n canBackToJoinGamePage,\n canReplayCurrentEntry\n };\n}\n","import { useMemo, useCallback } from 'react';\nimport { useSelector } from 'react-redux';\nimport { parseJSON_ifParsable } from 'utils/objectManipulate';\nimport { gameTypes } from 'config/promoGameTypes';\n\n// 控制有開設定全對的獎品\nconst usePrizeRuleChecker = ({ entryUuid } = {}) => {\n /* 給獎優化: 能夠領取獎品邏輯\n * 1. 翻牌遊戲,全對才能領取獎品(有開全對設定) + 有資格領取獎品\n * 2. 翻牌遊戲,全對/沒全對才能領取獎品(沒開全對設定) + 有資格領取獎品\n * 3. 問答遊戲,全對才能領取獎品\n * 4. 問答遊戲,全對才能領取獎品\n */\n\n const {\n lotteryParticipant = {},\n lotteryInstant = {},\n userGameResultRecords,\n promo\n } = useSelector(s => ({\n lotteryParticipant: s.lotteryParticipant,\n lotteryInstant: s.lotteryInstant,\n userGameResultRecords: s.userGameResultRecords,\n promo: s.promo\n }));\n\n const currentEntryRecord = userGameResultRecords.find(r => r.uuid === entryUuid);\n\n const currentGameResult = useMemo(() => {\n if (userGameResultRecords.length <= 0) return {};\n return currentEntryRecord ? parseJSON_ifParsable(currentEntryRecord?.gameResult) : {};\n }, [currentEntryRecord, userGameResultRecords.length]);\n\n const isLotteryParticipantRequiredAllCorrect = !!lotteryParticipant?.TasksSetting?.uuid;\n const isLotteryInstantRequiredAllCorrect = !!lotteryInstant?.TasksSetting?.uuid;\n\n // 確認是否動畫獎已配獎給此 entry\n const checkIsUserHaveClaimedParticipantPrize = entryRecord => {\n return Boolean(entryRecord?.flow?.lotteryParticipant);\n };\n // 確認是否即時獎已配獎給此 entry\n const checkIsUserHaveClaimedInstantPrize = entryRecord => {\n return Boolean(entryRecord?.flow?.lotteryInstant);\n };\n\n const checkIsGameChallengeAllCorrect = useCallback(({ type, gameResult = {} }) => {\n switch (type) {\n case gameTypes.QUIZ:\n // [#86ep582up]\n return gameResult?.wrongTotal !== undefined && Number(gameResult?.wrongTotal) === 0;\n case gameTypes.MEMORY_MATCH:\n // [#86ep582v1] 這邊的成功其實不是錯誤次數是0,而是挑戰成功(在秒數內、且沒超過翻錯次數)\n return gameResult?.status !== undefined && Number(gameResult?.status) === 1;\n default:\n return true;\n }\n }, []);\n\n // #86erkacx7: 針對全對才能給獎的活動,修正是否可以領獎的條件 (讓領獎按鈕在對的時機與條件顯示)\n const canClaimPrize = (isRequiredAllCorrect = false, isGameAllCorrect = false) => {\n return isRequiredAllCorrect ? isGameAllCorrect : true;\n };\n\n const isGameChallengeAllCorrect = useMemo(\n () => checkIsGameChallengeAllCorrect({ type: promo.type, gameResult: currentGameResult }),\n [checkIsGameChallengeAllCorrect, promo.type, currentGameResult]\n );\n\n return {\n isLotteryParticipantRequiredAllCorrect,\n isLotteryInstantRequiredAllCorrect,\n isGameChallengeAllCorrect,\n checkIsUserHaveClaimedParticipantPrize,\n checkIsUserHaveClaimedInstantPrize,\n checkIsGameChallengeAllCorrect,\n canClaimPrize\n };\n};\n\nexport default usePrizeRuleChecker;\n","import { useMemo } from 'react';\n\nimport { adjustColorAlpha } from 'utils/colorConvert';\nimport { getForegroundColor, addHoverStyle, addOutlineBtnHoverStyle } from 'styles/common';\n\nexport default function useSystemBtnStyleByTheme(themeStyle = {}) {\n const [\n primaryBtnStyle,\n primaryOutlinedBtnStyle,\n secondaryBtnStyle,\n secondaryOutlinedBtnStyle,\n viewPrizeListBtnStyle\n ] = useMemo(\n () => [\n addHoverStyle({\n backgroundColor: themeStyle.btnColor,\n color: getForegroundColor(themeStyle.btnColor),\n '& *': {\n color: 'inherit'\n }\n }),\n addOutlineBtnHoverStyle(themeStyle.btnColor),\n {\n backgroundColor: adjustColorAlpha(themeStyle.btnColor, 0.16),\n border: 'none',\n color: themeStyle.btnColor,\n '& *': {\n color: 'inherit'\n },\n '&:hover': {\n border: 'none',\n backgroundColor: adjustColorAlpha(themeStyle.btnColor, 0.3)\n }\n },\n {\n backgroundColor: adjustColorAlpha(themeStyle.btnColor, 0.16),\n border: `1px solid`,\n color: themeStyle.btnColor,\n '& *': {\n color: 'inherit'\n },\n '&:hover': {\n backgroundColor: adjustColorAlpha(themeStyle.btnColor, 0.3)\n }\n },\n {\n buttonSyle: {\n icon: themeStyle.btnColor,\n background: adjustColorAlpha(themeStyle.btnColor, 0.16),\n hoverBackground: adjustColorAlpha(themeStyle.btnColor, 0.3)\n },\n numberStyle: {\n color: getForegroundColor(themeStyle.btnColor),\n bgColor: themeStyle.btnColor\n }\n }\n ],\n [themeStyle]\n );\n return {\n primaryBtnStyle,\n primaryOutlinedBtnStyle,\n secondaryBtnStyle,\n secondaryOutlinedBtnStyle,\n viewPrizeListBtnStyle\n };\n}\n","import querystring from 'query-string';\n\nimport { IMG_PROXY_PATH } from 'config/envVariable';\n\nexport function convertProxyImgUrl({ url, width, height, resizeWidth, resizeHeight }) {\n const { url: pureUrl, query } = querystring.parseUrl(url);\n const { bucket, fileName } = desctureS3URL(pureUrl);\n if (bucket === 'assets.fevercdn.com' && fileName) {\n return getProxyImgUrl({\n bucket,\n fileName,\n width,\n height,\n resizeWidth,\n resizeHeight,\n additionalQueryObj: query\n });\n }\n return url;\n}\n\nexport function getProxyImgUrl({\n fileName,\n bucket,\n width = '',\n height = '',\n resizeWidth = '',\n resizeHeight = '',\n additionalQueryObj = {}\n}) {\n const qsObj = { ...additionalQueryObj, filepath: fileName, bucket };\n if (width || height) {\n qsObj.crop = `${width}x${height}`;\n }\n if (resizeWidth || resizeHeight) {\n qsObj.resize = `${resizeWidth}x${resizeHeight}`;\n }\n const qs = querystring.stringify(qsObj);\n return `${IMG_PROXY_PATH}?${qs}`;\n}\n\nfunction desctureS3URL(url) {\n try {\n // eslint-disable-next-line no-useless-escape\n const result = url.match(/https:\\/\\/?([^\\/]*)\\/(.*)/);\n if (result) {\n const [, bucket = '', fileName = ''] = result;\n return { bucket, fileName };\n }\n return {};\n } catch (error) {\n return {};\n }\n}\n","import React from 'react';\nimport { css } from '@emotion/core';\n\nexport default function AsceptRatioContainer({\n backgroundImageUrl,\n aspectRatio = 1 / 1,\n maxWidth = 960,\n customStyles,\n children\n}) {\n return (\n
\n
\n
{children}
\n
\n
\n );\n}\n\nconst getRootCotainerStyle = (maxWidth, backgroundImageUrl) => css`\n width: 100%;\n max-width: ${maxWidth}px;\n ${Boolean(backgroundImageUrl) &&\n `background-image: url(${backgroundImageUrl});\n background-repeat: no-repeat;\n background-position: center center;\n background-size: cover;`}\n &:hover .upload-bg-btn {\n display: block;\n }\n`;\n\nconst getAsceptRatioContainerStyle = aspectRatio => css`\n width: 100%;\n padding-top: ${aspectRatio * 100}%; /* Aspect Ratio */\n position: relative;\n`;\n\nconst childrenContainerStyle = css`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n width: 100%;\n height: 100%;\n`;\n","import React from 'react';\nimport { css } from '@emotion/core';\n\nexport default function RatioContainerStyle({\n style,\n ratio = 1,\n enableOuterContainer = true,\n children,\n frameHeight\n}) {\n const styles = Array.isArray(style) ? style.map(s => css(s)) : [css(style)];\n\n const content = (\n
\n {children}\n
\n );\n if (enableOuterContainer) {\n return (\n
\n
{content}
\n
\n );\n } else {\n return
{content}
;\n }\n}\n\nconst containerStyle = css`\n width: 100%;\n`;\n\nconst ratioWrapperStyle = ratio => css`\n padding-top: ${100 / ratio}%;\n position: relative;\n`;\n\nconst contentWrapperStyle = frameHeight => css`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: ${frameHeight ? `${frameHeight}px` : '100%'};\n`;\n","// 0: 等待審核\n// 1: 通過\n// 2: 未通過\nconst ENTRY_VERIFY_WAITING = 0;\nconst ENTRY_VERIFY_PASSED = 1;\nconst ENTRY_VERIFY_NOT_PASS = 2;\n\nexport const entryVerifyStatus = {\n WAITING: ENTRY_VERIFY_WAITING,\n PASSED: ENTRY_VERIFY_PASSED,\n NOT_PASS: ENTRY_VERIFY_NOT_PASS\n};\n\n// 假設 deletedAt 為 null 的話代表該紀錄沒有被刪除 (未通過),反之則未通過\n// 若 deletedAt 為 null 且 qualified 沒有日期 (undefined) 則表示待審核,反之代表通過\nexport const getEntryVerifyStatus = ({ deletedAt = null, qualified = true } = {}) =>\n deletedAt === null\n ? Boolean(qualified)\n ? entryVerifyStatus.PASSED\n : entryVerifyStatus.WAITING\n : entryVerifyStatus.NOT_PASS;\n","/**\n * 依照類型建立 section\n * textbox === Froala 編輯器\n * - 101: 姓名\n * - 102: 電子信箱\n * - 103: 手機號碼\n * - 104: 其他加密個資\n * - 201: 單行文字\n * - 202: 多行文字\n * - 203: 網址\n * - 204: 發票模組 - 發票號碼\n * - 205: 發票模組 - 收據號碼\n * - 206: 發票模組 - 隨機碼\n * - 301: 文字選擇題\n * - 302: 圖片選擇題\n * - 303: 單層下拉式選單\n * - 304: 雙層下拉式選單\n * - 305: 文字選擇題 + textbox\n * - 306: 圖片選擇題 + textbox\n * - 307: 是非題 + textbox\n * - 308: 影片選擇題\n * - 311: 等級評分\n * - 401: 日期 (僅年月日)\n * - 501: 視覺介面 (純文字區塊、按鈕)\n * - 502: 內容區塊 textbox\n * - 600: 同意條款\n * - 601: 發票模組 - 收據輸入類型\n * - 602: 檔案上傳\n * - 701: 結果區塊\n * - 801: 問答小學堂 - 答題數據承載\n */\n\nexport const ENCRYPT_NAME_SECTION = 101;\nexport const ENCRYPT_EMAIL_SECTION = 102;\nexport const ENCRYPT_PHONE_NUM_SECTION = 103;\nexport const ENCRYPT_SECTION = 104;\nexport const INPUT_SINGLE_LINE_SECTION = 201;\nexport const INPUT_MULTI_LINE_SECTION = 202;\nexport const INPUT_HREF_SECTION = 203;\nexport const INPUT_INVOICE_NUMBER = 204;\nexport const INPUT_RECEIPT_NUMBER = 205;\nexport const INPUT_INVOICE_RANDOM_NUMBER = 206;\nexport const TEXT_CHOICE_SECTION = 301;\nexport const IMG_CHOICE_SECTION = 302;\nexport const SINGLE_DROPDOWN_SECTION = 303;\nexport const DOUBLE_DROPDOWN_SECTION = 304;\nexport const TEXT_CHOICE_TEXTBOX_SECTION = 305;\nexport const IMG_CHOICE_TEXTBOX_SECTION = 306;\nexport const BOOL_CHOICE_TEXTBOX_SECTION = 307;\nexport const VIDEO_CHOICE_SECTION = 308;\nexport const RATING_SECTION = 311;\nexport const DATE_PICKER_SECTION = 401;\nexport const CONTENT_SECTION = 502;\nexport const TERMS_SECTION = 600;\nexport const FILE_UPLOAD_SECTION = 602;\nexport const RESULT_SECTION = 701;\nexport const QUIZ_RESULT_SECTION = 801;\n\nconst textInputTypes = [\n ENCRYPT_NAME_SECTION,\n ENCRYPT_EMAIL_SECTION,\n ENCRYPT_PHONE_NUM_SECTION,\n ENCRYPT_SECTION,\n INPUT_SINGLE_LINE_SECTION,\n INPUT_MULTI_LINE_SECTION,\n INPUT_HREF_SECTION,\n INPUT_RECEIPT_NUMBER,\n INPUT_INVOICE_RANDOM_NUMBER\n];\nexport const isTextInputType = type => textInputTypes.includes(type);\n\nexport const mobileInputMode = {\n [ENCRYPT_EMAIL_SECTION]: 'email',\n [ENCRYPT_PHONE_NUM_SECTION]: 'tel'\n};\n","import { isMobile } from 'react-device-detect';\n\nimport {\n CONTENT_SECTION,\n INPUT_RECEIPT_NUMBER,\n INPUT_INVOICE_NUMBER,\n DATE_PICKER_SECTION,\n INPUT_INVOICE_RANDOM_NUMBER,\n FILE_UPLOAD_SECTION\n} from 'config/formBasedSectionTypes';\n\nexport const einvoiceTypes = {\n EINVOICE: 1,\n EINVOICE_CARRIERS: 4,\n EINVOICE_QR_CODE_SCAN: 5\n};\n\nexport const invoiceTypes = {\n INVOICE: 2,\n RECEIPT: 3,\n ...einvoiceTypes\n};\n\nexport const sectionsOfInvoiceByType = {\n [invoiceTypes.EINVOICE]: new Set([\n CONTENT_SECTION,\n INPUT_INVOICE_NUMBER,\n DATE_PICKER_SECTION,\n INPUT_INVOICE_RANDOM_NUMBER\n ]),\n [invoiceTypes.EINVOICE_CARRIERS]: new Set([\n CONTENT_SECTION,\n INPUT_INVOICE_NUMBER,\n DATE_PICKER_SECTION\n ]),\n [invoiceTypes.INVOICE]: new Set([\n CONTENT_SECTION,\n INPUT_INVOICE_NUMBER,\n DATE_PICKER_SECTION,\n FILE_UPLOAD_SECTION\n ]),\n [invoiceTypes.RECEIPT]: new Set([\n CONTENT_SECTION,\n INPUT_RECEIPT_NUMBER,\n DATE_PICKER_SECTION,\n FILE_UPLOAD_SECTION\n ])\n};\n\nexport const customFieldIds = {\n INVOICE_CARRIER_NUM: 'INVOICE_CARRIER_NUM',\n INVOICE_CARRIER_PASS: 'INVOICE_CARRIER_PASS'\n};\n\nexport function convertInvocieTypeWhenCallAPI(type) {\n const m = {\n [invoiceTypes.EINVOICE_QR_CODE_SCAN]: invoiceTypes.EINVOICE\n };\n\n return m[type] ?? type;\n}\n\n// Ticket: https://app.clickup.com/t/3d8a7cb\nexport function convertInvoiceDefaultType(type) {\n const m = {\n [invoiceTypes.EINVOICE]: () =>\n isMobile ? invoiceTypes.EINVOICE_QR_CODE_SCAN : invoiceTypes.EINVOICE\n };\n\n return typeof m[type] === 'function' ? m[type]() : type;\n}\n","import { isMobile } from 'react-device-detect';\n\n// 資料送給後端會轉換成 type 跟 subtype\nexport const receiptTypes = {\n EINVOICE: 0, // 電子發票\n INVOICE: 1, // 傳統發票\n RECEIPT: 2, // 一般紙本收據\n E_COMMERCE_ORDER_RECEIPT: 3 // 電商訂單收據\n};\n\nexport const receiptSubTypes = {\n MANUALLY: 0, // 手動輸入\n QR_CODE_SCAN: 1, // QR Code 掃描\n CARRIER: 2 // 雲端載具\n};\n\nexport const currencyTypes = {\n NTD: 0, // 新台幣\n UST: 1 // 美金\n};\n\n// 流程送出所使用的 key\nexport const payloadKey = {\n receiptDate: 'receiptDate',\n receiptNumber: 'receiptNumber',\n receiptRandomNumber: 'receiptRandomNumber',\n imageUrl: 'imageUrl',\n carrierNumber: 'carrierNumber',\n carrierCode: 'carrierCode',\n type: 'type',\n subType: 'subtype',\n agreeTerm: 'agreeTerm'\n};\n\nexport const inputValidation = (key = '', inputValue) => {\n switch (key) {\n case 'invoiceNumber':\n return inputValue.length === 0\n ? 'label.validate.is_required'\n : inputValue.length === 10\n ? ''\n : 'label.validate.format_wrong';\n case payloadKey.imageUrl:\n // 上傳圖片 FieldUploadReceiptImg 元件內沒有走這邊,送出前檢查才會走這邊\n return Boolean(inputValue) ? '' : 'label.validate.is_required';\n case payloadKey.receiptNumber:\n return inputValue.length === 0 ? 'label.validate.is_required' : '';\n case payloadKey.receiptDate:\n // Invalid Date (object) : 套件返回\n // Ibvalid Date (string) : 邏輯判斷\n // 'YYYY-MM-DD' : 套件返回正確時間\n // null : 空\n return !Boolean(inputValue)\n ? 'label.validate.is_required'\n : typeof inputValue !== 'string' || inputValue === 'Invalid Date'\n ? 'label.validate.invalid_date_format'\n : '';\n case payloadKey.receiptRandomNumber:\n return inputValue.length === 0\n ? 'label.validate.is_required'\n : inputValue.length !== 4\n ? 'label.validate.format_wrong'\n : '';\n case payloadKey.carrierNumber:\n return inputValue.length === 0 ? 'label.validate.is_required' : '';\n case payloadKey.carrierCode:\n return inputValue.length === 0 ? 'label.validate.is_required' : '';\n default:\n break;\n }\n};\n\nexport const defaultReceiptData = {\n receiptDate: { value: '', errorMessage: '' },\n receiptNumber: { value: '', errorMessage: '' },\n invoiceNumber: {\n value: '',\n errorMessage: '',\n alphabetPart: '',\n numericPart: ''\n },\n receiptRandomNumber: { value: '', errorMessage: '' },\n imageUrl: { value: '', errorMessage: '' },\n carrierNumber: { value: '', errorMessage: '' },\n carrierCode: { value: '', errorMessage: '' }\n};\n\n// 透過 Type 來判斷是否要將 invoiceNumber 轉換成 receiptNumber\nexport const convertNumberFromInvoiceToReceipt = [receiptTypes.EINVOICE, receiptTypes.INVOICE];\nexport const isNeedConvertNumber = receiptType => {\n return convertNumberFromInvoiceToReceipt.includes(receiptType);\n};\n\n// 資料 Submit 會依據這邊組出對應的欄位的資料\nexport const submitReceiptDataKey = {\n // 電子發票\n [receiptTypes.EINVOICE]: {\n // 手動輸入\n [receiptSubTypes.MANUALLY]: [\n payloadKey.receiptDate,\n payloadKey.receiptNumber,\n payloadKey.receiptRandomNumber\n ],\n // 載具輸入\n [receiptSubTypes.CARRIER]: [\n payloadKey.receiptDate,\n payloadKey.receiptNumber,\n payloadKey.carrierNumber,\n payloadKey.carrierCode\n ]\n },\n // 傳統發票\n [receiptTypes.INVOICE]: {\n // 手動輸入\n [receiptSubTypes.MANUALLY]: [\n payloadKey.receiptDate,\n payloadKey.receiptNumber,\n payloadKey.imageUrl\n ]\n },\n // 一般收據\n [receiptTypes.RECEIPT]: {\n // 手動輸入\n [receiptSubTypes.MANUALLY]: [\n payloadKey.receiptDate,\n payloadKey.receiptNumber,\n payloadKey.imageUrl\n ]\n }\n};\n\nexport const getReceiptDefaultSubType = receiptType => {\n const m = {\n [receiptTypes.EINVOICE]: () =>\n isMobile ? receiptSubTypes.QR_CODE_SCAN : receiptSubTypes.MANUALLY,\n [receiptTypes.INVOICE]: () => receiptSubTypes.MANUALLY,\n [receiptTypes.RECEIPT]: () => receiptSubTypes.MANUALLY\n };\n return typeof m[receiptType] === 'function' ? m[receiptType]() : receiptType;\n};\n"],"names":["_ref","content","placeholder","style","maxFontSize","minFontSize","lineHeight","rowLimit","inputRef","useRef","maxHeight","showPlaceholder","String","trim","useLayoutEffect","e","current","elem","$","css","concat","scrollHeight","___EmotionJSX","ref","_css","containerStyle","getCustomStyle","name","styles","_ref2","isSupportNativeLazylaod","HTMLImageElement","prototype","LazyLoadImg","src","alt","enableLazyLoad","restProps","imgRef","inView","useInView","triggerOnce","rootMargin","threshold","skip","canSetSrc","imgProps","props","loading","useEffect","classList","add","addEventListener","handleLoad","remove","removeEventListener","_extends","node","children","show","onEntered","onExited","Fade","in","modes","COMP","GLOBAL","PopupWithFixHeader","maxWidth","mode","title","onEffectEntered","onEffectExited","onClose","bindRef","useFixedPopupHeightResizePostMessage","isTrigger","ShowEffect","id","baseStyle","compPopupStyle","ScrollerFixedHeader","listContainerStyle","MuiDialog","disableAutoFocus","disableEnforceFocus","disableRestoreFocus","fullWidth","open","dialogStyle","text","onClick","btnStyle","disabled","isLoading","ButtonWithLoadingEffect","buttonStyle","variant","Typography","textStyle","titleStyle","React","div","headerStyle","buttonContainerStyle","DialogParticipantPrizeEmpty","desc","isOpen","onCloseHandler","Modal","modalStyle","closeAfterTransition","BackdropComponent","Backdrop","BackdropProps","timeout","event","reason","descriptionStyle","actionButtonContainerStyle","Button","i18n","t","system800","color","WinnerButton","lotteryType","async","isFetching","setIsFetching","useState","btn","getWinnerLabelAndBtnTextGenerator","ActionButton","OpenWinnerButton","_openWinnerList$","_openWinnerList$2","_pickWinnerList$","_pickWinnerList$2","onOpenWinner","openWinnerListChangeCallback","enableGetWinnerByApi","dispatch","useDispatch","history","useClientHistory","errHandler","useClientErrorHandler","isMgmShare","isMgmSelf","useSelector","s","flags","unOpenWinner","unOpenWinnerOfLotteryPickWinner","useCategorizedUnOpenWinner","unOpenMgmWinner","unOpenMgmWinnerOfLotteryPickWinner","isLotteryParticipantRequiredAllCorrect","isLotteryInstantRequiredAllCorrect","checkIsGameChallengeAllCorrect","canClaimPrize","usePrizeRuleChecker","uuid","promoUUID","type","gameType","promo","enableVerifyMechanism","settingPromo","gameRunningStatus","promoState","currentEntryUUID","userEntryState","userGameResultRecords","mgmUserGameResultRecords","mgmReferral","lotteryParticipant","lotteryInstant","mgmLotteryInstant","mgmLotteryParticipant","lotteryTasks","mgmLotteryTasks","mgmPromoUUID","mgmPromoType","mgmRelation","hasEnableLotteryParticipant","Boolean","hasEnableMgmLotteryParticipant","hasEnableLotteryInstant","hasEnableMgmLotteryInstant","hasEnableSignupForm","signUpForm","hasEnableLotteryTasks","Object","keys","length","hasEnableMgmLotteryTasks","isPurePrizeGame","isPurePrizeGames","isVerifyToGetWinnerGame","isForceVerifyMechanismGames","isCanSetVerifyMechanismGames","isPickWinnerLotteryParticipant","lotteryParticipantTypes","PICK_THE_PRIZE","openWinnerEmptyDialog","setOpenWinnerEmptyDialog","hasPendingVerifyEntry","getWinnerList","promoType","isMgmWinner","listGetInstantWinnerAndOpen","listGetParticipantWinnerAndOpen","listContinueParticipantPickWinner","listContinueTaskPickWinner","targetUserGameResultRecords","otherUserGameResultRecords","entryRecord","deletedAt","flow","gameResult","parseGameResult","isObject","JSON","parse","enableOpenWinnerParticipantLotteryPrize","enableOpenWinnerInstantLotteryPrize","qualifyStatus","qualified","entryQualifyStatus","PASS","PENDING","isDeleted","every","obj","hasFulfillSignupForm","formSignUp","hasGameResult","isEntryCanJoinLottery","hasFulfillLotteryParticipant","hasFulfillLotteryInstant","hasFulfillLotteryTask","lotteryTask","checkIfLotteryHasRemainPrize","push","handler","prizeUUID","getWinnerPrizeByLottery","entryUUID","lotteryUUID","updateUserEntryState","updateFlowOfMGMEntryRecord","updateFlowOfEntryRecord","key","entryFlowKeys","LOTTERY_INSTANT","setShouldUpdateUserWinnerList","successGetWinner","openWinner","err","handlers","RELOAD","checkIfPickWinnerLotteryHasRemainPrize","LOTTERY_PARTICIPANT","unOpenTaskPickWinnerPrize","find","w","entryUuid","undefined","prize","lotteryUuid","listOpenWinner","map","listOpenWinnerOfUnCompletePickWinner","gameRunningStatuses","RUNNING","lotteryGeneralAnimationType","toLotteryAnimation","animatingLottery","openWinnerList","pickWinnerList","mgmWinnerList","winnerList","_ref3","entriesUUID","_ref4","pureGameTypeMappingLotteryType","setCurrentPrizeUUID","setCurrentUnanimationEntriesUUID","setGameAlreadyToPlay","setAnimatingLotteries","animationSettings","AnimationSettings","JOIN","getAnimatingLottery","_ref5","isLotteryHasAnimation","payload","lotterySetting","getLotteryInfo","_ref6","checkIsQualifyToGetWinner","winnerResp","getWinner","httpStatus","isGetWinnerEmptySuspendError","suspendPromo","message","clientErrTypes","generateApiErrObj","lottery","arguments","remainder","prizeLimited","suspendWhenNoPrize","shouldShowButton","winnerListLength","useImperativeHandle","getOpenWinnerButtonData","updateParticipantRemainder","unOpenWinnerPrize","userWinnerPrize","mgmUnOpenWinnerPrize","currentUnOpenWinnerPrize","useMemo","validUnOpenWinner","filter","IconComponent","iconStyle","scrollPromoBodyIntoView","SignUpFormButton","themeStyle","buttonText","hint","ActionHeader","textColor","ResultInfoInvoice","result","validStatus","usePromoSettingThemeStyle","receiptType","receiptNumber","invoiceNumber","value","Number","invoiceTypes","EINVOICE","EINVOICE_CARRIERS","INVOICE","RECEIPT","wrapperStyle","toUpperCase","statusCtyle","entryVerifyStatus","PASSED","VerifyStatusLabel","status","Divider","dividerStyle","isExpand","isMultiple","serialNo","resultInfo","useHistoryPathPush","contestPromoId","promoTitle","usePrimaryPromoSelector","secondaryGameType","useSecondaryPromoSelector","isVideoTypeMedia","gameTypes","VIDEO_UPLOAD","filteredResultInfo","ri","_ri$mediaLibrary","mediaLibrary","media","_","ugcTypes","IMAGE","ArrowDropDownIcon","Collapse","r","_r$mediaLibrary$media","_r$mediaLibrary","shareUrl","qs","querystring","stringify","Date","now","window","location","origin","getPortfolioShareUrl","entryId","mediaWrapperStyle","voteId","mediaImgStyle","convertProxyImgUrl","url","resizeWidth","PlayCircleFilledWhiteIcon","playIconStyle","mediaInfoStyle","prefixChar","utcDTStr2LocalDTStr","voteCreatedAt","containedBtnStyle","pathname","toPortfolio","NativeShareWrapper","ShareDialogWrapper","onOpen","outlinedBtnStyle","startIcon","ShareIcon","functional","lightenDarkenColor","settings","isFixed","isResult","isSmallScreenApp","appState","colorBackGround","colorBorder","colorMask","colorText","showBackgroundUrlStyle","showBackgroundColorStyle","showTextStyle","noFixedTextStyle","FontScaleDiv","textAlign","backgroundColor","background","borderColor","resultCreatedAt","componentStyle","ugcAuthorName","mediaLibraryUuid","isContestUgcModule","useIsContestUgcModule","enableFixedAspectRatio","enableParticipantName","settingGame","settingOptions","gameState","SerialDateInfo","date","statusContainerStyle","toggleIconStyle","textContainerStyle","promotionOptionUuid","commentBgUUID","AsceptRatioContainer","aspectRatio","CommentSettings","UgcVoteInfo","mediaLibraryUUID","titleColor","contentBgColor","below","WAITING","isWait","isNotPass","NOT_PASS","isPass","basicStyle","waitStyle","warningStyle","passStyle","system600","error","verifyPass","ResultInfoList","receiptSubtype","upperCaseReceiptNumber","PURCHASE_REWARD","receiptTypes","receiptSubTypes","CARRIER","ORDER_REWARD","titleWrapperStyle","statusStyle","ResultValidStatus","items","isShowValidStatus","Comp","needCollapse","COMMENT","ResultComment","isContestGamesWithSecondaryUgc","ResultContest","isUgcGames","ResultUGC","getCustomResultByGameType","updateCollapse","openTarget","useClientResultCollaspe","item","index","gameResultCreatedAt","getEntryVerifyStatus","dayjs","format","isJSONParsable","data","CollapseWrapper","isCollapse","openIndex","disable","entriesList","hasCustomResult","showFullList","list","slice","ResultPromoTitle","Array","fill","Skeleton","height","animation","EntriesList","listStyle","numStyle","dateStyle","clickStyle","handleOpenCollapse","href","mobileDisplayText","isIOS","isChrome","IS_IFRAME_MODE","downloadDivStyle","target","isMobile","rel","isAndroid","download","ArrowUpwardIcon","downloadIconStyle","downloadStyle","ReplayIcon","labelStyle","blockTitle","noNegativeMargin","onReuploadBtnClick","renderCustomBtnComponent","promoId","notPassQueryTimeStamp","getTime","protocol","hostname","ugcUrl","getUrlWrapTestCode","showResultDownloadButton","isShowResultDownloadBtnGame","showUgcReuploadBtn","isShowUgcResultReuploadBtnGame","isVideoUpload","mediaData","VIDEO","blockTitleStyle","renderSubHeader","renderVerifyLabel","renderExpandError","collapseStyle","ugcId","imgUrl","videoWrapperStyle","VideoPlayer","RatioContainerStyle","ratio","imgWrapperStyle","ResponsiveUgcProxyPicture","breakPointConfigs","normal","btnWrapperStyle","ResultDownloadBtn","UgcReuploadBtn","reuploadBtnStyle","descStyle","btnConatinerStyle","linkStyle","SuccessButton","toPortfolioBtnStyle","shareBtnStyle","descColor","buttonLabelColor","startDate","isTestMode","isVoteStart","hasUtcDTStartInLocal","mediaRank","setMediaRank","mediaVotes","setMediaVotes","rank","votes","getUgcMediaVoteAndRankingInfo","get","rankStyle","voteCountStyle","notStartHintStyle","buttonColor","titleContainerStyle","BUTTON_VARIANT","CONTAINED","OUTLINED","FeverBadgeButton","Icon","imageUrl","size","number","maxNumber","numberStyle","bgColor","promo500","buttonSyle","adjustColorAlpha","hoverBackground","icon","border","showNumber","showZero","toolTip","Tooltip","Badge","numberContainerStyle","overlap","badgeContent","max","iconContainerStyle","system100","ViewPrizeListButton","onToPrize","isModuleNeedVerify","useIsModuleNeedVerify","isPrizeListOpen","entryIdMappingGameRecords","getEntryIdMappingGameRecordsSelector","entryIdMappingMGMGameRecords","winnerPrizes","mgmWinnerPrize","validWinnerList","recordOfWinner","mgmRecordOfWinner","_recordOfWinner$flow","winnerLength","handleToPrize","getWinnerPrizeCount","btnContainerStyle","handleShowPrize","togglePrizeList","RedeemIcon","buttonHoverStyle","targetElement","document","getElementById","clientHeight","postHeightMessage","Math","IFRAME_MODE_MIN_HEIGHT","isSmallPromoWidth","PrizeList","reduce","record","header","count","ENTRY_VERIFY_PASSED","dense","paddingStyle","useIsVerifyModuleCanGetParticipantWinner","isNeedVerifyModule","canGetWinner","_userGameResultRecord","_parseGameResult$game","_parseGameResult$game2","_lotteryParticipant$T","_lotteryInstant$Tasks","_lotteryInstant$Tasks2","_lotteryParticipant$T2","currentGameResult","gameResultString","parseJSON_ifParsable","isMemoryGame","isMemoryGameChallengeFail","isQuizGame","wrongTotal","isQuizGameChallengeFail","isGameChallengeFail","TasksSetting","gameResultRecords","LOTTERY","PRIZE","RESULT","SIGNUP_FORM","REDEEM_FORM","NOT_FOUND","useHistory","currentLocation","useLocation","useParams","redirectPath","method","pathType","params","path","formId","search","hash","getFullPath","lotteryAnimationPathMapping","lotteryOpenPathParams","GENERAL","isNoResultPageGames","p","generatePath","transition","targetPath","currentPath","includes","getRouteTransitionClassname","replace","originalPush","originalReplace","initialIndex","setOpenTarget","useGameActionEnableInfo","hasReachPlayTimesLimit","useHasReachPlayTimesLimit","periodPlayMatchedInfo","matchedInfo","match","isInPlayTimePeriod","notQualifiedType","userLoginState","hasUsablePasscode","hasFilledSignupForm","hasInstantPrize","hasParticipantPrize","createEntryNotQualifiedType","isNeedReducePoint","isNeedEnterPasscode","playOnce","isGameJoinableOnTime","isUserInputReady","isQualifiedToPlayGame","shouldAutoRedirectGameStage","isQualifiedToGetWinner","canFillSignupform","canGetNewEntry","isCurrentEntryFulfill","isFulFilledEntries","canBackToJoinGamePage","canReplayCurrentEntry","currentEntryRecord","useCallback","QUIZ","MEMORY_MATCH","isGameChallengeAllCorrect","checkIsUserHaveClaimedParticipantPrize","_entryRecord$flow","checkIsUserHaveClaimedInstantPrize","_entryRecord$flow2","useSystemBtnStyleByTheme","primaryBtnStyle","primaryOutlinedBtnStyle","secondaryBtnStyle","secondaryOutlinedBtnStyle","viewPrizeListBtnStyle","addHoverStyle","btnColor","getForegroundColor","addOutlineBtnHoverStyle","width","resizeHeight","pureUrl","query","parseUrl","bucket","fileName","desctureS3URL","additionalQueryObj","qsObj","filepath","crop","resize","IMG_PROXY_PATH","getProxyImgUrl","backgroundImageUrl","customStyles","getRootCotainerStyle","getAsceptRatioContainerStyle","childrenContainerStyle","enableOuterContainer","frameHeight","isArray","contentWrapperStyle","className","ratioWrapperStyle","ENCRYPT_NAME_SECTION","ENCRYPT_EMAIL_SECTION","ENCRYPT_PHONE_NUM_SECTION","ENCRYPT_SECTION","INPUT_SINGLE_LINE_SECTION","INPUT_MULTI_LINE_SECTION","INPUT_HREF_SECTION","INPUT_INVOICE_NUMBER","INPUT_RECEIPT_NUMBER","INPUT_INVOICE_RANDOM_NUMBER","TEXT_CHOICE_SECTION","IMG_CHOICE_SECTION","SINGLE_DROPDOWN_SECTION","DOUBLE_DROPDOWN_SECTION","TEXT_CHOICE_TEXTBOX_SECTION","IMG_CHOICE_TEXTBOX_SECTION","BOOL_CHOICE_TEXTBOX_SECTION","VIDEO_CHOICE_SECTION","RATING_SECTION","DATE_PICKER_SECTION","CONTENT_SECTION","TERMS_SECTION","FILE_UPLOAD_SECTION","RESULT_SECTION","textInputTypes","isTextInputType","mobileInputMode","einvoiceTypes","EINVOICE_QR_CODE_SCAN","sectionsOfInvoiceByType","Set","customFieldIds","INVOICE_CARRIER_NUM","INVOICE_CARRIER_PASS","convertInvocieTypeWhenCallAPI","_m$type","convertInvoiceDefaultType","m","E_COMMERCE_ORDER_RECEIPT","MANUALLY","QR_CODE_SCAN","payloadKey","receiptDate","receiptRandomNumber","carrierNumber","carrierCode","subType","agreeTerm","inputValidation","inputValue","defaultReceiptData","errorMessage","alphabetPart","numericPart","convertNumberFromInvoiceToReceipt","isNeedConvertNumber","submitReceiptDataKey","getReceiptDefaultSubType"],"sourceRoot":""}