{"version":3,"file":"static/js/3484.4a889ad4.chunk.js","mappings":"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","sources":["components/meta/Helmet.tsx","components/misc/NewsletterBanner.tsx","statics/Homepage/NewsletterEmailSignup.tsx","statics/reader-blogs/Show.tsx","utils/casing.ts","../node_modules/@mui/icons-material/ArrowForward.js","../node_modules/@mui/material/Card/cardClasses.js","../node_modules/@mui/material/Card/Card.js","../node_modules/@mui/material/CardActionArea/cardActionAreaClasses.js","../node_modules/@mui/material/CardActionArea/CardActionArea.js","../node_modules/@mui/material/CardContent/cardContentClasses.js","../node_modules/@mui/material/CardContent/CardContent.js","../node_modules/@mui/material/CardMedia/cardMediaClasses.js","../node_modules/@mui/material/CardMedia/CardMedia.js"],"sourcesContent":["import React from 'react';\nimport { Helmet as ReactHelmet } from 'react-helmet';\n\ninterface HelmetInput {\n title: string;\n url: string;\n description?: string;\n // Provide if there's a better image than the default\n ogImage?: string;\n}\n\nexport default function Helmet({ metaContent, schema }: { metaContent: HelmetInput, schema?: Array<Object> }) {\n const { title, url, description, ogImage } = metaContent;\n const defaultOgImage =\n 'https://website-assets-public.s3.us-west-2.amazonaws.com/opengraph/girl-in-hammock.jpg';\n const currentOgImage = ogImage || defaultOgImage;\n // Recent OG Images generated from Canva are 1200 x 600\n // So if one was set from Helmet, we use the smaller 600 size.\n // These will have to be redone and this discrepancy removed.\n const height = ogImage ? '600' : '630';\n return (\n <ReactHelmet>\n <title>{title}</title>\n <meta property=\"og:title\" content={title} />\n <link rel=\"canonical\" href={url} />\n <meta property=\"og:url\" content={url} />\n <meta property=\"og:description\" content={description} />\n <meta property=\"og:image\" content={currentOgImage} />\n <meta property=\"og:image:url\" content={currentOgImage} />\n <meta property=\"og:image:width\" content=\"1200\" />\n <meta property=\"og:image:height\" content={height} />\n\n <script type=\"application/ld+json\">\n {JSON.stringify({\n \"@context\": \"https://schema.org\",\n \"@type\": \"Organization\",\n \"url\": \"https://bookraid.com\",\n \"logo\": \"https://bookraid.com/logo.png\",\n \"description\": \"BookRaid is a website and newsletter that lets you download free & bestselling discount eBooks for your Kindle, Nook, Kobo, or other eReader\"\n })}\n </script>\n {schema && (\n schema.map(sch => <script type=\"application/ld+json\">{JSON.stringify(sch)}</script>)\n )}\n </ReactHelmet>\n );\n}\n\nHelmet.defaultProps = {\n schema: [],\n};\n","import { Box, Grid, Typography } from '@mui/material';\nimport React from 'react';\nimport NewsletterEmailSignup from '../../statics/Homepage/NewsletterEmailSignup';\n\nconst NewsletterBanner = function () {\n return (\n <Box sx={{\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n width: '100%',\n p: { xs: 2, md: 3, xl: 4 },\n backgroundColor: '#fff3ea',\n }}>\n <Grid container spacing={2} sx={{ maxWidth: 1400 }}>\n <Grid item xs={12} sm={7}>\n <Box sx={{ display: 'flex', justifyContent: 'center', flexDirection: 'column', height: '100%' }}>\n <Typography variant=\"h5\" sx={{ mb: 2, fontWeight: 'bold' }}>Join now to get limited time, exclusive deals on free and discounted eBooks</Typography>\n <Typography>We'll find amazing new authors and books for you to get excited about. You just have to worry about finding the time to read them all.</Typography>\n </Box>\n </Grid>\n <Grid item xs={0} sm={1} />\n <Grid item xs={12} sm={4}>\n <Box sx={{ display: 'flex', justifyContent: { xs: 'center', md: 'flex-end' }, alignItems: 'center', height: '100%' }}>\n <Box sx={{ backgroundColor: 'white', px: 3, pb: 3, pt: 1 }}>\n <NewsletterEmailSignup hideText />\n </Box>\n </Box>\n </Grid>\n </Grid>\n </Box>\n )\n}\n\nexport default NewsletterBanner;\n","import React from 'react';\nimport { Box, TextField, Typography } from '@mui/material';\nimport FacebookPixel from 'react-facebook-pixel';\nimport RedditPixel from 'react-reddit-pixel';\nimport ReactGA from 'react-ga4';\nimport ReactPinterestTag from 'react-pinterest-tag';\nimport { push } from 'connected-react-router';\nimport { LoadingButton } from '@mui/lab';\nimport { createReader } from '../../store/readers/readersSlice';\nimport { useAppDispatch } from '../../app/hooks';\nimport { addSnack } from '../../store/snacks/snacksSlice';\n\nconst NewsletterEmailSignup = function ({\n signupEmailFieldRef,\n hideText,\n extraParams,\n btnText,\n follow,\n handleSuccess,\n}: {\n signupEmailFieldRef?: any;\n hideText?: boolean;\n extraParams?: Object;\n btnText?: string;\n follow?: string;\n handleSuccess?: Function;\n}) {\n const [email, setEmail] = React.useState('');\n const [creating, setCreating] = React.useState(false);\n const dispatch = useAppDispatch();\n\n async function handleCreate(event: React.FormEvent<HTMLFormElement>) {\n event.preventDefault();\n setCreating(true);\n\n dispatch(createReader({ email, ...extraParams }))\n .unwrap()\n .then((e: any) => {\n FacebookPixel.trackCustom('ReaderSubscribed');\n RedditPixel.track('SignUp');\n ReactGA.event({\n category: 'Readers',\n action: 'ReadersSignUp',\n });\n ReactPinterestTag.track('checkout', {\n value: 100,\n order_quantity: 1,\n currency: 'USD',\n line_items: [\n {\n product_name: 'Newsletter subscription',\n product_id: '1',\n product_price: 1.0,\n product_quantity: 1,\n },\n ],\n });\n // reader conversion\n ReactGA.gtag('event', 'conversion', {\n send_to: process.env.REACT_APP_GTAG_READER_SIGNUP as string,\n });\n\n if (e.skip_categories) {\n dispatch(addSnack({ message: `Follow on ${follow} successfully created.`, variant: 'success' }))\n } else {\n let pushUrl = `/readers/${e.uuid}/edit`;\n if (follow) { pushUrl += `?follow=${follow}`; }\n dispatch(push(pushUrl));\n }\n if (handleSuccess) { handleSuccess(); }\n })\n .finally(() => {\n setCreating(false);\n })\n .catch(() => {\n // throw e;\n });\n\n return () => setCreating(false);\n }\n\n return (\n <Box sx={{ maxWidth: '350px', margin: '0 auto' }}>\n {!hideText && <Typography variant=\"h4\" component=\"h1\" color=\"secondary.main\" align=\"center\">\n Discounted & Free Bestselling Ebooks\n </Typography>}\n\n <form onSubmit={handleCreate}>\n <TextField\n onChange={(e) => setEmail(e.target.value)}\n ref={signupEmailFieldRef || null}\n variant=\"outlined\"\n margin=\"normal\"\n required\n fullWidth\n name=\"email\"\n label=\"Email\"\n value={email}\n />\n <LoadingButton\n loading={creating}\n variant=\"contained\"\n color=\"secondary\"\n type=\"submit\"\n fullWidth\n >\n {btnText}\n </LoadingButton>\n </form>\n </Box>\n );\n};\n\nNewsletterEmailSignup.defaultProps = {\n signupEmailFieldRef: null,\n hideText: false,\n extraParams: {},\n btnText: `Start Reading - It's Free`,\n follow: null,\n handleSuccess: null,\n};\n\nexport default NewsletterEmailSignup;\n","import React from 'react';\nimport { useParams, Link as RouterLink } from 'react-router-dom';\nimport {\n Box,\n Button,\n Card,\n CardActionArea,\n CardContent,\n CardMedia,\n Container,\n Divider,\n Grid,\n Paper,\n Typography,\n} from '@mui/material';\nimport ArrowForwardIcon from '@mui/icons-material/ArrowForward';\nimport { useAppDispatch, useAppSelector } from '../../app/hooks';\nimport LoadingSpinner from '../../components/misc/LoadingSpinner';\nimport Helmet from '../../components/meta/Helmet';\nimport { parameterize } from '../../utils/casing';\nimport { ReaderBlog, getReaderBlog, selectReaderBlog } from '../../store/reader-blogs/readerBlogsSlice';\nimport NewsletterBanner from '../../components/misc/NewsletterBanner';\nimport Logo from '../../images/logo.png'\nimport theme from '../../theme/theme';\n\nconst ReaderBlogShow = function () {\n const id = parseInt(useParams<{ id: string }>().id, 10);\n const dispatch = useAppDispatch();\n const [blogLoading, setBlogLoading] = React.useState(true);\n const blog = useAppSelector((state) => selectReaderBlog(state, id)) as ReaderBlog;\n const defaultCoverImg = 'https://website-assets-public.s3.us-west-2.amazonaws.com/book-cover-placeholder.png'\n\n React.useEffect(() => {\n if (!id) {\n return;\n }\n dispatch(\n getReaderBlog({\n id,\n resourceType: 'partner',\n joins: [ 'similar_blogs', 'blog_categories' ],\n })\n ).finally(() => {\n setBlogLoading(false);\n });\n\n // Note that without this cleanup method in the return function,\n // we get memory leak warnings from react\n // https://stackoverflow.com/a/60907638\n // no return method gives a memory leak\n // return () => { }; // empty return gives a memory leak\n // return () => setBlogLoading(true); // this gives a memory leak\n // eslint-disable-next-line consistent-return\n return () => setBlogLoading(false); // this works\n }, [dispatch, id]);\n\n if (blogLoading) {\n return <Box sx={{ display: 'flex', justifyContent: 'center', alignItems: 'center', mt: 10 }}>\n <LoadingSpinner />\n </Box>\n }\n\n return (\n <Box>\n <NewsletterBanner />\n <Container component=\"main\" sx={{ mb: 12, mt: 2 }}>\n <Grid container spacing={4}>\n <Grid item xs={12} md={8} lg={9}>\n <Box sx={{ display: 'flex', alignItems: 'center', mb: 2 }}>\n <Typography variant=\"h3\" component=\"h1\">{blog.parsed_title}</Typography>\n </Box>\n <ReaderBlogDetails blog={blog} />\n\n <Box sx={{ mt: 2, mb: 4 }}>\n {blog.base_generated_content?.intro.split('\\n\\n').map((paragraph: string) => (\n <Typography variant=\"body1\" sx={{ mb: 2 }}>{paragraph}</Typography>\n ))}\n </Box>\n\n {blog.base_generated_content?.books.map((book: any) => (\n <Box sx={{ display: 'flex', mb: 10 }}>\n <Box sx={{ mr: 2 }}>\n <a href={`http://www.amazon.com/dp/${book.asin}?tag=bookraider-20`} target=\"_blank\" rel=\"noreferrer\">\n <Box component=\"img\" src={book.image_url || defaultCoverImg} alt={`${book.title} by ${book.author}`} sx={{ width: '150px' }} />\n </a>\n </Box>\n <Box sx={{ flexGrow: 1 }}>\n <Typography variant=\"h4\" sx={{ mb: 1 }}>{book.title}</Typography>\n <Box sx={{ borderLeft: '2px solid', borderColor: '#7fd7ff', pl: 1 }}>\n <Typography variant=\"body2\" sx={{ mb: 1 }}>by {book.author}</Typography>\n </Box>\n <Typography variant=\"body1\" sx={{ mb: 2 }}><i><b>Why {book.title} is on this list:</b> {book.why_this_book_fits}</i></Typography>\n <Typography variant=\"body1\" sx={{ mb: 2 }}>{book.book_description}</Typography>\n <Typography variant=\"body1\" sx={{ mb: 2 }}><b>What readers like:</b> {book.what_readers_like}</Typography>\n\n <Button\n variant=\"contained\"\n color=\"secondary\"\n href={\n book.asin\n ? `http://www.amazon.com/dp/${book.asin}?tag=bookraider-20`\n : `https://www.amazon.com/s?k=${book.title.split(' ').join('+')}+by+${book.author.split(' ').join('+')}&i=digital-text&tag=bookraider-20`\n }\n target=\"_blank\"\n rel=\"noreferrer\"\n >\n Check Price at Amazon\n </Button>\n </Box>\n </Box>\n ))}\n\n <Helmet\n metaContent={{\n title: `${blog.parsed_title} - BookRaid`,\n url: `https://bookraid.com/reader-blog/${blog.id}/${parameterize(blog.canonical_url_title)}`,\n description: blog.content_sanitized!.substring(0, 150),\n ogImage: blog.image_urls?.[0],\n }}\n schema={[\n {\n \"@context\": \"https://schema.org\",\n \"@type\": \"BlogPosting\",\n \"datePublished\": blog.published_at,\n \"dateModified\": blog.updated_at,\n \"headline\": blog.parsed_title,\n \"image\": blog.image_urls,\n \"articleBody\": blog.content_sanitized,\n \"wordCount\": blog.word_count,\n \"author\": {\n \"@type\": \"Person\",\n \"name\": blog.author_name,\n },\n },\n ]}\n />\n </Grid>\n \n {/* Similar Blogs Section - Desktop */}\n {blog.similar_blogs && blog.similar_blogs.length > 0 && (\n <Grid \n item \n md={4}\n lg={3} \n sx={{ \n display: { xs: 'none', md: 'block' } \n }}\n >\n <SimilarBlogsSidebar blogs={blog.similar_blogs} />\n </Grid>\n )}\n \n {/* Similar Blogs Section - Mobile */}\n {blog.similar_blogs && blog.similar_blogs.length > 0 && (\n <Grid \n item \n xs={12}\n sx={{ \n display: { xs: 'block', md: 'none' },\n mt: 4\n }}\n >\n <SimilarBlogsMobile blogs={blog.similar_blogs} />\n </Grid>\n )}\n </Grid>\n </Container>\n </Box>\n );\n};\n\nexport default ReaderBlogShow;\n\n// Component for similar blogs sidebar (desktop)\nconst SimilarBlogsSidebar = function ({ blogs }: { blogs: ReaderBlog[] }) {\n return (\n <Paper \n elevation={0}\n sx={{ \n p: 2, \n borderRadius: 2,\n border: '1px solid',\n borderColor: 'divider',\n }}\n >\n <Typography \n variant=\"h5\" \n component=\"h2\" \n sx={{ \n mb: 2, \n fontWeight: 'bold',\n }}\n >\n Related Reading\n </Typography>\n \n <Box sx={{ display: 'flex', flexDirection: 'column', gap: 2 }}>\n {blogs.map((relatedBlog) => (\n <Card \n key={relatedBlog.id} \n elevation={0}\n sx={{ \n display: 'flex', \n flexDirection: 'column',\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n transform: 'translateY(-4px)',\n boxShadow: 2,\n },\n border: '1px solid',\n borderColor: 'divider',\n }}\n >\n <CardActionArea \n component={RouterLink} \n to={`/reader-blog/${relatedBlog.id}/${parameterize(relatedBlog.canonical_url_title)}`}\n >\n {relatedBlog.image_urls && relatedBlog.image_urls[0] && (\n <CardMedia\n component=\"img\"\n image={relatedBlog.image_urls[0]}\n alt={relatedBlog.parsed_title}\n sx={{ \n width: '100%', \n height: 'auto',\n // aspectRatio: '16/9',\n objectFit: 'cover' \n }}\n />\n )}\n <CardContent sx={{ p: 1.5 }}>\n <Typography \n variant=\"subtitle1\" \n component=\"h3\" \n sx={{ \n fontWeight: 'medium',\n mb: 0.5,\n display: '-webkit-box',\n overflow: 'hidden',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n lineHeight: 1.2,\n }}\n >\n {relatedBlog.parsed_title}\n </Typography>\n <Typography \n variant=\"body2\" \n color=\"text.secondary\"\n sx={{\n display: '-webkit-box',\n overflow: 'hidden',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n }}\n >\n {relatedBlog.truncated_content?.replace(/<[^>]*>/g, '').substring(0, 80)}...\n </Typography>\n </CardContent>\n </CardActionArea>\n </Card>\n ))}\n \n <Box \n sx={{ \n display: 'flex', \n justifyContent: 'flex-end', \n alignItems: 'center',\n mt: 1 \n }}\n >\n <Typography \n variant=\"body2\" \n component={RouterLink} \n to=\"/reader-blog\"\n sx={{ \n color: 'primary.main', \n textDecoration: 'none',\n fontWeight: 'medium',\n display: 'flex',\n alignItems: 'center',\n '&:hover': {\n textDecoration: 'underline',\n }\n }}\n >\n More reading lists <ArrowForwardIcon fontSize=\"small\" sx={{ ml: 0.5 }} />\n </Typography>\n </Box>\n </Box>\n </Paper>\n );\n};\n\n// Component for similar blogs mobile view\nconst SimilarBlogsMobile = function ({ blogs }: { blogs: ReaderBlog[] }) {\n return (\n <Box sx={{ mt: 2 }}>\n <Divider sx={{ mb: 3 }} />\n <Typography \n variant=\"h5\" \n component=\"h2\" \n sx={{ \n mb: 3, \n fontWeight: 'bold',\n textAlign: 'center',\n }}\n >\n You May Also Like\n </Typography>\n \n <Grid container spacing={2}>\n {blogs.map((relatedBlog) => (\n <Grid item xs={12} sm={6} key={relatedBlog.id}>\n <Card \n elevation={1}\n sx={{ \n height: '100%',\n display: 'flex',\n flexDirection: 'column',\n transition: 'all 0.2s ease-in-out',\n '&:hover': {\n transform: 'translateY(-4px)',\n boxShadow: 3,\n },\n }}\n >\n <CardActionArea \n component={RouterLink} \n to={`/reader-blog/${relatedBlog.id}/${parameterize(relatedBlog.canonical_url_title)}`}\n sx={{ height: '100%', display: 'flex', flexDirection: 'column' }}\n >\n {relatedBlog.image_urls && relatedBlog.image_urls[0] && (\n <CardMedia\n component=\"img\"\n image={relatedBlog.image_urls[0]}\n alt={relatedBlog.parsed_title}\n sx={{ \n width: '100%', \n height: 'auto',\n // aspectRatio: '16/9',\n objectFit: 'cover' \n }}\n />\n )}\n <CardContent sx={{ flexGrow: 1 }}>\n <Typography \n variant=\"h6\" \n component=\"h3\" \n sx={{ \n fontWeight: 'medium',\n mb: 1,\n display: '-webkit-box',\n overflow: 'hidden',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 2,\n lineHeight: 1.2,\n }}\n >\n {relatedBlog.parsed_title}\n </Typography>\n <Typography \n variant=\"body2\" \n color=\"text.secondary\"\n sx={{\n display: '-webkit-box',\n overflow: 'hidden',\n WebkitBoxOrient: 'vertical',\n WebkitLineClamp: 3,\n }}\n >\n {relatedBlog.truncated_content?.replace(/<[^>]*>/g, '').substring(0, 120)}...\n </Typography>\n </CardContent>\n </CardActionArea>\n </Card>\n </Grid>\n ))}\n </Grid>\n \n <Box \n sx={{ \n display: 'flex', \n justifyContent: 'center', \n mt: 3 \n }}\n >\n <Button \n variant=\"outlined\" \n color=\"primary\" \n component={RouterLink} \n to=\"/reader-blog\"\n endIcon={<ArrowForwardIcon />}\n >\n Browse More Reading Lists\n </Button>\n </Box>\n </Box>\n );\n};\n\nexport const ReaderBlogDetails = function ({ blog }: { blog: ReaderBlog }) {\n return (\n <Box sx={{ borderLeft: '2px solid', borderColor: '#7fd7ff', pl: 2 }}>\n <Typography variant='body2'>{new Date(blog.published_at!).toDateString()}</Typography>\n <Typography variant='body2' sx={{ display: 'flex', alignItems: 'center' }}>\n {`by `}\n <Box component=\"img\" src={Logo} sx={{ height: '20px', ml: 1, mr: 0.5 }} />\n <Box component=\"b\" sx={{ color: 'primary.main' }}>{blog.author_name}</Box>\n </Typography>\n {blog.blog_categories && blog.blog_categories.length > 0 && (\n <Box sx={{ mt: 1, display: 'flex', flexWrap: 'wrap', gap: 1 }}>\n {blog.blog_categories.map((category) => (\n <RouterLink \n key={category.id}\n to={`/reader-blog-categories/${category.id}/${parameterize(category.label)}`}\n style={{ \n textDecoration: 'none',\n color: theme.palette.primary[600],\n fontSize: '0.875rem',\n backgroundColor: theme.palette.primary[100],\n padding: '3px 8px',\n borderRadius: '4px',\n display: 'inline-block'\n }}\n >\n {category.label}\n </RouterLink>\n ))}\n </Box>\n )}\n </Box>\n )\n}\n","/**\n * Turns some \"Non Slug Case String\" to a \"slug-case-string\"\n *\n * Strips html entities out completely in the first `replace`.\n */\nexport const slugCase = function (token: string): string {\n return trimNonWhitespaceCharacters(token)\n .replace(/&[^;]*;/g, '')\n .replace(/&/g, '')\n .replace(/\\s+/g, '-')\n .toLowerCase();\n};\n\n// convert to camelCase\nexport const camelize = function (str: string) {\n const moddedStr = trimNonWhitespaceCharacters(str)\n .replace(/-/g, ' ')\n .toLowerCase();\n return moddedStr\n .replace(/(?:^\\w|[A-Z]|\\b\\w)/g, (word, index) =>\n index === 0 ? word.toLowerCase() : word.toUpperCase()\n )\n .replace(/\\s+/g, '');\n};\n\n/**\n * Turns some \"Non Slug Case String\" to a \"snake_case_string\"\n */\nexport const snakeCase = function (token: string): string {\n return trimNonWhitespaceCharacters(token)\n .replace(/\\s/g, '_')\n .replace(/-/g, '_')\n .toLowerCase();\n};\n\n/**\n * Remove some junk characters to reduce everything to letters only\n * @param textToTrim\n * @returns\n */\nconst trimNonWhitespaceCharacters = function (textToTrim: string): string {\n return textToTrim\n .trim()\n .replace(/'/g, '')\n .replace(/,/g, '')\n .replace(/_/g, ' ');\n};\n\nexport const parameterize = function (text: string): string {\n return text\n .toLowerCase()\n .trim()\n .replace(/ /g, '-')\n .replace(/[^\\w-]+/g, '');\n};\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _createSvgIcon = _interopRequireDefault(require(\"./utils/createSvgIcon\"));\n\nvar _jsxRuntime = require(\"react/jsx-runtime\");\n\nvar _default = (0, _createSvgIcon.default)( /*#__PURE__*/(0, _jsxRuntime.jsx)(\"path\", {\n d: \"m12 4-1.41 1.41L16.17 11H4v2h12.17l-5.58 5.59L12 20l8-8z\"\n}), 'ArrowForward');\n\nexports.default = _default;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardUtilityClass(slot) {\n return generateUtilityClass('MuiCard', slot);\n}\nconst cardClasses = generateUtilityClasses('MuiCard', ['root']);\nexport default cardClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"raised\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport Paper from '../Paper';\nimport { getCardUtilityClass } from './cardClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardUtilityClass, classes);\n};\n\nconst CardRoot = styled(Paper, {\n name: 'MuiCard',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n overflow: 'hidden'\n };\n});\nconst Card = /*#__PURE__*/React.forwardRef(function Card(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCard'\n });\n\n const {\n className,\n raised = false\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n raised\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardRoot, _extends({\n className: clsx(classes.root, className),\n elevation: raised ? 8 : undefined,\n ref: ref,\n ownerState: ownerState\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? Card.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * If `true`, the card will use raised styling.\n * @default false\n */\n raised: chainPropTypes(PropTypes.bool, props => {\n if (props.raised && props.variant === 'outlined') {\n return new Error('MUI: Combining `raised={true}` with `variant=\"outlined\"` has no effect.');\n }\n\n return null;\n }),\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Card;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardActionAreaUtilityClass(slot) {\n return generateUtilityClass('MuiCardActionArea', slot);\n}\nconst cardActionAreaClasses = generateUtilityClasses('MuiCardActionArea', ['root', 'focusVisible', 'focusHighlight']);\nexport default cardActionAreaClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"children\", \"className\", \"focusVisibleClassName\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport cardActionAreaClasses, { getCardActionAreaUtilityClass } from './cardActionAreaClasses';\nimport ButtonBase from '../ButtonBase';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { jsxs as _jsxs } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root'],\n focusHighlight: ['focusHighlight']\n };\n return composeClasses(slots, getCardActionAreaUtilityClass, classes);\n};\n\nconst CardActionAreaRoot = styled(ButtonBase, {\n name: 'MuiCardActionArea',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(({\n theme\n}) => ({\n display: 'block',\n textAlign: 'inherit',\n width: '100%',\n [`&:hover .${cardActionAreaClasses.focusHighlight}`]: {\n opacity: (theme.vars || theme).palette.action.hoverOpacity,\n '@media (hover: none)': {\n opacity: 0\n }\n },\n [`&.${cardActionAreaClasses.focusVisible} .${cardActionAreaClasses.focusHighlight}`]: {\n opacity: (theme.vars || theme).palette.action.focusOpacity\n }\n}));\nconst CardActionAreaFocusHighlight = styled('span', {\n name: 'MuiCardActionArea',\n slot: 'FocusHighlight',\n overridesResolver: (props, styles) => styles.focusHighlight\n})(({\n theme\n}) => ({\n overflow: 'hidden',\n pointerEvents: 'none',\n position: 'absolute',\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n borderRadius: 'inherit',\n opacity: 0,\n backgroundColor: 'currentcolor',\n transition: theme.transitions.create('opacity', {\n duration: theme.transitions.duration.short\n })\n}));\nconst CardActionArea = /*#__PURE__*/React.forwardRef(function CardActionArea(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardActionArea'\n });\n\n const {\n children,\n className,\n focusVisibleClassName\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = props;\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsxs(CardActionAreaRoot, _extends({\n className: clsx(classes.root, className),\n focusVisibleClassName: clsx(focusVisibleClassName, classes.focusVisible),\n ref: ref,\n ownerState: ownerState\n }, other, {\n children: [children, /*#__PURE__*/_jsx(CardActionAreaFocusHighlight, {\n className: classes.focusHighlight,\n ownerState: ownerState\n })]\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardActionArea.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * @ignore\n */\n focusVisibleClassName: PropTypes.string,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardActionArea;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardContentUtilityClass(slot) {\n return generateUtilityClass('MuiCardContent', slot);\n}\nconst cardContentClasses = generateUtilityClasses('MuiCardContent', ['root']);\nexport default cardContentClasses;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nconst _excluded = [\"className\", \"component\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport styled from '../styles/styled';\nimport useThemeProps from '../styles/useThemeProps';\nimport { getCardContentUtilityClass } from './cardContentClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes\n } = ownerState;\n const slots = {\n root: ['root']\n };\n return composeClasses(slots, getCardContentUtilityClass, classes);\n};\n\nconst CardContentRoot = styled('div', {\n name: 'MuiCardContent',\n slot: 'Root',\n overridesResolver: (props, styles) => styles.root\n})(() => {\n return {\n padding: 16,\n '&:last-child': {\n paddingBottom: 24\n }\n };\n});\nconst CardContent = /*#__PURE__*/React.forwardRef(function CardContent(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardContent'\n });\n\n const {\n className,\n component = 'div'\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const ownerState = _extends({}, props, {\n component\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardContentRoot, _extends({\n as: component,\n className: clsx(classes.root, className),\n ownerState: ownerState,\n ref: ref\n }, other));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardContent.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardContent;","import { generateUtilityClass, generateUtilityClasses } from '@mui/base';\nexport function getCardMediaUtilityClass(slot) {\n return generateUtilityClass('MuiCardMedia', slot);\n}\nconst cardMediaClasses = generateUtilityClasses('MuiCardMedia', ['root', 'media', 'img']);\nexport default cardMediaClasses;","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nconst _excluded = [\"children\", \"className\", \"component\", \"image\", \"src\", \"style\"];\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport { chainPropTypes } from '@mui/utils';\nimport { unstable_composeClasses as composeClasses } from '@mui/base';\nimport useThemeProps from '../styles/useThemeProps';\nimport styled from '../styles/styled';\nimport { getCardMediaUtilityClass } from './cardMediaClasses';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\n\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n isMediaComponent,\n isImageComponent\n } = ownerState;\n const slots = {\n root: ['root', isMediaComponent && 'media', isImageComponent && 'img']\n };\n return composeClasses(slots, getCardMediaUtilityClass, classes);\n};\n\nconst CardMediaRoot = styled('div', {\n name: 'MuiCardMedia',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n const {\n isMediaComponent,\n isImageComponent\n } = ownerState;\n return [styles.root, isMediaComponent && styles.media, isImageComponent && styles.img];\n }\n})(({\n ownerState\n}) => _extends({\n display: 'block',\n backgroundSize: 'cover',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: 'center'\n}, ownerState.isMediaComponent && {\n width: '100%'\n}, ownerState.isImageComponent && {\n // âš ï¸ object-fit is not supported by IE11.\n objectFit: 'cover'\n}));\nconst MEDIA_COMPONENTS = ['video', 'audio', 'picture', 'iframe', 'img'];\nconst IMAGE_COMPONENTS = ['picture', 'img'];\nconst CardMedia = /*#__PURE__*/React.forwardRef(function CardMedia(inProps, ref) {\n const props = useThemeProps({\n props: inProps,\n name: 'MuiCardMedia'\n });\n\n const {\n children,\n className,\n component = 'div',\n image,\n src,\n style\n } = props,\n other = _objectWithoutPropertiesLoose(props, _excluded);\n\n const isMediaComponent = MEDIA_COMPONENTS.indexOf(component) !== -1;\n const composedStyle = !isMediaComponent && image ? _extends({\n backgroundImage: `url(\"${image}\")`\n }, style) : style;\n\n const ownerState = _extends({}, props, {\n component,\n isMediaComponent,\n isImageComponent: IMAGE_COMPONENTS.indexOf(component) !== -1\n });\n\n const classes = useUtilityClasses(ownerState);\n return /*#__PURE__*/_jsx(CardMediaRoot, _extends({\n className: clsx(classes.root, className),\n as: component,\n role: !isMediaComponent && image ? 'img' : undefined,\n ref: ref,\n style: composedStyle,\n ownerState: ownerState,\n src: isMediaComponent ? image || src : undefined\n }, other, {\n children: children\n }));\n});\nprocess.env.NODE_ENV !== \"production\" ? CardMedia.propTypes\n/* remove-proptypes */\n= {\n // ----------------------------- Warning --------------------------------\n // | These PropTypes are generated from the TypeScript type definitions |\n // | To update them edit the d.ts file and run \"yarn proptypes\" |\n // ----------------------------------------------------------------------\n\n /**\n * The content of the component.\n */\n children: chainPropTypes(PropTypes.node, props => {\n if (!props.children && !props.image && !props.src && !props.component) {\n return new Error('MUI: Either `children`, `image`, `src` or `component` prop must be specified.');\n }\n\n return null;\n }),\n\n /**\n * Override or extend the styles applied to the component.\n */\n classes: PropTypes.object,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The component used for the root node.\n * Either a string to use a HTML element or a component.\n */\n component: PropTypes.elementType,\n\n /**\n * Image to be displayed as a background image.\n * Either `image` or `src` prop must be specified.\n * Note that caller must specify height otherwise the image will not be visible.\n */\n image: PropTypes.string,\n\n /**\n * An alias for `image` property.\n * Available only with media components.\n * Media components: `video`, `audio`, `picture`, `iframe`, `img`.\n */\n src: PropTypes.string,\n\n /**\n * @ignore\n */\n style: PropTypes.object,\n\n /**\n * The system prop that allows defining system overrides as well as additional CSS styles.\n */\n sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default CardMedia;"],"names":["Helmet","metaContent","schema","title","url","description","ogImage","currentOgImage","height","property","content","rel","href","type","JSON","stringify","map","sch","defaultProps","sx","display","justifyContent","alignItems","width","p","xs","md","xl","backgroundColor","container","spacing","maxWidth","item","sm","flexDirection","variant","mb","fontWeight","px","pb","pt","hideText","NewsletterEmailSignup","signupEmailFieldRef","extraParams","btnText","follow","handleSuccess","React","email","setEmail","creating","setCreating","dispatch","useAppDispatch","event","preventDefault","createReader","unwrap","then","e","FacebookPixel","RedditPixel","ReactGA","category","action","ReactPinterestTag","value","order_quantity","currency","line_items","product_name","product_id","product_price","product_quantity","send_to","process","skip_categories","addSnack","message","pushUrl","uuid","push","finally","catch","margin","component","color","align","onSubmit","onChange","target","ref","required","fullWidth","name","label","loading","id","parseInt","useParams","blogLoading","setBlogLoading","blog","useAppSelector","state","selectReaderBlog","getReaderBlog","resourceType","joins","Box","mt","LoadingSpinner","NewsletterBanner","Container","Grid","lg","Typography","parsed_title","ReaderBlogDetails","base_generated_content","intro","split","paragraph","books","book","mr","asin","src","image_url","alt","author","flexGrow","borderLeft","borderColor","pl","why_this_book_fits","book_description","what_readers_like","Button","join","parameterize","canonical_url_title","content_sanitized","substring","image_urls","published_at","updated_at","word_count","author_name","similar_blogs","length","SimilarBlogsSidebar","blogs","SimilarBlogsMobile","Paper","elevation","borderRadius","border","gap","relatedBlog","Card","transition","transform","boxShadow","CardActionArea","RouterLink","to","CardMedia","image","objectFit","CardContent","overflow","WebkitBoxOrient","WebkitLineClamp","lineHeight","truncated_content","replace","textDecoration","ArrowForward","fontSize","ml","Divider","textAlign","endIcon","Date","toDateString","Logo","blog_categories","flexWrap","style","theme","padding","slugCase","token","trimNonWhitespaceCharacters","toLowerCase","camelize","str","word","index","toUpperCase","textToTrim","trim","text","_interopRequireDefault","require","exports","_createSvgIcon","_jsxRuntime","_default","default","jsx","d","getCardUtilityClass","slot","generateUtilityClass","generateUtilityClasses","_excluded","CardRoot","styled","overridesResolver","props","styles","root","inProps","useThemeProps","className","raised","other","_objectWithoutPropertiesLoose","ownerState","_extends","classes","composeClasses","useUtilityClasses","_jsx","clsx","undefined","getCardActionAreaUtilityClass","CardActionAreaRoot","ButtonBase","cardActionAreaClasses","opacity","vars","palette","hoverOpacity","focusOpacity","CardActionAreaFocusHighlight","focusHighlight","pointerEvents","position","top","right","bottom","left","transitions","create","duration","short","children","focusVisibleClassName","_jsxs","focusVisible","getCardContentUtilityClass","CardContentRoot","paddingBottom","as","getCardMediaUtilityClass","CardMediaRoot","isMediaComponent","isImageComponent","media","img","backgroundSize","backgroundRepeat","backgroundPosition","MEDIA_COMPONENTS","IMAGE_COMPONENTS","indexOf","composedStyle","backgroundImage","slots","role"],"sourceRoot":""}