{"version":3,"file":"static/js/7019.7d2eb530.chunk.js","mappings":"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","sources":["components/meta/Helmet.tsx","statics/Homepage/BorderBand.tsx","statics/Homepage/EbookPlatforms.tsx","statics/Homepage/HorizontalBand.tsx","statics/Homepage/BookStrip.tsx","statics/Homepage/Sections/SectionTitle.tsx","statics/Homepage/Sections/HowItWorks/svg-icons/newsletter-email.svg","statics/Homepage/Sections/HowItWorks/svg-icons/books.svg","statics/Homepage/Sections/HowItWorks/svg-icons/reader.svg","statics/Homepage/Sections/HowItWorks/HowItWorksIcon.tsx","statics/Homepage/Homepage.tsx","statics/Homepage/NewsletterEmailSignup.tsx","statics/Homepage/Viking/distance-from-top.ts","statics/Homepage/Viking/Eye.tsx","statics/Homepage/Viking/Expression.tsx","statics/Homepage/Viking/Viking.tsx"],"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 React from 'react';\nimport { Box } from '@mui/material';\n\nconst BorderBand = function ({\n borderColor,\n borderHeight,\n}: {\n borderColor: string;\n borderHeight?: string;\n}) {\n return (\n <Box\n sx={{\n backgroundColor: borderColor,\n height: borderHeight,\n }}\n />\n );\n};\n\nBorderBand.defaultProps = {\n borderHeight: '20px',\n};\n\nexport default BorderBand;\n","import React from 'react';\nimport { Container, Grid } from '@mui/material';\n\nconst classes = {\n platform: {\n backgroundImage:\n 'image-set(url(https://website-assets-public.s3.us-west-2.amazonaws.com/homepage/e-reader-logos.webp) 1x, url(https://website-assets-public.s3.us-west-2.amazonaws.com/homepage/e-reader-logos.png) 1x)',\n backgroundRepeat: 'no-repeat',\n overflow: 'hidden',\n height: '50px',\n },\n kindle: {\n backgroundPosition: 'center -11px',\n },\n googlePlay: {\n backgroundPosition: 'center -76px',\n },\n iBooks: {\n backgroundPosition: 'center -145px',\n },\n nook: {\n backgroundPosition: 'center -217px',\n },\n kobo: {\n backgroundPosition: 'center -291px',\n },\n};\n\nconst EbookPlatforms = function () {\n return (\n <Container maxWidth=\"md\" sx={{ mb: 5 }}>\n <Grid container>\n <Grid item xs={0} md={2} />\n <Grid item xs={6} md={3} sx={[classes.platform, classes.kindle]} />\n\n <Grid item xs={0} md={2} />\n <Grid item xs={6} md={3} sx={[classes.platform, classes.googlePlay]} />\n <Grid item xs={0} md={2} />\n </Grid>\n <Grid container sx={{ mt: 2 }}>\n <Grid item xs={6} md={4} sx={[classes.platform, classes.iBooks]} />\n <Grid item xs={6} md={4} sx={[classes.platform, classes.nook]} />\n <Grid item xs={3} display={{ md: 'none' }} />\n <Grid item xs={6} md={4} sx={[classes.platform, classes.kobo]} />\n </Grid>\n </Container>\n );\n};\n\nexport default EbookPlatforms;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport BorderBand from './BorderBand';\n\nconst HorizontalBand = function ({\n borderColor,\n backgroundColor,\n children,\n}: {\n borderColor: string;\n backgroundColor: string;\n children: React.ReactNode;\n}) {\n return (\n <>\n <BorderBand borderColor={borderColor} />\n <Box\n sx={{\n backgroundColor,\n padding: '70px 40px',\n }}\n >\n {children}\n </Box>\n <BorderBand borderColor={borderColor} />\n </>\n );\n};\n\nexport default HorizontalBand;\n","import React from 'react';\nimport { Box } from '@mui/material';\n\nconst classes = {\n strip: {\n transition: 'all 100ms',\n height: '150px',\n backgroundImage:\n 'image-set(url(\"https://website-assets-public.s3.us-west-2.amazonaws.com/homepage/book-strip.avif\") 1x, url(https://website-assets-public.s3.us-west-2.amazonaws.com/homepage/book-strip.jpeg) 1x)',\n backgroundRepeat: 'repeat-x',\n backgroundPosition: ' 0px center',\n backgroundColor: 'black',\n },\n};\n\nconst speed = 1 / 4;\n\nconst BookStrip = function ({ isReversed }: { isReversed?: boolean }) {\n const [scrollPosition, setScrollPosition] = React.useState(0);\n const handleScroll = () => {\n const position = window.pageYOffset;\n setScrollPosition(position);\n };\n\n React.useEffect(() => {\n window.addEventListener('scroll', handleScroll, { passive: true });\n\n return () => {\n window.removeEventListener('scroll', handleScroll);\n };\n }, []);\n\n const multiplier = isReversed ? -1 : 1;\n return (\n <Box\n sx={[\n classes.strip,\n {\n backgroundPosition: `${multiplier * scrollPosition * speed}px center`,\n },\n ]}\n >\n \n </Box>\n );\n};\n\nBookStrip.defaultProps = {\n isReversed: false,\n};\n\nexport default BookStrip;\n","import React from 'react';\nimport { Typography } from '@mui/material';\n\nconst SectionTitle = function ({ title }: { title: string }) {\n return (\n <Typography\n variant=\"h3\"\n sx={{\n textShadow: '1px 1px 1px rgba(0, 0, 0, 0.6)',\n color: 'white',\n textAlign: 'center',\n fontStyle: 'italic',\n mb: 2,\n }}\n >\n {title}\n </Typography>\n );\n};\n\nexport default SectionTitle;\n","var _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgNewsletterEmail(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: \"70pt\",\n height: \"70pt\",\n viewBox: \"0 0 80 80\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"surface1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n fillRule: \"nonzero\",\n fill: \"rgb(100%,100%,100%)\",\n fillOpacity: 1\n },\n d: \"M 39.773438 1.308594 L 0 31.003906 L 0 78.226562 L 79.535156 78.226562 L 79.535156 31.003906 Z M 28.769531 22.5 C 29.9375 20.367188 31.546875 18.761719 33.585938 17.695312 C 35.621094 16.617188 37.941406 16.078125 40.566406 16.078125 C 42.78125 16.078125 44.757812 16.511719 46.488281 17.371094 C 48.21875 18.238281 49.535156 19.464844 50.457031 21.058594 C 51.355469 22.652344 51.824219 24.390625 51.824219 26.273438 C 51.824219 28.519531 51.128906 30.554688 49.742188 32.371094 C 48 34.664062 45.78125 35.808594 43.0625 35.808594 C 42.328125 35.808594 41.78125 35.683594 41.40625 35.425781 C 41.042969 35.164062 40.785156 34.796875 40.664062 34.296875 C 39.644531 35.308594 38.433594 35.816406 37.074219 35.816406 C 35.609375 35.816406 34.398438 35.3125 33.433594 34.308594 C 32.46875 33.296875 31.984375 31.949219 31.984375 30.277344 C 31.984375 28.195312 32.5625 26.3125 33.730469 24.605469 C 35.144531 22.523438 36.945312 21.476562 39.152344 21.476562 C 40.722656 21.476562 41.882812 22.078125 42.628906 23.28125 L 42.960938 21.8125 L 46.460938 21.8125 L 44.460938 31.292969 C 44.335938 31.898438 44.273438 32.277344 44.273438 32.453125 C 44.273438 32.683594 44.324219 32.835938 44.421875 32.953125 C 44.523438 33.0625 44.644531 33.117188 44.777344 33.117188 C 45.214844 33.117188 45.757812 32.867188 46.425781 32.347656 C 47.328125 31.683594 48.050781 30.773438 48.605469 29.652344 C 49.160156 28.523438 49.445312 27.355469 49.445312 26.144531 C 49.445312 23.980469 48.664062 22.167969 47.09375 20.699219 C 45.519531 19.25 43.324219 18.515625 40.515625 18.515625 C 38.121094 18.515625 36.097656 19.003906 34.4375 19.984375 C 32.777344 20.949219 31.527344 22.324219 30.675781 24.097656 C 29.835938 25.855469 29.414062 27.703125 29.414062 29.617188 C 29.414062 31.472656 29.894531 33.167969 30.828125 34.691406 C 31.773438 36.222656 33.085938 37.332031 34.78125 38.035156 C 36.480469 38.734375 38.425781 39.082031 40.609375 39.082031 C 42.710938 39.082031 44.519531 38.789062 46.042969 38.199219 C 47.566406 37.613281 48.78125 36.742188 49.710938 35.558594 L 52.515625 35.558594 C 51.636719 37.351562 50.289062 38.753906 48.46875 39.773438 C 46.375 40.9375 43.828125 41.515625 40.824219 41.515625 C 37.90625 41.515625 35.398438 41.027344 33.28125 40.046875 C 31.160156 39.0625 29.59375 37.613281 28.550781 35.695312 C 27.523438 33.777344 27.015625 31.6875 27.015625 29.429688 C 27.015625 26.953125 27.59375 24.640625 28.769531 22.5 Z M 3.519531 33.519531 C 4.253906 33.117188 30.933594 51.601562 30.933594 51.601562 C 30.933594 51.601562 4.386719 73.25 3.433594 72.933594 C 2.484375 72.621094 2.78125 33.921875 3.519531 33.519531 Z M 6.769531 75.351562 C 6.460938 74.671875 38.9375 50.019531 39.769531 50.019531 C 40.597656 50.019531 73.585938 74.53125 73.269531 75.269531 C 72.949219 76.003906 7.074219 76.03125 6.769531 75.351562 Z M 48.433594 51.683594 C 48.433594 50.746094 75.609375 31.28125 76.730469 31.941406 C 77.851562 32.601562 77.375 72.976562 76.433594 73.269531 C 75.492188 73.558594 48.433594 52.621094 48.433594 51.683594 Z M 41.207031 24.660156 C 41.671875 25.191406 41.902344 25.957031 41.902344 26.953125 C 41.902344 27.84375 41.730469 28.808594 41.390625 29.832031 C 41.058594 30.867188 40.648438 31.65625 40.183594 32.191406 C 39.863281 32.566406 39.523438 32.84375 39.191406 33.019531 C 38.75 33.269531 38.285156 33.390625 37.78125 33.390625 C 37.105469 33.394531 36.550781 33.125 36.089844 32.59375 C 35.640625 32.0625 35.414062 31.25 35.414062 30.128906 C 35.414062 29.289062 35.574219 28.324219 35.902344 27.242188 C 36.230469 26.152344 36.714844 25.324219 37.355469 24.730469 C 38.003906 24.144531 38.703125 23.851562 39.457031 23.851562 C 40.160156 23.855469 40.75 24.125 41.207031 24.660156 Z M 41.207031 24.660156 \"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNewsletterEmail);\nexport default __webpack_public_path__ + \"static/media/newsletter-email.0f8391762f04eaf15aa62835cb8db0f3.svg\";\nexport { ForwardRef as ReactComponent };","var _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgBooks(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: \"80pt\",\n height: \"80pt\",\n viewBox: \"0 0 80 80\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"surface1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n fillRule: \"nonzero\",\n fill: \"rgb(100%,100%,100%)\",\n fillOpacity: 1\n },\n d: \"M 74.308594 27.648438 C 73.988281 25.214844 73.941406 21.027344 76.199219 19.617188 C 76.242188 19.59375 76.269531 19.554688 76.304688 19.523438 C 78.152344 18.933594 79.433594 18.105469 78.429688 16.988281 L 51.179688 8.777344 L 7.058594 14.914062 C 7.058594 14.914062 2.007812 15.632812 2.457031 23.484375 C 2.703125 27.757812 4.042969 29.855469 5.214844 30.886719 L 1.59375 31.976562 C 0.589844 33.09375 1.867188 33.921875 3.714844 34.511719 C 3.75 34.546875 3.78125 34.582031 3.820312 34.609375 C 6.078125 36.015625 6.035156 40.207031 5.710938 42.636719 C -2.402344 44.941406 0.511719 45.691406 0.511719 45.691406 L 2.289062 46.125 C 1.039062 47.253906 -0.203125 49.398438 0.0273438 53.464844 C 0.480469 61.3125 4.628906 61.855469 4.628906 61.855469 L 33.503906 71.242188 L 77.082031 60.683594 C 77.082031 60.683594 79.996094 59.933594 71.882812 57.628906 C 71.554688 55.199219 71.507812 51.011719 73.773438 49.601562 C 73.8125 49.574219 73.84375 49.539062 73.878906 49.507812 C 75.726562 48.914062 77.003906 48.085938 76 46.972656 L 74.105469 46.398438 C 75.367188 45.636719 77.265625 43.644531 77.5625 38.476562 C 77.769531 34.917969 76.839844 32.835938 75.765625 31.609375 L 79.511719 30.703125 C 79.511719 30.703125 82.421875 29.953125 74.308594 27.648438 Z M 37.859375 27.546875 L 45.1875 26.042969 L 69.953125 20.953125 L 73.644531 20.191406 C 72.464844 22.351562 72.511719 25.304688 72.707031 27.203125 C 72.75 27.632812 72.800781 28.023438 72.847656 28.320312 L 68.808594 29.324219 L 37.550781 37.101562 Z M 6.378906 35.183594 L 10.066406 35.945312 L 33.851562 40.832031 L 35.929688 41.257812 L 42.160156 42.539062 L 42.46875 52.09375 L 10.339844 44.101562 L 7.171875 43.3125 C 7.21875 43.015625 7.269531 42.625 7.3125 42.191406 C 7.507812 40.296875 7.558594 37.34375 6.378906 35.183594 Z M 4.945312 23.105469 C 4.902344 21.019531 5.273438 19.507812 6.023438 18.742188 C 6.503906 18.25 7.066406 18.148438 7.457031 18.148438 C 7.660156 18.148438 7.808594 18.175781 7.816406 18.175781 L 26.828125 24.375 L 36.3125 27.46875 L 36 37.089844 L 9.394531 29.628906 L 7.988281 29.234375 C 7.9375 29.222656 7.867188 29.210938 7.8125 29.207031 C 7.703125 29.199219 5.074219 28.957031 4.945312 23.105469 Z M 33.570312 67.074219 L 5.558594 59.21875 C 5.507812 59.203125 5.4375 59.195312 5.382812 59.191406 C 5.273438 59.183594 2.640625 58.941406 2.511719 53.089844 C 2.46875 51 2.84375 49.492188 3.59375 48.722656 C 4.074219 48.234375 4.636719 48.132812 5.023438 48.132812 C 5.230469 48.132812 5.375 48.160156 5.386719 48.160156 L 33.878906 57.449219 Z M 70.277344 57.183594 C 70.320312 57.613281 70.371094 58.007812 70.417969 58.304688 L 35.121094 67.085938 L 35.429688 57.53125 L 42.972656 55.980469 L 44.089844 56.25 L 48.265625 54.890625 L 67.519531 50.933594 L 71.210938 50.175781 C 70.03125 52.332031 70.082031 55.289062 70.277344 57.183594 Z M 72.222656 44.199219 C 72.15625 44.199219 72.09375 44.207031 72.03125 44.226562 L 69.371094 44.972656 L 44.019531 52.082031 L 43.710938 42.460938 L 52.027344 39.746094 L 72.164062 33.179688 C 72.167969 33.179688 73.226562 32.945312 74 33.734375 C 74.75 34.5 75.125 36.011719 75.082031 38.097656 C 74.949219 43.949219 72.316406 44.191406 72.222656 44.199219 Z M 72.222656 44.199219 \"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBooks);\nexport default __webpack_public_path__ + \"static/media/books.b15cf2f25afced6ad00bb6d39f47eae1.svg\";\nexport { ForwardRef as ReactComponent };","var _excluded = [\"title\", \"titleId\"];\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\nimport * as React from \"react\";\nfunction SvgReader(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n width: \"80pt\",\n height: \"80pt\",\n viewBox: \"0 0 80 80\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, /*#__PURE__*/React.createElement(\"g\", {\n id: \"surface1\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n fillRule: \"nonzero\",\n fill: \"rgb(100%,100%,100%)\",\n fillOpacity: 1\n },\n d: \"M 19.371094 27.484375 L 24.53125 28.371094 C 23.011719 26.554688 23.835938 21.175781 23.835938 21.175781 C 28.890625 20.835938 34.605469 16.851562 35.050781 11.300781 C 41.453125 16.605469 50.523438 16.863281 58.082031 17.539062 C 58.082031 17.539062 60.574219 21.933594 59.601562 27.558594 L 63.585938 26.808594 C 62.734375 16.078125 58.628906 1.546875 41.558594 1.546875 C 39.136719 1.546875 36.308594 1.84375 35.085938 2.398438 C 33.855469 2.949219 33.636719 4.207031 32.84375 4.472656 C 32.011719 4.753906 30.84375 4.640625 30.113281 4.992188 C 18.746094 10.464844 19.140625 23.808594 19.140625 23.808594 Z M 19.371094 27.484375 \"\n }), /*#__PURE__*/React.createElement(\"path\", {\n style: {\n stroke: \"none\",\n fillRule: \"nonzero\",\n fill: \"rgb(100%,100%,100%)\",\n fillOpacity: 1\n },\n d: \"M 70.542969 48.359375 C 70.816406 47.9375 70.996094 47.382812 70.996094 46.765625 C 70.996094 45.460938 70.246094 44.40625 69.320312 44.40625 C 69.265625 44.40625 69.21875 44.441406 69.164062 44.449219 L 69.164062 27.976562 L 40.648438 32.515625 L 12.121094 27.972656 L 12.121094 44.488281 C 12.015625 44.460938 11.925781 44.40625 11.816406 44.40625 C 10.890625 44.40625 10.140625 45.464844 10.140625 46.765625 C 10.140625 47.179688 10.238281 47.546875 10.371094 47.886719 C 9.425781 49.199219 8.808594 50.921875 8.808594 52.871094 C 8.808594 55.851562 10.164062 58.410156 12.117188 59.566406 L 12.117188 74.503906 L 40.644531 79.046875 L 69.160156 74.507812 L 69.160156 59.078125 C 70.734375 57.765625 71.78125 55.484375 71.78125 52.871094 C 71.785156 51.148438 71.296875 49.609375 70.542969 48.359375 Z M 39.351562 76.21875 L 14.707031 72.292969 L 14.707031 60.195312 C 17.675781 60.003906 17.640625 56.808594 17.640625 52.871094 C 17.640625 48.925781 17.675781 45.734375 14.707031 45.535156 L 14.707031 31.003906 L 39.351562 34.933594 Z M 66.578125 36.210938 L 66.578125 45.558594 C 66.433594 45.539062 66.308594 45.503906 66.164062 45.503906 C 63.058594 45.503906 62.949219 48.800781 62.949219 52.867188 C 62.949219 56.929688 63.058594 60.226562 66.164062 60.226562 C 66.308594 60.226562 66.433594 60.1875 66.578125 60.175781 L 66.578125 72.289062 L 41.9375 76.214844 L 41.9375 34.933594 L 66.578125 31.003906 Z M 66.578125 36.210938 \"\n })));\n}\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgReader);\nexport default __webpack_public_path__ + \"static/media/reader.34df2eb24ef9c943ce5764c46093bd2b.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react';\nimport { Box, Grid, Typography } from '@mui/material';\nimport { ReactComponent as NewsletterEmail } from './svg-icons/newsletter-email.svg';\nimport { ReactComponent as Books } from './svg-icons/books.svg';\nimport { ReactComponent as Reader } from './svg-icons/reader.svg';\n\nconst iconComponent = (icon: string) => {\n switch (icon) {\n case 'NewsletterEmail':\n return NewsletterEmail;\n case 'Books':\n return Books;\n case 'Reader':\n default:\n return Reader;\n }\n};\n\nconst HowItWorksIcon = function ({\n icon,\n text,\n iconHeight,\n}: {\n icon: string;\n text: string;\n iconHeight?: string;\n}) {\n return (\n <Grid item xs={12} sm={4}>\n <Box sx={{ height: '115px' }}>\n <Box\n component={iconComponent(icon)}\n sx={{\n pt: 2,\n pb: 2,\n margin: '0 auto',\n display: 'block',\n height: iconHeight,\n }}\n />\n </Box>\n <Typography\n sx={{\n color: 'white',\n p: 1.5,\n textAlign: 'center',\n textShadow: '1px 1px 1px rgba(0, 0, 0, 0.4)',\n }}\n >\n {text}\n </Typography>\n </Grid>\n );\n};\n\nHowItWorksIcon.defaultProps = {\n iconHeight: '110px',\n};\n\nexport default HowItWorksIcon;\n","import React from 'react';\nimport {\n Box,\n Container,\n darken,\n Grid,\n lighten,\n Typography,\n} from '@mui/material';\nimport HorizontalBand from './HorizontalBand';\nimport theme from '../../theme/theme';\nimport BookStrip from './BookStrip';\nimport BorderBand from './BorderBand';\nimport SectionTitle from './Sections/SectionTitle';\nimport HowItWorksIcon from './Sections/HowItWorks/HowItWorksIcon';\nimport NewsletterEmailSignup from './NewsletterEmailSignup';\nimport EbookPlatforms from './EbookPlatforms';\nimport Viking from './Viking/Viking';\nimport Helmet from '../../components/meta/Helmet';\n\nconst classes = {\n greatBooksSection: {\n color: 'white',\n p: 1.5,\n textAlign: 'center',\n textShadow: '1px 1px 1px rgba(0, 0, 0, 0.4)',\n },\n vikingContainer: {\n [theme.breakpoints.down('sm')]: {\n display: 'none',\n },\n },\n};\n\nconst Homepage = function () {\n const signupEmailFieldRefTop = React.useRef<any>(null);\n\n const [vikingsDoubled, setVikingsDoubled] = React.useState(false);\n\n return (\n <Box sx={{ pt: 4 }}>\n <Grid container>\n <Grid item xs={0} sm={0} md={4} sx={classes.vikingContainer}>\n {vikingsDoubled && (\n <Box sx={{ display: ['none', 'none', 'block'] }}>\n <Viking\n elementRef={signupEmailFieldRefTop}\n onClick={() => setVikingsDoubled(!vikingsDoubled)}\n />\n </Box>\n )}\n </Grid>\n <Grid item xs={12} sm={7} md={4}>\n <Box sx={{ my: 5 }}>\n <NewsletterEmailSignup signupEmailFieldRef={signupEmailFieldRefTop} />\n </Box>\n </Grid>\n <Grid item xs={0} sm={5} md={4} sx={classes.vikingContainer}>\n <Viking\n elementRef={signupEmailFieldRefTop}\n onClick={() => setVikingsDoubled(!vikingsDoubled)}\n />\n </Grid>\n </Grid>\n\n <EbookPlatforms />\n\n <BorderBand borderColor={lighten(theme.palette.info.light, 0.85)} />\n <BookStrip />\n <HorizontalBand\n borderColor={lighten(theme.palette.secondary.light, 0.6)}\n backgroundColor={darken(theme.palette.secondary.main, 0.2)}\n >\n <SectionTitle title=\"Great Books, Great Deals\" />\n <Container maxWidth=\"sm\">\n <Typography sx={classes.greatBooksSection}>\n Get bestselling <em>free and half priced eBooks</em> every day. Find\n out what you're missing out on -- sign up now!\n </Typography>\n\n <Typography sx={classes.greatBooksSection}>\n Book Raider scours the four corners of the known world for the best\n books to bring back to our beloved readers. He's kind of like\n Santa... <br />\n but for book deals.\n </Typography>\n <Typography sx={classes.greatBooksSection}>\n We take the stress and hassle out of finding your next unforgettable\n book. All you have to worry about is not staying up until 3am glued\n to your eReader.\n </Typography>\n </Container>\n </HorizontalBand>\n\n <BookStrip isReversed />\n\n <HorizontalBand\n borderColor={lighten(theme.palette.primary.light, 0.6)}\n backgroundColor={theme.palette.primary.main}\n >\n <SectionTitle title=\"How it Works\" />\n <Container maxWidth=\"md\">\n <Grid container>\n <HowItWorksIcon\n icon=\"NewsletterEmail\"\n iconHeight=\"100px\"\n text=\"Tell us which genres you like and where to send your eBooks.\"\n />\n <HowItWorksIcon\n icon=\"Books\"\n text=\"We'll send you amazing eBooks that are free (or close to it).\"\n />\n <HowItWorksIcon\n icon=\"Reader\"\n text=\"Download and read unforgettable eBooks. No catches.\"\n />\n </Grid>\n </Container>\n </HorizontalBand>\n\n <BookStrip />\n <BorderBand borderColor={lighten(theme.palette.info.light, 0.85)} />\n\n {/* Start the tab index on this form at 3, which prevents the two on-page forms from tabbing from one text field to the next */}\n <Box sx={{ my: 5 }}>\n <NewsletterEmailSignup />\n </Box>\n <EbookPlatforms />\n <Helmet\n metaContent={{\n title: `BookRaid - Sign up for Free Ebooks`,\n url: 'https://bookraid.com/',\n description: 'Free and discount eBooks every day',\n }}\n />\n </Box>\n );\n};\n\nexport default Homepage;\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","export default function distanceFromTop(ref: any) {\n let allTopOffsets = ref.current.offsetTop;\n let elem = ref.current.offsetParent;\n while (elem) {\n allTopOffsets += elem.offsetTop;\n elem = elem.offsetParent;\n }\n return allTopOffsets;\n}\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport distanceFromTop from './distance-from-top';\n\nconst eyeSize = 21;\nconst eyePadding = 10;\n\nconst classes = {\n container: {\n width: `${eyeSize + eyePadding}px`,\n height: `${eyeSize + eyePadding}px`,\n paddingTop: `${eyePadding}px`,\n paddingLeft: `${eyePadding}px`,\n borderRadius: '50%',\n overflow: 'hidden',\n position: 'relative',\n },\n eye: {\n width: `${eyeSize}px`,\n height: `${eyeSize}px`,\n position: 'absolute',\n background:\n 'url(https://website-assets-public.s3.us-west-2.amazonaws.com/viking/all-viking-expressions.png) no-repeat 0 -757px',\n },\n};\n\n/**\n * Given the parameters defining the slope of the gaze,\n * return the unit vector representing the gaze.\n *\n * A special case exists when no data is passed in.\n * In that event, we simply return a vector as a point.\n * Zero x and y. This results in the eyes looking straight forward.\n */\nconst getUnitVector = (elementPos: any, cursorPos: any) => {\n const xDist = cursorPos.x - elementPos.x;\n const yDist = cursorPos.y - elementPos.y;\n const hypotenuse = Math.sqrt(xDist ** 2 + yDist ** 2);\n\n if (hypotenuse === 0) return { x: 0, y: 0 };\n\n return {\n x: xDist / hypotenuse,\n y: yDist / hypotenuse,\n };\n};\n\nconst handleWindowMouseMove = (event: any, ref: any, setUnitVector: any) => {\n if (!ref.current || !ref.current.offsetParent) {\n return;\n }\n\n setUnitVector(\n getUnitVector(\n {\n x:\n ref.current.offsetLeft +\n ref.current.offsetParent.offsetLeft +\n ref.current.offsetParent.offsetParent.offsetLeft +\n ref.current.offsetWidth / 2,\n y: distanceFromTop(ref) + ref.current.offsetHeight / 2,\n },\n {\n x: event.clientX,\n y: event.clientY,\n }\n )\n );\n};\n\nconst Eye = function () {\n const [unitVector, setUnitVector] = React.useState({ x: 0, y: 0 });\n const ref = React.useRef<any>(null);\n\n React.useEffect(() => {\n // Get global mouse coordinates\n window.addEventListener('mousemove', (event) =>\n handleWindowMouseMove(event, ref, setUnitVector)\n );\n\n return () => {\n window.removeEventListener('mousemove', (event) =>\n handleWindowMouseMove(event, ref, setUnitVector)\n );\n };\n }, []);\n\n const movementSx = {\n top: `${eyePadding / 2 + eyePadding * unitVector.y}px`,\n left: `${eyePadding / 2 + eyePadding * unitVector.x}px`,\n };\n\n return (\n <Box sx={classes.container} ref={ref}>\n <Box sx={[classes.eye, movementSx]} />\n </Box>\n );\n};\n\nexport default Eye;\n","import React from 'react';\nimport { Box } from '@mui/material';\nimport distanceFromTop from './distance-from-top';\n\nconst distanceFromLeft = 20;\nconst initialDistanceFromTop = -5;\nconst distanceBetweenExpressions = 100;\n\nconst classes = {\n expression: {\n position: 'absolute',\n top: '65px',\n left: '0',\n width: '100%',\n height: '100px',\n backgroundImage:\n 'url(https://website-assets-public.s3.us-west-2.amazonaws.com/viking/all-viking-expressions.png)',\n backgroundRepeat: 'no-repeat',\n backgroundPosition: `${distanceFromLeft}px ${initialDistanceFromTop}px`,\n },\n};\n\nconst numExpressions = 5;\nconst maxAngryDist = 500;\n\n/**\n * Check if the document's active element is being interacted with either by:\n * 1. Being focused on.\n * 2. Having a value.\n * 3. Being \"email\" - which is a bit hacky; would be better to pass that in as a prop.\n */\nconst inputBeingInteractedWith = () => {\n if ((document.activeElement as HTMLInputElement)?.value?.trim() === undefined)\n return false;\n if ((document.activeElement as HTMLInputElement)?.value?.trim() !== '')\n return true;\n return document.activeElement?.getAttribute('name') === 'email';\n};\n\n/**\n * At a certain distance, his expression changes to angry.\n * This is either the distance from the input form to the top of the screen,\n * or 500, whichever is greater.\n *\n * The email text field (ref.current) can be removed; in this case,\n * just be happy by setting a distance of zero\n */\nconst getDistance = (ref: any, event: any) => {\n if (!ref?.current) {\n return {\n x: 0,\n y: 0,\n };\n }\n\n const centerpointX = ref.current.offsetLeft + ref.current.offsetWidth / 2;\n\n const centerpointY = distanceFromTop(ref) + ref.current.offsetHeight / 2;\n\n // Use the absolute value and max at zero to return zero in cases\n // where the cursor is over the input field.\n return {\n x: Math.max(\n Math.abs(centerpointX - event.clientX) - ref.current.offsetWidth / 2,\n 0\n ),\n y: Math.max(\n Math.abs(centerpointY - event.clientY) - ref.current.offsetHeight / 2,\n 0\n ),\n };\n};\n\n/**\n * Animate the viking's expression\n *\n * As the mouse gets closer to whatever element is passed in via the ref,\n * the expression gets happier.\n */\nconst Expression = function ({\n elementRef,\n fixedExpressionNumber,\n}: {\n elementRef?: any;\n fixedExpressionNumber?: number | null;\n}) {\n const ref = elementRef;\n const [distFromBox, setDistFromBox] = React.useState(0);\n\n // If a fixed expression was passed in,\n // simply use that number to load the expression.\n // For example, on \"not found\" pages, we use this to make him angry.\n if (fixedExpressionNumber) {\n const expressionDistanceFromTop =\n initialDistanceFromTop -\n (1 - fixedExpressionNumber) * distanceBetweenExpressions;\n return (\n <Box\n sx={[\n classes.expression,\n {\n backgroundPosition: `${distanceFromLeft}px ${expressionDistanceFromTop}px`,\n },\n ]}\n />\n );\n }\n\n const angryDist = Math.max(\n maxAngryDist,\n ref?.current?.offsetTop || maxAngryDist\n );\n const pixelsPerExpression = angryDist / numExpressions;\n\n const handleWindowMouseMove = (event: any) => {\n if (inputBeingInteractedWith()) {\n setDistFromBox(0);\n return;\n }\n\n const distance = getDistance(ref, event);\n\n // Pythagoras' theorem to get the length of hypotenuse\n setDistFromBox(Math.sqrt(distance.x ** 2 + distance.y ** 2));\n };\n\n React.useEffect(() => {\n // Get global mouse coordinates\n window.addEventListener('mousemove', handleWindowMouseMove);\n\n return () => {\n window.removeEventListener('mousemove', handleWindowMouseMove);\n };\n }, []);\n\n // The farther the mouse is from the text field, the lower the expression number.\n // The closer, the higher (happier)\n const expressionNumber =\n numExpressions -\n Math.min(numExpressions - 1, Math.ceil(distFromBox / pixelsPerExpression));\n\n const expressionDistanceFromTop =\n initialDistanceFromTop -\n (expressionNumber - 1) * distanceBetweenExpressions;\n\n const expressionSx = {\n backgroundPosition: `${distanceFromLeft}px ${expressionDistanceFromTop}px`,\n };\n\n return <Box sx={[classes.expression, expressionSx]} />;\n};\n\nExpression.defaultProps = {\n elementRef: null,\n fixedExpressionNumber: null,\n};\n\nexport default Expression;\n","import React, { MouseEventHandler } from 'react';\nimport { Box } from '@mui/material';\nimport Eye from './Eye';\nimport Expression from './Expression';\n\nconst vikingDimensions = {\n width: 165,\n height: 230,\n initialPadding: 20,\n eyesDistFromTop: 89,\n};\n\nconst classes = {\n container: {\n width: `${vikingDimensions.width + vikingDimensions.initialPadding * 2}px`,\n height: `${\n vikingDimensions.height + vikingDimensions.initialPadding * 2\n }px`,\n margin: '0 auto',\n cursor: 'pointer',\n padding: `${vikingDimensions.initialPadding}px`,\n position: 'relative',\n },\n vikingHead: {\n width: `${vikingDimensions.width}px`,\n height: `${vikingDimensions.height}px`,\n background:\n 'url(https://website-assets-public.s3.us-west-2.amazonaws.com/viking/all-viking-expressions.png) no-repeat 0 -520px',\n position: 'absolute',\n },\n eyes: {\n display: 'flex',\n alignItems: 'center',\n position: 'absolute',\n top: `${vikingDimensions.eyesDistFromTop}px`,\n },\n};\n\n/**\n * Animate the viking head.\n *\n * - Eyes move to track the mouse.\n * - Expression grows happier as mouse moves towards ref element.\n *\n * The ref may be any element on the page.\n *\n * Note that having chrome dev tools open will slow the expression\n * and eye movement of the viking down to an alarming degree.\n */\nconst Viking = function ({\n elementRef,\n onClick,\n fixedExpressionNumber,\n}: {\n elementRef?: any;\n onClick?: MouseEventHandler<HTMLDivElement>;\n fixedExpressionNumber?: number | null;\n}) {\n return (\n <Box sx={classes.container} onClick={onClick}>\n <Box sx={classes.eyes}>\n <Box sx={{ flex: '0 0 38px' }} />\n <Box sx={{ flex: '0 0 30px' }}>\n <Eye />\n </Box>\n <Box sx={{ flex: '0 0 6px' }} />\n <Box sx={{ flex: '0 0 30px' }}>\n <Eye />\n </Box>\n </Box>\n <Box sx={classes.vikingHead} />\n <Expression\n elementRef={elementRef}\n fixedExpressionNumber={fixedExpressionNumber}\n />\n </Box>\n );\n};\n\nViking.defaultProps = {\n elementRef: null,\n onClick: () => {},\n fixedExpressionNumber: null,\n};\n\nexport default Viking;\n"],"names":["Helmet","metaContent","schema","title","url","description","ogImage","currentOgImage","height","property","content","rel","href","type","JSON","stringify","map","sch","defaultProps","BorderBand","borderColor","borderHeight","sx","backgroundColor","classes","platform","backgroundImage","backgroundRepeat","overflow","kindle","backgroundPosition","googlePlay","iBooks","nook","kobo","maxWidth","mb","container","item","xs","md","mt","display","children","Box","padding","strip","transition","BookStrip","isReversed","React","scrollPosition","setScrollPosition","handleScroll","position","window","pageYOffset","addEventListener","passive","removeEventListener","multiplier","Typography","variant","textShadow","color","textAlign","fontStyle","_excluded","_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgNewsletterEmail","_ref","svgRef","titleId","props","xmlns","xmlnsXlink","width","viewBox","ref","id","style","stroke","fillRule","fill","fillOpacity","d","ForwardRef","SvgBooks","SvgReader","iconComponent","icon","NewsletterEmail","Books","Reader","HowItWorksIcon","text","iconHeight","Grid","sm","component","pt","pb","margin","p","greatBooksSection","vikingContainer","theme","signupEmailFieldRefTop","vikingsDoubled","setVikingsDoubled","Viking","elementRef","onClick","my","NewsletterEmailSignup","signupEmailFieldRef","EbookPlatforms","lighten","darken","Container","hideText","extraParams","btnText","follow","handleSuccess","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","align","onSubmit","onChange","required","fullWidth","name","label","loading","distanceFromTop","allTopOffsets","current","offsetTop","elem","offsetParent","eyePadding","eyeSize","paddingTop","paddingLeft","borderRadius","eye","background","handleWindowMouseMove","setUnitVector","elementPos","cursorPos","xDist","x","yDist","y","hypotenuse","Math","sqrt","getUnitVector","offsetLeft","offsetWidth","offsetHeight","clientX","clientY","unitVector","movementSx","top","left","expression","Expression","fixedExpressionNumber","distFromBox","setDistFromBox","expressionDistanceFromTop","pixelsPerExpression","max","undefined","document","activeElement","trim","getAttribute","inputBeingInteractedWith","distance","centerpointX","centerpointY","abs","getDistance","min","numExpressions","ceil","expressionSx","vikingDimensions","cursor","vikingHead","eyes","alignItems","flex"],"sourceRoot":""}