{"version":3,"file":"Code3.CC7Ws4zH.mjs","names":["React.useRef","p"],"sources":["https:/framerusercontent.com/modules/Ts9fnkqGdX31yFJwSC9q/pARUFYaHcO3XdzdvBi3F/Code3.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useScroll}from\"framer-motion\";/**\n * SECURITY DATA COMPOSER V4 (ULTIMATE)\n *\n * - Added Non-Radial Layouts (Horizontal, Vertical, DNA, Infinity, Corners, Wave)\n * - Refactored Geometry Engine to support XY coordinates\n * - Moved Hit-Testing to Render Loop for pixel-perfect hover on any shape\n * - Retained all previous features (Intro, Scramble, Scale, Rotate)\n *\n * @framerIntrinsicWidth 800\n * @framerIntrinsicHeight 800\n */export default function SecurityComposer(props){const canvasRef=React.useRef(null);const{scrollY}=useScroll();// --- STATE ---\nconst hoverState=React.useRef({index:-1,startTime:0});const mouseRef=React.useRef({x:-9999,y:-9999})// Store mouse pos for render loop\n;const mountTimeRef=React.useRef(0);const randomSeedRef=React.useRef([]);// --- 1. SETUP ---\nReact.useEffect(()=>{mountTimeRef.current=Date.now();// Stable random seed\nrandomSeedRef.current=Array.from({length:300},(_,i)=>({i,sort:Math.random()})).sort((a,b)=>a.sort-b.sort).map(x=>x.i);// Fonts\nconst link=document.createElement(\"link\");link.href=\"https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&display=swap\";link.rel=\"stylesheet\";const style=document.createElement(\"style\");style.textContent=`@import url('https://cdn.jsdelivr.net/npm/geist@1.0.0/dist/fonts/geist-mono/style.css');`;document.head.appendChild(link);document.head.appendChild(style);return()=>{document.head.removeChild(link);document.head.removeChild(style);};},[]);// --- 2. GEOMETRY ENGINE ---\n// Returns { x, y, rotation } for a normalized progress (0->1)\nconst getTransformAtProgress=(progress,width,height,scale,baseRadius)=>{const cx=width/2;const cy=height/2;const p=progress%1;const angle=p*Math.PI*2;// Helper for Radial Shapes\nconst radial=radiusFn=>{const r=radiusFn(angle);return{x:cx+Math.cos(angle)*r,y:cy+Math.sin(angle)*r,rotation:angle+Math.PI/2};};switch(props.composition){// --- LINEAR STYLES ---\ncase\"Horizontal\":{// Top line (0-0.5), Bottom line (0.5-1)\nconst isTop=p<.5;const localP=isTop?p*2:(p-.5)*2;// Map 0..1 to -width/2..width/2 (with some padding)\nconst trackWidth=width*(scale/35)// Approximate scaling\n;const xPos=cx-trackWidth/2+localP*trackWidth;const yOffset=height*(props.outerRadius/200)// Spread\n;return{x:xPos,y:isTop?cy-yOffset:cy+yOffset,rotation:0};}case\"Vertical\":{// Left line (0-0.5), Right line (0.5-1)\nconst isLeft=p<.5;const localP=isLeft?p*2:(p-.5)*2;const trackHeight=height*(scale/35);const yPos=cy-trackHeight/2+localP*trackHeight;const xOffset=width*(props.outerRadius/200);return{x:isLeft?cx-xOffset:cx+xOffset,y:yPos,rotation:-Math.PI/2};}case\"Wave\":{const trackWidth=width*(scale/30);const xPos=cx-trackWidth/2+p*trackWidth;// Sine wave\nconst freq=4// How many waves\n;const amp=height*.2;const yPos=cy+Math.sin(p*Math.PI*2*freq)*amp;// Calculate tangent rotation\nconst slope=Math.cos(p*Math.PI*2*freq);return{x:xPos,y:yPos,rotation:Math.atan(slope)};}case\"DNA\":{// Double Helix\nconst strand=p<.5?0:1;const localP=p<.5?p*2:(p-.5)*2;const trackWidth=width*(scale/35);const xPos=cx-trackWidth/2+localP*trackWidth;const freq=3;const amp=height*.15;// Offset second strand by PI\nconst phase=strand===0?0:Math.PI;const yPos=cy+Math.sin(localP*Math.PI*2*freq+phase)*amp;return{x:xPos,y:yPos,rotation:0};}case\"Corners\":{// 4 Quadrants\nconst quadrant=Math.floor(p*4)// 0, 1, 2, 3\n;const localP=p*4%1;const padX=width*.1;const padY=height*.1;// Define corners: TL, TR, BR, BL\n// We'll create small arcs in corners\nlet cornerCx,cornerCy,startAng;const r=baseRadius*.5;if(quadrant===0){cornerCx=padX;cornerCy=padY;startAng=Math.PI;}else if(quadrant===1){cornerCx=width-padX;cornerCy=padY;startAng=-Math.PI/2;}else if(quadrant===2){cornerCx=width-padX;cornerCy=height-padY;startAng=0;}else{cornerCx=padX;cornerCy=height-padY;startAng=Math.PI/2;}// BL\n// 90 degree arc (PI/2) per corner\nconst currentAng=startAng+localP*Math.PI/2;return{x:cornerCx+Math.cos(currentAng)*r,y:cornerCy+Math.sin(currentAng)*r,rotation:currentAng+Math.PI/2};}case\"Infinity\":{// Lemniscate of Bernoulli\n// t goes from 0 to 2PI\nconst t=angle;const scaleInf=baseRadius*1.4;const denom=1+Math.sin(t)*Math.sin(t);const x=scaleInf*Math.cos(t)/denom;const y=scaleInf*Math.sin(t)*Math.cos(t)/denom;return{x:cx+x,y:cy+y,rotation:0};}// --- RADIAL STYLES (Originals) ---\ncase\"Square\":return radial(a=>{const sqA=(a+Math.PI/4)%(Math.PI*2);return baseRadius/Math.max(Math.abs(Math.cos(sqA)),Math.abs(Math.sin(sqA)));});case\"Triangle\":return radial(a=>{const off=a+Math.PI/6+Math.PI// Point up\n;const r=baseRadius*1.2;return r*(Math.cos(Math.PI/3)/Math.cos(off%(2*Math.PI/3)-Math.PI/3));});case\"Hexagon\":return radial(a=>{const hexA=a+Math.PI/6;return baseRadius*(.9+.1/Math.cos(hexA%(Math.PI/3)-Math.PI/6));});case\"Octagon\":return radial(a=>{const octA=a+Math.PI/8;return baseRadius*(.95+.05/Math.cos(octA%(Math.PI/4)-Math.PI/8));});case\"Star\":return radial(a=>{const spikes=5;const step=Math.PI/spikes;const starA=a+Math.PI/2;const spikeIndex=Math.floor(starA/step);const localRatio=starA%step/step;return spikeIndex%2===0?baseRadius*.5+baseRadius*.5*localRatio:baseRadius-baseRadius*.5*localRatio;});case\"Cross\":return radial(a=>baseRadius*(.6+.4*Math.abs(Math.sin(a*2))));case\"Vortex\":return radial(a=>{const norm=(a<0?a+Math.PI*2:a)/(Math.PI*2);return baseRadius*(.3+norm*.7);});case\"Flower\":return radial(a=>baseRadius+baseRadius*.1*Math.sin(a*8));case\"Circle\":default:return radial(()=>baseRadius);}};// --- 3. RENDER LOOP ---\nReact.useEffect(()=>{const canvas=canvasRef.current;const ctx=canvas.getContext(\"2d\");let animationFrameId;const render=()=>{// DPI\nconst dpr=window.devicePixelRatio||1;const rect=canvas.getBoundingClientRect();if(canvas.width!==rect.width*dpr||canvas.height!==rect.height*dpr){canvas.width=rect.width*dpr;canvas.height=rect.height*dpr;}const cx=canvas.width/2;const cy=canvas.height/2;const now=Date.now();// Dynamic Scaling for different shapes\nlet shapeScaleMod=1;if(props.composition===\"Horizontal\"||props.composition===\"Vertical\")shapeScaleMod=1.2;if(props.composition===\"Infinity\")shapeScaleMod=.8;const baseRadius=Math.min(canvas.width,canvas.height)/2*(props.outerRadius/100)*shapeScaleMod;// Scroll Logic\nconst currentScroll=scrollY.get();// Linear scroll offset (0 to 1 based on scroll speed)\nconst scrollOffset=currentScroll*props.scrollSpeed*.001%1;// Global Rotation (Manual)\nconst globalRotRad=props.compositionRotation*Math.PI/180;// Clear\nctx.setTransform(1,0,0,1,0,0);ctx.fillStyle=props.bgColor;ctx.fillRect(0,0,canvas.width,canvas.height);// Text Styles\nconst fSize=props.fontOuter*dpr;ctx.font=`${props.fontWeight} ${fSize}px ${getFontStack(props.fontFamily)}`;ctx.textBaseline=\"middle\";ctx.textAlign=\"center\"// Center text on the point\n;// --- HIT TEST VARIABLES ---\nlet closestDist=Infinity;let closestIndex=-1;const hitThreshold=30*dpr// 30px tolerance\n;// --- DRAW LOOP ---\nconst count=props.spokeCount;const charPool=\":.:.:.:.\";for(let i=0;i<count;i++){// 1. Calculate Progress (0 to 1)\nlet baseProgress=i/count;// 2. Gap Logic (Based on Progress, not Angle)\nlet isGap=false;if(props.gapSize>0){const totalSegments=props.gapRepeats;const segmentSize=1/totalSegments;const gapSizeNormalized=props.gapSize/360/totalSegments// Roughly map degrees to progress\n;const localP=baseProgress%segmentSize;const distToCenter=Math.abs(localP-segmentSize/2);if(distToCenter<gapSizeNormalized)isGap=true;}if(isGap)continue;// 3. Apply Scroll & Wrap\nlet activeProgress=baseProgress+scrollOffset;// Normalize to 0-1\nif(activeProgress<0)activeProgress+=1;if(activeProgress>1)activeProgress%=1;// 4. Get Position\n// We pass the scale (props.outerRadius) to help linear layouts calc width/height\nconst transform=getTransformAtProgress(activeProgress,canvas.width,canvas.height,props.outerRadius,baseRadius);// 5. Apply Global Rotation (Manual prop) around Center\n// Rotate point (x,y) around (cx,cy)\nconst relX=transform.x-cx;const relY=transform.y-cy;const rotX=relX*Math.cos(globalRotRad)-relY*Math.sin(globalRotRad);const rotY=relX*Math.sin(globalRotRad)+relY*Math.cos(globalRotRad);const finalX=cx+rotX;const finalY=cy+rotY;const finalRot=transform.rotation+globalRotRad;// 6. Hit Testing (Inside Render Loop!)\n// Mouse is relative to canvas (scaled by DPR)\nconst mx=mouseRef.current.x*dpr;const my=mouseRef.current.y*dpr;const dist=Math.sqrt((mx-finalX)**2+(my-finalY)**2);if(dist<closestDist){closestDist=dist;closestIndex=i;}// 7. Text Logic (Same as before)\nconst isHovered=i===hoverState.current.index;let rawWord=OUTER_JARGON[i%OUTER_JARGON.length];if(props.textCasing===\"Uppercase\")rawWord=rawWord.toUpperCase();if(props.textCasing===\"Lowercase\")rawWord=rawWord.toLowerCase();let displayText=rawWord;// Intro Logic\nlet staggerDelay=0;if(props.introAnimation===\"Random\"){staggerDelay=(randomSeedRef.current[i%randomSeedRef.current.length]||i)*props.introStagger;}else if(props.introAnimation===\"Split\"){const topIndex=Math.floor(count*.75);let d=Math.abs(i-topIndex);if(d>count/2)d=count-d;staggerDelay=d*props.introStagger;}else if(props.introAnimation===\"Converge\"){staggerDelay=Math.abs(i-count/2)*props.introStagger;}else if(props.introAnimation===\"Spiral\"){staggerDelay=i*props.introStagger;}const wordStartTime=mountTimeRef.current+props.introDelay*1e3+staggerDelay;const introElapsed=now-wordStartTime;if(introElapsed<0)continue;const totalRevealTime=rawWord.length*props.introSpeed;if(introElapsed<totalRevealTime){const charsToShow=Math.floor(introElapsed/props.introSpeed);let scrambled=\"\";for(let c=0;c<rawWord.length;c++){if(c<charsToShow)scrambled+=rawWord[c];else scrambled+=charPool[Math.floor(Math.random()*charPool.length)];}displayText=scrambled;ctx.fillStyle=props.textColor;}else{if(isHovered){ctx.fillStyle=props.hoverColor;const hoverElapsed=now-hoverState.current.startTime;const steps=Math.floor(hoverElapsed/props.scrambleSpeed);const revealedCount=Math.min(steps,rawWord.length);if(revealedCount<rawWord.length){let scrambled=\"\";for(let c=0;c<rawWord.length;c++){if(c<revealedCount)scrambled+=rawWord[c];else scrambled+=charPool[Math.floor(Math.random()*charPool.length)];}displayText=scrambled;}}else{ctx.fillStyle=props.textColor;}}// 8. Draw\nctx.save();ctx.translate(finalX,finalY);ctx.rotate(finalRot);ctx.fillText(displayText,0,0);ctx.restore();}// Update Hover State based on hit test\nif(closestDist<hitThreshold){if(hoverState.current.index!==closestIndex){hoverState.current.index=closestIndex;hoverState.current.startTime=Date.now();}}else{if(hoverState.current.index!==-1){hoverState.current.index=-1;}}animationFrameId=requestAnimationFrame(render);};render();return()=>cancelAnimationFrame(animationFrameId);},[props,scrollY]);// --- 3. MOUSE HANDLER (Simple) ---\nconst handleMouseMove=e=>{const rect=canvasRef.current.getBoundingClientRect();// Update Ref, let Render Loop handle the math\nmouseRef.current={x:e.clientX-rect.left,y:e.clientY-rect.top};};const handleMouseLeave=()=>{mouseRef.current={x:-9999,y:-9999};};return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,style:{width:\"100%\",height:\"100%\",display:\"block\"},onMouseMove:handleMouseMove,onMouseLeave:handleMouseLeave})});}function getFontStack(selection){switch(selection){case\"Instrument Serif\":return'\"Instrument Serif\", serif';case\"Geist Mono\":return'\"Geist Mono\", \"Space Mono\", monospace';case\"Courier\":return'\"Courier New\", monospace';case\"Inter\":return'\"Inter\", sans-serif';default:return'\"Courier New\", monospace';}}const OUTER_JARGON=[\"Encryption\",\"GhostRoute\",\"Hijack\",\"Mem_Leak\",\"DeepPacket\",\"Proxy\",\"Bios_Pw\",\"Sprayer\",\"Packet\",\"Kernel_Panic\",\"Worm\",\"Ssl_Tls\",\"Side_Channel\",\"Hash_Crack\",\"Uplink\",\"Zero_Day\",\"Beacon\",\"Tor_Exit\",\"Overflow\",\"Keylogger\",\"Arp_Spoof\",\"Bootkit\",\"Matrix\",\"Denial\",\"Payload\",\"Ring0\",\"Throttle\",\"C2_Beacon\",\"Osint\",\"Session\",\"Dma_Attack\",\"Phish_Kit\",\"Ransom\",\"TraceLog\",\"IP_Spoof\",\"Quantum\",\"Firmware\",\"Ping\",\"VPN_Tunnel\",\"Hardlink\",\"Implant\",\"Hex_Dump\",\"BGP_Hijack\",\"Shaper\",\"Trojan\",\"Auth_Bypass\",\"Vision\",\"Malware\",\"Nonce\",\"Drive_By\",\"Pinning\",\"Rotation\",\"SQL_Inject\",\"Signal\",\"Rootkit\",\"Burner\",\"Hardware\",\"Backdoor\",\"Xss_Vector\",\"Poison\",\"Trace\",\"Escape\",\"Polymorph\",\"Token\",\"GhostDNS\",\"Traffic\",\"MITM\",\"Buffer\",\"Signature\",\"Brute\",\"SupplyChain\",\"GPS_Spoof\",\"Seg_Fault\",\"Firewall\",\"Keychain\",\"Flood\",\"Script\",\"Downgrade\",\"Uefi\",\"Tpm_Chip\",\"Spyware\",\"Spam\",\"Privilege\",\"Escal8\",\"Ciphertext\",\"Portscan\"];addPropertyControls(SecurityComposer,{// 1. COMPOSITION\ncomposition:{type:ControlType.Enum,title:\"Layout\",defaultValue:\"Circle\",options:[\"Circle\",\"Triangle\",\"Square\",\"Pentagon\",\"Hexagon\",\"Octagon\",\"Star\",\"Cross\",\"Vortex\",\"Flower\",\"Horizontal\",\"Vertical\",\"Wave\",\"DNA\",\"Infinity\",\"Corners\"]},compositionRotation:{type:ControlType.Number,title:\"Rotate\",min:0,max:360,defaultValue:0,unit:\"\\xb0\",step:5},gapRepeats:{type:ControlType.Number,title:\"Gap Pattern\",min:1,max:20,defaultValue:1},gapSize:{type:ControlType.Number,title:\"Gap Size\",min:0,max:60,defaultValue:10,unit:\"\\xb0\"},// 2. ANIMATION\nintroAnimation:{type:ControlType.Enum,title:\"Intro Type\",defaultValue:\"Spiral\",options:[\"Spiral\",\"Random\",\"Split\",\"Converge\",\"Simultaneous\"]},introDelay:{type:ControlType.Number,title:\"Delay\",min:0,max:5,defaultValue:.5,step:.1},introSpeed:{type:ControlType.Number,title:\"Speed\",min:10,max:300,defaultValue:50},introStagger:{type:ControlType.Number,title:\"Stagger\",min:0,max:100,defaultValue:10,hidden:props=>props.introAnimation===\"Simultaneous\"},// 3. GEOMETRY\nouterRadius:{type:ControlType.Number,title:\"Scale\",min:10,max:150,defaultValue:35,unit:\"%\"},spokeCount:{type:ControlType.Number,title:\"Density\",min:20,max:300,defaultValue:100},// 4. STYLE\nfontFamily:{type:ControlType.Enum,title:\"Font\",defaultValue:\"Geist Mono\",options:[\"Geist Mono\",\"Instrument Serif\",\"Courier\",\"Inter\"]},fontWeight:{type:ControlType.Enum,title:\"Weight\",defaultValue:\"bold\",options:[\"normal\",\"bold\",\"100\",\"200\",\"300\",\"400\",\"500\",\"600\",\"700\",\"800\",\"900\"]},fontOuter:{type:ControlType.Number,title:\"Font Size\",min:8,max:32,defaultValue:12},textCasing:{type:ControlType.Enum,title:\"Casing\",defaultValue:\"Uppercase\",options:[\"Uppercase\",\"Lowercase\",\"Original\"]},scrambleSpeed:{type:ControlType.Number,title:\"Hover Spd\",min:10,max:200,defaultValue:30},scrollSpeed:{type:ControlType.Number,title:\"Scroll Spd\",min:-5,max:5,step:.1,defaultValue:1},// 5. COLORS\nbgColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#e6e6e6\"},textColor:{type:ControlType.Color,title:\"Text Color\",defaultValue:\"#1a1a1a\"},hoverColor:{type:ControlType.Color,title:\"Hover Color\",defaultValue:\"#ff0055\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"SecurityComposer\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicHeight\":\"800\",\"framerIntrinsicWidth\":\"800\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Code3.map"],"mappings":"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"}