{"version":3,"file":"static/chunks/7433-af41c5c3b7f2e866.js","mappings":"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","sources":["webpack://_N_E/./components/shared/CTAButton/index.tsx","webpack://_N_E/./components/shared/LinkWrapper/linkWrapper.tsx","webpack://_N_E/./lib/helper/editableHelpers.tsx","webpack://_N_E/./components/shared/CTAButton/CTAButton.module.scss"],"sourcesContent":["import type { AnchorHTMLAttributes, FunctionComponent } from 'react';\nimport styles from './CTAButton.module.scss';\nimport LinkWrapper from '../LinkWrapper/linkWrapper';\n\n/**\n * CTA Buttons are just links, yo\n * @category CTAButton\n * @extends AnchorHTMLAttributes\n * */\n\n// TODO: update variants to support sign-up-flow-iframe when we are making site wide update\n\nexport type CTAColorVariant =\n | 'primary-blue'\n | 'primary-yellow'\n | 'spark-yellow'\n | 'primary-black'\n | 'secondary'\n | 'text-link'\n | 'aa-primary-blue'\n | 'aa-secondary'\n | 'aa-text-link';\nexport type CTAElementType =\n | 'LINK'\n | 'SIGN_UP_CTA_PRIMARY'\n | 'SIGN_UP_CTA_SECONDARY'\n | 'SIGN_IN_CTA';\n\nconst wallyWeekSignup = {\n production:\n 'https://www.walmart.com/plus/plans?code=eventoffers&programName=discountedmembership&programId=discmemb23',\n nonprod:\n 'https://www-teflon.walmart.com/plus/plans?code=eventoffers&programName=discountedMembership&programId=discmemb23',\n};\n\nconst regularSignup = {\n production: 'https://www.walmart.com/plus/plans',\n nonprod: 'https://www-teflon.walmart.com/plus/plans',\n};\n\nconst urlSet = process.env.week === 'Walmart' ? wallyWeekSignup : regularSignup;\nconst baseSignupURL =\n process.env.environment === 'production' ? urlSet.production : urlSet.nonprod;\n\ninterface CTAButtonProps extends AnchorHTMLAttributes {\n variant: CTAColorVariant;\n size?: 'default' | 'thin' | 'aa';\n elementPosition: string;\n elementName?: string;\n elementType?: CTAElementType;\n excludeFromTracking?: boolean;\n tabIndex?: number;\n}\n\nconst CTAButton: FunctionComponent = ({\n variant = 'primary-blue',\n size = 'default',\n href,\n children,\n className,\n elementPosition,\n elementName,\n elementType,\n excludeFromTracking = false,\n tabIndex = 0,\n ...props\n}: CTAButtonProps) => {\n // checks to ensure button variant we get is a valid type, defaults to primary-blue if it is not valid\n const possibleButtonVariants = [\n 'primary-blue',\n 'primary-black',\n 'primary-yellow',\n 'spark-yellow',\n 'secondary',\n 'text-link',\n 'aa-primary-blue',\n 'aa-secondary',\n 'aa-text-link',\n ];\n const isValid = possibleButtonVariants.some((button) =>\n variant.includes(button)\n );\n\n if (!isValid) {\n variant = 'primary-blue';\n }\n\n const segmentTracking = {\n elementName: elementName || 'CTA',\n elementPosition,\n elementType,\n };\n\n return (\n {\n if (props.onClick) {\n props.onClick(e);\n }\n }}\n tabIndex={tabIndex}\n >\n {children || 'Claim your free trial'}\n \n );\n};\n\nexport default CTAButton;\n","// This is the one place where we are allowed to use the tag\n/* eslint-disable react/forbid-elements */\nimport React, { AnchorHTMLAttributes, ReactElement } from 'react';\nimport { trackCTAClick } from '~/lib/newrelic/actions';\n\ninterface LinkWrapperProps extends AnchorHTMLAttributes {\n href: string;\n disableUrlParamPersist?: boolean;\n newRelicActionName?: 'ctaSignupButton' | string;\n segmentTracking:\n | {\n elementName: string;\n elementPosition: string;\n elementType?: string;\n }\n | false;\n}\n\n/**\n * @category Helper\n * @interface {LinkWrapperProps}\n *\n * @param {boolean} disableUrlParamPersist - optionally opt out of appending url params (like rv_click_id) to the href.\n * @param {string} newRelicActionName - if defined, a new relic page action will be fired onClick\n *\n * @param {string} segmentTracking.elementName - used in the segment event fired\n * @param {string} segmentTracking.elementPosition - used in the segment event fired\n * @param {string} segmentTracking.elementType - defaults to 'LINK'\n */\n\nconst LinkWrapper = ({\n href,\n disableUrlParamPersist = false,\n newRelicActionName,\n segmentTracking,\n children,\n onClick,\n ...rest\n}: LinkWrapperProps): ReactElement => {\n const appendProps = {} as { [key: string]: string };\n\n if (disableUrlParamPersist) {\n appendProps['data-disable-param-persist'] = 'true';\n }\n\n /**\n * If segment tracking is enabled, add the necessary attributes to the object declared above.\n * The object is then spread into the tag below. Segment tracks via the data-element attributes\n */\n if (segmentTracking) {\n const { elementName, elementPosition, elementType } = segmentTracking;\n\n appendProps['data-element-name'] = elementName ?? '';\n appendProps['data-element-position'] = elementPosition ?? '';\n appendProps['data-element-type'] = elementType ?? 'LINK';\n }\n\n return (\n {\n if (newRelicActionName) {\n trackCTAClick(newRelicActionName, e.currentTarget.href);\n }\n if (onClick) onClick(e);\n }}\n {...appendProps}\n {...rest}\n >\n {children}\n \n );\n};\n\nexport default LinkWrapper;\n","import { AnchorHTMLAttributes, createElement } from 'react';\nimport Image from 'next-export-optimize-images/image';\n\nimport CTAButton from '~/components/shared/CTAButton';\nimport LinkWrapper from '~/components/shared/LinkWrapper/linkWrapper';\n\n/**\n * handleSuperscripts\n * Uses a regex to parse out superscripts and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} supClassname - Optional classname to apply styling to superscripts\n * @param {RegExp} regex - Optional regex to pass if desired regex to match is different than default (i.e. /(_\\w+_)/g -> matches all letters + numbers)\n * @returns {Array>}\n *\n * @example\n * handleSuperscripts('As soon as today, at the low prices you love._1_');\n */\nexport const handleSuperscripts = (\n text: string,\n supClassName?: string,\n regex?: RegExp\n) => {\n const finalRegex = regex ? regex : /(_\\d+_)/;\n const textArray = text.split(finalRegex);\n return textArray.map((str, idx) => {\n if (finalRegex.test(str)) {\n const noUnderscoreStr = str.replace(/_/g, '');\n return (\n \n {noUnderscoreStr}\n \n );\n }\n return str;\n });\n};\n\n/**\n * handleLinks\n * Uses a regex to parse out links and superscripts `and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {RegExp} regex - Desired regex to match on based on link content (i.e. /(_LINK_[^*]*_LINK_)/)\n * @param {string} href - link\n * @param {string} linkClassname - Optional classname to apply styling to link\n * @param {string} tabIndex - Optional tabindex to add if needed for accessibility purposes\n * @returns {Array>}\n *\n * @example\n * handleLinks('Must be present for pickup. _LINK_Restrictions apply._LINK_', /(_LINK_[^*]*_LINK_)/, disclaimerLink || '', styles.disclaimerLink, -1));\n */\nexport const handleLinks = (\n text: string,\n regex = /(_LINK_[^*]*_LINK_)/,\n href: string,\n linkClassName?: string,\n tabIndex?: number,\n superscriptClassName?: string\n) => {\n const textArray = text.split(regex);\n return textArray.map((str) => {\n if (regex.test(str)) {\n const noUnderscoreStr = str.replaceAll('_LINK_', '');\n return (\n \n {noUnderscoreStr}\n \n );\n }\n // regex checks for numbers or asteriscks blocked by underscores\n return handleSuperscripts(str, superscriptClassName, /(_\\d+_)|(_\\*+_)/);\n });\n};\n\n/**\n * handleMultipleLinks\n * Uses a regex to parse out multiple links and superscripts and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string[]} hrefs - An array of links\n * @param {string} linkClassName - Optional classname to apply styling to link\n * @param {number} tabIndex - Optional tabindex to add if needed for accessibility purposes\n * @param {string} superscriptClassName - Optional classname to apply styling to superscripts\n */\nexport const handleMultipleLinks = (\n text: string,\n hrefs: string[],\n linkClassName?: string,\n tabIndex?: number,\n superscriptClassName?: string\n) => {\n const regex = /(_LINK_[^*].*?_LINK_)/g;\n const textArray = text.split(regex);\n let idx = -1;\n\n return textArray.map((str) => {\n if (regex.test(str)) {\n idx++;\n const noUnderscoreStr = str.replaceAll('_LINK_', '');\n return (\n \n {noUnderscoreStr}\n \n );\n }\n // regex checks for numbers or asteriscks blocked by underscores\n return handleSuperscripts(str, superscriptClassName, /(_\\d+_)|(_\\*+_)/);\n });\n};\n\n// TODO: DEPRECATE IN FAVOR OF handleLinks or handleMultipleLinks\n/**\n * parseLinks\n * Uses a regex to parse out links and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} copy - A string of editable content\n * @param {string} elementPosition - The section where these links appear\n * @param {Omit>} [linkProps] - Optional props to pass directly to the rendered `a` element\n * @returns {Array>}\n *\n * @example\n * parseLinks('You can cancel from your _LINK_Walmart+ account page_https://www.walmart.com/grocery/account/plus/overview_ or _LINK_contact customer care_https://walmart.com/help_.', 'FAQs');\n */\nexport const parseLinks = (\n copy: string,\n elementPosition: string,\n linkProps?: Omit, 'href'>\n): (JSX.Element | JSX.Element[])[] =>\n copy.split(/_LINK_/g).map((str) => {\n const matches = Array.from(str.matchAll(/([^_]+)_(https?:\\/\\/[^_]+)_/g));\n\n if (matches.length === 0 || !matches[0]) {\n return
{str}
;\n }\n\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n return matches.map(([_, linkText, href], i) => (\n
\n \n {linkText}\n \n {str.replace(matches[i][0], '')}\n
\n ));\n });\n\n/**\n * yellowPlus\n * Returns a yellow plus React Element with optional custom styling\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} imgPath - A path where the image lives\n * @param {string} linkClassname - Optional classname to apply styling to image\n * @returns {JSX.Element}\n *\n * @example\n * yellowPlus(`${process.env.baseUrl}/images/sections/hero/carousel/`, styles.yellowPlus);\n */\nexport const yellowPlus = (imgPath: string, className?: string) => (\n \n);\n\n/**\n * handlePlus\n * Uses a regex to parse out `+` text into an SVG and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} imgPath - The image path of the svg\n * @param {string} className - Optional styling to apply to the svg\n * @returns {Array>}\n *\n * @example\n * handlePlus('+so much more', `${process.env.baseUrl}/images/sections/hero/carousel/`, styles.yellowPlus);\n */\n\nexport const handlePlus = (\n text: string,\n imgPath: string,\n plusClassName?: string,\n textToReplaceWithSVG = '_PLUS_',\n textClassName?: string\n) => {\n const plusArr = text.split(textToReplaceWithSVG);\n const parsedPlusArr = plusArr.map((str, idx) => {\n if (str === '') {\n return yellowPlus(imgPath, plusClassName || 'yellow-plus');\n }\n if (str.match(/(_\\d+_)/g)) {\n return handleSuperscripts(str);\n }\n return (\n

\n {str}\n

\n );\n });\n\n return parsedPlusArr;\n};\n\n/**\n * parseTextWithSVG\n * Uses a regex to parse out text into an SVG and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} svgs - Key value pair of SVGs to replace corresponding text with\n * @param {string} superscriptClassName - Optional styling to apply to the superscript\n * @returns {Array>}\n *\n * @example\n * parseTextWithSVG('It's the _SVG_mother_SVG_ of all savings.', {mother: }`, styles.superscript);\n */\n\nexport const parseTextWithSVG = (\n text: string,\n svgs: { [key: string]: JSX.Element },\n superscriptClassName?: string\n) => {\n if (text.includes('_SVG_')) {\n const svgArr = text.split(/_SVG_(.*?)_SVG_/g);\n const parsedSVGArr = svgArr.map((str) => {\n if (svgs[str as keyof typeof svgs]) {\n return {svgs[str as keyof typeof svgs]};\n }\n if (str.match(/(_\\d+_)/g)) {\n return handleSuperscripts(str, superscriptClassName);\n }\n return str;\n });\n return parsedSVGArr;\n }\n\n return handleSuperscripts(text, superscriptClassName);\n};\n\n/**\n * parseHeadlineWithSVG\n * Uses a regex to parse out a headline that could contain an SVG (+), superscripts, and/or linebreaks\n * and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} imgPath - The image path of the svg\n * @param {string} textClassName - Optional styling to apply to the text\n * @param {string} svgClassName - Optional styling to apply to the svg\n * @returns {Array>}\n *\n * @example\n * parseHeadlineWithSVG('save as_BREAK_a member_BREAK_+so much more', `${process.env.baseUrl}/images/sections/hero/carousel/`, '+', handlePlus, styles.headline, styles.yellowPlus);\n */\nexport const parseHeadlineWithSVG = (\n text: string,\n imgPath: string,\n textToReplaceWithSVG: string,\n // eslint-disable-next-line @typescript-eslint/ban-types\n parseSVGFn: Function,\n textClassName?: string,\n svgClassName?: string,\n superscriptClassName?: string\n) => {\n if (text.includes('_BREAK_') && text.match(/(_\\d+_)/g)) {\n const textArray = text.split('_BREAK_');\n const parsedText = textArray.map((str, idx) => {\n if (str.includes(textToReplaceWithSVG)) {\n return (\n

\n {parseSVGFn(\n str,\n imgPath,\n svgClassName,\n textToReplaceWithSVG,\n textClassName\n )}\n

\n );\n }\n if (str.match(/(_\\d+_)/g)) {\n return (\n
\n {handleSuperscripts(str, superscriptClassName)}\n
\n );\n }\n return (\n

\n {str}\n

\n );\n });\n return parsedText;\n }\n if (text.includes('_BREAK_')) {\n const textArray = text.split('_BREAK_');\n const parsedText = textArray.map((str, idx) => {\n if (str.includes(textToReplaceWithSVG)) {\n return (\n
\n {parseSVGFn(\n str,\n imgPath,\n svgClassName,\n textToReplaceWithSVG,\n textClassName\n )}\n
\n );\n }\n return (\n

\n {str}\n

\n );\n });\n\n return parsedText;\n }\n return (\n

\n {text}\n

\n );\n};\n\n/**\n * handleStrike\n * Uses a regex to parse out a headline that could contain a strikethrough or superscripts\n * and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} strikeClassName - Styling to apply to strikethrough text\n * @param {string} superscriptClassName - Optional styling to apply to the superscript\n * @returns {Array>}\n *\n * @example\n * handleStrike('_STRIKE_$98_STRIKE_ $49 for a year. it's like 6 months free.', styles.strike, styles.super);\n */\n\nexport const handleStrike = (\n text: string,\n strikeClassName: string,\n superscriptClassName?: string\n) => {\n const strikeRegex = /(_STRIKE_.*_STRIKE_)/g;\n const superscriptRegex = /(_\\d+_)/g;\n const textArray = text.split(strikeRegex);\n return textArray.map((str) => {\n if (strikeRegex.test(str)) {\n const strikeText = str.replaceAll('_STRIKE_', '');\n return (\n \n {strikeText}\n \n );\n }\n if (superscriptRegex.test(str)) {\n return handleSuperscripts(str, superscriptClassName || '');\n }\n\n return str;\n });\n};\n\n/**\n * parseHeadlineWithStrike\n * Uses a regex to parse out a headline that could contain a strikethrough, superscripts, and/or linebreaks\n * and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} strikeClassName - Styling to apply to strikethrough text\n * @param {string} textClassName - Styling to apply to the text\n * @param {string} superscriptClassName - Optional styling to apply to the superscript\n * @returns {Array>}\n *\n * @example\n * parseHeadlineWithStrike('_STRIKE_$98_STRIKE_ $49 for a year._BREAK_it's like 6 months free.', styles.strike, styles.headline, styles.super);\n */\n\nexport const parseHeadlineWithStrike = (\n text: string,\n strikeClassName: string,\n textClassName: string,\n superscriptClassName?: string\n) => {\n if (text.includes('_BREAK_')) {\n const textArray = text.split('_BREAK_');\n return textArray.map((str, idx) => {\n if (str.includes('_STRIKE_')) {\n return handleStrike(str, strikeClassName, superscriptClassName);\n }\n\n if (str.match(/(_\\d+_)/g)) {\n return (\n

\n {handleSuperscripts(str, superscriptClassName)}\n

\n );\n }\n\n return (\n

\n {str}\n

\n );\n });\n }\n if (text.includes('_STRIKE_')) {\n return handleStrike(text, strikeClassName, superscriptClassName);\n }\n\n return text;\n};\n\n/**\n * handleBreaks\n * Uses a regex to parse out a string that could contain superscripts, and/or linebreaks\n * and returns an array of React Elements\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} type - Defines what type of text tag to return\n * @param {string} textClassName - Optional styling to apply to the text\n * @param {string} superscriptClassName - Optional styling to apply to the superscript\n * @returns {Array>}\n *\n * @example\n * handleBreaks('Save with_BREAK_grocery delivery', 'h3', styles.headline, styles.super);\n */\n\nexport const handleBreaks = (\n text: string,\n type: T,\n textClassName?: string,\n superscriptClassName?: string\n) => {\n if (text.includes('_BREAK_')) {\n const textArray = text.split('_BREAK_');\n return textArray.map((str, idx) => {\n if (str.match(/(_\\d+_)/g)) {\n return createElement(\n type,\n { key: `${str}-${idx}`, className: textClassName },\n handleSuperscripts(str, superscriptClassName)\n );\n } else {\n return createElement(\n type,\n { key: `${str}-${idx}`, className: textClassName },\n str\n );\n }\n });\n }\n return [\n createElement(\n type,\n { className: textClassName },\n handleSuperscripts(text, superscriptClassName)\n ),\n ];\n};\n\n/**\n * parseColor\n * Uses a regex to parse out a headline that could contain another color\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} colorClassName - Styling to apply to the colored text\n * @returns {Array>}\n *\n * @example\n * parseColor('HOLIDAY _COLOR_DEALS_COLOR_', styles.yellowText);\n */\n\nexport const parseColor = (text: string, colorClassName: string) => {\n const colorRegex = /(_COLOR_.*?_COLOR_)/g;\n if (text.includes('_COLOR_')) {\n const textArray = text.split(colorRegex);\n return textArray.map((str, idx) => {\n if (colorRegex.test(str)) {\n str = str.replaceAll('_COLOR_', '');\n return (\n \n {str}\n \n );\n }\n return str;\n });\n }\n return text;\n};\n\n/**\n * parseBold\n * Uses a regex to parse out text that contains bolded text and/or superscripts\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string of editable content\n * @param {string} boldClassName - Styling to apply to the bolded text\n * @param {string} superscriptClassName - Styling to apply to the superscript if there is one\n * @returns {Array>}\n *\n * @example\n * parseBold('HOLIDAY _BOLD_DEALS_BOLD_', styles.bold, styles.superscript);\n */\n\nexport const parseBold = (\n text: string,\n boldClassName: string,\n superscriptClassName?: string\n) => {\n const boldRegex = /(_BOLD_.*?_BOLD_)/;\n if (text.includes('_BOLD_')) {\n const textArray = text.split(boldRegex);\n return textArray.map((str, idx) => {\n if (boldRegex.test(str)) {\n str = str.replaceAll('_BOLD_', '');\n return (\n \n {handleSuperscripts(str, superscriptClassName)}\n \n );\n }\n return handleSuperscripts(str, superscriptClassName);\n });\n }\n\n return handleSuperscripts(text, superscriptClassName);\n};\n\n/**\n * isEmpty\n * Checks if a string is equal to '_EMPTY_'\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string to check the contents of\n *\n * @example\n * isEmpty(subheadline);\n */\nexport const isEmpty = (str: string) => {\n return str === '_EMPTY_';\n};\n\n/**\n * toCamelCase\n * Converts a string to camelCase to map to the Monarch slotId\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string to convert to camelCase\n *\n * @example\n * toCamelCase('SECTION_01');\n */\nexport const toCamelCase = (str: string) => {\n let substring = str.split('_');\n substring = substring.map((str) => (str === 'CTA' ? str : str.toLowerCase()));\n const camelCaseString =\n substring[0] +\n substring\n .slice(1)\n .map((word) => word.charAt(0).toUpperCase() + word.slice(1))\n .join('');\n return camelCaseString;\n};\n\n/**\n * parseCamelCase\n * Converts a string to uppercase snake_case omitting the word 'Editable'\n * @category Helper\n * @subcategory Editable Helpers\n *\n * @func\n * @param {string} text - A string to convert to snake_case\n *\n * @example\n * parseCamelCase('editableCTABanner');\n */\nexport const convertCamelCaseToSnakeCase = (str: string | undefined) => {\n if (!str) return;\n\n const snakeCaseStr = str.match(/[A-Z][a-z]*|[0-9]+/g)?.join('_');\n const parsedStr = snakeCaseStr\n ?.toUpperCase()\n .replaceAll('EDITABLE_', '')\n .replaceAll('C_T_A', 'CTA');\n return parsedStr;\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cta-primary-blue\":\"CTAButton_cta-primary-blue__S6S71\",\"cta-primary-yellow\":\"CTAButton_cta-primary-yellow__a7C_j\",\"cta-spark-yellow\":\"CTAButton_cta-spark-yellow__KuHiK\",\"cta-primary-black\":\"CTAButton_cta-primary-black__dJSva\",\"cta-secondary\":\"CTAButton_cta-secondary__0FlEN\",\"cta-text-link\":\"CTAButton_cta-text-link__HxA4H\",\"cta-aa-primary-blue\":\"CTAButton_cta-aa-primary-blue__tFIOi\",\"cta-aa-secondary\":\"CTAButton_cta-aa-secondary__0XF0Y\",\"cta-aa-text-link\":\"CTAButton_cta-aa-text-link__le6Bz\",\"cta-size-default\":\"CTAButton_cta-size-default__10gI8\",\"cta-size-thin\":\"CTAButton_cta-size-thin__UZTCU\",\"text-link-size-default\":\"CTAButton_text-link-size-default__qvG3O\",\"text-link-size-thin\":\"CTAButton_text-link-size-thin__FvloL\",\"cta-size-aa\":\"CTAButton_cta-size-aa__VOXBn\",\"text-link-size-aa\":\"CTAButton_text-link-size-aa__oKse_\"};"],"names":["baseSignupURL","urlSet","process","env","week","production","nonprod","regularSignup","__webpack_exports__","Z","variant","size","href","children","className","elementPosition","elementName","elementType","excludeFromTracking","tabIndex","props","param","possibleButtonVariants","some","includes","button","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","LinkWrapper","segmentTracking","styles","concat","join","disableUrlParamPersist","newRelicActionName","onClick","e","rest","appendProps","a","trackCTAClick","currentTarget","handleSuperscripts","text","supClassName","regex","finalRegex","textArray","split","map","str","idx","test","noUnderscoreStr","replace","sup","toString","handleLinks","linkClassName","superscriptClassName","replaceAll","target","rel","handleMultipleLinks","hrefs","parseLinks","copy","linkProps","matches","Array","from","matchAll","length","i","_","linkText","jsxs","div","CTAButton","yellowPlus","imgPath","Image","src","alt","height","width","loading","handlePlus","plusClassName","textToReplaceWithSVG","textClassName","plusArr","match","p","parseTextWithSVG","svgs","svgArr","span","parseHeadlineWithSVG","parseSVGFn","svgClassName","handleStrike","strikeClassName","strikeRegex","superscriptRegex","strikeText","handleBreaks","type","createElement","key","parseColor","colorClassName","colorRegex","parseBold","boldClassName","boldRegex","strong","isEmpty","toCamelCase","substring","toLowerCase","slice","word","charAt","toUpperCase","convertCamelCaseToSnakeCase","snakeCaseStr","module","exports"],"sourceRoot":""}