{"version":3,"file":"InteractiveASCII_Prod.Biry3CBJ.mjs","names":["e","t","u","a","n","o","r","t","e","i","h","r","n","e","t","o","n","e","t","a","e","r","t","s","n","i","o","u","l","p","M","n","e","t","o","a","i","r","A","l","u","O","q","j","x","V","se","b","ce","Children","useRef","useMemo","useState","useCallback","size","i","clamp","useState","useMemo","i","e","useState","useRef","useMemo","img","i","r","a"],"sources":["https:/ga.jspm.io/npm:@motionone/utils@10.14.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/easing@10.12.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/animation@10.14.0/dist/index.es.js","https:/ga.jspm.io/npm:tslib@2.4.0/tslib.es6.js","https:/ga.jspm.io/npm:hey-listen@1.0.8/dist/index.js","https:/ga.jspm.io/npm:@motionone/generators@10.14.0/dist/index.es.js","https:/ga.jspm.io/npm:@motionone/dom@10.12.0/dist/index.es.js","https:/framerusercontent.com/modules/B2xAlJLcN0gOnt11mSPw/6yBrflQSNZ1yENMohj0e/Ticker.js","https:/framerusercontent.com/modules/hJgF2AbHeWnvswHfc9DK/KJQIB1PBapeE3G5hzJf3/cuZmFCIM6.js","https:/framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js","https:/framerusercontent.com/modules/quIQjXeusVKZRk3V2tVC/5hoALzyXyTieiXjYdtoX/InteractiveASCII_Prod.js"],"sourcesContent":["function addUniqueItem(t,e){-1===t.indexOf(e)&&t.push(e)}function removeItem(t,e){const n=t.indexOf(e);n>-1&&t.splice(n,1)}const clamp=(t,e,n)=>Math.min(Math.max(n,t),e);const t={duration:.3,delay:0,endDelay:0,repeat:0,easing:\"ease\"};const isNumber=t=>\"number\"===typeof t;const isEasingList=t=>Array.isArray(t)&&!isNumber(t[0]);const wrap=(t,e,n)=>{const o=e-t;return((n-t)%o+o)%o+t};function getEasingForSegment(t,e){return isEasingList(t)?t[wrap(0,t.length,e)]:t}const mix=(t,e,n)=>-n*t+n*e+t;const noop=()=>{};const noopReturn=t=>t;const progress=(t,e,n)=>e-t===0?1:(n-t)/(e-t);function fillOffset(t,e){const n=t[t.length-1];for(let o=1;o<=e;o++){const s=progress(0,e,o);t.push(mix(n,1,s))}}function defaultOffset(t){const e=[0];fillOffset(e,t-1);return e}function interpolate(t,e=defaultOffset(t.length),n=noopReturn){const o=t.length;const s=o-e.length;s>0&&fillOffset(e,s);return s=>{let f=0;for(;f<o-2;f++)if(s<e[f+1])break;let r=clamp(0,1,progress(e[f],e[f+1],s));const c=getEasingForSegment(n,f);r=c(r);return mix(t[f],t[f+1],r)}}const isCubicBezier=t=>Array.isArray(t)&&isNumber(t[0]);const isEasingGenerator=t=>\"object\"===typeof t&&Boolean(t.createAnimation);const isFunction=t=>\"function\"===typeof t;const isString=t=>\"string\"===typeof t;const e={ms:t=>1e3*t,s:t=>t/1e3};\n/*\n  Convert velocity into velocity per second\n\n  @param [number]: Unit per frame\n  @param [number]: Frame duration in ms\n*/function velocityPerSecond(t,e){return e?t*(1e3/e):0}export{addUniqueItem,clamp,defaultOffset,t as defaults,fillOffset,getEasingForSegment,interpolate,isCubicBezier,isEasingGenerator,isEasingList,isFunction,isNumber,isString,mix,noop,noopReturn,progress,removeItem,e as time,velocityPerSecond,wrap};\n\n//# sourceMappingURL=index.es.js.map","import{noopReturn as t,clamp as n}from\"@motionone/utils\";const calcBezier=(t,n,e)=>(((1-3*e+3*n)*t+(3*e-6*n))*t+3*n)*t;const e=1e-7;const i=12;function binarySubdivide(t,n,o,r,c){let u;let a;let s=0;do{a=n+(o-n)/2;u=calcBezier(a,r,c)-t;u>0?o=a:n=a}while(Math.abs(u)>e&&++s<i);return a}function cubicBezier(n,e,i,o){if(n===e&&i===o)return t;const getTForX=t=>binarySubdivide(t,0,1,n,i);return t=>0===t||1===t?t:calcBezier(getTForX(t),e,o)}const steps=(t,e=\"end\")=>i=>{i=\"end\"===e?Math.min(i,.999):Math.max(i,.001);const o=i*t;const r=\"end\"===e?Math.floor(o):Math.ceil(o);return n(0,1,r/t)};export{cubicBezier,steps};\n\n//# sourceMappingURL=index.es.js.map","import{isFunction as t,isCubicBezier as i,noopReturn as e,defaults as s,isEasingGenerator as a,isEasingList as n,interpolate as r}from\"@motionone/utils\";import{cubicBezier as h,steps as o}from\"@motionone/easing\";const l={ease:h(.25,.1,.25,1),\"ease-in\":h(.42,0,1,1),\"ease-in-out\":h(.42,0,.58,1),\"ease-out\":h(0,0,.58,1)};const u=/\\((.*?)\\)/;function getEasingFunction(s){if(t(s))return s;if(i(s))return h(...s);if(l[s])return l[s];if(s.startsWith(\"steps\")){const t=u.exec(s);if(t){const i=t[1].split(\",\");return o(parseFloat(i[0]),i[1].trim())}}return e}class Animation{constructor(t,i=[0,1],{easing:h,duration:o=s.duration,delay:l=s.delay,endDelay:u=s.endDelay,repeat:m=s.repeat,offset:c,direction:p=\"normal\"}={}){this.startTime=null;this.rate=1;this.t=0;this.cancelTimestamp=null;this.easing=e;this.duration=0;this.totalDuration=0;this.repeat=0;this.playState=\"idle\";this.finished=new Promise(((t,i)=>{this.resolve=t;this.reject=i}));h=h||s.easing;if(a(h)){const t=h.createAnimation(i);h=t.easing;i=t.keyframes||i;o=t.duration||o}this.repeat=m;this.easing=n(h)?e:getEasingFunction(h);this.updateDuration(o);const d=r(i,c,n(h)?h.map(getEasingFunction):e);this.tick=i=>{var e;l=l;let s=0;s=void 0!==this.pauseTime?this.pauseTime:(i-this.startTime)*this.rate;this.t=s;s/=1e3;s=Math.max(s-l,0);\"finished\"===this.playState&&void 0===this.pauseTime&&(s=this.totalDuration);const a=s/this.duration;let n=Math.floor(a);let r=a%1;!r&&a>=1&&(r=1);1===r&&n--;const h=n%2;(\"reverse\"===p||\"alternate\"===p&&h||\"alternate-reverse\"===p&&!h)&&(r=1-r);const o=s>=this.totalDuration?1:Math.min(r,1);const m=d(this.easing(o));t(m);const c=void 0===this.pauseTime&&(\"finished\"===this.playState||s>=this.totalDuration+u);if(c){this.playState=\"finished\";null===(e=this.resolve)||void 0===e?void 0:e.call(this,m)}else\"idle\"!==this.playState&&(this.frameRequestId=requestAnimationFrame(this.tick))};this.play()}play(){const t=performance.now();this.playState=\"running\";void 0!==this.pauseTime?this.startTime=t-this.pauseTime:this.startTime||(this.startTime=t);this.cancelTimestamp=this.startTime;this.pauseTime=void 0;this.frameRequestId=requestAnimationFrame(this.tick)}pause(){this.playState=\"paused\";this.pauseTime=this.t}finish(){this.playState=\"finished\";this.tick(0)}stop(){var t;this.playState=\"idle\";void 0!==this.frameRequestId&&cancelAnimationFrame(this.frameRequestId);null===(t=this.reject)||void 0===t?void 0:t.call(this,false)}cancel(){this.stop();this.tick(this.cancelTimestamp)}reverse(){this.rate*=-1}commitStyles(){}updateDuration(t){this.duration=t;this.totalDuration=t*(this.repeat+1)}get currentTime(){return this.t}set currentTime(t){void 0!==this.pauseTime||0===this.rate?this.pauseTime=t:this.startTime=performance.now()-t/this.rate}get playbackRate(){return this.rate}set playbackRate(t){this.rate=t}}export{Animation,getEasingFunction};\n\n//# sourceMappingURL=index.es.js.map","var extendStatics=function(e,t){extendStatics=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])};return extendStatics(e,t)};function __extends(e,t){if(\"function\"!==typeof t&&null!==t)throw new TypeError(\"Class extends value \"+String(t)+\" is not a constructor or null\");extendStatics(e,t);function __(){this.constructor=e}e.prototype=null===t?Object.create(t):(__.prototype=t.prototype,new __)}var __assign=function(){__assign=Object.assign||function __assign(e){for(var t,r=1,n=arguments.length;r<n;r++){t=arguments[r];for(var o in t)Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o])}return e};return __assign.apply(this,arguments)};function __rest(e,t){var r={};for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(null!=e&&\"function\"===typeof Object.getOwnPropertySymbols){var o=0;for(n=Object.getOwnPropertySymbols(e);o<n.length;o++)t.indexOf(n[o])<0&&Object.prototype.propertyIsEnumerable.call(e,n[o])&&(r[n[o]]=e[n[o]])}return r}function __decorate(e,t,r,n){var o,a=arguments.length,i=a<3?t:null===n?n=Object.getOwnPropertyDescriptor(t,r):n;if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.decorate)i=Reflect.decorate(e,t,r,n);else for(var c=e.length-1;c>=0;c--)(o=e[c])&&(i=(a<3?o(i):a>3?o(t,r,i):o(t,r))||i);return a>3&&i&&Object.defineProperty(t,r,i),i}function __param(e,t){return function(r,n){t(r,n,e)}}function __metadata(e,t){if(\"object\"===typeof Reflect&&\"function\"===typeof Reflect.metadata)return Reflect.metadata(e,t)}function __awaiter(e,t,r,n){function adopt(e){return e instanceof r?e:new r((function(t){t(e)}))}return new(r||(r=Promise))((function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n.throw(e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())}))}function __generator(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:verb(0),throw:verb(1),return:verb(2)},\"function\"===typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function verb(e){return function(t){return step([e,t])}}function step(a){if(r)throw new TypeError(\"Generator is already executing.\");while(i)try{if(r=1,n&&(o=2&a[0]?n.return:a[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,a[1])).done)return o;(n=0,o)&&(a=[2&a[0],o.value]);switch(a[0]){case 0:case 1:o=a;break;case 4:i.label++;return{value:a[1],done:false};case 5:i.label++;n=a[1];a=[0];continue;case 7:a=i.ops.pop();i.trys.pop();continue;default:if(!(o=i.trys,o=o.length>0&&o[o.length-1])&&(6===a[0]||2===a[0])){i=0;continue}if(3===a[0]&&(!o||a[1]>o[0]&&a[1]<o[3])){i.label=a[1];break}if(6===a[0]&&i.label<o[1]){i.label=o[1];o=a;break}if(o&&i.label<o[2]){i.label=o[2];i.ops.push(a);break}o[2]&&i.ops.pop();i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e];n=0}finally{r=o=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:true}}}var e=Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!(\"get\"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:true,get:function(){return t[r]}});Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r);e[n]=t[r]};function __exportStar(t,r){for(var n in t)\"default\"===n||Object.prototype.hasOwnProperty.call(r,n)||e(r,t,n)}function __values(e){var t=\"function\"===typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&\"number\"===typeof e.length)return{next:function(){e&&n>=e.length&&(e=void 0);return{value:e&&e[n++],done:!e}}};throw new TypeError(t?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}function __read(e,t){var r=\"function\"===typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,o,a=r.call(e),i=[];try{while((void 0===t||t-- >0)&&!(n=a.next()).done)i.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=a.return)&&r.call(a)}finally{if(o)throw o.error}}return i}\n/** @deprecated */function __spread(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(__read(arguments[t]));return e}\n/** @deprecated */function __spreadArrays(){for(var e=0,t=0,r=arguments.length;t<r;t++)e+=arguments[t].length;var n=Array(e),o=0;for(t=0;t<r;t++)for(var a=arguments[t],i=0,c=a.length;i<c;i++,o++)n[o]=a[i];return n}function __spreadArray(e,t,r){if(r||2===arguments.length)for(var n,o=0,a=t.length;o<a;o++)if(n||!(o in t)){n||(n=Array.prototype.slice.call(t,0,o));n[o]=t[o]}return e.concat(n||Array.prototype.slice.call(t))}function __await(e){return this instanceof __await?(this.v=e,this):new __await(e)}function __asyncGenerator(e,t,r){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var n,o=r.apply(e,t||[]),a=[];return n={},verb(\"next\"),verb(\"throw\"),verb(\"return\"),n[Symbol.asyncIterator]=function(){return this},n;function verb(e){o[e]&&(n[e]=function(t){return new Promise((function(r,n){a.push([e,t,r,n])>1||resume(e,t)}))})}function resume(e,t){try{step(o[e](t))}catch(e){settle(a[0][3],e)}}function step(e){e.value instanceof __await?Promise.resolve(e.value.v).then(fulfill,reject):settle(a[0][2],e)}function fulfill(e){resume(\"next\",e)}function reject(e){resume(\"throw\",e)}function settle(e,t){(e(t),a.shift(),a.length)&&resume(a[0][0],a[0][1])}}function __asyncDelegator(e){var t,r;return t={},verb(\"next\"),verb(\"throw\",(function(e){throw e})),verb(\"return\"),t[Symbol.iterator]=function(){return this},t;function verb(n,o){t[n]=e[n]?function(t){return(r=!r)?{value:__await(e[n](t)),done:\"return\"===n}:o?o(t):t}:o}}function __asyncValues(e){if(!Symbol.asyncIterator)throw new TypeError(\"Symbol.asyncIterator is not defined.\");var t,r=e[Symbol.asyncIterator];return r?r.call(e):(e=\"function\"===typeof __values?__values(e):e[Symbol.iterator](),t={},verb(\"next\"),verb(\"throw\"),verb(\"return\"),t[Symbol.asyncIterator]=function(){return this},t);function verb(r){t[r]=e[r]&&function(t){return new Promise((function(n,o){t=e[r](t),settle(n,o,t.done,t.value)}))}}function settle(e,t,r,n){Promise.resolve(n).then((function(t){e({value:t,done:r})}),t)}}function __makeTemplateObject(e,t){Object.defineProperty?Object.defineProperty(e,\"raw\",{value:t}):e.raw=t;return e}var t=Object.create?function(e,t){Object.defineProperty(e,\"default\",{enumerable:true,value:t})}:function(e,t){e.default=t};function __importStar(r){if(r&&r.__esModule)return r;var n={};if(null!=r)for(var o in r)\"default\"!==o&&Object.prototype.hasOwnProperty.call(r,o)&&e(n,r,o);t(n,r);return n}function __importDefault(e){return e&&e.__esModule?e:{default:e}}function __classPrivateFieldGet(e,t,r,n){if(\"a\"===r&&!n)throw new TypeError(\"Private accessor was defined without a getter\");if(\"function\"===typeof t?e!==t||!n:!t.has(e))throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");return\"m\"===r?n:\"a\"===r?n.call(e):n?n.value:t.get(e)}function __classPrivateFieldSet(e,t,r,n,o){if(\"m\"===n)throw new TypeError(\"Private method is not writable\");if(\"a\"===n&&!o)throw new TypeError(\"Private accessor was defined without a setter\");if(\"function\"===typeof t?e!==t||!o:!t.has(e))throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");return\"a\"===n?o.call(e,r):o?o.value=r:t.set(e,r),r}function __classPrivateFieldIn(e,t){if(null===t||\"object\"!==typeof t&&\"function\"!==typeof t)throw new TypeError(\"Cannot use 'in' operator on non-object\");return\"function\"===typeof e?t===e:e.has(t)}export{__assign,__asyncDelegator,__asyncGenerator,__asyncValues,__await,__awaiter,__classPrivateFieldGet,__classPrivateFieldIn,__classPrivateFieldSet,e as __createBinding,__decorate,__exportStar,__extends,__generator,__importDefault,__importStar,__makeTemplateObject,__metadata,__param,__read,__rest,__spread,__spreadArray,__spreadArrays,__values};\n\n//# sourceMappingURL=tslib.es6.js.map","var n={};Object.defineProperty(n,\"__esModule\",{value:true});n.warning=function(){};n.invariant=function(){};const e=n.__esModule,t=n.warning,r=n.invariant;export default n;export{e as __esModule,r as invariant,t as warning};\n\n//# sourceMappingURL=index.js.map","import{velocityPerSecond as e,time as t,noopReturn as s}from\"@motionone/utils\";const n=5;function calcGeneratorVelocity(t,s,r){const a=Math.max(s-n,0);return e(r-t(a),s-a)}const r={stiffness:100,damping:10,mass:1};const calcDampingRatio=(e=r.stiffness,t=r.damping,s=r.mass)=>t/(2*Math.sqrt(e*s));function hasReachedTarget(e,t,s){return e<t&&s>=t||e>t&&s<=t}const spring=({stiffness:e=r.stiffness,damping:s=r.damping,mass:n=r.mass,from:a=0,to:o=1,velocity:c=0,restSpeed:i=2,restDistance:h=.5}={})=>{c=c?t.s(c):0;const u={done:false,hasReachedTarget:false,current:a,target:o};const d=o-a;const f=Math.sqrt(e/n)/1e3;const l=calcDampingRatio(e,s,n);let g;if(l<1){const e=f*Math.sqrt(1-l*l);g=t=>o-Math.exp(-l*f*t)*((l*f*d-c)/e*Math.sin(e*t)+d*Math.cos(e*t))}else g=e=>o-Math.exp(-f*e)*(d+(f*d-c)*e);return e=>{u.current=g(e);const t=0===e?c:calcGeneratorVelocity(g,e,u.current);const s=Math.abs(t)<=i;const n=Math.abs(o-u.current)<=h;u.done=s&&n;u.hasReachedTarget=hasReachedTarget(a,o,u.current);return u}};const glide=({from:e=0,velocity:s=0,power:n=.8,decay:r=.325,bounceDamping:a,bounceStiffness:o,changeTarget:c,min:i,max:h,restDistance:u=.5,restSpeed:d})=>{r=t.ms(r);const f={hasReachedTarget:false,done:false,current:e,target:e};const isOutOfBounds=e=>void 0!==i&&e<i||void 0!==h&&e>h;const nearestBoundary=e=>void 0===i?h:void 0===h||Math.abs(i-e)<Math.abs(h-e)?i:h;let l=n*s;const g=e+l;const m=void 0===c?g:c(g);f.target=m;m!==g&&(l=m-e);const calcDelta=e=>-l*Math.exp(-e/r);const calcLatest=e=>m+calcDelta(e);const applyFriction=e=>{const t=calcDelta(e);const s=calcLatest(e);f.done=Math.abs(t)<=u;f.current=f.done?m:s};let p;let M;const checkCatchBoundary=e=>{if(isOutOfBounds(f.current)){p=e;M=spring({from:f.current,to:nearestBoundary(f.current),velocity:calcGeneratorVelocity(calcLatest,e,f.current),damping:a,stiffness:o,restDistance:u,restSpeed:d})}};checkCatchBoundary(0);return e=>{let t=false;if(!M&&void 0===p){t=true;applyFriction(e);checkCatchBoundary(e)}if(void 0!==p&&e>p){f.hasReachedTarget=true;return M(e-p)}f.hasReachedTarget=false;!t&&applyFriction(e);return f}};const a=10;const o=1e4;function pregenerateKeyframes(e,t=s){let n;let r=a;let c=e(0);const i=[t(c.current)];while(!c.done&&r<o){c=e(r);i.push(t(c.done?c.target:c.current));void 0===n&&c.hasReachedTarget&&(n=r);r+=a}const h=r-a;1===i.length&&i.push(c.current);return{keyframes:i,duration:h/1e3,overshootDuration:(null!==n&&void 0!==n?n:h)/1e3}}export{calcGeneratorVelocity,glide,pregenerateKeyframes,spring};\n\n//# sourceMappingURL=index.es.js.map","import{MotionValue as e}from\"@motionone/types\";import{noopReturn as t,addUniqueItem as n,isCubicBezier as o,defaults as i,isEasingGenerator as s,isNumber as r,time as a,isEasingList as c,noop as l,removeItem as f,mix as u,getEasingForSegment as d,isString as g,defaultOffset as m,fillOffset as h,progress as p,velocityPerSecond as v,interpolate as y}from\"@motionone/utils\";import{Animation as w,getEasingFunction as E}from\"@motionone/animation\";import{__rest as b}from\"tslib\";import{invariant as S}from\"hey-listen\";import{pregenerateKeyframes as A,calcGeneratorVelocity as O,spring as x,glide as V}from\"@motionone/generators\";const z=new WeakMap;function getAnimationData(e){z.has(e)||z.set(e,{transforms:[],values:new Map});return z.get(e)}function getMotionValue(t,n){t.has(n)||t.set(n,new e);return t.get(n)}const W=[\"\",\"X\",\"Y\",\"Z\"];const L=[\"translate\",\"scale\",\"rotate\",\"skew\"];const T={x:\"translateX\",y:\"translateY\",z:\"translateZ\"};const D={syntax:\"<angle>\",initialValue:\"0deg\",toDefaultUnit:e=>e+\"deg\"};const M={translate:{syntax:\"<length-percentage>\",initialValue:\"0px\",toDefaultUnit:e=>e+\"px\"},rotate:D,scale:{syntax:\"<number>\",initialValue:1,toDefaultUnit:t},skew:D};const k=new Map;const asTransformCssVar=e=>`--motion-${e}`;const B=[\"x\",\"y\",\"z\"];L.forEach((e=>{W.forEach((t=>{B.push(e+t);k.set(asTransformCssVar(e+t),M[e])}))}));const compareTransformOrder=(e,t)=>B.indexOf(e)-B.indexOf(t);const j=new Set(B);const isTransform=e=>j.has(e);const addTransformToElement=(e,t)=>{T[t]&&(t=T[t]);const{transforms:o}=getAnimationData(e);n(o,t);e.style.transform=buildTransformTemplate(o)};const buildTransformTemplate=e=>e.sort(compareTransformOrder).reduce(transformListToString,\"\").trim();const transformListToString=(e,t)=>`${e} ${t}(var(${asTransformCssVar(t)}))`;const isCssVar=e=>e.startsWith(\"--\");const P=new Set;function registerCssVariable(e){if(!P.has(e)){P.add(e);try{const{syntax:t,initialValue:n}=k.has(e)?k.get(e):{};CSS.registerProperty({name:e,inherits:false,syntax:t,initialValue:n})}catch(e){}}}const convertEasing=e=>o(e)?cubicBezierAsString(e):e;const cubicBezierAsString=([e,t,n,o])=>`cubic-bezier(${e}, ${t}, ${n}, ${o})`;const testAnimation=e=>document.createElement(\"div\").animate(e,{duration:.001});const C={cssRegisterProperty:()=>\"undefined\"!==typeof CSS&&Object.hasOwnProperty.call(CSS,\"registerProperty\"),waapi:()=>Object.hasOwnProperty.call(Element.prototype,\"animate\"),partialKeyframes:()=>{try{testAnimation({opacity:[1]})}catch(e){return false}return true},finished:()=>Boolean(testAnimation({opacity:[0,1]}).finished)};const $={};const R={};for(const e in C)R[e]=()=>{void 0===$[e]&&($[e]=C[e]());return $[e]};function hydrateKeyframes(e,t){for(let n=0;n<e.length;n++)null===e[n]&&(e[n]=n?e[n-1]:t());return e}const keyframesList=e=>Array.isArray(e)?e:[e];function getStyleName(e){T[e]&&(e=T[e]);return isTransform(e)?asTransformCssVar(e):e}const H={get:(e,t)=>{t=getStyleName(t);let n=isCssVar(t)?e.style.getPropertyValue(t):getComputedStyle(e)[t];if(!n&&0!==n){const e=k.get(t);e&&(n=e.initialValue)}return n},set:(e,t,n)=>{t=getStyleName(t);isCssVar(t)?e.style.setProperty(t,n):e.style[t]=n}};function stopAnimation(e,t=true){if(e&&\"finished\"!==e.playState)try{if(e.stop)e.stop();else{t&&e.commitStyles();e.cancel()}}catch(e){}}function getDevToolsRecord(){return window.__MOTION_DEV_TOOLS_RECORD}function animateStyle(e,t,n,o={}){const f=getDevToolsRecord();const u=false!==o.record&&f;let d;let{duration:g=i.duration,delay:m=i.delay,endDelay:h=i.endDelay,repeat:p=i.repeat,easing:v=i.easing,direction:y,offset:E,allowWebkitAcceleration:b=false}=o;const S=getAnimationData(e);let A=R.waapi();const O=isTransform(t);O&&addTransformToElement(e,t);const x=getStyleName(t);const V=getMotionValue(S.values,x);const z=k.get(x);stopAnimation(V.animation,!(s(v)&&V.generator)&&false!==o.record);return()=>{const readInitialValue=()=>{var t,n;return null!==(n=null!==(t=H.get(e,x))&&void 0!==t?t:null===z||void 0===z?void 0:z.initialValue)&&void 0!==n?n:0};let i=hydrateKeyframes(keyframesList(n),readInitialValue);if(s(v)){const e=v.createAnimation(i,readInitialValue,O,x,V);v=e.easing;void 0!==e.keyframes&&(i=e.keyframes);void 0!==e.duration&&(g=e.duration)}isCssVar(x)&&(R.cssRegisterProperty()?registerCssVariable(x):A=false);if(A){z&&(i=i.map((e=>r(e)?z.toDefaultUnit(e):e)));1!==i.length||R.partialKeyframes()&&!u||i.unshift(readInitialValue());const t={delay:a.ms(m),duration:a.ms(g),endDelay:a.ms(h),easing:c(v)?void 0:convertEasing(v),direction:y,iterations:p+1,fill:\"both\"};d=e.animate({[x]:i,offset:E,easing:c(v)?v.map(convertEasing):void 0},t);d.finished||(d.finished=new Promise(((e,t)=>{d.onfinish=e;d.oncancel=t})));const n=i[i.length-1];d.finished.then((()=>{H.set(e,x,n);d.cancel()})).catch(l);b||(d.playbackRate=1.000001)}else if(O){i=i.map((e=>\"string\"===typeof e?parseFloat(e):e));1===i.length&&i.unshift(parseFloat(readInitialValue()));const render=t=>{z&&(t=z.toDefaultUnit(t));H.set(e,x,t)};d=new w(render,i,Object.assign(Object.assign({},o),{duration:g,easing:v}))}else{const t=i[i.length-1];H.set(e,x,z&&r(t)?z.toDefaultUnit(t):t)}u&&f(e,t,i,{duration:g,delay:m,easing:v,repeat:p,offset:E},\"motion-one\");V.setAnimation(d);return d}}const getOptions=(e,t)=>e[t]?Object.assign(Object.assign({},e),e[t]):Object.assign({},e);function resolveElements(e,t){var n;if(\"string\"===typeof e)if(t){null!==(n=t[e])&&void 0!==n?n:t[e]=document.querySelectorAll(e);e=t[e]}else e=document.querySelectorAll(e);else e instanceof Element&&(e=[e]);return Array.from(e||[])}const createAnimation=e=>e();const withControls=(e,t,n=i.duration)=>new Proxy({animations:e.map(createAnimation).filter(Boolean),duration:n,options:t},I);const getActiveAnimation=e=>e.animations[0];const I={get:(e,t)=>{const n=getActiveAnimation(e);switch(t){case\"duration\":return e.duration;case\"currentTime\":return a.s((null===n||void 0===n?void 0:n[t])||0);case\"playbackRate\":case\"playState\":return null===n||void 0===n?void 0:n[t];case\"finished\":e.finished||(e.finished=Promise.all(e.animations.map(selectFinished)).catch(l));return e.finished;case\"stop\":return()=>{e.animations.forEach((e=>stopAnimation(e)))};case\"forEachNative\":return t=>{e.animations.forEach((n=>t(n,e)))};default:return\"undefined\"===typeof(null===n||void 0===n?void 0:n[t])?void 0:()=>e.animations.forEach((e=>e[t]()))}},set:(e,t,n)=>{switch(t){case\"currentTime\":n=a.ms(n);case\"currentTime\":case\"playbackRate\":for(let o=0;o<e.animations.length;o++)e.animations[o][t]=n;return true}return false}};const selectFinished=e=>e.finished;function stagger(e=.1,{start:t=0,from:n=0,easing:o}={}){return(i,s)=>{const a=r(n)?n:getFromIndex(n,s);const c=Math.abs(a-i);let l=e*c;if(o){const t=s*e;const n=E(o);l=n(l/t)*t}return t+l}}function getFromIndex(e,t){if(\"first\"===e)return 0;{const n=t-1;return\"last\"===e?n:n/2}}function resolveOption(e,t,n){return\"function\"===typeof e?e(t,n):e}function animate(e,t,n={}){e=resolveElements(e);const o=e.length;const i=[];for(let s=0;s<o;s++){const r=e[s];for(const e in t){const a=getOptions(n,e);a.delay=resolveOption(a.delay,s,o);const c=animateStyle(r,e,t[e],a);i.push(c)}}return withControls(i,n,n.duration)}function calcNextTime(e,t,n,o){var i;return r(t)?t:t.startsWith(\"-\")||t.startsWith(\"+\")?Math.max(0,e+parseFloat(t)):\"<\"===t?n:null!==(i=o.get(t))&&void 0!==i?i:e}function eraseKeyframes(e,t,n){for(let o=0;o<e.length;o++){const i=e[o];if(i.at>t&&i.at<n){f(e,i);o--}}}function addKeyframes(e,t,n,o,i,s){eraseKeyframes(e,i,s);for(let r=0;r<t.length;r++)e.push({value:t[r],at:u(i,s,o[r]),easing:d(n,r)})}function compareByTime(e,t){return e.at===t.at?null===e.value?1:-1:e.at-t.at}function timeline(e,t={}){var n;const o=createAnimationsFromTimeline(e,t);const i=o.map((e=>animateStyle(...e))).filter(Boolean);return withControls(i,t,null===(n=o[0])||void 0===n?void 0:n[3].duration)}function createAnimationsFromTimeline(e,t={}){var{defaultOptions:n={}}=t,o=b(t,[\"defaultOptions\"]);const r=[];const a=new Map;const c={};const l=new Map;let f=0;let u=0;let d=0;for(let t=0;t<e.length;t++){const o=e[t];if(g(o)){l.set(o,u);continue}if(!Array.isArray(o)){l.set(o.name,calcNextTime(u,o.at,f,l));continue}const[r,p,v={}]=o;void 0!==v.at&&(u=calcNextTime(u,v.at,f,l));let y=0;const w=resolveElements(r,c);const E=w.length;for(let e=0;e<E;e++){const t=w[e];const o=getElementSequence(t,a);for(const t in p){const r=getValueSequence(t,o);let a=keyframesList(p[t]);const c=getOptions(v,t);let{duration:l=n.duration||i.duration,easing:f=n.easing||i.easing}=c;if(s(f)){const e=isTransform(t);S(2===a.length||!e,\"spring must be provided 2 keyframes within timeline\");const n=f.createAnimation(a,(()=>\"0\"),e);f=n.easing;void 0!==n.keyframes&&(a=n.keyframes);void 0!==n.duration&&(l=n.duration)}const g=resolveOption(v.delay,e,E)||0;const w=u+g;const b=w+l;let{offset:A=m(a.length)}=c;1===A.length&&0===A[0]&&(A[1]=1);const O=length-a.length;O>0&&h(A,O);1===a.length&&a.unshift(null);addKeyframes(r,a,f,A,w,b);y=Math.max(g+l,y);d=Math.max(b,d)}}f=u;u+=y}a.forEach(((e,t)=>{for(const s in e){const a=e[s];a.sort(compareByTime);const c=[];const l=[];const f=[];for(let e=0;e<a.length;e++){const{at:t,value:n,easing:o}=a[e];c.push(n);l.push(p(0,d,t));f.push(o||i.easing)}if(0!==l[0]){l.unshift(0);c.unshift(c[0]);f.unshift(\"linear\")}if(1!==l[l.length-1]){l.push(1);c.push(null)}r.push([t,s,c,Object.assign(Object.assign(Object.assign({},n),{duration:d,easing:f,offset:l}),o)])}}));return r}function getElementSequence(e,t){!t.has(e)&&t.set(e,{});return t.get(e)}function getValueSequence(e,t){t[e]||(t[e]=[]);return t[e]}function createGeneratorEasing(e){const t=new WeakMap;return(n={})=>{const o=new Map;const getGenerator=(t=0,i=100,s=0,r=false)=>{const a=`${t}-${i}-${s}-${r}`;o.has(a)||o.set(a,e(Object.assign({from:t,to:i,velocity:s,restSpeed:r?.05:2,restDistance:r?.01:.5},n)));return o.get(a)};const getKeyframes=e=>{t.has(e)||t.set(e,A(e));return t.get(e)};return{createAnimation:(e,t,n,o,i)=>{var s,r;let a;const c=e.length;let l=n&&c<=2&&e.every(isNumberOrNull);if(l){const n=e[c-1];const l=1===c?null:e[0];let f=0;let u=0;const d=null===i||void 0===i?void 0:i.generator;if(d){const{animation:t,generatorStartTime:n}=i;const o=(null===t||void 0===t?void 0:t.startTime)||n||0;const r=(null===t||void 0===t?void 0:t.currentTime)||performance.now()-o;const a=d(r).current;u=null!==(s=l)&&void 0!==s?s:a;(1===c||2===c&&null===e[0])&&(f=O((e=>d(e).current),r,a))}else u=null!==(r=l)&&void 0!==r?r:parseFloat(t());const g=getGenerator(u,n,f,null===o||void 0===o?void 0:o.includes(\"scale\"));const m=getKeyframes(g);a=Object.assign(Object.assign({},m),{easing:\"linear\"});if(i){i.generator=g;i.generatorStartTime=performance.now()}}else{const e=getKeyframes(getGenerator(0,100));a={easing:\"ease\",duration:e.overshootDuration}}return a}}}}const isNumberOrNull=e=>\"string\"!==typeof e;const N=createGeneratorEasing(x);const F=createGeneratorEasing(V);const U={any:0,all:1};function inView$1(e,t,{root:n,margin:o,amount:i=\"any\"}={}){if(\"undefined\"===typeof IntersectionObserver)return()=>{};const s=resolveElements(e);const r=new WeakMap;const onIntersectionChange=e=>{e.forEach((e=>{const n=r.get(e.target);if(e.isIntersecting!==Boolean(n))if(e.isIntersecting){const n=t(e);\"function\"===typeof n?r.set(e.target,n):a.unobserve(e.target)}else if(n){n(e);r.delete(e.target)}}))};const a=new IntersectionObserver(onIntersectionChange,{root:n,rootMargin:o,threshold:\"number\"===typeof i?i:U[i]});s.forEach((e=>a.observe(e)));return()=>a.disconnect()}const q=new WeakMap;let K;function getElementSize(e,t){if(t){const{inlineSize:e,blockSize:n}=t[0];return{width:e,height:n}}return e instanceof SVGElement&&\"getBBox\"in e?e.getBBox():{width:e.offsetWidth,height:e.offsetHeight}}function notifyTarget({target:e,contentRect:t,borderBoxSize:n}){var o;null===(o=q.get(e))||void 0===o?void 0:o.forEach((o=>{o({target:e,contentSize:t,get size(){return getElementSize(e,n)}})}))}function notifyAll(e){e.forEach(notifyTarget)}function createResizeObserver(){\"undefined\"!==typeof ResizeObserver&&(K=new ResizeObserver(notifyAll))}function resizeElement(e,t){K||createResizeObserver();const n=resolveElements(e);n.forEach((e=>{let n=q.get(e);if(!n){n=new Set;q.set(e,n)}n.add(t);null===K||void 0===K?void 0:K.observe(e)}));return()=>{n.forEach((e=>{const n=q.get(e);null===n||void 0===n?void 0:n.delete(t);(null===n||void 0===n?void 0:n.size)||(null===K||void 0===K?void 0:K.unobserve(e))}))}}const G=new Set;let _;function createWindowResizeHandler(){_=()=>{const e={width:window.innerWidth,height:window.innerHeight};const t={target:window,size:e,contentSize:e};G.forEach((e=>e(t)))};window.addEventListener(\"resize\",_)}function resizeWindow(e){G.add(e);_||createWindowResizeHandler();return()=>{G.delete(e);!G.size&&_&&(_=void 0)}}function resize(e,t){return\"function\"===typeof e?resizeWindow(e):resizeElement(e,t)}const Z=50;const createAxisInfo=()=>({current:0,offset:[],progress:0,scrollLength:0,targetOffset:0,targetLength:0,containerLength:0,velocity:0});const createScrollInfo=()=>({time:0,x:createAxisInfo(),y:createAxisInfo()});const X={x:{length:\"Width\",position:\"Left\"},y:{length:\"Height\",position:\"Top\"}};function updateAxisInfo(e,t,n,o){const i=n[t];const{length:s,position:r}=X[t];const a=i.current;const c=n.time;i.current=e[\"scroll\"+r];i.scrollLength=e[\"scroll\"+s]-e[\"client\"+s];i.offset.length=0;i.offset[0]=0;i.offset[1]=i.scrollLength;i.progress=p(0,i.scrollLength,i.current);const l=o-c;i.velocity=l>Z?0:v(i.current-a,l)}function updateScrollInfo(e,t,n){updateAxisInfo(e,\"x\",t,n);updateAxisInfo(e,\"y\",t,n);t.time=n}function calcInset(e,t){let n={x:0,y:0};let o=e;while(o&&o!==t)if(o instanceof HTMLElement){n.x+=o.offsetLeft;n.y+=o.offsetTop;o=o.offsetParent}else if(o instanceof SVGGraphicsElement&&\"getBBox\"in o){const{top:e,left:t}=o.getBBox();n.x+=t;n.y+=e;while(o&&\"svg\"!==o.tagName)o=o.parentNode}return n}const Y={Enter:[[0,1],[1,1]],Exit:[[0,0],[1,0]],Any:[[1,0],[0,1]],All:[[0,0],[1,1]]};const J={start:0,center:.5,end:1};function resolveEdge(e,t,n=0){let o=0;void 0!==J[e]&&(e=J[e]);if(g(e)){const t=parseFloat(e);e.endsWith(\"px\")?o=t:e.endsWith(\"%\")?e=t/100:e.endsWith(\"vw\")?o=t/100*document.documentElement.clientWidth:e.endsWith(\"vh\")?o=t/100*document.documentElement.clientHeight:e=t}r(e)&&(o=t*e);return n+o}const Q=[0,0];function resolveOffset(e,t,n,o){let i=Array.isArray(e)?e:Q;let s=0;let a=0;if(r(e))i=[e,e];else if(g(e)){e=e.trim();i=e.includes(\" \")?e.split(\" \"):[e,J[e]?e:\"0\"]}s=resolveEdge(i[0],n,o);a=resolveEdge(i[1],t);return s-a}const ee={x:0,y:0};function resolveOffsets(e,t,n){let{offset:o=Y.All}=n;const{target:i=e,axis:s=\"y\"}=n;const r=\"y\"===s?\"height\":\"width\";const a=i!==e?calcInset(i,e):ee;const c=i===e?{width:e.scrollWidth,height:e.scrollHeight}:{width:i.clientWidth,height:i.clientHeight};const l={width:e.clientWidth,height:e.clientHeight};t[s].offset.length=0;let f=!t[s].interpolate;const u=o.length;for(let e=0;e<u;e++){const n=resolveOffset(o[e],l[r],c[r],a[s]);f||n===t[s].interpolatorOffsets[e]||(f=true);t[s].offset[e]=n}if(f){t[s].interpolate=y(m(u),t[s].offset);t[s].interpolatorOffsets=[...t[s].offset]}t[s].progress=t[s].interpolate(t[s].current)}function measure(e,t=e,n){n.x.targetOffset=0;n.y.targetOffset=0;if(t!==e){let o=t;while(o&&o!=e){n.x.targetOffset+=o.offsetLeft;n.y.targetOffset+=o.offsetTop;o=o.offsetParent}}n.x.targetLength=t===e?t.scrollWidth:t.clientWidth;n.y.targetLength=t===e?t.scrollHeight:t.clientHeight;n.x.containerLength=e.clientWidth;n.y.containerLength=e.clientHeight}function createOnScrollHandler(e,t,n,o={}){const i=o.axis||\"y\";return{measure:()=>measure(e,o.target,n),update:t=>{updateScrollInfo(e,n,t);(o.offset||o.target)&&resolveOffsets(e,n,o)},notify:\"function\"===typeof t?()=>t(n):scrubAnimation(t,n[i])}}function scrubAnimation(e,n){e.pause();e.forEachNative(((e,{easing:n})=>{var o,i;if(e.updateDuration){n||(e.easing=t);e.updateDuration(1)}else{const t={duration:1e3};n||(t.easing=\"linear\");null===(i=null===(o=e.effect)||void 0===o?void 0:o.updateTiming)||void 0===i?void 0:i.call(o,t)}}));return()=>{e.currentTime=n.progress}}const te=new WeakMap;const ne=new WeakMap;const oe=new WeakMap;const getEventTarget=e=>e===document.documentElement?window:e;function scroll(e,t={}){var{container:n=document.documentElement}=t,o=b(t,[\"container\"]);let i=oe.get(n);if(!i){i=new Set;oe.set(n,i)}const s=createScrollInfo();const r=createOnScrollHandler(n,e,s,o);i.add(r);if(!te.has(n)){const listener=()=>{const e=performance.now();for(const e of i)e.measure();for(const t of i)t.update(e);for(const e of i)e.notify()};te.set(n,listener);const e=getEventTarget(n);window.addEventListener(\"resize\",listener,{passive:true});n!==document.documentElement&&ne.set(n,resize(n,listener));e.addEventListener(\"scroll\",listener,{passive:true})}const a=te.get(n);const c=requestAnimationFrame(a);return()=>{var t;\"function\"!==typeof e&&e.stop();cancelAnimationFrame(c);const o=oe.get(n);if(!o)return;o.delete(r);if(o.size)return;const i=te.get(n);te.delete(n);if(i){getEventTarget(n).removeEventListener(\"scroll\",i);null===(t=ne.get(n))||void 0===t?void 0:t();window.removeEventListener(\"resize\",i)}}}function hasChanged(e,t){return typeof e!==typeof t||(Array.isArray(e)&&Array.isArray(t)?!shallowCompare(e,t):e!==t)}function shallowCompare(e,t){const n=t.length;if(n!==e.length)return false;for(let o=0;o<n;o++)if(t[o]!==e[o])return false;return true}function isVariant(e){return\"object\"===typeof e}function resolveVariant(e,t){return isVariant(e)?e:e&&t?t[e]:void 0}let ie;function processScheduledAnimations(){if(!ie)return;const e=ie.sort(compareByDepth).map(fireAnimateUpdates);e.forEach(fireNext);e.forEach(fireNext);ie=void 0}function scheduleAnimation(e){if(ie)n(ie,e);else{ie=[e];requestAnimationFrame(processScheduledAnimations)}}function unscheduleAnimation(e){ie&&f(ie,e)}const compareByDepth=(e,t)=>e.getDepth()-t.getDepth();const fireAnimateUpdates=e=>e.animateUpdates();const fireNext=e=>e.next();const motionEvent=(e,t)=>new CustomEvent(e,{detail:{target:t}});function dispatchPointerEvent(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:{originalEvent:n}}))}function dispatchViewEvent(e,t,n){e.dispatchEvent(new CustomEvent(t,{detail:{originalEntry:n}}))}const se={isActive:e=>Boolean(e.inView),subscribe:(e,{enable:t,disable:n},{inViewOptions:o={}})=>{const{once:i}=o,s=b(o,[\"once\"]);return inView$1(e,(o=>{t();dispatchViewEvent(e,\"viewenter\",o);if(!i)return t=>{n();dispatchViewEvent(e,\"viewleave\",t)}}),s)}};const mouseEvent=(e,t,n)=>o=>{if(!o.pointerType||\"mouse\"===o.pointerType){n();dispatchPointerEvent(e,t,o)}};const re={isActive:e=>Boolean(e.hover),subscribe:(e,{enable:t,disable:n})=>{const o=mouseEvent(e,\"hoverstart\",t);const i=mouseEvent(e,\"hoverend\",n);e.addEventListener(\"pointerenter\",o);e.addEventListener(\"pointerleave\",i);return()=>{e.removeEventListener(\"pointerenter\",o);e.removeEventListener(\"pointerleave\",i)}}};const ae={isActive:e=>Boolean(e.press),subscribe:(e,{enable:t,disable:n})=>{const onPointerUp=t=>{n();dispatchPointerEvent(e,\"pressend\",t);window.removeEventListener(\"pointerup\",onPointerUp)};const onPointerDown=n=>{t();dispatchPointerEvent(e,\"pressstart\",n);window.addEventListener(\"pointerup\",onPointerUp)};e.addEventListener(\"pointerdown\",onPointerDown);return()=>{e.removeEventListener(\"pointerdown\",onPointerDown);window.removeEventListener(\"pointerup\",onPointerUp)}}};const ce={inView:se,hover:re,press:ae};const le=[\"initial\",\"animate\",...Object.keys(ce),\"exit\"];const fe=new WeakMap;function createMotionState(e={},t){let n;let o=t?t.getDepth()+1:0;const i={initial:true,animate:true};const s={};const r={};for(const n of le)r[n]=\"string\"===typeof e[n]?e[n]:null===t||void 0===t?void 0:t.getContext()[n];const a=false===e.initial?\"animate\":\"initial\";let c=resolveVariant(e[a]||r[a],e.variants)||{},f=b(c,[\"transition\"]);const u=Object.assign({},f);function*animateUpdates(){var t,o;const s=f;f={};const r={};for(const n of le){if(!i[n])continue;const s=resolveVariant(e[n]);if(s)for(const n in s)if(\"transition\"!==n){f[n]=s[n];r[n]=getOptions(null!==(o=null!==(t=s.transition)&&void 0!==t?t:e.transition)&&void 0!==o?o:{},n)}}const a=new Set([...Object.keys(f),...Object.keys(s)]);const c=[];a.forEach((e=>{var t;void 0===f[e]&&(f[e]=u[e]);if(hasChanged(s[e],f[e])){null!==(t=u[e])&&void 0!==t?t:u[e]=H.get(n,e);c.push(animateStyle(n,e,f[e],r[e]))}}));yield;const d=c.map((e=>e())).filter(Boolean);if(!d.length)return;const g=f;n.dispatchEvent(motionEvent(\"motionstart\",g));Promise.all(d.map((e=>e.finished))).then((()=>{n.dispatchEvent(motionEvent(\"motioncomplete\",g))})).catch(l)}const setGesture=(e,t)=>()=>{i[e]=t;scheduleAnimation(d)};const updateGestureSubscriptions=()=>{for(const t in ce){const o=ce[t].isActive(e);const i=s[t];if(o&&!i)s[t]=ce[t].subscribe(n,{enable:setGesture(t,true),disable:setGesture(t,false)},e);else if(!o&&i){i();delete s[t]}}};const d={update:t=>{if(n){e=t;updateGestureSubscriptions();scheduleAnimation(d)}},setActive:(e,t)=>{if(n){i[e]=t;scheduleAnimation(d)}},animateUpdates:animateUpdates,getDepth:()=>o,getTarget:()=>f,getOptions:()=>e,getContext:()=>r,mount:e=>{S(Boolean(e),\"Animation state must be mounted with valid Element\");n=e;fe.set(n,d);updateGestureSubscriptions();return()=>{fe.delete(n);unscheduleAnimation(d);for(const e in s)s[e]()}},isMounted:()=>Boolean(n)};return d}function createStyles(e){const t={};const n=[];for(let o in e){const i=e[o];if(isTransform(o)){T[o]&&(o=T[o]);n.push(o);o=asTransformCssVar(o)}let s=Array.isArray(i)?i[0]:i;const a=k.get(o);a&&(s=r(i)?a.toDefaultUnit(i):i);t[o]=s}n.length&&(t.transform=buildTransformTemplate(n));return t}const camelLetterToPipeLetter=e=>`-${e.toLowerCase()}`;const camelToPipeCase=e=>e.replace(/[A-Z]/g,camelLetterToPipeLetter);function createStyleString(e={}){const t=createStyles(e);let n=\"\";for(const e in t){n+=e.startsWith(\"--\")?e:camelToPipeCase(e);n+=`: ${t[e]}; `}return n}export{Y as ScrollOffset,animate,animateStyle,createMotionState,createStyleString,createStyles,getAnimationData,getStyleName,F as glide,inView$1 as inView,fe as mountedStates,resize,scroll,N as spring,stagger,H as style,timeline,withControls};\n\n//# sourceMappingURL=index.es.js.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{Children,useLayoutEffect,useEffect,useState,useRef,useMemo,useCallback,cloneElement,startTransition,forwardRef,useImperativeHandle}from\"react\";import{addPropertyControls,ControlType,RenderTarget}from\"framer\";import{useReducedMotion,LayoutGroup,useInView,useMotionValue,useTransform,motion,frame}from\"framer-motion\";import{resize}from\"@motionone/dom\";const MAX_DUPLICATED_ITEMS=100;const directionTransformers={left:offset=>`translateX(-${offset}px)`,right:offset=>`translateX(${offset}px)`,top:offset=>`translateY(-${offset}px)`,bottom:offset=>`translateY(${offset}px)`};/**\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 200\n *\n * @framerDisableUnlink\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight fixed\n */export default function Ticker(props){/* Props */let{slots=[],gap,padding,paddingPerSide,paddingTop,paddingRight,paddingBottom,paddingLeft,speed,hoverFactor,direction,alignment,sizingOptions,fadeOptions,style}=props;const{fadeContent,overflow,fadeWidth,fadeInset,fadeAlpha}=fadeOptions;const{widthType,heightType}=sizingOptions;const paddingValue=paddingPerSide?`${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`:`${padding}px`;/* Checks */const currentTarget=RenderTarget.current();const isCanvas=currentTarget===RenderTarget.canvas||currentTarget===RenderTarget.export;// Remove empty slots (such as hidden layers)\nconst filteredSlots=slots.filter(Boolean);const numChildren=Children.count(filteredSlots);const hasChildren=numChildren>0;if(direction===true){direction=\"left\";}const isHorizontal=direction===\"left\"||direction===\"right\";const offset=useMotionValue(0);const transformer=directionTransformers[direction];const transform=useTransform(offset,transformer);/* Refs and State */const parentRef=useRef(null);const childrenRef=useMemo(()=>{return[{current:null},{current:null}];},[]);const[size,setSize]=useState({parent:null,children:null});/* Arrays */let clonedChildren=null;let dupedChildren=[];/* Duplicate value */let duplicateBy=0;let opacity=0;if(isCanvas){duplicateBy=numChildren?Math.floor(10/numChildren):0;opacity=1;}if(!isCanvas&&hasChildren&&size.parent){duplicateBy=Math.round(size.parent/size.children*2)+1;duplicateBy=Math.min(duplicateBy,MAX_DUPLICATED_ITEMS);opacity=1;}/* Measure parent and child */const measure=useCallback(()=>{if(hasChildren&&parentRef.current){const parentLength=isHorizontal?parentRef.current.offsetWidth:parentRef.current.offsetHeight;const start=childrenRef[0].current?isHorizontal?childrenRef[0].current.offsetLeft:childrenRef[0].current.offsetTop:0;const end=childrenRef[1].current?isHorizontal?childrenRef[1].current.offsetLeft+childrenRef[1].current.offsetWidth:childrenRef[1].current.offsetTop+childrenRef[1].current.offsetHeight:0;const childrenLength=end-start+gap;startTransition(()=>{setSize({parent:parentLength,children:childrenLength});});}},[]);const childrenStyles=isCanvas?{contentVisibility:\"auto\"}:{};/* Add refs to first and last child */if(hasChildren){// TODO: These conditional hooks will be unsafe if hasChildren ever changes outside the canvas.\nif(!isCanvas){/**\n             * Track whether this is the initial resize event. By default this will fire on mount,\n             * which we do in the useEffect. We should only fire it on subsequent resizes.\n             */let initialResize=useRef(true);useLayoutEffect(()=>{frame.read(measure,false,true);return resize(parentRef.current,({contentSize})=>{if(!initialResize.current&&(contentSize.width||contentSize.height)){frame.read(measure,false,true);}initialResize.current=false;});},[]);}clonedChildren=Children.map(filteredSlots,(child,index)=>{let ref;if(index===0){ref=childrenRef[0];}if(index===filteredSlots.length-1){ref=childrenRef[1];}const size={width:widthType?child.props?.width:\"100%\",height:heightType?child.props?.height:\"100%\"};return /*#__PURE__*/_jsx(LayoutGroup,{inherit:\"id\",children:/*#__PURE__*/_jsx(Wrapper,{ref:ref,style:size,children:/*#__PURE__*/cloneElement(child,{style:{...child.props?.style,...size,flexShrink:0,...childrenStyles},layoutId:child.props.layoutId?child.props.layoutId+\"-original-\"+index:undefined},child.props?.children)})});});}const isInView=isCanvas?true:useInView(parentRef);if(!isCanvas){for(let i=0;i<duplicateBy;i++){dupedChildren=dupedChildren.concat(Children.map(filteredSlots,(child,childIndex)=>{const size={width:widthType?child.props?.width:\"100%\",height:heightType?child.props?.height:\"100%\",willChange:!isInView?undefined:\"transform\"};return /*#__PURE__*/_jsx(LayoutGroup,{inherit:\"id\",children:/*#__PURE__*/_jsx(Wrapper,{style:size,children:/*#__PURE__*/cloneElement(child,{key:i+\" \"+childIndex,style:{...child.props?.style,width:widthType?child.props?.width:\"100%\",height:heightType?child.props?.height:\"100%\",flexShrink:0,...childrenStyles},layoutId:child.props.layoutId?child.props.layoutId+\"-dupe-\"+i:undefined},child.props?.children)},i+\"li\"+childIndex)},i+\"lg\"+childIndex);}));}}const animateToValue=size.children+size.children*Math.round(size.parent/size.children);const initialTime=useRef(null);const prevTime=useRef(null);const xOrY=useRef(0);const isHover=useRef(false);const isReducedMotion=useReducedMotion();const listRef=useRef(null);const animationRef=useRef(null);/**\n     * Setup animations\n     */if(!isCanvas){useEffect(()=>{if(isReducedMotion||!animateToValue||!speed){return;}animationRef.current=listRef.current.animate({transform:[transformer(0),transformer(animateToValue)]},{duration:Math.abs(animateToValue)/speed*1e3,iterations:Infinity,easing:\"linear\"});return()=>animationRef.current.cancel();},[hoverFactor,animateToValue,speed]);const playOrPause=useCallback(()=>{if(!animationRef.current)return;const hidden=document.hidden;if(isInView&&!hidden&&animationRef.current.playState===\"paused\"){animationRef.current.play();}else if((!isInView||hidden)&&animationRef.current.playState===\"running\"){animationRef.current.pause();}},[isInView]);useEffect(()=>{playOrPause();},[isInView,hoverFactor,animateToValue,speed]);useEffect(()=>{document.addEventListener(\"visibilitychange\",playOrPause);return()=>{document.removeEventListener(\"visibilitychange\",playOrPause);};},[playOrPause]);}/* Fades */const fadeDirection=isHorizontal?\"to right\":\"to bottom\";const fadeWidthStart=fadeWidth/2;const fadeWidthEnd=100-fadeWidth/2;const fadeInsetStart=clamp(fadeInset,0,fadeWidthStart);const fadeInsetEnd=100-fadeInset;const fadeMask=`linear-gradient(${fadeDirection}, rgba(0, 0, 0, ${fadeAlpha}) ${fadeInsetStart}%, rgba(0, 0, 0, 1) ${fadeWidthStart}%, rgba(0, 0, 0, 1) ${fadeWidthEnd}%, rgba(0, 0, 0, ${fadeAlpha}) ${fadeInsetEnd}%)`;/* Empty state */if(!hasChildren){return /*#__PURE__*/_jsxs(\"section\",{style:placeholderStyles,children:[/*#__PURE__*/_jsx(\"div\",{style:emojiStyles,children:\"✨\"}),/*#__PURE__*/_jsx(\"p\",{style:titleStyles,children:\"Connect to Content\"}),/*#__PURE__*/_jsx(\"p\",{style:subtitleStyles,children:\"Add layers or components to infinitely loop on your page.\"})]});}return /*#__PURE__*/_jsx(\"section\",{style:{...containerStyle,opacity:opacity,WebkitMaskImage:fadeContent?fadeMask:undefined,maskImage:fadeContent?fadeMask:undefined,overflow:overflow?\"visible\":\"hidden\",padding:paddingValue},ref:parentRef,children:/*#__PURE__*/_jsxs(motion.ul,{ref:listRef,style:{...containerStyle,gap:gap,top:direction===\"bottom\"&&isValidNumber(animateToValue)?-animateToValue:undefined,left:direction===\"right\"&&isValidNumber(animateToValue)?-animateToValue:undefined,placeItems:alignment,position:\"relative\",flexDirection:isHorizontal?\"row\":\"column\",...style,willChange:isCanvas||!isInView?\"auto\":\"transform\",transform:transformer(0)},onMouseEnter:()=>{isHover.current=true;if(animationRef.current){// TODO Replace with updatePlaybackRate when Chrome bugs sorted\nanimationRef.current.playbackRate=hoverFactor;}},onMouseLeave:()=>{isHover.current=false;if(animationRef.current){// TODO Replace with updatePlaybackRate when Chrome bugs sorted\nanimationRef.current.playbackRate=1;}},children:[clonedChildren,dupedChildren]})});}const Wrapper=/*#__PURE__*/forwardRef(({children,...props},ref)=>{const innerRef=useRef();const inView=useInView(innerRef);useImperativeHandle(ref,()=>innerRef.current);useEffect(()=>{const current=innerRef.current;if(!current)return;// for a11y: Manage tabIndex on focusable descendants & aria-hidden on the parent.\nif(inView){current.querySelectorAll(\"button,a\").forEach(el=>{const orig=el.dataset.origTabIndex;if(orig)el.tabIndex=orig;else el.removeAttribute(\"tabIndex\");});}else{current.querySelectorAll(\"button,a\").forEach(el=>{const orig=el.getAttribute(\"tabIndex\");if(orig)el.dataset.origTabIndex=orig;el.tabIndex=-1;});}},[inView]);return /*#__PURE__*/_jsx(\"li\",{...props,\"aria-hidden\":!inView,ref:innerRef,children:children});});/* Default Properties */Ticker.defaultProps={gap:10,padding:10,sizingOptions:{widthType:true,heightType:true},fadeOptions:{fadeContent:true,overflow:false,fadeWidth:25,fadeAlpha:0,fadeInset:0},direction:true};/* Property Controls */addPropertyControls(Ticker,{slots:{type:ControlType.Array,title:\"Children\",control:{type:ControlType.ComponentInstance}},speed:{type:ControlType.Number,title:\"Speed\",min:0,max:1e3,defaultValue:100,unit:\"%\",displayStepper:true,step:5},direction:{type:ControlType.Enum,title:\"Direction\",options:[\"left\",\"right\",\"top\",\"bottom\"],optionIcons:[\"direction-left\",\"direction-right\",\"direction-up\",\"direction-down\"],optionTitles:[\"Left\",\"Right\",\"Top\",\"Bottom\"],defaultValue:\"left\",displaySegmentedControl:true},alignment:{type:ControlType.Enum,title:\"Align\",options:[\"flex-start\",\"center\",\"flex-end\"],optionIcons:{direction:{right:[\"align-top\",\"align-middle\",\"align-bottom\"],left:[\"align-top\",\"align-middle\",\"align-bottom\"],top:[\"align-left\",\"align-center\",\"align-right\"],bottom:[\"align-left\",\"align-center\",\"align-right\"]}},defaultValue:\"center\",displaySegmentedControl:true},gap:{type:ControlType.Number,title:\"Gap\"},padding:{title:\"Padding\",type:ControlType.FusedNumber,toggleKey:\"paddingPerSide\",toggleTitles:[\"Padding\",\"Padding per side\"],valueKeys:[\"paddingTop\",\"paddingRight\",\"paddingBottom\",\"paddingLeft\"],valueLabels:[\"T\",\"R\",\"B\",\"L\"],min:0},sizingOptions:{type:ControlType.Object,title:\"Sizing\",controls:{widthType:{type:ControlType.Boolean,title:\"Width\",enabledTitle:\"Auto\",disabledTitle:\"Stretch\",defaultValue:true},heightType:{type:ControlType.Boolean,title:\"Height\",enabledTitle:\"Auto\",disabledTitle:\"Stretch\",defaultValue:true}}},fadeOptions:{type:ControlType.Object,title:\"Clipping\",controls:{fadeContent:{type:ControlType.Boolean,title:\"Fade\",defaultValue:true},overflow:{type:ControlType.Boolean,title:\"Overflow\",enabledTitle:\"Show\",disabledTitle:\"Hide\",defaultValue:false,hidden(props){return props.fadeContent===true;}},fadeWidth:{type:ControlType.Number,title:\"Width\",defaultValue:25,min:0,max:100,unit:\"%\",hidden(props){return props.fadeContent===false;}},fadeInset:{type:ControlType.Number,title:\"Inset\",defaultValue:0,min:0,max:100,unit:\"%\",hidden(props){return props.fadeContent===false;}},fadeAlpha:{type:ControlType.Number,title:\"Opacity\",defaultValue:0,min:0,max:1,step:.05,hidden(props){return props.fadeContent===false;}}}},hoverFactor:{type:ControlType.Number,title:\"Hover\",min:0,max:1,unit:\"x\",defaultValue:1,step:.1,displayStepper:true,description:\"Slows down the speed while you are hovering.\"}});/* Placeholder Styles */const containerStyle={display:\"flex\",width:\"100%\",height:\"100%\",maxWidth:\"100%\",maxHeight:\"100%\",placeItems:\"center\",margin:0,padding:0,listStyleType:\"none\",textIndent:\"none\"};/* Styles */const placeholderStyles={display:\"flex\",width:\"100%\",height:\"100%\",placeContent:\"center\",placeItems:\"center\",flexDirection:\"column\",color:\"#96F\",background:\"rgba(136, 85, 255, 0.1)\",fontSize:11,overflow:\"hidden\",padding:\"20px 20px 30px 20px\"};const emojiStyles={fontSize:32,marginBottom:10};const titleStyles={margin:0,marginBottom:10,fontWeight:600,textAlign:\"center\"};const subtitleStyles={margin:0,opacity:.7,maxWidth:150,lineHeight:1.5,textAlign:\"center\"};/* Clamp function, used for fadeInset */const clamp=(num,min,max)=>Math.min(Math.max(num,min),max);const isValidNumber=value=>typeof value===\"number\"&&!isNaN(value);\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Ticker\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"200\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicWidth\":\"400\",\"framerDisableUnlink\":\"*\",\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Ticker.map","// Generated by Framer (6ca5d98)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,cx,motion,withCSS}from\"framer\";import*as React from\"react\";import{forwardRef}from\"react\";const mask='url(\\'data:image/svg+xml,<svg display=\"block\" role=\"presentation\" viewBox=\"0 0 24 24\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M 10.5 3 L 2.25 3 C 1.007 3 0 4.007 0 5.25 L 0 15.75 C 0 16.993 1.007 18 2.25 18 L 12.75 18 C 13.993 18 15 16.993 15 15.75 L 15 7.5 M 4.5 13.5 L 18 0 M 18 0 L 12.75 0 M 18 0 L 18 5.25\" fill=\"transparent\" height=\"18px\" id=\"F0TgIZX6y\" stroke-dasharray=\"\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"1.5\" stroke=\"var(--szd5nr, black)\" transform=\"translate(3 3)\" width=\"18px\"/></svg>\\') alpha no-repeat center / auto var(--framer-icon-mask-mode, add), var(--framer-icon-mask, none)';const SVG=/*#__PURE__*/forwardRef((props,ref)=>{const{animated,layoutId,children,...rest}=props;return animated?/*#__PURE__*/_jsx(motion.div,{...rest,layoutId:layoutId,ref:ref}):/*#__PURE__*/_jsx(\"div\",{...rest,ref:ref});});const getProps=({height,id,stroke,width,...props})=>{return{...props,YmfIrZ3Ez:stroke??props.YmfIrZ3Ez??\"rgb(0, 0, 0)\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const{style,className,layoutId,variant,YmfIrZ3Ez,...restProps}=getProps(props);return /*#__PURE__*/_jsx(SVG,{...restProps,className:cx(\"framer-Btdzs\",className),layoutId:layoutId,ref:ref,style:{\"--szd5nr\":YmfIrZ3Ez,...style}});});const css=[`.framer-Btdzs { -webkit-mask: ${mask}; aspect-ratio: 1; background-color: var(--szd5nr); mask: ${mask}; width: 24px; }`];/**\n * This is a generated Framer component.\n * @framerIntrinsicWidth 24\n * @framerIntrinsicHeight 24\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n * @framerVariables {\"YmfIrZ3Ez\":\"stroke\"}\n * @framerImmutableVariables true\n * @framerVector {\"name\":\"Arrow Top Right On Square\",\"color\":{\"type\":\"variable\",\"value\":\"szd5nr\"},\"set\":{\"localId\":\"vectorSet/kNBkgkDkJ\",\"id\":\"kNBkgkDkJ\",\"moduleId\":\"DyJDRQD0f0RPOu0ZYoEG\"}}\n * @framerDisableUnlink true\n */const Icon=withCSS(Component,css,\"framer-Btdzs\");Icon.displayName=\"Arrow Top Right On Square\";export default Icon;addPropertyControls(Icon,{YmfIrZ3Ez:{defaultValue:\"rgb(0, 0, 0)\",hidden:false,title:\"Stroke\",type:ControlType.Color}});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Icon\",\"slots\":[],\"annotations\":{\"framerImmutableVariables\":\"true\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"24\",\"framerVector\":\"{\\\"name\\\":\\\"Arrow Top Right On Square\\\",\\\"color\\\":{\\\"type\\\":\\\"variable\\\",\\\"value\\\":\\\"szd5nr\\\"},\\\"set\\\":{\\\"localId\\\":\\\"vectorSet/kNBkgkDkJ\\\",\\\"id\\\":\\\"kNBkgkDkJ\\\",\\\"moduleId\\\":\\\"DyJDRQD0f0RPOu0ZYoEG\\\"}}\",\"framerVariables\":\"{\\\"YmfIrZ3Ez\\\":\\\"stroke\\\"}\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerDisableUnlink\":\"true\",\"framerIntrinsicHeight\":\"24\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","import{RenderTarget}from\"framer\";import{useEffect,useState,useMemo}from\"react\";const cssVariableRegex=/var\\s*\\(\\s*(--[\\w-]+)(?:\\s*,\\s*((?:[^)(]+|\\((?:[^)(]+|\\([^)(]*\\))*\\))*))?\\s*\\)/;export function useColors(...colors){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const isOptimizing=typeof window===\"undefined\";const darkMode=useDarkMode();const[styleValues,setStyleValues]=useState(()=>extractStyleValues(colors.map(extractCSSVariableName)));useEffect(()=>{if(!isCanvas)return;const div=document.body.querySelector(\"main > div\");if(!div)return;const observer=new MutationObserver(()=>{setStyleValues(extractStyleValues(colors.map(extractCSSVariableName)));});observer.observe(div,{attributes:true,attributeFilter:[\"style\"]});return()=>observer.disconnect();},colors);const variableNames=useMemo(()=>colors.map(extractCSSVariableName),[colors]);if(isOptimizing){return colors.map(color=>extractDefaultValue(color));}let values=[];for(let i=0;i<colors.length;i++){const color=colors[i];// Return original value if not a string\nif(typeof color!==\"string\"){values.push(color);continue;}const variableName=variableNames[i];const colorValues=styleValues[variableName];if(variableName&&colorValues){values.push(darkMode?colorValues.dark||colorValues.light||color:colorValues.light||color);}else{values.push(color);}}return values;}////////////////////\nfunction extractStyleValues(variableNames){const isCanvas=RenderTarget.current()===RenderTarget.canvas;const result={};let lightVars={};let darkVars={};if(isCanvas&&typeof document!==\"undefined\"){const div=document.body.querySelector(\"main > div\");if(div){const style=div.getAttribute(\"style\");if(style){const vars=parseVariables(style);lightVars=vars;darkVars=vars;}}}else{const{light,dark}=extractColorStyles();lightVars=parseVariables(light);darkVars=parseVariables(dark);}// Include all variables\nconst allVarNames=new Set([...Object.keys(lightVars),...Object.keys(darkVars)]);allVarNames.forEach(varName=>{result[varName]={light:lightVars[varName]||\"\",dark:darkVars[varName]||\"\"};});return result;}function extractColorStyles(){let lightSection=\"\";let darkSection=\"\";if(typeof document!==\"undefined\"){const styles=document.head.querySelectorAll(\"style[data-framer-css], style[data-framer-css-ssr], style[data-framer-css-ssr-minified]\");for(const style of styles){const rules=style.sheet?.cssRules;if(!rules)continue;const styleRules=[];for(const rule of rules){if(rule instanceof CSSStyleRule){styleRules.push([rule,false]);}else if(rule instanceof CSSMediaRule){if(rule.conditionText===\"(prefers-color-scheme: dark)\"){for(const subrule of rule.cssRules){if(subrule instanceof CSSStyleRule){styleRules.push([subrule,true]);}}}}}for(const[rule,isDarkMedia]of styleRules){const css=rule.cssText;const hasVars=css.includes(\"--token-\");if(!hasVars)continue;const isDark=isDarkMedia?rule.selectorText===\"body\":rule.selectorText==='body[data-framer-theme=\"dark\"]';const isLight=!isDarkMedia&&rule.selectorText===\"body\";if(!isDark&&!isLight)continue;if(isDark){if(!darkSection){darkSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}else{if(!lightSection){lightSection=css.substring(css.indexOf(\"{\")+1,css.lastIndexOf(\"}\")).trim();}}if(darkSection&&lightSection)break;}if(darkSection&&lightSection)break;}}return{light:lightSection,dark:darkSection};}export function useDarkMode(){const isPreview=typeof window!==\"undefined\"&&window.location.origin.endsWith(\"framercanvas.com\");const[isDarkMode,setIsDarkMode]=useState(()=>{if(typeof window===\"undefined\"){return false;}else if(isPreview&&typeof document!==\"undefined\"){return document.body.getAttribute(\"data-framer-theme\")===\"dark\";}else{return window.matchMedia(\"(prefers-color-scheme: dark)\").matches;}});useEffect(()=>{if(isPreview){const observer=new MutationObserver(mutations=>{mutations.forEach(mutation=>{if(mutation.attributeName===\"data-framer-theme\"){const theme=document.body.getAttribute(\"data-framer-theme\");setIsDarkMode(theme===\"dark\");}});});observer.observe(document.body,{attributes:true,attributeFilter:[\"data-framer-theme\"]});return()=>observer.disconnect();}else{const mediaQuery=window.matchMedia(\"(prefers-color-scheme: dark)\");const handleChange=e=>{setIsDarkMode(e.matches);};// Update initial value\nif(mediaQuery.matches!==isDarkMode){setIsDarkMode(mediaQuery.matches);}mediaQuery.addListener(handleChange);return()=>mediaQuery.removeListener(handleChange);}},[isPreview]);return isDarkMode;}function extractCSSVariableName(cssString){if(!cssString||!cssString.startsWith(\"var(\")){return\"\";}const match=cssVariableRegex.exec(cssString);if(match){const variableName=match[1];return variableName||\"\";}return\"\";}function parseVariables(section){const vars={};if(!section)return vars;const declarations=section.split(\";\").filter(Boolean);declarations.forEach(declaration=>{const[name,value]=declaration.split(\":\").map(s=>s.trim());if(name&&value){vars[name]=value;}});return vars;}function extractDefaultValue(cssVar){// Check if the string starts with \"var(\"\nif(!cssVar||!cssVar.startsWith(\"var(\")){return cssVar// Return the original value if it doesn't start with \"var(\"\n;}// Remove \"var(\" from the beginning and \")\" from the end\nconst content=cssVar.slice(4,-1);// Split the content by comma\nconst parts=content.split(\",\");// If there's more than one part, the second part is the default value\nif(parts.length>1){// Trim any whitespace from the default value\nreturn parts.slice(1).join(\",\").trim();}// If there's no comma, return an empty string or null\nreturn\"\";}\nexport const __FramerMetadata__ = {\"exports\":{\"useDarkMode\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useColors\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./useColors.map","function _define_property(obj,key,value){if(key in obj){Object.defineProperty(obj,key,{value:value,enumerable:true,configurable:true,writable:true});}else{obj[key]=value;}return obj;}import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,RenderTarget,Color}from\"framer\";import{useEffect,useState,useRef,useMemo}from\"react\";import{useMotionValue,useSpring}from\"framer-motion\";import{useColors}from\"https://framerusercontent.com/modules/k76epLFsVsF4jlsF5pgg/vhK3G0ntf62fqS2tFDno/useColors.js\";const characterSets={detailed:\"$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\\\\|()1{}[]?-_+~<>i!lI;:,\\\"^`'.\",standard:\"@%#*+=-:.\",blocks:\"█▓▒░ \",binary:\"01\",hex:\"0123456789ABCDEF\"};const DEFAULT_IMAGE={src:\"https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png\",srcSet:\"https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png?scale-down-to=512 512w,https://framerusercontent.com/images/rMjuVOUhT39Hdz1kbwue16ZOySE.png 710w\"};const DEFAULT_FONT={fontFamily:'\"Fragment Mono\", monospace',fontSize:\"12px\",fontStyle:\"normal\",fontWeight:400,letterSpacing:\"0em\",lineHeight:\"1em\"};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n *\n * @framerDisableUnlink\n *\n * @framerIntrinsicWidth 400\n * @framerIntrinsicHeight 400\n */export default function InteractiveASCII(props){const{cursor,backgroundColor,color,font,sizing,style,glow,staticEffect}=props;const isCanvas=RenderTarget.current()===RenderTarget.canvas;const image=props.image||DEFAULT_IMAGE;const sizeMode=style?.width&&style?.height?\"both\":style?.width?\"width\":style?.height?\"height\":\"none\";const isSolidColor=color.mode===\"color\";const ditheringMode=staticEffect?\"noise\":props.ditheringMode;const[text,setText]=useState(\"\");const canvasRef=useRef(null);const ctxRef=useRef(null);const maskCanvasRef=useRef(null);const maskCtxRef=useRef(null);const ref=useRef(null);const textRef=useRef(null);const glowRef=useRef(null);const staticIntervalRef=useRef(null);const{x:cursorX,y:cursorY,initialized:cursorInitialized,initializedRef:cursorInitializedRef}=useFollowCursor(cursor?.smoothing||0,textRef);const lastValuesRef=useRef({cursorX:0,cursorY:0,cursorInitialized,outputWidth:props.outputWidth,characterSet:props.characterSet,customCharacterSet:props.customCharacterSet,ditheringMode,invertColors:props.invertColors,whiteMode:props.whiteMode,blur:props.blur,brightness:props.brightness,contrast:props.contrast,cursorStyle:cursor?.style,cursorInvert:cursor?.invert,cursorWidth:cursor?.width,font});const[color1Value,color2Value]=useColors(isSolidColor?\"#FFF\":color.color1,isSolidColor?\"#FFF\":color.color2);const[color1Color,color2Color]=useMemo(()=>[new Color(color1Value),new Color(color2Value)],[color1Value,color2Value]);const colorInterpolatorRef=useRef(()=>createColorInterpolator(color.mode,color1Color,color2Color));const rngSeedRef=useRef(Math.random());const[img,setImg]=useState(null);const[cursorImg,setCursorImg]=useState(null);useEffect(()=>{if(image?.src){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{setImg(img);};img.src=image.src;return()=>{img.onload=null;};}else{setImg(null);}},[image]);useEffect(()=>{if(cursor?.style===\"image\"&&cursor?.image?.src){const img=new Image;img.crossOrigin=\"anonymous\";img.onload=()=>{setCursorImg(img);};img.src=cursor.image.src;return()=>{img.onload=null;};}else{setCursorImg(null);}},[cursor?.style,cursor?.image]);useEffect(()=>{colorInterpolatorRef.current=createColorInterpolator(color.mode,color1Color,color2Color);},[color1Color,color2Color,color.mode]);useEffect(()=>{lastValuesRef.current={...lastValuesRef.current,outputWidth:props.outputWidth,characterSet:props.characterSet,customCharacterSet:props.customCharacterSet,ditheringMode,invertColors:props.invertColors,whiteMode:props.whiteMode,blur:props.blur,brightness:props.brightness,contrast:props.contrast,font,cursorStyle:cursor?.style,cursorInvert:cursor?.invert,cursorWidth:cursor?.width};},[props.outputWidth,props.characterSet,props.customCharacterSet,ditheringMode,props.invertColors,props.whiteMode,props.blur,props.brightness,props.contrast,font,cursor?.style,cursor?.invert,cursor?.width]);useEffect(()=>{// Initialize canvas and context\nif(!canvasRef.current){canvasRef.current=document.createElement(\"canvas\");ctxRef.current=canvasRef.current.getContext(\"2d\",{willReadFrequently:true});}if(!maskCanvasRef.current){maskCanvasRef.current=document.createElement(\"canvas\");maskCtxRef.current=maskCanvasRef.current.getContext(\"2d\",{willReadFrequently:true});}if(img&&ctxRef.current&&maskCtxRef.current){const loadImage=async()=>{try{const{ascii,grayValues}=generateASCII(img,lastValuesRef.current,canvasRef.current,ctxRef.current,cursorX,cursorY,cursorInitializedRef,textRef,cursorImg,rngSeedRef);setText(ascii);// Update the mask with gradient colors\nif(!isSolidColor){const{outputWidth:asciiWidth}=lastValuesRef.current;const asciiHeight=Math.round(img.height/img.width*asciiWidth*measureFontAspectRatio(font));maskCanvasRef.current.width=asciiWidth;maskCanvasRef.current.height=asciiHeight;const imageData=maskCtxRef.current.getImageData(0,0,asciiWidth,asciiHeight);const data=imageData.data;for(let i=0;i<grayValues.length;i++){const gray=grayValues[i];const point1=color.mode===\"gradient\"?color.color1Point/100:color.threshold/100;const point2=color.mode===\"gradient\"?color.color2Point/100:1;let percent;if(point1===point2){// If points are equal, pick color based on which side of the point the gray value falls\npercent=gray/255<point1?0:1;}else{percent=Math.min(Math.max(mapRange(gray/255,Math.min(point1,point2),Math.max(point1,point2),0,1),0),1);}let interpolatedColor=percent<=point1?color1Color:percent>=point2?color2Color:colorInterpolatorRef.current(percent);const{r,g,b,a}=Color.toRgb(interpolatedColor);const idx=i*4;data[idx]=isNaN(r)?0:r;data[idx+1]=isNaN(g)?0:g;data[idx+2]=isNaN(b)?0:b;data[idx+3]=typeof a===\"number\"?isNaN(a)?0:a*255:255;}maskCtxRef.current.putImageData(imageData,0,0);}}catch(error){console.error(\"Error generating ASCII:\",error);}};let needsUpdate=false;// Subscribe to motion value changes\nconst unsubscribeX=cursorX.on(\"change\",()=>{needsUpdate=true;});const unsubscribeY=cursorY.on(\"change\",()=>{needsUpdate=true;});// Set up interval to check for changes\nconst intervalId=setInterval(()=>{if(needsUpdate){const currentValues={...lastValuesRef.current,cursorInitialized:cursorInitializedRef.current,cursorX:cursorX.get(),cursorY:cursorY.get()};// Check if any values have changed\nconst hasChanged=Object.entries(currentValues).some(([key,value])=>lastValuesRef.current[key]!==value);if(hasChanged){loadImage();lastValuesRef.current=currentValues;}needsUpdate=false;}},24);// Set up static effect interval if enabled\nif(staticEffect&&staticEffect.interval>0&&!(isCanvas&&staticEffect.preview===false)){// Clear any existing interval\nif(staticIntervalRef.current){clearInterval(staticIntervalRef.current);}// Create new interval for static effect\nstaticIntervalRef.current=setInterval(()=>{rngSeedRef.current=Math.random();loadImage();},staticEffect.interval*1e3);}else if(staticIntervalRef.current){// Clear interval if static effect is disabled\nclearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}// Initial load\nloadImage();return()=>{clearInterval(intervalId);if(staticIntervalRef.current){clearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}unsubscribeX();unsubscribeY();};}return()=>{if(canvasRef.current){canvasRef.current.remove();}if(maskCanvasRef.current){maskCanvasRef.current.remove();}if(staticIntervalRef.current){clearInterval(staticIntervalRef.current);staticIntervalRef.current=null;}};},[img,props,cursorX,cursorY,cursorImg,staticEffect]);useEffect(()=>{// Scale text to fit container width\nif(ref.current&&textRef.current){const updateScale=()=>{const containerWidth=ref.current?.offsetWidth;const containerHeight=ref.current?.offsetHeight;const textWidth=textRef.current?.scrollWidth;const textHeight=textRef.current?.scrollHeight;if(textWidth&&textHeight){let scale=1;let width=style?.width||\"auto\";let height=style?.height||\"auto\";switch(sizeMode){case\"width\":scale=containerWidth/textWidth;height=style?.height||`${textHeight*scale}px`;break;case\"height\":scale=containerHeight/textHeight;width=style?.width||`${textWidth*scale}px`;break;case\"both\":const widthScale=containerWidth/textWidth;const heightScale=containerHeight/textHeight;scale=sizing===\"fit\"?Math.min(widthScale,heightScale):Math.max(widthScale,heightScale);break;case\"none\":scale=1;break;}const translate=sizeMode===\"none\"?\"\":`translate(-50%, -50%)`;const transform=`${translate} scale(${scale})`;textRef.current.style.transform=transform;if(glowRef.current){glowRef.current.style.transform=transform;}ref.current.style.width=width;ref.current.style.height=height;}};const resizeObserver=new ResizeObserver(updateScale);resizeObserver.observe(ref.current);resizeObserver.observe(textRef.current);// Initial scale\nupdateScale();return()=>{resizeObserver.disconnect();};}},[text,sizeMode,sizing]);const textStyle={width:\"fit-content\",height:\"fit-content\",color:color.mode===\"color\"?color.color:\"transparent\",userSelect:\"none\",whiteSpace:\"pre\",textAlign:\"center\",transformOrigin:\"center\",fontVariantNumeric:\"tabular-nums\",...sizeMode!==\"none\"?{position:\"absolute\",top:\"50%\",left:\"50%\",transform:\"translate(-50%, -50%)\"}:{},...!isSolidColor?{backgroundImage:`url(${maskCanvasRef.current?.toDataURL()})`,backgroundRepeat:\"no-repeat\",backgroundSize:\"100% 100%\",imageRendering:\"pixelated\",backgroundClip:\"text\",WebkitBackgroundClip:\"text\"}:{},...font};return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{position:\"relative\",overflow:\"hidden\",backgroundColor,borderRadius:props.radius,...style},children:[glow?.blur>0&&glow?.opacity>0&&/*#__PURE__*/_jsx(\"div\",{ref:glowRef,style:{position:\"absolute\",filter:`blur(${glow.blur}px)`,...textStyle,opacity:glow.opacity},\"aria-hidden\":\"true\",children:text}),/*#__PURE__*/_jsx(\"div\",{ref:textRef,style:{...textStyle},\"aria-label\":image?.alt,children:text})]});}InteractiveASCII.displayName=\"Interactive ASCII\";addPropertyControls(InteractiveASCII,{cursor:{type:ControlType.Object,icon:\"effect\",optional:true,defaultValue:{size:20,smoothing:0},controls:{style:{type:ControlType.Enum,defaultValue:\"gradient\",options:[\"gradient\",\"circle\",\"image\"],optionTitles:[\"Gradient\",\"Circle\",\"Image\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},image:{type:ControlType.ResponsiveImage,hidden:props=>props.style!==\"image\"},width:{type:ControlType.Number,defaultValue:20,min:1,max:500,step:1,description:\"Measured in characters\"},invert:{type:ControlType.Boolean,defaultValue:false},smoothing:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1}}},image:{type:ControlType.ResponsiveImage,__defaultAssetReference:\"data:framer/asset-reference,rMjuVOUhT39Hdz1kbwue16ZOySE.png?originalFilename=image.png&preferredSize=auto\"},sizing:{type:ControlType.Enum,defaultValue:\"fit\",options:[\"fit\",\"fill\"],optionTitles:[\"Fit\",\"Fill\"],displaySegmentedControl:true},font:{type:\"font\",defaultFontType:\"monospace\",displayTextAlignment:false,controls:\"extended\",defaultValue:{fontSize:12,lineHeight:1}},color:{type:ControlType.Object,controls:{mode:{type:ControlType.Enum,options:[\"color\",\"gradient\",\"glow\"],optionTitles:[\"Color\",\"Gradient\",\"Glow\"],displaySegmentedControl:true,segmentedControlDirection:\"vertical\"},color:{type:ControlType.Color,defaultValue:\"#fff\",hidden:props=>props.mode!==\"color\"},color1:{type:ControlType.Color,defaultValue:\"#fff\",title:\"Color 1\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"glow\"},color1Point:{type:ControlType.Number,defaultValue:0,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},color2:{type:ControlType.Color,defaultValue:\"#000\",title:\"Color 2\",hidden:props=>props.mode!==\"gradient\"&&props.mode!==\"glow\"},color2Point:{type:ControlType.Number,defaultValue:100,min:0,max:100,step:1,unit:\"%\",title:\"Position\",hidden:props=>props.mode!==\"gradient\"},threshold:{type:ControlType.Number,defaultValue:50,min:0,max:100,step:1,unit:\"%\",hidden:props=>props.mode!==\"glow\"}}},glow:{type:ControlType.Object,optional:true,icon:\"effect\",controls:{blur:{type:ControlType.Number,defaultValue:8,min:1,max:30,step:1},opacity:{type:ControlType.Number,defaultValue:1,min:0,max:1,step:.01}}},staticEffect:{type:ControlType.Object,optional:true,icon:\"effect\",title:\"Static\",controls:{preview:{type:ControlType.Boolean,defaultValue:true,description:\"Show effect in editor\"},interval:{type:ControlType.Number,defaultValue:.1,min:.05,max:1,step:.01,unit:\"s\",description:\"Makes the text change continuously like a static/noise effect\"}}},backgroundColor:{type:ControlType.Color,defaultValue:\"#000\",optional:true,title:\"Background\"},outputWidth:{type:ControlType.Number,defaultValue:100,min:20,max:500,step:1,title:\"Width\"},characterSet:{type:ControlType.Enum,defaultValue:\"detailed\",options:[\"detailed\",\"standard\",\"blocks\",\"binary\",\"hex\",\"custom\"],optionTitles:[`Detailed (${characterSets.detailed})`,`Standard (${characterSets.standard})`,`Blocks (${characterSets.blocks})`,`Binary (${characterSets.binary})`,`Hex (${characterSets.hex})`,\"Custom\"],title:\"Characters\"},customCharacterSet:{type:ControlType.String,defaultValue:\"@%#*+=-:.\",placeholder:\"Character set\",title:\"Custom\",hidden:props=>props.characterSet!==\"custom\"},ditheringMode:{type:ControlType.Enum,defaultValue:\"none\",options:[\"none\",\"floyd\",\"atkinson\",\"ordered\"],optionTitles:[\"None\",\"Floyd-Steinberg\",\"Atkinson\",\"Ordered\"],title:\"Dithering\",hidden:props=>!!props.staticEffect},invertColors:{type:ControlType.Boolean,defaultValue:false,title:\"Invert\"},whiteMode:{type:ControlType.Enum,defaultValue:\"ignore\",options:[\"keep\",\"ignore\"],optionTitles:[\"Keep\",\"Ignore\"],displaySegmentedControl:true,title:\"White\"},blur:{type:ControlType.Number,defaultValue:0,min:0,max:10,step:1,displayStepper:true},brightness:{type:ControlType.Number,defaultValue:0,min:-100,max:100},contrast:{type:ControlType.Number,defaultValue:0,min:-100,max:100},radius:{type:ControlType.BorderRadius,defaultValue:\"0px\",description:\"More components at [Framer University](https://frameruni.link/cc).\"}});// Helper Functions\n// Measure font aspect ratio by creating a temporary element\nfunction measureFontAspectRatio(font){font=font||DEFAULT_FONT;const temp=document.createElement(\"div\");temp.style.position=\"absolute\";temp.style.visibility=\"hidden\";temp.style.whiteSpace=\"nowrap\";temp.style.fontFamily=font.fontFamily;temp.style.fontWeight=font.fontWeight;temp.style.fontSize=font.fontSize;temp.style.lineHeight=font.lineHeight;temp.style.letterSpacing=font.letterSpacing;temp.textContent=\"W\";document.body.appendChild(temp);const width=temp.offsetWidth;const height=temp.offsetHeight;document.body.removeChild(temp);return width/height;}// Clamp a value between min and max.\nfunction clamp(value,min,max){return Math.max(min,Math.min(max,value));}// ASCII Art Generation Functions\n// Generate grayscale 0-255 values from an image.\nfunction generateGrayValues(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg){const{cursorStyle,cursorWidth,cursorInvert,outputWidth:asciiWidth,brightness,contrast:contrastValue,blur:blurValue,invertColors:invertEnabled,font}=props;const contrastFactor=259*(contrastValue+255)/(255*(259-contrastValue));const fontAspectRatio=measureFontAspectRatio(font);const asciiHeight=Math.round(img.height/img.width*asciiWidth*fontAspectRatio);canvas.width=asciiWidth;canvas.height=asciiHeight;ctx.filter=blurValue>0?`blur(${blurValue}px)`:\"none\";ctx.drawImage(img,0,0,asciiWidth,asciiHeight);if(cursorWidth&&cursorInitializedRef.current){// Map cursor coordinates from component space to ASCII grid space\nconst mappedX=cursorX.get()*asciiWidth;const mappedY=cursorY.get()*(asciiHeight/fontAspectRatio);ctx.save();ctx.scale(1,fontAspectRatio);switch(cursorStyle){case\"gradient\":{// Create a radial gradient for the cursor effect\nconst gradient=ctx.createRadialGradient(mappedX,mappedY,0,mappedX,mappedY,cursorWidth/2);if(cursorInvert){gradient.addColorStop(0,\"rgba(255, 255, 255, 1)\");gradient.addColorStop(1,\"rgba(255, 255, 255, 0)\");}else{gradient.addColorStop(0,\"rgba(0, 0, 0, 1)\");gradient.addColorStop(1,\"rgba(0, 0, 0, 0)\");}ctx.fillStyle=gradient;ctx.fillRect(0,0,asciiWidth,asciiHeight/fontAspectRatio);break;}case\"circle\":{ctx.fillStyle=cursorInvert?\"rgba(255, 255, 255, 1)\":\"rgba(0, 0, 0, 1)\";ctx.beginPath();ctx.arc(mappedX,mappedY,cursorWidth/2,0,Math.PI*2);ctx.fill();break;}case\"image\":{if(cursorImg){// Calculate the size of the cursor image in ASCII grid space\nconst cursorHeight=cursorImg.height/cursorImg.width*cursorWidth;// Draw the cursor image centered at the cursor position\nctx.save();if(cursorInvert){ctx.filter=\"invert(1)\";}ctx.drawImage(cursorImg,mappedX-cursorWidth/2,mappedY-cursorHeight/2,cursorWidth,cursorHeight);ctx.restore();}break;}}ctx.restore();}const imageData=ctx.getImageData(0,0,asciiWidth,asciiHeight);const data=imageData.data;const gray=[];for(let i=0;i<data.length;i+=4){let lum=.299*data[i]+.587*data[i+1]+.114*data[i+2];if(invertEnabled)lum=255-lum;let adjusted=clamp(contrastFactor*(lum-128)+128+brightness,0,255);gray.push(adjusted);}return{gray,asciiHeight};}// Generate standard ASCII art (non-DOG modes).\nfunction generateASCII(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg,rngSeedRef){const{outputWidth:asciiWidth,ditheringMode:ditherAlgorithm,characterSet:charset,customCharacterSet,whiteMode}=props;const ignoreWhite=whiteMode===\"ignore\";const gradient=charset===\"custom\"?customCharacterSet||\"0 \":characterSets[charset];const nLevels=gradient.length;const{gray:grayOriginal,asciiHeight}=generateGrayValues(img,props,canvas,ctx,cursorX,cursorY,cursorInitializedRef,containerRef,cursorImg);const gray=[...grayOriginal];let ascii=\"\";if(ditherAlgorithm!==\"none\"){if(ditherAlgorithm===\"floyd\"){// Floyd–Steinberg dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}let computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);const newPixel=computedLevel/(nLevels-1)*255;const error=gray[idx]-newPixel;if(x+1<asciiWidth){gray[idx+1]=clamp(gray[idx+1]+error*(7/16),0,255);}if(x-1>=0&&y+1<asciiHeight){gray[idx-1+asciiWidth]=clamp(gray[idx-1+asciiWidth]+error*(3/16),0,255);}if(y+1<asciiHeight){gray[idx+asciiWidth]=clamp(gray[idx+asciiWidth]+error*(5/16),0,255);}if(x+1<asciiWidth&&y+1<asciiHeight){gray[idx+asciiWidth+1]=clamp(gray[idx+asciiWidth+1]+error*(1/16),0,255);}}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"atkinson\"){// Atkinson dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}let computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);const newPixel=computedLevel/(nLevels-1)*255;const error=gray[idx]-newPixel;const diffusion=error/8;if(x+1<asciiWidth){gray[idx+1]=clamp(gray[idx+1]+diffusion,0,255);}if(x+2<asciiWidth){gray[idx+2]=clamp(gray[idx+2]+diffusion,0,255);}if(y+1<asciiHeight){if(x-1>=0){gray[idx-1+asciiWidth]=clamp(gray[idx-1+asciiWidth]+diffusion,0,255);}gray[idx+asciiWidth]=clamp(gray[idx+asciiWidth]+diffusion,0,255);if(x+1<asciiWidth){gray[idx+asciiWidth+1]=clamp(gray[idx+asciiWidth+1]+diffusion,0,255);}}if(y+2<asciiHeight){gray[idx+2*asciiWidth]=clamp(gray[idx+2*asciiWidth]+diffusion,0,255);}}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"noise\"){const rng=new SeededRandom(rngSeedRef.current);// Noise dithering\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;const randomValue=rng.next();if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const noise=(randomValue-.4)*(255/nLevels);const noisyValue=clamp(gray[idx]+noise,0,255);let computedLevel=Math.round(noisyValue/255*(nLevels-1));line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}else if(ditherAlgorithm===\"ordered\"){// Ordered dithering using a 4x4 Bayer matrix.\nconst bayer=[[0,8,2,10],[12,4,14,6],[3,11,1,9],[15,7,13,5]];const matrixSize=4;for(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const p=gray[idx]/255;const t=(bayer[y%matrixSize][x%matrixSize]+.5)/(matrixSize*matrixSize);let valueWithDither=p+t-.5;valueWithDither=Math.min(Math.max(valueWithDither,0),1);let computedLevel=Math.floor(valueWithDither*nLevels);if(computedLevel>=nLevels)computedLevel=nLevels-1;line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}}else{// Simple mapping without dithering.\nfor(let y=0;y<asciiHeight;y++){let line=\"\";for(let x=0;x<asciiWidth;x++){const idx=y*asciiWidth+x;if(ignoreWhite&&grayOriginal[idx]===255){line+=\" \";continue;}const computedLevel=Math.round(gray[idx]/255*(nLevels-1));line+=gradient.charAt(computedLevel);}ascii+=line+\"\\n\";}}return{ascii,grayValues:gray};}function useFollowCursor(smoothing=0,containerRef){const movementTransition={damping:100,stiffness:mapRange(smoothing,0,100,2e3,50)};const hasSpring=smoothing!==0;const mouseX=useMotionValue(0);const mouseY=useMotionValue(0);const springX=useSpring(mouseX,movementTransition);const springY=useSpring(mouseY,movementTransition);const previousScrollXRef=useRef(0);const previousScrollYRef=useRef(0);const[initialized,setInitialized]=useState(false);const isInitializedRef=useRef(false);useEffect(()=>{const handleMouseMove=event=>{if(!containerRef.current)return;const rect=containerRef.current.getBoundingClientRect();const x=event.clientX-rect.left;const y=event.clientY-rect.top;// Convert to percentages, handling edge cases to prevent infinite values\nconst xPercent=rect.width===0?0:x/rect.width;const yPercent=rect.height===0?0:y/rect.height;mouseX.set(xPercent);mouseY.set(yPercent);if(!isInitializedRef.current){springX.jump(xPercent);springY.jump(yPercent);isInitializedRef.current=true;setInitialized(true);}};const handleScroll=()=>{if(!containerRef.current||!isInitializedRef.current)return;const rect=containerRef.current.getBoundingClientRect();const scrollX=window.scrollX||window.pageXOffset||document.documentElement.scrollLeft;const scrollY=window.scrollY||window.pageYOffset||document.documentElement.scrollTop;// Calculate scroll delta\nconst deltaX=scrollX-previousScrollXRef.current;const deltaY=scrollY-previousScrollYRef.current;// Update previous scroll positions\npreviousScrollXRef.current=scrollX;previousScrollYRef.current=scrollY;// Convert scroll delta to percentage, handling edge cases\nconst deltaXPercent=rect.width===0?0:deltaX/rect.width;const deltaYPercent=rect.height===0?0:deltaY/rect.height;// Update position using scroll delta percentages\nmouseX.set(mouseX.get()+deltaXPercent);mouseY.set(mouseY.get()+deltaYPercent);};window.addEventListener(\"mousemove\",handleMouseMove);window.addEventListener(\"scroll\",handleScroll);return()=>{window.removeEventListener(\"mousemove\",handleMouseMove);window.removeEventListener(\"scroll\",handleScroll);};},[containerRef]);return{initialized,initializedRef:isInitializedRef,x:hasSpring?springX:mouseX,y:hasSpring?springY:mouseY};}function mapRange(value,fromLow,fromHigh,toLow,toHigh){if(fromLow===fromHigh){return toLow;}const percentage=(value-fromLow)/(fromHigh-fromLow);return toLow+percentage*(toHigh-toLow);}function createColorInterpolator(mode,color1,color2){if(mode===\"glow\"){return Color.interpolate(color2,new Color(color2.r,color2.g,color2.b,0));}return Color.interpolate(color1,color2);}class SeededRandom{next(){this.seed=this.seed*16807%2147483647;return(this.seed-1)/2147483646;}constructor(seed){_define_property(this,\"seed\",void 0);this.seed=seed%2147483647;if(this.seed<=0)this.seed+=2147483646;}}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"InteractiveASCII\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"400\",\"framerIntrinsicHeight\":\"400\",\"framerDisableUnlink\":\"*\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}