{"version":3,"file":"Examples_1.BEFlYCy-.mjs","names":["useState","useState"],"sources":["https:/framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js","https:/framer.com/m/framer/store.js@^1.0.0","https:/framerusercontent.com/modules/28rXvpPsrum7FH6cMELS/1jCAazZw1EGHjrG5Nu5D/Utils.js","https:/framer.com/m/framer/utils.js@^0.9.0","https:/framerusercontent.com/modules/W3mPS94gC0pIfj3gDm9n/UmCmziUDiYPFvcpHUB9Z/Examples_1.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","/*\n * createStore (framer/store@1.0.1)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/vj7bFUjvEQFgEzNBkdoG/vf3CKm378wlVcBk7IhSU/createStore.js\"\n","export const centerContent = {\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const autoSizingText = {\n    width: \"max-content\",\n    wordBreak: \"break-word\",\n    overflowWrap: \"break-word\",\n    overflow: \"hidden\",\n    whiteSpace: \"pre-wrap\",\n    flexShrink: 0\n};\nexport const defaultContainerStyles = {\n    ...centerContent,\n    overflow: \"hidden\"\n};\nexport const containerStyles = defaultContainerStyles;\nexport const randomColor = ()=>\"#\" + Math.floor(Math.random() * 16777215).toString(16)\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"centerContent\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"autoSizingText\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultContainerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomColor\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./Utils.map","/*\n * Utils (framer/utils@0.9.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/28rXvpPsrum7FH6cMELS/1jCAazZw1EGHjrG5Nu5D/Utils.js\"\n","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{forwardRef,useEffect}from\"react\";import{createStore}from\"https://framer.com/m/framer/store.js@^1.0.0\";import{randomColor}from\"https://framer.com/m/framer/utils.js@^0.9.0\";// Learn more: https://www.framer.com/developers/overrides/\nconst useStore=createStore({background:\"#0099FF\"});let nativeCursorMountCount=0;let nativeCursorObserver=null;const nativeCursorOriginalInline=new Map;const interactiveCursorSelector='a, button, [role=\"button\"], input[type=\"button\"], input[type=\"submit\"], input[type=\"reset\"], summary, label';function isCursorTarget(element){return element instanceof HTMLElement||element instanceof SVGElement;}function isInteractiveCursorElement(element){try{return element.matches(interactiveCursorSelector);}catch{return false;}}function applyNativeCursorToElement(element){if(!nativeCursorOriginalInline.has(element)){const existingCursor=element.style.getPropertyValue(\"cursor\");nativeCursorOriginalInline.set(element,{hadCursor:existingCursor!==\"\",value:existingCursor,priority:element.style.getPropertyPriority(\"cursor\")});}const targetCursor=isInteractiveCursorElement(element)?\"pointer\":\"default\";const currentCursor=element.style.getPropertyValue(\"cursor\");const currentPriority=element.style.getPropertyPriority(\"cursor\");if(currentCursor!==targetCursor||currentPriority!==\"important\"){element.style.setProperty(\"cursor\",targetCursor,\"important\");}}function applyNativeCursorToNode(node){if(!(node instanceof Element))return;if(isCursorTarget(node)){applyNativeCursorToElement(node);}node.querySelectorAll(\"*\").forEach(child=>{if(isCursorTarget(child)){applyNativeCursorToElement(child);}});}function applyNativeCursorToDocument(){if(typeof document===\"undefined\")return;if(isCursorTarget(document.documentElement)){applyNativeCursorToElement(document.documentElement);}if(document.body&&isCursorTarget(document.body)){applyNativeCursorToElement(document.body);document.body.querySelectorAll(\"*\").forEach(element=>{if(isCursorTarget(element)){applyNativeCursorToElement(element);}});}}export function withRotate(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,animate:{rotate:90},transition:{duration:2}});});}export function withHover(Component){return /*#__PURE__*/forwardRef((props,ref)=>{return /*#__PURE__*/_jsx(Component,{ref:ref,...props,whileHover:{scale:1.05}});});}export function withRandomColor(Component){return /*#__PURE__*/forwardRef((props,ref)=>{const[store,setStore]=useStore();return /*#__PURE__*/_jsx(Component,{ref:ref,...props,animate:{background:store.background},onClick:()=>{setStore({background:randomColor()});}});});}export function withNativeCursor(Component){return /*#__PURE__*/forwardRef((props,ref)=>{useEffect(()=>{if(typeof window===\"undefined\"||typeof document===\"undefined\")return;nativeCursorMountCount+=1;applyNativeCursorToDocument();if(!nativeCursorObserver){nativeCursorObserver=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.type===\"attributes\"){applyNativeCursorToNode(mutation.target);}if(mutation.type===\"childList\"){mutation.addedNodes.forEach(addedNode=>{applyNativeCursorToNode(addedNode);});}});});if(document.body){nativeCursorObserver.observe(document.body,{subtree:true,childList:true,attributes:true,attributeFilter:[\"style\",\"class\",\"role\",\"href\",\"type\",\"for\"]});}}return()=>{nativeCursorMountCount=Math.max(0,nativeCursorMountCount-1);if(nativeCursorMountCount===0){if(nativeCursorObserver){nativeCursorObserver.disconnect();nativeCursorObserver=null;}nativeCursorOriginalInline.forEach((original,element)=>{if(original.hadCursor){element.style.setProperty(\"cursor\",original.value,original.priority);}else{element.style.removeProperty(\"cursor\");}});nativeCursorOriginalInline.clear();}};},[]);return /*#__PURE__*/_jsx(Component,{ref:ref,...props,style:{...props.style,cursor:\"default\"}});});}import{useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";export function ReadMoreText(props){const{text,previewLength,fontSize,lineHeight}=props;const[expanded,setExpanded]=useState(false);const toggleReadMore=()=>setExpanded(!expanded);const shouldTruncate=text.length>previewLength;const displayText=expanded||!shouldTruncate?text:text.slice(0,previewLength)+\"...\";return /*#__PURE__*/_jsxs(\"div\",{style:{fontSize,lineHeight,color:\"#333\"},children:[/*#__PURE__*/_jsx(\"p\",{style:{margin:0},children:displayText}),shouldTruncate&&/*#__PURE__*/_jsx(\"button\",{onClick:toggleReadMore,style:{marginTop:8,background:\"none\",border:\"none\",color:\"#999\",padding:0,fontSize:fontSize*.95,display:\"block\",marginLeft:\"auto\",marginRight:\"auto\",textAlign:\"center\",transition:\"text-decoration 0.2s ease\"},onMouseEnter:e=>e.currentTarget.style.textDecoration=\"underline\",onMouseLeave:e=>e.currentTarget.style.textDecoration=\"none\",children:expanded?\"Read Less\":\"Read More\"})]});}addPropertyControls(ReadMoreText,{text:{title:\"Text\",type:ControlType.String,defaultValue:\"This is a long review or description. It goes on and on and might be too much to show all at once, so we add a way to read more and collapse it back down.\"},previewLength:{title:\"Preview Length\",type:ControlType.Number,defaultValue:120,min:10,max:1e3},fontSize:{title:\"Font Size\",type:ControlType.Number,defaultValue:16,min:10,max:40},lineHeight:{title:\"Line Height\",type:ControlType.Number,defaultValue:1.5,min:1,max:3}});\nexport const __FramerMetadata__ = {\"exports\":{\"withNativeCursor\":{\"type\":\"reactHoc\",\"name\":\"withNativeCursor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ReadMoreText\":{\"type\":\"reactComponent\",\"name\":\"ReadMoreText\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRotate\":{\"type\":\"reactHoc\",\"name\":\"withRotate\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withHover\":{\"type\":\"reactHoc\",\"name\":\"withHover\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withRandomColor\":{\"type\":\"reactHoc\",\"name\":\"withRandomColor\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Examples_1.map"],"mappings":"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"}