{"version":3,"file":"CopyText.KZj2fDp0.mjs","names":["useState","useRef"],"sources":["https:/framerusercontent.com/modules/cIJhhWpFrihvk3s2sjcj/GqriQe18G8YjNN5EupJ9/CopyText.js"],"sourcesContent":["// CopyText: a small text button that copies a value (an email address, a phone number) (Mardon template).\n// Clicking rolls the label from \"Copy\" to \"Copied\", then back after a pause. A polite live region\n// announces the result, so screen-reader users hear it too. Falls back to a hidden textarea where the\n// Clipboard API is blocked. Use a weight that native text on the page already loads (Geist 500).\n// Optional Tick: the page's drawn tick writes itself in just left of \"Copied\" (outside the button's box,\n// so nothing moves), and undraws when the label rolls back.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useReducedMotion}from\"framer-motion\";const LINE=1.2// em; the clip window and the roll distance\n;// The tick: a short stroke down into the turn, then the long stroke up (the same mark as TickChoice).\nconst TICK=\"M6.2 12.6l3.8 3.8L18 8.2\";const visuallyHidden={position:\"absolute\",width:1,height:1,padding:0,margin:-1,overflow:\"hidden\",clipPath:\"inset(50%)\",whiteSpace:\"nowrap\",border:0};const toNumber=(value,fallback)=>{const n=typeof value===\"number\"?value:parseFloat(String(value));return Number.isFinite(n)?n:fallback;};async function copy(value){try{if(navigator.clipboard&&window.isSecureContext){await navigator.clipboard.writeText(value);return true;}}catch{// fall through to the textarea route\n}try{const area=document.createElement(\"textarea\");area.value=value;area.setAttribute(\"readonly\",\"\");area.style.position=\"fixed\";area.style.opacity=\"0\";document.body.appendChild(area);area.select();const ok=document.execCommand(\"copy\");document.body.removeChild(area);return ok;}catch{return false;}}/**\n * @framerSupportedLayoutWidth auto\n * @framerSupportedLayoutHeight auto\n */export default function CopyText(props){const value=props.value??\"\";const label=props.label||\"Copy\";const doneLabel=props.doneLabel||\"Copied\";const reduceMotion=useReducedMotion();const duration=reduceMotion?0:toNumber(props.duration,.45);const[done,setDone]=useState(false);const[hover,setHover]=useState(false);const timer=useRef();useEffect(()=>()=>clearTimeout(timer.current),[]);const onClick=async()=>{if(!value)return;const ok=await copy(value);if(!ok)return;setDone(true);clearTimeout(timer.current);timer.current=setTimeout(()=>setDone(false),toNumber(props.resetAfter,2)*1e3);};const fontFamily=props.fontFamily?`\"${props.fontFamily}\", sans-serif`:undefined;const color=hover||done?props.hoverColor||props.color:props.color;const tick=props.tick===true||props.tick===\"true\";return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:onClick,onPointerEnter:()=>setHover(true),onPointerLeave:()=>setHover(false),\"aria-label\":props.ariaLabel||`${label} ${value}`,style:{position:\"relative\",appearance:\"none\",background:\"none\",border:0,padding:\"4px 0\",margin:0,cursor:\"pointer\",display:\"inline-flex\",fontFamily,fontSize:toNumber(props.fontSize,14),fontWeight:toNumber(props.fontWeight,500),lineHeight:`${LINE}em`,color,transition:`color ${reduceMotion?0:.3}s ease`,...props.style},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":\"true\",style:{display:\"inline-block\",height:`${LINE}em`,overflow:\"hidden\"},children:/*#__PURE__*/_jsxs(\"span\",{style:{display:\"flex\",flexDirection:\"column\",transform:done?`translateY(-${LINE}em)`:\"translateY(0em)\",transition:`transform ${duration}s cubic-bezier(0.76, 0, 0.24, 1)`},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",height:`${LINE}em`},children:label}),/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",height:`${LINE}em`},children:doneLabel})]})}),tick&&/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",\"aria-hidden\":\"true\",focusable:\"false\",style:{position:\"absolute\",right:\"100%\",top:\"50%\",width:\"1.15em\",height:\"1.15em\",marginTop:\"-0.575em\",marginRight:\"0.3em\",overflow:\"visible\",pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"path\",{d:TICK,pathLength:1,style:{fill:\"none\",stroke:props.tickColor||props.hoverColor||\"currentColor\",strokeWidth:2.6,strokeLinecap:\"round\",strokeLinejoin:\"round\",strokeDasharray:1,strokeDashoffset:done?0:1,transition:done?`stroke-dashoffset ${reduceMotion?0:.4}s cubic-bezier(0.65, 0, 0.35, 1) ${reduceMotion?0:duration*.6}s`:`stroke-dashoffset ${reduceMotion?0:.16}s cubic-bezier(0.2, 0, 0, 1)`}})}),/*#__PURE__*/_jsx(\"span\",{style:visuallyHidden,\"aria-live\":\"polite\",children:done?props.announcement||\"Copied to the clipboard\":\"\"})]});}CopyText.displayName=\"Copy Text\";addPropertyControls(CopyText,{value:{type:ControlType.String,title:\"Value\",defaultValue:\"hello@mardonlawyers.com.au\"},label:{type:ControlType.String,title:\"Label\",defaultValue:\"Copy\"},doneLabel:{type:ControlType.String,title:\"Done\",defaultValue:\"Copied\"},ariaLabel:{type:ControlType.String,title:\"Name\",defaultValue:\"Copy email address\"},announcement:{type:ControlType.String,title:\"Announce\",defaultValue:\"Email address copied\"},fontFamily:{type:ControlType.String,title:\"Font\",defaultValue:\"Geist\"},fontSize:{type:ControlType.Number,title:\"Size\",min:10,max:32,step:1,unit:\"px\",defaultValue:14},fontWeight:{type:ControlType.Number,title:\"Weight\",min:100,max:900,step:100,defaultValue:500},color:{type:ControlType.Color,title:\"Color\",defaultValue:\"#9A9891\"},hoverColor:{type:ControlType.Color,title:\"Hover\",defaultValue:\"#F4F2EC\"},duration:{type:ControlType.Number,title:\"Duration\",min:0,max:1.5,step:.05,unit:\"s\",defaultValue:.45},resetAfter:{type:ControlType.Number,title:\"Reset\",min:.5,max:10,step:.5,unit:\"s\",defaultValue:2},tick:{type:ControlType.Boolean,title:\"Tick\",defaultValue:false},tickColor:{type:ControlType.Color,title:\"Tick Color\",defaultValue:\"#F4F2EC\",hidden:p=>!p.tick}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CopyText\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CopyText.map"],"mappings":"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"}