commit d5b65a8faf86cb5581c1469d18724d2ec41d68f5 Author: Joshua Seigler Date: Fri Apr 25 14:33:25 2025 -0400 Updates diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c6c8b36 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6d6ae5a --- /dev/null +++ b/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +dev-dist +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/apple-touch-icon-180x180.png b/apple-touch-icon-180x180.png new file mode 100644 index 0000000..37b51f7 Binary files /dev/null and b/apple-touch-icon-180x180.png differ diff --git a/assets/index-BcCL4JiL.css b/assets/index-BcCL4JiL.css new file mode 100644 index 0000000..62bc924 --- /dev/null +++ b/assets/index-BcCL4JiL.css @@ -0,0 +1 @@ +:root{font-family:Inter,system-ui,Avenir,Helvetica,Arial,sans-serif;line-height:1.5;font-weight:400;color-scheme:light dark;color:#ffffffde;background-color:#242424;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{font-weight:500;color:#646cff;text-decoration:inherit}a:hover{color:#535bf2}body{margin:0;display:flex;place-items:center;min-width:320px;min-height:100vh}h1{font-size:3.2em;line-height:1.1}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:#1a1a1a;cursor:pointer;transition:border-color .25s}button:hover{border-color:#646cff}button:focus,button:focus-visible{outline:4px auto -webkit-focus-ring-color}@media (prefers-color-scheme: light){:root{color:#213547;background-color:#fff}a:hover{color:#747bff}button{background-color:#f9f9f9}}:root{background:url(data:image/bmp;base64,Qk1aBAAAAAAAADYAAAAoAAAABAAAAAMAAAABABgAAAAAACQAAAATCwAAEwsAAAAAAAAAAAAAYoKGcJCTdI2QZHp3X3h/cYyNeYuOZXp5RmNkZnt3c3p2U2xo);background-size:cover}@font-face{font-family:helsinkiregular;src:url(helsinki-webfont.woff) format("woff");font-weight:400;font-style:normal}#root{position:relative;margin:0 auto;text-align:center;font-family:helsinkiregular,sans-serif}#root:before{z-index:-1;content:"";position:fixed;top:0;right:0;bottom:0;left:0;margin:auto;height:min(100vh,50rem);background-color:#fff;-webkit-mask-image:url(brush-stroke.png);mask-image:url(brush-stroke.png);-webkit-mask-size:cover;mask-size:cover;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center}.prompt{font-size:min(3rem,10vmin);text-shadow:0 0 .1em white,0 0 .25em white,0 0 .5em white,0 0 1em white;width:min(80vmax,calc(100vw - 2rem));margin:0 auto}#regenerate{position:fixed;bottom:1rem;left:1rem}._Container_klvpw_1{padding:0;margin:0;width:0;height:0}._Toast_klvpw_7{position:fixed;right:0;bottom:0;margin:16px;padding:12px;border:1px solid #8885;border-radius:4px;z-index:1;text-align:left;box-shadow:3px 4px 5px #8885;background-color:#fff}._Message_klvpw_20{margin-bottom:8px}._ToastButton_klvpw_23{border:1px solid #8885;outline:none;margin-right:5px;border-radius:2px;padding:3px 10px} diff --git a/assets/index-Bpryj5yb.js b/assets/index-Bpryj5yb.js new file mode 100644 index 0000000..7d07c2f --- /dev/null +++ b/assets/index-Bpryj5yb.js @@ -0,0 +1 @@ +(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const s of i)if(s.type==="childList")for(const a of s.addedNodes)a.tagName==="LINK"&&a.rel==="modulepreload"&&r(a)}).observe(document,{childList:!0,subtree:!0});function n(i){const s={};return i.integrity&&(s.integrity=i.integrity),i.referrerPolicy&&(s.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?s.credentials="include":i.crossOrigin==="anonymous"?s.credentials="omit":s.credentials="same-origin",s}function r(i){if(i.ep)return;i.ep=!0;const s=n(i);fetch(i.href,s)}})();const re=!1,ie=(e,t)=>e===t,P={equals:ie};let Y=ee;const y=1,N=2,z={owned:null,cleanups:null,context:null,owner:null};var p=null;let W=null,se=null,d=null,h=null,m=null,M=0;function oe(e,t){const n=d,r=p,i=e.length===0,s=t===void 0?r:t,a=i?z:{owned:null,cleanups:null,context:s?s.context:null,owner:s},o=i?e:()=>e(()=>k(()=>_(a)));p=a,d=null;try{return C(o,!0)}finally{d=n,p=r}}function q(e,t){t=t?Object.assign({},P,t):P;const n={value:e,observers:null,observerSlots:null,comparator:t.equals||void 0},r=i=>(typeof i=="function"&&(i=i(n.value)),Z(n,i));return[J.bind(n),r]}function A(e,t,n){const r=I(e,t,!1,y);x(r)}function ae(e,t,n){Y=fe;const r=I(e,t,!1,y);r.user=!0,m?m.push(r):x(r)}function U(e,t,n){n=n?Object.assign({},P,n):P;const r=I(e,t,!0,0);return r.observers=null,r.observerSlots=null,r.comparator=n.equals||void 0,x(r),J.bind(r)}function k(e){if(d===null)return e();const t=d;d=null;try{return e()}finally{d=t}}function le(e){ae(()=>k(e))}function J(){if(this.sources&&this.state)if(this.state===y)x(this);else{const e=h;h=null,C(()=>O(this),!1),h=e}if(d){const e=this.observers?this.observers.length:0;d.sources?(d.sources.push(this),d.sourceSlots.push(e)):(d.sources=[this],d.sourceSlots=[e]),this.observers?(this.observers.push(d),this.observerSlots.push(d.sources.length-1)):(this.observers=[d],this.observerSlots=[d.sources.length-1])}return this.value}function Z(e,t,n){let r=e.value;return(!e.comparator||!e.comparator(r,t))&&(e.value=t,e.observers&&e.observers.length&&C(()=>{for(let i=0;i1e6)throw h=[],new Error},!1)),t}function x(e){if(!e.fn)return;_(e);const t=M;ce(e,e.value,t)}function ce(e,t,n){let r;const i=p,s=d;d=p=e;try{r=e.fn(t)}catch(a){return e.pure&&(e.state=y,e.owned&&e.owned.forEach(_),e.owned=null),e.updatedAt=n+1,ne(a)}finally{d=s,p=i}(!e.updatedAt||e.updatedAt<=n)&&(e.updatedAt!=null&&"observers"in e?Z(e,r):e.value=r,e.updatedAt=n)}function I(e,t,n,r=y,i){const s={fn:e,state:r,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:p,context:p?p.context:null,pure:n};return p===null||p!==z&&(p.owned?p.owned.push(s):p.owned=[s]),s}function j(e){if(e.state===0)return;if(e.state===N)return O(e);if(e.suspense&&k(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt=0;n--)if(e=t[n],e.state===y)x(e);else if(e.state===N){const r=h;h=null,C(()=>O(e,t[0]),!1),h=r}}function C(e,t){if(h)return e();let n=!1;t||(h=[]),m?n=!0:m=[],M++;try{const r=e();return ue(n),r}catch(r){n||(m=null),h=null,ne(r)}}function ue(e){if(h&&(ee(h),h=null),e)return;const t=m;m=null,t.length&&C(()=>Y(t),!1)}function ee(e){for(let t=0;t=0;t--)_(e.tOwned[t]);delete e.tOwned}if(e.owned){for(t=e.owned.length-1;t>=0;t--)_(e.owned[t]);e.owned=null}if(e.cleanups){for(t=e.cleanups.length-1;t>=0;t--)e.cleanups[t]();e.cleanups=null}e.state=0}function de(e){return e instanceof Error?e:new Error(typeof e=="string"?e:"Unknown error",{cause:e})}function ne(e,t=p){throw de(e)}function V(e,t){return k(()=>e(t||{}))}const he=e=>`Stale read from <${e}>.`;function ge(e){const t=e.keyed,n=U(()=>e.when,void 0,void 0),r=t?n:U(n,void 0,{equals:(i,s)=>!i==!s});return U(()=>{const i=r();if(i){const s=e.children;return typeof s=="function"&&s.length>0?k(()=>s(t?i:()=>{if(!k(r))throw he("Show");return n()})):s}return e.fallback},void 0,void 0)}function pe(e,t,n){let r=n.length,i=t.length,s=r,a=0,o=0,c=t[i-1].nextSibling,u=null;for(;af-o){const b=t[a];for(;o{i=s,t===document?e():R(t,e(),t.firstChild?null:void 0,n)},r.owner),()=>{i(),t.textContent=""}}function $(e,t,n,r){let i;const s=()=>{const o=document.createElement("template");return o.innerHTML=e,o.content.firstChild},a=()=>(i||(i=s())).cloneNode(!0);return a.cloneNode=a,a}function ye(e,t=window.document){const n=t[G]||(t[G]=new Set);for(let r=0,i=e.length;ri.call(e,n[1],s))}else e.addEventListener(t,n,typeof n!="function"&&n)}function R(e,t,n,r){if(n!==void 0&&!r&&(r=[]),typeof t!="function")return B(e,t,r,n);A(i=>B(e,t(),i,n),r)}function be(e){let t=e.target;const n=`$$${e.type}`,r=e.target,i=e.currentTarget,s=c=>Object.defineProperty(e,"target",{configurable:!0,value:c}),a=()=>{const c=t[n];if(c&&!t.disabled){const u=t[`${n}Data`];if(u!==void 0?c.call(t,u,e):c.call(t,e),e.cancelBubble)return}return t.host&&typeof t.host!="string"&&!t.host._$host&&t.contains(e.target)&&s(t.host),!0},o=()=>{for(;a()&&(t=t._$host||t.parentNode||t.host););};if(Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t||document}}),e.composedPath){const c=e.composedPath();s(c[0]);for(let u=0;u{let o=t();for(;typeof o=="function";)o=o();n=B(e,o,n,r)}),()=>n;if(Array.isArray(t)){const o=[],c=n&&Array.isArray(n);if(D(o,t,n,i))return A(()=>n=B(e,o,n,r,!0)),()=>n;if(o.length===0){if(n=v(e,n,r),a)return n}else c?n.length===0?H(e,o,r):pe(e,n,o):(n&&v(e),H(e,o));n=o}else if(t.nodeType){if(Array.isArray(n)){if(a)return n=v(e,n,r,t);v(e,n,null,t)}else n==null||n===""||!e.firstChild?e.appendChild(t):e.replaceChild(t,e.firstChild);n=t}}return n}function D(e,t,n,r){let i=!1;for(let s=0,a=t.length;s=0;a--){const o=t[a];if(i!==o){const c=o.parentNode===e;!s&&!a?c?e.replaceChild(i,o):e.insertBefore(i,n):c&&o.remove()}else s=!0}}else e.insertBefore(i,n);return[i]}const ve=["agreeable","aloof","ambitious","angry","animated","antagonistic","anxious","apprehensive","awestruck","belligerent","calm","carefree","caring","cheerful","combative","dark","defensive","dejected","eager","energetic","erratic","excited","fearful","festive","friendly","fun","gloomy","glum","grateful","gregarious","heartbroken","hopeful","hostile","idyllic","impatient","indignant","invigorated","lighthearted","lively","lonely","loving","melancholy","mischievous","miserable","mournful","mysterious","nervous","nostalgic","ominous","optimistic","outgoing","overwhelmed","passionate","peaceful","perky","pessimistic","playful","realistic","reflective","resentful","restless","romantic","sad","sentimental","serious","shy","silly","solemn","strange","tender","tense","thankful","transcendent","unaffected","uneasy","unfriendly","unstable","unsteady","vivacious","wretched"],ke=["plush","robot","vampire","zombie","wooden","virtual","military","aquatic","ancient","future","superpowered"],Se=["albatross","alligator","antelope","arctic fox","armadillo","baboon","badger","bat","beagle","brown bear","black bear","polar bear","beaver","bison","blue whale","boar","brill","buffalo","bull","camel","capybara","carp","cat","chameleon","cheetah","chihuahua","chimpanzee","chinchilla","cobra","cow","crab","crocodile","crow","deer","dodo","dog","dolphin","donkey","duck","eagle","eel","elephant","elk","emu","fish","flamingo","fox","frog","frog","giant","giraffe","goat","goose","gorilla","haddock","hammerhead","hamster","hare","hawk","hedgehog","hen","hermit","herring","hippopotamus","horse","ibex","iguana","jackal","jaguar","jellyfish","kangaroo","koala","lemur","leopard","lion","lizard","llama","lynx","mammoth","meerkat","mole","monkey","mouse","mule","newt","orangutan","ostrich","otter","owl","panda","panther","peacock","pigeon","pike","porcupine","possum","pufferfish","rabbit","racoon","rat","rhinoceros","salamander","salmon","sardine","shark","sheep","sloth","snake","squirrel","swan","tiger","toad","tortoise","tuna","turtle","vulture","whale","wolf","wombat","zebra"],Ee=["accountant","actor","actuary","administrator","advertising manager","aerospace engineer","agent","agricultural engineer","air traffic controller","anthropologist","archeologist","architect","art director","astronomer","athlete","auditor","baker","banking analyst","barista","bartender","bioinformatics scientist","biologist","biomedical engineer","blacksmiths","board member","broker","business analyst","buyer","naval captain","carpenter","cashier","chef","chemical engineer","chemist","chief executive","childcare worker","choreographer","civil engineer","cleaner","clergy","compliance manager","computer scientist","concierge","conservation worker","construction manager","construction worker","consultant","cook","copywriter","cosmetologist","courier","craftsperson","curator","customer experience designer","customer service representative","data analyst","data architect","data scientist","database administrator","dental assistant","dentist","development manager","director","ecommerce seller","economist","electrical engineer","electrician","emergency medical technician","energy engineer","engineer","entrepreneur","environmental engineer","environmental scientist","epidemiologist","equipment operator","event planner","executive management","farmer","fashion designer","financial analyst","financial controller","financial manager","firefighter","fishery worker","fitness trainer","flight attendant","floral designer","forestry worker","funeral attendant","game designer","gardener","general manager","geographer","government worker","hair stylist","health educator","homemaker","hotel manager","human resources","import/export specialist","industrial designer","information designer","information scientist","information technology manager","installation & maintenance worker","interpreter","journalist","laboratory technician","laborer","landscape architect","landscaping","lawyer","legal secretary","librarian","lifeguard","logistics engineer","management consultant","manicurist","manufacturing engineer","manufacturing worker","marketing analyst","marketing manager","mathematician","mechanical engineer","medical administrator","medical assistant","medical technician","medical technologist","mental health counselor","midwife","miner","monk","musician","nanny","network administrator","nun","nurse","occupational health & safety specialist","occupational therapist","office clerk","operations analyst","operations manager","optometrist","performance artist","personal care aid","pharmacist","photographer","physician","physicist","pilot","plumber","police officer","politician","producer","product designer","production manager","professor","program manager","project manager","promotion manager","property manager","public relations","purchasing manager","quality assurance manager","quality control analyst","railroad engineer","reporter","researcher","restaurant manager","rigger","robotics engineer","sales engineer","sales manager","salesperson","scientist","service attendant","service manager","shop salesperson","small business owner","social worker","sociologist","software architect","software developer","solar energy technician","space scientist","statistician","steel worker","stonemason","supervisor","surgeon","surveyor","system administrator","systems analyst","tailor","teacher","technical support representative","technical writer","technician","technology architect","testing engineer","tour guide","translator","transportation engineer","truck driver","tutor","urban designer","veterinarian","visual designer","waiter","web developer","wind energy engineer","writer","zoologist"],T={adjective:ve,mod:ke,animal:Se,jobs:Ee},Ae="modulepreload",_e=function(e){return"/"+e},K={},xe=function(t,n,r){let i=Promise.resolve();if(n&&n.length>0){let a=function(u){return Promise.all(u.map(f=>Promise.resolve(f).then(l=>({status:"fulfilled",value:l}),l=>({status:"rejected",reason:l}))))};document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),c=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));i=a(n.map(u=>{if(u=_e(u),u in K)return;K[u]=!0;const f=u.endsWith(".css"),l=f?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${u}"]${l}`))return;const g=document.createElement("link");if(g.rel=f?"stylesheet":Ae,f||(g.as="script"),g.crossOrigin="",g.href=u,c&&g.setAttribute("nonce",c),document.head.appendChild(g),f)return new Promise((w,b)=>{g.addEventListener("load",w),g.addEventListener("error",()=>b(new Error(`Unable to preload CSS for ${u}`)))})}))}function s(a){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=a,window.dispatchEvent(o),!o.defaultPrevented)throw a}return i.then(a=>{for(const o of a||[])o.status==="rejected"&&s(o.reason);return t().catch(s)})};function Ce(e={}){const{immediate:t=!1,onNeedRefresh:n,onOfflineReady:r,onRegistered:i,onRegisteredSW:s,onRegisterError:a}=e;let o,c;const u=async(l=!0)=>{await c};async function f(){if("serviceWorker"in navigator){if(o=await xe(async()=>{const{Workbox:l}=await import("./workbox-window.prod.es5-B9K5rw8f.js");return{Workbox:l}},[]).then(({Workbox:l})=>new l("/drawing-prompt/sw.js",{scope:"/drawing-prompt/",type:"classic"})).catch(l=>{a==null||a(l)}),!o)return;o.addEventListener("activated",l=>{(l.isUpdate||l.isExternal)&&window.location.reload()}),o.addEventListener("installed",l=>{l.isUpdate||r==null||r()}),o.register({immediate:t}).then(l=>{s?s("/drawing-prompt/sw.js",l):i==null||i(l)}).catch(l=>{a==null||a(l)})}}return c=f(),u}function $e(e={}){const{immediate:t=!0,onNeedRefresh:n,onOfflineReady:r,onRegistered:i,onRegisteredSW:s,onRegisterError:a}=e,[o,c]=q(!1),[u,f]=q(!1),l=Ce({immediate:t,onOfflineReady(){f(!0),r==null||r()},onNeedRefresh(){c(!0),n==null||n()},onRegistered:i,onRegisteredSW:s,onRegisterError:a});return{needRefresh:[o,c],offlineReady:[u,f],updateServiceWorker:l}}const Te="_Container_klvpw_1",Le="_Toast_klvpw_7",Pe="_Message_klvpw_20",Ne="_ToastButton_klvpw_23",E={Container:Te,Toast:Le,Message:Pe,ToastButton:Ne};var je=$("
New content available, click on reload button to update.