{"version":3,"sources":["webpack:///./src/components/Miscellaneous/BackButton.js","webpack:///./src/ui/Card.js","webpack:///./src/ui/PlanCard.js","webpack:///./src/components/Miscellaneous/ArrowLink.js","webpack:///./src/components/Miscellaneous/ViewAllPlansButton.js","webpack:///./src/components/PlanCard/RateInfo.js","webpack:///./src/ui/Details/Details.js","webpack:///./src/components/Details/Introduction.js","webpack:///./src/components/Details/FeaturesList.js","webpack:///./src/components/Details/Advantages.js","webpack:///./src/modules/Details.js","webpack:///./src/components/PlanCard/SubscribeButton.js","webpack:///./src/components/PlanCard/PlanTermSelect.js","webpack:///./src/components/PlanCard/index.js","webpack:///./src/ui/RateInfo.js","webpack:///./src/components/Miscellaneous/ShopifyButton.js","webpack:///./src/components/Miscellaneous/FastSpringButton.js","webpack:///./src/components/PlanCard/License/LicensePlanCardFooter.js","webpack:///./src/util/hooks/useExternalPurchaseMethod.js","webpack:///./src/components/PlanCard/License/LicensePlanCard.js","webpack:///./src/components/Details/SystemRequirements/SystemRequirements.js"],"names":["BackButton","t","useTranslation","onClick","window","history","back","navigate","className","Card","styled","div","attrs","Header","h4","Body","Footer","highlightStyle","PlanCard","props","noHover","css","TermDropdownToggle","DropdownToggle","LinkButton","button","ArrowLink","noLink","children","Link","ViewAllPlansButton","route","type","id","PriceHandler","rate","showDisplayPrice","selectedCurrency","useLocale","subscriptionCurrency","getSubscriptionCurrency","price","formatCurrency","withLabel","trim","parseInt","TermHandler","isYearly","isNaN","isMonthly","termName","plan","myPlan","staticRatePlan","hasStaticRatePlanPrice","PlanCardContainer","Introduction","planDetails","useUser","bmoUser","ssoUser","usePlan","SummaryHeader","setSelectedPlan","setSelectedRate","subscriptionInfo","isTrialEligible","summary","includes","splitSummary","split","Summary","href","target","rel","topReasons","header","points","map","item","key","p","FeaturesList","classNames","features","FeatureBlock","featureTitle","featureDescription","Advantages","advantages","advantageTitle","advantagePoints","item2","key2","Details","licensePlan","isSubscriber","zuoraInfo","subscriptions","length","SystemRequirements","style","top","LicensePlanCard","hideLearnMoreLink","SubscribeButton","isCommunityUser","isPersonalUser","planType","toLowerCase","isProfessionalUser","isDistrictUser","getMyPlan","termIsYearly","trialLength","canTrial","getRatePlanByType","ratePlans","find","rp","UncontrolledDropdown","data-testid","color","caret","disabled","DropdownMenu","DropdownItem","console","log","planSelectRoutes","loggedIn","loggedOut","actionText","hasTrial","filter","ratePlan","isTrial","trial","state","extension","span","PlanTermSelect","setTermIsYearly","data-toggle","name","checked","readOnly","htmlFor","community","organization","personalOrProfessional","currentRate","shortDescription","RateInfo","to","i18nKey","disclaimerKey","LightBold","RateInfoSmall","Price","h2","PriceSmall","StaticPrice","StaticPriceSmall","SavingsWithCurrency","baseRate","toFixed","Savings","TermPrice","free","ShopifyButton","shopifyLink","isoCode","mapRegionsToShopify","locale","localeDetails","handleFSStoreClose","orderReference","fastspring","builder","reset","purchase","method","ref","FastSpringButton","onFSPopupClosed","src","data-storefront","process","data-popup-closed","data-fsc-action","data-fsc-item-path-value","add","country","language","i18n","substring","checkout","PlanCardFooter","buttonText","action","text","ExternalPurchaseButton","DetailsSystemRequirements","inModal","URLS","BOARDMAKER_REQUIREMENTS","guideLink","requirements","operatingSystem","SystemRequirementsSection","headers","entries","browser","eyeTracker","SystemRequirementsList","SystemRequirementsModal","isOpen","toggle","size","charCode"],"mappings":"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","file":"6fcf65cb304a202f93d9ee04008ba0bcc7590964-ab35a26bcb867fc7a4c2.js","sourcesContent":["import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { navigate } from 'gatsby';\r\n\r\nexport default function BackButton() {\r\n const { t } = useTranslation();\r\n return (\r\n {\r\n window ? window.history.back() : navigate('/');\r\n }}\r\n className=\"btn btn-primary\"\r\n >\r\n {t('action.back')}\r\n \r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nconst Card = styled.div.attrs({\r\n className: 'card',\r\n})``;\r\nCard.Header = styled.h4.attrs({\r\n className: 'card-header',\r\n})``;\r\nCard.Body = styled.div.attrs({\r\n className: 'card-body',\r\n})``;\r\n\r\nCard.Footer = styled.div.attrs({\r\n className: 'card-footer',\r\n})``;\r\n\r\nexport default Card;\r\n","import styled, { css } from 'styled-components';\r\nimport Card from '@ui/Card';\r\nimport { DropdownToggle } from 'reactstrap';\r\n\r\nconst highlightStyle = `\r\nbox-shadow: 0px 5px 5px rgba(0, 0, 0, 0.16);\r\nborder: 1px solid #005b94;\r\n`;\r\nexport const PlanCard = styled(Card)`\r\n // height: 100%;\r\n width: 100%;\r\n //padding-left: 20px !important;\r\n text-align: center;\r\n // color: #231f20;\r\n // background-color: #efeff0;\r\n transition-property: box-shadow, border;\r\n transition-duration: 0.15s;\r\n border: 1px solid transparent;\r\n &.selected {\r\n ${highlightStyle}\r\n }\r\n ${props =>\r\n !props.noHover &&\r\n css`\r\n :hover {\r\n ${highlightStyle}\r\n }\r\n `}\r\n`;\r\nPlanCard.Header = styled(Card.Header).attrs({\r\n className: 'pt-4 pr-4 pb-0 pl-4',\r\n})`\r\n // padding: 2.5rem 1.25rem 0 1.25rem;\r\n border-bottom: none;\r\n background: none;\r\n padding-bottom: 0em;\r\n text-transform: uppercase;\r\n font-size: 1.125rem;\r\n`;\r\nPlanCard.Body = styled(Card.Body)`\r\n padding-top: 0.5rem;\r\n padding-left: 20px;\r\n //padding-right: 0px;\r\n // p {\r\n // font-size:0.875rem;\r\n // }\r\n ul {\r\n display: block;\r\n list-style: none;\r\n padding: 0;\r\n margin: 0;\r\n li {\r\n padding: 0;\r\n margin: 0;\r\n font-size: 0.875rem;\r\n }\r\n }\r\n .description {\r\n font-size: 0.75rem;\r\n }\r\n .trial-link {\r\n margin-top: 1rem;\r\n // margin-bottom: 1.25rem;\r\n }\r\n`;\r\nPlanCard.Footer = styled(Card.Footer).attrs({\r\n className: 'pt-0 pr-4 pb-4 pl-4',\r\n})`\r\n background: none;\r\n // padding: 0 1.25rem 2.5rem 1.25rem;\r\n .plan-card-disclaimer {\r\n font-size: 0.75rem;\r\n }\r\n`;\r\n\r\nexport const TermDropdownToggle = styled(DropdownToggle)`\r\n background: transparent;\r\n border: 1px solid #efeff0;\r\n color: black;\r\n :hover {\r\n background: transparent;\r\n border: 1px solid #efeff0;\r\n color: black;\r\n }\r\n`;\r\n\r\nexport const LinkButton = styled.button`\r\n border: 0;\r\n padding: 0;\r\n background-color: transparent;\r\n color: #005bac;\r\n cursor: pointer;\r\n :hover {\r\n text-decoration: underline;\r\n }\r\n`;\r\n","import React from 'react';\r\nimport { Link } from 'gatsby';\r\nimport styled from 'styled-components';\r\n\r\nexport default function ArrowLink({ noLink, className, ...props }) {\r\n if (noLink) {\r\n return (\r\n \r\n );\r\n }\r\n return (\r\n \r\n {props.children} ›\r\n \r\n );\r\n}\r\n\r\nArrowLink.Link = styled(Link)`\r\n display: inline-block;\r\n`;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { navigate } from 'gatsby';\r\n\r\nexport default function ViewAllPlansButton({ route = '/' }) {\r\n const { t } = useTranslation();\r\n return (\r\n {\r\n navigate(route);\r\n }}\r\n >\r\n {t('viewAllPlans')}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport '@i18n/i18n';\r\nimport {\r\n RateInfo,\r\n Price,\r\n StaticPrice,\r\n RateInfoSmall,\r\n PriceSmall,\r\n StaticPriceSmall,\r\n SavingsWithCurrency,\r\n} from '@ui/RateInfo';\r\n\r\nimport { formatCurrency, getSubscriptionCurrency } from '@util/functions';\r\nimport { useLocale } from '@util/providers/Locale';\r\n\r\nexport default function({ rate, plan, myPlan = false, showDisplayPrice }) {\r\n if (rate && rate.price) {\r\n if (myPlan) {\r\n return (\r\n \r\n {plan && plan.staticRatePlan && !plan.hasStaticRatePlanPrice ? (\r\n {rate.price}\r\n ) : (\r\n \r\n \r\n {rate}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n );\r\n }\r\n return (\r\n \r\n {plan && plan.staticRatePlan && !plan.hasStaticRatePlanPrice ? (\r\n {rate.price}\r\n ) : (\r\n \r\n \r\n {rate}\r\n \r\n \r\n )}\r\n\r\n \r\n \r\n );\r\n }\r\n\r\n return null;\r\n}\r\n\r\nfunction PriceHandler({ children: rate, showDisplayPrice }) {\r\n const { selectedCurrency } = useLocale();\r\n const subscriptionCurrency = getSubscriptionCurrency(selectedCurrency);\r\n return (\r\n rate.price && (\r\n <>\r\n {showDisplayPrice\r\n ? rate.price\r\n : formatCurrency(rate.price, subscriptionCurrency, {\r\n withLabel: false,\r\n trim: rate.price === parseInt(rate.price), // format currency to remove unnecessary fractional units ex: $99.00 as $99\r\n })}\r\n {!showDisplayPrice && {` ${subscriptionCurrency}`}}\r\n \r\n )\r\n );\r\n}\r\n\r\nfunction TermHandler(props) {\r\n const { t } = useTranslation();\r\n const { rate } = props;\r\n return (\r\n
\r\n {rate.isYearly && !isNaN(rate.price) && (\r\n \r\n )}{' '}\r\n \r\n {rate.isMonthly && t('PerMonth')}\r\n {rate.isYearly && t('PerYear')}\r\n {!rate.isMonthly && !rate.isYearly && rate.termName}\r\n \r\n
\r\n );\r\n}\r\n","import styled from 'styled-components';\r\n\r\nexport const PageContainer = styled.div`\r\n scrollbar-width: none;\r\n -ms-overflow-style: -ms-autohiding-scrollbar;\r\n ::-webkit-scrollbar {\r\n width: 0px;\r\n background: transparent;\r\n }\r\n`;\r\n\r\nexport const PlanCardContainer = styled.div`\r\n // padding-top: 1rem;\r\n // padding-right: 3rem;\r\n // padding-bottom: 1rem;\r\n // padding-left: 4rem;\r\n`;\r\n","import React from 'react';\r\nimport { navigate } from 'gatsby';\r\nimport { useTranslation } from 'react-i18next';\r\nimport '@i18n/i18n';\r\nimport { useUser } from '@util/providers/AuthProvider';\r\nimport { LinkButton } from '@ui/PlanCard';\r\nimport styled from 'styled-components';\r\n\r\nimport { usePlan } from '@util/providers/Plan';\r\n\r\nexport default function Introduction({ planDetails, plan }) {\r\n const { t } = useTranslation();\r\n const { bmoUser, ssoUser } = useUser();\r\n const { setSelectedPlan, setSelectedRate } = usePlan();\r\n\r\n const canTrial =\r\n bmoUser && bmoUser.subscriptionInfo\r\n ? bmoUser.subscriptionInfo.isTrialEligible\r\n : true;\r\n\r\n const SummaryHeader = () => {\r\n if (planDetails.summary.includes('favorite Boardmaker software')) {\r\n const splitSummary = planDetails.summary.split(\r\n 'favorite Boardmaker software'\r\n );\r\n return (\r\n \r\n {splitSummary[0]}\r\n \r\n {t('planDetails:favoriteBoardmakerSoftware')}\r\n \r\n {splitSummary[1]}\r\n \r\n );\r\n } else {\r\n return {planDetails.summary};\r\n }\r\n };\r\n\r\n const SummaryFooter = () => {\r\n if (planDetails.summaryEnd.includes('Start your free trial')) {\r\n return canTrial && ;\r\n } else {\r\n return

{planDetails.summaryEnd}

;\r\n }\r\n };\r\n\r\n function StartTrialText() {\r\n return (\r\n <>\r\n

\r\n {\r\n setSelectedPlan(plan);\r\n setSelectedRate(plan.ratePlans.find(rp => rp.isTrial));\r\n\r\n navigate(\r\n ssoUser\r\n ? plan.planSelectRoutes.trial.loggedIn\r\n : plan.planSelectRoutes.trial.loggedOut\r\n );\r\n }}\r\n >\r\n {t('trial.startYourFreeTrial')}\r\n \r\n {t('trial.todayWhichIncludesAccessForThirtyDays')}\r\n

\r\n \r\n );\r\n }\r\n\r\n return (\r\n <>\r\n \r\n \r\n

{planDetails.topReasons.header}

\r\n
\r\n
    \r\n {planDetails.topReasons.points.map((item, key) => (\r\n
  • {item}
  • \r\n ))}\r\n
\r\n \r\n );\r\n}\r\n\r\nexport const Summary = styled.p`\r\n white-space: pre-line;\r\n`;\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\n\r\nexport default function FeaturesList({ planDetails, className }) {\r\n return (\r\n
\r\n
\r\n {planDetails.features.map((item, key) => (\r\n
\r\n \r\n
\r\n ))}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport function FeatureBlock({ item }) {\r\n return (\r\n
\r\n

{item.featureTitle}

\r\n

{item.featureDescription}

\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport classNames from 'classnames';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport default function Advantages({ planDetails, className }) {\r\n const { t } = useTranslation();\r\n return (\r\n
\r\n

{t('advantages')}

\r\n {planDetails.advantages.map((item, key) => (\r\n
\r\n \r\n

{item.advantageTitle}

\r\n
\r\n
    \r\n {item.advantagePoints.map((item2, key2) => (\r\n
  • {item2}
  • \r\n ))}\r\n
\r\n
\r\n
\r\n ))}\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\n\r\nimport { PlanCardContainer } from '@ui/Details/Details';\r\n\r\nimport ViewAllPlansButton from '../components/Miscellaneous/ViewAllPlansButton';\r\nimport Introduction from '@components/Details/Introduction';\r\nimport FeaturesList from '@components/Details/FeaturesList';\r\nimport Advantages from '@components/Details/Advantages';\r\n\r\nimport { useUser } from '@util/providers/AuthProvider';\r\nimport { useLocale } from '@util/providers/Locale';\r\n\r\nimport PlanCard from '@components/PlanCard';\r\nimport LicensePlanCard from '@components/PlanCard/License/LicensePlanCard';\r\nimport SystemRequirements from '@components/Details/SystemRequirements/SystemRequirements';\r\n\r\nconst Details = ({ planDetails, plan }) => {\r\n const { bmoUser } = useUser();\r\n const { selectedCurrency } = useLocale();\r\n const showDisplayPrice = !(\r\n selectedCurrency === 'USD' || selectedCurrency === 'CAD'\r\n );\r\n var licensePlan = plan.id >= 4;\r\n const route = licensePlan ? '/license' : '/';\r\n const isSubscriber =\r\n bmoUser &&\r\n bmoUser.zuoraInfo &&\r\n bmoUser.zuoraInfo.subscriptions &&\r\n bmoUser.zuoraInfo.subscriptions.length !== 0;\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n \r\n\r\n {/* START: >= lg details */}\r\n \r\n {planDetails.advantages && planDetails.advantages.length > 0 && (\r\n \r\n )}\r\n\r\n \r\n {/* END: >= lg details */}\r\n
\r\n\r\n {\r\n //* show only on tablet and desktop\r\n }\r\n {!isSubscriber && (\r\n \r\n {\r\n // location.state != null ? (\r\n <>\r\n \r\n {licensePlan ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n {}\r\n
\r\n
\r\n
\r\n {licensePlan ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n {}\r\n
\r\n
\r\n \r\n // ) : null\r\n }\r\n\r\n {/* START: >= tablet */}\r\n {/*
\r\n {}\r\n
*/}\r\n {/* END: >= tablet */}\r\n \r\n )}\r\n \r\n {/* START: < lg details */}\r\n
\r\n \r\n {planDetails.advantages && planDetails.advantages.length > 0 && (\r\n \r\n )}\r\n \r\n
\r\n {/* END: < lg details */}\r\n \r\n );\r\n};\r\n\r\nexport default Details;\r\n","import React from 'react';\r\nimport { navigate } from 'gatsby';\r\nimport styled from 'styled-components';\r\nimport { useTranslation } from 'react-i18next';\r\nimport {\r\n UncontrolledDropdown,\r\n DropdownToggle,\r\n DropdownMenu,\r\n DropdownItem,\r\n} from 'reactstrap';\r\nimport { useUser } from '@util/providers/AuthProvider';\r\nimport { usePlan } from '@util/providers/Plan';\r\n\r\nexport default function SubscribeButton({ plan }) {\r\n const { t } = useTranslation();\r\n const { ssoUser, bmoUser } = useUser();\r\n const myPlan = getMyPlan();\r\n const {\r\n termIsYearly,\r\n setSelectedPlan,\r\n setSelectedRate,\r\n trialLength,\r\n } = usePlan();\r\n\r\n function getMyPlan() {\r\n const isCommunityUser = bmoUser && !bmoUser.subscriptionInfo;\r\n const isPersonalUser =\r\n bmoUser &&\r\n bmoUser.subscriptionInfo &&\r\n bmoUser.subscriptionInfo.planType.toLowerCase() === 'family';\r\n const isProfessionalUser =\r\n bmoUser &&\r\n bmoUser.subscriptionInfo &&\r\n bmoUser.subscriptionInfo.planType.toLowerCase() === 'classroom';\r\n\r\n const isDistrictUser =\r\n bmoUser &&\r\n bmoUser.subscriptionInfo &&\r\n bmoUser.subscriptionInfo.planType.toLowerCase() === 'district';\r\n\r\n\r\n if (isCommunityUser) {\r\n return 'community';\r\n } else if (isPersonalUser) {\r\n return 'personal';\r\n } else if (isProfessionalUser) {\r\n return 'professional';\r\n } else if (isDistrictUser) {\r\n return 'district';\r\n } \r\n return null;\r\n }\r\n\r\n const canTrial =\r\n bmoUser && bmoUser.subscriptionInfo\r\n ? bmoUser.subscriptionInfo.isTrialEligible\r\n : true;\r\n\r\n function getRatePlanByType(p) {\r\n return (\r\n p.staticRatePlan ||\r\n p.ratePlans.find(rp => (termIsYearly ? rp.isYearly : rp.isMonthly))\r\n );\r\n }\r\n return (\r\n <>\r\n
\r\n {plan.key === 'personal' || plan.key === 'professional' ? (\r\n \r\n \r\n {t('action.getStarted')}\r\n \r\n \r\n {\r\n console.log('TrialLinkClick');\r\n setSelectedPlan(plan);\r\n setSelectedRate(getRatePlanByType(plan));\r\n navigate(\r\n ssoUser\r\n ? plan.planSelectRoutes.loggedIn\r\n : plan.planSelectRoutes.loggedOut\r\n );\r\n }}\r\n >\r\n {t(plan.actionText)}\r\n \r\n {plan.hasTrial && canTrial && (\r\n {\r\n setSelectedPlan(plan);\r\n setSelectedRate(\r\n plan.ratePlans.filter(\r\n ratePlan => ratePlan.isTrial === true\r\n )[0]\r\n );\r\n navigate(\r\n ssoUser\r\n ? plan.planSelectRoutes.trial.loggedIn\r\n : plan.planSelectRoutes.trial.loggedOut\r\n );\r\n }}\r\n key=\"trial\"\r\n >\r\n {t('action.startTrial')}\r\n \r\n )}\r\n \r\n \r\n ) : plan.key === 'community' && myPlan === 'community' ? (\r\n {\r\n navigate('/redirect', {\r\n state: {\r\n extension: '/You/Home',\r\n },\r\n });\r\n }}\r\n >\r\n {t('planCard.myPlan')}\r\n \r\n ) : (\r\n {\r\n setSelectedPlan(plan);\r\n setSelectedRate(getRatePlanByType(plan));\r\n navigate(\r\n ssoUser\r\n ? plan.planSelectRoutes.loggedIn\r\n : plan.planSelectRoutes.loggedOut\r\n );\r\n }}\r\n >\r\n {t(plan.actionText)}\r\n \r\n )}\r\n
\r\n \r\n );\r\n}\r\n\r\nconst LightBold = styled.span`\r\n font-weight: 600;\r\n`;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { UncontrolledDropdown, DropdownItem, DropdownMenu } from 'reactstrap';\r\n\r\nimport { usePlan } from '@util/providers/Plan';\r\n\r\nimport { TermDropdownToggle } from '@ui/PlanCard';\r\n\r\nexport default function PlanTermSelect() {\r\n const { t } = useTranslation();\r\n const { termIsYearly, setTermIsYearly } = usePlan();\r\n return (\r\n \r\n \r\n {termIsYearly ? t('yearly') : t('monthly')} {t('subscription')}\r\n \r\n \r\n setTermIsYearly(false)}>\r\n
\r\n \r\n \r\n
\r\n
\r\n setTermIsYearly(true)}>\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from 'react';\r\nimport { Link } from 'gatsby';\r\nimport { useTranslation, Trans } from 'react-i18next';\r\nimport styled from 'styled-components';\r\n\r\nimport { useUser } from '@util/providers/AuthProvider';\r\nimport { usePlan } from '@util/providers/Plan';\r\n\r\nimport RateInfo from '@components/PlanCard/RateInfo';\r\nimport { PlanCard } from '@ui/PlanCard';\r\nimport SubscribeButton from './SubscribeButton';\r\nimport PlanTermSelect from './PlanTermSelect';\r\n\r\nexport default function({ plan, hideLearnMoreLink, className }) {\r\n const { t } = useTranslation();\r\n const { bmoUser } = useUser();\r\n const { termIsYearly, trialLength } = usePlan();\r\n\r\n const community = plan.id === '0';\r\n const organization = plan.id === '3';\r\n const personalOrProfessional = !community && !organization;\r\n\r\n const canTrial =\r\n bmoUser && bmoUser.subscriptionInfo\r\n ? bmoUser.subscriptionInfo.isTrialEligible\r\n : true;\r\n\r\n //* gets static rate\r\n //* || gets trial rate\r\n //* || gets plan rate based on monthly/yearly state\r\n function getRatePlanByType(p, isTrial) {\r\n if (p.staticRatePlan) return p.staticRatePlan;\r\n if (isTrial) return p.ratePlans.find(rp => rp.isTrial);\r\n return p.ratePlans.find(rp => (termIsYearly ? rp.isYearly : rp.isMonthly));\r\n }\r\n\r\n const currentRate = getRatePlanByType(plan);\r\n\r\n return (\r\n <>\r\n \r\n {plan.name}\r\n \r\n

\r\n {plan.shortDescription}\r\n

\r\n \r\n {hideLearnMoreLink ? (\r\n personalOrProfessional && \r\n ) : (\r\n
\r\n \r\n {t('action.learnMore')} ›\r\n \r\n
\r\n )}\r\n
\r\n \r\n {plan.hasTrial && canTrial && (\r\n
\r\n

\r\n {t('action.try')}\r\n {t('action.free')} \r\n {/* prettier-ignore */}\r\n \r\n for\r\n {{\r\n trialLength: trialLength,\r\n }}\r\n days\r\n \r\n

\r\n
\r\n )}\r\n \r\n
\r\n {t(currentRate.disclaimerKey)}\r\n
\r\n
\r\n
\r\n \r\n );\r\n}\r\n\r\nconst LightBold = styled.span`\r\n font-weight: 600;\r\n`;\r\n","import React from 'react';\r\nimport styled from 'styled-components';\r\n\r\nimport { useLocale } from '@util/providers/Locale';\r\nimport { getSubscriptionCurrency } from '@util/functions';\r\nimport { formatCurrency } from '@util/functions';\r\n\r\nexport const RateInfo = styled.div`\r\n padding-top: 0.5rem;\r\n margin-bottom: 1.875rem;\r\n`;\r\nexport const RateInfoSmall = styled(RateInfo)`\r\n margin-bottom: 1rem;\r\n`;\r\n\r\nexport const Price = styled.h2`\r\n color: #231f20;\r\n font-size: 3rem;\r\n margin-bottom: 0;\r\n small {\r\n font-size: 1rem;\r\n }\r\n`;\r\n\r\nexport const PriceSmall = styled(Price)`\r\n font-size: 2rem;\r\n margin-bottom: 0.5rem;\r\n`;\r\n\r\nexport const StaticPrice = styled.h2`\r\n color: #231f20;\r\n font-size: 2rem;\r\n line-height: 1.7875;\r\n margin-bottom: 0;\r\n`;\r\n\r\nexport const StaticPriceSmall = styled(StaticPrice)`\r\n line-height: normal;\r\n margin-bottom: 0.5rem;\r\n`;\r\n\r\nfunction Savings(rate, plan, withLabel) {\r\n const { selectedCurrency } = useLocale();\r\n const subscriptionCurrency = getSubscriptionCurrency(selectedCurrency);\r\n const baseRate = plan.ratePlans.find(rp => rp.baseRate).price;\r\n return formatCurrency((baseRate * 12).toFixed(2), subscriptionCurrency, {\r\n withLabel,\r\n });\r\n}\r\n\r\nexport function SavingsWithCurrency({ rate, plan, withLabel, className }) {\r\n return {Savings(rate, plan, withLabel)};\r\n}\r\n\r\nexport function TermPrice({ rate }) {\r\n const { selectedCurrency } = useLocale();\r\n const subscriptionCurrency = getSubscriptionCurrency(selectedCurrency);\r\n if (rate.free) {\r\n return rate.price;\r\n }\r\n\r\n return (\r\n <>\r\n $\r\n {rate.price != null && `${rate.price.toFixed(2)} ${subscriptionCurrency}`}\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useLocale } from '@util/providers/Locale';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nexport default function ShopifyButton() {\r\n const { t } = useTranslation();\r\n const { locale } = useLocale();\r\n const isoCode = mapRegionsToShopify(\r\n locale.localeDetails?.isoCode\r\n ).toLowerCase();\r\n const shopifyLink = `https://${isoCode}.tobiidynavox.com/products/boardmaker-7-standard`;\r\n return (\r\n <>\r\n \r\n {t('action.buyNow')}\r\n \r\n \r\n );\r\n}\r\n\r\nfunction mapRegionsToShopify(isoCode) {\r\n return isoCode === 'GB' ? 'UK' : isoCode;\r\n}\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useLocale } from '@util/providers/Locale';\r\nimport Helmet from 'react-helmet';\r\nimport i18n from '../../i18n/i18n';\r\nimport { navigate } from 'gatsby';\r\n\r\nfunction handleFSStoreClose(orderReference) {\r\n if (orderReference) {\r\n window.fastspring.builder.reset();\r\n navigate('/license/thankyou', {\r\n state: {\r\n purchase: {\r\n method: 'fastspring',\r\n ref: orderReference,\r\n },\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport default function FastSpringButton() {\r\n const { t } = useTranslation();\r\n const { locale } = useLocale();\r\n //* sets globally scoped function to our component scoped function\r\n window.onFSPopupClosed = handleFSStoreClose;\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n {\r\n const fastspring = window.fastspring;\r\n fastspring.builder.add(process.env.FASTSPRING_PRODUCT_KEY);\r\n fastspring.builder.country(locale?.localeDetails?.isoCode);\r\n fastspring.builder.language(i18n.language.substring(0, 2));\r\n fastspring.builder.checkout();\r\n }}\r\n >\r\n {t('action.buyNow')}\r\n \r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { Link } from 'gatsby';\r\nimport { useExternalPurchaseMethod } from '@util/hooks/useExternalPurchaseMethod';\r\n\r\nexport default function PlanCardFooter({ plan }) {\r\n const { t } = useTranslation();\r\n const buttonText = t(plan?.action?.text);\r\n const ExternalPurchaseButton = useExternalPurchaseMethod();\r\n\r\n return (\r\n <>\r\n
\r\n {plan.action.route ? (\r\n \r\n {buttonText}\r\n \r\n ) : (\r\n \r\n )}\r\n
\r\n
\r\n {t(plan?.staticRatePlan?.disclaimerKey)}\r\n
\r\n \r\n );\r\n}\r\n","import ShopifyButton from '@components/Miscellaneous/ShopifyButton';\r\nimport FastSpringButton from '@components/Miscellaneous/FastSpringButton';\r\nimport { useLocale } from '../providers/Locale';\r\n\r\nexport function useExternalPurchaseMethod() {\r\n const { locale } = useLocale();\r\n const shopifyRegions = process.env.SHOPIFY_REGIONS.split(',');\r\n\r\n return shopifyRegions.includes(locale?.localeDetails?.isoCode)\r\n ? ShopifyButton\r\n : FastSpringButton;\r\n}\r\n","import React from 'react';\r\nimport { useTranslation, Trans } from 'react-i18next';\r\n\r\nimport RateInfo from '@components/PlanCard/RateInfo';\r\nimport { PlanCard } from '@ui/PlanCard';\r\nimport LicensePlanCardFooter from './LicensePlanCardFooter';\r\n\r\nimport ArrowLink from '@components/Miscellaneous/ArrowLink';\r\n\r\nexport default function({\r\n plan,\r\n className,\r\n hideLearnMoreLink,\r\n showDisplayPrice,\r\n}) {\r\n const { t } = useTranslation();\r\n return (\r\n <>\r\n \r\n {plan.name}\r\n \r\n

\r\n {plan.shortDescription}\r\n

\r\n \r\n {!hideLearnMoreLink && (\r\n
\r\n \r\n {t('action.learnMore')}\r\n \r\n
\r\n )}\r\n
\r\n

\r\n {/* prettier-ignore */}\r\n {/* \r\n Allows License Plan Card note to be driven by the data\r\n Each span allows a different style of the word free that\r\n can be referenced in a node in i18n files dynamically.\r\n\r\n This allows us to avoid using a hard coded conditional to manipulate the free text format.\r\n */}\r\n \r\n free\r\n free\r\n \r\n

\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n );\r\n}\r\n","import React from 'react';\r\nimport URLS from '@config/urls';\r\nimport classNames from 'classnames';\r\nimport { useTranslation, Trans } from 'react-i18next';\r\nimport { Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\r\n\r\nexport default function DetailsSystemRequirements({\r\n planDetails,\r\n className,\r\n inModal,\r\n}) {\r\n const { t } = useTranslation();\r\n return (\r\n
\r\n {!inModal && (\r\n <>\r\n

\r\n {t('systemRequirements')}\r\n

\r\n

\r\n {t('systemRequirements')}\r\n

\r\n \r\n )}\r\n\r\n
\r\n {!inModal && ( \r\n <>\r\n \r\n View the \r\n \r\n {{ guideLink: 'Boardmaker 7 Compatibility Guide' }}\r\n \r\n for system requirements.\r\n \r\n \r\n )}\r\n {inModal && (\r\n planDetails.requirements.operatingSystem?.length > 0 && (\r\n \r\n )\r\n )}\r\n {inModal && (\r\n planDetails.requirements.browser?.length > 0 && (\r\n \r\n )\r\n )}\r\n {inModal && (\r\n planDetails.requirements.eyeTracker?.length > 0 && (\r\n <>\r\n

\r\n {t('supportedPeripherals')}\r\n

\r\n

\r\n {t('supportedPeripherals')}\r\n

\r\n \r\n \r\n )\r\n )}\r\n
\r\n
\r\n );\r\n}\r\n\r\nfunction SystemRequirementsSection({ headers, entries }) {\r\n return (\r\n
\r\n
\r\n {headers.map((item, key) => (\r\n
\r\n {item}\r\n
\r\n ))}\r\n
\r\n\r\n {entries.map((item, key) => (\r\n
\r\n {item.map((item2, key2) => (\r\n
\r\n {item2}\r\n
\r\n ))}\r\n
\r\n ))}\r\n
\r\n );\r\n}\r\n\r\nfunction SystemRequirementsList({ headers, entries }) {\r\n return (\r\n
\r\n
\r\n {headers.map((item, key) => (\r\n
\r\n {item}\r\n
\r\n ))}\r\n
\r\n
\r\n {entries.map((item, key) => (\r\n {item} \r\n ))}\r\n
\r\n
\r\n );\r\n}\r\n\r\nexport function SystemRequirementsModal({\r\n planDetails,\r\n isOpen,\r\n toggle,\r\n className,\r\n}) {\r\n const { t } = useTranslation();\r\n return (\r\n \r\n \r\n {t('systemRequirements')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n"],"sourceRoot":""}