{"version":3,"file":"CopyToClipboardCustomView.DOC3OQIH.mjs","names":["useState","useRef","useCallback"],"sources":["https:/framerusercontent.com/modules/TV14eu0ozHH5KNrhL5Jl/X5dn3xfXgy5eQDMyJRjQ/CopyToClipboardCustomView.js"],"sourcesContent":["import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType}from\"framer\";import{motion,AnimatePresence}from\"framer-motion\";import{useRef,useEffect,useLayoutEffect,useState,useCallback,startTransition}from\"react\";function getTooltipWrapperStyle(position,offset){const base={position:\"absolute\",pointerEvents:\"none\",zIndex:10,display:\"flex\",justifyContent:\"center\"};const isTop=position.startsWith(\"top\");const align=position.split(\"-\")[1];if(isTop){base.bottom=`calc(100% + ${offset}px)`;}else{base.top=`calc(100% + ${offset}px)`;}if(align===\"left\"){base.left=0;}else if(align===\"center\"){base.left=0;base.right=0;}else{base.right=0;}return base;}const tooltipTransition={duration:.15,ease:[.25,.46,.45,.94]};function getTooltipMotion(position){const isTop=position.startsWith(\"top\");const y=isTop?0:0;return{initial:{opacity:0,y},animate:{opacity:1,y:0},exit:{opacity:0,y},transition:tooltipTransition};}/**\n * @framerDisableUnlink\n * @framerIntrinsicWidth 200\n * @framerIntrinsicHeight 48\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function CopyToClipboard(props){const{value,children,hoverTooltip,copiedTooltip,tooltipPosition,tooltipOffset,style}=props;const[isHovered,setIsHovered]=useState(false);const[isCopied,setIsCopied]=useState(false);const copyTimerRef=useRef(0);const contentRef=useRef(null);useEffect(()=>{return()=>{if(copyTimerRef.current)clearTimeout(copyTimerRef.current);};},[]);useLayoutEffect(()=>{const node=contentRef.current;if(!node)return;node.style.opacity=\"1\";node.style.visibility=\"visible\";const descendants=node.querySelectorAll(\"*\");descendants.forEach(el=>{if(el.style.opacity===\"0\")el.style.opacity=\"1\";});});const handleClick=useCallback(()=>{navigator.clipboard.writeText(value);startTransition(()=>{setIsCopied(true);});if(copyTimerRef.current)clearTimeout(copyTimerRef.current);copyTimerRef.current=window.setTimeout(()=>{startTransition(()=>{setIsCopied(false);});},1500);},[value]);const handleMouseEnter=useCallback(()=>setIsHovered(true),[]);const handleMouseLeave=useCallback(()=>setIsHovered(false),[]);const tooltipWrapperStyle=getTooltipWrapperStyle(tooltipPosition,tooltipOffset);const motionProps=getTooltipMotion(tooltipPosition);const showHoverTooltip=isHovered&&!isCopied&&hoverTooltip.length>0;const showCopiedTooltip=isCopied&&copiedTooltip.length>0;return /*#__PURE__*/_jsxs(\"div\",{style:{...style,position:\"relative\",cursor:\"pointer\"},onClick:handleClick,onMouseEnter:handleMouseEnter,onMouseLeave:handleMouseLeave,children:[/*#__PURE__*/_jsx(\"div\",{ref:contentRef,style:{position:\"relative\",zIndex:1,opacity:1},children:children}),/*#__PURE__*/_jsxs(AnimatePresence,{children:[showHoverTooltip&&/*#__PURE__*/_jsx(\"div\",{style:tooltipWrapperStyle,children:/*#__PURE__*/_jsx(motion.div,{...motionProps,children:hoverTooltip.map((child,i)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"contents\"},children:child},i))})},\"hover-wrapper\"),showCopiedTooltip&&/*#__PURE__*/_jsx(\"div\",{style:tooltipWrapperStyle,children:/*#__PURE__*/_jsx(motion.div,{...motionProps,children:copiedTooltip.map((child,i)=>/*#__PURE__*/_jsx(\"div\",{style:{display:\"contents\"},children:child},i))})},\"copied-wrapper\")]})]});}CopyToClipboard.defaultProps={value:\"Copy me\",children:[],hoverTooltip:[],copiedTooltip:[],tooltipPosition:\"top-center\",tooltipOffset:-4};addPropertyControls(CopyToClipboard,{value:{type:ControlType.String,title:\"Value\",defaultValue:\"Copy me\",description:\"Text copied to clipboard on click\"},children:{type:ControlType.ComponentInstance,title:\"Content\"},hoverTooltip:{type:ControlType.ComponentInstance,title:\"Hover Tooltip\"},copiedTooltip:{type:ControlType.ComponentInstance,title:\"Copied Tooltip\"},tooltipPosition:{type:ControlType.Enum,title:\"Tooltip Position\",options:[\"top-left\",\"top-center\",\"top-right\",\"bottom-left\",\"bottom-center\",\"bottom-right\"],optionTitles:[\"Top Left\",\"Top Center\",\"Top Right\",\"Bottom Left\",\"Bottom Center\",\"Bottom Right\"],defaultValue:\"top-center\"},tooltipOffset:{type:ControlType.Number,title:\"Tooltip Offset\",defaultValue:-4,min:-48,max:48,step:1,unit:\"px\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CopyToClipboard\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerDisableUnlink\":\"* @framerIntrinsicWidth 200\",\"framerIntrinsicHeight\":\"48\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CopyToClipboardCustomView.map"],"mappings":"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"}