twombly 0.4.7 → 0.4.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +171 -60
- package/dist/ui/assets/CopyMarks-DRo3-xP6.js +1 -0
- package/dist/ui/assets/Landing-DGRAtYOs.js +111 -0
- package/dist/ui/assets/{LandingStage-PXUGvPUq.js → LandingStage-CJL8RTJG.js} +1 -1
- package/dist/ui/assets/index-DZsgnE_5.css +1 -0
- package/dist/ui/assets/index-TpepII8R.js +10 -0
- package/dist/ui/index.html +7 -3
- package/dist/ui/og.mp4 +0 -0
- package/dist/ui/og.png +0 -0
- package/package.json +1 -1
- package/dist/ui/assets/CopyMarks-D-0Rp6ax.js +0 -1
- package/dist/ui/assets/Landing-DpBLfbxU.js +0 -111
- package/dist/ui/assets/index-ByqIlLL0.css +0 -1
- package/dist/ui/assets/index-DEhmNTRu.js +0 -10
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{n as e,t}from"./rolldown-runtime-WkwZ5CU-.js";var n=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),ee=Symbol.for(`react.lazy`),d=Symbol.for(`react.activity`),te=Symbol.for(`react.view_transition`),f=Symbol.iterator;function ne(e){return typeof e!=`object`||!e?null:(e=f&&e[f]||e[`@@iterator`],typeof e==`function`?e:null)}var re={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},p=Object.assign,ie={};function m(e,t,n){this.props=e,this.context=t,this.refs=ie,this.updater=n||re}m.prototype.isReactComponent={},m.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},m.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function ae(){}ae.prototype=m.prototype;function h(e,t,n){this.props=e,this.context=t,this.refs=ie,this.updater=n||re}var g=h.prototype=new ae;g.constructor=h,p(g,m.prototype),g.isPureReactComponent=!0;var oe=Array.isArray;function _(){}var v={H:null,A:null,T:null,S:null},se=Object.prototype.hasOwnProperty;function y(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function ce(e,t){return y(e.type,t,e.props)}function le(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function ue(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var b=/\/+/g;function x(e,t){return typeof e==`object`&&e&&e.key!=null?ue(``+e.key):t.toString(36)}function S(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(_,_):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function C(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case ee:return c=e._init,C(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+x(e,0):a,oe(o)?(i=``,c!=null&&(i=c.replace(b,`$&/`)+`/`),C(o,r,i,``,function(e){return e})):o!=null&&(le(o)&&(o=ce(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(b,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(oe(e))for(var u=0;u<e.length;u++)a=e[u],s=l+x(a,u),c+=C(a,r,i,s,o);else if(u=ne(e),typeof u==`function`)for(e=u.call(e),u=0;!(a=e.next()).done;)a=a.value,s=l+x(a,u++),c+=C(a,r,i,s,o);else if(s===`object`){if(typeof e.then==`function`)return C(S(e),r,i,a,o);throw r=String(e),Error(`Objects are not valid as a React child (found: `+(r===`[object Object]`?`object with keys {`+Object.keys(e).join(`, `)+`}`:r)+`). If you meant to render a collection of children, use an array instead.`)}return c}function w(e,t,n){if(e==null)return e;var r=[],i=0;return C(e,r,``,``,function(e){return t.call(n,e,i++)}),r}function de(e){if(e._status===-1){var t=e._result,n=t();n.then(function(t){(e._status===0||e._status===-1)&&(e._status=1,e._result=t,n.status===void 0&&(n.status=`fulfilled`,n.value=t))},function(t){(e._status===0||e._status===-1)&&(e._status=2,e._result=t,n.status===void 0&&(n.status=`rejected`,n.reason=t))}),e._status===-1&&(e._status=0,e._result=n)}if(e._status===1)return e._result.default;throw e._result}var fe=typeof reportError==`function`?reportError:function(e){if(typeof window==`object`&&typeof window.ErrorEvent==`function`){var t=new window.ErrorEvent(`error`,{bubbles:!0,cancelable:!0,message:typeof e==`object`&&e&&typeof e.message==`string`?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if(typeof process==`object`&&typeof process.emit==`function`){process.emit(`uncaughtException`,e);return}console.error(e)};function pe(e){var t=v.T,n={};n.types=t===null?null:t.types,v.T=n;try{var r=e(),i=v.S;i!==null&&i(n,r),typeof r==`object`&&r&&typeof r.then==`function`&&r.then(_,fe)}catch(e){fe(e)}finally{t!==null&&n.types!==null&&(t.types=n.types),v.T=t}}function T(e){var t=v.T;if(t!==null){var n=t.types;n===null?t.types=[e]:n.indexOf(e)===-1&&n.push(e)}else pe(T.bind(null,e))}var me={map:w,forEach:function(e,t,n){w(e,function(){t.apply(this,arguments)},n)},count:function(e){var t=0;return w(e,function(){t++}),t},toArray:function(e){return w(e,function(e){return e})||[]},only:function(e){if(!le(e))throw Error(`React.Children.only expected to receive a single React element child.`);return e}};e.Activity=d,e.Children=me,e.Component=m,e.Fragment=r,e.Profiler=a,e.PureComponent=h,e.StrictMode=i,e.Suspense=l,e.ViewTransition=te,e.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=v,e.__COMPILER_RUNTIME={__proto__:null,c:function(e){return v.H.useMemoCache(e)}},e.addTransitionType=T,e.cache=function(e){return function(){return e.apply(null,arguments)}},e.cacheSignal=function(){return null},e.cloneElement=function(e,t,n){if(e==null)throw Error(`The argument must be a React element, but you passed `+e+`.`);var r=p({},e.props),i=e.key;if(t!=null)for(a in t.key!==void 0&&(i=``+t.key),t)!se.call(t,a)||a===`key`||a===`__self`||a===`__source`||a===`ref`&&t.ref===void 0||(r[a]=t[a]);var a=arguments.length-2;if(a===1)r.children=n;else if(1<a){for(var o=Array(a),s=0;s<a;s++)o[s]=arguments[s+2];r.children=o}return y(e.type,i,r)},e.createContext=function(e){return e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null},e.Provider=e,e.Consumer={$$typeof:o,_context:e},e},e.createElement=function(e,t,n){var r,i={},a=null;if(t!=null)for(r in t.key!==void 0&&(a=``+t.key),t)se.call(t,r)&&r!==`key`&&r!==`__self`&&r!==`__source`&&(i[r]=t[r]);var o=arguments.length-2;if(o===1)i.children=n;else if(1<o){for(var s=Array(o),c=0;c<o;c++)s[c]=arguments[c+2];i.children=s}if(e&&e.defaultProps)for(r in o=e.defaultProps,o)i[r]===void 0&&(i[r]=o[r]);return y(e,a,i)},e.createRef=function(){return{current:null}},e.forwardRef=function(e){return{$$typeof:c,render:e}},e.isValidElement=le,e.lazy=function(e){return{$$typeof:ee,_payload:{_status:-1,_result:e},_init:de}},e.memo=function(e,t){return{$$typeof:u,type:e,compare:t===void 0?null:t}},e.startTransition=pe,e.unstable_useCacheRefresh=function(){return v.H.useCacheRefresh()},e.use=function(e){return v.H.use(e)},e.useActionState=function(e,t,n){return v.H.useActionState(e,t,n)},e.useCallback=function(e,t){return v.H.useCallback(e,t)},e.useContext=function(e){return v.H.useContext(e)},e.useDebugValue=function(){},e.useDeferredValue=function(e,t){return v.H.useDeferredValue(e,t)},e.useEffect=function(e,t){return v.H.useEffect(e,t)},e.useEffectEvent=function(e){return v.H.useEffectEvent(e)},e.useId=function(){return v.H.useId()},e.useImperativeHandle=function(e,t,n){return v.H.useImperativeHandle(e,t,n)},e.useInsertionEffect=function(e,t){return v.H.useInsertionEffect(e,t)},e.useLayoutEffect=function(e,t){return v.H.useLayoutEffect(e,t)},e.useMemo=function(e,t){return v.H.useMemo(e,t)},e.useOptimistic=function(e,t){return v.H.useOptimistic(e,t)},e.useReducer=function(e,t,n){return v.H.useReducer(e,t,n)},e.useRef=function(e){return v.H.useRef(e)},e.useState=function(e){return v.H.useState(e)},e.useSyncExternalStore=function(e,t,n){return v.H.useSyncExternalStore(e,t,n)},e.useTransition=function(){return v.H.useTransition()},e.version=`19.3.1`})),r=t(((e,t)=>{t.exports=n()})),i=e(r(),1);async function a(e,t){let n=await fetch(e,{credentials:`same-origin`,...t,headers:{...t?.body?{"content-type":`application/json`}:{},...t?.headers}}),r=await n.json().catch(()=>({}));if(!n.ok)throw Object.assign(Error(r.error||`Failed (${n.status})`),{status:n.status});return r}function o(e,t){fetch(e,{method:`POST`,credentials:`same-origin`,keepalive:!0,headers:{"content-type":`application/json`},body:JSON.stringify(t)}).catch(()=>{})}var s={bootstrap:e=>a(`/api/bootstrap${e?`?canvas=${encodeURIComponent(e)}`:``}`),ticket:(e,t)=>a(`/api/canvases/${e}/ticket`,{method:`POST`,body:JSON.stringify({name:t})}),hostedAccess:(e,t)=>a(`/api/canvases/${e}`,{method:`PATCH`,body:JSON.stringify({access:t})}),access:(e,t)=>a(`/api/canvases/${e}/access`,{method:`POST`,body:JSON.stringify({access:t})}),list:()=>a(`/api/canvases`),forget:e=>a(`/api/shared/${e}`,{method:`DELETE`}),doc:e=>a(`/api/canvases/${e}`),update:(e,t)=>a(`/api/canvases/${e}`,{method:`PATCH`,body:JSON.stringify(t)}),remove:e=>a(`/api/canvases/${e}`,{method:`DELETE`}),members:e=>a(`/api/canvases/${e}/members`),invite:(e,t,n)=>a(`/api/canvases/${e}/members`,{method:`POST`,body:JSON.stringify({email:t,role:n})}),uninvite:(e,t)=>a(`/api/canvases/${e}/members/${encodeURIComponent(t)}`,{method:`DELETE`}),contacts:()=>a(`/api/contacts`),login:()=>a(`/api/login`,{method:`POST`,body:`{}`}),saveSettings:e=>a(`/api/settings`,{method:`POST`,body:JSON.stringify(e)}),signOut:()=>a(`/auth/signout`,{method:`POST`,body:`{}`})},c=5e3;function l(e){return typeof e==`string`?e.replace(/[\u0000-\u001f\u007f]+/g,` `).slice(0,52):null}var u=e=>e===`owner`||e===`editor`,ee=/^[^\s@<>"]{1,64}@[^\s@<>"]{1,190}\.[a-z]{2,}$/i,d=[[`#FDE8D8`,`#2A1793`],[`#EBE1DB`,`#000000`],[`#F1EED7`,`#1D1D1D`],[`#5C5B5A`,`#D0CCC1`],[`#4B493A`,`#F1EED7`],[`#353535`,`#EBE7E0`],[`#685E0E`,`#F1EED7`],[`#514F4B`,`#C9C9C9`],[`#BBBCC9`,`#333553`],[`#525252`,`#F6D19A`],[`#0066FF`,`#FFFFFF`],[`#C4C4C4`,`#000000`],[`#FF9900`,`#000000`],[`#F6D29A`,`#000000`],[`#770000`,`#FFFFFF`],[`#0066FF`,`#E7E7E7`],[`#FCCB33`,`#000000`],[`#32793C`,`#FFFFFF`],[`#000000`,`#FFFFFF`],[`#473024`,`#FF9900`],[`#FF0000`,`#000000`],[`#FFC6C6`,`#000000`],[`#9D9D9D`,`#000000`],[`#0035FF`,`#FFFFFF`],[`#FF5C00`,`#FFFFFF`],[`#FF0000`,`#FFFFFF`],[`#403E32`,`#FFFFFF`],[`#222A46`,`#FFFFFF`],[`#EDECE2`,`#000000`]];function te(e){let t=0;for(let n of String(e))t=t*31+n.charCodeAt(0)>>>0;return d[t%d.length][0]}function f(e){return d.find(([t])=>t===e.toUpperCase())?.[1]??`#FFFFFF`}var ne=`abcdefghijkmnpqrstuvwxyz23456789`;function re(e=12){let t=crypto.getRandomValues(new Uint8Array(e)),n=``;for(let e of t)n+=ne[e%32];return n}var p=e=>{let t,n=new Set,r=(e,r)=>{let i=typeof e==`function`?e(t):e;if(!Object.is(i,t)){let e=t;t=r??(typeof i!=`object`||!i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},i=()=>t,a={setState:r,getState:i,getInitialState:()=>o,subscribe:e=>(n.add(e),()=>n.delete(e))},o=t=e(r,i,a);return a},ie=(e=>e?p(e):p),m=e=>e;function ae(e,t=m){let n=i.useSyncExternalStore(e.subscribe,i.useCallback(()=>t(e.getState()),[e,t]),()=>t(e.getInitialState()));return i.useDebugValue(n),n}var h=e=>{let t=ie(e),n=e=>ae(t,e);return Object.assign(n,t),n},g=(e=>e?h(e):h),oe=.05,_=e=>Math.min(8,Math.max(oe,e)),v=(e,t)=>({x:(e.x-t.x)/t.z,y:(e.y-t.y)/t.z}),se=(e,t)=>({x:t.x+e.x*t.z,y:t.y+e.y*t.z}),y=(e,t,n)=>({...e,x:e.x+t,y:e.y+n});function ce(e,t,n){let r=_(e.z*t),i=r/e.z;return{z:r,x:n.x-(n.x-e.x)*i,y:n.y-(n.y-e.y)*i}}function le(e,t){return{x:Math.min(e.x,t.x),y:Math.min(e.y,t.y),w:Math.abs(t.x-e.x),h:Math.abs(t.y-e.y)}}var ue=(e,t)=>e.x<t.x+t.w&&e.x+e.w>t.x&&e.y<t.y+t.h&&e.y+e.h>t.y;function b(e){if(!e.length)return null;let t=Math.min(...e.map(e=>e.x)),n=Math.min(...e.map(e=>e.y));return{x:t,y:n,w:Math.max(...e.map(e=>e.x+e.w))-t,h:Math.max(...e.map(e=>e.y+e.h))-n}}function x(e,t,n=null,r={x:0,y:0}){let i=t.width<700?16:48,a=_(n===null?Math.min(2,(t.width-i*2)/Math.max(1,e.w),(t.height-i*2)/Math.max(1,e.h)):n),o=(e,t,n)=>{let r=t>n?(t-n)/2+48:0;return Math.max(-r,Math.min(r,e))};return{z:a,x:(t.width-e.w*a)/2-e.x*a+o(r.x,e.w*a,t.width),y:(t.height-e.h*a)/2-e.y*a+o(r.y,e.h*a,t.height)}}function S(e,t,n){let r=t<640?24:96,i=_(Math.min(1,(t-r*2)/Math.max(1,e.w),(n-r*2)/Math.max(1,e.h)));return{z:i,x:t/2-(e.x+e.w/2)*i,y:n/2-(e.y+e.h/2)*i}}var C=e=>[e.x,e.x+e.w/2,e.x+e.w],w=e=>[e.y,e.y+e.h/2,e.y+e.h];function de(e,t,n){let r=null;for(let i of t)for(let t of e){let e=i-t;Math.abs(e)<=n&&(r===null||Math.abs(e)<Math.abs(r))&&(r=e)}return r}function fe(e,t,n){let r=de(C(e),t.flatMap(C),n)??0,i=de(w(e),t.flatMap(w),n)??0,a={...e,x:e.x+r,y:e.y+i},o=[];for(let e of t){for(let t of C(a))C(e).some(e=>Math.abs(e-t)<.5)&&o.push({axis:`x`,pos:t,start:Math.min(a.y,e.y),end:Math.max(a.y+a.h,e.y+e.h)});for(let t of w(a))w(e).some(e=>Math.abs(e-t)<.5)&&o.push({axis:`y`,pos:t,start:Math.min(a.x,e.x),end:Math.max(a.x+a.w,e.x+e.w)})}return{dx:r,dy:i,guides:o}}var pe=class{ticket;onMessage;onState;socket=null;closed=!1;attempts=0;pingTimer=0;retryTimer=0;nextRpc=1;calls=new Map;constructor(e,t,n){this.ticket=e,this.onMessage=t,this.onState=n,this.connect()}async connect(){if(this.closed)return;let e;try{e=await this.ticket()}catch{return this.retry()}if(this.closed)return;let t=new WebSocket(e);this.socket=t,t.onopen=()=>{this.attempts=0,this.onState(!0),window.clearInterval(this.pingTimer),this.pingTimer=window.setInterval(()=>this.send({t:`ping`}),25e3)},t.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(t.t===`rpc`){let e=this.calls.get(t.id);if(!e)return;this.calls.delete(t.id),t.error?e.reject(Error(t.error)):e.resolve(t.result)}else this.onMessage(t)},t.onclose=e=>{if(this.socket===t){window.clearInterval(this.pingTimer),this.onState(!1);for(let e of this.calls.values())e.reject(Error(`Disconnected`));this.calls.clear(),e.code!==4004&&this.retry()}}}retry(){if(this.closed)return;let e=Math.min(8e3,400*2**this.attempts++)+Math.random()*200;window.clearTimeout(this.retryTimer),this.retryTimer=window.setTimeout(()=>this.connect(),e)}send(e){this.socket?.readyState===WebSocket.OPEN&&this.socket.send(JSON.stringify(e))}rpc(e,t){return new Promise((n,r)=>{if(this.socket?.readyState!==WebSocket.OPEN)return r(Error(`Disconnected`));let i=this.nextRpc++;this.calls.set(i,{resolve:n,reject:r}),this.send({t:`rpc`,id:i,op:e,body:t})})}close(){this.closed=!0,window.clearInterval(this.pingTimer),window.clearTimeout(this.retryTimer),this.socket?.close()}};function T(e,t,n,r){let i=(e,t,n)=>3*e*(1-n)**2*n+3*t*(1-n)*n**2+n**3;return a=>{let o=0,s=1;for(let t=0;t<20;t++){let t=(o+s)/2;i(e,n,t)<a?o=t:s=t}return i(t,r,(o+s)/2)}}function me(e,t){let n=2*Math.PI/(e*1.2),r=Math.min(1,Math.max(.05,1-t)),i=e=>{let t=e/1e3;if(t<=0)return 0;if(r>=1)return 1-Math.exp(-n*t)*(1+n*t);let i=n*Math.sqrt(1-r*r);return 1-Math.exp(-r*n*t)*(Math.cos(i*t)+r*n/i*Math.sin(i*t))},a=10;for(;a<6e3&&!(Math.abs(1-i(a))<.001&&Math.abs(i(a)-i(a-10))<5e-4);)a+=10;let o=Array.from({length:61},(e,t)=>t===60?1:Number(i(a*t/60).toFixed(4)));return{ms:a,at:i,css:`linear(${o.join(`, `)})`}}var E=g(()=>({boot:null,canvasId:``,name:``,link:null,connected:!1,ready:!1,gone:!1,closed:!1,role:`guest`,self:``,capabilities:{comments:!1,huddle:!1},peers:[],frames:{},threads:{},camera:{x:0,y:0,z:1},tool:`move`,pencil:{color:matchMedia(`(prefers-color-scheme: dark)`).matches?`#ffffff`:`#1a1a1a`,size:6},strokes:{},liveStroke:null,selectedStroke:null,selection:[],interacting:null,focusId:null,focusReturning:!1,following:null,activeThread:null,draft:null,showResolved:!1,guides:[],marquee:null,spacePanning:!1,awaitingSignIn:!1,shareOpen:!1,shareCopied:!1,sharing:null,namePrompt:null,notice:null,noticeFailed:!1,size:{width:window.innerWidth,height:window.innerHeight},working:!1,invertScroll:!1,dark:!1,chatting:!1,chats:{}})),D=E.setState,O=E.getState,k=new Map,he=new Map,ge=new Set,_e={x:window.innerWidth/2,y:window.innerHeight/2},ve=new Set,ye=e=>(ve.add(e),()=>{ve.delete(e)}),A=null,j=null,be=!1,xe,M=!0;function Se(){F&&O().focusId||(Y=null,M=!1,O().following&&D({following:null}))}function Ce(){M?Le():O().focusId&&P(O().camera)}var N=e=>A?.send(e),we=()=>A;function P(e){let{focusId:t,frames:n,size:r}=O(),i=t?n[t]:null;if(F){if(i)return;L(),De()}if(i){let t=x(i,r,e.z);D({camera:x(i,r,e.z,{x:e.x-t.x,y:e.y-t.y})})}else D({camera:{...e,z:_(e.z)}});Fe()}var Te=360,Ee=T(.22,1,.36,1),F=0,I=null;function L(){cancelAnimationFrame(F),F=0}function De(){I=null,D({focusReturning:!1})}function Oe(e,t,n){if(L(),!t||matchMedia(`(prefers-reduced-motion: reduce)`).matches)return D({camera:e}),Fe(),n?.();let r=O().camera,i=performance.now(),a=t=>{let o=Math.min(1,Math.max(0,t-i)/Te),s=Ee(o);D({camera:{x:r.x+(e.x-r.x)*s,y:r.y+(e.y-r.y)*s,z:r.z+(e.z-r.z)*s}}),Fe(),o<1?F=requestAnimationFrame(a):(F=0,n?.())};F=requestAnimationFrame(a)}function ke(e,t=null){let{frames:n,size:r,camera:i,role:a}=O(),o=n[e];o&&(I??={camera:i,autoFit:M},M=!0,D({focusId:e,focusReturning:!1,following:t,interacting:null,selection:u(a)?[e]:[],selectedStroke:null,activeThread:null,draft:null}),Oe(x(o,r),!0))}function R(e=!0){let{focusId:t,frames:n,role:r,size:i}=O();if(!t||!I)return;M=I.autoFit;let a=b(B()),o=M&&a?S(a,i.width,i.height):I.camera;D({focusId:null,focusReturning:!0,selection:u(r)&&n[t]?[t]:[],activeThread:null,draft:null}),Oe(o,e,De)}function Ae(e){let{focusId:t,frames:n,following:r}=O();if(e!==t){if(e&&n[e])return ke(e,r);t&&(L(),I&&(M=I.autoFit),I=null,D({focusId:null,focusReturning:!1,selection:[],activeThread:null,draft:null}))}}var je=8,Me=8,Ne=e=>e*Math.min(Me,Math.max(1,O().peers.length/je)),Pe=0;function Fe(){Pe||=window.setTimeout(()=>{Pe=0,z()},Ne(66))}function z(){let{camera:e,size:t,peers:n,focusId:r}=O();n.length<2||N({t:`view`,v:{x:(t.width/2-e.x)/e.z,y:(t.height/2-e.y)/e.z,z:e.z,w:t.width,h:t.height,f:r??void 0}})}var B=()=>Object.values(O().frames),Ie=e=>Object.values(e).sort((e,t)=>e.z-t.z||e.id.localeCompare(t.id));function Le(){let e={width:window.innerWidth,height:window.innerHeight},{focusId:t,frames:n}=O();if(t&&n[t])return P(x(n[t],e));let r=b(B());r&&e.width>0&&e.height>0&&P(S(r,e.width,e.height))}function Re(){D({size:{width:window.innerWidth,height:window.innerHeight}}),Ce()}function ze(){M=!0,O().following&&D({following:null}),Le()}function Be(e,t){if(!e.frameId)return{x:e.x,y:e.y};let n=t[e.frameId];return n?{x:n.x+e.x*n.w,y:n.y+e.y*n.h}:null}function Ve(e,t=!1){t&&O().focusId&&O().threads[e]&&O().threads[e].frameId!==O().focusId&&R(!1);let{threads:n,frames:r,camera:i,size:a}=O(),o=n[e];if(!o||(We(o),D({activeThread:e,draft:null,showResolved:o.resolved?!0:O().showResolved}),!t))return;M=!1;let s=Be(o,r);s&&P({...i,x:a.width/2-180-s.x*i.z,y:a.height/2+60-s.y*i.z})}var He=()=>`oc:read:${O().canvasId}`,V=null;function Ue(){if(V)return V;try{V=JSON.parse(localStorage.getItem(He())||`{}`)}catch{V={}}return V}function We(e){let t=e.comments[e.comments.length-1]?.createdAt||0;Ue()[e.id]=t;try{localStorage.setItem(He(),JSON.stringify(V))}catch{}}function Ge(e,t){let n=e.comments[e.comments.length-1];return!!n&&n.author.id!==t&&n.createdAt>(Ue()[e.id]||0)}var Ke=`oc:name`;function qe(){try{return localStorage.getItem(Ke)||``}catch{return``}}function Je(){return!O().peers.find(e=>e.id===O().self)?.guest||qe()?Promise.resolve(!0):new Promise(e=>{D({namePrompt:t=>{D({namePrompt:null});let n=t?.trim();if(!n)return e(!1);try{localStorage.setItem(Ke,n)}catch{}N({t:`name`,name:n}),e(!0)}})})}var Ye=`twombly:invert-scroll`;function Xe(){try{return localStorage.getItem(Ye)===`1`}catch{return!1}}var Ze=()=>O().boot?.mode===`local`||!!O().boot?.me;function Qe(){let e=!O().invertScroll;if(D({invertScroll:e}),Ze())s.saveSettings({invertScroll:e}).catch(()=>q(`Could not save that`));else try{localStorage.setItem(Ye,e?`1`:`0`)}catch{}}var $e=`twombly:theme`,et=matchMedia(`(prefers-color-scheme: dark)`),H=null;try{let e=localStorage.getItem($e);(e===`light`||e===`dark`)&&(H=e)}catch{}function U(){let e=H?H===`dark`:et.matches;document.documentElement.dataset.colorScheme=e?`dark`:`light`;let{pencil:t}=O(),[n,r]=e?[`#1a1a1a`,`#ffffff`]:[`#ffffff`,`#1a1a1a`];D({dark:e,pencil:t.color===n?{...t,color:r}:t})}et.addEventListener(`change`,U),U();function tt(e){H=e;try{localStorage.setItem($e,e)}catch{}U()}function nt(){H=null,U()}function rt(){let e=O().dark?`light`:`dark`;tt(e),Ze()&&s.saveSettings({theme:e}).catch(()=>q(`Could not save that`))}var it=0;function at(e){window.clearTimeout(it),D({working:e>0}),e>0&&(it=window.setTimeout(()=>D({working:!1}),e))}var W=[],ot=[];function G(e){W.push(e),W.length>50&&W.shift(),ot.length=0}function st(e){let{frames:t}=O();if(e.kind===`stroke-added`)return O().strokes[e.stroke.id]?(ht(e.stroke.id),{kind:`stroke-removed`,stroke:e.stroke}):null;if(e.kind===`stroke-removed`)return mt(e.stroke),{kind:`stroke-added`,stroke:e.stroke};if(e.kind===`remove`){for(let t of e.frames)N({t:`frame.restore`,frame:t});return{kind:`restore`,frames:e.frames}}if(e.kind===`restore`){for(let t of e.frames)N({t:`frame.remove`,id:t.id});return{kind:`remove`,frames:e.frames.map(e=>t[e.id]??e)}}let n=e.frames.filter(({id:e})=>t[e]);if(!n.length)return null;let r=n.map(({id:e,before:n})=>({id:e,before:Object.fromEntries(Object.keys(n).map(n=>[n,t[e][n]]))}));for(let{id:e,before:t}of n)dt(e,t);return{kind:`patch`,frames:r}}function ct(e,t){for(;e.length;){let n=st(e.pop());if(n){t.push(n);return}}}function lt(){ct(W,ot)}function ut(){ct(ot,W)}function dt(e,t){let{frames:n}=O();n[e]&&(D({frames:{...n,[e]:{...n[e],...t}}}),N({t:`frame.patch`,id:e,patch:t}))}function ft(e){xt();let t=e===`pencil`||e===`comment`?{selection:[]}:{};D({tool:e,draft:null,selectedStroke:null,...e===`move`?{}:{interacting:null},...t})}function pt(e){D({pencil:{...O().pencil,...e}})}function mt(e){D({strokes:{...O().strokes,[e.id]:e}}),N({t:`stroke.add`,stroke:e})}function ht(e){let{[e]:t,...n}=O().strokes;D({strokes:n,selectedStroke:O().selectedStroke===e?null:O().selectedStroke}),N({t:`stroke.remove`,id:e})}function gt(e){mt(e),G({kind:`stroke-added`,stroke:e})}function _t(){let{selection:e,frames:t,role:n,selectedStroke:r,strokes:i}=O();if(r&&i[r])return G({kind:`stroke-removed`,stroke:i[r]}),ht(r);if(!u(n)||!e.length||O().focusId)return;let a=e.map(e=>t[e]).filter(Boolean);G({kind:`remove`,frames:a});for(let e of a)N({t:`frame.remove`,id:e.id});D({selection:[]})}var vt=300,K=new Map;function yt(e,t){window.clearTimeout(K.get(e));let n=O().chats[e],r=()=>{let{[e]:t,...n}=O().chats;D({chats:n}),K.delete(e)},i=()=>{let t=O().chats[e];if(!t)return r();D({chats:{...O().chats,[e]:{...t,live:!1}}}),K.set(e,window.setTimeout(r,vt))};t?(D({chats:{...O().chats,[e]:{text:t,live:!0}}}),K.set(e,window.setTimeout(i,c))):n&&i()}function bt(){D({chatting:!0})}function xt(){O().chatting&&(D({chatting:!1}),N({t:`chat`,text:null}))}function St(e){let t=O();switch(e.t){case`hello`:{let n={};for(let t of e.doc.frames)n[t.id]=t;let r={};for(let t of e.threads)r[t.id]=t;let i={};for(let t of e.doc.strokes??[])i[t.id]=t;D({self:e.self,role:e.role,frames:n,threads:r,strokes:i,peers:e.peers,capabilities:e.capabilities,name:e.doc.name,ready:!0}),t.focusId&&!n[t.focusId]&&R(),at(e.working),document.title=`${e.doc.name} – Twombly`,Ce();let a=new URLSearchParams(location.search).get(`comment`);a&&r[a]&&(Ve(a,!0),history.replaceState(null,``,location.pathname));let o=qe(),s=e.peers.find(t=>t.id===e.self);s?.guest&&o&&s.name!==o&&N({t:`name`,name:o}),setTimeout(z,100);break}case`peers`:{for(let t of k.keys())e.peers.some(e=>e.id===t)||(k.delete(t),he.delete(t));for(let n of Object.keys(t.chats))e.peers.some(e=>e.id===n)||yt(n,null);let n=t.following&&e.peers.some(e=>e.id===t.following)?t.following:null;D({peers:e.peers,following:n}),e.peers.length>t.peers.length&&setTimeout(z,50);break}case`pointer`:k.set(e.from,e.p);break;case`chat`:yt(e.from,l(e.text));break;case`view`:he.set(e.from,{...e.v,at:performance.now()});break;case`frame.upsert`:{let n=ge.has(e.frame.id)?t.frames[e.frame.id]:null,r=n?{...e.frame,x:n.x,y:n.y,w:n.w,h:n.h}:e.frame;D({frames:{...O().frames,[r.id]:r}}),n||Ce();break}case`frame.remove`:{let{[e.id]:n,...r}=O().frames;D({frames:r,selection:t.selection.filter(t=>t!==e.id),interacting:t.interacting===e.id?null:t.interacting}),t.focusId===e.id&&R();break}case`strokes`:{let t={...O().strokes};for(let n of e.strokes)t[n.id]=n;D({strokes:t});break}case`stroke.remove`:{let{[e.id]:n,...r}=O().strokes;D({strokes:r,selectedStroke:t.selectedStroke===e.id?null:t.selectedStroke});break}case`canvas`:D({name:e.name}),document.title=`${e.name} – Twombly`;break;case`working`:at(e.ms);break;case`thread`:D({threads:{...O().threads,[e.thread.id]:e.thread}}),t.activeThread===e.thread.id&&We(e.thread);break;case`thread.remove`:{let{[e.id]:n,...r}=O().threads;D({threads:r,activeThread:t.activeThread===e.id?null:t.activeThread});break}case`deleted`:Ct();break;case`private`:wt();break;case`error`:q(e.message);break;case`role`:D(t=>({role:e.role,selection:u(e.role)?t.selection:[]}))}for(let t of ve)t(e)}async function Ct(){let{boot:e}=O();if(e?.mode===`local`)return D({link:null,awaitingSignIn:!1}),await s.bootstrap(O().canvasId).catch(()=>null),J();A?.close(),D({gone:!0})}function wt(){A?.close(),D({closed:!0,shareOpen:!1})}var Tt=0;function q(e,t=!1){D({notice:e,noticeFailed:t}),window.clearTimeout(Tt),Tt=window.setTimeout(()=>D({notice:null}),t?5e3:2600)}function J(){A?.close();let e=O().canvasId;A=new pe(()=>s.ticket(e,qe()||void 0).then(e=>e.url,e=>{throw e?.status===403&&wt(),e}),St,e=>D({connected:e}))}var Et=``;function Dt(){let{focusId:e,interacting:t,selection:n,activeThread:r,following:i}=O();return e?{via:`fullscreen`,frames:[e],thread:r,following:!!i}:t?{via:`interacting`,frames:[t],thread:r,following:!!i}:{via:n.length?`selected`:null,frames:n,thread:r,following:!!i}}function Ot(e=!1){let t=Dt(),n=JSON.stringify(t);n===Et&&!e||j?.readyState!==WebSocket.OPEN||(Et=n,j.send(JSON.stringify({t:`context`,context:t})))}var kt=3e4,Y=null,X=!1;addEventListener(`pointerdown`,()=>{X=!0},!0),addEventListener(`pointermove`,e=>{e.buttons||(X=!1)},!0);for(let e of[`pointerup`,`pointercancel`,`blur`])addEventListener(e,()=>{X=!1,setTimeout(Z)},!0);addEventListener(`focusout`,()=>setTimeout(Z),!0),E.subscribe((e,t)=>{Y&&(e.chatting!==t.chatting||e.namePrompt!==t.namePrompt||e.draft!==t.draft)&&Z()});function At(){let{chatting:e,namePrompt:t,draft:n}=O(),r=document.activeElement;return X||e||!!t||!!n||!!r?.matches(`input, textarea, [contenteditable]:not([contenteditable="false"])`)}function Z(e=Y?.message){if(!e)return;if(O().following){Y=null;return}if(At()){Y&&Y.message===e||(Y={message:e,until:Date.now()+kt});return}let t=Y?.message===e&&Date.now()>Y.until;if(Y=null,t)return;let{frames:n,focusId:r,size:i}=O();if(e.t===`focus`){if(!e.frame)return R();n[e.frame]&&e.frame!==r&&ke(e.frame);return}let a=b(e.frames.length?e.frames.map(e=>n[e]).filter(Boolean):B());a&&(r&&R(!1),L(),De(),M=!e.frames.length,Oe(S(a,i.width,i.height),!0))}function jt(e){E.subscribe((e,t)=>{(e.focusId!==t.focusId||e.interacting!==t.interacting||e.selection!==t.selection||e.activeThread!==t.activeThread||e.following!==t.following)&&Ot()});let t=()=>{let n=new WebSocket(`${location.origin.replace(/^http/,`ws`)}/local/${e}?events=1`);j=n,n.onopen=()=>Ot(!0),n.onmessage=e=>{let t;try{t=JSON.parse(e.data)}catch{return}if(t.t===`auth`){let e=O().boot;D({boot:e&&{...e,me:t.me}}),t.me&&be?(be=!1,D({awaitingSignIn:!1,shareOpen:!0})):t.me&&O().link&&J()}else t.t===`settings`?(D({invertScroll:t.settings.invertScroll}),t.settings.theme&&tt(t.settings.theme)):t.t===`share-progress`?D({sharing:{done:t.done,total:t.total}}):t.t===`show`||t.t===`focus`?Z(t):t.t===`shared`&&(D({link:t.url,sharing:null}),J())},n.onclose=()=>{j===n&&setTimeout(t,1500)}};t()}function Mt(){let{boot:e}=O();e?.mode===`local`&&!e.me?(be=!0,D({awaitingSignIn:!0,sharing:null}),s.login().catch(()=>{D({awaitingSignIn:!1}),q(`Could not open sign-in`,!0)})):D({shareOpen:!0})}async function Nt(e){let{boot:t,canvasId:n,link:r}=O();if(t?.mode===`hosted`)return s.hostedAccess(n,e);e===`link`&&!r&&D({sharing:{done:0,total:B().length}});try{let{members:t,url:r}=await s.access(n,e);return e===`link`&&r&&(D({link:r}),Ft(r)),t}finally{D({sharing:null})}}function Pt(e){navigator.clipboard?.writeText(e).then(()=>q(`Link copied`)).catch(()=>{})}function Ft(e){navigator.clipboard?.writeText(e).then(()=>{D({shareCopied:!0}),clearTimeout(xe),xe=setTimeout(()=>D({shareCopied:!1}),1400)}).catch(()=>{})}function It(e){let t=e.canvas;D({boot:e,canvasId:t.id,name:t.name,link:t.url,invertScroll:e.settings?.invertScroll??Xe()}),e.mode===`hosted`&&e.me&&!e.settings&&(Xe()||H)&&s.saveSettings({invertScroll:Xe(),...H&&{theme:H}}).catch(()=>{}),e.mode===`local`&&jt(t.id),J()}var Lt=t((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),Rt=t(((e,t)=>{t.exports=Lt()})),Q=Rt();function zt({name:e,picture:t,color:n,size:r=24,style:i}){return(0,Q.jsx)(`span`,{className:`face`,style:{width:r,height:r,background:n,color:f(n),fontSize:Math.round(r*.46),...i},children:t?(0,Q.jsx)(`img`,{src:t,alt:``,referrerPolicy:`no-referrer`}):(e||`?`)[0].toUpperCase()})}function Bt(){let e=E(e=>e.peers),t=E(e=>e.self),n=E(e=>e.following),r=e.find(e=>e.id===t),i=new Set(r?[r.userId]:[]),a=e.filter(e=>!i.has(e.userId)&&(i.add(e.userId),!0)),o=a.slice(0,5),s=a.length-o.length;return a.length?(0,Q.jsxs)(`div`,{className:`faces`,children:[s>0&&(0,Q.jsxs)(`span`,{className:`face more`,children:[`+`,s]}),o.map(e=>(0,Q.jsx)(`button`,{className:`face-button`+(n===e.id?` following`:``),style:{"--peer":e.color},title:n===e.id?`Stop following ${e.name}`:`Follow ${e.name}`,"aria-label":n===e.id?`Stop following ${e.name}`:`Follow ${e.name}`,onClick:()=>E.setState({following:n===e.id?null:e.id,interacting:null}),children:(0,Q.jsx)(zt,{name:e.name,picture:e.picture,color:e.color})},e.id))]}):null}var $=(e,t=`0 0 24 24`)=>({size:n=16})=>(0,Q.jsx)(`svg`,{width:n,height:n,viewBox:t,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,strokeLinejoin:`round`,"aria-hidden":`true`,children:e}),Vt=`M9.80282 4.62973L15.8364 6.99069C19.3164 8.35243 21.0564 9.03329 20.9987 10.1133C20.941 11.1934 19.1251 11.6886 15.4933 12.6791C14.412 12.974 13.8713 13.1215 13.4964 13.4963C13.1215 13.8712 12.9741 14.4119 12.6791 15.4933C11.6887 19.125 11.1934 20.9409 10.1134 20.9986C9.03335 21.0563 8.35249 19.3163 6.99075 15.8363L4.62979 9.80276C3.20411 6.15934 2.49127 4.33764 3.41448 3.41442C4.3377 2.49121 6.15941 3.20405 9.80282 4.62973Z`,Ht=$((0,Q.jsx)(`path`,{d:Vt})),Ut=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`path`,{d:`M18.5 11.5V8.75C18.5 7.7835 19.2835 7 20.25 7C21.2165 7 22 7.7835 22 8.75V14.8C22 18.7765 18.7764 22 14.8 22H12.0588M8 14L5.61507 11.2176C5.22468 10.7621 4.65476 10.5 4.05489 10.5H3.91898C2.85916 10.5 2 11.3592 2 12.419C2 12.7978 2.11214 13.1682 2.32229 13.4834L5.7812 18.6718C7.16738 20.7511 9.50102 22 12 22`}),(0,Q.jsx)(`path`,{d:`M18.5 8.5V5.75C18.5 4.7835 17.7165 4 16.75 4C15.7835 4 15 4.7835 15 5.75V10.5`}),(0,Q.jsx)(`path`,{d:`M15 10.5V3.75C15 2.7835 14.2165 2 13.25 2C12.2835 2 11.5 2.7835 11.5 3.75V10`}),(0,Q.jsx)(`path`,{d:`M11.5 10V5.75C11.5 4.7835 10.7165 4 9.75 4C8.7835 4 8 4.7835 8 5.75V14`})]})),Wt=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`path`,{d:`M3.78181 16.3092L3 21L7.69086 20.2182C8.50544 20.0825 9.25725 19.6956 9.84119 19.1116L20.4198 8.53288C21.1934 7.75922 21.1934 6.5049 20.4197 5.73126L18.2687 3.58024C17.495 2.80658 16.2406 2.80659 15.4669 3.58027L4.88841 14.159C4.30447 14.7429 3.91757 15.4947 3.78181 16.3092Z`}),(0,Q.jsx)(`path`,{d:`M14 6L18 10`})]})),Gt=$((0,Q.jsx)(`path`,{d:`M18 9.00005C18 9.00005 13.5811 15 12 15C10.4188 15 6 9 6 9`})),Kt=$((0,Q.jsx)(`path`,{d:`M5 13.2592L7.58583 15.9568C8.2525 16.6523 8.58583 17 9.00004 17C9.41425 17 9.74759 16.6523 10.4143 15.9568L19 7`})),qt=$((0,Q.jsx)(`path`,{d:`M12 3.5a8.5 8.5 0 0 1 0 17H3.5V12A8.5 8.5 0 0 1 12 3.5Z`})),Jt=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`path`,{d:`M4 15v-3a8 8 0 0 1 16 0v3`}),(0,Q.jsx)(`rect`,{x:`3`,y:`14`,width:`4.5`,height:`6.5`,rx:`1.5`}),(0,Q.jsx)(`rect`,{x:`16.5`,y:`14`,width:`4.5`,height:`6.5`,rx:`1.5`})]})),Yt=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`rect`,{x:`9`,y:`3`,width:`6`,height:`11`,rx:`3`}),(0,Q.jsx)(`path`,{d:`M5.5 11.5a6.5 6.5 0 0 0 13 0M12 18v3`})]})),Xt=$((0,Q.jsx)(Q.Fragment,{children:(0,Q.jsx)(`path`,{d:`m3.5 3.5 17 17M9 9v2a3 3 0 0 0 4.9 2.3M15 10.5V6a3 3 0 0 0-5.7-1.3M5.5 11.5a6.5 6.5 0 0 0 10.2 5.3M18.5 11.5c0 .7-.1 1.3-.3 1.9M12 18v3`})})),Zt=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`path`,{d:`M10 4H6a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h4`}),(0,Q.jsx)(`path`,{d:`m15 8 4 4-4 4M19 12H9`})]})),Qt=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`circle`,{cx:`12`,cy:`12`,r:`8.5`}),(0,Q.jsx)(`path`,{d:`m8.5 12.2 2.4 2.4 4.6-5`})]})),$t=$((0,Q.jsx)(`path`,{d:`m6.5 6.5 11 11m0-11-11 11`})),en=({size:e=16})=>(0,Q.jsxs)(`svg`,{width:e,height:e,viewBox:`0 0 24 24`,fill:`currentColor`,"aria-hidden":`true`,children:[(0,Q.jsx)(`circle`,{cx:`5`,cy:`12`,r:`1.8`}),(0,Q.jsx)(`circle`,{cx:`12`,cy:`12`,r:`1.8`}),(0,Q.jsx)(`circle`,{cx:`19`,cy:`12`,r:`1.8`})]}),tn=`M12 20.5s-8.5-5-8.5-11A4.75 4.75 0 0 1 12 6.6a4.75 4.75 0 0 1 8.5 2.9c0 6-8.5 11-8.5 11Z`,nn=$((0,Q.jsx)(`path`,{fill:`currentColor`,d:tn})),rn=$((0,Q.jsx)(`path`,{d:tn})),an=$((0,Q.jsx)(`path`,{d:`M4.5 6.5h15M9.5 6.5V5a1.5 1.5 0 0 1 1.5-1.5h2A1.5 1.5 0 0 1 14.5 5v1.5m3.5 0-.7 12a2 2 0 0 1-2 2H8.7a2 2 0 0 1-2-2L6 6.5`})),on=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`circle`,{cx:`12`,cy:`12`,r:`3`}),(0,Q.jsx)(`path`,{d:`M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z`})]})),sn=$((0,Q.jsx)(`path`,{d:`M12 19V5m-6.5 6.5L12 5l6.5 6.5`})),cn=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`circle`,{cx:`12`,cy:`12`,r:`8.5`}),(0,Q.jsx)(`path`,{d:`M8.5 14.5a4.5 4.5 0 0 0 7 0`}),(0,Q.jsx)(`path`,{d:`M9 9.5v.01M15 9.5v.01`,strokeWidth:`2`})]})),ln=$((0,Q.jsx)(`path`,{d:`M12 5.5v13m-6.5-6.5h13`})),un=$((0,Q.jsx)(`path`,{d:`M5.5 12h13`})),dn=$((0,Q.jsx)(`path`,{d:`M10 14a4 4 0 0 0 5.7 0l3-3A4 4 0 0 0 13 5.3l-1 1M14 10a4 4 0 0 0-5.7 0l-3 3a4 4 0 0 0 5.7 5.7l1-1`})),fn=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`rect`,{x:`5`,y:`10.5`,width:`14`,height:`10`,rx:`2.5`}),(0,Q.jsx)(`path`,{d:`M8.5 10.5V8a3.5 3.5 0 0 1 7 0v2.5`})]})),pn=$((0,Q.jsxs)(Q.Fragment,{children:[(0,Q.jsx)(`path`,{d:`M4.5 6h15`,strokeWidth:`1.25`}),(0,Q.jsx)(`path`,{d:`M4.5 12h15`,strokeWidth:`2.25`}),(0,Q.jsx)(`path`,{d:`M4.5 18h15`,strokeWidth:`3.5`})]})),mn=$((0,Q.jsx)(`path`,{d:`M3 12v2.5c0 3.3 0 4.95 1.03 5.97C5.05 21.5 6.7 21.5 10 21.5h4c3.3 0 4.95 0 5.97-1.03C21 19.45 21 17.8 21 14.5V12c0-1.68 0-2.52-.36-3.25-.35-.73-1.02-1.24-2.34-2.28l-2-1.56C14.23 3.3 13.2 2.5 12 2.5s-2.23.8-4.3 2.41l-2 1.56C4.38 7.5 3.71 8.01 3.36 8.74 3 9.47 3 10.31 3 12Z`})),hn=$((0,Q.jsx)(`path`,{d:`M19 12V9c0-1.89 0-2.83-.59-3.41C17.83 5 16.89 5 15 5h-3M5 12v3c0 1.89 0 2.83.59 3.41C6.17 19 7.11 19 9 19h3`})),gn=$((0,Q.jsx)(`path`,{d:`M13 4v3c0 1.89 0 2.83.59 3.41.58.59 1.52.59 3.41.59h3M11 20v-3c0-1.89 0-2.83-.59-3.41C9.83 13 8.89 13 7 13H4`})),_n=$((0,Q.jsx)(`path`,{d:`M8 19V5M3.5 9.5 8 5l4.5 4.5M16 5v14m4.5-4.5L16 19l-4.5-4.5`})),vn=`url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20width%3D'28'%20height%3D'28'%20viewBox%3D'0%200%2028%2028'%3E%3Cpath%20d%3D'M14%203.5a10.5%2010.5%200%200%201%200%2021H3.5V14A10.5%2010.5%200%200%201%2014%203.5Z'%20fill%3D'%23fff'%20stroke%3D'%23000'%20stroke-width%3D'1.5'%2F%3E%3C%2Fsvg%3E") 3 25, crosshair`,yn=`Run npx skills add materic-inc/twombly-skill -g -y, then use the Twombly skill to put this project's main screens on a canvas.`,bn=e=>`Read ${e}.md and join this Twombly canvas with me.`;function xn(){return(0,Q.jsxs)(`span`,{className:`landing-marks`,"aria-hidden":`true`,children:[(0,Q.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,Q.jsx)(`path`,{d:`m4.7144 15.9555 4.7174-2.6471.079-.2307-.079-.1275h-.2307l-.7893-.0486-2.6956-.0729-2.3375-.0971-2.2646-.1214-.5707-.1215-.5343-.7042.0546-.3522.4797-.3218.686.0608 1.5179.1032 2.2767.1578 1.6514.0972 2.4468.255h.3886l.0546-.1579-.1336-.0971-.1032-.0972L6.973 9.8356l-2.55-1.6879-1.3356-.9714-.7225-.4918-.3643-.4614-.1578-1.0078.6557-.7225.8803.0607.2246.0607.8925.686 1.9064 1.4754 2.4893 1.8336.3643.3035.1457-.1032.0182-.0728-.164-.2733-1.3539-2.4467-1.445-2.4893-.6435-1.032-.17-.6194c-.0607-.255-.1032-.4674-.1032-.7285L6.287.1335 6.6997 0l.9957.1336.419.3642.6192 1.4147 1.0018 2.2282 1.5543 3.0296.4553.8985.2429.8318.091.255h.1579v-.1457l.1275-1.706.2368-2.0947.2307-2.6957.0789-.7589.3764-.9107.7468-.4918.5828.2793.4797.686-.0668.4433-.2853 1.8517-.5586 2.9021-.3643 1.9429h.2125l.2429-.2429.9835-1.3053 1.6514-2.0643.7286-.8196.85-.9046.5464-.4311h1.0321l.759 1.1293-.34 1.1657-1.0625 1.3478-.8804 1.1414-1.2628 1.7-.7893 1.36.0729.1093.1882-.0183 2.8535-.607 1.5421-.2794 1.8396-.3157.8318.3886.091.3946-.3278.8075-1.967.4857-2.3072.4614-3.4364.8136-.0425.0304.0486.0607 1.5482.1457.6618.0364h1.621l3.0175.2247.7892.522.4736.6376-.079.4857-1.2142.6193-1.6393-.3886-3.825-.9107-1.3113-.3279h-.1822v.1093l1.0929 1.0686 2.0035 1.8092 2.5075 2.3314.1275.5768-.3218.4554-.34-.0486-2.2039-1.6575-.85-.7468-1.9246-1.621h-.1275v.17l.4432.6496 2.3436 3.5214.1214 1.0807-.17.3521-.6071.2125-.6679-.1214-1.3721-1.9246L14.38 17.959l-1.1414-1.9428-.1397.079-.674 7.2552-.3156.3703-.7286.2793-.6071-.4614-.3218-.7468.3218-1.4753.3886-1.9246.3157-1.53.2853-1.9004.17-.6314-.0121-.0425-.1397.0182-1.4328 1.9672-2.1796 2.9446-1.7243 1.8456-.4128.164-.7164-.3704.0667-.6618.4008-.5889 2.386-3.0357 1.4389-1.882.929-1.0868-.0062-.1579h-.0546l-6.3385 4.1164-1.1293.1457-.4857-.4554.0608-.7467.2307-.2429 1.9064-1.3114Z`})}),(0,Q.jsx)(`svg`,{viewBox:`0 0 24 24`,fill:`currentColor`,children:(0,Q.jsx)(`path`,{d:`M22.2819 9.8211a5.9847 5.9847 0 0 0-.5157-4.9108 6.0462 6.0462 0 0 0-6.5098-2.9A6.0651 6.0651 0 0 0 4.9807 4.1818a5.9847 5.9847 0 0 0-3.9977 2.9 6.0462 6.0462 0 0 0 .7427 7.0966 5.98 5.98 0 0 0 .511 4.9107 6.051 6.051 0 0 0 6.5146 2.9001A5.9847 5.9847 0 0 0 13.2599 24a6.0557 6.0557 0 0 0 5.7718-4.2058 5.9894 5.9894 0 0 0 3.9977-2.9001 6.0557 6.0557 0 0 0-.7475-7.0729zm-9.022 12.6081a4.4755 4.4755 0 0 1-2.8764-1.0408l.1419-.0804 4.7783-2.7582a.7948.7948 0 0 0 .3927-.6813v-6.7369l2.02 1.1686a.071.071 0 0 1 .038.052v5.5826a4.504 4.504 0 0 1-4.4945 4.4944zm-9.6607-4.1254a4.4708 4.4708 0 0 1-.5346-3.0137l.142.0852 4.783 2.7582a.7712.7712 0 0 0 .7806 0l5.8428-3.3685v2.3324a.0804.0804 0 0 1-.0332.0615L9.74 19.9502a4.4992 4.4992 0 0 1-6.1408-1.6464zM2.3408 7.8956a4.485 4.485 0 0 1 2.3655-1.9728V11.6a.7664.7664 0 0 0 .3879.6765l5.8144 3.3543-2.0201 1.1685a.0757.0757 0 0 1-.071 0l-4.8303-2.7865A4.504 4.504 0 0 1 2.3408 7.872zm16.5963 3.8558L13.1038 8.364 15.1192 7.2a.0757.0757 0 0 1 .071 0l4.8303 2.7913a4.4944 4.4944 0 0 1-.6765 8.1042v-5.6772a.79.79 0 0 0-.407-.667zm2.0107-3.0231l-.142-.0852-4.7735-2.7818a.7759.7759 0 0 0-.7854 0L9.409 9.2297V6.8974a.0662.0662 0 0 1 .0284-.0615l4.8303-2.7866a4.4992 4.4992 0 0 1 6.6802 4.66zM8.3065 12.863l-2.02-1.1638a.0804.0804 0 0 1-.038-.0567V6.0742a4.4992 4.4992 0 0 1 7.3757-3.4537l-.142.0805L8.704 5.459a.7948.7948 0 0 0-.3927.6813zm1.0976-2.3654l2.602-1.4998 2.6069 1.4998v2.9994l-2.5974 1.4997-2.6067-1.4997Z`})})]})}var Sn=`twombly:show-copied`;export{ge as $,ln as A,_ as At,tt as B,u as Bt,fn as C,rt as Ct,en as D,T as Dt,un as E,he as Et,zt as F,fe as Ft,Je as G,s as Gt,xt as H,te as Ht,Bt as I,ce as It,ze as J,ke as K,o as Kt,Rt as L,g as Lt,on as M,le as Mt,pn as N,y as Nt,Ht as O,me as Ot,an as P,v as Pt,Ie as Q,gt as R,c as Rt,dn as S,Qe as St,Xt as T,E as Tt,Pt as U,f as Ut,Mt as V,l as Vt,Ft as W,re as Wt,Ae as X,q as Y,nt as Z,Jt as _,P as _t,sn as a,bt as at,mn as b,It as bt,Qt as c,k as ct,$t as d,_t as dt,Ge as et,gn as f,Re as ft,Ut as g,Nt as gt,hn as h,z as ht,bn as i,ye as it,_n as j,ue as jt,Wt as k,se as kt,Kt as l,G as lt,cn as m,N as mt,Sn as n,We as nt,vn as o,Ve as ot,qt as p,we as pt,R as q,r as qt,yn as r,_e as rt,Vt as s,dt as st,xn as t,Ne as tt,Gt as u,ut,nn as v,pt as vt,Yt as w,lt as wt,Zt as x,Be as xt,rn as y,ft as yt,Se as z,ee as zt};
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LandingStage-CJL8RTJG.js","assets/rolldown-runtime-WkwZ5CU-.js","assets/CopyMarks-DRo3-xP6.js","assets/index-TpepII8R.js","assets/index-DZsgnE_5.css","assets/LandingStage-BcivO6Eh.css"])))=>i.map(i=>d[i]);
|
|
2
|
+
import{n as e}from"./rolldown-runtime-WkwZ5CU-.js";import{i as t,n,r,t as i}from"./index-TpepII8R.js";import{A as a,Dt as o,E as s,F as c,Kt as l,L as u,O as d,Ot as f,g as p,j as m,k as h,l as g,n as _,p as ee,qt as v,r as y,s as b,t as x,u as te}from"./CopyMarks-DRo3-xP6.js";var S=e(v(),1),C=.41960295031576633,w=.15,T=.2765523188064277,E=.5783555327868779,D=-44*Math.PI/180,O={x:Math.sin(D),y:-Math.cos(D)},k=(e,t=0,n=1)=>Math.min(n,Math.max(t,e)),A=(e,t,n)=>({x:e.x+t.x*n,y:e.y+t.y*n}),j=e=>Math.hypot(e.x,e.y),M=e=>{let t=j(e);return t<.001?{x:1,y:0}:{x:e.x/t,y:e.y/t}},N=(e,t,n,r)=>({start:e,outgoing:t,incoming:n,end:r});function P(e,t){let n=1-t;return{x:n**3*e.start.x+3*n*n*t*e.outgoing.x+3*n*t*t*e.incoming.x+t**3*e.end.x,y:n**3*e.start.y+3*n*n*t*e.outgoing.y+3*n*t*t*e.incoming.y+t**3*e.end.y}}function F(e,t){let n=k(t),r=Math.min(e.curves.length-1,Math.floor(n*e.curves.length)),i=n===1?1:n*e.curves.length-r,a=e.curves[r],o=1-i,s={x:3*(o*o*(a.outgoing.x-a.start.x)+2*o*i*(a.incoming.x-a.outgoing.x)+i*i*(a.end.x-a.incoming.x))*e.curves.length,y:3*(o*o*(a.outgoing.y-a.start.y)+2*o*i*(a.incoming.y-a.outgoing.y)+i*i*(a.end.y-a.incoming.y))*e.curves.length},c=M(s),l=1-(1-k((n-.99)/.01))**3,u=M({x:c.x*(1-l)+O.x*l,y:c.y*(1-l)+O.y*l});return{point:P(a,i),derivative:s,heading:u}}function I(e,t){let n=e=>!t||e.x>=t.x+20&&e.x<t.x+t.width-20&&e.y>=t.y+20&&e.y<t.y+t.height-20,r=e[0].start,i,a=0,o=0,s=0,c=0,l=n(r);for(let t of e)for(let e=1;e<=24;e++){let u=P(t,e/24),d=u.x-r.x,f=u.y-r.y,p=Math.hypot(d,f);if(a+=p,l&&=n(u),p>.01){let e=Math.atan2(f,d);if(i!==void 0){let t=Math.atan2(Math.sin(e-i),Math.cos(e-i));o+=t*t,s+=Math.abs(t),c=Math.max(c,Math.abs(t))}i=e}r=u}return{length:a,turnEnergy:o,totalTurn:s,sharpestTurn:c,inBounds:l}}function L(e,t,n){let r={x:t.x-e.x,y:t.y-e.y},i=j(r),a=M(r),o=[];if(i<=10)o.push([N(e,A(e,r,1/3),A(e,r,2/3),t)]);else{let n=Math.min(i*C,i*.9,640),r=Math.min(i*w,i*.9,640),s=A(e,O,n),c=A(t,O,-r);o.push([N(e,s,c,t)]),o.push([N(e,A(e,O,n*.65),A(t,O,-r*.65),t)]);let l=O.x*a.y-O.y*a.x<0?-1:1,u={x:a.y*l,y:-a.x*l},d=A({x:(e.x+t.x)/2,y:(e.y+t.y)/2},O,n*.16),f=Math.min(i*T,520),p=Math.min(i*E,440);for(let n of[.55,.8,1.05])for(let r of[.65,1,1.35])for(let i of[1,-1]){let l=A(d,u,f*n*i);o.push([N(e,s,A(l,a,-p*r),l),N(l,A(l,a,p*r),c,t)])}}let s=k((-.08-O.x*a.x-O.y*a.y)/.92);return o.map(e=>{let t=I(e,n),r=Math.max(0,t.length/Math.max(1,i)-1),a=e.length>1,o=t.length+320*r+140*t.turnEnergy+180*t.sharpestTurn+18*t.totalTurn+(a?45:0)+90*s,c=k(.42*k(r/.55)+.38*k(t.totalTurn/(1.4*Math.PI))+.2*k(t.turnEnergy/1.25))*.12,l=k((a?.9:1)*.9*((a?.04:0)+.28*s+.22*k((t.length-180)/760)+.42+c),.12,2.2);return{curves:e,...t,score:o,response:l}})}function R(e,t,n){let r=L(e,t,n),i=r.filter(e=>e.inBounds);return(i.length?i:r).reduce((e,t)=>t.score<e.score?t:e)}var z=(e=0)=>({value:e,velocity:0}),ne=Math.atan2(O.y,O.x)*180/Math.PI,re=1600;function B(e,t,n,r,i){let a=2*Math.PI/n,o=r*a,s=a*Math.sqrt(1-r*r),c=e.value-t,l=(e.velocity+o*c)/s,u=Math.cos(s*i),d=Math.sin(s*i),f=Math.exp(-o*i);e.value=t+f*(c*u+l*d),e.velocity=f*(-o*(c*u+l*d)+s*(-c*d+l*u))}function V(e,t){return e+Math.atan2(Math.sin((t-e)*Math.PI/180),Math.cos((t-e)*Math.PI/180))*180/Math.PI}var ie=class{position;velocity={x:0,y:0};kind=`idle`;target;path;pathScale=1;progress=z();horizontal;vertical;axis=z();baseRotation=z();lean=z();stretch=z();heading=0;constructor(e){this.position={...e},this.target={...e},this.horizontal=z(e.x),this.vertical=z(e.y)}moveTo(e,t,n=!1){if(!Number.isFinite(e.x)||!Number.isFinite(e.y))return;if(this.target={...e},n){this.jumpTo(e);return}this.pathScale=Math.max(.001,t.z);let r=Math.hypot(e.x-this.position.x,e.y-this.position.y)*this.pathScale;if(r<.01&&Math.hypot(this.velocity.x,this.velocity.y)*this.pathScale<12){this.jumpTo(e);return}if(this.horizontal={value:this.position.x,velocity:this.velocity.x},this.vertical={value:this.position.y,velocity:this.velocity.y},this.kind=r<=196?`scoot`:`curve`,this.kind===`scoot`){this.path=void 0;return}let i=e=>({x:e.x*this.pathScale,y:e.y*this.pathScale});this.path=R(i(this.position),i(e),{x:-t.x,y:-t.y,width:t.width,height:t.height});let{derivative:a}=F(this.path,0),o=a.x**2+a.y**2,s=o?(this.velocity.x*a.x+this.velocity.y*a.y)*this.pathScale/o:0;this.progress={value:0,velocity:k(s,0,5/this.path.response)}}jumpTo(e){Object.assign(this.position,e),this.target={...e},this.velocity.x=this.velocity.y=0,this.horizontal=z(e.x),this.vertical=z(e.y),this.axis=z(),this.baseRotation=z(),this.lean=z(),this.stretch=z(),this.progress=z(),this.path=void 0,this.heading=0,this.kind=`idle`}translateBy(e,t){if(Number.isFinite(e)&&Number.isFinite(t)&&(e||t)&&(this.position.x+=e,this.position.y+=t,this.target.x+=e,this.target.y+=t,this.horizontal.value+=e,this.vertical.value+=t,this.path)){let n=n=>({x:n.x+e*this.pathScale,y:n.y+t*this.pathScale});this.path.curves=this.path.curves.map(e=>({start:n(e.start),outgoing:n(e.outgoing),incoming:n(e.incoming),end:n(e.end)}))}}advance(e,t=this.pathScale){if(!(e>0)||!Number.isFinite(e)||this.kind===`idle`&&this.deformationSettled())return!1;if(this.kind===`scoot`)B(this.horizontal,this.target.x,.24,.84,e),B(this.vertical,this.target.y,.24,.84,e),this.position.x=this.horizontal.value,this.position.y=this.vertical.value,this.velocity.x=this.horizontal.velocity,this.velocity.y=this.vertical.velocity;else if(this.kind===`curve`&&this.path){B(this.progress,1,this.path.response,.9,e);let{point:t,derivative:n,heading:r}=F(this.path,this.progress.value);this.position.x=t.x/this.pathScale,this.position.y=t.y/this.pathScale;let i=this.progress.value>=1?0:this.progress.velocity/this.pathScale;this.velocity.x=n.x*i,this.velocity.y=n.y*i,this.heading=V(this.heading,Math.atan2(r.y,r.x)*180/Math.PI-ne)}let n=Math.hypot(this.velocity.x,this.velocity.y)*t,r=this.kind===`scoot`?k(n/re):0,i=n>12?Math.atan2(this.velocity.y,this.velocity.x)*180/Math.PI:this.axis.value;B(this.axis,V(this.axis.value,i),.07,.82,e),B(this.baseRotation,this.kind===`curve`?this.heading:V(this.baseRotation.value,0),.09,.86,e),B(this.stretch,r,.095,.72,e);let a=n>12?k(this.velocity.x*t/n*76*r,-76,76):0;return B(this.lean,a,.055,.76,e),Math.hypot(this.target.x-this.position.x,this.target.y-this.position.y)*t<.05&&n<12&&(this.kind!==`curve`||Math.abs(this.progress.value-1)<.001)&&(Object.assign(this.position,this.target),this.velocity.x=this.velocity.y=0,this.kind=`idle`,this.path=void 0),this.kind===`idle`&&this.deformationSettled()&&(this.baseRotation=z(),this.lean=z(),this.stretch=z()),!0}deformationSettled(){let e=V(0,this.baseRotation.value);return Math.abs(e)<.01&&Math.abs(this.baseRotation.velocity)<.1&&Math.abs(this.lean.value)<.01&&Math.abs(this.lean.velocity)<.1&&Math.abs(this.stretch.value)<1e-4&&Math.abs(this.stretch.velocity)<.001}get bodyTransform(){let e=k(this.stretch.value,0,1);return`rotate(${this.baseRotation.value+this.lean.value}deg) rotate(${this.axis.value}deg) scale(${1+.38*e}, ${1-.18*e}) rotate(${-this.axis.value}deg)`}},H=u(),ae={wide:{width:1280,height:720,columns:3},narrow:{width:640,height:760,columns:2}},U=440,W=340,G={top:84,right:64,bottom:64,left:64},K=[1,2,3,4,5,6],q=[{name:`Avery Kim`,color:`#3b82f6`},{name:`Mo Rivera`,color:`#10b981`},{name:`Jules Sato`,color:`#f59e0b`}],oe=[[`AK`,`#3b82f6`,`Avery Kim`,`commented on Checkout redesign`,`2m`],[`MR`,`#10b981`,`Mo Rivera`,`approved your pull request`,`14m`],[`JS`,`#f59e0b`,`Jules Sato`,`shared Q4 roadmap with you`,`1h`],[`TN`,`#ef4444`,`Tess Novak`,`mentioned you in Launch plan`,`3h`],[`RO`,`#8b5cf6`,`Rae Okafor`,`invited you to Brand review`,`5h`],[`LB`,`#0ea5e9`,`Lee Brandt`,`resolved your comment`,`1d`],[`NH`,`#ec4899`,`Noor Haddad`,`added you to Onboarding`,`2d`],[`IC`,`#14b8a6`,`Ines Costa`,`replied to your comment`,`2d`],[`DV`,`#f97316`,`Dev Varma`,`shared Pricing page with you`,`3d`]],se=`#e5484d`,ce=5,le=f(.45,.28),ue=f(1.1,0),de=f(.3,0),J=(e,t)=>({x:e%t*496,y:Math.floor(e/t)*412});function fe(e,t,n){let r=.5,i=e-.5,a=t-.5;return`M ${r+n} ${r} H ${i-n} A ${n} ${n} 0 0 1 ${i} ${r+n} V ${a-n} A ${n} ${n} 0 0 1 ${i-n} ${a} H ${r+n} A ${n} ${n} 0 0 1 ${r} ${a-n} V ${r+n} A ${n} ${n} 0 0 1 ${r+n} ${r} Z`}function pe({version:e,rows:t=4}){return(0,H.jsxs)(`div`,{className:`ld-design`,"data-v":e,children:[(0,H.jsx)(`h1`,{children:`Notifications`}),oe.slice(0,t).map(([e,t,n,r,i])=>(0,H.jsxs)(`div`,{className:`ld-n`,children:[(0,H.jsx)(`span`,{className:`ld-av`,style:{background:t},children:e}),(0,H.jsxs)(`div`,{children:[(0,H.jsx)(`div`,{className:`ld-t`,children:n}),(0,H.jsx)(`div`,{className:`ld-d`,children:r})]}),(0,H.jsx)(`span`,{className:`ld-w`,children:i})]},n))]})}function Y({color:e,name:t,id:n}){return(0,H.jsxs)(`div`,{className:`cursor ld-cursor`,"data-cursor":n,style:{color:e},children:[(0,H.jsx)(`svg`,{width:`22`,height:`22`,viewBox:`0 0 24 24`,children:(0,H.jsx)(`path`,{d:b,fill:`currentColor`,stroke:`#fff`,strokeWidth:`1.5`,strokeLinejoin:`round`})}),t&&(0,H.jsx)(`span`,{className:`cursor-label`,style:{background:e},children:t})]})}function me({id:e,person:t,text:n}){let{name:r,color:i}=q[t];return(0,H.jsxs)(`div`,{className:`comment-pin ld-pin`,"data-pin":e,children:[(0,H.jsx)(c,{name:r,picture:null,color:i}),(0,H.jsxs)(`span`,{className:`comment-pin-preview`,children:[(0,H.jsxs)(`span`,{className:`comment-pin-head`,children:[(0,H.jsx)(`b`,{children:r}),` `,(0,H.jsx)(`span`,{className:`muted`,children:`now`})]}),(0,H.jsx)(`span`,{className:`comment-pin-text`,children:n})]})]})}function he(e,t){let n=ae[t],i=t=>e.querySelector(t),a=i(`.ld-world`),o=i(`[data-zoom]`),s=i(`.ld-scene`),c=i(`.faces`),l=i(`.share-button`),u=i(`.share-sharing`),d=i(`.share-sharing i`),p=i(`.share-split`),m=i(`.ld-strokes path`),h=[...e.querySelectorAll(`.ld-frame`)],g=[...c.children],_={a:i(`[data-pin="a"]`),b:i(`[data-pin="b"]`)},ee={width:n.width,height:n.height,x:0,y:0,z:1},v=new Set,y=0,b=0,x=!1,te=e=>{y=requestAnimationFrame(te);let t=Math.min(50,e-b);b=e;for(let e of v)e(t)||v.delete(e)},S=e=>{e!==x&&(x=e,cancelAnimationFrame(y),e&&(b=performance.now(),y=requestAnimationFrame(te)))},C=e=>new Promise(t=>{let n=e;v.add(e=>(n-=e,n>0||(t(),!1)))}),w=(e,t)=>new Promise(n=>{let r=0;v.add(i=>(r+=i,r<e.ms?(t(e.at(r)),!0):(t(1),n(),!1)))}),T=(e,t)=>w({ms:e,at:t=>t/e,css:``},t),E={x:0,y:0,z:1},D=e=>{E=e,a.style.transform=`translate(${e.x}px, ${e.y}px) scale(${e.z})`,a.style.setProperty(`--inv`,String(1/e.z)),a.style.setProperty(`--zoom`,String(e.z)),o.textContent=`${Math.round(e.z*100)}%`},O=e=>{let t=K.slice(0,e).map((e,t)=>J(t,n.columns)),r=Math.max(...t.map(e=>e.x))+U,i=Math.max(...t.map(e=>e.y))+W,a={width:n.width-G.left-G.right,height:n.height-G.top-G.bottom},o=Math.min(1,a.width/r,a.height/i);return{z:o,x:G.left+(a.width-r*o)/2,y:G.top+(a.height-i*o)/2}},k=e=>{let t=E;return w(ue,n=>D({x:t.x+(e.x-t.x)*n,y:t.y+(e.y-t.y)*n,z:t.z+(e.z-t.z)*n}))},A=(e,t,r,i=O(K.length))=>{let a=J(e-1,n.columns);return{x:i.x+(a.x+U*t)*i.z,y:i.y+(a.y+W*r)*i.z}},j=e=>{let t=i(`[data-cursor="${e}"]`),n=t.querySelector(`svg`),r=new ie({x:0,y:0}),a=()=>{t.style.transform=`translate3d(${r.position.x}px, ${r.position.y}px, 0)`,n.style.transform=r.bodyTransform};return v.add(e=>(r.advance(e/1e3,1),a(),!0)),{el:t,place(e){r.jumpTo(e),t.style.opacity=`1`,a()},hide(){t.style.opacity=`0`},move(e){return r.moveTo(e,ee),new Promise(e=>v.add(()=>r.kind!==`idle`||(e(),!1)))}}},M=j(`you`),N=[j(`0`),j(`1`),j(`2`)],P=e=>w(le,t=>{e.style.opacity=String(Math.min(1,t*1.6)),e.style.scale=String(.6+.4*t)}),F=async e=>{await T(90,t=>{e.style.scale=String(1-.05*t)}),await T(120,t=>{e.style.scale=String(.95+.05*t)})},I=e=>(c.style.display=``,e.style.display=``,P(e)),L=(e,t)=>{e.style.left=`${t.x}px`,e.style.top=`${t.y}px`},R=()=>{let e=A(3,.5,.5),t=O(K.length),n=U*t.z*.56,r=W*t.z*.58;return Array.from({length:110},(t,i)=>{let a=i/109,o=-2.4+a*1.85*Math.PI*2,s=1+.06*Math.sin(a*9)+a*.05;return[e.x+Math.cos(o)*n*s+a*8,e.y+Math.sin(o)*r*s-a*6,.5]})},z=()=>{for(let e of h)e.style.opacity=`0`,e.style.scale=`0.6`;for(let e of g)e.style.opacity=`0`,e.style.scale=`0.6`,e.style.display=`none`;c.style.display=`none`;for(let e of Object.values(_))e.style.opacity=`0`,e.style.scale=`0.6`,e.classList.remove(`expanded`);for(let e of[M,...N])e.hide();l.style.display=``,u.style.display=`none`,p.style.display=`none`,m.setAttribute(`d`,``),s.style.opacity=`1`,c.style.opacity=`1`,D(O(1))},ne=()=>{for(let e of[...h,...g,...Object.values(_)])e.style.opacity=`1`,e.style.scale=`1`;for(let e of g)e.style.display=``;c.style.display=``,L(_.a,A(2,.72,.34)),L(_.b,A(5,.3,.36)),_.b.classList.add(`expanded`),D(O(K.length)),m.setAttribute(`d`,r({points:R(),size:ce})),N[0].place(A(2,.34,.8)),N[1].place(A(5,.86,.7)),N[2].place(A(3,.92,.9))},re=async()=>{let t=1500;for(;;){z(),await C(t),t=500;for(let e=0;e<h.length;e++)P(h[e]),e&&k(O(e+1)),await C(e?720:1e3);await C(700),M.place({x:n.width*.74,y:n.height+30});let i=e.getBoundingClientRect(),a=i.width/n.width;await M.move((e=>{let t=e.getBoundingClientRect();return{x:(t.left+t.width/2-i.left)/a,y:(t.top+t.height/2-i.top)/a}})(l)),await F(l),l.style.display=`none`,u.style.display=``,d.style.width=`6%`,await w(f(1,0),e=>{d.style.width=`${6+94*e}%`}),u.style.display=`none`,p.style.display=``,p.dataset.copied=``,M.move(A(1,.8,1.08)),await C(1e3),delete p.dataset.copied,N[0].place({x:-30,y:n.height*.42}),I(g[2]),await N[0].move(A(2,.72,.34)),N[1].place({x:n.width*.3,y:n.height+30}),I(g[1]),L(_.a,A(2,.72,.34)),P(_.a),N[0].move(A(2,.34,.8)),await N[1].move(A(5,.3,.36)),L(_.b,A(5,.3,.36)),await P(_.b),await C(250),_.b.classList.add(`expanded`),N[1].move(A(5,.86,.7));let o=R();N[2].place({x:n.width+30,y:n.height*.3}),I(g[0]),await N[2].move({x:o[0][0],y:o[0][1]}),await T(1500,e=>{let t=Math.max(2,Math.ceil(e*o.length));m.setAttribute(`d`,r({points:o.slice(0,t),size:ce}));let[n,i]=o[t-1];N[2].place({x:n,y:i})}),await C(400),N[2].move(A(3,.92,.9)),await C(1400),N[0].move(A(1,.5,.42)),await C(1100),N[1].move(A(4,.72,.62)),await C(2200),await T(420,e=>{s.style.opacity=String(1-e),c.style.opacity=String(1-e)}),await w(de,()=>{})}};if(matchMedia(`(prefers-reduced-motion: reduce)`).matches)return z(),ne(),()=>{};re();let B=new IntersectionObserver(([e])=>S(e.isIntersecting));return B.observe(e),()=>{B.disconnect(),S(!1),v.clear()}}function ge(){let e=(0,S.useRef)(null),t=(0,S.useRef)(null),[n,r]=(0,S.useState)(0),i=n&&n<720?`narrow`:`wide`,o=ae[i];(0,S.useLayoutEffect)(()=>{let t=new ResizeObserver(([e])=>r(e.contentRect.width));return t.observe(e.current),()=>t.disconnect()},[]),(0,S.useEffect)(()=>{if(n)return he(t.current,i)},[i,n>0]);let l=n/o.width,u=25*l,[f]=(0,S.useState)(()=>window.innerWidth*1.15/Math.min(1200,window.innerWidth-32)),_=(0,S.useMemo)(()=>K.map((e,t)=>J(t,o.columns)),[o.columns]);return(0,H.jsxs)(`div`,{ref:e,className:`ld-shell`,style:{height:n?o.height*l:void 0,borderRadius:u,"--ld-from":f},"aria-hidden":`true`,children:[n>0&&(0,H.jsx)(`svg`,{className:`ld-draw`,children:(0,H.jsx)(`path`,{d:fe(n,o.height*l,u-.5),pathLength:`1`})}),n>0&&(0,H.jsxs)(`div`,{ref:t,className:`ld-stage ld-${i}`,style:{width:o.width,height:o.height,transform:`scale(${l})`},children:[(0,H.jsxs)(`div`,{className:`ld-scene`,children:[(0,H.jsx)(`div`,{className:`world ld-world`,children:K.map((e,t)=>(0,H.jsxs)(`div`,{className:`frame ld-frame`,style:{left:_[t].x,top:_[t].y,width:U,height:W},children:[(0,H.jsx)(`div`,{className:`frame-title`,children:(0,H.jsxs)(`span`,{children:[`V`,e]})}),(0,H.jsx)(`div`,{className:`frame-surface`,children:(0,H.jsx)(pe,{version:e})})]},e))}),(0,H.jsx)(`svg`,{className:`ld-strokes`,width:o.width,height:o.height,children:(0,H.jsx)(`path`,{fill:se})}),(0,H.jsx)(me,{id:`a`,person:0,text:``}),(0,H.jsx)(me,{id:`b`,person:1,text:`Can we try this one darker?`})]}),(0,H.jsx)(`div`,{className:`chrome shell top-left ld-rise`,children:(0,H.jsx)(`span`,{className:`canvas-name`,children:`Notification Explorations`})}),(0,H.jsx)(`div`,{className:`chrome shell toolbar ld-rise`,children:(0,H.jsx)(`div`,{className:`toolbar-clip`,children:(0,H.jsxs)(`div`,{className:`toolbar-row`,children:[(0,H.jsx)(`span`,{className:`tool-slider`,style:{width:50}}),(0,H.jsx)(`span`,{className:`tool`,"aria-pressed":`true`,children:(0,H.jsx)(d,{size:18})}),(0,H.jsx)(`span`,{className:`tool`,children:(0,H.jsx)(p,{size:18})}),(0,H.jsx)(`span`,{className:`tool`,children:(0,H.jsx)(ee,{size:18})}),(0,H.jsx)(`span`,{className:`shell-divider`}),(0,H.jsx)(`span`,{className:`tool`,children:(0,H.jsx)(h,{size:18})})]})})}),(0,H.jsxs)(`div`,{className:`chrome shell top-right ld-rise`,children:[(0,H.jsx)(`div`,{className:`faces`,children:[2,1,0].map(e=>(0,H.jsx)(`span`,{className:`face-button`,children:(0,H.jsx)(c,{name:q[e].name,picture:null,color:q[e].color})},e))}),(0,H.jsx)(`span`,{className:`primary-button share-button`,children:`Share`}),(0,H.jsxs)(`span`,{className:`primary-button share-sharing`,style:{display:`none`},children:[(0,H.jsx)(`i`,{}),(0,H.jsx)(`span`,{children:`Share`})]}),(0,H.jsxs)(`span`,{className:`share-split`,style:{display:`none`},children:[(0,H.jsxs)(`span`,{className:`primary-button`,children:[(0,H.jsxs)(`span`,{className:`ld-copied`,children:[(0,H.jsx)(g,{size:14}),`Copied`]}),(0,H.jsx)(`span`,{className:`ld-copy`,children:`Copy link`})]}),(0,H.jsx)(`span`,{className:`primary-button`,children:(0,H.jsx)(te,{size:14})})]})]}),(0,H.jsxs)(`div`,{className:`chrome shell zoom ld-rise`,children:[(0,H.jsx)(`span`,{className:`icon-button`,children:(0,H.jsx)(m,{})}),(0,H.jsx)(`span`,{className:`shell-divider`}),(0,H.jsx)(`span`,{className:`icon-button`,children:(0,H.jsx)(s,{})}),(0,H.jsx)(`span`,{className:`zoom-value`,"data-zoom":!0,children:`100%`}),(0,H.jsx)(`span`,{className:`icon-button`,children:(0,H.jsx)(a,{})})]}),(0,H.jsxs)(`div`,{className:`ld-cursors`,children:[(0,H.jsx)(Y,{id:`0`,color:q[0].color,name:q[0].name}),(0,H.jsx)(Y,{id:`1`,color:q[1].color,name:q[1].name}),(0,H.jsx)(Y,{id:`2`,color:q[2].color,name:q[2].name}),(0,H.jsx)(Y,{id:`you`,color:`#000`})]})]},i)]})}var X={ms:800,ease:[.45,0,.55,1]},_e=o(...X.ease),ve=[[0,`#1f283c`,`#0f1421`,`#2a3755`,`#0c1220`],[4.5,`#1a2132`,`#0d111d`,`#25304c`,`#0a0f1b`],[5.5,`#555b7c`,`#2c3149`,`#8f91b4`,`#3a4252`],[6.5,`#efc4ae`,`#8a7a84`,`#ffe1c9`,`#a79a78`],[7.5,`#f8e2c8`,`#a89c94`,`#fff5e4`,`#b9c39a`],[10,`#fcfaf4`,`#adaca6`,`#ffffff`,`#c9d8bb`],[13,`#ffffff`,`#acadac`,`#ffffff`,`#d3e0c8`],[16,`#faf2e3`,`#aaa193`,`#fffbf1`,`#c7d0a7`],[18,`#e9bd95`,`#a07f62`,`#ffdcb2`,`#a89a62`],[19,`#da9570`,`#7a5a50`,`#ffb78c`,`#6d5f4b`],[19.75,`#84678a`,`#4a4262`,`#b78fa8`,`#3b3550`],[20.75,`#2f3756`,`#1a1f33`,`#3f4a70`,`#141a2c`],[24,`#1f283c`,`#0f1421`,`#2a3755`,`#0c1220`]],ye=e=>[1,3,5].map(t=>(parseInt(e.slice(t,t+2),16)/255)**2.2),be=e=>`#${e.map(e=>Math.round(e**(1/2.2)*255).toString(16).padStart(2,`0`)).join(``)}`,xe=new URLSearchParams(location.search).get(`hour`),Se=()=>{if(xe!==null)return Number(xe);let e=new Date;return e.getHours()+e.getMinutes()/60};function Ce(){let[e,t]=(0,S.useState)(Se);return(0,S.useEffect)(()=>{let e=()=>t(Se()),n=window.setInterval(e,3e4);return document.addEventListener(`visibilitychange`,e),()=>{window.clearInterval(n),document.removeEventListener(`visibilitychange`,e)}},[]),e}function we(e){let{lit:t,shade:n}=Te(e),[r,i,a]=t.map((e,t)=>n[t]+(e-n[t])*.6);return{lit:be(t),shade:be(n),dark:.2126*r+.7152*i+.0722*a<.18}}function Te(e){let t=Math.max(1,ve.findIndex(([t])=>t>=e)),[n,...r]=ve[t-1],[i,...a]=ve[t],o=(e-n)/(i-n),s=o*o*(3-2*o),[c,l,u,d]=r.map((e,t)=>{let n=ye(a[t]);return ye(e).map((e,t)=>e+(n[t]-e)*s)}),f=2*Math.PI*(e-12.5)/24,p=(9+36*Math.abs(Math.cos(f)))*Math.PI/180,m=Math.sin(f)*52*Math.PI/180;return{lit:c,shade:l,sky:u,leaf:d,sun:[-Math.cos(p)*Math.cos(m),Math.sin(p),Math.cos(p)*Math.sin(m)]}}var Z={wind:1.1,gust:1,flutter:1.65,leafSize:1,shadow:.55,softness:1,sun:.61,skyLeaves:.29},Ee=`#version 300 es
|
|
3
|
+
in vec2 a;
|
|
4
|
+
void main() { gl_Position = vec4(a, 0., 1.); }`,De=`#version 300 es
|
|
5
|
+
precision highp float;
|
|
6
|
+
out vec4 fragColor;
|
|
7
|
+
uniform vec2 uRes;
|
|
8
|
+
uniform float uTime;
|
|
9
|
+
uniform vec3 uSun, uLit, uShade, uSky, uLeaf;
|
|
10
|
+
uniform sampler2D uLeaves;
|
|
11
|
+
// Tuning, from LIGHT below.
|
|
12
|
+
uniform float uGust, uFlutter, uLeafSize, uShadow, uSoft, uSunStrength, uSkyLeaves;
|
|
13
|
+
|
|
14
|
+
// How far the corners melt. Lower is softer.
|
|
15
|
+
const float CORNER = 5.5;
|
|
16
|
+
// Half the height of the box, and how much of the screen its far wall fills.
|
|
17
|
+
const float HALF = 3.;
|
|
18
|
+
const float FAR_WALL = .5;
|
|
19
|
+
|
|
20
|
+
float dither(vec2 p) {
|
|
21
|
+
vec3 h = fract(p.xyx * .1031);
|
|
22
|
+
h += dot(h, h.yzx + 33.33);
|
|
23
|
+
return fract((h.x + h.y) * h.z);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
float band(float x, float a, float b, float soft) {
|
|
27
|
+
return smoothstep(a - soft, a + soft, x) * (1. - smoothstep(b - soft, b + soft, x));
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Wind moving through the trees: gusts travel along the canopy, leaning the branches as they pass,
|
|
31
|
+
// stirring the leaves and opening small gaps that let more light through.
|
|
32
|
+
float foliage(vec2 zy) {
|
|
33
|
+
float t = uTime;
|
|
34
|
+
float gust = sin(t * .42 - zy.x * .3) + .6 * sin(t * .67 - zy.x * .5 + zy.y * .2 + 1.3);
|
|
35
|
+
float stir = (.12 + .2 * abs(gust)) * uFlutter;
|
|
36
|
+
vec2 lean = .6 * gust * uGust * vec2(1., .3);
|
|
37
|
+
vec2 flutter = stir * vec2(sin(t * 1.3 + zy.y * 1.7), cos(t * 1.1 + zy.x * 1.5));
|
|
38
|
+
float near = texture(uLeaves, (zy + lean + flutter) * .21 / uLeafSize + vec2(.17, .31)).r;
|
|
39
|
+
float far = texture(uLeaves, (zy + lean * .4 + flutter * .3) * .09 / uLeafSize + vec2(.61, .09)).r;
|
|
40
|
+
float gap = .03 * gust;
|
|
41
|
+
return max(smoothstep(.1 + gap, .42 + gap, near), .75 * smoothstep(.1, .4, far));
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
// Sun reaching a point through a tall opening down the left side, then through the leaves.
|
|
45
|
+
// The further the light has travelled from the opening, the wider its edges.
|
|
46
|
+
float sunlight(vec3 p, float wall) {
|
|
47
|
+
vec3 hit = p + uSun * ((-wall - p.x) / uSun.x);
|
|
48
|
+
float soft = (.25 + .07 * length(hit - p)) * uSoft;
|
|
49
|
+
float open = band(hit.y, -HALF + .3, HALF - .3, soft) * band(hit.z, -30., 60., soft);
|
|
50
|
+
float bar = mod(hit.z, 4.) - 2.;
|
|
51
|
+
open *= 1. - min(1., .22 / soft) * exp(-bar * bar / (soft * soft));
|
|
52
|
+
vec3 leaf = p + uSun * ((-wall - 3. - p.x) / uSun.x);
|
|
53
|
+
return open * (1. - uShadow * foliage(leaf.zy));
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
void main() {
|
|
57
|
+
float aspect = uRes.x / uRes.y;
|
|
58
|
+
vec2 p = (gl_FragCoord.xy - uRes * .5) / uRes.y;
|
|
59
|
+
|
|
60
|
+
// The far wall has the same shape as the screen, so the corners run straight to the screen's corners.
|
|
61
|
+
vec2 back = vec2(aspect, 1.) * .5 * FAR_WALL;
|
|
62
|
+
float wall = HALF * aspect;
|
|
63
|
+
float depth = HALF / back.y;
|
|
64
|
+
|
|
65
|
+
// How far past the far wall's outline this pixel is, and how much it belongs to each face.
|
|
66
|
+
vec2 reach = abs(p) / back;
|
|
67
|
+
vec3 weights = exp(CORNER * vec3(reach, 1.));
|
|
68
|
+
weights /= weights.x + weights.y + weights.z;
|
|
69
|
+
float besides = weights.x;
|
|
70
|
+
float above = weights.y;
|
|
71
|
+
float ahead = weights.z;
|
|
72
|
+
|
|
73
|
+
float leftFace = besides * (1. - smoothstep(-.1, .1, p.x / back.x));
|
|
74
|
+
float rightFace = besides - leftFace;
|
|
75
|
+
float floorFace = above * (1. - smoothstep(-.1, .1, p.y / back.y));
|
|
76
|
+
float ceilingFace = above - floorFace;
|
|
77
|
+
|
|
78
|
+
// Points on each face, for the sun.
|
|
79
|
+
float tWall = min(wall / max(abs(p.x), .01), depth);
|
|
80
|
+
float tFlat = min(HALF / max(abs(p.y), .01), depth);
|
|
81
|
+
vec3 onRight = vec3(wall, p.y * tWall, tWall);
|
|
82
|
+
vec3 onLeft = vec3(-wall, p.y * tWall, tWall);
|
|
83
|
+
vec3 onFloor = vec3(p.x * tFlat, -HALF, tFlat);
|
|
84
|
+
vec3 onBack = vec3(p.x * depth, p.y * depth, depth);
|
|
85
|
+
|
|
86
|
+
// Daylight fills the box from the left, thinning toward the right.
|
|
87
|
+
float x = p.x / (back.x * 2.);
|
|
88
|
+
float fill = 1. - .55 * smoothstep(-1.2, 1.5, x);
|
|
89
|
+
fill *= leftFace + floorFace + ahead * .9 + ceilingFace * .74 + rightFace * .8;
|
|
90
|
+
|
|
91
|
+
// The corners are only a slight gathering of shade where two faces meet.
|
|
92
|
+
float crease = 1. - max(besides, max(above, ahead));
|
|
93
|
+
fill *= 1. - crease * .3;
|
|
94
|
+
vec3 color = mix(uShade, uLit, fill);
|
|
95
|
+
|
|
96
|
+
// Sun.
|
|
97
|
+
vec3 s = uSun;
|
|
98
|
+
float sun = 0.;
|
|
99
|
+
if (floorFace > .02) sun += floorFace * sunlight(onFloor, wall) * min(1., s.y * 3.);
|
|
100
|
+
if (ahead > .02) sun += ahead * sunlight(onBack, wall) * min(1., max(-s.z, 0.) * 2.5);
|
|
101
|
+
if (rightFace > .02) sun += rightFace * sunlight(onRight, wall) * min(1., -s.x * 2.);
|
|
102
|
+
color += uLit * sun * uSunStrength;
|
|
103
|
+
|
|
104
|
+
// The left side is the light itself: bright sky with trees far out of focus.
|
|
105
|
+
color = mix(color, mix(uSky, uLeaf, foliage(onLeft.zy) * uSkyLeaves), leftFace);
|
|
106
|
+
|
|
107
|
+
color = pow(min(color, vec3(1.)), vec3(1. / 2.2));
|
|
108
|
+
// A single level of 8-bit noise: invisible, but it stops the gradients from banding.
|
|
109
|
+
color += (dither(gl_FragCoord.xy + 17.) - .5) / 255.;
|
|
110
|
+
fragColor = vec4(color, 1.);
|
|
111
|
+
}`;function Oe(){let e=1024,t=document.createElement(`canvas`);t.width=t.height=e;let n=t.getContext(`2d`),r=606,i=()=>(r=r*16807%2147483647)/2147483647;n.fillStyle=`#000`,n.fillRect(0,0,e,e),n.fillStyle=n.strokeStyle=`#fff`,n.lineCap=`round`;for(let t=0;t<22;t++){let t=i()*e,r=i()*e,a=i()*Math.PI*2,o=260+i()*460;for(let e=0;e<o;e+=14){a+=(i()-.5)*.3;let s=t+Math.cos(a)*14,c=r+Math.sin(a)*14;if(n.lineWidth=Math.max(1.5,6*(1-e/o)),n.beginPath(),n.moveTo(t,r),n.lineTo(s,c),n.stroke(),t=s,r=c,!(i()>.42))for(let e of[-1,1]){if(i()>.8)continue;let o=a+e*(.5+i()*.7),s=34+i()*40;n.save(),n.translate(t+Math.cos(o)*s*.55,r+Math.sin(o)*s*.55),n.rotate(o),n.beginPath(),n.ellipse(0,0,s*.55,s*.2,0,0,Math.PI*2),n.fill(),n.restore()}}}return ke(t)}function ke(e){let t=document.createElement(`canvas`);t.width=t.height=128;let n=t.getContext(`2d`,{willReadFrequently:!0});n.drawImage(e,0,0,128,128);let r=n.getImageData(0,0,128,128),i=Float32Array.from({length:16384},(e,t)=>r.data[t*4]);for(let e=0;e<6;e++){let t=new Float32Array(16384);for(let n=0;n<128;n++)for(let r=0;r<128;r++){let a=0;for(let t=-13;t<=13;t++){let o=e%2?(n+t+128)%128*128+r:n*128+(r+t+128)%128;a+=i[o]}t[n*128+r]=a/27}i=t}return i.forEach((e,t)=>{r.data[t*4]=r.data[t*4+1]=r.data[t*4+2]=e}),n.putImageData(r,0,0),t}function Ae({hour:e,glide:t}){let n=(0,S.useRef)(null),r=(0,S.useRef)(e),i=(0,S.useRef)(e),a=(0,S.useRef)(null),o=(0,S.useRef)(null);return(0,S.useEffect)(()=>{a.current=t?{from:i.current,at:performance.now()}:null,r.current=e,o.current?.()},[e]),(0,S.useEffect)(()=>{let e=n.current,t=e.getContext(`webgl2`,{antialias:!1,alpha:!1});if(!t)return;let s=t.createProgram();for(let[e,n]of[[t.VERTEX_SHADER,Ee],[t.FRAGMENT_SHADER,De]]){let r=t.createShader(e);t.shaderSource(r,n),t.compileShader(r),t.attachShader(s,r)}t.bindAttribLocation(s,0,`a`),t.linkProgram(s),t.useProgram(s),t.bindBuffer(t.ARRAY_BUFFER,t.createBuffer()),t.bufferData(t.ARRAY_BUFFER,new Float32Array([-1,-1,3,-1,-1,3]),t.STATIC_DRAW),t.enableVertexAttribArray(0),t.vertexAttribPointer(0,2,t.FLOAT,!1,0,0),t.bindTexture(t.TEXTURE_2D,t.createTexture()),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,Oe()),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.REPEAT),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.REPEAT);let c=e=>t.getUniformLocation(s,e),l=(n,r)=>{let{clientWidth:i,clientHeight:a}=e;(e.width!==i||e.height!==a)&&(e.width=i,e.height=a,t.viewport(0,0,i,a));let o=Te(r);t.uniform2f(c(`uRes`),i,a),t.uniform1f(c(`uTime`),n),t.uniform1f(c(`uGust`),Z.gust),t.uniform1f(c(`uFlutter`),Z.flutter),t.uniform1f(c(`uLeafSize`),Z.leafSize),t.uniform1f(c(`uShadow`),Z.shadow),t.uniform1f(c(`uSoft`),Z.softness),t.uniform1f(c(`uSunStrength`),Z.sun),t.uniform1f(c(`uSkyLeaves`),Z.skyLeaves),t.uniform3fv(c(`uSun`),o.sun),t.uniform3fv(c(`uLit`),o.lit),t.uniform3fv(c(`uShade`),o.shade),t.uniform3fv(c(`uSky`),o.sky),t.uniform3fv(c(`uLeaf`),o.leaf),t.drawArrays(t.TRIANGLES,0,3)};if(matchMedia(`(prefers-reduced-motion: reduce)`).matches){o.current=()=>l(0,r.current);let t=new ResizeObserver(()=>l(0,r.current));return t.observe(e),()=>{o.current=null,t.disconnect()}}let u=performance.now(),d=u/1e3,f=requestAnimationFrame(function e(t){let n=a.current;if(n){let e=Math.min(1,Math.max(0,(t-n.at)/X.ms));i.current=n.from+(r.current-n.from)*_e(e),e===1&&(a.current=null)}else i.current+=(r.current-i.current)*(1-Math.exp((u-t)*.002));d+=(t-u)/1e3*Z.wind,u=t,l(d,i.current),f=requestAnimationFrame(e)});return()=>cancelAnimationFrame(f)},[]),(0,H.jsx)(`canvas`,{ref:n,className:`window-light`,"aria-hidden":`true`})}var je=new URLSearchParams(location.search).get(`hero`)!==`1`,Me=(0,S.lazy)(()=>i(()=>import(`./LandingStage-CJL8RTJG.js`),__vite__mapDeps([0,1,2,3,4,5]))),Ne={a:[[`A`,`canvas`,`for`,`your`],[`agent’s`,`explorations`]],b:[[`A`,`shareable`,`canvas`],[`for`,`your`,`agent`]],c:[[`Bring`,`your`,`team`,`into`],[`your`,`agent’s`,`work`]],d:[[`Agents`,`shouldn’t`,`mean`],[`designing`,`alone`]]},Pe=e=>typeof e==`string`&&e in Ne,Fe=new URLSearchParams(location.search).get(`headline`),Ie=`a`,Le=f(.8,0),Re=f(1.1,0),ze=.1,Be=3,Ve=.14,Q=8,He=500,$=32,Ue=1500,We=(()=>{let e=crypto.getRandomValues(new Uint8Array(16)),t=Date.now();for(let n=5;n>=0;n--)e[n]=t%256,t=Math.floor(t/256);e[6]=e[6]&15|112,e[8]=e[8]&63|128;let n=Array.from(e,e=>e.toString(16).padStart(2,`0`)).join(``);return`${n.slice(0,8)}-${n.slice(8,12)}-${n.slice(12,16)}-${n.slice(16,20)}-${n.slice(20)}`})(),Ge=(e,t={})=>l(`/api/events`,{event:e,visit:We,headline:Ie,...t});function Ke(){let e=(0,S.useRef)(null),t=(0,S.useRef)(null);return(0,S.useEffect)(()=>{if(matchMedia(`(prefers-reduced-motion: reduce)`).matches)return;let n=[0,0,0,0],r=[0,0,0,0],i=0,a=!1,o=()=>{let e=!0;r.forEach((t,i)=>{r[i]=t+(n[i]-t)*Ve,Math.abs(n[i]-r[i])>.01&&(e=!1)}),e&&r.splice(0,4,...n);let[a,s,c,l]=r.map(e=>e.toFixed(2));t.current&&(t.current.style.transform=r.some(Boolean)?`perspective(${He}px) translate(${a}px, ${s}px) rotateX(${c}deg) rotateY(${l}deg)`:``),i=e?0:requestAnimationFrame(o)},s=()=>{i||=requestAnimationFrame(o)},c=(e,t)=>Math.max(-t,Math.min(t,e)),l=()=>{a&&(a=!1,n.fill(0),s())},u=t=>{if(t.pointerType!==`mouse`||!e.current)return;let r=e.current.getBoundingClientRect();if(t.clientX<=r.left-$||t.clientX>=r.right+$||t.clientY<=r.top-$||t.clientY>=r.bottom+$)return l();a=!0;let i=t.clientX-r.left-r.width/2,o=t.clientY-r.top-r.height/2;n[0]=c(i*ze,Be),n[1]=c(o*ze,Be),n[2]=c(-o/(r.height/2)*Q,Q),n[3]=c(i/(r.width/2)*Q,Q),s()};return window.addEventListener(`pointermove`,u),document.documentElement.addEventListener(`pointerleave`,l),()=>{cancelAnimationFrame(i),window.removeEventListener(`pointermove`,u),document.documentElement.removeEventListener(`pointerleave`,l)}},[]),[e,t]}function qe(){let[e,t]=(0,S.useState)(!1),n=(0,S.useRef)(0);(0,S.useEffect)(()=>()=>window.clearTimeout(n.current),[]);let r=()=>{t(!0),window.clearTimeout(n.current),n.current=window.setTimeout(()=>t(!1),Ue)};return[e,e=>{navigator.clipboard?.writeText(e).then(()=>{Ge(`prompt_copied`),r()}).catch(()=>{})},r]}function Je(){let[e,t,n]=qe(),[r,i]=Ke();return(0,S.useEffect)(()=>(window.addEventListener(_,n),()=>window.removeEventListener(_,n)),[]),(0,H.jsx)(`span`,{ref:r,className:`landing-magnet`,children:(0,H.jsx)(`div`,{ref:i,className:`landing-cta`,children:(0,H.jsxs)(`button`,{type:`button`,className:`landing-button`,"data-copied":e||void 0,onClick:()=>t(y),children:[(0,H.jsxs)(`span`,{className:`landing-states`,children:[(0,H.jsxs)(`span`,{className:`landing-state`,children:[(0,H.jsx)(x,{}),(0,H.jsx)(`span`,{className:`landing-label`,children:`Copy agent prompt`})]}),(0,H.jsxs)(`span`,{className:`landing-state`,"aria-hidden":`true`,children:[(0,H.jsx)(`svg`,{className:`landing-check`,viewBox:`0 0 18 18`,children:(0,H.jsx)(`path`,{d:`M3.5 9.5 7.25 13.25 14.5 5`,pathLength:`1`})}),(0,H.jsx)(`span`,{className:`landing-done`,children:`Copied`})]})]}),(0,H.jsx)(`span`,{className:`landing-sr`,"aria-live":`polite`,children:e?`Copied`:``})]})})})}function Ye(){let e=0;return(0,H.jsx)(`h1`,{className:`landing-title`,children:Ne[Ie].map((t,n)=>(0,H.jsxs)(S.Fragment,{children:[n>0&&(0,H.jsx)(`br`,{}),t.map((t,n)=>(0,H.jsxs)(S.Fragment,{children:[(0,H.jsx)(`span`,{className:`landing-word`,style:{"--delay":`${100+e++*80}ms`},children:t}),` `]},n))]},n))})}function Xe({headline:e}){Ie=Pe(Fe)?Fe:Pe(e)?e:`a`,(0,S.useEffect)(()=>{Ge(`landing_viewed`,{url:location.href,referrer:document.referrer})},[]);let r=Ce(),[i,a]=(0,S.useState)(null),[o,s]=(0,S.useState)(!1),c=(e,t=!1)=>{a(e),s(t)},l=i??r,{lit:u,shade:d,dark:f}=we(l),[p,m]=(0,S.useState)(!1),h=(0,S.useRef)(f);return(0,S.useEffect)(()=>{if(h.current===f)return;h.current=f,m(!0);let e=window.setTimeout(()=>m(!1),X.ms);return()=>window.clearTimeout(e)},[f]),(0,S.useEffect)(()=>{document.body.style.background=u,document.body.style.colorScheme=f?`dark`:`light`},[u,f]),(0,H.jsxs)(`div`,{className:`landing`,"data-dark":f||void 0,"data-shifting":p||void 0,"data-glide":o||void 0,style:{"--lit":u,"--shade":d,"--shift-ms":`${X.ms}ms`,"--shift-ease":`cubic-bezier(${X.ease.join(`, `)})`,"--word-ease":Le.css,"--word-ms":`${Le.ms}ms`,"--rise-ease":Re.css,"--rise-ms":`${Re.ms}ms`},children:[(0,H.jsx)(Ae,{hour:l,glide:o}),(0,H.jsxs)(`nav`,{className:`landing-nav`,"aria-label":`Main`,children:[(0,H.jsx)(`a`,{className:`wordmark`,href:`/`,children:(0,H.jsx)(n,{})}),(0,H.jsxs)(`div`,{className:`landing-nav-end`,children:[(0,H.jsx)(t,{hour:l,onHour:c}),(0,H.jsx)(`a`,{className:`landing-sign-in`,href:`/auth/google/start?next=/`,onClick:()=>Ge(`sign_in_clicked`),children:`Sign in`})]})]}),(0,H.jsxs)(`main`,{className:`landing-hero`,children:[(0,H.jsx)(Ye,{}),(0,H.jsx)(`p`,{className:`landing-body`,children:`Get feedback, huddle, and iterate with your team on a canvas beside your agent.`}),(0,H.jsx)(`div`,{className:`landing-actions`,children:(0,H.jsx)(Je,{})}),je?(0,H.jsx)(`div`,{className:`landing-slot`,children:(0,H.jsx)(S.Suspense,{fallback:null,children:(0,H.jsx)(Me,{dark:f})})}):(0,H.jsx)(ge,{})]}),(0,H.jsxs)(`footer`,{className:`landing-foot`,children:[(0,H.jsxs)(`span`,{children:[`© Materic, Inc. `,new Date().getFullYear()]}),(0,H.jsxs)(`nav`,{children:[(0,H.jsx)(`a`,{href:`/privacy`,children:`Privacy`}),(0,H.jsx)(`a`,{href:`/terms`,children:`Terms`})]})]})]})}export{Xe as Landing};
|