{"version":3,"file":"ScreenSaver_Prod.DaCNM1pc.mjs","names":["useStore","useState","React.useState","React.useRef","React.useCallback"],"sources":["https:/framer.com/m/framer/store.js@^1.0.0","https:/framer.com/m/Utils-QTIc.js@hDBsItohjMEOACix8wDv","https:/framerusercontent.com/modules/kAKs4SGX5PAwm3BE8By8/dtuQG7o5X02oY6WbL5ty/ScreenSaver_Prod.js"],"sourcesContent":["import{useState,useEffect}from\"react\";import{Data,useObserveData}from\"framer\";export function createStore(state1){// Use Data so that a Preview reload resets the state\nconst dataStore=Data({state:Object.freeze({...state1})});// Create a set function that updates the state\nconst setDataStore=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(dataStore.state);}dataStore.state=Object.freeze({...dataStore.state,...newState});};// Store the initial state, copy the object if it's an object\nlet storeState=typeof state1===\"object\"?Object.freeze({...state1}):state1;// Keep a list of all the listeners, in the form of React hook setters\nconst storeSetters=new Set();// Create a set function that updates all the listeners / setters\nconst setStoreState=newState=>{// If the state is an object, make sure we copy it\nif(typeof newState===\"function\"){newState=newState(storeState);}storeState=typeof newState===\"object\"?Object.freeze({...storeState,...newState}):newState;// Update all the listeners / setters with the new value\nstoreSetters.forEach(setter=>setter(storeState));};// Create the actual hook based on everything above\nfunction useStore(){// Create the hook we are going to use as a listener\nconst[state,setState]=useState(storeState);// If we unmount the component using this hook, we need to remove the listener\n// @ts-ignore\nuseEffect(()=>{// But right now, we need to add the listener\nstoreSetters.add(setState);return()=>storeSetters.delete(setState);},[]);// If Data context exists, use Data, otherwise use vanilla React state\nif(useObserveData()===true){useObserveData();return[dataStore.state,setDataStore];}else{// Return the state and a function to update the central store\nreturn[state,setStoreState];}}return useStore;}\nexport const __FramerMetadata__ = {\"exports\":{\"createStore\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./createStore.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{ControlType}from\"framer\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";export const updateChildren=(children,properties)=>{return[{...children,props:{...children.props,children:{...children.props.children,props:{...children.props.children.props,children:{...children.props.children.props.children,props:{...children.props.children.props.children.props,...properties}}}}}}];};export const SettingsMessage=({title,description,containerStyle})=>{return /*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"center\",textAlign:\"center\",justifyContent:\"center\",backgroundColor:\"rgba(136, 85, 255, 0.1)\",overflow:\"hidden\",...containerStyle},children:[/*#__PURE__*/_jsx(\"span\",{role:\"img\",\"aria-label\":\"icon\",style:{fontSize:\"32px\"},children:\"✨\"}),/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:\"240px\"},children:[/*#__PURE__*/_jsx(\"h1\",{style:{fontSize:11,color:\"#96F\",fontWeight:600},children:title}),/*#__PURE__*/_jsx(\"p\",{style:{fontSize:11,color:\"rgba(153, 102, 255, 0.7)\",lineHeight:1.5},children:description})]})]});};export const getBorder=border=>{if(!border)return{border:\"none\"};const{width,color,style}=border;return{borderWidth:width,borderColor:color,borderStyle:style};};export const borderProperty=(title=\"Border\",width=\"0px\",color=\"#fff\")=>({title,type:ControlType.Object,controls:{width:{title:\"Width\",type:ControlType.Padding,defaultValue:width},color:{title:\"Color\",type:ControlType.Color,defaultValue:color},style:{type:ControlType.Enum,defaultValue:\"solid\",options:[\"solid\",\"dashed\",\"dotted\",\"double\"],optionTitles:[\"Solid\",\"Dashed\",\"Dotted\",\"Double\"]}}});export const getBoxShadow=property=>{const{x,y,blur,color}=property.shadow;return`${x}px ${y}px ${blur}px ${color}`;};export const shadowProperty={type:ControlType.Object,controls:{color:{title:\"Color\",type:ControlType.Color,defaultValue:\"#bfbfbf\"},x:{title:\"X\",type:ControlType.Number,defaultValue:0,min:-100,max:100},y:{title:\"Y\",type:ControlType.Number,defaultValue:0,min:-100,max:100},blur:{title:\"Blur\",type:ControlType.Number,defaultValue:0,min:0,max:100}}};export const heightProperty={height:{type:ControlType.Enum,defaultValue:\"auto\",displaySegmentedControl:true,options:[\"auto\",\"fixed\"],optionTitles:[\"Auto\",\"Fixed\"]},heightNumber:{title:\" \",type:ControlType.Number,defaultValue:50,hidden(props){return props.height===\"auto\";}}};export const getHeight=property=>{if(property.height===\"auto\"){return property.height;}else{return`${property.heightNumber}px`;}};export const getPageQueryParam=()=>{const urlParams=new URLSearchParams(window.location.search);const pageParam=urlParams.get(\"page\");return pageParam?parseInt(pageParam,10):1;};export const updatePageQueryParam=newPage=>{const url=new URL(window.location.href);url.searchParams.set(\"page\",newPage);window.history.replaceState({},\"\",url.toString());};export const useStore=createStore({initialLimit:undefined,initialOffset:undefined,limit:undefined,offset:undefined,totalItems:undefined,page:1,searchQuery:\"\",totalPages:undefined});export const scrollToTop=(withScroll,scrollTop,scrollBehavior)=>{if(withScroll){window.scrollTo({top:scrollTop,behavior:scrollBehavior});}};\nexport const __FramerMetadata__ = {\"exports\":{\"heightProperty\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"updatePageQueryParam\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useStore\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getHeight\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getBoxShadow\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"updateChildren\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderProperty\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"shadowProperty\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getBorder\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SettingsMessage\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getPageQueryParam\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"scrollToTop\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Utils.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{motion,AnimatePresence,useMotionValue}from\"framer-motion\";import{addPropertyControls,ControlType}from\"framer\";import{SettingsMessage}from\"https://framer.com/m/Utils-QTIc.js@hDBsItohjMEOACix8wDv\";const styles=`\n  .screen-saver, .screen-saver > * {\n    width: 100% !important;\n    height: 100% !important;\n  }\n  .screen-saver {\n    position: relative;\n    overflow: hidden;\n  }\n  .bouncer-container {\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n  }\n  .bouncer {\n    position: absolute;\n  }\n`;/**\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */function ScreenSaver({background,bouncer,ms,speed,transition,style}){const[isIdle,setIsIdle]=React.useState(false);const containerRef=React.useRef(null);const bouncerRef=React.useRef(null);const[containerSize,setContainerSize]=React.useState({width:0,height:0});const[bouncerSize,setBouncerSize]=React.useState({width:0,height:0});const x=useMotionValue(0);const y=useMotionValue(0);const directionRef=React.useRef({x:1,y:1});const animationRef=React.useRef(null);const lastUpdateTime=React.useRef(0);const updateSizes=React.useCallback(()=>{if(containerRef.current){const containerRect=containerRef.current.getBoundingClientRect();setContainerSize({width:containerRect.width,height:containerRect.height});}if(bouncerRef.current){const bouncerRect=bouncerRef.current.getBoundingClientRect();setBouncerSize({width:bouncerRect.width,height:bouncerRect.height});}},[]);React.useLayoutEffect(()=>{updateSizes();const resizeObserver=new ResizeObserver(updateSizes);if(containerRef.current)resizeObserver.observe(containerRef.current);if(bouncerRef.current)resizeObserver.observe(bouncerRef.current);const mutationObserver=new MutationObserver(updateSizes);if(containerRef.current){mutationObserver.observe(containerRef.current,{childList:true,subtree:true});}return()=>{resizeObserver.disconnect();mutationObserver.disconnect();};},[updateSizes]);React.useEffect(()=>{let timeoutId;const resetTimer=()=>{clearTimeout(timeoutId);setIsIdle(false);timeoutId=setTimeout(()=>setIsIdle(true),ms);};const handleUserActivity=()=>{resetTimer();};resetTimer();// Add event listeners for various user interactions\nwindow.addEventListener(\"mousemove\",handleUserActivity);window.addEventListener(\"keydown\",handleUserActivity);window.addEventListener(\"mousedown\",handleUserActivity);window.addEventListener(\"touchstart\",handleUserActivity);window.addEventListener(\"touchmove\",handleUserActivity);window.addEventListener(\"scroll\",handleUserActivity,true)// Capture phase\n;return()=>{clearTimeout(timeoutId);window.removeEventListener(\"mousemove\",handleUserActivity);window.removeEventListener(\"keydown\",handleUserActivity);window.removeEventListener(\"mousedown\",handleUserActivity);window.removeEventListener(\"touchstart\",handleUserActivity);window.removeEventListener(\"touchmove\",handleUserActivity);window.removeEventListener(\"scroll\",handleUserActivity,true);};},[ms]);const animate=React.useCallback(timestamp=>{const deltaTime=timestamp-lastUpdateTime.current;if(deltaTime<16){// Limit to ~60 FPS\nanimationRef.current=requestAnimationFrame(animate);return;}lastUpdateTime.current=timestamp;let newX=x.get()+speed*directionRef.current.x;let newY=y.get()+speed*directionRef.current.y;if(newX+bouncerSize.width>containerSize.width||newX<0){directionRef.current.x*=-1;newX=Math.max(0,Math.min(newX,containerSize.width-bouncerSize.width));}if(newY+bouncerSize.height>containerSize.height||newY<0){directionRef.current.y*=-1;newY=Math.max(0,Math.min(newY,containerSize.height-bouncerSize.height));}x.set(newX);y.set(newY);animationRef.current=requestAnimationFrame(animate);},[speed,containerSize,bouncerSize,x,y]);React.useEffect(()=>{animationRef.current=requestAnimationFrame(animate);return()=>{if(animationRef.current){cancelAnimationFrame(animationRef.current);}};},[animate]);if(!background||background.length===0||!bouncer||bouncer.length===0){return /*#__PURE__*/_jsx(SettingsMessage,{title:\"Set Up the Component\",description:\"Add Background and Bouncer elements to the Component properties.\",containerStyle:{...style,padding:\"20px 20px 30px 20px\"}});}return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{width:\"100%\",height:\"100%\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",visibility:\"hidden\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{ref:bouncerRef,children:bouncer})}),/*#__PURE__*/_jsx(AnimatePresence,{children:isIdle&&/*#__PURE__*/_jsxs(motion.div,{className:\"screen-saver\",initial:{opacity:0},animate:{opacity:1},exit:{opacity:0},transition:transition,children:[/*#__PURE__*/_jsx(\"style\",{children:styles}),background,/*#__PURE__*/_jsx(\"div\",{className:\"bouncer-container\",children:/*#__PURE__*/_jsx(motion.div,{className:\"bouncer\",style:{x,y,width:bouncerSize.width,height:bouncerSize.height},children:bouncer})})]})})]});}ScreenSaver.defaultProps={ms:1e4,speed:1,transition:{type:\"tween\",duration:.2,ease:\"easeInOut\"}};ScreenSaver.displayName=\"Screen Saver\";addPropertyControls(ScreenSaver,{background:{type:ControlType.ComponentInstance,title:\"Background\"},bouncer:{type:ControlType.ComponentInstance,title:\"Bouncer\"},ms:{type:ControlType.Number,title:\"Idle\",description:\"Time before the screen saver activates.\",defaultValue:1e4,min:0,step:1e3,displayStepper:true,unit:\"ms\"},speed:{type:ControlType.Number,title:\"Speed\",description:\"Speed of the bouncer.\",defaultValue:1,min:0,max:10,step:.5},transition:{type:ControlType.Transition,title:\"Transition\",defaultValue:{type:\"tween\",duration:.2,ease:\"easeInOut\"},description:\"Set pointer events style to 'none' on this component so you can interact with layers below it.\\nMore components at [Framer University](https://frameruni.link/cc).\"}});export default ScreenSaver;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"ScreenSaver\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"200\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./ScreenSaver_Prod.map"],"mappings":"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"}