{"version":3,"file":"static/js/337.0ad62c67.chunk.js","mappings":"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","sources":["components/pages/home/common/ShopPlanCard.jsx","components/pages/home/common/PlansSection.jsx","components/atoms/views/AnimateSeriesIn.jsx","components/atoms/icons/CheckmarkIcon.jsx","components/pages/home/common/FeatureCard.jsx","components/pages/home/common/FeatureCardSection.jsx","components/pages/home/PricingPage.jsx","hooks/useShop.js"],"sourcesContent":["import { useMemo } from \"react\";\r\nimport { makeStyles } from \"@mui/styles\";\r\nimport { Grid, Typography } from \"@mui/material\";\r\nimport { Skeleton } from '@mui/material';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    padding: theme.spacing(0)\r\n  },\r\n  grid: {\r\n    border: `2px solid ${theme.palette.divider}`,\r\n    borderRadius: theme.spacing(1),\r\n    padding: theme.spacing(2),\r\n    height: \"550px\",\r\n    position: \"relative\",\r\n    background: theme.palette.background.paper,\r\n    boxShadow: \"0px 5px 10px rgba(0, 0, 0, 0.05)\",\r\n    \"@media (min-width: 1024px)\": {\r\n      //width: \"240px\"\r\n    }\r\n  },\r\n  header: {\r\n    fontWeight: \"500\",\r\n    fontSize: \"24px\",\r\n    lineHeight: \"31px\",\r\n    letterSpacing: \"0px\"\r\n  },\r\n  subHeader: {\r\n    fontWeight: \"400\"\r\n  },\r\n  subHeaderSkeleton: {\r\n    width: \"60px\",\r\n    height: \"60px\"\r\n  },\r\n  subText: {\r\n    fontWeight: \"normal\",\r\n    fontStyle: \"normal\",\r\n    fontSize: \"14px\",\r\n    lineHeight: \"20px\",\r\n    letterSpacing: \"0.25px\"\r\n  },\r\n  featureList: {\r\n    paddingInlineStart: theme.spacing(2),\r\n    lineHeight: \"32px\",\r\n    marginTop: theme.spacing(1)\r\n  },\r\n  button: {\r\n    position: \"absolute\",\r\n    bottom: theme.spacing(2),\r\n    width: `calc(100% - ${theme.spacing(4)})`,\r\n    height: \"40px\"\r\n  }\r\n}));\r\n\r\nexport default function ShopPlanCard(props) {\r\n  const { plan } = props;\r\n  const classes = useStyles();\r\n\r\n  const prettyPrint = useMemo(() => {\r\n    if (!!plan.recurringPrice && !!plan.recurringPrice[\"USD\"]) {\r\n      const price = plan.recurringPrice[\"USD\"];\r\n      return price.endsWith(\".00\") ? price.substr(0, price.length - 3) : price;\r\n    } else {\r\n      return \"\";\r\n    }\r\n  }, [plan]);\r\n\r\n\r\n  return (\r\n    <Grid item container xs={12} sm={6} md={4} className={classes.root} justifyContent=\"flex-start\" direction=\"column\">\r\n      <Grid item container className={classes.grid} justifyContent=\"flex-start\" direction=\"column\">\r\n\r\n\r\n        <Typography variant=\"h5\" className={classes.header}>{plan.name}</Typography>\r\n\r\n        <Typography variant=\"h3\" className={classes.subHeader}>${!!plan.recurringPrice ? prettyPrint : 0}{!!plan.recurringPrice ? <span className={classes.subText}>/{plan.billingType}</span> : null}</Typography>\r\n\r\n        <Typography variant=\"body1\" component=\"span\"><p>{plan.description}</p></Typography>\r\n\r\n        <Typography variant=\"h6\">{plan.subtitle}</Typography>\r\n\r\n        <ul className={classes.featureList}>\r\n          {plan.features.map((t, i) => <li key={i}><Typography variant=\"body1\">{t}</Typography></li>)}\r\n        </ul>\r\n\r\n      </Grid>\r\n    </Grid>\r\n  );\r\n}\r\n\r\n\r\nexport function ShopPlanCardSkeleton() {\r\n  const classes = useStyles();\r\n\r\n  return (\r\n    <Grid item container xs={12} sm={6} md={4} className={classes.root} justifyContent=\"flex-start\" direction=\"column\">\r\n      <Grid item container className={classes.grid} justifyContent=\"flex-start\" direction=\"column\">\r\n\r\n        <Typography variant=\"h5\" className={classes.header}><Skeleton /></Typography>\r\n\r\n        <Typography variant=\"h3\" className={classes.subHeaderSkeleton}><Skeleton /></Typography>\r\n\r\n        <Typography variant=\"body1\" component=\"span\"><Skeleton /><Skeleton /></Typography>\r\n\r\n        <Typography variant=\"h6\" className={classes.subHeader}><Skeleton /></Typography>\r\n\r\n        <ul className={classes.featureList}>\r\n          <Typography variant=\"body1\" component=\"span\"><Skeleton /></Typography>\r\n          <Typography variant=\"body1\" component=\"span\"><Skeleton /></Typography>\r\n          <Typography variant=\"body1\" component=\"span\"><Skeleton /></Typography>\r\n          <Typography variant=\"body1\" component=\"span\"><Skeleton /></Typography>\r\n        </ul>\r\n      </Grid>\r\n    </Grid>\r\n  );\r\n}\r\n","import { useCallback, useState } from \"react\";\r\nimport { Button, Grid, ToggleButton, ToggleButtonGroup, Typography } from \"@mui/material\";\r\nimport { makeStyles } from \"@mui/styles\";\r\nimport { MAX_WIDTH, SECTION_SPACING, WIDTH } from \"./constants\";\r\nimport useShop from \"../../../../hooks/useShop\";\r\nimport ShopPlanCard, { ShopPlanCardSkeleton } from \"./ShopPlanCard\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { RequestSignup } from \"../../../../actions/auth\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    marginTop: SECTION_SPACING,\r\n    marginBottom: SECTION_SPACING,\r\n    maxWidth: MAX_WIDTH,\r\n    width: WIDTH,\r\n  },\r\n  plansItem: {\r\n    marginTop: theme.spacing(1),\r\n    marginBottom: theme.spacing(3)\r\n  },\r\n  toggleGroup: {\r\n    marginTop: theme.spacing(2),\r\n    height: \"36px\",\r\n    width: \"216px\",\r\n    display: \"flex\"\r\n  },\r\n  toggleButton: {\r\n    height: \"36px\",\r\n    flex: 0.5\r\n  },\r\n  yearlyCaption: {\r\n    position: \"absolute\",\r\n    bottom: \"-20px\",\r\n    color: theme.palette.success.main\r\n  },\r\n  link: {\r\n    textDecoration: \"none\",\r\n    marginBottom: theme.spacing(2)\r\n  },\r\n}));\r\n\r\nexport default function PlansSection() {\r\n  const classes = useStyles();\r\n  const dispatch = useDispatch();\r\n\r\n  const [billingType, setBillingType] = useState(\"month\");\r\n  const onToggleBillingType = useCallback((ev, value) => !!value ? setBillingType(value) : null, [setBillingType]);\r\n\r\n  const shop = useShop();\r\n  const plans = billingType === \"month\" ? shop.monthly : shop.yearly;\r\n\r\n  const onClick = useCallback(() => {\r\n    dispatch(RequestSignup());\r\n    if (!!window.fathom) {\r\n      window.fathom.trackGoal(\"WIEUXHEM\", 0);\r\n    }\r\n  }, [dispatch]);\r\n\r\n  return (\r\n    <Grid container direction=\"row\" justifyContent=\"space-between\" alignItems=\"flex-start\" className={classes.root} spacing={3}>\r\n\r\n      <Grid item container xs={12} direction=\"row\" justifyContent=\"center\">\r\n        <ToggleButtonGroup\r\n          className={classes.toggleGroup}\r\n          value={billingType}\r\n          onChange={onToggleBillingType}\r\n          exclusive\r\n        >\r\n          <ToggleButton value=\"month\" className={classes.toggleButton}>\r\n            <Typography variant=\"body2\">Bill monthly</Typography>\r\n          </ToggleButton>\r\n          <ToggleButton value=\"year\" className={classes.toggleButton}>\r\n            <Typography variant=\"caption\" className={classes.yearlyCaption}>(Save 20%)</Typography>\r\n            <Typography variant=\"body2\">Bill yearly</Typography>\r\n          </ToggleButton>\r\n        </ToggleButtonGroup>\r\n      </Grid>\r\n\r\n      <Grid item container xs={12} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" spacing={3} className={classes.plansItem}>\r\n        {plans.length === 0 ? (\r\n          <>\r\n            <ShopPlanCardSkeleton />\r\n            <ShopPlanCardSkeleton />\r\n            <ShopPlanCardSkeleton />\r\n          </>\r\n        ) : plans.map((t, i) => <ShopPlanCard plan={t} key={i} />)}\r\n      </Grid>\r\n\r\n      <Grid item container xs={12} direction=\"column\" justifyContent=\"center\" alignItems=\"center\">\r\n        <Link to=\"/app\" className={classes.link}>\r\n          <Button color=\"primary\" variant=\"contained\" onClick={onClick}>Use Emberly for free</Button>\r\n        </Link>\r\n        <Typography variant=\"body1\" color=\"textSecondary\">Start for free with Basic. Upgrade in the app when you want.</Typography>\r\n      </Grid>\r\n\r\n    </Grid>\r\n  );\r\n}\r\n","import { useEffect, useState } from \"react\";\r\nimport { Zoom, Slide } from \"@mui/material\";\r\n\r\nconst TIMEOUT = { enter: 500 };\r\n\r\nexport default function AnimateSeriesIn(props) {\r\n  const { variant, direction, containerRef, children, delay } = props;\r\n  const [visible, setVisible] = useState(0);\r\n\r\n  useEffect(() => {\r\n    if (!!containerRef.current && !!window.IntersectionObserver) {\r\n      let timer = null;\r\n      \r\n      const observer = new IntersectionObserver(entries => {\r\n        if (timer === null && entries[0].isIntersecting) {\r\n          let i = 1;\r\n          setVisible(i);\r\n          timer = setInterval(() => {\r\n            setVisible(++i);\r\n            if (i > children.length) clearInterval(timer);\r\n          }, delay || 250);\r\n        }\r\n      });\r\n\r\n      const element = containerRef.current;\r\n      observer.observe(element);\r\n\r\n      return () => {\r\n        observer.unobserve(element);\r\n        clearInterval(timer);\r\n      }\r\n    } else if (!window.IntersectionObserver) {\r\n      setVisible(children.length + 1);\r\n    }\r\n  }, [containerRef, setVisible, children.length, delay]);  \r\n\r\n  \r\n  return variant === \"slide\" ? children.map((child, idx) => \r\n    <Slide key={idx} in={visible > idx} timeout={TIMEOUT} direction={direction}>\r\n      {child}\r\n    </Slide>\r\n  ) : children.map((child, idx) => \r\n    <Zoom key={idx} in={visible > idx} timeout={TIMEOUT}>\r\n      {child}\r\n    </Zoom>\r\n  );\r\n}","import SvgIcon from \"@mui/material/SvgIcon\";\r\n\r\nexport default function CheckmarkIcon(props) {\r\n  return (\r\n    <SvgIcon color=\"inherit\" viewBox=\"0 0 46 41\" width=\"44.5px\" height=\"41px\" fontSize=\"inherit\" className={props.className} titleAccess=\"Checkmark icon\">\r\n      <path\r\n        fill={props.iconColor}\r\n        fillRule=\"nonzero\"\r\n        d=\"M45.25 19.294C45.25 31.282 35.288 41 23 41S.75 31.282.75 19.294 6.313 0 27.326 0C39.615 0 45.25 7.306 45.25 19.294z\"\r\n      ></path>\r\n      <path\r\n        fill=\"#fff\"\r\n        fillRule=\"nonzero\"\r\n        d=\"M6.519 21.304l5.356-6.833 8.241 8.039L37.009 5.628l4.121 6.431-20.19 20.098L6.519 21.304z\"\r\n      ></path>\r\n      <path\r\n        fill=\"#050038\"\r\n        d=\"M20.105 20.754L37.224 3.646l5.502 8.588-21.672 21.573L4.748 21.536l7.003-8.933 8.354 8.151zm.021 3.513l-8.127-7.928-3.71 4.733 12.537 9.435 18.707-18.622-2.739-4.275-16.668 16.657z\"\r\n      ></path>\r\n    </SvgIcon>\r\n  );\r\n}","import { forwardRef } from \"react\";\r\nimport { makeStyles } from \"@mui/styles\";\r\nimport { Grid, Typography } from \"@mui/material\";\r\nimport CheckmarkIcon from \"../../../atoms/icons/CheckmarkIcon\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    minHeight: \"100%\",\r\n    height: \"auto\",\r\n    position: \"relative\"\r\n  },\r\n  grid: {\r\n    borderRadius: theme.spacing(1),\r\n    height: \"auto\",\r\n    minHeight: \"100%\",\r\n    width: \"100%\",\r\n    background: theme.palette.grey[500_8],\r\n    position: \"relative\",\r\n    padding: theme.spacing(3)\r\n  },\r\n  header: {\r\n    fontWeight: \"bold\"\r\n  },\r\n  icon: {\r\n    fontSize: \"46px\"\r\n  }\r\n}));\r\n\r\nexport default forwardRef(function FeatureCard(props, ref) {\r\n  const { title, description, color } = props;\r\n  const classes = useStyles();\r\n\r\n  return (\r\n    <Grid item container className={classes.root} ref={ref} xs={12} sm={6} md={6} lg={4} justifyContent=\"center\" alignItems=\"center\" direction=\"row\">\r\n      <Grid item container className={classes.grid} justifyContent=\"center\" alignItems=\"center\" direction=\"row\">\r\n\r\n        <CheckmarkIcon iconColor={color} className={classes.icon} />\r\n\r\n        <Grid item xs={12}>\r\n          <Typography variant=\"h5\" className={classes.header} color=\"textPrimary\" align=\"center\">{title}</Typography>\r\n          <Typography variant=\"body1\" className={classes.description} color=\"textSecondary\" align=\"center\">{description}</Typography>\r\n        </Grid>\r\n\r\n      </Grid>\r\n    </Grid>\r\n  );\r\n});\r\n\r\n\r\n","import { useRef } from \"react\";\r\nimport { Grid, Typography } from \"@mui/material\";\r\nimport { makeStyles } from \"@mui/styles\";\r\nimport { MAX_WIDTH, SECTION_SPACING, WIDTH } from \"./constants\";\r\nimport AnimateSeriesIn from \"../../../atoms/views/AnimateSeriesIn\";\r\nimport FeatureCard from \"./FeatureCard\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    marginTop: SECTION_SPACING,\r\n    marginBottom: SECTION_SPACING,\r\n    maxWidth: MAX_WIDTH,\r\n    width: WIDTH,\r\n  },\r\n  link: {\r\n    textDecoration: \"none\",\r\n    color: theme.palette.primary.dark,\r\n    fontWeight: \"500\"\r\n  },\r\n}));\r\n\r\nexport default function FeatureCardSection() {\r\n  const classes = useStyles();\r\n  const featuresRef = useRef(null);\r\n\r\n\r\n  return (\r\n    <Grid container direction=\"row\" justifyContent=\"center\" alignItems=\"stretch\" className={classes.root} spacing={3}>\r\n\r\n      <Grid item container xs={12} direction=\"column\" justifyContent=\"center\" alignItems=\"center\">\r\n        <Typography variant=\"h3\">What everyone gets</Typography>\r\n        <Typography variant=\"body1\" color=\"textSecondary\">Even if you’re on free or premium, everyone gets these features.</Typography>\r\n      </Grid>\r\n\r\n      <AnimateSeriesIn variant=\"zoom\" containerRef={featuresRef} delay={100}>\r\n        <FeatureCard title=\"Privacy, guaranteed\" description=\"No tracking. No ads. No selling of your data. Always private.\" color=\"#48B4B8\" />\r\n        <FeatureCard title=\"Bi-directional linking\" description={<>Build a web of connected ideas inside Emberly. <a href=\"https://blog.ember.ly/new-feature-bi-directional-references-to-other-nodes/\" target=\"_blank\" rel=\"noopener noreferrer\" className={classes.link}>Learn more</a>.</>} color=\"#009AA0\" />\r\n        <FeatureCard title=\"Use on any platform\" description=\"Emberly works in most browsers. It even works great on mobile.\" color=\"#A1B9F6\" />\r\n\r\n        <FeatureCard title=\"Chrome web-clipper\" description=\"Easily save, comment, and organize websites directly from chrome.\" color=\"#EFAEBA\" />\r\n        <FeatureCard title=\"Create public maps\" description=\"Make your maps public and share them with the world.\" color=\"#EA6888\" />\r\n        <FeatureCard title=\"Real-time collaboration\" description=\"Invite people to build knowledge trees together.\" color=\"#EFAEBA\" />\r\n\r\n        <FeatureCard title=\"Bulk Export\" description=\"Export all your data in Emberly to markdown notes and files.\" color=\"#009AA0\" />\r\n        <FeatureCard title=\"Embed maps\" description={<>Embed your maps in 1000s of places like Notion, Medium, and <a href=\"https://blog.ember.ly/embedly-integration/\" target=\"_blank\" rel=\"noopener noreferrer\" className={classes.link}>more</a>.</>} color=\"#A968FF\" />\r\n      </AnimateSeriesIn>\r\n\r\n    </Grid>\r\n  );\r\n}\r\n","import { useMemo, useState, useCallback } from \"react\";\r\nimport { Divider, Grid, Typography } from \"@mui/material\";\r\nimport { makeStyles } from \"@mui/styles\";\r\nimport Scrollbar from \"../../atoms/Scrollbar\";\r\nimport { Header, Footer } from \"./PageComponents\";\r\nimport usePageView from \"../../../hooks/usePageView\";\r\nimport { MAX_WIDTH, SECTION_SPACING, WIDTH } from \"./common/constants\";\r\nimport PlansSection from \"./common/PlansSection\";\r\nimport FeatureCardSection from \"./common/FeatureCardSection\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n  root: {\r\n    background: \"#F6F9FC\"\r\n  },\r\n  grid: {\r\n    position: \"relative\",\r\n    width: \"100%\",\r\n    paddingTop: \"64px\",\r\n    height: \"auto\",\r\n    minHeight: \"100%\"\r\n  },\r\n  width: {\r\n    position: \"relative\",\r\n    maxWidth: `${MAX_WIDTH} !important`,\r\n    width: WIDTH,\r\n  },\r\n  margin: {\r\n    marginTop: SECTION_SPACING,\r\n    marginBottom: SECTION_SPACING\r\n  },\r\n  divider: {\r\n    position: \"relative\",\r\n    width: `calc(${WIDTH} - ${theme.spacing(6)})`,\r\n    maxWidth: `calc(100% - ${theme.spacing(7)})`\r\n  },\r\n  link: {\r\n    color: \"inherit\"\r\n  },\r\n  h5: {\r\n    marginTop: theme.spacing(5),\r\n    marginBottom: theme.spacing(-1),\r\n    fontSize: \"20px\",\r\n    fontStyle: \"normal\",\r\n    fontWeight: \"600\",\r\n    lineHeight: \"30px\",\r\n    letterSpacing: \"0px\",\r\n    textAlign: \"center\",\r\n    maxWidth: \"618px\"\r\n  },\r\n  subtitle: {\r\n    maxWidth: \"618px\",\r\n    height: \"auto\"\r\n  }\r\n}));\r\n\r\nexport default function PricingPage() {\r\n  const classes = useStyles();\r\n  const [scrollTop, setScrollTop] = useState(true);\r\n  usePageView();\r\n\r\n  const onScroll = useCallback((top) => setScrollTop(top), []);\r\n\r\n  return (\r\n    <Scrollbar onScrollStateChange={onScroll} className={classes.root}>\r\n      <Header scrollTop={scrollTop} />\r\n      {\r\n        useMemo(() => (\r\n          <Grid container className={classes.grid} direction=\"column\" alignItems=\"center\" justifyContent=\"space-between\">\r\n\r\n            <Grid container item className={`${classes.width} ${classes.margin}`} direction=\"row\" justifyContent=\"center\" alignItems=\"flex-start\" spacing={3}>\r\n              <Grid container item direction=\"row\" justifyContent=\"center\" alignItems=\"flex-start\">\r\n                <Typography variant=\"h1\">Pricing</Typography>\r\n              </Grid>\r\n            </Grid>\r\n\r\n            <PlansSection />\r\n\r\n            <Divider className={classes.divider} />\r\n\r\n            <FeatureCardSection />\r\n\r\n            <Divider className={classes.divider} />\r\n\r\n            <Grid container item className={`${classes.width} ${classes.margin}`} direction=\"row\" justifyContent=\"center\" alignItems=\"center\" spacing={3}>\r\n              <Grid item container direction=\"column\" justifyContent=\"center\" alignItems=\"center\">\r\n                <Typography variant=\"h2\" align=\"center\">Common questions</Typography>\r\n\r\n                <Typography variant=\"h5\" align=\"center\" className={classes.h5}>\r\n                  Can i use Emberly for free?\r\n                </Typography>\r\n                <Typography variant=\"p_subtitle\" align=\"center\" component=\"span\" className={classes.subtitle}>\r\n                  <p>\r\n                    Yes! We have seen how Emberly can help people learn more and keep a calm mind. And we want more people to achieve the same.\r\n                  </p>\r\n                  <p>\r\n                    The free Basic plan is more than enough for most people. Only the most ambitious learners will reach the limits of the free plan. And if you reach the limit, we kindly ask for your support to keep Emberly running and improving.\r\n                  </p>\r\n                </Typography>\r\n\r\n                <Typography variant=\"h5\" align=\"center\" className={classes.h5}>\r\n                  Can I get a refund?\r\n                </Typography>\r\n                <Typography variant=\"p_subtitle\" align=\"center\" component=\"span\" className={classes.subtitle}>\r\n                  <p>\r\n                    Yes of course! We offer a 30-day money-back guarantee, no questions asked. Just send us an email.</p>\r\n                </Typography>\r\n\r\n                <Typography variant=\"h5\" align=\"center\" className={classes.h5}>\r\n                  What is a topic?\r\n                </Typography>\r\n                <Typography variant=\"p_subtitle\" align=\"center\" component=\"span\" className={classes.subtitle}>\r\n                  <p>\r\n                    A topic is a node in your knowledge tree. The center in your tree is the center-node. And all branches you create out from this leads to new topics.\r\n                  </p>\r\n                </Typography>\r\n\r\n                <Typography variant=\"h5\" align=\"center\" className={classes.h5}>\r\n                  What happens if I cancel my paid plan?\r\n                </Typography>\r\n                <Typography variant=\"p_subtitle\" align=\"center\" component=\"span\" className={classes.subtitle}>\r\n                  <p>\r\n                    When you cancel your plan, you will remain on the plan until the end of your billing cycle. At which time, we will cancel the plan and downgrade you to the free Basic plan.\r\n                  </p>\r\n                  <p>\r\n                    You will still have access to all your stuff. However, the limits of the Basic plan apply. So you cannot upload new files. And if you have exceeded the free node or map limit, you cannot add new nodes and maps.\r\n                  </p>\r\n                </Typography>\r\n\r\n                <Typography variant=\"h5\" align=\"center\" className={classes.h5}>\r\n                  Why do I need to pay?\r\n                </Typography>\r\n                <Typography variant=\"p_subtitle\" align=\"center\" component=\"span\" className={classes.subtitle}>\r\n                  <p>\r\n                    Charging for a premium subscription is the only way we make money. Emberly is the product we sell, not ads or our user's data. And we promise to keep it that way!\r\n                  </p>\r\n                  <p>\r\n                    We hope you find Emberly useful. And we would be grateful if you consider supporting us by upgrading to a paid plan.\r\n                  </p>\r\n                </Typography>\r\n\r\n                <Typography variant=\"h5\" align=\"center\" className={classes.h5}>\r\n                  Who processes Emberly orders?\r\n                </Typography>\r\n                <Typography variant=\"p_subtitle\" align=\"center\" component=\"span\" className={classes.subtitle}>\r\n                  <p>\r\n                    Our order process is conducted by our online reseller <a href=\"https://paddle.com/\" target=\"_blank\" rel=\"noopener noreferrer\" className={classes.link}>Paddle.com</a>. Paddle is the Merchant of Record for all our orders. Your credit card details are safe with Paddle, and never touch Emberly servers.\r\n                  </p>\r\n                </Typography>\r\n              </Grid>\r\n            </Grid>\r\n\r\n            <Footer />\r\n          </Grid>\r\n        ), [classes])\r\n      }\r\n    </Scrollbar>\r\n  );\r\n}\r\n\r\n\r\n","import { useEffect, useMemo, useCallback } from \"react\";\r\nimport { useSelector, useDispatch } from \"react-redux\";\r\nimport * as AuthActions from \"../actions/auth\";\r\nimport { AddConfirmDialog } from \"../actions/app\";\r\n\r\n\r\nexport default function useShop(profile) {\r\n  const { plans, plansLoading, pollForProductId, production, updatingPlan, updatePlanError, updatePlanType }  = useSelector(state => state.auth);\r\n  const dispatch = useDispatch();\r\n\r\n\r\n  useEffect(() => {\r\n    if (plans === null && plansLoading === false) {\r\n      dispatch(AuthActions.LoadPlans());\r\n    }\r\n  }, [plans, plansLoading, dispatch]);\r\n\r\n  const subscribe = useCallback((oldPlanId, planId) => {\r\n    const oldPlan = plans.find(t => t.planId === oldPlanId);\r\n\r\n    if (\r\n      (oldPlanId === null || profile.subscriptionStatus === \"deleted\" || profile.subscriptionPlanId === null || profile.subscriptionId === null || (!!oldPlan && oldPlan.type === 0 && profile.subscriptionPlanId !== planId)) && production\r\n    ) {\r\n      dispatch(AuthActions.SubscribeToPremium(profile, planId, () => {}));\r\n    } else {\r\n      // TODO show confirm dialog before update here!\r\n      const newPlan = plans.find(t => t.planId === planId);\r\n\r\n      dispatch(AddConfirmDialog(\r\n        `Change plan to ${newPlan.name} ${newPlan.type === 0 ? \"\" : (newPlan.billingType === \"year\" ? \"Yearly\" : \"Monthly\")}`,\r\n        newPlan.type === 0 ? \"This will downgrade your subscription to the free plan.\" : \"This will update your subscription.\",\r\n        \"Confirm\",\r\n        \"primary\",\r\n        () => { },\r\n        () => {\r\n          dispatch(AuthActions.UpdatePremiumPlan(planId, newPlan.type));\r\n        }\r\n      ));\r\n    }\r\n  }, [plans, dispatch, production, profile]);\r\n\r\n  //console.log(profile);\r\n  return useMemo(() => {\r\n    const loading = plansLoading || plans === null;\r\n    const isFree = pollForProductId === \"1\" || pollForProductId === \"0\";\r\n\r\n    return {\r\n      loading,\r\n      subscribe,\r\n      polling: !!updatingPlan || (!!pollForProductId && ((pollForProductId !== profile?.subscriptionPlanId && !isFree) || (isFree && !profile?.subscriptionCancelled))),\r\n      plans: loading ? [] : plans,\r\n      monthly: loading ? [] : plans.filter(t => t.billingType === \"month\").sort((a,b) => a.type - b.type),\r\n      yearly: loading ? [] : plans.filter(t => t.billingType === \"year\").sort((a,b) => a.type - b.type),\r\n      updatePlanError,\r\n      updatePlanType\r\n    }\r\n\r\n  }, [plans, plansLoading, updatingPlan, pollForProductId, subscribe, updatePlanError, updatePlanType, profile]);\r\n}\r\n"],"names":["useStyles","makeStyles","theme","root","padding","spacing","grid","border","palette","divider","borderRadius","height","position","background","paper","boxShadow","header","fontWeight","fontSize","lineHeight","letterSpacing","subHeader","subHeaderSkeleton","width","subText","fontStyle","featureList","paddingInlineStart","marginTop","button","bottom","ShopPlanCard","props","plan","classes","prettyPrint","useMemo","recurringPrice","price","endsWith","substr","length","_jsx","Grid","item","container","xs","sm","md","className","justifyContent","direction","children","_jsxs","Typography","variant","name","billingType","component","description","subtitle","features","map","t","i","ShopPlanCardSkeleton","Skeleton","SECTION_SPACING","marginBottom","maxWidth","MAX_WIDTH","WIDTH","plansItem","toggleGroup","display","toggleButton","flex","yearlyCaption","color","success","main","link","textDecoration","PlansSection","dispatch","useDispatch","setBillingType","useState","onToggleBillingType","useCallback","ev","value","shop","useShop","plans","monthly","yearly","onClick","RequestSignup","window","fathom","trackGoal","alignItems","ToggleButtonGroup","onChange","exclusive","ToggleButton","_Fragment","Link","to","Button","TIMEOUT","enter","AnimateSeriesIn","containerRef","delay","visible","setVisible","useEffect","current","IntersectionObserver","timer","observer","entries","isIntersecting","setInterval","clearInterval","element","observe","unobserve","child","idx","Slide","in","timeout","Zoom","CheckmarkIcon","SvgIcon","viewBox","titleAccess","fill","iconColor","fillRule","d","minHeight","grey","icon","forwardRef","ref","title","lg","align","primary","dark","FeatureCardSection","featuresRef","useRef","FeatureCard","href","target","rel","paddingTop","margin","h5","textAlign","PricingPage","scrollTop","setScrollTop","usePageView","onScroll","top","Scrollbar","onScrollStateChange","Header","Divider","Footer","profile","plansLoading","pollForProductId","production","updatingPlan","updatePlanError","updatePlanType","useSelector","state","auth","AuthActions","subscribe","oldPlanId","planId","oldPlan","find","subscriptionStatus","subscriptionPlanId","subscriptionId","type","newPlan","AddConfirmDialog","loading","isFree","polling","subscriptionCancelled","filter","sort","a","b"],"sourceRoot":""}