{
  "version": 3,
  "sources": ["ssg:https://framerusercontent.com/modules/CugGOuQIBEsfvU9iT5kp/f2deeIvD9XDO88IqMSZX/AutoShakeIt.js"],
  "sourcesContent": ["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useState,useEffect,useRef,Children}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";/**\n * AutoShake\n *\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 200\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth any-prefer-auto\n * @framerSupportedLayoutHeight any-prefer-auto\n */export default function AutoShake(props){const{animate,duration,interval,delay,child,transformOrigin}=props;const[isShaking,setIsShaking]=useState(false);const containerRef=useRef(null);const shakeTimeoutRef=useRef(null);const intervalTimeoutRef=useRef(null);// Detect if in edit mode (Framer Canvas)\nconst isEditing=RenderTarget.current()===RenderTarget.canvas;const hasChild=Children.count(child)>0;// This effect sets up the auto-shake if animate = true, skip if false\nuseEffect(()=>{if(isEditing)return;// Skip animation in edit mode\nif(!animate)return;// If Animate = false, do nothing\nconst startShake=()=>{setIsShaking(true);shakeTimeoutRef.current=setTimeout(()=>{setIsShaking(false);intervalTimeoutRef.current=setTimeout(startShake,interval*1e3)// Wait 'interval' secs before restarting shake\n;},duration*1e3)// Shake lasts 'duration' secs\n;};// Start first shake after 'delay'\nconst initialTimeout=setTimeout(startShake,delay*1e3);return()=>{if(shakeTimeoutRef.current)clearTimeout(shakeTimeoutRef.current);if(intervalTimeoutRef.current)clearTimeout(intervalTimeoutRef.current);clearTimeout(initialTimeout);};},[animate,duration,interval,delay,isEditing]);return /*#__PURE__*/_jsxs(\"div\",{ref:containerRef,style:{overflow:\"visible\",display:\"inline-block\",width:hasChild?\"auto\":\"200px\",height:hasChild?\"auto\":\"200px\"},children:[/*#__PURE__*/_jsx(\"div\",{className:`auto-shake-item ${isShaking?\"shaking\":\"\"}`,style:{display:\"block\",transformOrigin:transformOriginToCSS(transformOrigin),backfaceVisibility:\"hidden\",width:hasChild?\"100%\":\"200px\",height:hasChild?\"100%\":\"200px\"},children:hasChild?child:/*#__PURE__*/_jsx(FallbackPlaceholder,{})}),/*#__PURE__*/_jsx(\"style\",{children:`\n                .auto-shake-item {\n                    animation: none;\n                }\n                .auto-shake-item.shaking {\n                    animation: auto-bellshake ${duration}s cubic-bezier(.36,.07,.19,.97) both;\n                    backface-visibility: hidden;\n                }\n\n                @keyframes auto-bellshake {\n                    0%   { transform: rotate(0); }\n                    15%  { transform: rotate(5deg); }\n                    30%  { transform: rotate(-5deg); }\n                    45%  { transform: rotate(4deg); }\n                    60%  { transform: rotate(-4deg); }\n                    75%  { transform: rotate(2deg); }\n                    85%  { transform: rotate(-2deg); }\n                    92%  { transform: rotate(1deg); }\n                    100% { transform: rotate(0); }\n                }\n            `})]});}AutoShake.displayName=\"Auto Shake\";// Default Props\nAutoShake.defaultProps={animate:true,duration:.5,interval:2,delay:0,transformOrigin:\"top center\"};/** Property Controls */addPropertyControls(AutoShake,{animate:{type:ControlType.Boolean,title:\"Animate\",defaultValue:true,enabledTitle:\"Yes\",disabledTitle:\"No\"},duration:{type:ControlType.Number,title:\"Shake Duration\",min:.1,max:2,step:.1,defaultValue:.5,unit:\"s\"},interval:{type:ControlType.Number,title:\"Interval\",min:0,max:10,step:.1,defaultValue:2,unit:\"s\"},delay:{type:ControlType.Number,title:\"Delay\",min:0,max:10,step:.1,defaultValue:0,unit:\"s\"},child:{type:ControlType.ComponentInstance,title:\"Child\"},transformOrigin:{type:ControlType.Enum,title:\"Origin\",options:[\"top left\",\"top center\",\"top right\",\"center left\",\"center center\",\"center right\",\"bottom left\",\"bottom center\",\"bottom right\"],optionTitles:[\"Top Left\",\"Top Center\",\"Top Right\",\"Center Left\",\"Center Center\",\"Center Right\",\"Bottom Left\",\"Bottom Center\",\"Bottom Right\"],defaultValue:\"top center\"}});/** A fallback placeholder if no Child is connected. */function FallbackPlaceholder(){return /*#__PURE__*/_jsxs(\"div\",{style:{minWidth:\"200px\",minHeight:\"200px\",width:\"200px\",height:\"200px\",display:\"flex\",justifyContent:\"center\",alignItems:\"center\",flexDirection:\"column\",color:\"#96F\",background:\"rgba(136, 85, 255, 0.1)\",fontSize:11,overflow:\"hidden\",border:\"1px dashed #96F\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:32,marginBottom:10},children:\"\uD83D\uDD14\"}),/*#__PURE__*/_jsx(\"p\",{style:{margin:0,marginBottom:10,fontWeight:600,textAlign:\"center\"},children:\"Auto Shake\"}),/*#__PURE__*/_jsxs(\"p\",{style:{margin:0,opacity:.7,maxWidth:150,lineHeight:1.5,textAlign:\"center\"},children:[\"Auto-Shaking Bell \",/*#__PURE__*/_jsx(\"br\",{}),\"Attach a Child or Leave Empty\"]})]});}/** Convert user\u2019s origin selection to CSS \"50% 0%\", etc. */function transformOriginToCSS(origin){switch(origin){case\"top left\":return\"0% 0%\";case\"top center\":return\"50% 0%\";case\"top right\":return\"100% 0%\";case\"center left\":return\"0% 50%\";case\"center center\":return\"50% 50%\";case\"center right\":return\"100% 50%\";case\"bottom left\":return\"0% 100%\";case\"bottom center\":return\"50% 100%\";case\"bottom right\":return\"100% 100%\";default:return\"50% 0%\";}}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"AutoShake\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"*\",\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutWidth\":\"any-prefer-auto\",\"framerIntrinsicWidth\":\"200\",\"framerSupportedLayoutHeight\":\"any-prefer-auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./AutoShakeIt.map"],
  "mappings": "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",
  "names": ["AutoShake", "props", "animate", "duration", "interval", "delay", "child", "transformOrigin", "isShaking", "setIsShaking", "ye", "containerRef", "pe", "shakeTimeoutRef", "intervalTimeoutRef", "isEditing", "RenderTarget", "hasChild", "j", "ue", "startShake", "initialTimeout", "u", "p", "transformOriginToCSS", "FallbackPlaceholder", "addPropertyControls", "ControlType", "origin"]
}
