{"version":3,"file":"Shortcuts_Prod.CSkyhFr6.mjs","names":["useState","useRef","useCallback","useMemo"],"sources":["https:/framerusercontent.com/modules/ixn5bwVqHDFh2rnxxDYw/aUrpXThVRI7ohRQyuBpm/UseCurrentLocation.js","https:/framer.com/m/UseCurrentLocation-coQY.js","https:/framerusercontent.com/modules/a00rkf99JIwyJlJoC56r/r5M5eK0UdIs4bR6u59vZ/Shortcuts_Prod.js"],"sourcesContent":["//@ts-ignore\nimport{useRouter,useCurrentRouteId}from\"framer\";const useCurrentLocation=()=>{var _routes_currentRouteId;const{navigate,routes}=useRouter();const currentRouteId=useCurrentRouteId();const location=Array.isArray(routes)&&((_routes_currentRouteId=routes[currentRouteId])===null||_routes_currentRouteId===void 0?void 0:_routes_currentRouteId.path);const setLocation=path=>{var _Object_entries;const routeID=(_Object_entries=Object.entries(routes))===null||_Object_entries===void 0?void 0:_Object_entries.reduce((acc,item)=>{var _item_;return((_item_=item[1])===null||_item_===void 0?void 0:_item_.path)===path?item[0]:acc;},false);navigate(routeID,\"\");};return[location,setLocation];};export{useCurrentLocation};\nexport const __FramerMetadata__ = {\"exports\":{\"useCurrentLocation\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./UseCurrentLocation.map","/*\n * UseCurrentLocation\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/ixn5bwVqHDFh2rnxxDYw/aUrpXThVRI7ohRQyuBpm/UseCurrentLocation.js\"\n","import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{useEffect,useState,useCallback,useRef,useMemo}from\"react\";import{useCurrentLocation}from\"https://framer.com/m/UseCurrentLocation-coQY.js\";/**\n * @framerDisableUnlink\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function KeyboardShortcut({shortcuts}){// const setCurrentLocation = (redirectTo: string) => {\n//   console.log(redirectTo);\n// };\nconst[currentLocation,setCurrentLocation]=useCurrentLocation();const[pressedKeys,setPressedKeys]=useState(new Set);const resetTimerRef=useRef(null);const pressedKeysRef=useRef(pressedKeys);const containerRef=useRef(null);useEffect(()=>{pressedKeysRef.current=pressedKeys;},[pressedKeys]);// Add auto-focus effect\nuseEffect(()=>{if(containerRef.current){containerRef.current.focus();}},[]);const normalizeKey=useCallback(key=>{key=key.toLowerCase();if(key===\"meta\"||key===\"command\"||key===\"os\")return\"cmd\";if(key===\"control\")return\"ctrl\";if(key===\"alt\"||key===\"option\")return\"alt\";if(key===\"shift\")return\"shift\";return key;},[]);const isModifierKey=useCallback(key=>{return[\"cmd\",\"ctrl\",\"alt\",\"shift\"].includes(key);},[]);const normalizedShortcuts=useMemo(()=>{return shortcuts.map(shortcut=>({originalKey:shortcut.key,normalizedKey:shortcut.key.toLowerCase().split(\"+\").map(normalizeKey).sort().join(\"+\"),link:shortcut.link,newTab:shortcut.newTab})).filter(s=>s.normalizedKey);},[shortcuts,normalizeKey]);const resetKeys=useCallback(()=>{setPressedKeys(new Set);if(resetTimerRef.current){clearTimeout(resetTimerRef.current);resetTimerRef.current=null;}},[]);useEffect(()=>{const handleKeyDown=e=>{const targetElement=e.target;if(targetElement.tagName===\"INPUT\"||targetElement.tagName===\"TEXTAREA\"||targetElement.isContentEditable){return;}if(e.repeat)return;if(e.key===\"Dead\")return;const key=normalizeKey(e.key);const tempPressedSet=new Set(pressedKeysRef.current);tempPressedSet.add(key);const currentModifiers=Array.from(tempPressedSet).filter(isModifierKey);const keysToCheck=Array.from(tempPressedSet).filter(k=>!isModifierKey(k));if(keysToCheck.length>0){const currentCombination=[...currentModifiers,...keysToCheck].sort().join(\"+\");const isDefinedShortcut=normalizedShortcuts.some(shortcut=>shortcut.normalizedKey===currentCombination);if(isDefinedShortcut){e.preventDefault();}}setPressedKeys(prev=>{const newSet=new Set(prev);newSet.add(key);return newSet;});const finalModifiers=Array.from(tempPressedSet).filter(isModifierKey);const finalKeysToCheck=Array.from(tempPressedSet).filter(k=>!isModifierKey(k));if(finalKeysToCheck.length>0){const finalCombination=[...finalModifiers,...finalKeysToCheck].sort().join(\"+\");const matchedShortcut=normalizedShortcuts.find(shortcut=>shortcut.normalizedKey===finalCombination);if(matchedShortcut){let targetUrl=matchedShortcut.link;const openInNewTab=matchedShortcut.newTab;if(targetUrl===\"Home\"){targetUrl=\"/\";}else if(!targetUrl.startsWith(\"/\")&&!targetUrl.match(/^([a-zA-Z]+:)?\\/\\//)){if(targetUrl.includes(\".\")){targetUrl=`https://${targetUrl}`;}else{targetUrl=`/${targetUrl}`;}}if(openInNewTab){window.open(targetUrl,\"_blank\",\"noopener,noreferrer\");}else{// window.location.href = targetUrl;\nsetCurrentLocation(targetUrl);}resetKeys();return;}}if(resetTimerRef.current){clearTimeout(resetTimerRef.current);}resetTimerRef.current=window.setTimeout(resetKeys,1500);};const handleKeyUp=e=>{if(e.key===\"Dead\")return;const key=normalizeKey(e.key);setPressedKeys(prev=>{const newSet=new Set(prev);newSet.delete(key);return newSet;});};const handleBlur=()=>{resetKeys();};window.addEventListener(\"keydown\",handleKeyDown);window.addEventListener(\"keyup\",handleKeyUp);window.addEventListener(\"blur\",handleBlur);return()=>{window.removeEventListener(\"keydown\",handleKeyDown);window.removeEventListener(\"keyup\",handleKeyUp);window.removeEventListener(\"blur\",handleBlur);if(resetTimerRef.current){clearTimeout(resetTimerRef.current);}};},[normalizedShortcuts,resetKeys,isModifierKey,normalizeKey]);return /*#__PURE__*/_jsx(\"div\",{ref:containerRef,tabIndex:-1,style:{outline:\"none\"}});}KeyboardShortcut.displayName=\"Shortcuts\";addPropertyControls(KeyboardShortcut,{shortcuts:{type:ControlType.Array,title:\"Shortcuts\",defaultValue:[{key:\"shift+a\",link:\"https://framer.university\",newTab:false}],control:{type:ControlType.Object,controls:{key:{type:ControlType.String,title:\"Key\",placeholder:\"shift+b...\",description:\"Use '+' for combinations.\"},link:{type:ControlType.Link,title:\"Link\"},newTab:{type:ControlType.Boolean,title:\"New Tab\",defaultValue:false,enabledTitle:\"Yes\",disabledTitle:\"No\"}}},description:\"More components at [Framer University](https://frameruni.link/cc).\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"KeyboardShortcut\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerDisableUnlink\":\"* @framerSupportedLayoutWidth any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Shortcuts_Prod.map"],"mappings":"sPAC+C,EAAO,MAAuB,CAA4B,GAAK,CAAC,WAAS,UAAQ,EAAU,EAAQ,EAAe,EAAkB,EAAud,MAAM,CAA5c,MAAM,QAAQ,CAAM,GAA4B,EAAO,EAAA,EAAuF,KAAwB,GAAM,CAAqB,IAAM,EAAyB,OAAO,QAAQ,CAAM,CAAA,EAA2D,QAAQ,EAAI,IAAkC,EAAK,EAAA,EAA0C,OAAQ,EAAK,EAAK,GAAG,EAAM,EAAK,EAAE,EAAS,EAAQ,EAAE,CAAE,CAA6B,CAAE,sBEGpqB,SAAwB,EAAiB,CAAC,aAAW,CAGxD,GAAK,CAAC,EAAgB,GAAoB,EAAmB,EAAO,CAAC,EAAY,GAAgBA,EAAS,IAAI,GAAG,EAAQ,EAAcC,EAAO,IAAI,EAAQ,EAAeA,EAAO,CAAW,EAAQ,EAAaA,EAAO,IAAI,EAAE,MAAc,CAAC,EAAe,QAAQ,CAAY,EAAE,CAAC,CAAW,CAAC,EAC9R,MAAc,CAAI,EAAa,SAAS,EAAa,QAAQ,MAAM,CAAG,EAAE,CAAC,CAAC,EAAE,IAAM,EAAaC,EAAY,IAAM,EAAI,EAAI,YAAY,EAAK,IAAM,QAAQ,IAAM,WAAW,IAAM,KAAW,MAAS,IAAM,UAAgB,OAAU,IAAM,OAAO,IAAM,SAAe,MAAS,IAAM,QAAc,QAAe,GAAM,CAAC,CAAC,EAAQ,EAAcA,EAAY,GAAY,CAAC,MAAM,OAAO,MAAM,OAAO,CAAC,CAAC,SAAS,CAAG,EAAI,CAAC,CAAC,EAAQ,EAAoBC,MAAoB,EAAU,IAAI,IAAW,CAAC,YAAY,EAAS,IAAI,cAAc,EAAS,IAAI,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAY,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAE,KAAK,EAAS,KAAK,OAAO,EAAS,MAAM,EAAE,CAAC,CAAC,OAAO,GAAG,EAAE,aAAa,EAAI,CAAC,EAAU,CAAY,CAAC,EAAQ,EAAUD,MAAgB,CAAC,EAAe,IAAI,GAAG,EAAE,AAA8D,EAAc,WAAlD,aAAa,EAAc,OAAO,EAAwB,KAAM,EAAE,CAAC,CAAC,EACjD,OADmD,MAAc,CAAC,IAAM,EAAc,GAAG,CAAC,IAAM,EAAc,EAAE,OAA2I,GAAjI,EAAc,UAAU,SAAS,EAAc,UAAU,YAAY,EAAc,mBAA8B,EAAE,QAAiB,EAAE,MAAM,OAAO,OAAO,IAAM,EAAI,EAAa,EAAE,GAAG,EAAQ,EAAe,IAAI,IAAI,EAAe,OAAO,EAAE,EAAe,IAAI,CAAG,EAAE,IAAM,EAAiB,MAAM,KAAK,CAAc,CAAC,CAAC,OAAO,CAAa,EAAQ,EAAY,MAAM,KAAK,CAAc,CAAC,CAAC,OAAO,GAAG,CAAC,EAAc,CAAC,CAAC,EAAE,GAAG,EAAY,OAAO,EAAE,CAAC,IAAM,EAAmB,CAAC,GAAG,EAAiB,GAAG,CAAW,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAA0B,EAAoB,KAAK,GAAU,EAAS,gBAAgB,CAAuC,GAAG,EAAE,eAAe,CAAG,CAAC,EAAe,GAAM,CAAC,IAAM,EAAO,IAAI,IAAI,CAAI,EAAkB,OAAhB,EAAO,IAAI,CAAG,EAAS,CAAO,CAAC,EAAE,IAAM,EAAe,MAAM,KAAK,CAAc,CAAC,CAAC,OAAO,CAAa,EAAQ,EAAiB,MAAM,KAAK,CAAc,CAAC,CAAC,OAAO,GAAG,CAAC,EAAc,CAAC,CAAC,EAAE,GAAG,EAAiB,OAAO,EAAE,CAAC,IAAM,EAAiB,CAAC,GAAG,EAAe,GAAG,CAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,EAAQ,EAAgB,EAAoB,KAAK,GAAU,EAAS,gBAAgB,CAAgB,EAAE,GAAG,EAAgB,CAAC,IAAI,EAAU,EAAgB,KAAW,EAAa,EAAgB,OAAU,IAAY,OAAQ,EAAU,IAAa,CAAC,EAAU,WAAW,GAAG,GAAG,CAAC,EAAU,MAAM,oBAAoB,IAAG,AAAmE,EAAhE,EAAU,SAAS,GAAG,EAAa,WAAW,IAA4B,IAAI,KAAiB,EAAc,EAAO,KAAK,EAAU,SAAS,qBAAqB,EACt1E,EAAmB,CAAS,EAAG,EAAU,EAAE,MAAO,CAAC,CAAI,EAAc,SAAS,aAAa,EAAc,OAAO,EAAG,EAAc,QAAQ,EAAO,WAAW,EAAU,IAAI,CAAE,EAAQ,EAAY,GAAG,CAAC,GAAG,EAAE,MAAM,OAAO,OAAO,IAAM,EAAI,EAAa,EAAE,GAAG,EAAE,EAAe,GAAM,CAAC,IAAM,EAAO,IAAI,IAAI,CAAI,EAAqB,OAAnB,EAAO,OAAO,CAAG,EAAS,CAAO,CAAC,CAAE,EAAQ,MAAe,CAAC,EAAU,CAAE,EAA2I,OAAzI,EAAO,iBAAiB,UAAU,CAAa,EAAE,EAAO,iBAAiB,QAAQ,CAAW,EAAE,EAAO,iBAAiB,OAAO,CAAU,MAAY,CAAC,EAAO,oBAAoB,UAAU,CAAa,EAAE,EAAO,oBAAoB,QAAQ,CAAW,EAAE,EAAO,oBAAoB,OAAO,CAAU,EAAK,EAAc,SAAS,aAAa,EAAc,OAAO,CAAG,CAAE,EAAE,CAAC,EAAoB,EAAU,EAAc,CAAY,CAAC,EAAsB,EAAK,MAAM,CAAC,IAAI,EAAa,SAAS,GAAG,MAAM,CAAC,QAAQ,MAAM,CAAC,CAAC,CAAE,qBATt0B,IAAoD,IAAiE,IAAgF,EASkoB,EAAiB,YAAY,YAAY,EAAoB,EAAiB,CAAC,UAAU,CAAC,KAAK,EAAY,MAAM,MAAM,YAAY,aAAa,CAAC,CAAC,IAAI,UAAU,KAAK,4BAA4B,OAAO,EAAK,CAAC,EAAE,QAAQ,CAAC,KAAK,EAAY,OAAO,SAAS,CAAC,IAAI,CAAC,KAAK,EAAY,OAAO,MAAM,MAAM,YAAY,aAAa,YAAY,2BAA2B,EAAE,KAAK,CAAC,KAAK,EAAY,KAAK,MAAM,MAAM,EAAE,OAAO,CAAC,KAAK,EAAY,QAAQ,MAAM,UAAU,aAAa,GAAM,aAAa,MAAM,cAAc,IAAI,CAAC,CAAC,EAAE,YAAY,oEAAoE,CAAC,CAAC"}