{"version":3,"file":"static/js/8965.cf6facfe.chunk.js","mappings":"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","sources":["common/hooks/useDelayedState.ts","components/shared/CharacterComment/index.tsx","components/shared/Input/TextField.tsx","components/zApps/Layout/Login/MyPage/components/OpenableCards/ItemsCard/items/ItemClass/InvitationCard/Panel.tsx","components/zApps/Layout/Login/SignUp/validation.tsx","../node_modules/@material-ui/icons/Mail.js"],"sourcesContent":["import { useEffect, useState } from \"react\";\r\n\r\nexport function useDelayedState(\r\n state: T,\r\n checkOpen: (state: T) => boolean,\r\n timeoutMilliSecond: number\r\n): { delayedState: T; delayedOpen: boolean } {\r\n const [delayedState, setDelayedState] = useState(state);\r\n useEffect(() => {\r\n if (checkOpen(state)) {\r\n // When it opens\r\n setDelayedState(state);\r\n return;\r\n }\r\n\r\n // When it closes\r\n const timeoutId = setTimeout(() => {\r\n setDelayedState(state);\r\n }, timeoutMilliSecond);\r\n return () => {\r\n clearTimeout(timeoutId);\r\n };\r\n }, [state, timeoutMilliSecond, checkOpen]);\r\n\r\n return { delayedState, delayedOpen: checkOpen(delayedState) };\r\n}\r\n","import { makeStyles, Theme } from \"@material-ui/core/styles\";\r\nimport { BaseCSSProperties } from \"@material-ui/core/styles/withStyles\";\r\nimport * as React from \"react\";\r\nimport * as consts from \"../../../common/consts\";\r\nimport { spaceBetween } from \"../../../common/util/Array/spaceBetween\";\r\nimport \"./CharacterComment.css\";\r\n\r\ntype TProps = {\r\n imgNumber: number;\r\n screenWidth: number;\r\n comment: string | React.ReactNode;\r\n style?: BaseCSSProperties;\r\n commentStyle?: BaseCSSProperties;\r\n imgStyle?: BaseCSSProperties;\r\n containerRef?: React.RefObject;\r\n className?: string;\r\n};\r\nexport default function CharacterComment(props: TProps) {\r\n const {\r\n imgNumber,\r\n screenWidth,\r\n comment,\r\n style,\r\n commentStyle,\r\n imgStyle,\r\n containerRef,\r\n className,\r\n } = props;\r\n const c = useStyles({ style, imgStyle, screenWidth, commentStyle });\r\n\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n {comment}\r\n
\r\n
\r\n \r\n );\r\n}\r\nconst useStyles = makeStyles<\r\n Theme,\r\n {\r\n style?: BaseCSSProperties;\r\n imgStyle?: BaseCSSProperties;\r\n commentStyle?: BaseCSSProperties;\r\n screenWidth: number;\r\n }\r\n>({\r\n container: ({ style }) => ({ ...style }),\r\n ninjaPic: ({ imgStyle, screenWidth }) => ({\r\n width: (screenWidth * 2) / 10,\r\n ...imgStyle,\r\n }),\r\n comment: ({ screenWidth, commentStyle }) => ({\r\n width: screenWidth > 767 ? (screenWidth * 7) / 10 - 15 : \"100%\",\r\n ...commentStyle,\r\n }),\r\n});\r\n","import { InputBaseComponentProps } from \"@material-ui/core/InputBase\";\r\nimport MuiTextField, { TextFieldProps } from \"@material-ui/core/TextField\";\r\nimport { CSSProperties, useState } from \"react\";\r\n\r\nexport function TextField({\r\n onMouseDown,\r\n onFocus,\r\n inputProps,\r\n ...rest\r\n}: TextFieldProps) {\r\n const [inputStyle, setInputStyle] = useState(\r\n getInitialInputStyle(inputProps, rest.autoFocus)\r\n );\r\n\r\n return (\r\n {\r\n /**\r\n * Prevent iPhone screen from zooming automatically\r\n * Reference: https://stackoverflow.com/a/41487632\r\n */\r\n (\r\n ev.target as HTMLInputElement | HTMLTextAreaElement\r\n ).style.fontSize = \"16px\"; // Modify the real DOM directly before iPhone detects the font-size\r\n\r\n setInputStyle({ ...inputProps?.style, fontSize: 16 }); // Virtual DOM will also be changed\r\n\r\n onMouseDown?.(ev);\r\n }}\r\n onFocus={ev => {\r\n setInputStyle({ ...inputProps?.style });\r\n\r\n onFocus?.(ev);\r\n }}\r\n inputProps={{\r\n ...inputProps,\r\n style: { ...inputProps?.style, ...inputStyle },\r\n }}\r\n />\r\n );\r\n}\r\n\r\nexport function focusInputSafely(inputEl: HTMLInputElement) {\r\n const currentFontSize = inputEl.style.fontSize;\r\n inputEl.style.fontSize = \"16px\"; // Modify the real DOM directly before iPhone detects the font-size\r\n inputEl.focus();\r\n inputEl.style.fontSize = currentFontSize;\r\n}\r\n\r\nfunction getInitialInputStyle(\r\n inputProps: InputBaseComponentProps | undefined,\r\n autoFocus?: boolean\r\n): CSSProperties | undefined {\r\n if (autoFocus) {\r\n return { ...inputProps?.style, fontSize: 16 };\r\n }\r\n return inputProps?.style;\r\n}\r\n","import Collapse from \"@material-ui/core/Collapse\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport MailIcon from \"@material-ui/icons/Mail\";\r\nimport { useState } from \"react\";\r\nimport { setItemsFromServerSide } from \"../..\";\r\nimport { theme } from \"../../../../../../../..\";\r\nimport {\r\n getAppState,\r\n useAppState,\r\n} from \"../../../../../../../../../../../common/appState\";\r\nimport { useDelayedState } from \"../../../../../../../../../../../common/hooks/useDelayedState\";\r\nimport { useScreenSize } from \"../../../../../../../../../../../common/hooks/useScreenSize\";\r\nimport { fetchPostFormData } from \"../../../../../../../../../../../common/util/fetch\";\r\nimport ShurikenProgress from \"../../../../../../../../../../shared/Animations/ShurikenProgress\";\r\nimport { PrimaryButton } from \"../../../../../../../../../../shared/Button/PrimaryButton\";\r\nimport CharacterComment from \"../../../../../../../../../../shared/CharacterComment\";\r\nimport { TextField } from \"../../../../../../../../../../shared/Input/TextField\";\r\nimport { RightPanel } from \"../../../../../../../../../../shared/Panel/RightPanel\";\r\nimport { emailValidate } from \"../../../../../../../SignUp/validation\";\r\nimport { PossessedItem_ServerSide } from \"../../types\";\r\nimport {\r\n invitationBonusCoinPercentage,\r\n invitationBonusXpPercentage,\r\n} from \"./InvitationCard\";\r\nimport { encodeEmailForUrl } from \"./functions\";\r\n\r\nconst transitionMilliseconds = 1000;\r\nconst panelWidth = 500;\r\n\r\nexport default function InvitationCardPanel() {\r\n const [panelState, setPanelState] = useAppState(\"invitationCardPanelState\");\r\n\r\n const { delayedOpen } = useDelayedState(\r\n panelState,\r\n state => state.open,\r\n transitionMilliseconds\r\n );\r\n\r\n return (\r\n {\r\n setPanelState({ open: false });\r\n }}\r\n panelWidth={panelWidth}\r\n globalPanelState={panelState}\r\n transitionMilliseconds={transitionMilliseconds}\r\n >\r\n {delayedOpen && }\r\n \r\n );\r\n}\r\n\r\nfunction Content() {\r\n const c = useContentStyles();\r\n const { screenWidth } = useScreenSize();\r\n\r\n const [email, setEmail] = useState(\"\");\r\n const [emailError, setEmailError] = useState(\"\");\r\n const [submitting, setSubmitting] = useState(false);\r\n const [isSent, setSent] = useState(false);\r\n\r\n return (\r\n
\r\n

\r\n {isSent ? (\r\n Success!\r\n ) : (\r\n \"Get Coins and XP Automatically!\"\r\n )}\r\n

\r\n\r\n \r\n The invitation was successfully sent to your friend!\r\n
\r\n ) : (\r\n
\r\n
\r\n Invite your friends to Lingual Ninja to get\r\n coins and XP automatically!\r\n
\r\n
\r\n Every time they get coins or XP, you will also\r\n receive {invitationBonusCoinPercentage}% of the\r\n coins or {invitationBonusXpPercentage}% XP.\r\n
\r\n
\r\n The amount that your friends receive won't\r\n decrease even if you receive a percentage of it.\r\n
\r\n
\r\n )\r\n }\r\n screenWidth={Math.min(screenWidth, panelWidth)}\r\n imgNumber={1}\r\n />\r\n\r\n \r\n
\r\n
To:
\r\n {\r\n const newEmail = ev.target.value.trim();\r\n setEmail(newEmail);\r\n if (emailError) {\r\n setEmailError(emailValidate(newEmail) ?? \"\");\r\n }\r\n }}\r\n value={email}\r\n onBlur={ev => {\r\n setEmailError(emailValidate(ev.target.value) ?? \"\");\r\n }}\r\n error={!!emailError}\r\n />\r\n
\r\n\r\n \r\n {emailError}\r\n \r\n\r\n
\r\n {\r\n const error = emailValidate(email) ?? \"\";\r\n if (error) {\r\n setEmailError(error);\r\n return;\r\n }\r\n setSubmitting(true);\r\n\r\n const { user } = getAppState();\r\n if (!user) {\r\n return;\r\n }\r\n\r\n const form = new FormData();\r\n form.append(\"userId\", user.userId.toString());\r\n form.append(\"email\", email);\r\n form.append(\r\n \"encodedEmail\",\r\n encodeEmailForUrl(email)\r\n );\r\n const result = await fetchPostFormData<\r\n PossessedItem_ServerSide[]\r\n >(\"api/InvitationCard/SendInvitation\", form);\r\n if (\"error\" in result) {\r\n setEmailError(result.error);\r\n setSubmitting(false);\r\n return;\r\n }\r\n setItemsFromServerSide(result);\r\n\r\n setSent(true);\r\n setEmail(\"\");\r\n setEmailError(\"\");\r\n setSubmitting(false);\r\n }}\r\n className={c.sendButton}\r\n startIcon={}\r\n >\r\n {submitting ? (\r\n \r\n ) : (\r\n \"Send Invitation\"\r\n )}\r\n \r\n
\r\n
\r\n \r\n );\r\n}\r\nconst useContentStyles = makeStyles({\r\n container: {\r\n width: \"100%\",\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n marginTop: 20,\r\n paddingRight: 15,\r\n paddingLeft: 15,\r\n paddingBottom: 40,\r\n },\r\n title: {\r\n padding: \"0 20px\",\r\n marginBottom: 20,\r\n maxWidth: \"100%\",\r\n fontWeight: \"bold\",\r\n textAlign: \"center\",\r\n },\r\n success: { color: theme.palette.success.main },\r\n successMessage: {\r\n marginLeft: 10,\r\n fontWeight: \"bold\",\r\n fontSize: \"large\",\r\n },\r\n explanationContainer: { marginLeft: 8 },\r\n boldExplanation: { fontWeight: \"bold\", marginBottom: 10 },\r\n secondExplanation: { marginBottom: 5 },\r\n emailContainer: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n marginTop: 5,\r\n },\r\n to: {\r\n marginRight: 15,\r\n fontSize: \"x-large\",\r\n },\r\n emailError: {\r\n color: \"#f44336\",\r\n marginLeft: 50,\r\n position: \"relative\",\r\n bottom: 5,\r\n },\r\n sendButtonContainer: {\r\n display: \"flex\",\r\n justifyContent: \"flex-end\",\r\n marginTop: 10,\r\n },\r\n sendButton: { width: 180, height: 40 },\r\n});\r\n","export function submissionValidate(\r\n name: string,\r\n email: string,\r\n password: string\r\n): string | null {\r\n return (\r\n nameValidate(name) || emailValidate(email) || passwordValidate(password)\r\n );\r\n}\r\n\r\nexport function realTimeValidate(\r\n name: string,\r\n email: string,\r\n password: string\r\n): string | null {\r\n if (name) {\r\n const nameError = nameValidate(name);\r\n if (nameError) {\r\n return nameError;\r\n }\r\n }\r\n if (email) {\r\n const emailError = emailValidate(email);\r\n if (emailError) {\r\n return emailError;\r\n }\r\n }\r\n if (password) {\r\n const passwordError = passwordValidate(password);\r\n if (passwordError) {\r\n return passwordError;\r\n }\r\n }\r\n return null;\r\n}\r\n\r\nexport function nameValidate(name: string): string | null {\r\n if (name.length < 1 || name.length > 20) {\r\n return \"Your username must contain between 1 and 20 characters.\";\r\n }\r\n const lower = name.toLocaleLowerCase();\r\n if (lower.includes(\"lingual\") && lower.includes(\"ninja\")) {\r\n return \"This username is already taken. Please choose another name.\";\r\n }\r\n return null;\r\n}\r\n\r\nexport function emailValidate(email: string): string | null {\r\n if (!/^\\w+([\\.-]?\\w+)*@\\w+([\\.-]?\\w+)*(\\.\\w{2,3})+$/.test(email)) {\r\n return \"Please enter a valid email address.\";\r\n }\r\n if (email.length > 50) {\r\n return \"Your email address must be less than 51 characters.\";\r\n }\r\n return null;\r\n}\r\n\r\nexport function passwordValidate(password: string): string | null {\r\n if (password.length < 8 || password.length > 60) {\r\n return \"Your password must contain between 8 and 60 characters.\";\r\n }\r\n\r\n if (!password.match(/([a-zA-Z])/) || !password.match(/([0-9])/)) {\r\n if (password.match(/([a-z].*[A-Z])|([A-Z].*[a-z])/)) {\r\n // If the password includes one upper case and one lower case, it's ok\r\n return null;\r\n }\r\n return \"Your password must contain at least one number and one letter.\";\r\n }\r\n\r\n return null;\r\n}\r\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 4l-8 5-8-5V6l8 5 8-5v2z\"\n}), 'Mail');\n\nexports.default = _default;"],"names":["useDelayedState","state","checkOpen","timeoutMilliSecond","_useState","useState","_useState2","_slicedToArray","delayedState","setDelayedState","useEffect","timeoutId","setTimeout","clearTimeout","delayedOpen","CharacterComment","props","imgNumber","screenWidth","comment","style","commentStyle","imgStyle","containerRef","className","c","useStyles","_jsxs","ref","spaceBetween","container","children","_jsx","src","concat","consts","alt","ninjaPic","makeStyles","_ref","_objectSpread","_ref2","width","_ref3","TextField","onMouseDown","onFocus","inputProps","rest","_objectWithoutProperties","_excluded","autoFocus","fontSize","getInitialInputStyle","inputStyle","setInputStyle","MuiTextField","ev","target","transitionMilliseconds","panelWidth","InvitationCardPanel","_useAppState","useAppState","_useAppState2","panelState","setPanelState","open","RightPanel","panelName","onClose","globalPanelState","Content","useContentStyles","useScreenSize","email","setEmail","_useState3","_useState4","emailError","setEmailError","_useState5","_useState6","submitting","setSubmitting","_useState7","_useState8","isSent","setSent","title","success","successMessage","explanationContainer","boldExplanation","secondExplanation","invitationBonusCoinPercentage","invitationBonusXpPercentage","Math","min","Collapse","in","emailContainer","to","variant","margin","required","fullWidth","label","autoComplete","onChange","_emailValidate","newEmail","value","trim","emailValidate","onBlur","_emailValidate2","error","sendButtonContainer","PrimaryButton","disabled","onClick","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_emailValidate3","_getAppState","user","form","result","wrap","_context","prev","next","abrupt","getAppState","FormData","append","userId","toString","encodeEmailForUrl","fetchPostFormData","sent","setItemsFromServerSide","stop","sendButton","startIcon","MailIcon","ShurikenProgress","size","display","flexDirection","marginTop","paddingRight","paddingLeft","paddingBottom","padding","marginBottom","maxWidth","fontWeight","textAlign","color","theme","marginLeft","alignItems","marginRight","position","bottom","justifyContent","height","submissionValidate","name","password","nameValidate","passwordValidate","realTimeValidate","nameError","passwordError","length","lower","toLocaleLowerCase","includes","test","match","_interopRequireDefault","require","_interopRequireWildcard","exports","React","_default","default","createElement","d"],"sourceRoot":""}