{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/b8wzgfWRyM6twUWE1O06/EUrgkH3KceWdFtNWGQme/ScrollToTopButton.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion,useAnimation}from\"framer-motion\";import{useEffect}from\"react\";import{cloneElement}from\"react\";import{borderPropertyControl,Border}from\"https://framer.com/m/Shared-8iGD.js@9bbvaZD8RsNyj0rYVQ4z\";function scrollToTop(){if(typeof window!==\"undefined\"){window.scrollTo({top:0,behavior:\"smooth\"});}}/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 40\n * @framerIntrinsicHeight 40\n */export default function ScrollToTopButton(props){const controls=useAnimation();useEffect(()=>{const handleScroll=()=>{const scrollPosition=window.scrollY+window.innerHeight;const footerHeight=props.footerHeight;const documentHeight=document.documentElement.scrollHeight;if(window.scrollY>props.appearAfter&&scrollPosition<documentHeight-footerHeight){controls.start({opacity:1,transition:{duration:props.transitionDuration}});}else{controls.start({opacity:0,transition:{duration:props.transitionDuration}});}};controls.start({opacity:0})// Initially hide the button\n;window.addEventListener(\"scroll\",handleScroll);return()=>window.removeEventListener(\"scroll\",handleScroll);},[controls,props.appearAfter,props.transitionDuration,props.footerHeight]);if(props.buttonType==\"custom\"){var _props_custom,_props_style,_props_style1;let layer=(_props_custom=props.custom)===null||_props_custom===void 0?void 0:_props_custom[0];if(layer&&(((_props_style=props.style)===null||_props_style===void 0?void 0:_props_style.width)||((_props_style1=props.style)===null||_props_style1===void 0?void 0:_props_style1.height))){layer=/*#__PURE__*/cloneElement(layer,{style:{...layer.props.style,...props.style}});}return /*#__PURE__*/_jsx(motion.div,{animate:controls,onClick:scrollToTop,style:props.style,children:layer});}return /*#__PURE__*/_jsxs(motion.div,{animate:controls,style:{width:props.buttonWidth,height:props.buttonHeight,display:\"flex\",justifyContent:\"center\",alignItems:\"center\",backgroundColor:props.fill,cursor:\"pointer\",boxShadow:props.shadows,borderRadius:props.radiusIsMixed?`${props.radiusTopLeft}px ${props.radiusTopRight}px ${props.radiusBottomRight}px ${props.radiusBottomLeft}px`:`${props.radius}px`,...props.style},onClick:scrollToTop,children:[/*#__PURE__*/_jsxs(\"svg\",{xmlns:\"http://www.w3.org/2000/svg\",fill:\"none\",viewBox:\"0 0 24 24\",strokeWidth:props.icon.stroke,stroke:props.icon.color,\"stroke-linecap\":\"round\",\"stroke-linejoin\":\"round\",style:{width:props.icon.size,height:props.icon.size},children:[/*#__PURE__*/_jsx(\"path\",{d:\"M12 5l0 14\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M18 11l-6 -6\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M6 11l6 -6\"})]}),/*#__PURE__*/_jsx(Border,{...props.border})]});}ScrollToTopButton.displayName=\"Scroll-to-Top Button\";addPropertyControls(ScrollToTopButton,{buttonType:{type:ControlType.Enum,defaultValue:\"default\",options:[\"default\",\"custom\"],optionTitles:[\"Default\",\"Custom\"],displaySegmentedControl:true,title:\"Button\"},custom:{type:ControlType.ComponentInstance,title:\"Custom\",description:\"Connect a custom button layer.\",hidden(props){return props.buttonType!==\"custom\";}},fill:{type:ControlType.Color,defaultValue:\"#EDEDED\",optional:true,hidden(props){return props.buttonType!==\"default\";}},icon:{type:ControlType.Object,controls:{color:{type:ControlType.Color,defaultValue:\"black\"},size:{type:ControlType.Number,defaultValue:24,min:1},stroke:{type:ControlType.Number,defaultValue:2,min:1,max:10,step:.1}},hidden(props){return props.buttonType!==\"default\";}},radius:{type:ControlType.FusedNumber,defaultValue:20,toggleKey:\"radiusIsMixed\",toggleTitles:[\"All\",\"Individual\"],valueKeys:[\"radiusTopLeft\",\"radiusTopRight\",\"radiusBottomRight\",\"radiusBottomLeft\"],valueLabels:[\"TL\",\"TR\",\"BR\",\"BL\"],min:0,hidden(props){return props.buttonType!==\"default\";}},border:borderPropertyControl(props=>props.buttonType!==\"default\"),shadows:{type:ControlType.BoxShadow,hidden:props=>props.buttonType!=\"default\"},appearAfter:{type:ControlType.Number,title:\"Appear After (px)\",defaultValue:500,min:0},transitionDuration:{type:ControlType.Number,title:\"Transition Duration\",defaultValue:.5,min:0,max:5,step:.1,displayStepper:true},footerHeight:{type:ControlType.Number,title:\"Hide in Footer (px)\",defaultValue:800,min:0}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScrollToTopButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"40\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"40\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScrollToTopButton.map"],
  "mappings": "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",
  "names": ["init_ssg_sandbox_shims", "scrollToTop", "ScrollToTopButton", "props", "controls", "useAnimation", "ue", "handleScroll", "scrollPosition", "footerHeight", "documentHeight", "_props_custom", "_props_style", "_props_style1", "layer", "q", "p", "motion", "Border", "addPropertyControls", "ControlType", "borderPropertyControl"]
}
