{"version":3,"file":"js/application-85a82a8223a24c5ccfe9.js","mappings":"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","sources":["webpack://app/./app/javascript/components/ sync ^\\.\\/.*$","webpack://app/./app/javascript/components/ReviewForm.jsx","webpack://app/./app/javascript/components/Reviews.jsx","webpack://app/./app/javascript/packs/application.js"],"sourcesContent":["var map = {\n\t\"./ReviewForm\": 4078,\n\t\"./ReviewForm.jsx\": 4078,\n\t\"./Reviews\": 4754,\n\t\"./Reviews.jsx\": 4754\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 982;","import {\n TextField,\n Box,\n Button,\n Paper,\n IconButton,\n InputBase,\n Divider,\n Select,\n Dialog,\n DialogTitle,\n DialogContent,\n DialogContentText,\n DialogActions,\n} from \"@mui/material\";\nimport React from \"react\";\nimport { MenuItem, Typography } from \"@material-ui/core\";\n\nconst emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/;\n\nconst marketplacesMap = {\n \"amazon.ae\": \"🇦🇪\",\n \"amazon.ca\": \"🇨🇦\",\n \"amazon.cn\": \"🇨🇳\",\n \"amazon.co.jp\": \"🇯🇵\",\n \"amazon.co.uk\": \"🇬🇧\",\n \"amazon.com\": \"🇺🇸\",\n \"amazon.com.au\": \"🇦🇺\",\n \"amazon.com.be\": \"🇧🇪\",\n \"amazon.com.br\": \"🇧🇷\",\n \"amazon.com.mx\": \"🇲🇽\",\n \"amazon.com.tr\": \"🇹🇷\",\n \"amazon.de\": \"🇩🇪\",\n \"amazon.eg\": \"🇪🇬\",\n \"amazon.es\": \"🇪🇸\",\n \"amazon.fr\": \"🇫🇷\",\n \"amazon.in\": \"🇮🇳\",\n \"amazon.it\": \"🇮🇹\",\n \"amazon.nl\": \"🇳🇱\",\n \"amazon.pl\": \"🇵🇱\",\n \"amazon.sa\": \"🇸🇦\",\n \"amazon.se\": \"🇸🇪\",\n \"amazon.sg\": \"🇸🇬\",\n};\n\nexport default function ReviewsForm() {\n const [asin, setAsin] = React.useState(\"\");\n const [marketplace, setMarketplace] = React.useState(\"amazon.com\");\n const [isContactFormOpen, setIsContactFormOpen] = React.useState(false);\n const [isSubmitting, setIsSubmitting] = React.useState(false);\n\n const [emailError, setEmailError] = React.useState(false);\n const emailRef = React.useRef();\n\n const submitEmail = (event) => {\n event.preventDefault();\n if (emailRegex.test(emailRef.current.value)) {\n setIsSubmitting(true);\n fetch(\n \"https://api.hsforms.com/submissions/v3/integration/submit/8861949/4704d53d-284a-41f3-a731-fb50a46a9574\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n fields: [\n {\n objectTypeId: \"0-1\",\n name: \"email\",\n value: emailRef.current.value,\n },\n ],\n }),\n }\n )\n .then(() => {\n window.parent &&\n window.parent.postMessage({ type: \"hubspotForm\" }, \"*\");\n })\n .then(() => {\n window.location.href = `/reviews/${asin}?marketplace=${marketplace}`;\n });\n } else {\n setEmailError(true);\n console.log(\"invalid email\");\n }\n };\n\n const revalidateEmail = () => {\n if (emailError && emailRegex.test(emailRef.current.value)) {\n setEmailError(false);\n }\n };\n\n React.useEffect(() => {\n const height =\n document.body.scrollHeight > 300 ? document.body.scrollHeight : 300;\n window.parent &&\n window.parent.postMessage({ type: \"resize\", height: height }, \"*\");\n });\n\n return (\n \n \n Analyze your Amazon reviews\n \n \n Use this free tool to highlight potential quality issues in your\n product.\n \n\n \n \n setMarketplace(e.target.value)}\n renderValue={(value) => marketplacesMap[value]}\n sx={{\n height: \"40px\",\n width: \"70px\",\n boxShadow: \"none\",\n \".MuiOutlinedInput-notchedOutline\": { border: 0 },\n }}\n >\n {Object.keys(marketplacesMap).map((marketplace) => (\n \n {marketplacesMap[marketplace]} {marketplace}\n \n ))}\n \n setAsin(e.target.value)}\n sx={{ ml: 1, flex: 1 }}\n />\n \n setIsContactFormOpen(true)}\n sx={{ mx: 1 }}\n >\n Analyze reviews\n \n \n \n\n setIsContactFormOpen(false)}\n >\n \n Access your review analysis\n \n \n Provide your email to gain access to your review analysis.\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import {\n Grid,\n Box,\n LinearProgress,\n Link,\n Typography,\n Button,\n} from \"@material-ui/core\";\nimport { Stack } from \"@mui/material\";\nimport Rating from \"@mui/material/Rating\";\nimport Tooltip, { tooltipClasses } from \"@mui/material/Tooltip\";\nimport { styled } from \"@mui/material/styles\";\nimport React from \"react\";\n\nconst HtmlTooltip = styled(({ className, ...props }) => (\n \n))(({ theme }) => ({\n [`& .${tooltipClasses.tooltip}`]: {\n backgroundColor: \"#f5f5f9\",\n color: \"rgba(0, 0, 0, 0.87)\",\n width: 200,\n fontSize: theme.typography.pxToRem(12),\n border: \"1px solid #dadde9\",\n },\n}));\n\nexport default function Reviews({ asin, marketplace }) {\n const [loading, setLoading] = React.useState(true);\n const [hasError, setHasError] = React.useState(false);\n const [loadingMessage, setLoadingMessage] = React.useState(\"\");\n const [reviewsSummary, setReviewsSummary] = React.useState({\n product: {},\n summary: {},\n reviews: [],\n gptSentences: [],\n gptSummary: \"\",\n });\n\n const fetchReviews = async (asin) => {\n for (let page = 1; page <= 5; page++) {\n setLoadingMessage(`Retrieving recent reviews (page ${page} of 5)...`);\n const response = await fetch(\n `/api/products/${asin}/reviews/ingest?marketplace=${marketplace}&page=${page}`\n );\n const body = await response.json();\n if (!body.request_info.success) {\n throw new Error(body.request_info.message);\n }\n }\n\n setLoadingMessage(\"Analyzing reviews...\");\n await fetch(\n `/api/products/${asin}/reviews/sentences?marketplace=${marketplace}`\n );\n\n setLoadingMessage(\"Generating summary...\");\n await fetch(\n `/api/products/${asin}/reviews/summary?marketplace=${marketplace}`\n );\n\n setLoadingMessage(\"Preparing report...\");\n fetch(`/api/products/${asin}/reviews?marketplace=${marketplace}`)\n .then((response) => response.json())\n .then((data) => {\n setReviewsSummary(data);\n setTimeout(() => setLoading(false), 2000);\n })\n .catch((error) => {\n console.log(error.message);\n setLoadingMessage(\n \"We encountered an error processing your report. Please make sure you entered the correct ASIN and marketplace and try again later.\"\n );\n setHasError(true);\n setLoading(false);\n });\n };\n\n React.useEffect(() => {\n fetchReviews(asin).catch((error) => {\n console.log(error.message);\n setLoadingMessage(\n \"The requested page could not be found on Amazon. Make sure you entered the correct ASIN and marketplace (for example, an ASIN from amazon.com might not be valid on amazon.fr).\"\n );\n setHasError(true);\n setLoading(false);\n });\n }, [asin]);\n\n React.useEffect(() => {\n const height =\n document.body.scrollHeight > 300 ? document.body.scrollHeight : 300;\n window.parent &&\n window.parent.postMessage({ type: \"resize\", height: height }, \"*\");\n });\n\n const reviewHighlights = React.useMemo(\n () =>\n reviewsSummary.gptSentences\n .map(({ id, sentence }) => {\n const review = reviewsSummary.reviews.find((review) => {\n return review.id === id;\n });\n return { ...review, gptExtract: sentence };\n })\n .filter((review) => review.rating <= 4),\n [reviewsSummary]\n );\n\n if (loading) {\n return (\n \n \n {loadingMessage}\n \n \n \n );\n }\n\n if (hasError) {\n return (\n \n \n There was an error analyzing your reviews\n \n {loadingMessage}\n \n );\n }\n\n const { product, summary, reviews, gptSentences, gptSummary } =\n reviewsSummary;\n\n const ratings = {\n five: summary.rating_breakdown.five_star.percentage,\n four: summary.rating_breakdown.four_star.percentage,\n three: summary.rating_breakdown.three_star.percentage,\n two: summary.rating_breakdown.two_star.percentage,\n one: summary.rating_breakdown.one_star.percentage,\n };\n\n return (\n \n \n \n \n \n {product.title}\n \n \n \n \n \n {product.title}\n \n \n }\n placement=\"bottom-start\"\n >\n \n \n \n {summary.rating} out of 5 stars (\n {summary.ratings_total.toLocaleString()} ratings)\n \n \n \n \n \n\n \n Summary\n \n {gptSummary}\n \n \n\n \n Review Highlights\n {reviewHighlights.map((review, index) => (\n \n \n \n \n {review.rating} out of 5 stars ({review.date.raw})\n \n \n \n {review.gptExtract}\n \n \n ))}\n \n \n \n );\n}\n\nfunction RatingsTooltip({ ratings }) {\n return (\n \n 5 stars ({ratings.five}%)\n \n 4 stars ({ratings.four}%)\n \n 3 stars ({ratings.three}%)\n \n 2 stars ({ratings.two}%)\n \n 1 stars ({ratings.one}%)\n \n \n );\n}\n","// Support component names relative to this directory:\nvar componentRequireContext = require.context(\"components\", true);\nvar ReactRailsUJS = require(\"react_ujs\");\nReactRailsUJS.useContext(componentRequireContext);\n"],"names":["map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","emailRegex","marketplacesMap","ReviewsForm","asin","setAsin","React","marketplace","setMarketplace","isContactFormOpen","setIsContactFormOpen","isSubmitting","setIsSubmitting","emailError","setEmailError","emailRef","height","document","body","scrollHeight","window","parent","postMessage","type","Box","maxWidth","mx","Typography","variant","align","style","marginBottom","display","justifyContent","Paper","component","sx","p","alignItems","marginTop","alignSelf","Select","value","onChange","target","renderValue","width","boxShadow","border","MenuItem","key","InputBase","placeholder","ml","flex","Divider","m","orientation","Button","color","onClick","Dialog","open","onClose","onSubmit","event","preventDefault","test","current","fetch","method","headers","JSON","stringify","fields","objectTypeId","name","then","location","href","console","log","DialogTitle","DialogContent","DialogContentText","TextField","autoFocus","margin","label","fullWidth","inputRef","error","helperText","revalidateEmail","DialogActions","disabled","HtmlTooltip","styled","className","props","Tooltip","_extends","classes","popper","theme","tooltipClasses","tooltip","backgroundColor","fontSize","typography","pxToRem","Reviews","loading","setLoading","hasError","setHasError","loadingMessage","setLoadingMessage","reviewsSummary","setReviewsSummary","product","summary","reviews","gptSentences","gptSummary","async","page","response","json","request_info","success","message","data","setTimeout","catch","fetchReviews","reviewHighlights","sentence","find","review","gptExtract","filter","rating","paddingTop","LinearProgress","ratings","five","rating_breakdown","five_star","percentage","four","four_star","three","three_star","two","two_star","one","one_star","Grid","container","spacing","item","xs","Link","link","src","image","alt","title","RatingsTooltip","placement","Stack","direction","Rating","precision","readOnly","ratings_total","toLocaleString","whiteSpace","index","mb","size","date","raw","componentRequireContext","require","useContext"],"sourceRoot":""}