{
  "version": 3,
  "sources": ["ssg:https://framer.com/m/useParamsNew-fsOR.js@mi1LXL7o5BEgq9IuFzz3", "ssg:https://framerusercontent.com/modules/6bbtcRHcRVnSrPoIHywp/WbNStViUvwxCOF5IeqkJ/SponsorButton.js"],
  "sourcesContent": ["import{useMemo}from\"react\";export const useResolveLinkWithQueryParams=(link,trackedParams,scrollToId,shouldResolveAsSlug)=>{const linkWithQueryParams=useMemo(()=>{const url=new URL(window.location.href);const params=new URLSearchParams(url.search);if(shouldResolveAsSlug){// Extract the value of the first tracked parameter\nconst slugValue=params.get(trackedParams[0]);if(slugValue){// Append the parameter value as a slug to the link\nreturn`${link.replace(/\\/$/,\"\")}/${encodeURIComponent(slugValue)}`;}return link// Fallback to the original link if no parameter value exists\n;}// Resolve query parameters\nconst resolvedParams=trackedParams.map(paramName=>{const paramValue=params.get(paramName);return paramValue?`${paramName}=${encodeURIComponent(paramValue)}`:null;}).filter(Boolean).join(\"&\");// Determine if `link` already has query parameters\nconst hasExistingParams=link.includes(\"?\");// Construct the final query string\nconst queryString=resolvedParams.length>0?`${hasExistingParams?\"&\":\"?\"}${resolvedParams}`:\"\";// Append hash and scroll ID if provided\nconst finalHash=scrollToId?`#${scrollToId}`:url.hash;// Return the constructed link\nreturn`${link}${queryString}${finalHash}`;},[link,trackedParams,scrollToId,shouldResolveAsSlug]);return linkWithQueryParams;};export const useGetParamValues=trackedParams=>{const paramsObject=useMemo(()=>{const params=new URLSearchParams(window.location.search);return trackedParams.reduce((acc,paramName)=>{const paramValue=params.get(paramName);if(paramValue){acc[paramName]=decodeURIComponent(paramValue);}return acc;},{});},[trackedParams]);return paramsObject;}//LAST WORKING Prior to above\n// import { useMemo } from \"react\"\n// export const useResolveLinkWithQueryParams = (\n//     link: string,\n//     trackedParams: string[],\n//     isNewQueryParam: boolean,\n//     scrollToId: string,\n//     shouldResolveAsSlug: boolean,\n// ) => {\n//     const linkWithQueryParams = useMemo(() => {\n//         // Create a URL object for the current window location\n//         const url = new URL(window.location.href)\n//         // Extract the query parameters from the current URL\n//         const params = new URLSearchParams(url.search)\n//         // Build an array of query parameters to include in the new link\n//         const resolvedParams = trackedParams\n//             ? trackedParams\n//                   .map((paramName) => {\n//                       const paramValue = params.get(paramName)\n//                       return paramValue\n//                           ? `${paramName}=${encodeURIComponent(paramValue)}`\n//                           : null\n//                   })\n//                   .filter(Boolean)\n//                   .join(\"&\")\n//             : []\n//         // Determine the parameter prefix\n//         const paramPrefix = isNewQueryParam ? \"?\" : \"&\"\n//         // Construct the query string with the appropriate prefix\n//         const queryString =\n//             resolvedParams.length > 0 ? `${paramPrefix}${resolvedParams}` : \"\"\n//         // Return the formatted URL with the resolved parameters and current hash\n//         return `${link}${queryString}${url.hash}${scrollToId}`\n//     }, [link, trackedParams, isNewQueryParam])\n//     return linkWithQueryParams\n// }\n// export const useGetParamValues = (trackedParams) => {\n//     const paramsObject = useMemo(() => {\n//         const params = new URLSearchParams(window.location.search)\n//         return trackedParams.reduce((acc, paramName) => {\n//             const paramValue = params.get(paramName)\n//             if (paramValue) {\n//                 acc[paramName] = decodeURIComponent(paramValue)\n//             }\n//             return acc\n//         }, {})\n//     }, [trackedParams])\n//     return paramsObject\n// }\n;\nexport const __FramerMetadata__ = {\"exports\":{\"useGetParamValues\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useResolveLinkWithQueryParams\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useParamsNew.map", "import{jsx as _jsx}from\"react/jsx-runtime\";import{motion}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";import{useGetParamValues,useResolveLinkWithQueryParams}from\"https://framer.com/m/useParamsNew-fsOR.js@mi1LXL7o5BEgq9IuFzz3\";// useParamsNew.ts\n/**\n * These annotations control how your component sizes\n * Learn more: https://www.framer.com/docs/guides/auto-sizing\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function Button(props){const{title,color,fill,isOutline,gradient,radius,padding,style,fontSize,onClick,linkurl,trackedParams,disableParams,// isNewQueryParam,\nshouldResolveAsSlug,openNewTab,scrollToId}=props;const linkWithQueryParams=useResolveLinkWithQueryParams(linkurl,trackedParams,scrollToId,shouldResolveAsSlug);// const linkWithQueryParams = useResolveLinkWithQueryParams(\n//     linkurl,\n//     trackedParams,\n//     isNewQueryParam,\n//     scrollToId\n// )\n// This hook returns an object with the trackedQueryParams as key value pairs, this will allow you to run extra validation on each param if needed.\nconst params=useGetParamValues(trackedParams);const resolveButtonGradient=()=>{switch(gradient){case\"promptings\":return\"linear-gradient(281deg, #00e0e0 0%, rgb(5, 197, 235) 100%)\";case\"portal\":return\"linear-gradient()\";default:return fill;}};const shouldResolveLink=!!disableParams||!!trackedParams;const resolveButtonLink=()=>shouldResolveLink?linkWithQueryParams:linkurl;return /*#__PURE__*/_jsx(motion.a,{style:{cursor:\"pointer\",textDecoration:\"none\",display:\"block\"},href:resolveButtonLink(),target:openNewTab?\"_blank\":\"initial\",children:/*#__PURE__*/_jsx(motion.div,{style:{...style,...containerStyle},children:/*#__PURE__*/_jsx(motion.div,{style:{padding:padding,borderRadius:radius,background:gradient!==\"none\"?resolveButtonGradient():isOutline?\"transparent\":fill,color:color,border:isOutline?`2px solid ${fill}`:\"none\",fontSize:fontSize,fontWeight:\"bold\",cursor:\"pointer\"},whileHover:{scale:1.01},children:title})})});}Button.defaultProps={background:{solid:\"#09F\",gradient:\"promptings\"},title:\"New Button\",link:{url:\"/opportunity\",shouldOpenNewTab:false,isLinkDynamic:true,trackedParams:[\"sponsor\"],paramStartType:\"?\",scrollToId:\"\"}};addPropertyControls(Button,{title:{title:\"Title\",type:ControlType.String},padding:{title:\"Padding\",defaultValue:\"15px 30px\",type:ControlType.String},fontSize:{title:\"Font Size Override\",defaultValue:\"18px\",type:ControlType.String},radius:{title:\"Radius\",defaultValue:13,type:ControlType.Number},color:{title:\"Text Color\",type:ControlType.Color,defaultValue:\"#FFF\"},fill:{title:\"Fill\",type:ControlType.Color},isOutline:{title:\"Outline Button\",type:ControlType.Boolean,defaultValue:false},gradient:{title:\"Gradient Background\",type:ControlType.Enum,defaultValue:\"none\",displaySegmentedControl:true,segmentedControlDirection:\"vertical\",options:[\"none\",\"promptings\"],optionTitles:[\"No Gradient\",\"Promptings Gradient\"]},linkurl:{type:ControlType.String,defaultValue:\"https://app.sendoutcards.com/pricing\",description:\"Supports both full url and /pagename slugs, to use a full url the value of this field must start with http or https:// \"},trackedParams:{type:ControlType.Array,control:{type:ControlType.String},defaultValue:[],description:\"Provide the names of the url params you want to track. ex('sponsor', 'cartId', 'sessionId')\"},shouldResolveAsSlug:{type:ControlType.Boolean,defaultValue:false,description:\"This will only take the first tracked param and set it to a slug /{trackedParam[0]}\"},scrollToId:{type:ControlType.String,defaultValue:\"\",description:\"Will insert scrollTo has to the end of the formated url\"},disableParams:{type:ControlType.Boolean,defaultValue:false,description:\"This should only be true if using this button for other purposes, like UI changes\"},// isNewQueryParam: { type: ControlType.Boolean, defaultValue: true },\nopenNewTab:{type:ControlType.Boolean,defaultValue:true}});const containerStyle={display:\"flex\",justifyContent:\"start\",alignItems:\"center\",overflow:\"hidden\"};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Button\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SponsorButton.map"],
  "mappings": "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",
  "names": ["useResolveLinkWithQueryParams", "link", "trackedParams", "scrollToId", "shouldResolveAsSlug", "se", "url", "window", "params", "slugValue", "resolvedParams", "paramName", "paramValue", "hasExistingParams", "queryString", "finalHash", "useGetParamValues", "acc", "Button", "props", "title", "color", "fill", "isOutline", "gradient", "radius", "padding", "style", "fontSize", "onClick", "linkurl", "trackedParams", "disableParams", "shouldResolveAsSlug", "openNewTab", "scrollToId", "linkWithQueryParams", "useResolveLinkWithQueryParams", "params", "useGetParamValues", "resolveButtonGradient", "shouldResolveLink", "resolveButtonLink", "p", "motion", "containerStyle", "addPropertyControls", "ControlType"]
}
