{"version":3,"file":"CurvedLoopText_Prod.BOuinEEr.mjs","names":["u","l","c","h","f","g","m","p","d","e","t","n","i","o","v","x","e.useRef","e.useCallback","e.useMemo","r","_","b","w","U","E","a","s","g","b","v","Heatmap","c","useRef","useState","useMemo","x","_Fragment"],"sources":["https:/cdn.jsdelivr.net/gh/framer-university/components/npm-bundles/heatmap.js","https:/framerusercontent.com/modules/XeBIH2DEqjo3xw7QcZLZ/1RGPtMPXTO1agaNem3tq/Heatmap_prod.js","https:/framerusercontent.com/modules/XjyaAMlQm1XKl2jNPVh7/1TBOywuUilFcHkd21E9P/CurvedLoopText_Prod.js"],"sourcesContent":["import*as e from\"react\";import{forwardRef as t,useState as n,useRef as i,useEffect as o,memo as r,useLayoutEffect as a,useMemo as s}from\"react\";import{jsx as l}from\"react/jsx-runtime\";class c{parentElement;canvasElement;gl;program=null;uniformLocations={};fragmentShader;rafId=null;lastRenderTime=0;currentFrame=0;speed=0;providedUniforms;hasBeenDisposed=!1;resolutionChanged=!0;textures=new Map;minPixelRatio;maxPixelCount;isSafari=function(){const e=navigator.userAgent.toLowerCase();return e.includes(\"safari\")&&!e.includes(\"chrome\")&&!e.includes(\"android\")}();uniformCache={};textureUnitMap=new Map;constructor(e,t,n,i,o=0,r=0,a=2,s=8294400){if(!(e instanceof HTMLElement))throw new Error(\"Paper Shaders: parent element must be an HTMLElement\");if(this.parentElement=e,!document.querySelector(\"style[data-paper-shader]\")){const e=document.createElement(\"style\");e.innerHTML=h,e.setAttribute(\"data-paper-shader\",\"\"),document.head.prepend(e)}const l=document.createElement(\"canvas\");this.canvasElement=l,this.parentElement.prepend(l),this.fragmentShader=t,this.providedUniforms=n,this.currentFrame=r,this.minPixelRatio=a,this.maxPixelCount=s;const c=l.getContext(\"webgl2\",i);if(!c)throw new Error(\"Paper Shaders: WebGL is not supported in this browser\");this.gl=c,this.initProgram(),this.setupPositionAttribute(),this.setupUniforms(),this.setUniformValues(this.providedUniforms),this.setupResizeObserver(),this.setSpeed(o),this.parentElement.setAttribute(\"data-paper-shader\",\"\"),this.parentElement.paperShaderMount=this}initProgram=()=>{const e=function(e,t,n){const i=e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT),o=i?i.precision:null;o&&o<23&&(t=t.replace(/precision\\s+(lowp|mediump)\\s+float;/g,\"precision highp float;\"),n=n.replace(/precision\\s+(lowp|mediump)\\s+float/g,\"precision highp float\").replace(/\\b(uniform|varying|attribute)\\s+(lowp|mediump)\\s+(\\w+)/g,\"$1 highp $3\"));const r=u(e,e.VERTEX_SHADER,t),a=u(e,e.FRAGMENT_SHADER,n);if(!r||!a)return null;const s=e.createProgram();if(!s)return null;if(e.attachShader(s,r),e.attachShader(s,a),e.linkProgram(s),!e.getProgramParameter(s,e.LINK_STATUS))return e.deleteProgram(s),e.deleteShader(r),e.deleteShader(a),null;return e.detachShader(s,r),e.detachShader(s,a),e.deleteShader(r),e.deleteShader(a),s}(this.gl,\"#version 300 es\\nprecision mediump float;\\n\\nlayout(location = 0) in vec4 a_position;\\n\\nuniform vec2 u_resolution;\\nuniform float u_pixelRatio;\\nuniform float u_imageAspectRatio;\\n\\nuniform float u_originX;\\nuniform float u_originY;\\nuniform float u_worldWidth;\\nuniform float u_worldHeight;\\nuniform float u_fit;\\n\\nuniform float u_scale;\\nuniform float u_rotation;\\nuniform float u_offsetX;\\nuniform float u_offsetY;\\n\\nuniform float u_pxSize;\\n\\nout vec2 v_objectUV;\\nout vec2 v_objectBoxSize;\\nout vec2 v_objectHelperBox;\\n\\nout vec2 v_responsiveUV;\\nout vec2 v_responsiveBoxSize;\\nout vec2 v_responsiveHelperBox;\\nout vec2 v_responsiveBoxGivenSize;\\n\\nout vec2 v_patternUV;\\nout vec2 v_patternBoxSize;\\nout vec2 v_patternHelperBox;\\n\\nout vec2 v_imageUV;\\n\\n// #define ADD_HELPERS\\n\\nvec3 getBoxSize(float boxRatio, vec2 givenBoxSize) {\\n  vec2 box = vec2(0.);\\n  // fit = none\\n  box.x = boxRatio * min(givenBoxSize.x / boxRatio, givenBoxSize.y);\\n  float noFitBoxWidth = box.x;\\n  if (u_fit == 1.) { // fit = contain\\n    box.x = boxRatio * min(u_resolution.x / boxRatio, u_resolution.y);\\n  } else if (u_fit == 2.) { // fit = cover\\n    box.x = boxRatio * max(u_resolution.x / boxRatio, u_resolution.y);\\n  }\\n  box.y = box.x / boxRatio;\\n  return vec3(box, noFitBoxWidth);\\n}\\n\\nvoid main() {\\n  gl_Position = a_position;\\n\\n  vec2 uv = gl_Position.xy * .5;\\n  vec2 boxOrigin = vec2(.5 - u_originX, u_originY - .5);\\n  vec2 givenBoxSize = vec2(u_worldWidth, u_worldHeight);\\n  givenBoxSize = max(givenBoxSize, vec2(1.)) * u_pixelRatio;\\n  float r = u_rotation * 3.14159265358979323846 / 180.;\\n  mat2 graphicRotation = mat2(cos(r), sin(r), -sin(r), cos(r));\\n  vec2 graphicOffset = vec2(-u_offsetX, u_offsetY);\\n\\n\\n  // ===================================================\\n  // Sizing api for graphic objects with fixed ratio\\n  // (currently supports only ratio = 1)\\n\\n  float fixedRatio = 1.;\\n  vec2 fixedRatioBoxGivenSize = vec2(\\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\\n  );\\n\\n  v_objectBoxSize = getBoxSize(fixedRatio, fixedRatioBoxGivenSize).xy;\\n  vec2 objectWorldScale = u_resolution.xy / v_objectBoxSize;\\n\\n  #ifdef ADD_HELPERS\\n  v_objectHelperBox = uv;\\n  v_objectHelperBox *= objectWorldScale;\\n  v_objectHelperBox += boxOrigin * (objectWorldScale - 1.);\\n  #endif\\n\\n  v_objectUV = uv;\\n  v_objectUV *= objectWorldScale;\\n  v_objectUV += boxOrigin * (objectWorldScale - 1.);\\n  v_objectUV += graphicOffset;\\n  v_objectUV /= u_scale;\\n  v_objectUV = graphicRotation * v_objectUV;\\n\\n\\n  // ===================================================\\n\\n\\n  // ===================================================\\n  // Sizing api for graphic objects with either givenBoxSize ratio or canvas ratio.\\n  // Full-screen mode available with u_worldWidth = u_worldHeight = 0\\n\\n  v_responsiveBoxGivenSize = vec2(\\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\\n  );\\n  float responsiveRatio = v_responsiveBoxGivenSize.x / v_responsiveBoxGivenSize.y;\\n  v_responsiveBoxSize = getBoxSize(responsiveRatio, v_responsiveBoxGivenSize).xy;\\n  vec2 responsiveBoxScale = u_resolution.xy / v_responsiveBoxSize;\\n\\n  #ifdef ADD_HELPERS\\n  v_responsiveHelperBox = uv;\\n  v_responsiveHelperBox *= responsiveBoxScale;\\n  v_responsiveHelperBox += boxOrigin * (responsiveBoxScale - 1.);\\n  #endif\\n\\n  v_responsiveUV = uv;\\n  v_responsiveUV *= responsiveBoxScale;\\n  v_responsiveUV += boxOrigin * (responsiveBoxScale - 1.);\\n  v_responsiveUV += graphicOffset;\\n  v_responsiveUV /= u_scale;\\n  v_responsiveUV.x *= responsiveRatio;\\n  v_responsiveUV = graphicRotation * v_responsiveUV;\\n  v_responsiveUV.x /= responsiveRatio;\\n\\n  // ===================================================\\n\\n\\n  // ===================================================\\n  // Sizing api for patterns\\n  // (treating graphics as a image u_worldWidth x u_worldHeight size)\\n\\n  float patternBoxRatio = givenBoxSize.x / givenBoxSize.y;\\n  vec2 patternBoxGivenSize = vec2(\\n  (u_worldWidth == 0.) ? u_resolution.x : givenBoxSize.x,\\n  (u_worldHeight == 0.) ? u_resolution.y : givenBoxSize.y\\n  );\\n  patternBoxRatio = patternBoxGivenSize.x / patternBoxGivenSize.y;\\n\\n  vec3 boxSizeData = getBoxSize(patternBoxRatio, patternBoxGivenSize);\\n  v_patternBoxSize = boxSizeData.xy;\\n  float patternBoxNoFitBoxWidth = boxSizeData.z;\\n  vec2 patternBoxScale = u_resolution.xy / v_patternBoxSize;\\n\\n  #ifdef ADD_HELPERS\\n  v_patternHelperBox = uv;\\n  v_patternHelperBox *= patternBoxScale;\\n  v_patternHelperBox += boxOrigin * (patternBoxScale - 1.);\\n  #endif\\n\\n  v_patternUV = uv;\\n  v_patternUV += graphicOffset / patternBoxScale;\\n  v_patternUV += boxOrigin;\\n  v_patternUV -= boxOrigin / patternBoxScale;\\n  v_patternUV *= u_resolution.xy;\\n  v_patternUV /= u_pixelRatio;\\n  if (u_fit > 0.) {\\n    v_patternUV *= (patternBoxNoFitBoxWidth / v_patternBoxSize.x);\\n  }\\n  v_patternUV /= u_scale;\\n  v_patternUV = graphicRotation * v_patternUV;\\n  v_patternUV += boxOrigin / patternBoxScale;\\n  v_patternUV -= boxOrigin;\\n  // x100 is a default multiplier between vertex and fragmant shaders\\n  // we use it to avoid UV presision issues\\n  v_patternUV *= .01;\\n\\n  // ===================================================\\n\\n\\n  // ===================================================\\n  // Sizing api for images\\n\\n  vec2 imageBoxSize;\\n  if (u_fit == 1.) { // contain\\n    imageBoxSize.x = min(u_resolution.x / u_imageAspectRatio, u_resolution.y) * u_imageAspectRatio;\\n  } else if (u_fit == 2.) { // cover\\n    imageBoxSize.x = max(u_resolution.x / u_imageAspectRatio, u_resolution.y) * u_imageAspectRatio;\\n  } else {\\n    imageBoxSize.x = min(10.0, 10.0 / u_imageAspectRatio * u_imageAspectRatio);\\n  }\\n  imageBoxSize.y = imageBoxSize.x / u_imageAspectRatio;\\n  vec2 imageBoxScale = u_resolution.xy / imageBoxSize;\\n\\n  #ifdef ADD_HELPERS\\n  vec2 imageHelperBox = uv;\\n  imageHelperBox *= imageBoxScale;\\n  imageHelperBox += boxOrigin * (imageBoxScale - 1.);\\n  #endif\\n\\n  v_imageUV = uv;\\n  v_imageUV *= imageBoxScale;\\n  v_imageUV += boxOrigin * (imageBoxScale - 1.);\\n  v_imageUV += graphicOffset;\\n  v_imageUV /= u_scale;\\n  v_imageUV.x *= u_imageAspectRatio;\\n  v_imageUV = graphicRotation * v_imageUV;\\n  v_imageUV.x /= u_imageAspectRatio;\\n\\n  v_imageUV += .5;\\n  v_imageUV.y = 1. - v_imageUV.y;\\n\\n  // ===================================================\\n\\n}\",this.fragmentShader);e&&(this.program=e)};setupPositionAttribute=()=>{const e=this.gl.getAttribLocation(this.program,\"a_position\"),t=this.gl.createBuffer();this.gl.bindBuffer(this.gl.ARRAY_BUFFER,t);this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([-1,-1,1,-1,-1,1,-1,1,1,-1,1,1]),this.gl.STATIC_DRAW),this.gl.enableVertexAttribArray(e),this.gl.vertexAttribPointer(e,2,this.gl.FLOAT,!1,0,0)};setupUniforms=()=>{const e={u_time:this.gl.getUniformLocation(this.program,\"u_time\"),u_pixelRatio:this.gl.getUniformLocation(this.program,\"u_pixelRatio\"),u_resolution:this.gl.getUniformLocation(this.program,\"u_resolution\")};Object.entries(this.providedUniforms).forEach(([t,n])=>{if(e[t]=this.gl.getUniformLocation(this.program,t),n instanceof HTMLImageElement){const n=`${t}AspectRatio`;e[n]=this.gl.getUniformLocation(this.program,n)}}),this.uniformLocations=e};renderScale=1;parentWidth=0;parentHeight=0;resizeObserver=null;setupResizeObserver=()=>{this.resizeObserver=new ResizeObserver(([e])=>{e?.borderBoxSize[0]&&(this.parentWidth=e.borderBoxSize[0].inlineSize,this.parentHeight=e.borderBoxSize[0].blockSize),this.handleResize()}),this.resizeObserver.observe(this.parentElement),visualViewport?.addEventListener(\"resize\",this.handleVisualViewportChange);const e=this.parentElement.getBoundingClientRect();this.parentWidth=e.width,this.parentHeight=e.height,this.handleResize()};resizeRafId=null;handleVisualViewportChange=()=>{null!==this.resizeRafId&&cancelAnimationFrame(this.resizeRafId),this.resizeRafId=requestAnimationFrame(()=>{this.resizeRafId=requestAnimationFrame(()=>{this.handleResize()})})};handleResize=()=>{null!==this.resizeRafId&&cancelAnimationFrame(this.resizeRafId);const e=visualViewport?.scale??1,t=window.innerWidth-document.documentElement.clientWidth,n=visualViewport?visualViewport.scale*visualViewport.width+t:window.innerWidth,i=Math.round(1e4*window.outerWidth/n)/1e4,o=this.isSafari?devicePixelRatio:devicePixelRatio/i,r=Math.max(o,this.minPixelRatio)*i*e,a=this.parentWidth*r,s=this.parentHeight*r,l=Math.sqrt(this.maxPixelCount)/Math.sqrt(a*s),c=r*Math.min(1,l),u=Math.round(this.parentWidth*c),h=Math.round(this.parentHeight*c);this.canvasElement.width===u&&this.canvasElement.height===h&&this.renderScale===c||(this.renderScale=c,this.canvasElement.width=u,this.canvasElement.height=h,this.resolutionChanged=!0,this.gl.viewport(0,0,this.gl.canvas.width,this.gl.canvas.height),this.render(performance.now()))};render=e=>{if(this.hasBeenDisposed)return;if(null===this.program)return;const t=e-this.lastRenderTime;this.lastRenderTime=e,0!==this.speed&&(this.currentFrame+=t*this.speed),this.gl.clear(this.gl.COLOR_BUFFER_BIT),this.gl.useProgram(this.program),this.gl.uniform1f(this.uniformLocations.u_time,.001*this.currentFrame),this.resolutionChanged&&(this.gl.uniform2f(this.uniformLocations.u_resolution,this.gl.canvas.width,this.gl.canvas.height),this.gl.uniform1f(this.uniformLocations.u_pixelRatio,this.renderScale),this.resolutionChanged=!1),this.gl.drawArrays(this.gl.TRIANGLES,0,6),0!==this.speed?this.requestRender():this.rafId=null};requestRender=()=>{null!==this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=requestAnimationFrame(this.render)};setTextureUniform=(e,t)=>{if(!t.complete||0===t.naturalWidth)throw new Error(`Paper Shaders: image for uniform ${e} must be fully loaded`);const n=this.textures.get(e);n&&this.gl.deleteTexture(n),this.textureUnitMap.has(e)||this.textureUnitMap.set(e,this.textureUnitMap.size);const i=this.textureUnitMap.get(e);this.gl.activeTexture(this.gl.TEXTURE0+i);const o=this.gl.createTexture();this.gl.bindTexture(this.gl.TEXTURE_2D,o),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR),this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,this.gl.RGBA,this.gl.UNSIGNED_BYTE,t);if(this.gl.getError()!==this.gl.NO_ERROR||null===o)return;this.textures.set(e,o);const r=this.uniformLocations[e];if(r){this.gl.uniform1i(r,i);const n=`${e}AspectRatio`,o=this.uniformLocations[n];if(o){const e=t.naturalWidth/t.naturalHeight;this.gl.uniform1f(o,e)}}};areUniformValuesEqual=(e,t)=>e===t||!(!Array.isArray(e)||!Array.isArray(t)||e.length!==t.length)&&e.every((e,n)=>this.areUniformValuesEqual(e,t[n]));setUniformValues=e=>{this.gl.useProgram(this.program),Object.entries(e).forEach(([e,t])=>{let n=t;if(t instanceof HTMLImageElement&&(n=`${t.src.slice(0,200)}|${t.naturalWidth}x${t.naturalHeight}`),this.areUniformValuesEqual(this.uniformCache[e],n))return;this.uniformCache[e]=n;const i=this.uniformLocations[e];if(i)if(t instanceof HTMLImageElement)this.setTextureUniform(e,t);else if(Array.isArray(t)){let e=null,n=null;if(void 0!==t[0]&&Array.isArray(t[0])){const i=t[0].length;if(!t.every(e=>e.length===i))return;e=t.flat(),n=i}else e=t,n=e.length;switch(n){case 2:this.gl.uniform2fv(i,e);break;case 3:this.gl.uniform3fv(i,e);break;case 4:this.gl.uniform4fv(i,e);break;case 9:this.gl.uniformMatrix3fv(i,!1,e);break;case 16:this.gl.uniformMatrix4fv(i,!1,e)}}else\"number\"==typeof t?this.gl.uniform1f(i,t):\"boolean\"==typeof t&&this.gl.uniform1i(i,t?1:0)})};getCurrentFrame=()=>this.currentFrame;setFrame=e=>{this.currentFrame=e,this.lastRenderTime=performance.now(),this.render(performance.now())};setSpeed=(e=1)=>{this.speed=e,null===this.rafId&&0!==e&&(this.lastRenderTime=performance.now(),this.rafId=requestAnimationFrame(this.render)),null!==this.rafId&&0===e&&(cancelAnimationFrame(this.rafId),this.rafId=null)};setMaxPixelCount=(e=8294400)=>{this.maxPixelCount=e,this.handleResize()};setMinPixelRatio=(e=2)=>{this.minPixelRatio=e,this.handleResize()};setUniforms=e=>{this.setUniformValues(e),this.providedUniforms={...this.providedUniforms,...e},this.render(performance.now())};dispose=()=>{this.hasBeenDisposed=!0,null!==this.rafId&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.gl&&this.program&&(this.textures.forEach(e=>{this.gl.deleteTexture(e)}),this.textures.clear(),this.gl.deleteProgram(this.program),this.program=null,this.gl.bindBuffer(this.gl.ARRAY_BUFFER,null),this.gl.bindBuffer(this.gl.ELEMENT_ARRAY_BUFFER,null),this.gl.bindRenderbuffer(this.gl.RENDERBUFFER,null),this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,null),this.gl.getError()),this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),visualViewport?.removeEventListener(\"resize\",this.handleVisualViewportChange),this.uniformLocations={},this.parentElement.paperShaderMount=void 0}}function u(e,t,n){const i=e.createShader(t);return i?(e.shaderSource(i,n),e.compileShader(i),e.getShaderParameter(i,e.COMPILE_STATUS)?i:(e.deleteShader(i),null)):null}const h=\"@layer paper-shaders {\\n  :where([data-paper-shader]) {\\n    isolation: isolate;\\n    position: relative;\\n\\n    & canvas {\\n      contain: strict;\\n      display: block;\\n      position: absolute;\\n      inset: 0;\\n      z-index: -1;\\n      width: 100%;\\n      height: 100%;\\n      border-radius: inherit;\\n      corner-shape: inherit;\\n    }\\n  }\\n}\";const f={fit:\"contain\",scale:1,rotation:0,offsetX:0,offsetY:0,originX:.5,originY:.5,worldWidth:0,worldHeight:0},g={none:0,contain:1,cover:2},m=10,p=`#version 300 es\\nprecision highp float;\\n\\nin mediump vec2 v_imageUV;\\nin mediump vec2 v_objectUV;\\nout vec4 fragColor;\\n\\nuniform sampler2D u_image;\\nuniform float u_time;\\nuniform float u_imageAspectRatio;\\n\\nuniform vec4 u_colorBack;\\nuniform vec4 u_colors[${m}];\\nuniform float u_colorsCount;\\n\\nuniform float u_angle;\\nuniform float u_noise;\\nuniform float u_innerGlow;\\nuniform float u_outerGlow;\\nuniform float u_contour;\\n\\n#define TWO_PI 6.28318530718\\n#define PI 3.14159265358979323846\\n\\nfloat getImgFrame(vec2 uv, float th) {\\n  float frame = 1.;\\n  frame *= smoothstep(0., th, uv.y);\\n  frame *= smoothstep(1., 1. - th, uv.y);\\n  frame *= smoothstep(0., th, uv.x);\\n  frame *= smoothstep(1., 1. - th, uv.x);\\n  return frame;\\n}\\n\\nfloat circle(vec2 uv, vec2 c, vec2 r) {\\n  return 1. - smoothstep(r[0], r[1], length(uv - c));\\n}\\n\\nfloat lst(float edge0, float edge1, float x) {\\n  return clamp((x - edge0) / (edge1 - edge0), 0.0, 1.0);\\n}\\n\\nfloat sst(float edge0, float edge1, float x) {\\n  return smoothstep(edge0, edge1, x);\\n}\\n\\nfloat shadowShape(vec2 uv, float t, float contour) {\\n  vec2 scaledUV = uv;\\n\\n  // base shape tranjectory\\n  float posY = mix(-1., 2., t);\\n\\n  // scaleX when it's moving down\\n  scaledUV.y -= .5;\\n  float mainCircleScale = sst(0., .8, posY) * lst(1.4, .9, posY);\\n  scaledUV *= vec2(1., 1. + 1.5 * mainCircleScale);\\n  scaledUV.y += .5;\\n\\n  // base shape\\n  float innerR = .4;\\n  float outerR = 1. - .3 * (sst(.1, .2, t) * sst(.5, .2, t));\\n  float s = circle(scaledUV, vec2(.5, posY - .2), vec2(innerR, outerR));\\n  float shapeSizing = sst(.2, .3, t) * sst(.6, .3, t);\\n  s = pow(s, 1.4);\\n  s *= 1.2;\\n\\n  // flat gradient to take over the shadow shape\\n  float topFlattener = 0.;\\n  {\\n    float pos = posY - uv.y;\\n    float edge = 1.2;\\n    topFlattener = lst(-.4, 0., pos) * sst(edge, .0, pos);\\n    topFlattener = pow(topFlattener, 3.);\\n    float topFlattenerMixer = (1. - sst(.0, .3, pos));\\n    s = mix(topFlattener, s, topFlattenerMixer);\\n  }\\n\\n  // apple right circle\\n  {\\n    float visibility = sst(.6, .7, t) * sst(.9, .8, t);\\n    float angle = -2. -t * TWO_PI;\\n    float rightCircle = circle(uv, vec2(.95 - .2 * cos(angle), .4 - .1 * sin(angle)), vec2(.15, .3));\\n    rightCircle *= visibility;\\n    s = mix(s, 0., rightCircle);\\n  }\\n\\n  // apple top circle\\n  {\\n    float topCircle = circle(uv, vec2(.5, .19), vec2(.05, .25));\\n    topCircle += 2. * contour * circle(uv, vec2(.5, .19), vec2(.2, .5));\\n    float visibility = .55 * sst(.2, .3, t) * sst(.45, .3, t);\\n    topCircle *= visibility;\\n    s = mix(s, 0., topCircle);\\n  }\\n\\n  float leafMask = circle(uv, vec2(.53, .13), vec2(.08, .19));\\n  leafMask = mix(leafMask, 0., sst(.54, .4, uv.x));\\n  leafMask = mix(0., leafMask, sst(.0, .2, uv.y));\\n  leafMask *= (sst(.5, 1.1, posY) * sst(1.5, 1.3, posY));\\n  s += leafMask;\\n\\n  // apple bottom circle\\n  {\\n    float visibility = sst(.0, .4, t) * sst(.8, .6, t);\\n    s = mix(s, 0., visibility * circle(uv, vec2(.52, .92), vec2(.09, .25)));\\n  }\\n\\n  // random balls that are invisible if apple logo is selected\\n  {\\n    float pos = sst(.0, .6, t) * sst(1., .6, t);\\n    s = mix(s, .5, circle(uv, vec2(.0, 1.2 - .5 * pos), vec2(.1, .3)));\\n    s = mix(s, .0, circle(uv, vec2(1., .5 + .5 * pos), vec2(.1, .3)));\\n\\n    s = mix(s, 1., circle(uv, vec2(.95, .2 + .2 * sst(.3, .4, t) * sst(.7, .5, t)), vec2(.07, .22)));\\n    s /= sst(1., .85, uv.y);\\n  }\\n\\n  s = clamp(0., 1., s);\\n  return s;\\n}\\n\\n\\nvoid main() {\\n  vec2 uv = v_objectUV + .5;\\n  uv.y = 1. - uv.y;\\n\\n  vec2 imgUV = v_imageUV;\\n  imgUV -= .5;\\n  imgUV *= 0.5714285714285714;\\n  imgUV += .5;\\n  float imgSoftFrame = getImgFrame(imgUV, .03);\\n  \\n  vec4 img = texture(u_image, imgUV);\\n  if (img.a == 0.) {\\n    fragColor = u_colorBack;\\n    return;\\n  }\\n\\n  float t = .1 * u_time;\\n  t -= .3;\\n\\n  float tCopy = t + 1. / 3.;\\n  float tCopy2 = t + 2. / 3.;\\n\\n  t = mod(t, 1.);\\n  tCopy = mod(tCopy, 1.);\\n  tCopy2 = mod(tCopy2, 1.);\\n\\n  vec2 animationUV = imgUV - vec2(.5);\\n  float angle = u_angle * PI / 180.;\\n  float cosA = cos(angle);\\n  float sinA = sin(angle);\\n  animationUV = vec2(\\n  animationUV.x * cosA - animationUV.y * sinA,\\n  animationUV.x * sinA + animationUV.y * cosA\\n  ) + vec2(.5);\\n\\n  float shape = img[0];\\n  float outerBlur = 1. - mix(1., img[1], shape);\\n  float innerBlur = mix(img[1], 0., shape);\\n  float contour = mix(img[2], 0., shape);\\n\\n  outerBlur *= imgSoftFrame;\\n\\n  float shadow = shadowShape(animationUV, t, innerBlur);\\n  float shadowCopy = shadowShape(animationUV, tCopy, innerBlur);\\n  float shadowCopy2 = shadowShape(animationUV, tCopy2, innerBlur);\\n\\n  float inner = .8 + .8 * innerBlur;\\n  inner = mix(inner, 0., shadow);\\n  inner = mix(inner, 0., shadowCopy);\\n  inner = mix(inner, 0., shadowCopy2);\\n\\n  inner *= mix(0., 2., u_innerGlow);\\n\\n  inner += (u_contour * 2.) * contour;\\n  inner = min(1., inner);\\n  inner *= (1. - shape);\\n\\n  float outer = 0.;\\n  {\\n    t *= 3.;\\n    t = mod(t - .1, 1.);\\n\\n    outer = .9 * pow(outerBlur, .8);\\n    float y = mod(animationUV.y - t, 1.);\\n    float animatedMask = sst(.3, .65, y) * sst(1., .65, y);\\n    animatedMask = .5 + animatedMask;\\n    outer *= animatedMask;\\n    outer *= mix(0., 5., pow(u_outerGlow, 2.));\\n    outer *= imgSoftFrame;\\n  }\\n\\n  inner = pow(inner, 1.2);\\n  float heat = clamp(inner + outer, 0., 1.);\\n\\n  heat += (.005 + .35 * u_noise) * (fract(sin(dot(uv, vec2(12.9898, 78.233))) * 43758.5453123) - .5);\\n\\n  float mixer = heat * u_colorsCount;\\n  vec4 gradient = u_colors[0];\\n  gradient.rgb *= gradient.a;\\n  float outerShape = 0.;\\n  for (int i = 1; i < ${m+1}; i++) {\\n    if (i > int(u_colorsCount)) break;\\n    float m = clamp(mixer - float(i - 1), 0., 1.);\\n    if (i == 1) {\\n      outerShape = m;\\n    }\\n    vec4 c = u_colors[i - 1];\\n    c.rgb *= c.a;\\n    gradient = mix(gradient, c, m);\\n  }\\n\\n  vec3 color = gradient.rgb * outerShape;\\n  float opacity = gradient.a * outerShape;\\n\\n  vec3 bgColor = u_colorBack.rgb * u_colorBack.a;\\n  color = color + bgColor * (1.0 - opacity);\\n  opacity = opacity + u_colorBack.a * (1.0 - opacity);\\n\\n  color += .02 * (fract(sin(dot(uv + 1., vec2(12.9898, 78.233))) * 43758.5453123) - .5);\\n  \\n  fragColor = vec4(color, opacity);\\n}\\n`;function d(e){const t=document.createElement(\"canvas\"),n=1e3;return new Promise((i,o)=>{const r=new Image;r.crossOrigin=\"anonymous\",r.addEventListener(\"load\",()=>{(\"string\"==typeof e?e.endsWith(\".svg\"):\"image/svg+xml\"===e.type)&&(r.width=n,r.height=n);const a=r.naturalWidth/r.naturalHeight,s=Math.floor(150),l=Math.ceil(2.5*s);let c=n,u=n;a>1?u=Math.floor(n/a):c=Math.floor(n*a),t.width=c+2*l,t.height=u+2*l;const h=t.getContext(\"2d\",{willReadFrequently:!0});if(!h)throw new Error(\"Failed to get canvas 2d context\");h.fillStyle=\"white\",h.fillRect(0,0,t.width,t.height),h.filter=\"grayscale(100%) blur(\"+s+\"px)\",h.drawImage(r,l,l,c,u);const f=h.getImageData(0,0,t.width,t.height).data;h.fillRect(0,0,t.width,t.height),h.filter=\"grayscale(100%) blur(\"+Math.round(.12*s)+\"px)\",h.drawImage(r,l,l,c,u);const g=h.getImageData(0,0,t.width,t.height).data;h.fillRect(0,0,t.width,t.height),h.filter=\"grayscale(100%) blur(5px)\",h.drawImage(r,l,l,c,u);const m=h.getImageData(0,0,t.width,t.height).data;let p=h.createImageData(t.width,t.height);const d=t.width*t.height;for(let e=0;e<d;e++){const t=4*e;p.data[t]=m[t],p.data[t+1]=f[t],p.data[t+2]=g[t],p.data[t+3]=255}h.putImageData(p,0,0),t.toBlob(e=>{e?i({blob:e}):o(new Error(\"Failed to create PNG blob\"))},\"image/png\")}),r.addEventListener(\"error\",()=>{o(new Error(\"Failed to load image\"))}),r.src=\"string\"==typeof e?e:URL.createObjectURL(e)})}function v(e){if(Array.isArray(e))return 4===e.length?e:3===e.length?[...e,1]:_;if(\"string\"!=typeof e)return _;let t,n,i,o=1;if(e.startsWith(\"#\"))[t,n,i,o]=function(e){3===(e=e.replace(/^#/,\"\")).length&&(e=e.split(\"\").map(e=>e+e).join(\"\"));6===e.length&&(e+=\"ff\");const t=parseInt(e.slice(0,2),16)/255,n=parseInt(e.slice(2,4),16)/255,i=parseInt(e.slice(4,6),16)/255,o=parseInt(e.slice(6,8),16)/255;return[t,n,i,o]}(e);else if(e.startsWith(\"rgb\"))[t,n,i,o]=function(e){const t=e.match(/^rgba?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);return t?[parseInt(t[1]??\"0\")/255,parseInt(t[2]??\"0\")/255,parseInt(t[3]??\"0\")/255,void 0===t[4]?1:parseFloat(t[4])]:[0,0,0,1]}(e);else{if(!e.startsWith(\"hsl\"))return _;[t,n,i,o]=function(e){const[t,n,i,o]=e,r=t/360,a=n/100,s=i/100;let l,c,u;if(0===n)l=c=u=s;else{const e=(e,t,n)=>(n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e),t=s<.5?s*(1+a):s+a-s*a,n=2*s-t;l=e(n,t,r+1/3),c=e(n,t,r),u=e(n,t,r-1/3)}return[l,c,u,o]}(function(e){const t=e.match(/^hsla?\\s*\\(\\s*(\\d+)\\s*,\\s*(\\d+)%\\s*,\\s*(\\d+)%\\s*(?:,\\s*([0-9.]+))?\\s*\\)$/i);return t?[parseInt(t[1]??\"0\"),parseInt(t[2]??\"0\"),parseInt(t[3]??\"0\"),void 0===t[4]?1:parseFloat(t[4])]:[0,0,0,1]}(e))}return[x(t,0,1),x(n,0,1),x(i,0,1),x(o,0,1)]}const x=(e,t,n)=>Math.min(Math.max(e,t),n),_=[0,0,0,1];async function b(e){const t={},n=[];return Object.entries(e).forEach(([e,i])=>{if(\"string\"==typeof i){if(!(e=>{try{return e.startsWith(\"/\")||new URL(e),!0}catch{return!1}})(i))return;const o=new Promise((n,o)=>{const r=new Image;(e=>{try{return!e.startsWith(\"/\")&&new URL(e,window.location.origin).origin!==window.location.origin}catch{return!1}})(i)&&(r.crossOrigin=\"anonymous\"),r.onload=()=>{t[e]=r,n()},r.onerror=()=>{o()},r.src=i});n.push(o)}else t[e]=i}),await Promise.all(n),t}const R=t(function({fragmentShader:t,uniforms:r,webGlContextAttributes:a,speed:s=0,frame:u=0,minPixelRatio:h,maxPixelCount:f,...g},m){const[p,d]=n(!1),v=i(null),x=i(null);o(()=>((async()=>{const e=await b(r);v.current&&!x.current&&(x.current=new c(v.current,t,e,a,s,u,h,f),d(!0))})(),()=>{x.current?.dispose(),x.current=null}),[t,a]),o(()=>{let e=!1;return(async()=>{const t=await b(r);e||x.current?.setUniforms(t)})(),()=>{e=!0}},[r,p]),o(()=>{x.current?.setSpeed(s)},[s,p]),o(()=>{x.current?.setMaxPixelCount(f)},[f,p]),o(()=>{x.current?.setMinPixelRatio(h)},[h,p]),o(()=>{x.current?.setFrame(u)},[u,p]);const _=function(t){const n=e.useRef(void 0),i=e.useCallback(e=>{const n=t.map(t=>{if(null!=t){if(\"function\"==typeof t){const n=t,i=n(e);return\"function\"==typeof i?i:()=>{n(null)}}return t.current=e,()=>{t.current=null}}});return()=>{n.forEach(e=>e?.())}},t);return e.useMemo(()=>t.every(e=>null==e)?null:e=>{n.current&&(n.current(),n.current=void 0),null!=e&&(n.current=i(e))},t)}([v,m]);return l(\"div\",{ref:_,...g})});R.displayName=\"ShaderMount\";const S=\"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\",w=[];function U(e,t){if(e===t)return!0;if(!e||!t)return!1;const n=e.length;if(t.length!==n)return!1;for(let i=0;i<n;i++)if(e[i]!==t[i])return!1;return!0}const B=(e,t)=>function(e,t=null){null===t&&(t=[e]);for(const e of w)if(U(t,e.keys)){if(Object.prototype.hasOwnProperty.call(e,\"error\"))throw e.error;if(Object.prototype.hasOwnProperty.call(e,\"response\"))return e.response;throw e.promise}const n={keys:t,promise:(i=e,\"object\"==typeof i&&\"function\"==typeof i.then?e:e(...t)).then(e=>{n.response=e}).catch(e=>n.error=e)};var i;throw w.push(n),n.promise}(e,t),y={...f,scale:.75,speed:1,frame:0,image:\"https://shaders.paper.design/images/image-filters/0019.webp\",contour:.5,angle:0,noise:0,innerGlow:.5,outerGlow:.5,colorBack:\"#000000\",colors:[\"#11206a\",\"#1f3ba2\",\"#2f63e7\",\"#6bd7ff\",\"#ffe679\",\"#ff991e\",\"#ff4c00\"]},E=r(function({speed:e=y.speed,frame:t=y.frame,contour:i=y.contour,angle:o=y.angle,noise:r=y.noise,innerGlow:c=y.innerGlow,outerGlow:u=y.outerGlow,colorBack:h=y.colorBack,colors:f=y.colors,suspendWhenProcessingImage:m=!1,fit:x=y.fit,image:_=S,offsetX:b=y.offsetX,offsetY:w=y.offsetY,originX:U=y.originX,originY:E=y.originY,rotation:A=y.rotation,scale:V=y.scale,worldHeight:z=y.worldHeight,worldWidth:F=y.worldWidth,...I}){const T=\"string\"==typeof _?_:_.src,[C,M]=n(S);let P;P=m?B(()=>d(T).then(e=>URL.createObjectURL(e.blob)),[T]):C,a(()=>{if(m)return;if(!T)return void M(S);let e,t=!0;return d(T).then(n=>{t&&(e=URL.createObjectURL(n.blob),M(e))}),()=>{t=!1,URL.revokeObjectURL(e)}},[T,m]);const L=s(()=>({u_image:P,u_contour:i,u_angle:o,u_noise:r,u_innerGlow:c,u_outerGlow:u,u_colorBack:v(h),u_colors:f.map(v),u_colorsCount:f.length,u_fit:g[x],u_offsetX:b,u_offsetY:w,u_originX:U,u_originY:E,u_rotation:A,u_scale:V,u_worldHeight:z,u_worldWidth:F}),[e,t,i,o,r,c,u,f,h,P,x,b,w,U,E,A,V,z,F]);return l(R,{...I,speed:e,frame:t,fragmentShader:p,uniforms:L})});export{E as Heatmap};\n","import{jsx as _jsx}from\"react/jsx-runtime\";//@ts-ignore\nimport{Heatmap}from\"https://cdn.jsdelivr.net/gh/framer-university/components/npm-bundles/heatmap.js\";import{addPropertyControls,ControlType}from\"framer\";const MAX_COLORS=8;// CSS variable token and color parsing (hex/rgba/var())\nconst cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;function extractDefaultValue(cssVar){if(!cssVar||!cssVar.startsWith(\"var(\"))return cssVar;const match=cssVariableRegex.exec(cssVar);if(!match)return cssVar;const fallback=(match[2]||\"\").trim();if(fallback.startsWith(\"var(\"))return extractDefaultValue(fallback);return fallback||cssVar;}function resolveTokenColor(input){if(typeof input!==\"string\")return input;if(!input.startsWith(\"var(\"))return input;return extractDefaultValue(input);}function parseColorToRgba(input){if(!input)return{r:0,g:0,b:0,a:1};const str=input.trim();// rgba(R,G,B,A)\nconst rgbaMatch=str.match(/rgba?\\(\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*,\\s*([\\d.]+)\\s*(?:,\\s*([\\d.]+)\\s*)?\\)/i);if(rgbaMatch){const r=Math.max(0,Math.min(255,parseFloat(rgbaMatch[1])))/255;const g=Math.max(0,Math.min(255,parseFloat(rgbaMatch[2])))/255;const b=Math.max(0,Math.min(255,parseFloat(rgbaMatch[3])))/255;const a=rgbaMatch[4]!==undefined?Math.max(0,Math.min(1,parseFloat(rgbaMatch[4]))):1;return{r,g,b,a};}// #RRGGBBAA or #RRGGBB\nconst hex=str.replace(/^#/,\"\");if(hex.length===8){const r=parseInt(hex.slice(0,2),16)/255;const g=parseInt(hex.slice(2,4),16)/255;const b=parseInt(hex.slice(4,6),16)/255;const a=parseInt(hex.slice(6,8),16)/255;return{r,g,b,a};}if(hex.length===6){const r=parseInt(hex.slice(0,2),16)/255;const g=parseInt(hex.slice(2,4),16)/255;const b=parseInt(hex.slice(4,6),16)/255;return{r,g,b,a:1};}if(hex.length===4){// #RGBA\nconst r=parseInt(hex[0]+hex[0],16)/255;const g=parseInt(hex[1]+hex[1],16)/255;const b=parseInt(hex[2]+hex[2],16)/255;const a=parseInt(hex[3]+hex[3],16)/255;return{r,g,b,a};}if(hex.length===3){// #RGB\nconst r=parseInt(hex[0]+hex[0],16)/255;const g=parseInt(hex[1]+hex[1],16)/255;const b=parseInt(hex[2]+hex[2],16)/255;return{r,g,b,a:1};}return{r:0,g:0,b:0,a:1};}const hexToRGB=hex=>{const c=hex.replace(\"#\",\"\").padEnd(6,\"0\");const r=parseInt(c.slice(0,2),16)/255;const g=parseInt(c.slice(2,4),16)/255;const b=parseInt(c.slice(4,6),16)/255;return[r,g,b];};const prepStops=(stops,paletteCount)=>{// Ensure we have valid colors and handle edge cases\nlet base;if(stops&&Array.isArray(stops)&&stops.length>0){// Filter out invalid colors, resolve CSS variables, and ensure they have # prefix\nbase=stops.filter(color=>color&&typeof color===\"string\"&&color.trim()!==\"\").map(color=>{const resolved=resolveTokenColor(color);const rgba=parseColorToRgba(resolved);// Convert back to hex for the shader\nconst toHex=v=>Math.round(v*255).toString(16).padStart(2,\"0\");return`#${toHex(rgba.r)}${toHex(rgba.g)}${toHex(rgba.b)}`;}).slice(0,MAX_COLORS);}else{base=[\"#11206a\",\"#1f3ba2\",\"#2f63e7\",\"#6bd7ff\",\"#ffe679\",\"#ff991e\",\"#ff4c00\"];}// Ensure we have at least 2 colors\nif(base.length===0){base=[\"#11206a\",\"#1f3ba2\",\"#2f63e7\",\"#6bd7ff\",\"#ffe679\",\"#ff991e\",\"#ff4c00\"];}else if(base.length===1){base.push(base[0]);}// Fill remaining slots with the last color\nwhile(base.length<MAX_COLORS){base.push(base[base.length-1]);}const arr=[];for(let i=0;i<MAX_COLORS;i++){arr.push(hexToRGB(base[i]));}// Use the actual number of colors provided, not the padded array length\nconst actualCount=Math.max(1,Math.min(MAX_COLORS,paletteCount||stops?.length||7));return{arr,count:actualCount};};/**\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n * @framerDisableUnlink\n */export default function HeatmapComponent({colors={paletteCount:7,color1:\"#11206a\",color2:\"#1f3ba2\",color3:\"#2f63e7\",color4:\"#6bd7ff\",color5:\"#ffe679\",color6:\"#ff991e\",color7:\"#ff4c00\",bgColor:\"#000000\"},speed=1,contour=.5,angle=0,noise=.05,innerGlow=.5,outerGlow=.5,scale=.75,image=\"https://workers.paper.design/file-assets/01K2KEX78Z34EZ86R69T4CGNNX/01K4PRJY7A6KB5V1PXMR92Q9F4.png\"}){// Prepare colors array\nconst{arr:colorArr,count:colorCount}=prepStops([colors?.color1,colors?.color2,colors?.color3,colors?.color4,colors?.color5,colors?.color6,colors?.color7,colors?.color8].filter(Boolean),colors?.paletteCount);// Convert color array to hex strings for the Heatmap component\nconst colorStrings=colorArr.slice(0,colorCount).map(([r,g,b])=>{const toHex=v=>Math.round(v*255).toString(16).padStart(2,\"0\");return`#${toHex(r)}${toHex(g)}${toHex(b)}`;});return /*#__PURE__*/_jsx(\"div\",{style:{width:\"100%\",height:\"100%\",overflow:\"hidden\",position:\"relative\",background:colors?.bgColor||\"#000000\"},children:/*#__PURE__*/_jsx(Heatmap,{colors:colorStrings,colorBack:\"#00000000\",speed:speed,contour:contour,angle:angle,noise:noise,innerGlow:innerGlow,outerGlow:outerGlow,scale:scale,image:image,frame:0,style:{backgroundColor:colors?.bgColor||\"#000000\",width:\"100%\",height:\"100%\"}})});}HeatmapComponent.defaultProps={colors:{paletteCount:7,color1:\"#11206a\",color2:\"#1f3ba2\",color3:\"#2f63e7\",color4:\"#6bd7ff\",color5:\"#ffe679\",color6:\"#ff991e\",color7:\"#ff4c00\",bgColor:\"#000000\"},speed:1,contour:.5,angle:0,noise:.05,innerGlow:.5,outerGlow:.5,scale:.75,image:\"https://workers.paper.design/file-assets/01K2KEX78Z34EZ86R69T4CGNNX/01K4PRJY7A6KB5V1PXMR92Q9F4.png\",frame:0};addPropertyControls(HeatmapComponent,{image:{type:ControlType.ResponsiveImage,title:\"Image\",description:\"A high quality black on white (or black on transparent) image\"},speed:{type:ControlType.Number,title:\"Speed\",min:0,max:5,step:.1,defaultValue:1},contour:{type:ControlType.Number,title:\"Contour\",min:0,max:1,step:.1,defaultValue:.5},angle:{type:ControlType.Number,title:\"Angle\",min:0,max:360,unit:\"\\xb0\",defaultValue:0},noise:{type:ControlType.Number,title:\"Noise\",min:0,max:1,step:.01,defaultValue:.05},innerGlow:{type:ControlType.Number,title:\"Glow In\",min:0,max:1,step:.1,defaultValue:.5},outerGlow:{type:ControlType.Number,title:\"Glow Out\",min:0,max:1,step:.1,defaultValue:.5},scale:{type:ControlType.Number,title:\"Scale\",min:.1,max:2,step:.1,defaultValue:.75},colors:{type:ControlType.Object,title:\"Colors\",description:\"More components at [Framer University](https://frameruni.link/cc).\",controls:{paletteCount:{type:ControlType.Number,title:\"Palette Size\",min:2,max:8,step:1,defaultValue:7},color1:{type:ControlType.Color,title:\"Color 1\",defaultValue:\"#11206a\"},color2:{type:ControlType.Color,title:\"Color 2\",defaultValue:\"#1f3ba2\",hidden:props=>(props?.paletteCount??7)<2},color3:{type:ControlType.Color,title:\"Color 3\",defaultValue:\"#2f63e7\",hidden:props=>(props?.paletteCount??7)<3},color4:{type:ControlType.Color,title:\"Color 4\",defaultValue:\"#6bd7ff\",hidden:props=>(props?.paletteCount??7)<4},color5:{type:ControlType.Color,title:\"Color 5\",defaultValue:\"#ffe679\",hidden:props=>(props?.paletteCount??7)<5},color6:{type:ControlType.Color,title:\"Color 6\",defaultValue:\"#ff991e\",hidden:props=>(props?.paletteCount??7)<6},color7:{type:ControlType.Color,title:\"Color 7\",defaultValue:\"#ff4c00\",hidden:props=>(props?.paletteCount??7)<7},color8:{type:ControlType.Color,title:\"Color 8\",defaultValue:\"#ff4c00\",hidden:props=>(props?.paletteCount??7)<8},bgColor:{type:ControlType.Color,title:\"Background\",defaultValue:\"#000000\"}}}});HeatmapComponent.displayName=\"Heatmap\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"HeatmapComponent\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"fixed\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerIntrinsicWidth\":\"600\",\"framerDisableUnlink\":\"\",\"framerIntrinsicHeight\":\"400\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Heatmap_prod.map","import{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import{useRef,useEffect,useState,useMemo}from\"react\";import{motion,useAnimationFrame,useMotionValue,useTransform}from\"framer-motion\";import{ControlType,addPropertyControls}from\"framer\";// ------------------------------------------------------------ //\n// MAIN COMPONENT\n// ------------------------------------------------------------ //\n/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n * @framerDisableUnlink\n */export default function CurvedLoop(props){const measureRef=useRef(null);const tspansRef=useRef([]);const pathRef=useRef(null);const[pathLength,setPathLength]=useState(0);const[spacing,setSpacing]=useState(0);// Use completely static IDs based on component props to ensure consistency\nconst staticId=useMemo(()=>{// Create a deterministic hash from props that will be consistent across SSR/client\nconst propsString=`${props.text.text}-${props.curveAmount}-${props.direction}-${props.baseVelocity}`;let hash=0;for(let i=0;i<propsString.length;i++){const char=propsString.charCodeAt(i);hash=(hash<<5)-hash+char;hash=hash&hash// Convert to 32-bit integer\n;}return Math.abs(hash).toString(36);},[props.text.text,props.curveAmount,props.direction,props.baseVelocity]);const pathId=`curve-${staticId}`;const fadeGradientId=`fadeGradient-${staticId}`;const fadeMaskId=`fadeMask-${staticId}`;const pathD=`M-100,400 Q720,${400+props.curveAmount} 1540,400`;const defaultVelocity=useMotionValue(1);const isDragging=useRef(false);const dragVelocity=useRef(0);// Transform scroll velocity into a factor that affects marquee speed\nconst velocityFactor=useTransform(defaultVelocity,[0,1e3],[0,5],{clamp:false});// Convert baseVelocity to the correct direction\nconst actualBaseVelocity=props.direction===\"left\"?-props.baseVelocity:props.baseVelocity;// Reference to track if mouse is hovering\nconst isHovered=useRef(false);// Direction factor for changing direction based on scroll or drag\nconst directionFactor=useRef(1);// Process text to ensure proper spacing\nconst processedText=useMemo(()=>{// Remove any trailing spaces first\nconst trimmedText=props.text.text.trim();// Add two non-breaking spaces to ensure visible gap\nreturn trimmedText+\"\\xa0\\xa0\";},[props]);// Measure text width and set up path\nuseEffect(()=>{if(measureRef.current){setSpacing(measureRef.current.getComputedTextLength());}},[props]);useEffect(()=>{if(pathRef.current){setPathLength(pathRef.current.getTotalLength());}},[props.curveAmount]);// Calculate number of repeats needed based on path length and text spacing\nconst calculatedRepeats=Math.ceil(pathLength/spacing)+2;const ready=pathLength>0&&spacing>0;useAnimationFrame((t,delta)=>{if(!ready||tspansRef.current.length===0)return;if(isDragging.current){// Apply drag velocity directly to text positions\ntspansRef.current.forEach(tspan=>{if(!tspan)return;let x=parseFloat(tspan.getAttribute(\"x\")||\"0\");x+=dragVelocity.current;// Wrap text around when it goes off screen\nconst maxX=(tspansRef.current.length-1)*spacing;if(x<-spacing)x=maxX;if(x>maxX)x=-spacing;tspan.setAttribute(\"x\",x.toString());});// Add decay to dragVelocity when not moving\ndragVelocity.current*=.9;// Stop completely if velocity is very small\nif(Math.abs(dragVelocity.current)<.01){dragVelocity.current=0;}return;}// Calculate regular movement\nlet moveBy=directionFactor.current*actualBaseVelocity*(delta/1e3);// Adjust movement based on scroll velocity\nif(!isDragging.current){if(velocityFactor.get()<0){directionFactor.current=-1;}else if(velocityFactor.get()>0){directionFactor.current=1;}}moveBy+=directionFactor.current*moveBy*velocityFactor.get();moveBy+=dragVelocity.current;// Gradually decay drag velocity back to zero\nif(!isDragging.current&&Math.abs(dragVelocity.current)>.01){dragVelocity.current*=.96;}else if(!isDragging.current){dragVelocity.current=0;}// Apply movement to each text span\ntspansRef.current.forEach(tspan=>{if(!tspan)return;let x=parseFloat(tspan.getAttribute(\"x\")||\"0\");x+=moveBy;// Wrap text around when it goes off screen\nconst maxX=(tspansRef.current.length-1)*spacing;if(x<-spacing)x=maxX;if(x>maxX)x=-spacing;tspan.setAttribute(\"x\",x.toString());});});const lastPointerPosition=useRef({x:0,y:0});const handlePointerDown=e=>{if(!props.draggable)return;e.currentTarget.setPointerCapture(e.pointerId);e.currentTarget.style.cursor=\"grabbing\";isDragging.current=true;lastPointerPosition.current={x:e.clientX,y:e.clientY};// Pause automatic animation by setting velocity to 0\ndragVelocity.current=0;};const handlePointerMove=e=>{if(!props.draggable)return;if(!isDragging.current)return;const currentPosition={x:e.clientX,y:e.clientY};// Calculate delta from last position\nconst deltaX=currentPosition.x-lastPointerPosition.current.x;// Update drag velocity based on horizontal movement\ndragVelocity.current=deltaX*.3;// Update last position\nlastPointerPosition.current=currentPosition;};const handlePointerUp=e=>{if(!props.draggable)return;e.currentTarget.releasePointerCapture(e.pointerId);e.currentTarget.style.cursor=\"grab\";isDragging.current=false;};const cursorStyle=props.draggable?isDragging.current?\"grabbing\":\"grab\":\"default\";return /*#__PURE__*/_jsx(motion.div,{onHoverStart:()=>isHovered.current=true,onHoverEnd:()=>isHovered.current=false,style:{visibility:ready?\"visible\":\"hidden\",minHeight:\"100vh\",width:\"100%\",height:\"100%\",display:\"flex\",alignItems:\"center\",justifyContent:\"center\"},children:/*#__PURE__*/_jsxs(\"svg\",{viewBox:\"0 0 1440 800\",style:{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\",userSelect:\"none\",width:\"100%\",aspectRatio:\"1440 / 800\",overflow:\"visible\",display:\"block\",fill:props.text.color,fontFamily:props.text.font.fontFamily,fontSize:props.text.font.fontSize,letterSpacing:props.text.font.letterSpacing,lineHeight:props.text.font.lineHeight},children:[/*#__PURE__*/_jsx(\"text\",{ref:measureRef,xmlSpace:\"preserve\",style:{visibility:\"hidden\",opacity:0,pointerEvents:\"none\",cursor:cursorStyle},children:processedText}),/*#__PURE__*/_jsxs(\"defs\",{children:[/*#__PURE__*/_jsx(\"path\",{ref:pathRef,id:pathId,d:pathD,fill:\"none\",stroke:\"transparent\"}),props.fade&&/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsxs(\"linearGradient\",{id:fadeGradientId,x1:\"0%\",y1:\"0%\",x2:\"100%\",y2:\"0%\",children:[/*#__PURE__*/_jsx(\"stop\",{offset:\"0%\",stopColor:\"white\",stopOpacity:\"0\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"15%\",stopColor:\"white\",stopOpacity:\"1\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"80%\",stopColor:\"white\",stopOpacity:\"1\"}),/*#__PURE__*/_jsx(\"stop\",{offset:\"100%\",stopColor:\"white\",stopOpacity:\"0\"})]}),/*#__PURE__*/_jsx(\"mask\",{id:fadeMaskId,children:/*#__PURE__*/_jsx(\"rect\",{width:\"100%\",height:\"100%\",fill:`url(#${fadeGradientId})`})})]})]}),ready&&/*#__PURE__*/_jsx(\"text\",{fontWeight:props.text.font.fontWeight,xmlSpace:\"preserve\",mask:props.fade?`url(#${fadeMaskId})`:undefined,onPointerDown:handlePointerDown,onPointerMove:handlePointerMove,onPointerUp:handlePointerUp,onPointerCancel:handlePointerUp,children:/*#__PURE__*/_jsx(\"textPath\",{href:`#${pathId}`,xmlSpace:\"preserve\",children:Array.from({length:calculatedRepeats}).map((_,i)=>/*#__PURE__*/_jsx(\"tspan\",{x:i*spacing,ref:el=>{if(el)tspansRef.current[i]=el;},children:processedText},i))})})]})});}// ------------------------------------------------------------ //\n// PROPERTY CONTROLS\n// ------------------------------------------------------------ //\naddPropertyControls(CurvedLoop,{text:{type:ControlType.Object,controls:{text:{type:ControlType.String},font:{type:ControlType.Font,defaultFontType:\"sans-serif\",controls:\"extended\",defaultValue:{letterSpacing:\"1px\",lineHeight:\"1.5em\",textAlign:\"left\",fontSize:64}},color:{type:ControlType.Color}}},direction:{type:ControlType.Enum,options:[\"left\",\"right\"],optionTitles:[\"Left\",\"Right\"],defaultValue:\"left\",optionIcons:[\"direction-left\",\"direction-right\"],displaySegmentedControl:true},baseVelocity:{type:ControlType.Number,title:\"Speed\",min:0,max:500,step:1,defaultValue:50},curveAmount:{type:ControlType.Number,title:\"Curve\",min:-1e3,max:1e3,step:1,defaultValue:300},draggable:{type:ControlType.Boolean,title:\"Draggable\",defaultValue:true},fade:{type:ControlType.Boolean,title:\"Fade\",defaultValue:true,description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// ------------------------------------------------------------ //\n// DEFAULT PROPS\n// ------------------------------------------------------------ //\nCurvedLoop.defaultProps={text:{text:\"Framer University\",font:{fontFamily:\"sans-serif\",fontWeight:\"400\",fontSize:64},color:\"#999999\"},direction:\"left\",baseVelocity:50,curveAmount:300,draggable:true,fade:true};CurvedLoop.displayName=\"Curved Loop Text\";\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"CurvedLoop\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"\",\"framerIntrinsicHeight\":\"200\",\"framerIntrinsicWidth\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./CurvedLoopText_Prod.map"],"mappings":"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"}