{"version":3,"file":"js/95-f92221232ff17bcd1910.js","mappings":"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","sources":["webpack://lc3/./app/javascript/components/payments/FullPaymentForm.jsx","webpack://lc3/./app/javascript/components/payments/PaymentError.jsx","webpack://lc3/./app/javascript/components/payments/PaypalButton.jsx","webpack://lc3/./app/javascript/components/payments/StripeForm.jsx","webpack://lc3/./app/javascript/components/payments/StripePaymentElement.jsx","webpack://lc3/./app/javascript/components/payments/hooks.js","webpack://lc3/./app/javascript/components/payments/propTypes.js","webpack://lc3/./app/javascript/components/sell/AccessBenefits.jsx","webpack://lc3/./app/javascript/components/sell/PlanCardBenefitsButton.jsx","webpack://lc3/./app/javascript/components/sell/constants/index.js","webpack://lc3/./app/javascript/components/shared/DarkPopover.jsx","webpack://lc3/./app/javascript/components/shared/PlanPageHeader.jsx","webpack://lc3/./app/javascript/components/shared/PlanToggle.jsx","webpack://lc3/./app/javascript/components/shared/Radio.jsx","webpack://lc3/./app/javascript/components/shared/SellPlanCard.jsx","webpack://lc3/./app/javascript/components/shared/SignUpWithModal.jsx","webpack://lc3/./app/javascript/components/shared/Tabs.jsx","webpack://lc3/./app/javascript/components/shared/Toggle.jsx","webpack://lc3/./app/javascript/components/shared/helpers/keyPressHelpers.js","webpack://lc3/./app/javascript/helpers/classnames.js","webpack://lc3/./app/javascript/lib/shared/fetch.js"],"sourcesContent":["import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport RealPaypalButton from \"components/payments/PaypalButton\";\nimport StripeForm from \"components/payments/StripeForm\";\nimport {\n paypalHandlersPropTypes,\n stripeHandlersPropTypes,\n} from \"components/payments/propTypes\";\n\nexport default function FullPaymentForm(props) {\n const {\n paypalEnvironment,\n paypalProcessing,\n paypalHandlers,\n stripeReturnUrl,\n FormButtons,\n stripeHandlers,\n stripeProcessing,\n disabled,\n paypalErrorMessage,\n stripeErrorMessage,\n stripeFormKey,\n PaypalButton,\n StripePaymentElement,\n subscriptionType,\n clientSecret,\n isPaymentIntent,\n } = props;\n return (\n <div className=\"payment-form\">\n <PaypalButton\n environment={paypalEnvironment}\n processing={paypalProcessing}\n disabled={disabled}\n errorMessage={paypalErrorMessage}\n {...paypalHandlers}\n />\n <StripeForm\n isPaymentIntent={isPaymentIntent}\n clientSecret={clientSecret}\n stripeFormKey={stripeFormKey}\n returnUrl={stripeReturnUrl}\n FormButtons={FormButtons}\n processing={stripeProcessing}\n disabled={disabled}\n errorMessage={stripeErrorMessage}\n StripePaymentElement={StripePaymentElement}\n subscriptionType={subscriptionType}\n {...stripeHandlers}\n />\n </div>\n );\n}\n\nFullPaymentForm.propTypes = {\n paypalEnvironment: PropTypes.oneOf([\"live\", \"sandbox\"]).isRequired,\n paypalHandlers: PropTypes.shape(paypalHandlersPropTypes).isRequired,\n stripeHandlers: PropTypes.shape(stripeHandlersPropTypes).isRequired,\n stripeReturnUrl: PropTypes.string,\n FormButtons: PropTypes.element,\n paypalProcessing: PropTypes.bool.isRequired,\n stripeProcessing: PropTypes.bool.isRequired,\n disabled: PropTypes.bool.isRequired,\n paypalErrorMessage: PropTypes.string,\n stripeErrorMessage: PropTypes.string,\n stripeFormKey: PropTypes.string,\n PaypalButton: PropTypes.elementType,\n StripePaymentElement: PropTypes.elementType,\n subscriptionType: PropTypes.string.isRequired,\n clientSecret: PropTypes.string.isRequired,\n isPaymentIntent: PropTypes.bool,\n};\n\nFullPaymentForm.defaultProps = {\n FormButtons: null,\n paypalErrorMessage: null,\n stripeErrorMessage: null,\n stripeFormKey: null,\n PaypalButton: RealPaypalButton,\n StripePaymentElement: undefined,\n isPaymentIntent: false,\n};\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nexport default function PaymentError(props) {\n const { errorMessage, innerRef, testId } = props;\n return (\n <div ref={innerRef} className=\"payment-form-messages\">\n {errorMessage && (\n <div\n id=\"payment-form-error-message\"\n className=\"lc-banner lc-banner-warning lc-banner-section payment-errors\"\n data-testid={testId}\n >\n {errorMessage}\n </div>\n )}\n </div>\n );\n}\n\nPaymentError.propTypes = {\n errorMessage: PropTypes.string,\n testId: PropTypes.string,\n};\n\nPaymentError.defaultProps = {\n errorMessage: null,\n testId: null,\n};\n","import React, { useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { paypalHandlersPropTypes } from \"components/payments/propTypes\";\nimport PaymentError from \"components/payments/PaymentError\";\n\n/* Paypal Handler functions\n validate: it is *not* called at validation time. It\n is only called *once* when the PayPal JS lib is first loaded. A more accurate name would be\n `onPaypalScriptLoaded`. See:\n - https://github.com/paypal/paypal-checkout/issues/392#issuecomment-311571546\n - https://github.com/paypal/paypal-checkout/issues/139#issuecomment-293146410\n\n params: paypalActions\n has 2 functions\n enable: enables the paypal button\n disable: disables the paypal button\n\n Only free tier and reactivation flows will need this. The user has to select a plan first.\n All other flows will have the plan already set.\n\n This should probably be used to get the paypalActions into the parent component to allow\n for enabling and disabling the paypal button based on the validity of the parent.\n\n onClick: Called when the Paypal button is clicked. Even if the button is disabled via the validate function\n this function will still be called, the Paypal pop up will not open.\n\n Not sure we need to use this. It looked useful when using vanilla js, but React will allow us to handle\n a lot of the validation requirements outside the Paypal button.\n\n payment: Called when the Paypal button is clicked IF the button is enabled. This is used to set up the payment.\n Currently we make a POST ajax request to /paypal/billing_agreements with the subcription (plan type, annual or monthly)\n and the proration_date for the upgrade flow (going from monthly to annual). The response from that request contains\n the token\n\n params: resolve, reject\n resolve - called with the token returned from the server\n reject - called with error from the request to /paypal/billing_agreements if it fails\n\n onAuthorize: called after payment is resolved. The first param data will contain a paymentToken. This is used (along with rest of form data)\n to post to / (registrations#create). When being posted, paymentToken is called paypal_token. It's used to create a PayAttempt.\n If the PayAttempt is in a pending state by the end of the request, the front end must poll the server until it either succeeds\n or fails. The returned pay_attempt will have a `url` key to use.\n\n params: data, paypalActions\n data: {\n billingToken:\n button_version:\n intent:\n orderID:\n paymentID:\n paymentToken:\n returnUrl:\n }\n paypalActions: doesn't seem to be used\n\n onCancel: called when the user cancels the paypal flow.\n\n onError: This is called when the payment handler is rejected.\n\n See app/assets/javascripts/lc4/payment.js and app/assets/javascripts/lc4/signup_subscribe.js for\n current implement details.\n\n Incomplete Paypal docs: https://developer.paypal.com/docs/archive/checkout/how-to/customize-flow/\n*/\n\nconst style = {\n size: \"responsive\", // small | medium | large | responsive\n color: \"gold\", // gold | blue | silver | black\n shape: \"rect\", // pill | rect\n label: \"pay\", // checkout | credit | pay | buynow | generic\n tagline: false, // (removes \"The safer, easier way to pay\" tagline below button),\n height: 55,\n layout: \"horizontal\",\n};\n\nexport default function PaypalButton(props) {\n const {\n validate,\n onClick,\n payment,\n onAuthorize,\n onCancel,\n onError,\n processing,\n disabled,\n errorMessage,\n showSeparator,\n } = props;\n const buttonContainer = useRef(null);\n useEffect(() => {\n const env = props.environment === \"live\" ? \"production\" : \"sandbox\";\n window.paypal.Button.render(\n {\n env,\n style,\n validate,\n onClick,\n payment,\n onAuthorize,\n onCancel,\n onError,\n },\n buttonContainer.current\n );\n }, []);\n return (\n <>\n <PaymentError errorMessage={errorMessage} testId=\"paypal-error\" />\n <div className=\"paypal-button-holder\">\n <div\n ref={buttonContainer}\n id=\"lc-paypal-button-container\"\n className=\"lc-paypal-button stripe-updates\"\n style={{ display: processing ? \"none\" : \"block\" }}\n />\n <button\n disabled\n type=\"button\"\n className=\"btn btn-primary btn-lg form-button form-submit\"\n style={{ display: processing ? \"block\" : \"none\", width: \"100%\" }}\n >\n <i className=\"fa fa-cog fa-spin fa-fw\" />\n PayPal processing…\n </button>\n <div\n className=\"paypal-disabled-overlay\"\n style={{ display: disabled ? \"block\" : \"none\" }}\n />\n </div>\n {showSeparator && <Separator />}\n </>\n );\n}\n\nPaypalButton.propTypes = {\n environment: PropTypes.oneOf([\"live\", \"sandbox\"]).isRequired,\n processing: PropTypes.bool.isRequired,\n showSeparator: PropTypes.bool,\n ...paypalHandlersPropTypes,\n};\n\n// Might not need validation depending on what flow the user is in\n/* eslint-disable react/default-props-match-prop-types */\n// This fails despite the fact that that the proptypes for these are being spread above\nPaypalButton.defaultProps = {\n validate: () => {},\n onClick: () => {},\n showSeparator: true,\n};\n/* eslint-enable react/default-props-match-prop-types */\n\nfunction Separator(_props) {\n return (\n <div className=\"separator\">\n <hr />\n <span>or</span>\n <hr />\n </div>\n );\n}\n","import React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport classnames from \"classnames\";\nimport { stripeHandlersPropTypes } from \"components/payments/propTypes\";\nimport RealStripePaymentElement from \"components/payments/StripePaymentElement\";\nimport PaymentError from \"components/payments/PaymentError\";\n\nexport default function StripeForm(props) {\n const {\n bodyClass,\n formClass,\n FormButtons,\n onReady,\n onError,\n onSubmission,\n onSuccess,\n returnUrl,\n setupIntentsPath,\n disabled,\n processing,\n errorMessage,\n stripeFormKey,\n StripePaymentElement,\n subscriptionType,\n clientSecret,\n isPaymentIntent,\n } = props;\n\n const [elements, setElements] = useState(null);\n\n const key = stripeFormKey || \"paymentElement\";\n\n const handleStripeAction = () => {\n const { stripe } = window.LitCharts;\n const confirmParams = {\n return_url: returnUrl,\n };\n const options = {\n redirect: \"if_required\",\n elements,\n };\n\n const action = isPaymentIntent\n ? stripe.confirmPayment\n : stripe.confirmSetup;\n\n action({\n confirmParams,\n ...options,\n }).then((result) => {\n if (result.error) {\n onError(result);\n } else {\n onSuccess(result);\n }\n });\n };\n\n const onSubmit = (e) => {\n e.preventDefault();\n if (!onSubmission(e)) {\n return;\n }\n\n handleStripeAction();\n };\n\n const buttons = FormButtons ? (\n <FormButtons disabled={disabled} processing={processing} />\n ) : (\n <DefaultFormButtons disabled={disabled} processing={processing} />\n );\n\n return (\n <form\n className={classnames(\"stripe-payment-form\", formClass)}\n onSubmit={onSubmit}\n >\n <PaymentError errorMessage={errorMessage} testId=\"stripe-error\" />\n <div className={classnames(\"stripe-payment-form-body\", bodyClass)}>\n <StripePaymentElement\n key={key}\n clientSecret={clientSecret}\n setupIntentsPath={setupIntentsPath}\n setElements={setElements}\n onReady={onReady}\n isPaymentIntent={isPaymentIntent}\n subscriptionType={subscriptionType}\n />\n </div>\n {buttons}\n </form>\n );\n}\n\nStripeForm.propTypes = {\n setupIntentsPath: PropTypes.string,\n returnUrl: PropTypes.string,\n onSubmission: PropTypes.func,\n isPaymentIntent: PropTypes.bool,\n stripeFormKey: PropTypes.string,\n StripePaymentElement: PropTypes.elementType,\n ...stripeHandlersPropTypes,\n};\n\nStripeForm.defaultProps = {\n isPaymentIntent: false,\n setupIntentsPath: null,\n stripeFormKey: null,\n StripePaymentElement: RealStripePaymentElement,\n onSubmission: () => {\n return true;\n },\n};\n\nfunction DefaultFormButtons({ disabled, processing }) {\n return (\n <button\n className=\"btn btn-a-plus btn-block\"\n type=\"submit\"\n disabled={disabled}\n >\n {processing ? \"Processing...\" : \"Subscribe\"}\n </button>\n );\n}\n","import React, { useEffect, useRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Elements, PaymentElement, useElements } from \"@stripe/react-stripe-js\";\nimport { fetchSetupIntentSecret, updateSetupIntent } from \"./hooks\";\n\nconst inputBorder = \"#8B8C8C\";\nconst activeInputBorder = \"#054046\";\nconst labelColor = \"#181919\";\nconst placeholderColor = \"#747575\";\n\n// this is the url for the Nunito font as litcharts uses it, though I couldn't get it to work with stripe.\n// const fonts = [{ name: 'Nunito Sans', src: 'url(https://d3k3g22gcb0gya.cloudfront.net/assets/NunitoSans-Regular-13ad641781e6dd5f2134fcfc9b1589e3c66902b69ccbb68b74d3bd139c1e324e.ttf)' }];\n\nconst fonts = [\n { cssSrc: \"https://fonts.googleapis.com/css?family=Nunito+Sans\" },\n];\n\nconst appearance = {\n variables: {\n fontFamily: \"Nunito Sans\",\n colorPrimary: labelColor,\n colorBackground: \"white\",\n colorIconTabSelected: activeInputBorder,\n colorText: labelColor,\n colorTextPlaceholder: placeholderColor,\n borderRadius: \"4px\",\n iconChevronDownColor: labelColor,\n colorDanger: \"#BB5050\",\n fontLineHeight: \"25px\",\n },\n rules: {\n \".Tab\": {\n borderColor: inputBorder,\n color: placeholderColor,\n },\n \".Tab:hover\": {\n borderColor: inputBorder,\n color: labelColor,\n },\n \".Tab:active\": {\n borderColor: inputBorder,\n color: labelColor,\n },\n \".Tab:focus\": {\n borderColor: inputBorder,\n color: activeInputBorder,\n },\n \".Tab--selected\": {\n borderColor: activeInputBorder,\n color: activeInputBorder,\n },\n \".TabIcon\": {\n color: placeholderColor,\n },\n \".TabIcon:active\": {\n color: labelColor,\n },\n \".TabIcon:focus\": {\n color: activeInputBorder,\n },\n \".TabIcon:hover\": {\n color: labelColor,\n },\n \".Input\": {\n borderColor: labelColor,\n fontSize: \"16px\",\n padding: \"10px\",\n },\n \".Input--empty\": {\n borderColor: inputBorder,\n },\n \".Input:focus\": {\n borderColor: activeInputBorder,\n },\n \".Label\": {\n color: labelColor,\n fontSize: \"16px\",\n lineHeight: \"26px\",\n },\n \".TermsText\": {\n color: placeholderColor,\n padding: \"0px\",\n lineHeight: \"20px\",\n },\n },\n};\n\n// Note: We support both PaymentIntents and SetupIntents from Stripe. In both instances, we need\n// a client secret and we therefore pass in the prop isPaymentIntent to decide whether we send Stripe\n// down the SetupIntent vs PaymentIntent route.\nexport default function StripeElements({\n setElements,\n setupIntentsPath,\n onReady,\n subscriptionType,\n isPaymentIntent,\n clientSecret: propClientSecret,\n}) {\n const ref = useRef();\n\n const [clientSecret, setupIntentId] = isPaymentIntent\n ? [propClientSecret, null]\n : fetchSetupIntentSecret(setupIntentsPath, subscriptionType);\n\n // This useEffect is to handle updating the subscription plan via the Sell Form with\n // the subscription radio buttons for SetupIntents. We need to update the Setup Intent with the expected\n // mandate options. We could just create a new setup intent and reload the form, but that\n // would blow away anything the user typed in.\n useEffect(() => {\n if (!isPaymentIntent && setupIntentId && ref.current) {\n updateSetupIntent(setupIntentId, subscriptionType);\n }\n ref.current = true;\n }, [setupIntentId, subscriptionType, isPaymentIntent]);\n\n if (!clientSecret) return null;\n\n const stripeOptions = { clientSecret, appearance, fonts };\n\n return (\n <Elements stripe={window.LitCharts.stripe} options={stripeOptions}>\n <StripePaymentElement setElements={setElements} onReady={onReady} />\n </Elements>\n );\n}\n\nStripeElements.propTypes = {\n setElements: PropTypes.func.isRequired,\n clientSecret: PropTypes.string.isRequired,\n onReady: PropTypes.func.isRequired,\n isPaymentIntent: PropTypes.bool,\n};\n\nStripeElements.defaultProps = {\n isPaymentIntent: false,\n};\n\nfunction StripePaymentElement(props) {\n const elements = useElements();\n useEffect(() => {\n props.setElements(elements);\n }, []);\n\n return <PaymentElement onReady={props.onReady} />;\n}\n\nStripePaymentElement.propTypes = {\n setElements: PropTypes.func.isRequired,\n onReady: PropTypes.func.isRequired,\n};\n","import { useEffect, useState } from \"react\";\nimport LcFetch from \"../../lib/shared/fetch\";\n\nfunction fetchSetupIntentSecret(path, subscriptionType) {\n const fetchPath = path || \"/setup_intents\";\n const [setupIntentData, setSetupIntentData] = useState([]);\n useEffect(() => {\n const fetchClientSecret = async () => {\n const response = await LcFetch(fetchPath, {\n method: \"POST\",\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ subscription: subscriptionType }),\n });\n const json = await response.json();\n setSetupIntentData([json.client_secret, json.setup_intent_id]);\n };\n fetchClientSecret();\n }, []);\n\n return setupIntentData;\n}\n\nasync function updateSetupIntent(setupIntentId, subscriptionType) {\n if (!setupIntentId) return;\n\n try {\n await LcFetch(`/setup_intents/${setupIntentId}`, {\n method: \"PUT\",\n credentials: \"same-origin\",\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n },\n body: JSON.stringify({ subscription: subscriptionType }),\n });\n } catch (error) {\n console.error(\"Failed to update setup intent:\", error);\n }\n}\n\nexport { updateSetupIntent, fetchSetupIntentSecret };\n","import PropTypes from \"prop-types\";\n\nconst paypalHandlersPropTypes = {\n // (paypalActions) -> void\n validate: PropTypes.func,\n // () -> void\n onClick: PropTypes.func,\n // (resolve, reject) -> void\n payment: PropTypes.func.isRequired,\n // (paypalData, paypalActions) -> void\n onAuthorize: PropTypes.func.isRequired,\n // (paypalData, paypalActions) -> void\n onCancel: PropTypes.func.isRequired,\n // (error) -> void\n onError: PropTypes.func.isRequired,\n};\n\nconst stripeHandlersPropTypes = {\n onSuccess: PropTypes.func.isRequired,\n onError: PropTypes.func.isRequired,\n onSubmission: PropTypes.func.isRequired,\n};\n\nexport { paypalHandlersPropTypes, stripeHandlersPropTypes };\n","import React from \"react\";\nimport DarkPopover from \"components/shared/DarkPopover\";\n\nfunction SellPageCardVariationBenefit({ benefit }) {\n return (\n <li className=\"access-benefits__list-item\">\n <div className=\"access-benefits__list-item__check\">\n <i className=\"lc-icon lc-icon-checkmark-thick lc-icon-xs\" />\n <span\n className=\"body-2 supported-text\"\n dangerouslySetInnerHTML={{ __html: benefit.text }}\n />\n </div>\n {!benefit.skipPopover && (\n <div className=\"dark-popover\">\n <DarkPopover\n key={benefit.text}\n title={benefit.title}\n subcopy={benefit.subcopy}\n imageSrc={benefit.img}\n imageAlt={benefit.text}\n visible={false}\n active\n />\n </div>\n )}\n </li>\n );\n}\n\nfunction Benefit({ benefit }) {\n return (\n <li className=\"access-benefits__list-item\">\n <div className=\"access-benefits__list-item__check\">\n <i className=\"lc-icon lc-icon-checkmark-thick lc-icon-xs\" />\n <span\n className=\"subtitle-1\"\n dangerouslySetInnerHTML={{ __html: benefit.text }}\n />\n </div>\n {!benefit.skipPopover && (\n <div className=\"dark-popover\">\n <DarkPopover\n title={benefit.title}\n subcopy={benefit.subcopy}\n imageSrc={benefit.img}\n imageAlt={benefit.text}\n visible={false}\n active\n />\n </div>\n )}\n </li>\n );\n}\n\nfunction AccessBenefits({ benefits, sellPageCardVariation = false }) {\n return (\n <div className=\"access-benefits__container\">\n <div className=\"access-benefits__list-container\">\n {benefits.map((benefit) =>\n sellPageCardVariation ? (\n <SellPageCardVariationBenefit\n key={benefit.text}\n benefit={benefit}\n />\n ) : (\n <Benefit key={benefit.text} benefit={benefit} />\n )\n )}\n </div>\n </div>\n );\n}\n\nexport default AccessBenefits;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nconst MoreText = ({ isPaid }) => {\n if (isPaid) {\n return <span>View features</span>;\n }\n return <span>View free features</span>;\n};\n\nconst PlanCardBenefitsButton = ({ isPaid, expanded, onToggle }) => {\n return (\n <button\n type=\"button\"\n onClick={onToggle}\n className=\"plan-card-benefits-container\"\n >\n <div className=\"dropdown-container\">\n <div className=\"content\">\n <div className=\"button-wrapper\">\n {expanded ? (\n <div className=\"button-text\">View less</div>\n ) : (\n <div className=\"button-text\">\n <MoreText isPaid={isPaid} />\n </div>\n )}\n </div>\n </div>\n <div className=\"arrow\">\n <i\n className={`lc-icon lc-icon-${expanded ? \"up\" : \"down\"} lc-icon-xs`}\n />\n </div>\n </div>\n </button>\n );\n};\n\nPlanCardBenefitsButton.propTypes = {\n isPaid: PropTypes.bool.isRequired,\n expanded: PropTypes.bool.isRequired,\n onToggle: PropTypes.func.isRequired,\n};\n\nexport default PlanCardBenefitsButton;\n","export const ANNUAL = \"annual\";\nexport const MONTHLY = \"monthly\";\nexport const PLAN_TYPES = [ANNUAL, MONTHLY];\n\nexport const RIGHT = \"right\";\nexport const LEFT = \"left\";\nexport const ALIGNMENT_TYPES = [RIGHT, LEFT];\n\nexport const FREE_TIER = \"free\";\nexport const TEACHER_TIER = \"a_plus_teacher\";\nexport const A_PLUS_TIER = \"a_plus\";\nexport const PLAN_SUBSCRIPTION_TYPES = [FREE_TIER, A_PLUS_TIER, TEACHER_TIER];\n","import React, { useState, useEffect, useRef } from \"react\";\nimport classnames from \"classnames\";\nimport ArrowImg from \"images/components/dark-popover/teal-arrow.svg\";\n\nexport default function DarkPopover({\n title,\n subcopy,\n imageSrc,\n imageAlt,\n visible,\n active,\n}) {\n const [isVisible, setIsVisible] = useState(visible);\n const [mirrored, setMirrored] = useState(false);\n const popoverRef = useRef(null);\n\n const setVisibleIfActive = (v) => {\n if (active) {\n setIsVisible(v);\n }\n };\n\n const mirrorIfBelowFold = () => {\n setMirrored(false);\n\n const popoverEl = popoverRef.current;\n if (popoverEl) {\n const contentBox = popoverEl\n .querySelector(\".dark-popover\")\n .getBoundingClientRect();\n const windowHeight = window.innerHeight;\n const { scrollY } = window;\n\n if (contentBox.bottom + scrollY > windowHeight + scrollY) {\n setMirrored(true);\n }\n }\n };\n\n useEffect(() => {\n window.addEventListener(\"scroll\", mirrorIfBelowFold);\n window.addEventListener(\"resize\", mirrorIfBelowFold);\n return () => {\n window.removeEventListener(\"scroll\", mirrorIfBelowFold);\n window.removeEventListener(\"resize\", mirrorIfBelowFold);\n };\n }, []);\n\n return (\n <div\n className=\"popover-container\"\n role=\"presentation\"\n onMouseEnter={() => setVisibleIfActive(true)}\n onMouseLeave={() => setVisibleIfActive(false)}\n onClick={() => setVisibleIfActive(!isVisible)}\n ref={popoverRef}\n >\n <i className=\"lc-icon lc-icon-information lc-icon-sm\">\n <div\n className={classnames(\"dark-popover\", {\n visible: isVisible,\n above: mirrored,\n below: !mirrored,\n })}\n >\n <img\n className={`arrow ${mirrored ? \"bottom\" : \"top\"} right`}\n src={ArrowImg}\n alt=\"Arrow Icon\"\n />\n <div className=\"content\">\n <div className=\"text\">\n <h1>{title}</h1>\n {subcopy.map((line) => {\n return (\n <h2 key={line.text} className={line.alignment}>\n {line.text}\n </h2>\n );\n })}\n </div>\n <img\n className=\"image\"\n src={imageSrc}\n alt={imageAlt}\n onLoad={mirrorIfBelowFold}\n />\n </div>\n </div>\n </i>\n </div>\n );\n}\n","import React from \"react\";\n\nconst PlanPageHeader = ({ planType }) => {\n const isTeacher = planType === \"teacher\";\n\n return (\n <div className={`plan-page-header${isTeacher ? \" teacher\" : \"\"}`}>\n <h1 className=\"title\">\n {isTeacher ? (\n <>\n <span className=\"green-text\">Less </span>\n <span className=\"teal-text\">time prepping. </span>\n <br className=\"visible-xxs\" />\n <span className=\"green-text\">More </span>\n <span className=\"teal-text\">time teaching.</span>\n </>\n ) : (\n <>\n <span className=\"green-text\">Save Time. </span>\n <span className=\"teal-text\">Stress Less.</span>\n </>\n )}\n </h1>\n <div className={`description ${isTeacher ? \"teacher\" : \"general\"}`}>\n {isTeacher ? (\n <>\n <p className=\"subtitle-1 hidden-xxs\">\n Tools and features designed for literature teachers\n </p>\n <p className=\"subtitle-1 visible-xxs\">\n <span className=\"small-teacher\">Tools and features designed</span>\n <br />\n <span className=\"small-teacher\">for literature teachers</span>\n </p>\n </>\n ) : (\n <>\n <p className=\"subtitle-1 hidden-xxs\">\n The world’s best literature resource + the power of AI\n </p>\n <p className=\"subtitle-1 visible-xxs\">\n <span className=\"small-general\">\n The world’s best literature resource\n </span>\n <br />\n <span className=\"small-general\">+ the power of AI</span>\n </p>\n </>\n )}\n </div>\n <div className=\"features-container\">\n <div className=\"feature\">\n <div className=\"feature-icon\">\n <div className=\"svg sparkles-svg\" />\n </div>\n <span className=\"feature-text\">AI Tools</span>\n </div>\n {isTeacher && (\n <div className=\"feature\">\n <div className=\"feature-icon\">\n <div className=\"svg teacher-editions-svg\" />\n </div>\n <span className=\"feature-text\">Teacher Editions</span>\n </div>\n )}\n\n <div className=\"feature\">\n <div className=\"feature-icon\">\n <div className=\"svg quotes-svg\" />\n </div>\n <span className=\"feature-text\">Quote Explanations</span>\n </div>\n <div className=\"feature\">\n <div className=\"feature-icon\">\n <div className=\"svg pdf-svg\" />\n </div>\n <span className=\"feature-text\">PDF Downloads</span>\n </div>\n <div className=\"feature\">\n <div className=\"feature-icon\">\n <div className=\"svg analysis-svg\" />\n </div>\n <span className=\"feature-text\">Exclusive Analysis</span>\n </div>\n <div className=\"feature hidden-md hidden-sm hidden-xs\">\n <div className=\"feature-icon\">\n <div className=\"svg advanced-search-svg\" />\n </div>\n\n <span className=\"feature-text\">Advanced Search</span>\n </div>\n <div className=\"feature\">\n <div className=\"feature-icon\">\n <div className=\"svg plus-much-more-svg\" />\n </div>\n <span className=\"feature-text\">Plus much more</span>\n </div>\n </div>\n </div>\n );\n};\n\nexport default PlanPageHeader;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Toggle from \"./Toggle\";\nimport { ANNUAL, LEFT, MONTHLY, PLAN_TYPES, RIGHT } from \"../sell/constants\";\nimport { handleKeyPress } from \"./helpers/keyPressHelpers\";\n\nconst PlanToggle = ({ onToggle, selectedPlan }) => {\n return (\n <div\n data-amplitude={\n selectedPlan === ANNUAL\n ? \"signedOutSellPageToggleAnnual\"\n : \"signedOutSellPageToggleMonthly\"\n }\n onKeyPress={(event) => handleKeyPress(event, onToggle)}\n role=\"button\"\n tabIndex={0}\n onClick={onToggle}\n className=\"lc-plan-toggle\"\n >\n <span\n className={`plan-text monthly ${\n selectedPlan === MONTHLY ? \"active\" : \"\"\n }`}\n >\n Monthly\n </span>\n <Toggle alignment={selectedPlan === MONTHLY ? LEFT : RIGHT} />\n <span\n className={`plan-text annual ${\n selectedPlan === ANNUAL ? \"active\" : \"\"\n }`}\n >\n Annual <span className=\"best-value\">(Best Value)</span>\n </span>\n </div>\n );\n};\n\nPlanToggle.propTypes = {\n onToggle: PropTypes.func,\n selectedPlan: PropTypes.oneOf(PLAN_TYPES).isRequired,\n};\n\nPlanToggle.defaultProps = {\n onToggle: null,\n};\n\nexport default PlanToggle;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport helpers from \"helpers/base\";\n\nclass Radio extends React.Component {\n static propTypes = {\n checked: PropTypes.bool,\n containerClassName: PropTypes.string,\n disabled: PropTypes.bool,\n inputData: PropTypes.object,\n onChange: PropTypes.func,\n label: PropTypes.string,\n name: PropTypes.string.isRequired,\n value: PropTypes.string.isRequired,\n };\n\n static defaultProps = {\n checked: false,\n containerClassName: \"lc-radio\",\n disabled: false,\n label: null,\n };\n\n constructor(props) {\n super(props);\n\n this.inputId = helpers.generateComponentUuid(\"lc-radio\");\n\n this.state = { inputData: {} };\n Object.keys(this.props.inputData || {}).forEach((attr) => {\n this.state.inputData[`data-${attr}`] = this.props.inputData[attr];\n });\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(e) {\n this.props.onChange && this.props.onChange(e);\n }\n\n render() {\n return (\n <div className={this.props.containerClassName}>\n <input\n {...this.state.inputData}\n className=\"lc-radio__input\"\n defaultChecked={this.props.checked}\n disabled={this.props.disabled}\n id={this.inputId}\n name={this.props.name}\n type=\"radio\"\n value={this.props.value}\n onChange={this.onChange}\n />\n <label className=\"lc-radio__label\" htmlFor={this.inputId}>\n {this.props.label || this.props.children}\n </label>\n </div>\n );\n }\n}\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport logo from \"images/reskin/a-plus-logo.png\";\nimport PropTypes from \"prop-types\";\nimport AccessBenefits from \"../sell/AccessBenefits\";\nimport PlanCardBenefitsButton from \"../sell/PlanCardBenefitsButton\";\nimport {\n ANNUAL,\n TEACHER_TIER,\n PLAN_SUBSCRIPTION_TYPES,\n PLAN_TYPES,\n A_PLUS_TIER,\n} from \"../sell/constants\";\n\nconst RecommendedText = ({ isTeacher }) => {\n return isTeacher ? (\n <div className=\"recommended-container\">\n <span className=\"banner-1 recommended-text\">New</span>\n </div>\n ) : (\n <div className=\"empty-container\" />\n );\n};\n\nconst ButtonText = ({ isTeacher, isAPlus, isAnnualPlan, teacherFocus }) => {\n if (isTeacher && !teacherFocus) {\n return (\n <>\n Select A<sup>+</sup> Teacher\n </>\n );\n }\n if (isAPlus && !teacherFocus) {\n return (\n <>\n Select A<sup>+</sup>\n </>\n );\n }\n if (isAnnualPlan) {\n return <>Select Annual</>;\n }\n return <>Select Monthly</>;\n};\n\nconst getAmplitudeText = (isTeacher, isAPlus, isAnnualPlan, teacherFocus) => {\n if (isTeacher && !teacherFocus) {\n return \"Select A+ Teacher\";\n }\n if (isAPlus && !teacherFocus) {\n return \"Select A+\";\n }\n if (isAnnualPlan) {\n return \"Select Annual\";\n }\n return \"Select Monthly\";\n};\n\nconst getAmplitudeData = (isTeacher) => {\n return isTeacher ? \"planPageCTAAplusTeacher\" : \"planPageCTAAplus\";\n};\n\nconst getButtonDataAttributes = (\n isTeacher,\n isAPlus,\n isAnnualPlan,\n teacherFocus\n) => {\n return {\n \"data-amplitude-text\": getAmplitudeText(\n isTeacher,\n isAPlus,\n isAnnualPlan,\n teacherFocus\n ),\n \"data-amplitude\": getAmplitudeData(isTeacher),\n };\n};\n\nconst HeaderLogo = ({ isTeacher, isAPlus }) => {\n let logoJSX;\n\n if (isTeacher || isAPlus) {\n logoJSX = (\n <>\n <img src={logo} className=\"logo--teacher brand\" alt=\"A+ logo.\" />\n {isTeacher ? (\n <span className=\"plan-card-text--teacher body-1\">Teacher</span>\n ) : null}\n </>\n );\n } else {\n logoJSX = <span className=\"plan-card-text title-5\">Free</span>;\n }\n\n return logoJSX;\n};\n\nconst SellPlanCard = ({\n benefits,\n planType,\n annualPrice,\n dollars,\n cents,\n groupInfoLink,\n selectedPlan = ANNUAL,\n teacherFocus = false,\n showGroupInfoLink = false,\n planCode,\n loggedIn,\n}) => {\n const [showBenefits, setShowBenefits] = useState(teacherFocus);\n\n const isAnnualPlan = selectedPlan === ANNUAL;\n const isTeacher = planType === TEACHER_TIER;\n const isAPlus = planType === A_PLUS_TIER;\n const isPaid = isAPlus || isTeacher;\n\n const toggleBenefits = () => {\n setShowBenefits((prevState) => !prevState);\n };\n\n const renderSignUpButton = () => {\n return (\n <button\n type=\"button\"\n className=\"btn btn-lg btn-a-plus btn-cta\"\n data-toggle=\"modal\"\n data-target=\"#sign-up-with-modal\"\n {...getButtonDataAttributes(\n isTeacher,\n isAPlus,\n isAnnualPlan,\n teacherFocus\n )}\n data-plan-type={planType}\n data-subscription-type={planCode}\n >\n {renderButtonText()}\n </button>\n );\n };\n\n const renderPaymentPageLink = () => {\n return (\n <a\n href={`/sign-up/?subscription=${planCode}`}\n className=\"btn btn-lg btn-a-plus btn-cta\"\n {...getButtonDataAttributes(\n isTeacher,\n isAPlus,\n isAnnualPlan,\n teacherFocus\n )}\n >\n {renderButtonText()}\n </a>\n );\n };\n\n const renderButtonText = () => {\n return (\n <ButtonText\n teacherFocus={teacherFocus}\n isTeacher={isTeacher}\n isAPlus={isAPlus}\n isAnnualPlan={isAnnualPlan}\n />\n );\n };\n\n return (\n <div className=\"lc-sell-plan-card-container\">\n <div className=\"lc-sell-plan-card\">\n {isPaid && !teacherFocus ? (\n <RecommendedText isTeacher={isTeacher} />\n ) : null}\n\n <div className={`contents-container ${isPaid ? \"\" : \"free-container\"}`}>\n <div className=\"tw-flex tw-items-center\">\n <HeaderLogo isTeacher={isTeacher} isAPlus={isAPlus} />\n </div>\n\n <div className=\"pricing-container\">\n <div className=\"tw-inline-block\">\n <span className=\"subscription-type__price--dollars\">\n {dollars}\n </span>\n {cents && (\n <>\n <sup className=\"subscription-type__price--cents\">{cents}</sup>\n <span className=\"currency body-1\">USD/mo</span>\n </>\n )}\n </div>\n\n {isPaid ? (\n <>\n <div className=\"subcopy body-2\">\n {annualPrice && (\n <span>Charged {annualPrice} USD every year</span>\n )}\n {!annualPrice && isTeacher && (\n <span>Effortless prep, unbeatable value</span>\n )}\n {!annualPrice && !isTeacher && (\n <span>A small price to pay for an "A"</span>\n )}\n </div>\n {loggedIn ? renderPaymentPageLink() : renderSignUpButton()}\n </>\n ) : (\n <>\n <div className=\"subcopy body-2\">\n Basic features to get started\n </div>\n <button\n type=\"button\"\n className=\"btn btn-lg btn-default btn-cta\"\n data-toggle=\"modal\"\n data-target=\"#sell-plan-free-card .modal\"\n data-subscription-type={ANNUAL}\n data-amplitude=\"selectFreeSubscription\"\n >\n Get Started\n </button>\n </>\n )}\n <div className=\"hidden-xs hidden-xss benefits-list-container\">\n <AccessBenefits sellPageCardVariation benefits={benefits} />\n </div>\n {/* On mobile views, we only want to show the supported benefits for the 'Free' plan. */}\n {showBenefits ? (\n <div className=\"hidden-sm hidden-md hidden-lg hidden-xl benefits-list-container\">\n <AccessBenefits sellPageCardVariation benefits={benefits} />\n </div>\n ) : null}\n </div>\n </div>\n <div className=\"hidden-sm hidden-md hidden-lg hidden-xl\">\n <PlanCardBenefitsButton\n isPaid={isPaid}\n expanded={showBenefits}\n onToggle={toggleBenefits}\n />\n </div>\n </div>\n <div>\n {showGroupInfoLink ? (\n <div className=\"plan_cards__group-link\">\n <span className=\"lc-icon lc-icon-related-quote lc-icon-md\" />\n <a\n href={groupInfoLink}\n className=\"groups-promo__link\"\n data-amplitude=\"learnAboutGroupSubscriptions\"\n >\n Learn about group subscriptions\n </a>\n </div>\n ) : (\n <div className=\"empty-group-link hidden-xs hidden-xxs\" />\n )}\n </div>\n </div>\n );\n};\n\nSellPlanCard.propTypes = {\n benefits: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n title: PropTypes.string.isRequired,\n showOnly: PropTypes.arrayOf(PropTypes.oneOf(PLAN_SUBSCRIPTION_TYPES)),\n subcopy: PropTypes.arrayOf(\n PropTypes.shape({\n text: PropTypes.string.isRequired,\n alignment: PropTypes.oneOf([\"left\", \"center\", \"right\"]).isRequired,\n })\n ).isRequired,\n img: PropTypes.string.isRequired,\n })\n ).isRequired,\n planType: PropTypes.oneOf(PLAN_SUBSCRIPTION_TYPES).isRequired,\n planCode: PropTypes.string,\n annualPrice: PropTypes.string,\n dollars: PropTypes.string.isRequired,\n cents: PropTypes.string,\n selectedPlan: PropTypes.oneOf(PLAN_TYPES),\n teacherFocus: PropTypes.bool,\n groupInfoLink: PropTypes.string.isRequired,\n showGroupInfoLink: PropTypes.bool,\n loggedIn: PropTypes.bool,\n};\n\nSellPlanCard.defaultProps = {\n cents: null,\n selectedPlan: ANNUAL,\n annualPrice: null,\n teacherFocus: false,\n showGroupInfoLink: false,\n loggedIn: false,\n};\n\nexport default SellPlanCard;\n","import React, { useRef, useState, useEffect } from \"react\";\nimport helpers from \"helpers/base\";\nimport Modal from \"./Modal\";\nimport GoogleAuthButton from \"./GoogleAuthButton\";\nimport AppBanner from \"./AppBanner\";\n\nconst clearErrorMessage = () => {\n AppBanner.clear();\n};\n\nfunction SignUpWithModal(props) {\n const { googleOAuthEnabled } = props;\n const modal = useRef(null);\n const [provider, _setProvider] = useState(null);\n const [gdpr, _setGdpr] = useState(null);\n const [subscriptionType, _setSubscriptionType] = useState(null);\n\n // when using state in functional components, only the initial state will be\n // available at the time event listeners are created, so we create refs and\n // functions that update them (perhaps messier than just using a react class component)\n const providerRef = useRef(provider);\n const setProvider = (data) => {\n providerRef.current = data;\n _setProvider(data);\n };\n\n const subscriptionTypeRef = useRef(subscriptionType);\n const setSubscriptionType = (data) => {\n subscriptionTypeRef.current = data;\n _setSubscriptionType(data);\n };\n\n const gdprRef = useRef(gdpr);\n const setGdpr = (data) => {\n gdprRef.current = data;\n _setGdpr(data);\n };\n\n useEffect(() => {\n modal.current.$modal.on(\"show.bs.modal\", (e) => {\n clearErrorMessage();\n setSubscriptionType(e.relatedTarget.dataset.subscriptionType);\n });\n }, []);\n\n const redirect = (redirectLocation = null) => {\n if (redirectLocation) {\n window.location.href = redirectLocation;\n } else {\n const queryParams = {\n ...helpers.getQueryParams(),\n subscription: subscriptionTypeRef.current,\n provider: providerRef.current,\n gdpr: gdprRef.current || false,\n };\n const qpString = helpers.object\n .map(queryParams, (key, value) => `${key}=${value}`)\n .join(\"&\");\n const path = `/sign-up?${qpString}`;\n window.location.href = path;\n }\n };\n\n const handleSkipFormAndCreateAccount = () => {\n // User is outside of the GDPR, we can go straight to payment on the\n // registration page\n setGdpr(false);\n signUpWithGoogle();\n };\n\n const signUpWithGoogle = () => {\n setProvider(\"google\");\n if (gdprRef.current !== false) {\n setGdpr(true);\n }\n clearErrorMessage();\n redirect();\n };\n\n const signUpWithEmail = (_event) => {\n setProvider(\"email\");\n redirect();\n };\n\n return (\n <Modal\n ref={modal}\n id=\"sign-up-with-modal\"\n title=\"How would you like to sign up?\"\n showOnMount={false}\n footer={false}\n closeIcon\n >\n <div className=\"sign-up-with-modal__actions\">\n <AppBanner />\n {googleOAuthEnabled && (\n <GoogleAuthButton\n flow=\"sign-up\"\n onSkipFormAndCreateAccount={handleSkipFormAndCreateAccount}\n onRegistrationInProgress={signUpWithGoogle}\n text=\"signup_with\"\n subscription={subscriptionTypeRef.current}\n />\n )}\n <button\n type=\"submit\"\n data-provider=\"email\"\n className=\"btn btn-default btn-md\"\n onClick={signUpWithEmail}\n >\n Sign up with Email\n </button>\n </div>\n </Modal>\n );\n}\n\nexport default SignUpWithModal;\n","import React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { useSwipeable } from \"react-swipeable\";\nimport cn from \"helpers/classnames\";\n\nconst tabShape = {\n buttonText: PropTypes.string.isRequired,\n key: PropTypes.string.isRequired,\n component: PropTypes.element.isRequired,\n};\n\nconst TabButton = forwardRef(({ className, isSelected, onClick, tab }, ref) => {\n return (\n <button\n ref={ref}\n id={tab.buttonText}\n type=\"button\"\n className={cn(\"tab-button\", { selected: isSelected }, className)}\n onClick={onClick}\n tabIndex={isSelected ? -1 : 0}\n >\n <span>{tab.buttonText}</span>\n </button>\n );\n});\n\nTabButton.propTypes = {\n className: PropTypes.string,\n isSelected: PropTypes.bool.isRequired,\n onClick: PropTypes.func.isRequired,\n tab: PropTypes.shape(tabShape).isRequired,\n};\n\nconst Tabs = ({\n className = \"\",\n onClick,\n selectedTab: tabFromProps,\n shouldAnimateTransitions = false,\n tabButtonClass = \"\",\n tabContentClass = \"\",\n tabHolderClass = \"\",\n tabs,\n}) => {\n const [selectedTab, setSelectedTab] = useState(tabFromProps || tabs[0]);\n const [pendingTab, setPendingTab] = useState(null);\n const [transitionClass, setTransitionClass] = useState(\"\");\n const tabRefs = useRef([]);\n const currentTabIndex = tabs.findIndex((t) => t.key === selectedTab.key);\n\n const changeTab = (tab) => {\n if (selectedTab.key === tab.key) {\n return;\n }\n\n onClick && onClick(tab);\n\n if (shouldAnimateTransitions) {\n const newTabIndex = tabs.findIndex((t) => t.key === tab.key);\n const animateOutClass =\n newTabIndex > currentTabIndex\n ? \"tw-animate-slide-out-to-left\"\n : \"tw-animate-slide-out-to-right\";\n setTransitionClass(animateOutClass); // Start exit animation\n setPendingTab(tab); // Store new tab for switching later\n } else {\n setSelectedTab(tab);\n }\n };\n\n const handleAnimationEnd = () => {\n if (!shouldAnimateTransitions || !pendingTab) {\n return;\n }\n\n const animateInClass =\n transitionClass === \"tw-animate-slide-out-to-left\"\n ? \"tw-animate-slide-in-from-right\"\n : \"tw-animate-slide-in-from-left\";\n\n setSelectedTab(pendingTab); // Switches to tab AFTER exit animation completes\n setTransitionClass(animateInClass); // Start entry animation\n setPendingTab(null); // Reset pending tab\n };\n\n const handleSwipe = (step) => {\n const nextTab = tabs[currentTabIndex + step];\n\n changeTab(nextTab);\n };\n\n const swipeHandlers = useSwipeable({\n onSwipedLeft: () => handleSwipe(1),\n onSwipedRight: () => handleSwipe(-1),\n preventScrollOnSwipe: true,\n swipeDuration: 250, //ms\n });\n\n useEffect(() => {\n if (!pendingTab) {\n setTransitionClass(\"\");\n return;\n }\n\n const pendingTabIndex = tabs.findIndex((t) => t.key === pendingTab.key);\n\n if (tabRefs.current[pendingTabIndex]) {\n tabRefs.current[pendingTabIndex].scrollIntoView({\n behavior: \"smooth\",\n block: \"nearest\",\n inline: \"nearest\",\n });\n }\n }, [pendingTab]);\n\n return (\n <div className={className}>\n <div className={cn(\"tw-flex tw-items-end tw-h-12\", tabHolderClass)}>\n {tabs.map((tab, index) => (\n <TabButton\n key={tab.key}\n ref={(el) => {\n tabRefs.current[index] = el;\n }}\n className={tabButtonClass}\n isSelected={selectedTab.buttonText === tab.buttonText}\n onClick={() => changeTab(tab)}\n tab={tab}\n />\n ))}\n </div>\n <div className={tabContentClass}>\n <div\n className={transitionClass}\n data-testid=\"tab-content\"\n key={`${selectedTab.key}-${pendingTab?.key}`}\n onAnimationEnd={handleAnimationEnd}\n {...swipeHandlers}\n >\n {selectedTab.component}\n </div>\n </div>\n </div>\n );\n};\n\nTabs.propTypes = {\n className: PropTypes.string,\n onClick: PropTypes.func,\n selectedTab: PropTypes.shape(tabShape),\n shouldAnimateTransitions: PropTypes.bool,\n tabButtonClass: PropTypes.string,\n tabContentClass: PropTypes.string,\n tabHolderClass: PropTypes.string,\n tabs: PropTypes.arrayOf(PropTypes.shape(tabShape)).isRequired,\n};\nTabs.defaultProps = {\n className: \"\",\n onClick: () => {},\n selectedTab: null,\n shouldAnimateTransitions: false,\n tabButtonClass: \"\",\n tabContentClass: \"\",\n tabHolderClass: \"\",\n};\n\nexport default Tabs;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ALIGNMENT_TYPES, LEFT, RIGHT } from \"../sell/constants\";\nimport { handleKeyPress } from \"./helpers/keyPressHelpers\";\n\nconst Toggle = ({ onToggle, alignment }) => {\n return (\n <div\n onKeyPress={(event) => handleKeyPress(event, onToggle)}\n role=\"button\"\n tabIndex={0}\n onClick={onToggle}\n className=\"lc-toggle\"\n >\n <input\n type=\"checkbox\"\n onChange={(event) => handleKeyPress(event, onToggle)}\n className={alignment === RIGHT ? RIGHT : LEFT}\n />\n <span className=\"slider\" aria-label=\"Slider\" />\n </div>\n );\n};\n\nToggle.propTypes = {\n onToggle: PropTypes.func,\n alignment: PropTypes.oneOf(ALIGNMENT_TYPES).isRequired,\n};\n\nToggle.defaultProps = {\n onToggle: null,\n};\n\nexport default Toggle;\n","export const handleKeyPress = (event, callback) => {\n if (event.key === \"Enter\" || event.key === \" \") {\n callback?.();\n }\n};\n","/*\n This is a utility class that combines classnames\n and tailwind-merge to allow for the merging of classes\n and remove duplication of tailwind classnames\n*/\n\nimport classnames from \"classnames\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport default function cn(...args) {\n return twMerge(classnames(args));\n}\n","/**\n * Wrapper around fetch to include the Rails csrf token\n *\n * @param {string} url - the request url\n * @param {object} params - the fetch params\n * @returns {Promise}\n */\nexport default function (url, params = {}) {\n const tokenEl = document.querySelector(\"[name='csrf-token']\");\n const csrfToken = tokenEl ? tokenEl.content : \"\";\n const headers = params.headers || {};\n const fetchParams = {\n ...params,\n headers: {\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n ...headers,\n \"X-CSRF-Token\": csrfToken,\n },\n };\n return fetch(url, fetchParams);\n}\n"],"names":["FullPaymentForm","props","paypalEnvironment","paypalProcessing","paypalHandlers","stripeReturnUrl","FormButtons","stripeHandlers","stripeProcessing","disabled","paypalErrorMessage","stripeErrorMessage","stripeFormKey","PaypalButton","StripePaymentElement","subscriptionType","clientSecret","isPaymentIntent","React","className","_extends","environment","processing","errorMessage","StripeForm","returnUrl","propTypes","PropTypes","isRequired","paypalHandlersPropTypes","stripeHandlersPropTypes","defaultProps","RealPaypalButton","undefined","PaymentError","innerRef","testId","ref","id","style","size","color","shape","label","tagline","height","layout","validate","onClick","payment","onAuthorize","onCancel","onError","showSeparator","buttonContainer","useRef","useEffect","env","window","paypal","Button","render","current","display","type","width","Separator","_props","_objectSpread","bodyClass","formClass","onReady","onSubmission","onSuccess","setupIntentsPath","_useState2","_slicedToArray","useState","elements","setElements","key","buttons","DefaultFormButtons","classnames","onSubmit","e","stripe","confirmParams","options","preventDefault","LitCharts","return_url","redirect","confirmPayment","confirmSetup","then","result","error","_ref","RealStripePaymentElement","inputBorder","activeInputBorder","labelColor","placeholderColor","fonts","cssSrc","appearance","variables","fontFamily","colorPrimary","colorBackground","colorIconTabSelected","colorText","colorTextPlaceholder","borderRadius","iconChevronDownColor","colorDanger","fontLineHeight","rules","borderColor","fontSize","padding","lineHeight","StripeElements","propClientSecret","_ref3","fetchSetupIntentSecret","setupIntentId","updateSetupIntent","stripeOptions","Elements","useElements","PaymentElement","_regeneratorRuntime","t","r","Object","prototype","n","hasOwnProperty","o","defineProperty","value","i","Symbol","a","iterator","c","asyncIterator","u","toStringTag","define","enumerable","configurable","writable","wrap","Generator","create","Context","makeInvokeMethod","tryCatch","arg","call","h","l","f","s","y","GeneratorFunction","GeneratorFunctionPrototype","p","d","getPrototypeOf","v","values","g","defineIteratorMethods","forEach","_invoke","AsyncIterator","invoke","resolve","__await","callInvokeWithMethodAndArg","Error","done","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","TypeError","resultName","next","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","isNaN","length","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","reverse","pop","prev","charAt","slice","stop","rval","handle","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","Array","isArray","_arrayWithHoles","_iterableToArrayLimit","_arrayLikeToArray","toString","from","test","_unsupportedIterableToArray","_nonIterableRest","path","fetchPath","setupIntentData","setSetupIntentData","fetchClientSecret","_callee","response","json","_context","LcFetch","credentials","headers","Accept","body","JSON","stringify","subscription","client_secret","setup_intent_id","_x","_x2","_updateSetupIntent","_callee2","_context2","concat","t0","console","SellPageCardVariationBenefit","benefit","dangerouslySetInnerHTML","__html","text","skipPopover","DarkPopover","title","subcopy","imageSrc","img","imageAlt","visible","active","Benefit","_ref2","benefits","_ref3$sellPageCardVar","sellPageCardVariation","map","MoreText","isPaid","PlanCardBenefitsButton","expanded","onToggle","ANNUAL","MONTHLY","PLAN_TYPES","RIGHT","LEFT","ALIGNMENT_TYPES","FREE_TIER","TEACHER_TIER","A_PLUS_TIER","PLAN_SUBSCRIPTION_TYPES","isVisible","setIsVisible","_useState4","mirrored","setMirrored","popoverRef","setVisibleIfActive","mirrorIfBelowFold","popoverEl","contentBox","querySelector","getBoundingClientRect","windowHeight","innerHeight","scrollY","bottom","addEventListener","removeEventListener","role","onMouseEnter","onMouseLeave","above","below","src","ArrowImg","alt","line","alignment","onLoad","isTeacher","planType","PlanToggle","selectedPlan","onKeyPress","event","handleKeyPress","tabIndex","Toggle","Radio","_React$Component","_this","_classCallCheck","_callSuper","inputId","helpers","state","inputData","attr","onChange","bind","_inherits","this","containerClassName","defaultChecked","checked","htmlFor","children","RecommendedText","ButtonText","isAPlus","isAnnualPlan","teacherFocus","getAmplitudeText","getAmplitudeData","getButtonDataAttributes","HeaderLogo","logo","SellPlanCard","_ref4","annualPrice","dollars","cents","groupInfoLink","_ref4$selectedPlan","_ref4$teacherFocus","_ref4$showGroupInfoLi","showGroupInfoLink","planCode","loggedIn","showBenefits","setShowBenefits","renderButtonText","href","AccessBenefits","prevState","showOnly","clearErrorMessage","AppBanner","clear","googleOAuthEnabled","modal","provider","_setProvider","gdpr","_setGdpr","_useState6","_setSubscriptionType","providerRef","setProvider","data","subscriptionTypeRef","gdprRef","setGdpr","$modal","on","relatedTarget","dataset","redirectLocation","location","queryParams","qpString","join","signUpWithGoogle","Modal","showOnMount","footer","closeIcon","GoogleAuthButton","flow","onSkipFormAndCreateAccount","onRegistrationInProgress","_event","tabShape","buttonText","component","TabButton","forwardRef","isSelected","tab","cn","selected","Tabs","_ref2$className","tabFromProps","selectedTab","_ref2$shouldAnimateTr","shouldAnimateTransitions","_ref2$tabButtonClass","tabButtonClass","_ref2$tabContentClass","tabContentClass","_ref2$tabHolderClass","tabHolderClass","tabs","setSelectedTab","pendingTab","setPendingTab","transitionClass","setTransitionClass","tabRefs","currentTabIndex","findIndex","changeTab","newTabIndex","handleSwipe","step","nextTab","swipeHandlers","useSwipeable","onSwipedLeft","onSwipedRight","preventScrollOnSwipe","swipeDuration","pendingTabIndex","scrollIntoView","behavior","block","inline","index","el","onAnimationEnd","animateInClass","callback","_len","args","_key","twMerge","url","params","tokenEl","document","csrfToken","content","fetchParams","fetch"],"sourceRoot":""}