From 5287a2f7061257d12d2afa58569fc0cf64a355fd Mon Sep 17 00:00:00 2001 From: thenaijagamer Date: Tue, 19 Mar 2024 00:07:15 +0100 Subject: [PATCH] Rename dist to docs and re-build --- {dist => docs}/favicon.42656662.png | Bin {dist => docs}/icons.c14567a0.svg | 0 {dist => docs}/index.628a78b8.css | 0 {dist => docs}/index.628a78b8.css.map | 0 docs/index.6cd0e77f.js | 166 +++++++++++++++++++ docs/index.6cd0e77f.js.map | 1 + {dist => docs}/index.7586cd7f.js | 0 {dist => docs}/index.7586cd7f.js.map | 0 docs/index.e55c1d8e.css | 2 + docs/index.e55c1d8e.css.map | 1 + {dist => docs}/index.html | 2 +- {dist => docs}/index.runtime.283c0eb6.js | 0 {dist => docs}/index.runtime.283c0eb6.js.map | 0 docs/index.runtime.b9507e23.js | 2 + docs/index.runtime.b9507e23.js.map | 1 + {dist => docs}/logo.833dfef5.png | Bin package.json | 2 +- 17 files changed, 175 insertions(+), 2 deletions(-) rename {dist => docs}/favicon.42656662.png (100%) rename {dist => docs}/icons.c14567a0.svg (100%) rename {dist => docs}/index.628a78b8.css (100%) rename {dist => docs}/index.628a78b8.css.map (100%) create mode 100644 docs/index.6cd0e77f.js create mode 100644 docs/index.6cd0e77f.js.map rename {dist => docs}/index.7586cd7f.js (100%) rename {dist => docs}/index.7586cd7f.js.map (100%) create mode 100644 docs/index.e55c1d8e.css create mode 100644 docs/index.e55c1d8e.css.map rename {dist => docs}/index.html (96%) rename {dist => docs}/index.runtime.283c0eb6.js (100%) rename {dist => docs}/index.runtime.283c0eb6.js.map (100%) create mode 100644 docs/index.runtime.b9507e23.js create mode 100644 docs/index.runtime.b9507e23.js.map rename {dist => docs}/logo.833dfef5.png (100%) diff --git a/dist/favicon.42656662.png b/docs/favicon.42656662.png similarity index 100% rename from dist/favicon.42656662.png rename to docs/favicon.42656662.png diff --git a/dist/icons.c14567a0.svg b/docs/icons.c14567a0.svg similarity index 100% rename from dist/icons.c14567a0.svg rename to docs/icons.c14567a0.svg diff --git a/dist/index.628a78b8.css b/docs/index.628a78b8.css similarity index 100% rename from dist/index.628a78b8.css rename to docs/index.628a78b8.css diff --git a/dist/index.628a78b8.css.map b/docs/index.628a78b8.css.map similarity index 100% rename from dist/index.628a78b8.css.map rename to docs/index.628a78b8.css.map diff --git a/docs/index.6cd0e77f.js b/docs/index.6cd0e77f.js new file mode 100644 index 0000000..cf10819 --- /dev/null +++ b/docs/index.6cd0e77f.js @@ -0,0 +1,166 @@ +var e,t,r,n,i,o,a,s,c,u,l,d,p,f,h,v,g,m,y,b=globalThis;function _(e){return e&&e.__esModule?e.default:e}var w={},k={},E=function(e){return e&&e.Math===Math&&e};k=E("object"==typeof globalThis&&globalThis)||E("object"==typeof window&&window)||E("object"==typeof self&&self)||E("object"==typeof b&&b)||E("object"==typeof k&&k)||function(){return this}()||Function("return this")();var S={},$={};S=!($=function(e){try{return!!e()}catch(e){return!0}})(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]});var O={},j={};j=!$(function(){var e=(function(){}).bind();return"function"!=typeof e||e.hasOwnProperty("prototype")});var M=Function.prototype.call;O=j?M.bind(M):function(){return M.apply(M,arguments)};var F={}.propertyIsEnumerable,L=Object.getOwnPropertyDescriptor;o=L&&!F.call({1:2},1)?function(e){var t=L(this,e);return!!t&&t.enumerable}:F;var x={};x=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}};var P={},T={},D={},H=Function.prototype,q=H.call,I=j&&H.bind.bind(q,q),A={},N=(D=j?I:function(e){return function(){return q.apply(e,arguments)}})({}.toString),C=D("".slice);A=function(e){return C(N(e),8,-1)};var R=Object,W=D("".split);T=$(function(){return!R("z").propertyIsEnumerable(0)})?function(e){return"String"===A(e)?W(e,""):R(e)}:R;var z={},B={};B=function(e){return null==e};var G=TypeError;z=function(e){if(B(e))throw new G("Can't call method on "+e);return e},P=function(e){return T(z(e))};var U={},J={},Y={},Q={},V="object"==typeof document&&document.all;Q=void 0===V&&void 0!==V?function(e){return"function"==typeof e||e===V}:function(e){return"function"==typeof e},Y=function(e){return"object"==typeof e?null!==e:Q(e)};var K={},X={};X=function(e,t){var r;return arguments.length<2?(r=k[e],Q(r)?r:void 0):k[e]&&k[e][t]};var Z={};Z=D({}.isPrototypeOf);var ee={},et={},er={},en={};en="undefined"!=typeof navigator&&String(navigator.userAgent)||"";var ei=k.process,eo=k.Deno,ea=ei&&ei.versions||eo&&eo.version,es=ea&&ea.v8;es&&(s=(a=es.split("."))[0]>0&&a[0]<4?1:+(a[0]+a[1])),!s&&en&&(!(a=en.match(/Edge\/(\d+)/))||a[1]>=74)&&(a=en.match(/Chrome\/(\d+)/))&&(s=+a[1]),er=s;var ec=k.String;ee=(et=!!Object.getOwnPropertySymbols&&!$(function(){var e=Symbol("symbol detection");return!ec(e)||!(Object(e) instanceof Symbol)||!Symbol.sham&&er&&er<41}))&&!Symbol.sham&&"symbol"==typeof Symbol.iterator;var eu=Object;K=ee?function(e){return"symbol"==typeof e}:function(e){var t=X("Symbol");return Q(t)&&Z(t.prototype,eu(e))};var el={},ed={},ep={},ef=String;ep=function(e){try{return ef(e)}catch(e){return"Object"}};var eh=TypeError;ed=function(e){if(Q(e))return e;throw new eh(ep(e)+" is not a function")},el=function(e,t){var r=e[t];return B(r)?void 0:ed(r)};var ev={},eg=TypeError;ev=function(e,t){var r,n;if("string"===t&&Q(r=e.toString)&&!Y(n=O(r,e))||Q(r=e.valueOf)&&!Y(n=O(r,e))||"string"!==t&&Q(r=e.toString)&&!Y(n=O(r,e)))return n;throw new eg("Can't convert object to primitive value")};var em={},ey={},eb={};eb=!1;var e_={},ew=Object.defineProperty;e_=function(e,t){try{ew(k,e,{value:t,configurable:!0,writable:!0})}catch(r){k[e]=t}return t};var ek="__core-js_shared__",eE=ey=k[ek]||e_(ek,{});(eE.versions||(eE.versions=[])).push({version:"3.36.0",mode:eb?"pure":"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.36.0/LICENSE",source:"https://github.com/zloirock/core-js"}),em=function(e,t){return ey[e]||(ey[e]=t||{})};var eS={},e$={},eO=Object;e$=function(e){return eO(z(e))};var ej=D({}.hasOwnProperty);eS=Object.hasOwn||function(e,t){return ej(e$(e),t)};var eM={},eF=0,eL=Math.random(),ex=D(1..toString);eM=function(e){return"Symbol("+(void 0===e?"":e)+")_"+ex(++eF+eL,36)};var eP=k.Symbol,eT=em("wks"),eD=ee?eP.for||eP:eP&&eP.withoutSetter||eM,eH=TypeError,eq=(eS(eT,e="toPrimitive")||(eT[e]=et&&eS(eP,e)?eP[e]:eD("Symbol."+e)),eT[e]);J=function(e,t){if(!Y(e)||K(e))return e;var r,n=el(e,eq);if(n){if(void 0===t&&(t="default"),r=O(n,e,t),!Y(r)||K(r))return r;throw new eH("Can't convert object to primitive value")}return void 0===t&&(t="number"),ev(e,t)},U=function(e){var t=J(e,"string");return K(t)?t:t+""};var eI={},eA={},eN=k.document,eC=Y(eN)&&Y(eN.createElement);eA=function(e){return eC?eN.createElement(e):{}},eI=!S&&!$(function(){return 7!==Object.defineProperty(eA("div"),"a",{get:function(){return 7}}).a});var eR=Object.getOwnPropertyDescriptor;i=S?eR:function(e,t){if(e=P(e),t=U(t),eI)try{return eR(e,t)}catch(e){}if(eS(e,t))return x(!O(o,e,t),e[t])};var eW={},ez={};ez=S&&$(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype});var eB={},eG=String,eU=TypeError;eB=function(e){if(Y(e))return e;throw new eU(eG(e)+" is not an object")};var eJ=TypeError,eY=Object.defineProperty,eQ=Object.getOwnPropertyDescriptor,eV="enumerable",eK="configurable",eX="writable";c=S?ez?function(e,t,r){if(eB(e),t=U(t),eB(r),"function"==typeof e&&"prototype"===t&&"value"in r&&eX in r&&!r[eX]){var n=eQ(e,t);n&&n[eX]&&(e[t]=r.value,r={configurable:eK in r?r[eK]:n[eK],enumerable:eV in r?r[eV]:n[eV],writable:!1})}return eY(e,t,r)}:eY:function(e,t,r){if(eB(e),t=U(t),eB(r),eI)try{return eY(e,t,r)}catch(e){}if("get"in r||"set"in r)throw new eJ("Accessors not supported");return"value"in r&&(e[t]=r.value),e},eW=S?function(e,t,r){return c(e,t,x(1,r))}:function(e,t,r){return e[t]=r,e};var eZ={},e0={},e1=Function.prototype,e2=S&&Object.getOwnPropertyDescriptor,e3=eS(e1,"name")&&(!S||S&&e2(e1,"name").configurable),e7={},e4=D(Function.toString);Q(ey.inspectSource)||(ey.inspectSource=function(e){return e4(e)}),e7=ey.inspectSource;var e8={},e9={},e6=k.WeakMap;e9=Q(e6)&&/native code/.test(String(e6));var e5={},te=em("keys");e5=function(e){return te[e]||(te[e]=eM(e))};var tt={};tt={};var tr="Object already initialized",tn=k.TypeError,ti=k.WeakMap;if(e9||ey.state){var to=ey.state||(ey.state=new ti);to.get=to.get,to.has=to.has,to.set=to.set,u=function(e,t){if(to.has(e))throw new tn(tr);return t.facade=e,to.set(e,t),t},l=function(e){return to.get(e)||{}},d=function(e){return to.has(e)}}else{var ta=e5("state");tt[ta]=!0,u=function(e,t){if(eS(e,ta))throw new tn(tr);return t.facade=e,eW(e,ta,t),t},l=function(e){return eS(e,ta)?e[ta]:{}},d=function(e){return eS(e,ta)}}var ts=(e8={set:u,get:l,has:d,enforce:function(e){return d(e)?l(e):u(e,{})},getterFor:function(e){return function(t){var r;if(!Y(t)||(r=l(t)).type!==e)throw new tn("Incompatible receiver, "+e+" required");return r}}}).enforce,tc=e8.get,tu=String,tl=Object.defineProperty,tp=D("".slice),tf=D("".replace),th=D([].join),tv=S&&!$(function(){return 8!==tl(function(){},"length",{value:8}).length}),tg=String(String).split("String"),tm=e0=function(e,t,r){"Symbol("===tp(tu(t),0,7)&&(t="["+tf(tu(t),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!eS(e,"name")||e3&&e.name!==t)&&(S?tl(e,"name",{value:t,configurable:!0}):e.name=t),tv&&r&&eS(r,"arity")&&e.length!==r.arity&&tl(e,"length",{value:r.arity});try{r&&eS(r,"constructor")&&r.constructor?S&&tl(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=ts(e);return eS(n,"source")||(n.source=th(tg,"string"==typeof t?t:"")),e};Function.prototype.toString=tm(function(){return Q(this)&&tc(this).source||e7(this)},"toString"),eZ=function(e,t,r,n){n||(n={});var i=n.enumerable,o=void 0!==n.name?n.name:t;if(Q(r)&&e0(r,o,n),n.global)i?e[t]=r:e_(t,r);else{try{n.unsafe?e[t]&&(i=!0):delete e[t]}catch(e){}i?e[t]=r:c(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e};var ty={},tb={},t_={},tw={},tk={},tE={},tS=Math.ceil,t$=Math.floor;tE=Math.trunc||function(e){var t=+e;return(t>0?t$:tS)(t)},tk=function(e){var t=+e;return t!=t||0===t?0:tE(t)};var tO=Math.max,tj=Math.min;tw=function(e,t){var r=tk(e);return r<0?tO(r+t,0):tj(r,t)};var tM={},tF={},tL=Math.min;tF=function(e){var t=tk(e);return t>0?tL(t,9007199254740991):0},tM=function(e){return tF(e.length)};var tx=function(e){return function(t,r,n){var i,o=P(t),a=tM(o);if(0===a)return!e&&-1;var s=tw(n,a);if(e&&r!=r){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===r)return e||s||0;return!e&&-1}},tP={includes:tx(!0),indexOf:tx(!1)}.indexOf,tT=D([].push);t_=function(e,t){var r,n=P(e),i=0,o=[];for(r in n)!eS(tt,r)&&eS(n,r)&&tT(o,r);for(;t.length>i;)eS(n,r=t[i++])&&(~tP(o,r)||tT(o,r));return o};var tD=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"].concat("length","prototype");p=Object.getOwnPropertyNames||function(e){return t_(e,tD)},f=Object.getOwnPropertySymbols;var tH=D([].concat);tb=X("Reflect","ownKeys")||function(e){var t=p(eB(e));return f?tH(t,f(e)):t},ty=function(e,t,r){for(var n=tb(t),o=0;or,a=Q(n)?n:rd(n),s=o?tX(arguments,r):[],c=o?function(){tB(a,this,s)}:a;return t?e(c,i):e(c)}:e};var rf=k.setImmediate?ru(rc,!1):rc;w({global:!0,bind:!0,enumerable:!0,forced:k.setImmediate!==rf},{setImmediate:rf});const rh="https://forkify-api.herokuapp.com/api/v2/recipes/",rv="763e47ed-f380-4bd6-b269-09971a80bf7e",rg=async function(e,t){try{let r=t?fetch(e,{method:"POST",headers:{"content-Type":"application/json"},body:JSON.stringify(t)}):fetch(e),n=await Promise.race([r,new Promise(function(e,t){setTimeout(function(){t(Error("Request took too long! Timeout after 10 second"))},1e4)})]),i=await n.json();if(!n.ok)throw Error(`${i.message} ${n.status} ${n.statusText}`);return i}catch(e){throw e}},rm={recipe:{},search:{query:"",results:[],resultsPerPage:10,page:1},bookmarks:JSON.parse(localStorage.getItem("bookmarks"))||[]},ry=function(e){let{recipe:t}=e.data;return{id:t.id,title:t.title,publisher:t.publisher,sourceUrl:t.source_url,image:t.image_url,servings:t.servings,cookingTime:t.cooking_time,ingredients:t.ingredients,...t.key&&{key:t.key}}},rb=async function(e){try{let t=await rg(`${rh}${e}?key=${rv}`);rm.recipe=ry(t),rm.bookmarks.some(t=>t.id===e)&&(rm.recipe.bookmarked=!rm.recipe.bookmarked)}catch(e){throw console.error(e),e}},r_=async function(e){try{rm.search.query=e;let t=await rg(`${rh}?search=${e}&key=${rv}`);console.log(t),rm.search.results=t.data.recipes.map(e=>({id:e.id,title:e.title,publisher:e.publisher,image:e.image_url,...e.key&&{key:e.key}})),console.log(rm.search.results),rm.search.page=1}catch(e){throw console.log(e),e}},rw=function(e=rm.search.page){rm.search.page=e;let t=(e-1)*rm.search.resultsPerPage,r=e*rm.search.resultsPerPage;return rm.search.results.slice(t,r)},rk=function(e){rm.recipe.ingredients.forEach(t=>{t.quantity=t.quantity*e/rm.recipe.servings}),rm.recipe.servings=e},rE=function(){localStorage.setItem("bookmarks",JSON.stringify(rm.bookmarks))},rS=function(e){rm.bookmarks.push(e),e.id===rm.recipe.id&&(rm.recipe.bookmarked=!0),rE()},r$=function(e){let t=rm.bookmarks.findIndex(t=>t.id===e);rm.bookmarks.splice(t,1),e===rm.recipe.id&&(rm.recipe.bookmarked=!1),rE()},rO=async function(e){try{let t=Object.entries(e).filter(e=>e[0].startsWith("ingredient")&&""!==e[1]).map(e=>{let t=e[1].split(",").map(e=>e.trim());if(3!==t.length)throw Error("Wrong ingredient format! Please use the correct format \uD83D\uDE0A");let[r,n,i]=t;return{quantity:+r||null,unit:n,description:i}}),r={title:e.title,source_url:e.sourceUrl,image_url:e.image,publisher:e.publisher,cooking_time:e.cookingTime,servings:e.servings,ingredients:t},n=await rg(`${rh}?key=${rv}`,r);rm.recipe=ry(n),rS(rm.recipe),console.log(n)}catch(e){throw e}};var rj={};rj=new URL("icons.c14567a0.svg",import.meta.url).toString();class rM{_data;render(e){if(!e||Array.isArray(e)&&0===e.length)return this.renderError();this._data=e;let t=this._generateMarkup();this._clear(),this._parentElement.insertAdjacentHTML("afterbegin",t)}update(e){this._data=e;let t=this._generateMarkup(),r=Array.from(document.createRange().createContextualFragment(t).querySelectorAll("*")),n=Array.from(this._parentElement.querySelectorAll("*"));r.forEach((e,t)=>{let r=n[t];e.isEqualNode(r)||e.firstChild?.nodeValue.trim()===""||(r.textContent=e.textContent),e.isEqualNode(r)||Array.from(e.attributes).forEach(e=>r.setAttribute(e.name,e.value))})}_clear(){this._parentElement.innerHTML=""}renderSpinner(){let e=` +
+ + + +
`;this._clear(),this._parentElement.insertAdjacentHTML("afterbegin",e)}renderError(e=this._errorMessage){let t=` +
+
+ + + +
+

${e}

+
+ `;this._clear(),this._parentElement.insertAdjacentHTML("afterbegin",t)}renderSuccess(e=this._message){let t=` +
+
+ + + +
+

${e}

+
+ `;this._clear(),this._parentElement.insertAdjacentHTML("afterbegin",t)}}(Fraction=function(e,t){if(void 0!==e&&t)"number"==typeof e&&"number"==typeof t?(this.numerator=e,this.denominator=t):"string"==typeof e&&"string"==typeof t&&(this.numerator=parseInt(e),this.denominator=parseInt(t));else if(void 0===t){if("number"==typeof(num=e))this.numerator=num,this.denominator=1;else if("string"==typeof num){var r,n,i=num.split(" ");if(i[0]&&(r=i[0]),i[1]&&(n=i[1]),r%1==0&&n&&n.match("/"))return new Fraction(r).add(new Fraction(n));if(!r||n)return;if("string"==typeof r&&r.match("/")){var o=r.split("/");this.numerator=o[0],this.denominator=o[1]}else{if("string"==typeof r&&r.match("."))return new Fraction(parseFloat(r));this.numerator=parseInt(r),this.denominator=1}}}this.normalize()}).prototype.clone=function(){return new Fraction(this.numerator,this.denominator)},Fraction.prototype.toString=function(){if("NaN"===this.denominator)return"NaN";var e=this.numerator/this.denominator>0?Math.floor(this.numerator/this.denominator):Math.ceil(this.numerator/this.denominator),t=this.numerator%this.denominator,r=this.denominator,n=[];return 0!=e&&n.push(e),0!=t&&n.push((0===e?t:Math.abs(t))+"/"+r),n.length>0?n.join(" "):0},Fraction.prototype.rescale=function(e){return this.numerator*=e,this.denominator*=e,this},Fraction.prototype.add=function(e){var t=this.clone();return e instanceof Fraction?e=e.clone():e=new Fraction(e),td=t.denominator,t.rescale(e.denominator),e.rescale(td),t.numerator+=e.numerator,t.normalize()},Fraction.prototype.subtract=function(e){var t=this.clone();return e instanceof Fraction?e=e.clone():e=new Fraction(e),td=t.denominator,t.rescale(e.denominator),e.rescale(td),t.numerator-=e.numerator,t.normalize()},Fraction.prototype.multiply=function(e){var t=this.clone();if(e instanceof Fraction)t.numerator*=e.numerator,t.denominator*=e.denominator;else{if("number"!=typeof e)return t.multiply(new Fraction(e));t.numerator*=e}return t.normalize()},Fraction.prototype.divide=function(e){var t=this.clone();if(e instanceof Fraction)t.numerator*=e.denominator,t.denominator*=e.numerator;else{if("number"!=typeof e)return t.divide(new Fraction(e));t.denominator*=e}return t.normalize()},Fraction.prototype.equals=function(e){e instanceof Fraction||(e=new Fraction(e));var t=this.clone().normalize(),e=e.clone().normalize();return t.numerator===e.numerator&&t.denominator===e.denominator},Fraction.prototype.normalize=(r=function(e){return"number"==typeof e&&(e>0&&e%1>0&&e%1<1||e<0&&e%-1<0&&e%-1>-1)},n=function(e,t){if(!t)return Math.round(e);var r=Math.pow(10,t);return Math.round(e*r)/r},function(){if(r(this.denominator)){var e=n(this.denominator,9),t=Math.pow(10,e.toString().split(".")[1].length);this.denominator=Math.round(this.denominator*t),this.numerator*=t}if(r(this.numerator)){var e=n(this.numerator,9),t=Math.pow(10,e.toString().split(".")[1].length);this.numerator=Math.round(this.numerator*t),this.denominator*=t}var i=Fraction.gcf(this.numerator,this.denominator);return this.numerator/=i,this.denominator/=i,(this.numerator<0&&this.denominator<0||this.numerator>0&&this.denominator<0)&&(this.numerator*=-1,this.denominator*=-1),this}),Fraction.gcf=function(e,t){var r=[],n=Fraction.primeFactors(e),i=Fraction.primeFactors(t);return(n.forEach(function(e){var t=i.indexOf(e);t>=0&&(r.push(e),i.splice(t,1))}),0===r.length)?1:function(){var e,t=r[0];for(e=1;ewindow.addEventListener(t,e))}addHandlerUpdateServings(e){this._parentElement.addEventListener("click",function(t){let r=t.target.closest(".btn--update-servings");if(!r)return;let{updateTo:n}=r.dataset;+n>0&&e(+n)})}addHandlerAddBookmark(e){this._parentElement.addEventListener("click",function(t){t.target.closest(".btn--bookmark")&&e()})}_generateMarkup(){return`
+ ${this._data.title} +

+ ${this._data.title} +

+
+ +
+
+ + + + ${this._data.cookingTime} + minutes +
+
+ + + + ${this._data.servings} + servings + +
+ + +
+
+ +
+ + + +
+ +
+ +
+

Recipe ingredients

+
    + ${this._data.ingredients.map(this._generateMarkupIngredient).join("")} +
+
+ +
+

How to cook it

+

+ This recipe was carefully designed and tested by + ${this._data.publisher}. Please + check out directions at their website. +

+ + Directions + + + + +
`}_generateMarkupIngredient(e){return` +
  • + + + +
    + ${e.quantity?new y(e.quantity).toString():""} +
    +
    + ${e.unit} + ${e.description} +
    +
  • `}}var rL=new rF;class rx{#e=document.querySelector(".search");getQuery(){let e=this.#e.querySelector(".search__field").value;if(this.#t(),!e)throw Error("Search field is empty \uD83E\uDD26‍♂️");return e}#t(){this.#e.querySelector(".search__field").value=""}addHandlerSubmit(e){this.#e.addEventListener("submit",function(t){t.preventDefault(),e()})}}var rP=new rx,rT=new class extends rM{_parentElement="";_generateMarkupPreview(e){let t=window.location.hash.slice(1);return` + ${e.map(e=>`
  • + +
    + ${e.title} +
    +
    +

    ${e.title} ...

    +

    ${e.publisher}

    +
    + + + +
    +
    +
    +
  • `).join("")} + + `}};class rD extends rM{_parentElement=document.querySelector(".results");_message="";_errorMessage="Could not find what you are looking for!\uD83E\uDD37‍♂️ Make sure to check if the spelling of the recipe you entered is correct \uD83D\uDE0A";_generateMarkup(){return rT._generateMarkupPreview(this._data)}}var rH=new rD;class rq extends rM{_parentElement=document.querySelector(".pagination");addHandlerClick(e){this._parentElement.addEventListener("click",function(t){let r=t.target.closest(".btn--inline");r&&e(+r.dataset.goto)})}_generateMarkup(){let e=Math.ceil(this._data.results.length/this._data.resultsPerPage),t=this._data.page;return 1===t&&e>1?`${this._generateButtonMarkup("next",t)}`:t===e&&e>1?`${this._generateButtonMarkup("prev",t)}`:t>1&&t + ${"next"===e?`Page ${r} + + + `:` + + + Page ${r}`} + + `}}var rI=new rq;class rA extends rM{_parentElement=document.querySelector(".bookmarks__list");_message="";_errorMessage="No bookmarks yet! \uD83E\uDD37‍♂️ Find a recipe to add to bookmarks \uD83D\uDE0A";addHandlerRender(e){window.addEventListener("load",e)}_generateMarkup(){return rT._generateMarkupPreview(this._data)}}var rN=new rA;class rC extends rM{_parentElement=document.querySelector(".upload");_message="Recipe was successfully uploaded";_window=document.querySelector(".add-recipe-window");_overlay=document.querySelector(".overlay");_btnOpen=document.querySelector(".nav__btn--add-recipe");_btnClose=document.querySelector(".btn--close-modal");constructor(){super(),this._addHandlerShowWindow(),this._addHandlerHideWindow()}_addHandlerShowWindow(){this._btnOpen.addEventListener("click",this.toggleWindow.bind(this))}_addHandlerHideWindow(){this._overlay.addEventListener("click",this.toggleWindow.bind(this)),this._btnClose.addEventListener("click",this.toggleWindow.bind(this))}toggleWindow(){this._overlay.classList.toggle("hidden"),this._window.classList.toggle("hidden")}_addHandlerUpload(e){this._parentElement.addEventListener("submit",function(t){t.preventDefault(),e(Object.fromEntries([...new FormData(this)]))})}_generateMarkup(){}}var rR=new rC,rW=function(e){var t,r=Object.prototype,n=r.hasOwnProperty,i=Object.defineProperty||function(e,t,r){e[t]=r.value},o="function"==typeof Symbol?Symbol:{},a=o.iterator||"@@iterator",s=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function u(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{u({},"")}catch(e){u=function(e,t,r){return e[t]=r}}function l(e,r,n,o){var a,s,c=Object.create((r&&r.prototype instanceof g?r:g).prototype);return i(c,"_invoke",{value:(a=new j(o||[]),s=p,function(r,i){if(s===f)throw Error("Generator is already running");if(s===h){if("throw"===r)throw i;return{value:t,done:!0}}for(a.method=r,a.arg=i;;){var o=a.delegate;if(o){var c=function e(r,n){var i=n.method,o=r.iterator[i];if(o===t)return n.delegate=null,"throw"===i&&r.iterator.return&&(n.method="return",n.arg=t,e(r,n),"throw"===n.method)||"return"!==i&&(n.method="throw",n.arg=TypeError("The iterator does not provide a '"+i+"' method")),v;var a=d(o,r.iterator,n.arg);if("throw"===a.type)return n.method="throw",n.arg=a.arg,n.delegate=null,v;var s=a.arg;return s?s.done?(n[r.resultName]=s.value,n.next=r.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,v):s:(n.method="throw",n.arg=TypeError("iterator result is not an object"),n.delegate=null,v)}(o,a);if(c){if(c===v)continue;return c}}if("next"===a.method)a.sent=a._sent=a.arg;else if("throw"===a.method){if(s===p)throw s=h,a.arg;a.dispatchException(a.arg)}else"return"===a.method&&a.abrupt("return",a.arg);s=f;var u=d(e,n,a);if("normal"===u.type){if(s=a.done?h:"suspendedYield",u.arg===v)continue;return{value:u.arg,done:a.done}}"throw"===u.type&&(s=h,a.method="throw",a.arg=u.arg)}})}),c}function d(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var p="suspendedStart",f="executing",h="completed",v={};function g(){}function m(){}function y(){}var b={};u(b,a,function(){return this});var _=Object.getPrototypeOf,w=_&&_(_(M([])));w&&w!==r&&n.call(w,a)&&(b=w);var k=y.prototype=g.prototype=Object.create(b);function E(e){["next","throw","return"].forEach(function(t){u(e,t,function(e){return this._invoke(t,e)})})}function S(e,t){var r;i(this,"_invoke",{value:function(i,o){function a(){return new t(function(r,a){!function r(i,o,a,s){var c=d(e[i],e,o);if("throw"===c.type)s(c.arg);else{var u=c.arg,l=u.value;return l&&"object"==typeof l&&n.call(l,"__await")?t.resolve(l.__await).then(function(e){r("next",e,a,s)},function(e){r("throw",e,a,s)}):t.resolve(l).then(function(e){u.value=e,a(u)},function(e){return r("throw",e,a,s)})}}(i,o,r,a)})}return r=r?r.then(a,a):a()}})}function $(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function O(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function j(e){this.tryEntries=[{tryLoc:"root"}],e.forEach($,this),this.reset(!0)}function M(e){if(null!=e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var i=-1,o=function r(){for(;++i=0;--o){var a=this.tryEntries[o],s=a.completion;if("root"===a.tryLoc)return i("end");if(a.tryLoc<=this.prev){var c=n.call(a,"catchLoc"),u=n.call(a,"finallyLoc");if(c&&u){if(this.prev=0;--r){var i=this.tryEntries[r];if(i.tryLoc<=this.prev&&n.call(i,"finallyLoc")&&this.prev=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),O(r),v}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;O(r)}return i}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:M(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),v}},e}({});try{regeneratorRuntime=rW}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=rW:Function("r","regeneratorRuntime = r")(rW)}const rz=async function(){try{let e=window.location.hash.slice(1);if(!e)return;rL.renderSpinner(),rH.update(rw()),rN.update(rm.bookmarks),await rb(e),rL.render(rm.recipe)}catch(e){console.error(e),rL.renderError(e.message)}},rB=async function(){try{rH.renderSpinner();let e=rP.getQuery();await r_(e),rH.render(rw()),rI.render(rm.search)}catch(e){console.error(e),rH.renderError(e.message)}},rG=async function(e){try{rR.renderSpinner(),await rO(e),rL.render(rm.recipe),rR.renderSuccess(),rN.render(rm.bookmarks),window.history.pushState(null,"",`#${rm.recipe.id}`),setTimeout(function(){rR.toggleWindow()},2500)}catch(e){rR.renderError(e.message),console.error(e.message)}};rN.addHandlerRender(function(){rN.render(rm.bookmarks)}),rL.addHandlerRender(rz),rL.addHandlerUpdateServings(function(e){rk(e),rL.update(rm.recipe)}),rP.addHandlerSubmit(rB),rI.addHandlerClick(function(e){rH.render(rw(e)),rI.render(rm.search)}),rL.addHandlerAddBookmark(function(){rm.recipe.bookmarked?r$(rm.recipe.id):rS(rm.recipe),rL.update(rm.recipe),console.log(rm.recipe),rN.render(rm.bookmarks)}),rR._addHandlerUpload(rG); +//# sourceMappingURL=index.6cd0e77f.js.map diff --git a/docs/index.6cd0e77f.js.map b/docs/index.6cd0e77f.js.map new file mode 100644 index 0000000..ebdabf8 --- /dev/null +++ b/docs/index.6cd0e77f.js.map @@ -0,0 +1 @@ +{"mappings":"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","sources":["","src/js/controller.js","node_modules/core-js/modules/web.immediate.js","node_modules/core-js/modules/web.clear-immediate.js","node_modules/core-js/internals/export.js","node_modules/core-js/internals/global.js","node_modules/core-js/internals/object-get-own-property-descriptor.js","node_modules/core-js/internals/descriptors.js","node_modules/core-js/internals/fails.js","node_modules/core-js/internals/function-call.js","node_modules/core-js/internals/function-bind-native.js","node_modules/core-js/internals/object-property-is-enumerable.js","node_modules/core-js/internals/create-property-descriptor.js","node_modules/core-js/internals/to-indexed-object.js","node_modules/core-js/internals/indexed-object.js","node_modules/core-js/internals/function-uncurry-this.js","node_modules/core-js/internals/classof-raw.js","node_modules/core-js/internals/require-object-coercible.js","node_modules/core-js/internals/is-null-or-undefined.js","node_modules/core-js/internals/to-property-key.js","node_modules/core-js/internals/to-primitive.js","node_modules/core-js/internals/is-object.js","node_modules/core-js/internals/is-callable.js","node_modules/core-js/internals/is-symbol.js","node_modules/core-js/internals/get-built-in.js","node_modules/core-js/internals/object-is-prototype-of.js","node_modules/core-js/internals/use-symbol-as-uid.js","node_modules/core-js/internals/symbol-constructor-detection.js","node_modules/core-js/internals/engine-v8-version.js","node_modules/core-js/internals/engine-user-agent.js","node_modules/core-js/internals/get-method.js","node_modules/core-js/internals/a-callable.js","node_modules/core-js/internals/try-to-string.js","node_modules/core-js/internals/ordinary-to-primitive.js","node_modules/core-js/internals/well-known-symbol.js","node_modules/core-js/internals/shared.js","node_modules/core-js/internals/shared-store.js","node_modules/core-js/internals/is-pure.js","node_modules/core-js/internals/define-global-property.js","node_modules/core-js/internals/has-own-property.js","node_modules/core-js/internals/to-object.js","node_modules/core-js/internals/uid.js","node_modules/core-js/internals/ie8-dom-define.js","node_modules/core-js/internals/document-create-element.js","node_modules/core-js/internals/create-non-enumerable-property.js","node_modules/core-js/internals/object-define-property.js","node_modules/core-js/internals/v8-prototype-define-bug.js","node_modules/core-js/internals/an-object.js","node_modules/core-js/internals/define-built-in.js","node_modules/core-js/internals/make-built-in.js","node_modules/core-js/internals/function-name.js","node_modules/core-js/internals/inspect-source.js","node_modules/core-js/internals/internal-state.js","node_modules/core-js/internals/weak-map-basic-detection.js","node_modules/core-js/internals/shared-key.js","node_modules/core-js/internals/hidden-keys.js","node_modules/core-js/internals/copy-constructor-properties.js","node_modules/core-js/internals/own-keys.js","node_modules/core-js/internals/object-get-own-property-names.js","node_modules/core-js/internals/object-keys-internal.js","node_modules/core-js/internals/array-includes.js","node_modules/core-js/internals/to-absolute-index.js","node_modules/core-js/internals/to-integer-or-infinity.js","node_modules/core-js/internals/math-trunc.js","node_modules/core-js/internals/length-of-array-like.js","node_modules/core-js/internals/to-length.js","node_modules/core-js/internals/enum-bug-keys.js","node_modules/core-js/internals/object-get-own-property-symbols.js","node_modules/core-js/internals/is-forced.js","node_modules/core-js/internals/task.js","node_modules/core-js/internals/function-apply.js","node_modules/core-js/internals/function-bind-context.js","node_modules/core-js/internals/function-uncurry-this-clause.js","node_modules/core-js/internals/html.js","node_modules/core-js/internals/array-slice.js","node_modules/core-js/internals/validate-arguments-length.js","node_modules/core-js/internals/engine-is-ios.js","node_modules/core-js/internals/engine-is-node.js","node_modules/core-js/modules/web.set-immediate.js","node_modules/core-js/internals/schedulers-fix.js","node_modules/core-js/internals/engine-is-bun.js","src/js/model.js","src/js/config.js","src/js/helpers.js","src/js/views/recipeView.js","src/js/views/view.js","node_modules/@parcel/runtime-js/lib/runtime-3f2d35448fe11453.js","node_modules/fractional/index.js","src/js/views/searchView.js","src/js/views/resultsView.js","src/js/views/previewView.js","src/js/views/paginationView.js","src/js/views/bookmarksView.js","src/js/views/addRecipeView.js","node_modules/regenerator-runtime/runtime.js"],"sourcesContent":["\n var $parcel$global = globalThis;\n \nfunction $parcel$interopDefault(a) {\n return a && a.__esModule ? a.default : a;\n}\n\"use strict\";\n\"use strict\";\nvar $ca3e1754e676956d$exports = {};\n\"use strict\";\nvar $55b335199d6e6d5d$exports = {};\n\"use strict\";\nvar $55b335199d6e6d5d$var$check = function(it) {\n return it && it.Math === Math && it;\n};\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n$55b335199d6e6d5d$exports = // eslint-disable-next-line es/no-global-this -- safe\n$55b335199d6e6d5d$var$check(typeof globalThis == \"object\" && globalThis) || $55b335199d6e6d5d$var$check(typeof window == \"object\" && window) || // eslint-disable-next-line no-restricted-globals -- safe\n$55b335199d6e6d5d$var$check(typeof self == \"object\" && self) || $55b335199d6e6d5d$var$check(typeof $parcel$global == \"object\" && $parcel$global) || $55b335199d6e6d5d$var$check(typeof $55b335199d6e6d5d$exports == \"object\" && $55b335199d6e6d5d$exports) || // eslint-disable-next-line no-new-func -- fallback\nfunction() {\n return this;\n}() || Function(\"return this\")();\n\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nvar $6d99163b6684d050$export$2d1720544b23b823;\n\"use strict\";\nvar $ef322a7f89c3ed41$exports = {};\n\"use strict\";\nvar $6140c9fa18232846$exports = {};\n\"use strict\";\n$6140c9fa18232846$exports = function(exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n\n\n// Detect IE8's incomplete defineProperty implementation\n$ef322a7f89c3ed41$exports = !$6140c9fa18232846$exports(function() {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, {\n get: function() {\n return 7;\n }\n })[1] !== 7;\n});\n\n\nvar $881ad37dbe259e8f$exports = {};\n\"use strict\";\nvar $bcbe62e89adc7d37$exports = {};\n\"use strict\";\n\n$bcbe62e89adc7d37$exports = !$6140c9fa18232846$exports(function() {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function() {}).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != \"function\" || test.hasOwnProperty(\"prototype\");\n});\n\n\nvar $881ad37dbe259e8f$var$call = Function.prototype.call;\n$881ad37dbe259e8f$exports = $bcbe62e89adc7d37$exports ? $881ad37dbe259e8f$var$call.bind($881ad37dbe259e8f$var$call) : function() {\n return $881ad37dbe259e8f$var$call.apply($881ad37dbe259e8f$var$call, arguments);\n};\n\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nvar $1e0782be6903ea7b$export$2d1720544b23b823;\n\"use strict\";\nvar $1e0782be6903ea7b$var$$propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $1e0782be6903ea7b$var$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n// Nashorn ~ JDK8 bug\nvar $1e0782be6903ea7b$var$NASHORN_BUG = $1e0782be6903ea7b$var$getOwnPropertyDescriptor && !$1e0782be6903ea7b$var$$propertyIsEnumerable.call({\n 1: 2\n}, 1);\n$1e0782be6903ea7b$export$2d1720544b23b823 = $1e0782be6903ea7b$var$NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = $1e0782be6903ea7b$var$getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $1e0782be6903ea7b$var$$propertyIsEnumerable;\n\n\nvar $b66966b48674609b$exports = {};\n\"use strict\";\n$b66966b48674609b$exports = function(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\nvar $4d273c9d7e1bdf46$exports = {};\n\"use strict\";\nvar $8239f4c7c6082668$exports = {};\n\"use strict\";\nvar $43b18aa2f1faac44$exports = {};\n\"use strict\";\n\nvar $43b18aa2f1faac44$var$FunctionPrototype = Function.prototype;\nvar $43b18aa2f1faac44$var$call = $43b18aa2f1faac44$var$FunctionPrototype.call;\nvar $43b18aa2f1faac44$var$uncurryThisWithBind = $bcbe62e89adc7d37$exports && $43b18aa2f1faac44$var$FunctionPrototype.bind.bind($43b18aa2f1faac44$var$call, $43b18aa2f1faac44$var$call);\n$43b18aa2f1faac44$exports = $bcbe62e89adc7d37$exports ? $43b18aa2f1faac44$var$uncurryThisWithBind : function(fn) {\n return function() {\n return $43b18aa2f1faac44$var$call.apply(fn, arguments);\n };\n};\n\n\n\nvar $b0ba63bfbfb16088$exports = {};\n\"use strict\";\n\nvar $b0ba63bfbfb16088$var$toString = $43b18aa2f1faac44$exports({}.toString);\nvar $b0ba63bfbfb16088$var$stringSlice = $43b18aa2f1faac44$exports(\"\".slice);\n$b0ba63bfbfb16088$exports = function(it) {\n return $b0ba63bfbfb16088$var$stringSlice($b0ba63bfbfb16088$var$toString(it), 8, -1);\n};\n\n\nvar $8239f4c7c6082668$var$$Object = Object;\nvar $8239f4c7c6082668$var$split = $43b18aa2f1faac44$exports(\"\".split);\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\n$8239f4c7c6082668$exports = $6140c9fa18232846$exports(function() {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$8239f4c7c6082668$var$$Object(\"z\").propertyIsEnumerable(0);\n}) ? function(it) {\n return $b0ba63bfbfb16088$exports(it) === \"String\" ? $8239f4c7c6082668$var$split(it, \"\") : $8239f4c7c6082668$var$$Object(it);\n} : $8239f4c7c6082668$var$$Object;\n\n\nvar $c378177673193450$exports = {};\n\"use strict\";\nvar $7ce250ddf7b42d4d$exports = {};\n\"use strict\";\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\n$7ce250ddf7b42d4d$exports = function(it) {\n return it === null || it === undefined;\n};\n\n\nvar $c378177673193450$var$$TypeError = TypeError;\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\n$c378177673193450$exports = function(it) {\n if ($7ce250ddf7b42d4d$exports(it)) throw new $c378177673193450$var$$TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n$4d273c9d7e1bdf46$exports = function(it) {\n return $8239f4c7c6082668$exports($c378177673193450$exports(it));\n};\n\n\nvar $7f19acfe53927f5c$exports = {};\n\"use strict\";\nvar $8ffb6b36a733d3c0$exports = {};\n\"use strict\";\n\nvar $6a130d390db46c8e$exports = {};\n\"use strict\";\nvar $70e34a5a2021f756$exports = {};\n\"use strict\";\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar $70e34a5a2021f756$var$documentAll = typeof document == \"object\" && document.all;\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\n$70e34a5a2021f756$exports = typeof $70e34a5a2021f756$var$documentAll == \"undefined\" && $70e34a5a2021f756$var$documentAll !== undefined ? function(argument) {\n return typeof argument == \"function\" || argument === $70e34a5a2021f756$var$documentAll;\n} : function(argument) {\n return typeof argument == \"function\";\n};\n\n\n$6a130d390db46c8e$exports = function(it) {\n return typeof it == \"object\" ? it !== null : $70e34a5a2021f756$exports(it);\n};\n\n\nvar $0b429cc7792c7d26$exports = {};\n\"use strict\";\nvar $a5217dbd1b0d33ce$exports = {};\n\"use strict\";\n\n\nvar $a5217dbd1b0d33ce$var$aFunction = function(argument) {\n return $70e34a5a2021f756$exports(argument) ? argument : undefined;\n};\n$a5217dbd1b0d33ce$exports = function(namespace, method) {\n return arguments.length < 2 ? $a5217dbd1b0d33ce$var$aFunction($55b335199d6e6d5d$exports[namespace]) : $55b335199d6e6d5d$exports[namespace] && $55b335199d6e6d5d$exports[namespace][method];\n};\n\n\n\nvar $41cc576e850a251e$exports = {};\n\"use strict\";\n\n$41cc576e850a251e$exports = $43b18aa2f1faac44$exports({}.isPrototypeOf);\n\n\nvar $47f18b427c2fbabf$exports = {};\n\"use strict\";\nvar $4a39565fee8fe980$exports = {};\n\"use strict\";\nvar $998d968a5e32cd49$exports = {};\n\"use strict\";\n\nvar $492c6dc902f2bf18$exports = {};\n\"use strict\";\n$492c6dc902f2bf18$exports = typeof navigator != \"undefined\" && String(navigator.userAgent) || \"\";\n\n\nvar $998d968a5e32cd49$var$process = $55b335199d6e6d5d$exports.process;\nvar $998d968a5e32cd49$var$Deno = $55b335199d6e6d5d$exports.Deno;\nvar $998d968a5e32cd49$var$versions = $998d968a5e32cd49$var$process && $998d968a5e32cd49$var$process.versions || $998d968a5e32cd49$var$Deno && $998d968a5e32cd49$var$Deno.version;\nvar $998d968a5e32cd49$var$v8 = $998d968a5e32cd49$var$versions && $998d968a5e32cd49$var$versions.v8;\nvar $998d968a5e32cd49$var$match, $998d968a5e32cd49$var$version;\nif ($998d968a5e32cd49$var$v8) {\n $998d968a5e32cd49$var$match = $998d968a5e32cd49$var$v8.split(\".\");\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n $998d968a5e32cd49$var$version = $998d968a5e32cd49$var$match[0] > 0 && $998d968a5e32cd49$var$match[0] < 4 ? 1 : +($998d968a5e32cd49$var$match[0] + $998d968a5e32cd49$var$match[1]);\n}\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!$998d968a5e32cd49$var$version && $492c6dc902f2bf18$exports) {\n $998d968a5e32cd49$var$match = $492c6dc902f2bf18$exports.match(/Edge\\/(\\d+)/);\n if (!$998d968a5e32cd49$var$match || $998d968a5e32cd49$var$match[1] >= 74) {\n $998d968a5e32cd49$var$match = $492c6dc902f2bf18$exports.match(/Chrome\\/(\\d+)/);\n if ($998d968a5e32cd49$var$match) $998d968a5e32cd49$var$version = +$998d968a5e32cd49$var$match[1];\n }\n}\n$998d968a5e32cd49$exports = $998d968a5e32cd49$var$version;\n\n\n\n\nvar $4a39565fee8fe980$var$$String = $55b335199d6e6d5d$exports.String;\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\n$4a39565fee8fe980$exports = !!Object.getOwnPropertySymbols && !$6140c9fa18232846$exports(function() {\n var symbol = Symbol(\"symbol detection\");\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$4a39565fee8fe980$var$$String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && $998d968a5e32cd49$exports && $998d968a5e32cd49$exports < 41;\n});\n\n\n$47f18b427c2fbabf$exports = $4a39565fee8fe980$exports && !Symbol.sham && typeof Symbol.iterator == \"symbol\";\n\n\nvar $0b429cc7792c7d26$var$$Object = Object;\n$0b429cc7792c7d26$exports = $47f18b427c2fbabf$exports ? function(it) {\n return typeof it == \"symbol\";\n} : function(it) {\n var $Symbol = $a5217dbd1b0d33ce$exports(\"Symbol\");\n return $70e34a5a2021f756$exports($Symbol) && $41cc576e850a251e$exports($Symbol.prototype, $0b429cc7792c7d26$var$$Object(it));\n};\n\n\nvar $eb80dcd0b8a5698c$exports = {};\n\"use strict\";\nvar $ae485921c5498156$exports = {};\n\"use strict\";\n\nvar $8f0ebae34f61e14c$exports = {};\n\"use strict\";\nvar $8f0ebae34f61e14c$var$$String = String;\n$8f0ebae34f61e14c$exports = function(argument) {\n try {\n return $8f0ebae34f61e14c$var$$String(argument);\n } catch (error) {\n return \"Object\";\n }\n};\n\n\nvar $ae485921c5498156$var$$TypeError = TypeError;\n// `Assert: IsCallable(argument) is true`\n$ae485921c5498156$exports = function(argument) {\n if ($70e34a5a2021f756$exports(argument)) return argument;\n throw new $ae485921c5498156$var$$TypeError($8f0ebae34f61e14c$exports(argument) + \" is not a function\");\n};\n\n\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\n$eb80dcd0b8a5698c$exports = function(V, P) {\n var func = V[P];\n return $7ce250ddf7b42d4d$exports(func) ? undefined : $ae485921c5498156$exports(func);\n};\n\n\nvar $b0f812e443807cb5$exports = {};\n\"use strict\";\n\n\n\nvar $b0f812e443807cb5$var$$TypeError = TypeError;\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\n$b0f812e443807cb5$exports = function(input, pref) {\n var fn, val;\n if (pref === \"string\" && $70e34a5a2021f756$exports(fn = input.toString) && !$6a130d390db46c8e$exports(val = $881ad37dbe259e8f$exports(fn, input))) return val;\n if ($70e34a5a2021f756$exports(fn = input.valueOf) && !$6a130d390db46c8e$exports(val = $881ad37dbe259e8f$exports(fn, input))) return val;\n if (pref !== \"string\" && $70e34a5a2021f756$exports(fn = input.toString) && !$6a130d390db46c8e$exports(val = $881ad37dbe259e8f$exports(fn, input))) return val;\n throw new $b0f812e443807cb5$var$$TypeError(\"Can't convert object to primitive value\");\n};\n\n\nvar $842f8f0a18746212$exports = {};\n\"use strict\";\n\nvar $1946b9b54b48e7fd$exports = {};\n\"use strict\";\nvar $d00d03e557d638db$exports = {};\n\"use strict\";\nvar $e0409817d4e03fc4$exports = {};\n\"use strict\";\n$e0409817d4e03fc4$exports = false;\n\n\n\nvar $4ce407c7007beb63$exports = {};\n\"use strict\";\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $4ce407c7007beb63$var$defineProperty = Object.defineProperty;\n$4ce407c7007beb63$exports = function(key, value) {\n try {\n $4ce407c7007beb63$var$defineProperty($55b335199d6e6d5d$exports, key, {\n value: value,\n configurable: true,\n writable: true\n });\n } catch (error) {\n $55b335199d6e6d5d$exports[key] = value;\n }\n return value;\n};\n\n\nvar $d00d03e557d638db$var$SHARED = \"__core-js_shared__\";\nvar $d00d03e557d638db$var$store = $d00d03e557d638db$exports = $55b335199d6e6d5d$exports[$d00d03e557d638db$var$SHARED] || $4ce407c7007beb63$exports($d00d03e557d638db$var$SHARED, {});\n($d00d03e557d638db$var$store.versions || ($d00d03e557d638db$var$store.versions = [])).push({\n version: \"3.36.0\",\n mode: $e0409817d4e03fc4$exports ? \"pure\" : \"global\",\n copyright: \"\\xa9 2014-2024 Denis Pushkarev (zloirock.ru)\",\n license: \"https://github.com/zloirock/core-js/blob/v3.36.0/LICENSE\",\n source: \"https://github.com/zloirock/core-js\"\n});\n\n\n$1946b9b54b48e7fd$exports = function(key, value) {\n return $d00d03e557d638db$exports[key] || ($d00d03e557d638db$exports[key] = value || {});\n};\n\n\nvar $1f868a26fd901990$exports = {};\n\"use strict\";\n\nvar $a2f3ebb5da11db12$exports = {};\n\"use strict\";\n\nvar $a2f3ebb5da11db12$var$$Object = Object;\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\n$a2f3ebb5da11db12$exports = function(argument) {\n return $a2f3ebb5da11db12$var$$Object($c378177673193450$exports(argument));\n};\n\n\nvar $1f868a26fd901990$var$hasOwnProperty = $43b18aa2f1faac44$exports({}.hasOwnProperty);\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\n$1f868a26fd901990$exports = Object.hasOwn || function hasOwn(it, key) {\n return $1f868a26fd901990$var$hasOwnProperty($a2f3ebb5da11db12$exports(it), key);\n};\n\n\nvar $5e0a1e292f79defc$exports = {};\n\"use strict\";\n\nvar $5e0a1e292f79defc$var$id = 0;\nvar $5e0a1e292f79defc$var$postfix = Math.random();\nvar $5e0a1e292f79defc$var$toString = $43b18aa2f1faac44$exports(1.0.toString);\n$5e0a1e292f79defc$exports = function(key) {\n return \"Symbol(\" + (key === undefined ? \"\" : key) + \")_\" + $5e0a1e292f79defc$var$toString(++$5e0a1e292f79defc$var$id + $5e0a1e292f79defc$var$postfix, 36);\n};\n\n\n\n\nvar $842f8f0a18746212$var$Symbol = $55b335199d6e6d5d$exports.Symbol;\nvar $842f8f0a18746212$var$WellKnownSymbolsStore = $1946b9b54b48e7fd$exports(\"wks\");\nvar $842f8f0a18746212$var$createWellKnownSymbol = $47f18b427c2fbabf$exports ? $842f8f0a18746212$var$Symbol[\"for\"] || $842f8f0a18746212$var$Symbol : $842f8f0a18746212$var$Symbol && $842f8f0a18746212$var$Symbol.withoutSetter || $5e0a1e292f79defc$exports;\n$842f8f0a18746212$exports = function(name) {\n if (!$1f868a26fd901990$exports($842f8f0a18746212$var$WellKnownSymbolsStore, name)) $842f8f0a18746212$var$WellKnownSymbolsStore[name] = $4a39565fee8fe980$exports && $1f868a26fd901990$exports($842f8f0a18746212$var$Symbol, name) ? $842f8f0a18746212$var$Symbol[name] : $842f8f0a18746212$var$createWellKnownSymbol(\"Symbol.\" + name);\n return $842f8f0a18746212$var$WellKnownSymbolsStore[name];\n};\n\n\nvar $8ffb6b36a733d3c0$var$$TypeError = TypeError;\nvar $8ffb6b36a733d3c0$var$TO_PRIMITIVE = $842f8f0a18746212$exports(\"toPrimitive\");\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\n$8ffb6b36a733d3c0$exports = function(input, pref) {\n if (!$6a130d390db46c8e$exports(input) || $0b429cc7792c7d26$exports(input)) return input;\n var exoticToPrim = $eb80dcd0b8a5698c$exports(input, $8ffb6b36a733d3c0$var$TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = \"default\";\n result = $881ad37dbe259e8f$exports(exoticToPrim, input, pref);\n if (!$6a130d390db46c8e$exports(result) || $0b429cc7792c7d26$exports(result)) return result;\n throw new $8ffb6b36a733d3c0$var$$TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = \"number\";\n return $b0f812e443807cb5$exports(input, pref);\n};\n\n\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\n$7f19acfe53927f5c$exports = function(argument) {\n var key = $8ffb6b36a733d3c0$exports(argument, \"string\");\n return $0b429cc7792c7d26$exports(key) ? key : key + \"\";\n};\n\n\n\nvar $d45526d8245cb22c$exports = {};\n\"use strict\";\n\n\nvar $15c0c414b89100b1$exports = {};\n\"use strict\";\n\n\nvar $15c0c414b89100b1$var$document = $55b335199d6e6d5d$exports.document;\n// typeof document.createElement is 'object' in old IE\nvar $15c0c414b89100b1$var$EXISTS = $6a130d390db46c8e$exports($15c0c414b89100b1$var$document) && $6a130d390db46c8e$exports($15c0c414b89100b1$var$document.createElement);\n$15c0c414b89100b1$exports = function(it) {\n return $15c0c414b89100b1$var$EXISTS ? $15c0c414b89100b1$var$document.createElement(it) : {};\n};\n\n\n// Thanks to IE8 for its funny defineProperty\n$d45526d8245cb22c$exports = !$ef322a7f89c3ed41$exports && !$6140c9fa18232846$exports(function() {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty($15c0c414b89100b1$exports(\"div\"), \"a\", {\n get: function() {\n return 7;\n }\n }).a !== 7;\n});\n\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $6d99163b6684d050$var$$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n$6d99163b6684d050$export$2d1720544b23b823 = $ef322a7f89c3ed41$exports ? $6d99163b6684d050$var$$getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = $4d273c9d7e1bdf46$exports(O);\n P = $7f19acfe53927f5c$exports(P);\n if ($d45526d8245cb22c$exports) try {\n return $6d99163b6684d050$var$$getOwnPropertyDescriptor(O, P);\n } catch (error) {}\n if ($1f868a26fd901990$exports(O, P)) return $b66966b48674609b$exports(!$881ad37dbe259e8f$exports($1e0782be6903ea7b$export$2d1720544b23b823, O, P), O[P]);\n};\n\n\nvar $ca3e1754e676956d$require$getOwnPropertyDescriptor = $6d99163b6684d050$export$2d1720544b23b823;\nvar $8693737507995841$exports = {};\n\"use strict\";\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nvar $2d0ac3aa5e39584b$export$2d1720544b23b823;\n\"use strict\";\n\n\nvar $161a89d67c436ccf$exports = {};\n\"use strict\";\n\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\n$161a89d67c436ccf$exports = $ef322a7f89c3ed41$exports && $6140c9fa18232846$exports(function() {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function() {}, \"prototype\", {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n\n\nvar $c845d421b7b0e630$exports = {};\n\"use strict\";\n\nvar $c845d421b7b0e630$var$$String = String;\nvar $c845d421b7b0e630$var$$TypeError = TypeError;\n// `Assert: Type(argument) is Object`\n$c845d421b7b0e630$exports = function(argument) {\n if ($6a130d390db46c8e$exports(argument)) return argument;\n throw new $c845d421b7b0e630$var$$TypeError($c845d421b7b0e630$var$$String(argument) + \" is not an object\");\n};\n\n\n\nvar $2d0ac3aa5e39584b$var$$TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $2d0ac3aa5e39584b$var$$defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $2d0ac3aa5e39584b$var$$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar $2d0ac3aa5e39584b$var$ENUMERABLE = \"enumerable\";\nvar $2d0ac3aa5e39584b$var$CONFIGURABLE = \"configurable\";\nvar $2d0ac3aa5e39584b$var$WRITABLE = \"writable\";\n$2d0ac3aa5e39584b$export$2d1720544b23b823 = $ef322a7f89c3ed41$exports ? $161a89d67c436ccf$exports ? function defineProperty(O, P, Attributes) {\n $c845d421b7b0e630$exports(O);\n P = $7f19acfe53927f5c$exports(P);\n $c845d421b7b0e630$exports(Attributes);\n if (typeof O === \"function\" && P === \"prototype\" && \"value\" in Attributes && $2d0ac3aa5e39584b$var$WRITABLE in Attributes && !Attributes[$2d0ac3aa5e39584b$var$WRITABLE]) {\n var current = $2d0ac3aa5e39584b$var$$getOwnPropertyDescriptor(O, P);\n if (current && current[$2d0ac3aa5e39584b$var$WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: $2d0ac3aa5e39584b$var$CONFIGURABLE in Attributes ? Attributes[$2d0ac3aa5e39584b$var$CONFIGURABLE] : current[$2d0ac3aa5e39584b$var$CONFIGURABLE],\n enumerable: $2d0ac3aa5e39584b$var$ENUMERABLE in Attributes ? Attributes[$2d0ac3aa5e39584b$var$ENUMERABLE] : current[$2d0ac3aa5e39584b$var$ENUMERABLE],\n writable: false\n };\n }\n }\n return $2d0ac3aa5e39584b$var$$defineProperty(O, P, Attributes);\n} : $2d0ac3aa5e39584b$var$$defineProperty : function defineProperty(O, P, Attributes) {\n $c845d421b7b0e630$exports(O);\n P = $7f19acfe53927f5c$exports(P);\n $c845d421b7b0e630$exports(Attributes);\n if ($d45526d8245cb22c$exports) try {\n return $2d0ac3aa5e39584b$var$$defineProperty(O, P, Attributes);\n } catch (error) {}\n if (\"get\" in Attributes || \"set\" in Attributes) throw new $2d0ac3aa5e39584b$var$$TypeError(\"Accessors not supported\");\n if (\"value\" in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n\n$8693737507995841$exports = $ef322a7f89c3ed41$exports ? function(object, key, value) {\n return $2d0ac3aa5e39584b$export$2d1720544b23b823(object, key, $b66966b48674609b$exports(1, value));\n} : function(object, key, value) {\n object[key] = value;\n return object;\n};\n\n\nvar $40e957865125f98f$exports = {};\n\"use strict\";\n\n\nvar $09c56ff2ae09b2d7$exports = {};\n\"use strict\";\n\n\n\n\n\nvar $81c64883d194e3b4$exports = {};\n\"use strict\";\n\n\nvar $81c64883d194e3b4$var$FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $81c64883d194e3b4$var$getDescriptor = $ef322a7f89c3ed41$exports && Object.getOwnPropertyDescriptor;\nvar $81c64883d194e3b4$var$EXISTS = $1f868a26fd901990$exports($81c64883d194e3b4$var$FunctionPrototype, \"name\");\n// additional protection from minified / mangled / dropped function names\nvar $81c64883d194e3b4$var$PROPER = $81c64883d194e3b4$var$EXISTS && (function something() {}).name === \"something\";\nvar $81c64883d194e3b4$var$CONFIGURABLE = $81c64883d194e3b4$var$EXISTS && (!$ef322a7f89c3ed41$exports || $ef322a7f89c3ed41$exports && $81c64883d194e3b4$var$getDescriptor($81c64883d194e3b4$var$FunctionPrototype, \"name\").configurable);\n$81c64883d194e3b4$exports = {\n EXISTS: $81c64883d194e3b4$var$EXISTS,\n PROPER: $81c64883d194e3b4$var$PROPER,\n CONFIGURABLE: $81c64883d194e3b4$var$CONFIGURABLE\n};\n\n\nvar $09c56ff2ae09b2d7$require$CONFIGURABLE_FUNCTION_NAME = $81c64883d194e3b4$exports.CONFIGURABLE;\nvar $9990f6f719f26a96$exports = {};\n\"use strict\";\n\n\n\nvar $9990f6f719f26a96$var$functionToString = $43b18aa2f1faac44$exports(Function.toString);\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!$70e34a5a2021f756$exports($d00d03e557d638db$exports.inspectSource)) $d00d03e557d638db$exports.inspectSource = function(it) {\n return $9990f6f719f26a96$var$functionToString(it);\n};\n$9990f6f719f26a96$exports = $d00d03e557d638db$exports.inspectSource;\n\n\nvar $3a8bcef306e86159$exports = {};\n\"use strict\";\nvar $47d53bb84a8f3c5b$exports = {};\n\"use strict\";\n\n\nvar $47d53bb84a8f3c5b$var$WeakMap = $55b335199d6e6d5d$exports.WeakMap;\n$47d53bb84a8f3c5b$exports = $70e34a5a2021f756$exports($47d53bb84a8f3c5b$var$WeakMap) && /native code/.test(String($47d53bb84a8f3c5b$var$WeakMap));\n\n\n\n\n\n\n\nvar $834abcf0f8f3f871$exports = {};\n\"use strict\";\n\n\nvar $834abcf0f8f3f871$var$keys = $1946b9b54b48e7fd$exports(\"keys\");\n$834abcf0f8f3f871$exports = function(key) {\n return $834abcf0f8f3f871$var$keys[key] || ($834abcf0f8f3f871$var$keys[key] = $5e0a1e292f79defc$exports(key));\n};\n\n\nvar $9f571a3f3d135e31$exports = {};\n\"use strict\";\n$9f571a3f3d135e31$exports = {};\n\n\nvar $3a8bcef306e86159$var$OBJECT_ALREADY_INITIALIZED = \"Object already initialized\";\nvar $3a8bcef306e86159$var$TypeError = $55b335199d6e6d5d$exports.TypeError;\nvar $3a8bcef306e86159$var$WeakMap = $55b335199d6e6d5d$exports.WeakMap;\nvar $3a8bcef306e86159$var$set, $3a8bcef306e86159$var$get, $3a8bcef306e86159$var$has;\nvar $3a8bcef306e86159$var$enforce = function(it) {\n return $3a8bcef306e86159$var$has(it) ? $3a8bcef306e86159$var$get(it) : $3a8bcef306e86159$var$set(it, {});\n};\nvar $3a8bcef306e86159$var$getterFor = function(TYPE) {\n return function(it) {\n var state;\n if (!$6a130d390db46c8e$exports(it) || (state = $3a8bcef306e86159$var$get(it)).type !== TYPE) throw new $3a8bcef306e86159$var$TypeError(\"Incompatible receiver, \" + TYPE + \" required\");\n return state;\n };\n};\nif ($47d53bb84a8f3c5b$exports || $d00d03e557d638db$exports.state) {\n var $3a8bcef306e86159$var$store = $d00d03e557d638db$exports.state || ($d00d03e557d638db$exports.state = new $3a8bcef306e86159$var$WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */ $3a8bcef306e86159$var$store.get = $3a8bcef306e86159$var$store.get;\n $3a8bcef306e86159$var$store.has = $3a8bcef306e86159$var$store.has;\n $3a8bcef306e86159$var$store.set = $3a8bcef306e86159$var$store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */ $3a8bcef306e86159$var$set = function(it, metadata) {\n if ($3a8bcef306e86159$var$store.has(it)) throw new $3a8bcef306e86159$var$TypeError($3a8bcef306e86159$var$OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n $3a8bcef306e86159$var$store.set(it, metadata);\n return metadata;\n };\n $3a8bcef306e86159$var$get = function(it) {\n return $3a8bcef306e86159$var$store.get(it) || {};\n };\n $3a8bcef306e86159$var$has = function(it) {\n return $3a8bcef306e86159$var$store.has(it);\n };\n} else {\n var $3a8bcef306e86159$var$STATE = $834abcf0f8f3f871$exports(\"state\");\n $9f571a3f3d135e31$exports[$3a8bcef306e86159$var$STATE] = true;\n $3a8bcef306e86159$var$set = function(it, metadata) {\n if ($1f868a26fd901990$exports(it, $3a8bcef306e86159$var$STATE)) throw new $3a8bcef306e86159$var$TypeError($3a8bcef306e86159$var$OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n $8693737507995841$exports(it, $3a8bcef306e86159$var$STATE, metadata);\n return metadata;\n };\n $3a8bcef306e86159$var$get = function(it) {\n return $1f868a26fd901990$exports(it, $3a8bcef306e86159$var$STATE) ? it[$3a8bcef306e86159$var$STATE] : {};\n };\n $3a8bcef306e86159$var$has = function(it) {\n return $1f868a26fd901990$exports(it, $3a8bcef306e86159$var$STATE);\n };\n}\n$3a8bcef306e86159$exports = {\n set: $3a8bcef306e86159$var$set,\n get: $3a8bcef306e86159$var$get,\n has: $3a8bcef306e86159$var$has,\n enforce: $3a8bcef306e86159$var$enforce,\n getterFor: $3a8bcef306e86159$var$getterFor\n};\n\n\nvar $09c56ff2ae09b2d7$var$enforceInternalState = $3a8bcef306e86159$exports.enforce;\nvar $09c56ff2ae09b2d7$var$getInternalState = $3a8bcef306e86159$exports.get;\nvar $09c56ff2ae09b2d7$var$$String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $09c56ff2ae09b2d7$var$defineProperty = Object.defineProperty;\nvar $09c56ff2ae09b2d7$var$stringSlice = $43b18aa2f1faac44$exports(\"\".slice);\nvar $09c56ff2ae09b2d7$var$replace = $43b18aa2f1faac44$exports(\"\".replace);\nvar $09c56ff2ae09b2d7$var$join = $43b18aa2f1faac44$exports([].join);\nvar $09c56ff2ae09b2d7$var$CONFIGURABLE_LENGTH = $ef322a7f89c3ed41$exports && !$6140c9fa18232846$exports(function() {\n return $09c56ff2ae09b2d7$var$defineProperty(function() {}, \"length\", {\n value: 8\n }).length !== 8;\n});\nvar $09c56ff2ae09b2d7$var$TEMPLATE = String(String).split(\"String\");\nvar $09c56ff2ae09b2d7$var$makeBuiltIn = $09c56ff2ae09b2d7$exports = function(value, name, options) {\n if ($09c56ff2ae09b2d7$var$stringSlice($09c56ff2ae09b2d7$var$$String(name), 0, 7) === \"Symbol(\") name = \"[\" + $09c56ff2ae09b2d7$var$replace($09c56ff2ae09b2d7$var$$String(name), /^Symbol\\(([^)]*)\\).*$/, \"$1\") + \"]\";\n if (options && options.getter) name = \"get \" + name;\n if (options && options.setter) name = \"set \" + name;\n if (!$1f868a26fd901990$exports(value, \"name\") || $09c56ff2ae09b2d7$require$CONFIGURABLE_FUNCTION_NAME && value.name !== name) {\n if ($ef322a7f89c3ed41$exports) $09c56ff2ae09b2d7$var$defineProperty(value, \"name\", {\n value: name,\n configurable: true\n });\n else value.name = name;\n }\n if ($09c56ff2ae09b2d7$var$CONFIGURABLE_LENGTH && options && $1f868a26fd901990$exports(options, \"arity\") && value.length !== options.arity) $09c56ff2ae09b2d7$var$defineProperty(value, \"length\", {\n value: options.arity\n });\n try {\n if (options && $1f868a26fd901990$exports(options, \"constructor\") && options.constructor) {\n if ($ef322a7f89c3ed41$exports) $09c56ff2ae09b2d7$var$defineProperty(value, \"prototype\", {\n writable: false\n });\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) {}\n var state = $09c56ff2ae09b2d7$var$enforceInternalState(value);\n if (!$1f868a26fd901990$exports(state, \"source\")) state.source = $09c56ff2ae09b2d7$var$join($09c56ff2ae09b2d7$var$TEMPLATE, typeof name == \"string\" ? name : \"\");\n return value;\n};\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = $09c56ff2ae09b2d7$var$makeBuiltIn(function toString() {\n return $70e34a5a2021f756$exports(this) && $09c56ff2ae09b2d7$var$getInternalState(this).source || $9990f6f719f26a96$exports(this);\n}, \"toString\");\n\n\n\n$40e957865125f98f$exports = function(O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if ($70e34a5a2021f756$exports(value)) $09c56ff2ae09b2d7$exports(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else $4ce407c7007beb63$exports(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) {}\n if (simple) O[key] = value;\n else $2d0ac3aa5e39584b$export$2d1720544b23b823(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n }\n return O;\n};\n\n\n\nvar $ef14b437ba65973a$exports = {};\n\"use strict\";\n\nvar $339f2419d379e6c2$exports = {};\n\"use strict\";\n\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nvar $f6c32256739dd9b5$export$2d1720544b23b823;\n\"use strict\";\nvar $c4fba4611365c4f5$exports = {};\n\"use strict\";\n\n\n\nvar $f00609c516640f24$exports = {};\n\"use strict\";\n\nvar $1ef9432c43157f41$exports = {};\n\"use strict\";\nvar $b5bb21648546ce5b$exports = {};\n\"use strict\";\nvar $5395b5a4913a5e32$exports = {};\n\"use strict\";\nvar $5395b5a4913a5e32$var$ceil = Math.ceil;\nvar $5395b5a4913a5e32$var$floor = Math.floor;\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\n$5395b5a4913a5e32$exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? $5395b5a4913a5e32$var$floor : $5395b5a4913a5e32$var$ceil)(n);\n};\n\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\n$b5bb21648546ce5b$exports = function(argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : $5395b5a4913a5e32$exports(number);\n};\n\n\nvar $1ef9432c43157f41$var$max = Math.max;\nvar $1ef9432c43157f41$var$min = Math.min;\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\n$1ef9432c43157f41$exports = function(index, length) {\n var integer = $b5bb21648546ce5b$exports(index);\n return integer < 0 ? $1ef9432c43157f41$var$max(integer + length, 0) : $1ef9432c43157f41$var$min(integer, length);\n};\n\n\nvar $04c91bd3815cd64a$exports = {};\n\"use strict\";\nvar $4aba983aae3daed3$exports = {};\n\"use strict\";\n\nvar $4aba983aae3daed3$var$min = Math.min;\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\n$4aba983aae3daed3$exports = function(argument) {\n var len = $b5bb21648546ce5b$exports(argument);\n return len > 0 ? $4aba983aae3daed3$var$min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\n$04c91bd3815cd64a$exports = function(obj) {\n return $4aba983aae3daed3$exports(obj.length);\n};\n\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar $f00609c516640f24$var$createMethod = function(IS_INCLUDES) {\n return function($this, el, fromIndex) {\n var O = $4d273c9d7e1bdf46$exports($this);\n var length = $04c91bd3815cd64a$exports(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = $1ef9432c43157f41$exports(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while(length > index){\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n }\n else for(; length > index; index++){\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\n$f00609c516640f24$exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: $f00609c516640f24$var$createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: $f00609c516640f24$var$createMethod(false)\n};\n\n\nvar $c4fba4611365c4f5$require$indexOf = $f00609c516640f24$exports.indexOf;\n\nvar $c4fba4611365c4f5$var$push = $43b18aa2f1faac44$exports([].push);\n$c4fba4611365c4f5$exports = function(object, names) {\n var O = $4d273c9d7e1bdf46$exports(object);\n var i = 0;\n var result = [];\n var key;\n for(key in O)!$1f868a26fd901990$exports($9f571a3f3d135e31$exports, key) && $1f868a26fd901990$exports(O, key) && $c4fba4611365c4f5$var$push(result, key);\n // Don't enum bug & hidden keys\n while(names.length > i)if ($1f868a26fd901990$exports(O, key = names[i++])) ~$c4fba4611365c4f5$require$indexOf(result, key) || $c4fba4611365c4f5$var$push(result, key);\n return result;\n};\n\n\nvar $e73f13f1d8a17cad$exports = {};\n\"use strict\";\n// IE8- don't enum bug keys\n$e73f13f1d8a17cad$exports = [\n \"constructor\",\n \"hasOwnProperty\",\n \"isPrototypeOf\",\n \"propertyIsEnumerable\",\n \"toLocaleString\",\n \"toString\",\n \"valueOf\"\n];\n\n\nvar $f6c32256739dd9b5$var$hiddenKeys = $e73f13f1d8a17cad$exports.concat(\"length\", \"prototype\");\n$f6c32256739dd9b5$export$2d1720544b23b823 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $c4fba4611365c4f5$exports(O, $f6c32256739dd9b5$var$hiddenKeys);\n};\n\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nvar $0ed66cde5c449819$export$2d1720544b23b823;\n\"use strict\";\n$0ed66cde5c449819$export$2d1720544b23b823 = Object.getOwnPropertySymbols;\n\n\n\nvar $339f2419d379e6c2$var$concat = $43b18aa2f1faac44$exports([].concat);\n// all object keys, includes non-enumerable and symbols\n$339f2419d379e6c2$exports = $a5217dbd1b0d33ce$exports(\"Reflect\", \"ownKeys\") || function ownKeys(it) {\n var keys = $f6c32256739dd9b5$export$2d1720544b23b823($c845d421b7b0e630$exports(it));\n var getOwnPropertySymbols = $0ed66cde5c449819$export$2d1720544b23b823;\n return getOwnPropertySymbols ? $339f2419d379e6c2$var$concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n\n\n\n\n$ef14b437ba65973a$exports = function(target, source, exceptions) {\n var keys = $339f2419d379e6c2$exports(source);\n var defineProperty = $2d0ac3aa5e39584b$export$2d1720544b23b823;\n var getOwnPropertyDescriptor = $6d99163b6684d050$export$2d1720544b23b823;\n for(var i = 0; i < keys.length; i++){\n var key = keys[i];\n if (!$1f868a26fd901990$exports(target, key) && !(exceptions && $1f868a26fd901990$exports(exceptions, key))) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\n\nvar $ca268db110e9e457$exports = {};\n\"use strict\";\n\n\nvar $ca268db110e9e457$var$replacement = /#|\\.prototype\\./;\nvar $ca268db110e9e457$var$isForced = function(feature, detection) {\n var value = $ca268db110e9e457$var$data[$ca268db110e9e457$var$normalize(feature)];\n return value === $ca268db110e9e457$var$POLYFILL ? true : value === $ca268db110e9e457$var$NATIVE ? false : $70e34a5a2021f756$exports(detection) ? $6140c9fa18232846$exports(detection) : !!detection;\n};\nvar $ca268db110e9e457$var$normalize = $ca268db110e9e457$var$isForced.normalize = function(string) {\n return String(string).replace($ca268db110e9e457$var$replacement, \".\").toLowerCase();\n};\nvar $ca268db110e9e457$var$data = $ca268db110e9e457$var$isForced.data = {};\nvar $ca268db110e9e457$var$NATIVE = $ca268db110e9e457$var$isForced.NATIVE = \"N\";\nvar $ca268db110e9e457$var$POLYFILL = $ca268db110e9e457$var$isForced.POLYFILL = \"P\";\n$ca268db110e9e457$exports = $ca268db110e9e457$var$isForced;\n\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/ $ca3e1754e676956d$exports = function(options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) target = $55b335199d6e6d5d$exports;\n else if (STATIC) target = $55b335199d6e6d5d$exports[TARGET] || $4ce407c7007beb63$exports(TARGET, {});\n else target = $55b335199d6e6d5d$exports[TARGET] && $55b335199d6e6d5d$exports[TARGET].prototype;\n if (target) for(key in source){\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = $ca3e1754e676956d$require$getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = $ca268db110e9e457$exports(GLOBAL ? key : TARGET + (STATIC ? \".\" : \"#\") + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n $ef14b437ba65973a$exports(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || targetProperty && targetProperty.sham) $8693737507995841$exports(sourceProperty, \"sham\", true);\n $40e957865125f98f$exports(target, key, sourceProperty, options);\n }\n};\n\n\n\nvar $a393da0e05d61ed1$exports = {};\n\"use strict\";\n\nvar $3cdb2ef65d8e3cb5$exports = {};\n\"use strict\";\n\nvar $3cdb2ef65d8e3cb5$var$FunctionPrototype = Function.prototype;\nvar $3cdb2ef65d8e3cb5$var$apply = $3cdb2ef65d8e3cb5$var$FunctionPrototype.apply;\nvar $3cdb2ef65d8e3cb5$var$call = $3cdb2ef65d8e3cb5$var$FunctionPrototype.call;\n// eslint-disable-next-line es/no-reflect -- safe\n$3cdb2ef65d8e3cb5$exports = typeof Reflect == \"object\" && Reflect.apply || ($bcbe62e89adc7d37$exports ? $3cdb2ef65d8e3cb5$var$call.bind($3cdb2ef65d8e3cb5$var$apply) : function() {\n return $3cdb2ef65d8e3cb5$var$call.apply($3cdb2ef65d8e3cb5$var$apply, arguments);\n});\n\n\nvar $43284f0171045916$exports = {};\n\"use strict\";\nvar $4828cb1b4c7586c8$exports = {};\n\"use strict\";\n\n\n$4828cb1b4c7586c8$exports = function(fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if ($b0ba63bfbfb16088$exports(fn) === \"Function\") return $43b18aa2f1faac44$exports(fn);\n};\n\n\n\n\nvar $43284f0171045916$var$bind = $4828cb1b4c7586c8$exports($4828cb1b4c7586c8$exports.bind);\n// optional / simple context binding\n$43284f0171045916$exports = function(fn, that) {\n $ae485921c5498156$exports(fn);\n return that === undefined ? fn : $bcbe62e89adc7d37$exports ? $43284f0171045916$var$bind(fn, that) : function() {\n return fn.apply(that, arguments);\n };\n};\n\n\n\n\n\nvar $b8ce1ad1b6b1e7c1$exports = {};\n\"use strict\";\n\n$b8ce1ad1b6b1e7c1$exports = $a5217dbd1b0d33ce$exports(\"document\", \"documentElement\");\n\n\nvar $0709cba658bb4ed6$exports = {};\n\"use strict\";\n\n$0709cba658bb4ed6$exports = $43b18aa2f1faac44$exports([].slice);\n\n\n\nvar $7d824954c5058f7d$exports = {};\n\"use strict\";\nvar $7d824954c5058f7d$var$$TypeError = TypeError;\n$7d824954c5058f7d$exports = function(passed, required) {\n if (passed < required) throw new $7d824954c5058f7d$var$$TypeError(\"Not enough arguments\");\n return passed;\n};\n\n\nvar $05f68a2417343639$exports = {};\n\"use strict\";\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\n$05f68a2417343639$exports = /(?:ipad|iphone|ipod).*applewebkit/i.test($492c6dc902f2bf18$exports);\n\n\nvar $3f8bc2b5488269f3$exports = {};\n\"use strict\";\n\n\n$3f8bc2b5488269f3$exports = $b0ba63bfbfb16088$exports($55b335199d6e6d5d$exports.process) === \"process\";\n\n\nvar $a393da0e05d61ed1$var$set = $55b335199d6e6d5d$exports.setImmediate;\nvar $a393da0e05d61ed1$var$clear = $55b335199d6e6d5d$exports.clearImmediate;\nvar $a393da0e05d61ed1$var$process = $55b335199d6e6d5d$exports.process;\nvar $a393da0e05d61ed1$var$Dispatch = $55b335199d6e6d5d$exports.Dispatch;\nvar $a393da0e05d61ed1$var$Function = $55b335199d6e6d5d$exports.Function;\nvar $a393da0e05d61ed1$var$MessageChannel = $55b335199d6e6d5d$exports.MessageChannel;\nvar $a393da0e05d61ed1$var$String = $55b335199d6e6d5d$exports.String;\nvar $a393da0e05d61ed1$var$counter = 0;\nvar $a393da0e05d61ed1$var$queue = {};\nvar $a393da0e05d61ed1$var$ONREADYSTATECHANGE = \"onreadystatechange\";\nvar $a393da0e05d61ed1$var$$location, $a393da0e05d61ed1$var$defer, $a393da0e05d61ed1$var$channel, $a393da0e05d61ed1$var$port;\n$6140c9fa18232846$exports(function() {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $a393da0e05d61ed1$var$$location = $55b335199d6e6d5d$exports.location;\n});\nvar $a393da0e05d61ed1$var$run = function(id) {\n if ($1f868a26fd901990$exports($a393da0e05d61ed1$var$queue, id)) {\n var fn = $a393da0e05d61ed1$var$queue[id];\n delete $a393da0e05d61ed1$var$queue[id];\n fn();\n }\n};\nvar $a393da0e05d61ed1$var$runner = function(id) {\n return function() {\n $a393da0e05d61ed1$var$run(id);\n };\n};\nvar $a393da0e05d61ed1$var$eventListener = function(event) {\n $a393da0e05d61ed1$var$run(event.data);\n};\nvar $a393da0e05d61ed1$var$globalPostMessageDefer = function(id) {\n // old engines have not location.origin\n $55b335199d6e6d5d$exports.postMessage($a393da0e05d61ed1$var$String(id), $a393da0e05d61ed1$var$$location.protocol + \"//\" + $a393da0e05d61ed1$var$$location.host);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!$a393da0e05d61ed1$var$set || !$a393da0e05d61ed1$var$clear) {\n $a393da0e05d61ed1$var$set = function setImmediate(handler) {\n $7d824954c5058f7d$exports(arguments.length, 1);\n var fn = $70e34a5a2021f756$exports(handler) ? handler : $a393da0e05d61ed1$var$Function(handler);\n var args = $0709cba658bb4ed6$exports(arguments, 1);\n $a393da0e05d61ed1$var$queue[++$a393da0e05d61ed1$var$counter] = function() {\n $3cdb2ef65d8e3cb5$exports(fn, undefined, args);\n };\n $a393da0e05d61ed1$var$defer($a393da0e05d61ed1$var$counter);\n return $a393da0e05d61ed1$var$counter;\n };\n $a393da0e05d61ed1$var$clear = function clearImmediate(id) {\n delete $a393da0e05d61ed1$var$queue[id];\n };\n // Node.js 0.8-\n if ($3f8bc2b5488269f3$exports) $a393da0e05d61ed1$var$defer = function(id) {\n $a393da0e05d61ed1$var$process.nextTick($a393da0e05d61ed1$var$runner(id));\n };\n else if ($a393da0e05d61ed1$var$Dispatch && $a393da0e05d61ed1$var$Dispatch.now) $a393da0e05d61ed1$var$defer = function(id) {\n $a393da0e05d61ed1$var$Dispatch.now($a393da0e05d61ed1$var$runner(id));\n };\n else if ($a393da0e05d61ed1$var$MessageChannel && !$05f68a2417343639$exports) {\n $a393da0e05d61ed1$var$channel = new $a393da0e05d61ed1$var$MessageChannel();\n $a393da0e05d61ed1$var$port = $a393da0e05d61ed1$var$channel.port2;\n $a393da0e05d61ed1$var$channel.port1.onmessage = $a393da0e05d61ed1$var$eventListener;\n $a393da0e05d61ed1$var$defer = $43284f0171045916$exports($a393da0e05d61ed1$var$port.postMessage, $a393da0e05d61ed1$var$port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if ($55b335199d6e6d5d$exports.addEventListener && $70e34a5a2021f756$exports($55b335199d6e6d5d$exports.postMessage) && !$55b335199d6e6d5d$exports.importScripts && $a393da0e05d61ed1$var$$location && $a393da0e05d61ed1$var$$location.protocol !== \"file:\" && !$6140c9fa18232846$exports($a393da0e05d61ed1$var$globalPostMessageDefer)) {\n $a393da0e05d61ed1$var$defer = $a393da0e05d61ed1$var$globalPostMessageDefer;\n $55b335199d6e6d5d$exports.addEventListener(\"message\", $a393da0e05d61ed1$var$eventListener, false);\n // IE8-\n } else if ($a393da0e05d61ed1$var$ONREADYSTATECHANGE in $15c0c414b89100b1$exports(\"script\")) $a393da0e05d61ed1$var$defer = function(id) {\n $b8ce1ad1b6b1e7c1$exports.appendChild($15c0c414b89100b1$exports(\"script\"))[$a393da0e05d61ed1$var$ONREADYSTATECHANGE] = function() {\n $b8ce1ad1b6b1e7c1$exports.removeChild(this);\n $a393da0e05d61ed1$var$run(id);\n };\n };\n else $a393da0e05d61ed1$var$defer = function(id) {\n setTimeout($a393da0e05d61ed1$var$runner(id), 0);\n };\n}\n$a393da0e05d61ed1$exports = {\n set: $a393da0e05d61ed1$var$set,\n clear: $a393da0e05d61ed1$var$clear\n};\n\n\nvar $99b55bbd56d52729$require$clearImmediate = $a393da0e05d61ed1$exports.clear;\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$ca3e1754e676956d$exports({\n global: true,\n bind: true,\n enumerable: true,\n forced: $55b335199d6e6d5d$exports.clearImmediate !== $99b55bbd56d52729$require$clearImmediate\n}, {\n clearImmediate: $99b55bbd56d52729$require$clearImmediate\n});\n\n\n\"use strict\";\n\n\n\nvar $e55ac54d5aaa2e1c$require$setTask = $a393da0e05d61ed1$exports.set;\nvar $f112a170991e44cc$exports = {};\n\"use strict\";\n\n\n\nvar $99637759dc933969$exports = {};\n\"use strict\";\n/* global Bun -- Bun case */ $99637759dc933969$exports = typeof Bun == \"function\" && Bun && typeof Bun.version == \"string\";\n\n\n\n\n\nvar $f112a170991e44cc$var$Function = $55b335199d6e6d5d$exports.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar $f112a170991e44cc$var$WRAP = /MSIE .\\./.test($492c6dc902f2bf18$exports) || $99637759dc933969$exports && function() {\n var version = $55b335199d6e6d5d$exports.Bun.version.split(\".\");\n return version.length < 3 || version[0] === \"0\" && (version[1] < 3 || version[1] === \"3\" && version[2] === \"0\");\n}();\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\n$f112a170991e44cc$exports = function(scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return $f112a170991e44cc$var$WRAP ? function(handler, timeout /* , ...arguments */ ) {\n var boundArgs = $7d824954c5058f7d$exports(arguments.length, 1) > firstParamIndex;\n var fn = $70e34a5a2021f756$exports(handler) ? handler : $f112a170991e44cc$var$Function(handler);\n var params = boundArgs ? $0709cba658bb4ed6$exports(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function() {\n $3cdb2ef65d8e3cb5$exports(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n\n\n// https://github.com/oven-sh/bun/issues/1633\nvar $e55ac54d5aaa2e1c$var$setImmediate = $55b335199d6e6d5d$exports.setImmediate ? $f112a170991e44cc$exports($e55ac54d5aaa2e1c$require$setTask, false) : $e55ac54d5aaa2e1c$require$setTask;\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$ca3e1754e676956d$exports({\n global: true,\n bind: true,\n enumerable: true,\n forced: $55b335199d6e6d5d$exports.setImmediate !== $e55ac54d5aaa2e1c$var$setImmediate\n}, {\n setImmediate: $e55ac54d5aaa2e1c$var$setImmediate\n});\n\n\n\n\nconst $ba30e20475feac5a$export$923ea8233b386e99 = \"https://forkify-api.herokuapp.com/api/v2/recipes/\";\nconst $ba30e20475feac5a$export$196440f71ed9f601 = 10;\nconst $ba30e20475feac5a$export$5feaddb1377b7f5e = 10;\nconst $ba30e20475feac5a$export$3ce8858248d89a69 = 2.5;\nconst $ba30e20475feac5a$export$a9861bd62f48e142 = \"763e47ed-f380-4bd6-b269-09971a80bf7e\";\n\n\n\nconst $bd02c871d9c5ba8e$var$timeout = function(s) {\n return new Promise(function(_, reject) {\n setTimeout(function() {\n reject(new Error(`Request took too long! Timeout after ${s} second`));\n }, s * 1000);\n });\n};\nconst $bd02c871d9c5ba8e$export$2b3ff41fecbef7c8 = async function(url, uploadData) {\n try {\n const fetchPro = uploadData ? fetch(url, {\n method: \"POST\",\n headers: {\n \"content-Type\": \"application/json\"\n },\n body: JSON.stringify(uploadData)\n }) : fetch(url);\n const res = await Promise.race([\n fetchPro,\n $bd02c871d9c5ba8e$var$timeout((0, $ba30e20475feac5a$export$196440f71ed9f601))\n ]);\n const data = await res.json();\n if (!res.ok) throw new Error(`${data.message} ${res.status} ${res.statusText}`);\n return data;\n } catch (err) {\n throw err;\n }\n};\n\n\nconst $0f1d4402dffacf5b$export$ca000e230c0caa3e = {\n recipe: {},\n search: {\n query: \"\",\n results: [],\n resultsPerPage: (0, $ba30e20475feac5a$export$5feaddb1377b7f5e),\n page: 1\n },\n bookmarks: JSON.parse(localStorage.getItem(\"bookmarks\")) || []\n};\nconst $0f1d4402dffacf5b$var$createRecipeObject = function(data) {\n let { recipe: recipe } = data.data;\n return {\n id: recipe.id,\n title: recipe.title,\n publisher: recipe.publisher,\n sourceUrl: recipe.source_url,\n image: recipe.image_url,\n servings: recipe.servings,\n cookingTime: recipe.cooking_time,\n ingredients: recipe.ingredients,\n ...recipe.key && {\n key: recipe.key\n }\n };\n};\nconst $0f1d4402dffacf5b$export$b96725c7a035d60b = async function(id) {\n try {\n const data = await (0, $bd02c871d9c5ba8e$export$2b3ff41fecbef7c8)(`${(0, $ba30e20475feac5a$export$923ea8233b386e99)}${id}?key=${(0, $ba30e20475feac5a$export$a9861bd62f48e142)}`);\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe = $0f1d4402dffacf5b$var$createRecipeObject(data);\n if ($0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks.some((bookmark)=>bookmark.id === id)) $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.bookmarked = !$0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.bookmarked;\n // state.recipe.bookmarked = true;\n // else state.recipe.bookmarked = false;\n } catch (err) {\n console.error(err);\n throw err;\n }\n};\nconst $0f1d4402dffacf5b$export$202b8e5cb363a0c4 = async function(query) {\n try {\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.query = query;\n const data = await (0, $bd02c871d9c5ba8e$export$2b3ff41fecbef7c8)(`${(0, $ba30e20475feac5a$export$923ea8233b386e99)}?search=${query}&key=${(0, $ba30e20475feac5a$export$a9861bd62f48e142)}`);\n console.log(data);\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.results = data.data.recipes.map((rec)=>{\n return {\n id: rec.id,\n title: rec.title,\n publisher: rec.publisher,\n image: rec.image_url,\n ...rec.key && {\n key: rec.key\n }\n };\n });\n console.log($0f1d4402dffacf5b$export$ca000e230c0caa3e.search.results);\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.page = 1;\n } catch (err) {\n console.log(err);\n throw err;\n }\n};\nconst $0f1d4402dffacf5b$export$8d7f79465139ab72 = function(page = $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.page) {\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.page = page;\n const start = (page - 1) * $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.resultsPerPage; // 0\n const end = page * $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.resultsPerPage; // 9\n return $0f1d4402dffacf5b$export$ca000e230c0caa3e.search.results.slice(start, end);\n};\nconst $0f1d4402dffacf5b$export$5e23f4642ecad5ea = function(newServings) {\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.ingredients.forEach((ing)=>{\n ing.quantity = ing.quantity * newServings / $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.servings;\n });\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.servings = newServings;\n};\nconst $0f1d4402dffacf5b$var$persistBookmarks = function() {\n localStorage.setItem(\"bookmarks\", JSON.stringify($0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks));\n};\nconst $0f1d4402dffacf5b$export$72009cc673d27d80 = function(recipe) {\n // Add bookmark\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks.push(recipe);\n // Mark current recipe as bookmarked\n if (recipe.id === $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.id) $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.bookmarked = true;\n $0f1d4402dffacf5b$var$persistBookmarks();\n};\nconst $0f1d4402dffacf5b$export$136048bcb9946c75 = function(id) {\n const index = $0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks.findIndex((el)=>el.id === id);\n // Remove bookmark\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks.splice(index, 1);\n // Unmark current recipe as bookmarked\n if (id === $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.id) $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.bookmarked = false;\n $0f1d4402dffacf5b$var$persistBookmarks();\n};\nconst $0f1d4402dffacf5b$export$d660c2254e74960d = async function(newRecipe) {\n try {\n const ingredients = Object.entries(newRecipe).filter((entry)=>entry[0].startsWith(\"ingredient\") && entry[1] !== \"\").map((ing)=>{\n const ingArr = ing[1].split(\",\").map((el)=>el.trim());\n if (ingArr.length !== 3) throw new Error(\"Wrong ingredient format! Please use the correct format \\uD83D\\uDE0A\");\n const [quantity, unit, description] = ingArr;\n return {\n quantity: +quantity || null,\n unit: unit,\n description: description\n };\n });\n const recipe = {\n title: newRecipe.title,\n source_url: newRecipe.sourceUrl,\n image_url: newRecipe.image,\n publisher: newRecipe.publisher,\n cooking_time: newRecipe.cookingTime,\n servings: newRecipe.servings,\n ingredients: ingredients\n };\n const data = await (0, $bd02c871d9c5ba8e$export$2b3ff41fecbef7c8)(`${(0, $ba30e20475feac5a$export$923ea8233b386e99)}?key=${(0, $ba30e20475feac5a$export$a9861bd62f48e142)}`, recipe);\n $0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe = $0f1d4402dffacf5b$var$createRecipeObject(data);\n $0f1d4402dffacf5b$export$72009cc673d27d80($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n console.log(data);\n } catch (err) {\n throw err;\n }\n};\n\n\n\nvar $040c8022a0d92e23$exports = {};\n$040c8022a0d92e23$exports = new URL(\"icons.c14567a0.svg\", import.meta.url).toString();\n\n\nclass $b2d7157267813d3a$export$2e2bcd8739ae039 {\n _data;\n /**\r\n *\r\n * @param {*} data\r\n * @returns\r\n *\r\n */ render(data) {\n if (!data || Array.isArray(data) && data.length === 0) return this.renderError();\n this._data = data;\n const markup = this._generateMarkup();\n // if (!render) return markup;\n this._clear();\n this._parentElement.insertAdjacentHTML(\"afterbegin\", markup);\n }\n update(data) {\n this._data = data;\n const newMarkup = this._generateMarkup();\n // To create virtual dom\n const newDOM = document.createRange().createContextualFragment(newMarkup);\n const newElements = Array.from(newDOM.querySelectorAll(\"*\"));\n const currElements = Array.from(this._parentElement.querySelectorAll(\"*\"));\n newElements.forEach((newEl, i)=>{\n const curEl = currElements[i];\n // Updates changed TEXT\n if (!newEl.isEqualNode(curEl) && newEl.firstChild?.nodeValue.trim() !== \"\") curEl.textContent = newEl.textContent;\n // Updates changed ATTRIBUTES\n if (!newEl.isEqualNode(curEl)) Array.from(newEl.attributes).forEach((attr)=>curEl.setAttribute(attr.name, attr.value));\n });\n }\n _clear() {\n this._parentElement.innerHTML = \"\";\n }\n renderSpinner() {\n const markup = `\r\n
    \r\n \r\n \r\n \r\n
    `;\n this._clear();\n this._parentElement.insertAdjacentHTML(\"afterbegin\", markup);\n }\n renderError(message = this._errorMessage) {\n const markup = `\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n

    ${message}

    \r\n
    \r\n `;\n this._clear();\n this._parentElement.insertAdjacentHTML(\"afterbegin\", markup);\n }\n renderSuccess(message = this._message) {\n const markup = `\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n

    ${message}

    \r\n
    \r\n `;\n this._clear();\n this._parentElement.insertAdjacentHTML(\"afterbegin\", markup);\n }\n}\n\n\n\n/*\nfraction.js\nA Javascript fraction library.\n\nCopyright (c) 2009 Erik Garrison \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/ /* Fractions */ /* \n *\n * Fraction objects are comprised of a numerator and a denomenator. These\n * values can be accessed at fraction.numerator and fraction.denomenator.\n *\n * Fractions are always returned and stored in lowest-form normalized format.\n * This is accomplished via Fraction.normalize.\n *\n * The following mathematical operations on fractions are supported:\n *\n * Fraction.equals\n * Fraction.add\n * Fraction.subtract\n * Fraction.multiply\n * Fraction.divide\n *\n * These operations accept both numbers and fraction objects. (Best results\n * are guaranteed when the input is a fraction object.) They all return a new\n * Fraction object.\n *\n * Usage:\n *\n * TODO\n *\n */ /*\n * The Fraction constructor takes one of:\n * an explicit numerator (integer) and denominator (integer),\n * a string representation of the fraction (string),\n * or a floating-point number (float)\n *\n * These initialization methods are provided for convenience. Because of\n * rounding issues the best results will be given when the fraction is\n * constructed from an explicit integer numerator and denomenator, and not a\n * decimal number.\n *\n *\n * e.g. new Fraction(1, 2) --> 1/2\n * new Fraction('1/2') --> 1/2\n * new Fraction('2 3/4') --> 11/4 (prints as 2 3/4)\n *\n */ var $d6b4c6d58e0c0c19$export$b336c2702c498be5;\nFraction = function(numerator, denominator) {\n /* double argument invocation */ if (typeof numerator !== \"undefined\" && denominator) {\n if (typeof numerator === \"number\" && typeof denominator === \"number\") {\n this.numerator = numerator;\n this.denominator = denominator;\n } else if (typeof numerator === \"string\" && typeof denominator === \"string\") {\n // what are they?\n // hmm....\n // assume they are ints?\n this.numerator = parseInt(numerator);\n this.denominator = parseInt(denominator);\n }\n /* single-argument invocation */ } else if (typeof denominator === \"undefined\") {\n num = numerator; // swap variable names for legibility\n if (typeof num === \"number\") {\n this.numerator = num;\n this.denominator = 1;\n } else if (typeof num === \"string\") {\n var a, b; // hold the first and second part of the fraction, e.g. a = '1' and b = '2/3' in 1 2/3\n // or a = '2/3' and b = undefined if we are just passed a single-part number\n var arr = num.split(\" \");\n if (arr[0]) a = arr[0];\n if (arr[1]) b = arr[1];\n /* compound fraction e.g. 'A B/C' */ // if a is an integer ...\n if (a % 1 === 0 && b && b.match(\"/\")) return new Fraction(a).add(new Fraction(b));\n else if (a && !b) {\n /* simple fraction e.g. 'A/B' */ if (typeof a === \"string\" && a.match(\"/\")) {\n // it's not a whole number... it's actually a fraction without a whole part written\n var f = a.split(\"/\");\n this.numerator = f[0];\n this.denominator = f[1];\n /* string floating point */ } else if (typeof a === \"string\" && a.match(\".\")) return new Fraction(parseFloat(a));\n else {\n this.numerator = parseInt(a);\n this.denominator = 1;\n }\n } else return undefined; // could not parse\n }\n }\n this.normalize();\n};\nFraction.prototype.clone = function() {\n return new Fraction(this.numerator, this.denominator);\n};\n/* pretty-printer, converts fractions into whole numbers and fractions */ Fraction.prototype.toString = function() {\n if (this.denominator === \"NaN\") return \"NaN\";\n var wholepart = this.numerator / this.denominator > 0 ? Math.floor(this.numerator / this.denominator) : Math.ceil(this.numerator / this.denominator);\n var numerator = this.numerator % this.denominator;\n var denominator = this.denominator;\n var result = [];\n if (wholepart != 0) result.push(wholepart);\n if (numerator != 0) result.push((wholepart === 0 ? numerator : Math.abs(numerator)) + \"/\" + denominator);\n return result.length > 0 ? result.join(\" \") : 0;\n};\n/* destructively rescale the fraction by some integral factor */ Fraction.prototype.rescale = function(factor) {\n this.numerator *= factor;\n this.denominator *= factor;\n return this;\n};\nFraction.prototype.add = function(b) {\n var a = this.clone();\n if (b instanceof Fraction) b = b.clone();\n else b = new Fraction(b);\n td = a.denominator;\n a.rescale(b.denominator);\n b.rescale(td);\n a.numerator += b.numerator;\n return a.normalize();\n};\nFraction.prototype.subtract = function(b) {\n var a = this.clone();\n if (b instanceof Fraction) b = b.clone(); // we scale our argument destructively, so clone\n else b = new Fraction(b);\n td = a.denominator;\n a.rescale(b.denominator);\n b.rescale(td);\n a.numerator -= b.numerator;\n return a.normalize();\n};\nFraction.prototype.multiply = function(b) {\n var a = this.clone();\n if (b instanceof Fraction) {\n a.numerator *= b.numerator;\n a.denominator *= b.denominator;\n } else if (typeof b === \"number\") a.numerator *= b;\n else return a.multiply(new Fraction(b));\n return a.normalize();\n};\nFraction.prototype.divide = function(b) {\n var a = this.clone();\n if (b instanceof Fraction) {\n a.numerator *= b.denominator;\n a.denominator *= b.numerator;\n } else if (typeof b === \"number\") a.denominator *= b;\n else return a.divide(new Fraction(b));\n return a.normalize();\n};\nFraction.prototype.equals = function(b) {\n if (!(b instanceof Fraction)) b = new Fraction(b);\n // fractions that are equal should have equal normalized forms\n var a = this.clone().normalize();\n var b = b.clone().normalize();\n return a.numerator === b.numerator && a.denominator === b.denominator;\n};\n/* Utility functions */ /* Destructively normalize the fraction to its smallest representation. \n * e.g. 4/16 -> 1/4, 14/28 -> 1/2, etc.\n * This is called after all math ops.\n */ Fraction.prototype.normalize = function() {\n var isFloat = function(n) {\n return typeof n === \"number\" && (n > 0 && n % 1 > 0 && n % 1 < 1 || n < 0 && n % -1 < 0 && n % -1 > -1);\n };\n var roundToPlaces = function(n, places) {\n if (!places) return Math.round(n);\n else {\n var scalar = Math.pow(10, places);\n return Math.round(n * scalar) / scalar;\n }\n };\n return function() {\n // XXX hackish. Is there a better way to address this issue?\n //\n /* first check if we have decimals, and if we do eliminate them\n * multiply by the 10 ^ number of decimal places in the number\n * round the number to nine decimal places\n * to avoid js floating point funnies\n */ if (isFloat(this.denominator)) {\n var rounded = roundToPlaces(this.denominator, 9);\n var scaleup = Math.pow(10, rounded.toString().split(\".\")[1].length);\n this.denominator = Math.round(this.denominator * scaleup); // this !!! should be a whole number\n //this.numerator *= scaleup;\n this.numerator *= scaleup;\n }\n if (isFloat(this.numerator)) {\n var rounded = roundToPlaces(this.numerator, 9);\n var scaleup = Math.pow(10, rounded.toString().split(\".\")[1].length);\n this.numerator = Math.round(this.numerator * scaleup); // this !!! should be a whole number\n //this.numerator *= scaleup;\n this.denominator *= scaleup;\n }\n var gcf = Fraction.gcf(this.numerator, this.denominator);\n this.numerator /= gcf;\n this.denominator /= gcf;\n if (this.numerator < 0 && this.denominator < 0 || this.numerator > 0 && this.denominator < 0) {\n this.numerator *= -1;\n this.denominator *= -1;\n }\n return this;\n };\n}();\n/* Takes two numbers and returns their greatest common factor.\n */ Fraction.gcf = function(a, b) {\n var common_factors = [];\n var fa = Fraction.primeFactors(a);\n var fb = Fraction.primeFactors(b);\n // for each factor in fa\n // if it's also in fb\n // put it into the common factors\n fa.forEach(function(factor) {\n var i = fb.indexOf(factor);\n if (i >= 0) {\n common_factors.push(factor);\n fb.splice(i, 1); // remove from fb\n }\n });\n if (common_factors.length === 0) return 1;\n var gcf = function() {\n var r = common_factors[0];\n var i;\n for(i = 1; i < common_factors.length; i++)r = r * common_factors[i];\n return r;\n }();\n return gcf;\n};\n// Adapted from: \n// http://www.btinternet.com/~se16/js/factor.htm\nFraction.primeFactors = function(n) {\n var num1 = Math.abs(n);\n var factors = [];\n var _factor = 2; // first potential prime factor\n while(_factor * _factor <= num1)if (num1 % _factor === 0) {\n factors.push(_factor); // so keep it\n num1 = num1 / _factor; // and divide our search point by it\n } else _factor++; // and increment\n if (num1 != 1) factors.push(num1); // so it too should be recorded\n return factors; // Return the prime factors\n};\n$d6b4c6d58e0c0c19$export$b336c2702c498be5 = Fraction;\n\n\nclass $d14dc0f178617192$var$RecipeView extends (0, $b2d7157267813d3a$export$2e2bcd8739ae039) {\n _parentElement = document.querySelector(\".recipe\");\n _message = \"\";\n _errorMessage = \"We could not find that recipe. Please try another one!\";\n // MVC: Publisher\n addHandlerRender(handler) {\n [\n \"load\",\n \"hashchange\"\n ].forEach((ev)=>window.addEventListener(ev, handler));\n }\n addHandlerUpdateServings(handler) {\n this._parentElement.addEventListener(\"click\", function(e) {\n const btn = e.target.closest(\".btn--update-servings\");\n if (!btn) return;\n const { updateTo: updateTo } = btn.dataset;\n +updateTo > 0 && handler(+updateTo);\n });\n }\n addHandlerAddBookmark(handler) {\n this._parentElement.addEventListener(\"click\", function(e) {\n const btn = e.target.closest(\".btn--bookmark\");\n if (!btn) return;\n handler();\n });\n }\n _generateMarkup() {\n return `
    \r\n \r\n

    \r\n ${this._data.title}\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n ${this._data.cookingTime}\r\n minutes\r\n
    \r\n
    \r\n \r\n \r\n \r\n ${this._data.servings}\r\n servings\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n

    Recipe ingredients

    \r\n
      \r\n ${this._data.ingredients.map(this._generateMarkupIngredient).join(\"\")}\r\n
    \r\n
    \r\n\r\n
    \r\n

    How to cook it

    \r\n

    \r\n This recipe was carefully designed and tested by\r\n ${this._data.publisher}. Please\r\n check out directions at their website.\r\n

    \r\n \r\n Directions\r\n \r\n \r\n \r\n \r\n
    `;\n }\n _generateMarkupIngredient(ing) {\n return `\r\n
  • \r\n \r\n \r\n \r\n
    \r\n ${ing.quantity ? new (0, $d6b4c6d58e0c0c19$export$b336c2702c498be5)(ing.quantity).toString() : \"\"}\r\n
    \r\n
    \r\n ${ing.unit}\r\n ${ing.description}\r\n
    \r\n
  • `;\n }\n}\nvar $d14dc0f178617192$export$2e2bcd8739ae039 = new $d14dc0f178617192$var$RecipeView();\n\n\nclass $813cf99795e9ec97$var$SearchView {\n #parentElement = document.querySelector(\".search\");\n getQuery() {\n const query = this.#parentElement.querySelector(\".search__field\").value;\n this.#clearInput();\n if (!query) throw new Error(\"Search field is empty \\uD83E\\uDD26\\u200D\\u2642\\uFE0F\");\n return query;\n }\n #clearInput() {\n this.#parentElement.querySelector(\".search__field\").value = \"\";\n }\n // MVC: Publisher\n addHandlerSubmit(handler) {\n this.#parentElement.addEventListener(\"submit\", function(e) {\n e.preventDefault();\n handler();\n });\n }\n}\nvar $813cf99795e9ec97$export$2e2bcd8739ae039 = new $813cf99795e9ec97$var$SearchView();\n\n\n\n\n\n\nclass $a68ceb92eae160df$var$PreviewView extends (0, $b2d7157267813d3a$export$2e2bcd8739ae039) {\n _parentElement = \"\";\n _generateMarkupPreview(data) {\n const id = window.location.hash.slice(1);\n return `\r\n ${data.map((result)=>`
  • \r\n \r\n
    \r\n \"${result.title}\"\r\n
    \r\n
    \r\n

    ${result.title} ...

    \r\n

    ${result.publisher}

    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
  • `).join(\"\")}\r\n \r\n `;\n }\n}\nvar $a68ceb92eae160df$export$2e2bcd8739ae039 = new $a68ceb92eae160df$var$PreviewView();\n\n\nclass $dddbd0b30676c4ae$var$ResultView extends (0, $b2d7157267813d3a$export$2e2bcd8739ae039) {\n _parentElement = document.querySelector(\".results\");\n _message = \"\";\n _errorMessage = \"Could not find what you are looking for!\\uD83E\\uDD37\\u200D\\u2642\\uFE0F Make sure to check if the spelling of the recipe you entered is correct \\uD83D\\uDE0A\";\n _generateMarkup() {\n return (0, $a68ceb92eae160df$export$2e2bcd8739ae039)._generateMarkupPreview(this._data);\n }\n}\nvar $dddbd0b30676c4ae$export$2e2bcd8739ae039 = new $dddbd0b30676c4ae$var$ResultView();\n\n\n\n\nclass $cfa940594ee109f7$var$PaginationView extends (0, $b2d7157267813d3a$export$2e2bcd8739ae039) {\n _parentElement = document.querySelector(\".pagination\");\n addHandlerClick(handler) {\n this._parentElement.addEventListener(\"click\", function(e) {\n const btn = e.target.closest(\".btn--inline\");\n if (!btn) return;\n handler(+btn.dataset.goto);\n });\n }\n _generateMarkup() {\n const numPages = Math.ceil(this._data.results.length / this._data.resultsPerPage);\n const currPage = this._data.page;\n // Page 1, and there are other pages\n if (currPage === 1 && numPages > 1) return `${this._generateButtonMarkup(\"next\", currPage)}`;\n // Last page\n if (currPage === numPages && numPages > 1) return `${this._generateButtonMarkup(\"prev\", currPage)}`;\n // Other pages\n if (currPage > 1 && currPage < numPages) return `${this._generateButtonMarkup(\"prev\", currPage)}\r\n ${this._generateButtonMarkup(\"next\", currPage)}`;\n // Page 1, and there are no other pages\n return \"\";\n }\n _generateButtonMarkup(pos, currPage) {\n const position = pos === \"next\" ? currPage + 1 : currPage - 1;\n return `\r\n \r\n ${pos === \"next\" ? `Page ${position}\r\n \r\n \r\n ` : `\r\n \r\n \r\n Page ${position}`}\r\n \r\n `;\n }\n}\nvar $cfa940594ee109f7$export$2e2bcd8739ae039 = new $cfa940594ee109f7$var$PaginationView();\n\n\n\n\n\nclass $5d1bb7e064b2cbd1$var$BookmarksView extends (0, $b2d7157267813d3a$export$2e2bcd8739ae039) {\n _parentElement = document.querySelector(\".bookmarks__list\");\n _message = \"\";\n _errorMessage = \"No bookmarks yet! \\uD83E\\uDD37\\u200D\\u2642\\uFE0F Find a recipe to add to bookmarks \\uD83D\\uDE0A\";\n addHandlerRender(handler) {\n window.addEventListener(\"load\", handler);\n }\n _generateMarkup() {\n return (0, $a68ceb92eae160df$export$2e2bcd8739ae039)._generateMarkupPreview(this._data);\n }\n}\nvar $5d1bb7e064b2cbd1$export$2e2bcd8739ae039 = new $5d1bb7e064b2cbd1$var$BookmarksView();\n\n\n\n\nclass $e5dc5dc5ede8bdf4$var$AddRecipeView extends (0, $b2d7157267813d3a$export$2e2bcd8739ae039) {\n _parentElement = document.querySelector(\".upload\");\n _message = \"Recipe was successfully uploaded\";\n _window = document.querySelector(\".add-recipe-window\");\n _overlay = document.querySelector(\".overlay\");\n _btnOpen = document.querySelector(\".nav__btn--add-recipe\");\n _btnClose = document.querySelector(\".btn--close-modal\");\n constructor(){\n super();\n this._addHandlerShowWindow();\n this._addHandlerHideWindow();\n }\n _addHandlerShowWindow() {\n this._btnOpen.addEventListener(\"click\", this.toggleWindow.bind(this));\n }\n _addHandlerHideWindow() {\n this._overlay.addEventListener(\"click\", this.toggleWindow.bind(this));\n this._btnClose.addEventListener(\"click\", this.toggleWindow.bind(this));\n }\n toggleWindow() {\n this._overlay.classList.toggle(\"hidden\");\n this._window.classList.toggle(\"hidden\");\n }\n _addHandlerUpload(handler) {\n this._parentElement.addEventListener(\"submit\", function(e) {\n e.preventDefault();\n const dataArr = [\n ...new FormData(this)\n ];\n const data = Object.fromEntries(dataArr);\n handler(data);\n });\n }\n _generateMarkup() {}\n}\nvar $e5dc5dc5ede8bdf4$export$2e2bcd8739ae039 = new $e5dc5dc5ede8bdf4$var$AddRecipeView();\n\n\nvar $7238a34a955809b2$exports = {};\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */ var $7238a34a955809b2$var$runtime = function(exports) {\n \"use strict\";\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function(obj, key, desc) {\n obj[key] = desc.value;\n };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n });\n return generator;\n }\n exports.wrap = wrap;\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function() {\n return this;\n });\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: true\n });\n defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: true\n });\n GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\");\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\n \"next\",\n \"throw\",\n \"return\"\n ].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : false;\n };\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return {\n __await: arg\n };\n };\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") reject(record.arg);\n else {\n var result = record.arg;\n var value = result.value;\n if (value && typeof value === \"object\" && hasOwn.call(value, \"__await\")) return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n var previousPromise;\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", {\n value: enqueue\n });\n }\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function() {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n return function invoke(method, arg) {\n if (state === GenStateExecuting) throw new Error(\"Generator is already running\");\n if (state === GenStateCompleted) {\n if (method === \"throw\") throw arg;\n // Be forgiving, per GeneratorResume behavior specified since ES2015:\n // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume\n // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume\n return doneResult();\n }\n context.method = method;\n context.arg = arg;\n while(true){\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (context.method === \"next\") // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") context.abrupt(\"return\", context.arg);\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done ? GenStateCompleted : GenStateSuspendedYield;\n if (record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next method, always terminate the\n // yield* loop.\n context.delegate = null;\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n if (context.method === \"throw\") // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\");\n }\n return ContinueSentinel;\n }\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n var info = record.arg;\n if (!info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else // Re-yield the result returned by the delegate method.\n return info;\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n define(Gp, toStringTagSymbol, \"Generator\");\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n if (1 in locs) entry.catchLoc = locs[1];\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [\n {\n tryLoc: \"root\"\n }\n ];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for(var key in object)keys.push(key);\n keys.reverse();\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while(keys.length){\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n function values(iterable) {\n if (iterable != null) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (typeof iterable.next === \"function\") return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while(++i < iterable.length)if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n next.value = undefined;\n next.done = true;\n return next;\n };\n return next.next = next;\n }\n }\n throw new TypeError(typeof iterable + \" is not iterable\");\n }\n exports.values = values;\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n Context.prototype = {\n constructor: Context,\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\n this.tryEntries.forEach(resetTryEntry);\n if (!skipTempReset) {\n for(var name in this)// Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) this[name] = undefined;\n }\n },\n stop: function() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n return !!caught;\n }\n for(var i = this.tryEntries.length - 1; i >= 0; --i){\n var entry = this.tryEntries[i];\n var record = entry.completion;\n if (entry.tryLoc === \"root\") // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, true);\n else if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, true);\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else throw new Error(\"try statement without catch or finally\");\n }\n }\n },\n abrupt: function(type, arg) {\n for(var i = this.tryEntries.length - 1; i >= 0; --i){\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n return this.complete(record);\n },\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") throw record.arg;\n if (record.type === \"break\" || record.type === \"continue\") this.next = record.arg;\n else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) this.next = afterLoc;\n return ContinueSentinel;\n },\n finish: function(finallyLoc) {\n for(var i = this.tryEntries.length - 1; i >= 0; --i){\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function(tryLoc) {\n for(var i = this.tryEntries.length - 1; i >= 0; --i){\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n if (this.method === \"next\") // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n return ContinueSentinel;\n }\n };\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n}(// If this script is executing as a CommonJS module, use module.exports\n// as the regeneratorRuntime namespace. Otherwise create a new empty\n// object. Either way, the resulting object will be used to initialize\n// the regeneratorRuntime variable at the top of this file.\n(0, $7238a34a955809b2$exports));\ntry {\n regeneratorRuntime = $7238a34a955809b2$var$runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") globalThis.regeneratorRuntime = $7238a34a955809b2$var$runtime;\n else Function(\"r\", \"regeneratorRuntime = r\")($7238a34a955809b2$var$runtime);\n}\n\n\n// if (module.hot) {\n// module.hot.accept();\n// }\nconst $f50bd1f2915ed0f2$var$controlRecipes = async function() {\n try {\n const id = window.location.hash.slice(1);\n if (!id) return;\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).renderSpinner();\n // 0) Update results and bookmarks view to mark selected search result\n (0, $dddbd0b30676c4ae$export$2e2bcd8739ae039).update($0f1d4402dffacf5b$export$8d7f79465139ab72());\n (0, $5d1bb7e064b2cbd1$export$2e2bcd8739ae039).update($0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks);\n // 1) Loading Recipe\n await $0f1d4402dffacf5b$export$b96725c7a035d60b(id);\n // 2) Rendering recipes\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n // controlServings(4);\n } catch (err) {\n console.error(err);\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).renderError(err.message);\n }\n};\nconst $f50bd1f2915ed0f2$var$controlSearchResults = async function() {\n try {\n // 1) Get search query\n (0, $dddbd0b30676c4ae$export$2e2bcd8739ae039).renderSpinner();\n const query = (0, $813cf99795e9ec97$export$2e2bcd8739ae039).getQuery();\n // 2) Load search result\n await $0f1d4402dffacf5b$export$202b8e5cb363a0c4(query);\n // 3) Render search result with pagination\n (0, $dddbd0b30676c4ae$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$8d7f79465139ab72());\n // 3) Render initial pagination buttons\n (0, $cfa940594ee109f7$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.search);\n } catch (err) {\n console.error(err);\n (0, $dddbd0b30676c4ae$export$2e2bcd8739ae039).renderError(err.message);\n }\n};\nconst $f50bd1f2915ed0f2$var$controlPagination = function(goToPage) {\n // 1) Render New results\n (0, $dddbd0b30676c4ae$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$8d7f79465139ab72(goToPage));\n // 2) Render NEW pagination buttons\n (0, $cfa940594ee109f7$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.search);\n};\nconst $f50bd1f2915ed0f2$var$controlServings = function(newServings) {\n // 1) Update the recipe servings (in state)\n $0f1d4402dffacf5b$export$5e23f4642ecad5ea(newServings);\n // 2) Render recipe view\n // recipeView.render(model.state.recipe);\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).update($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n};\nconst $f50bd1f2915ed0f2$var$controlAddBookmark = function() {\n // Add/Remove bookmark\n if (!$0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.bookmarked) $0f1d4402dffacf5b$export$72009cc673d27d80($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n else $0f1d4402dffacf5b$export$136048bcb9946c75($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.id);\n // 2) Update recipe view\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).update($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n console.log($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n // 3) Render bookmarks\n (0, $5d1bb7e064b2cbd1$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks);\n};\nconst $f50bd1f2915ed0f2$var$controlBookmarks = function() {\n (0, $5d1bb7e064b2cbd1$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks);\n};\nconst $f50bd1f2915ed0f2$var$controlAddRecipe = async function(newRecipe) {\n try {\n (0, $e5dc5dc5ede8bdf4$export$2e2bcd8739ae039).renderSpinner();\n // Upload the new recipe data\n await $0f1d4402dffacf5b$export$d660c2254e74960d(newRecipe);\n // Render recipe\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe);\n // Display success message\n (0, $e5dc5dc5ede8bdf4$export$2e2bcd8739ae039).renderSuccess();\n // Render bookmark view\n (0, $5d1bb7e064b2cbd1$export$2e2bcd8739ae039).render($0f1d4402dffacf5b$export$ca000e230c0caa3e.bookmarks);\n // Change ID in URL\n window.history.pushState(null, \"\", `#${$0f1d4402dffacf5b$export$ca000e230c0caa3e.recipe.id}`);\n // Close modal\n setTimeout(function() {\n (0, $e5dc5dc5ede8bdf4$export$2e2bcd8739ae039).toggleWindow();\n }, (0, $ba30e20475feac5a$export$3ce8858248d89a69) * 1000);\n } catch (err) {\n (0, $e5dc5dc5ede8bdf4$export$2e2bcd8739ae039).renderError(err.message);\n console.error(err.message);\n }\n};\n// const fractionConverter = function (deci) {\n// const splet = deci.split('.');\n// const [whole, fraction] = splet;\n// const fractNum = +fraction;\n// const result = fractNum / 10;\n// let answer;\n// for (let i = 10, j = fractNum; 10 % fractNum === 0; i++) {\n// if (i % j) {\n// answer = `${j}/${i}`;\n// } else {\n// answer = `${1}/${i / j}`;\n// }\n// }\n// console.log(splet);\n// };\n// fractionConverter('1.5');\nconst $f50bd1f2915ed0f2$var$init = function() {\n (0, $5d1bb7e064b2cbd1$export$2e2bcd8739ae039).addHandlerRender($f50bd1f2915ed0f2$var$controlBookmarks);\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).addHandlerRender($f50bd1f2915ed0f2$var$controlRecipes);\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).addHandlerUpdateServings($f50bd1f2915ed0f2$var$controlServings);\n (0, $813cf99795e9ec97$export$2e2bcd8739ae039).addHandlerSubmit($f50bd1f2915ed0f2$var$controlSearchResults);\n (0, $cfa940594ee109f7$export$2e2bcd8739ae039).addHandlerClick($f50bd1f2915ed0f2$var$controlPagination);\n (0, $d14dc0f178617192$export$2e2bcd8739ae039).addHandlerAddBookmark($f50bd1f2915ed0f2$var$controlAddBookmark);\n (0, $e5dc5dc5ede8bdf4$export$2e2bcd8739ae039)._addHandlerUpload($f50bd1f2915ed0f2$var$controlAddRecipe);\n};\n$f50bd1f2915ed0f2$var$init(); // localStorage.clear();\n\n\n//# sourceMappingURL=index.6cd0e77f.js.map\n","import * as model from './model';\nimport { MODAL_CLOSE_SEC } from './config';\nimport recipeView from './views/recipeView';\nimport searchView from './views/searchView';\nimport resultsView from './views/resultsView';\nimport paginationView from './views/paginationView';\nimport bookmarksView from './views/bookmarksView';\nimport addRecipeView from './views/addRecipeView';\n\nimport 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\n// if (module.hot) {\n// module.hot.accept();\n// }\n\nconst controlRecipes = async function () {\n try {\n const id = window.location.hash.slice(1);\n\n if (!id) return;\n recipeView.renderSpinner();\n\n // 0) Update results and bookmarks view to mark selected search result\n resultsView.update(model.getSearchResultsPage());\n bookmarksView.update(model.state.bookmarks);\n\n // 1) Loading Recipe\n await model.loadRecipe(id);\n\n // 2) Rendering recipes\n recipeView.render(model.state.recipe);\n\n // controlServings(4);\n } catch (err) {\n console.error(err);\n recipeView.renderError(err.message);\n }\n};\n\nconst controlSearchResults = async function () {\n try {\n // 1) Get search query\n resultsView.renderSpinner();\n const query = searchView.getQuery();\n\n // 2) Load search result\n await model.loadSearchResults(query);\n\n // 3) Render search result with pagination\n resultsView.render(model.getSearchResultsPage());\n\n // 3) Render initial pagination buttons\n paginationView.render(model.state.search);\n } catch (err) {\n console.error(err);\n resultsView.renderError(err.message);\n }\n};\n\nconst controlPagination = function (goToPage) {\n // 1) Render New results\n resultsView.render(model.getSearchResultsPage(goToPage));\n\n // 2) Render NEW pagination buttons\n paginationView.render(model.state.search);\n};\n\nconst controlServings = function (newServings) {\n // 1) Update the recipe servings (in state)\n model.updateServings(newServings);\n\n // 2) Render recipe view\n // recipeView.render(model.state.recipe);\n recipeView.update(model.state.recipe);\n};\n\nconst controlAddBookmark = function () {\n // Add/Remove bookmark\n if (!model.state.recipe.bookmarked) model.addBookmark(model.state.recipe);\n else model.deleteBookmark(model.state.recipe.id);\n\n // 2) Update recipe view\n recipeView.update(model.state.recipe);\n console.log(model.state.recipe);\n\n // 3) Render bookmarks\n bookmarksView.render(model.state.bookmarks);\n};\n\nconst controlBookmarks = function () {\n bookmarksView.render(model.state.bookmarks);\n};\n\nconst controlAddRecipe = async function (newRecipe) {\n try {\n addRecipeView.renderSpinner();\n // Upload the new recipe data\n await model.uploadRecipe(newRecipe);\n\n // Render recipe\n recipeView.render(model.state.recipe);\n\n // Display success message\n addRecipeView.renderSuccess();\n\n // Render bookmark view\n bookmarksView.render(model.state.bookmarks);\n\n // Change ID in URL\n window.history.pushState(null, '', `#${model.state.recipe.id}`);\n // Close modal\n setTimeout(function () {\n addRecipeView.toggleWindow();\n }, MODAL_CLOSE_SEC * 1000);\n } catch (err) {\n addRecipeView.renderError(err.message);\n console.error(err.message);\n }\n};\n// const fractionConverter = function (deci) {\n// const splet = deci.split('.');\n// const [whole, fraction] = splet;\n// const fractNum = +fraction;\n// const result = fractNum / 10;\n// let answer;\n\n// for (let i = 10, j = fractNum; 10 % fractNum === 0; i++) {\n// if (i % j) {\n// answer = `${j}/${i}`;\n// } else {\n// answer = `${1}/${i / j}`;\n// }\n// }\n\n// console.log(splet);\n// };\n\n// fractionConverter('1.5');\n\nconst init = function () {\n bookmarksView.addHandlerRender(controlBookmarks);\n recipeView.addHandlerRender(controlRecipes);\n recipeView.addHandlerUpdateServings(controlServings);\n searchView.addHandlerSubmit(controlSearchResults);\n paginationView.addHandlerClick(controlPagination);\n recipeView.addHandlerAddBookmark(controlAddBookmark);\n addRecipeView._addHandlerUpload(controlAddRecipe);\n};\n\ninit();\n\n// localStorage.clear();\n","'use strict';\n// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/web.clear-immediate');\nrequire('../modules/web.set-immediate');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar clearImmediate = require('../internals/task').clear;\n\n// `clearImmediate` method\n// http://w3c.github.io/setImmediate/#si-clearImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.clearImmediate !== clearImmediate }, {\n clearImmediate: clearImmediate\n});\n","'use strict';\nvar global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || defineGlobalProperty(TARGET, {});\n } else {\n target = global[TARGET] && global[TARGET].prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty == typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n defineBuiltIn(target, key, sourceProperty, options);\n }\n};\n","'use strict';\nvar check = function (it) {\n return it && it.Math === Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n check(typeof this == 'object' && this) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] !== 7;\n});\n","'use strict';\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","'use strict';\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\n// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) === 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","'use strict';\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw new $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\n// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","'use strict';\nvar toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw new $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\n\nmodule.exports = function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","'use strict';\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\nvar documentAll = typeof document == 'object' && document.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nmodule.exports = typeof documentAll == 'undefined' && documentAll !== undefined ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (argument) {\n return isCallable(argument) ? argument : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","'use strict';\n/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\nvar global = require('../internals/global');\n\nvar $String = global.String;\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol('symbol detection');\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n // nb: Do not call `String` directly to avoid this being optimized out to `symbol+''` which will,\n // of course, fail.\n return !$String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","'use strict';\nmodule.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","'use strict';\nvar aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw new $TypeError(tryToString(argument) + ' is not a function');\n};\n","'use strict';\nvar $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","'use strict';\nvar call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw new $TypeError(\"Can't convert object to primitive value\");\n};\n","'use strict';\nvar global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar store = require('../internals/shared-store');\n\nmodule.exports = function (key, value) {\n return store[key] || (store[key] = value || {});\n};\n","'use strict';\nvar IS_PURE = require('../internals/is-pure');\nvar globalThis = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = module.exports = globalThis[SHARED] || defineGlobalProperty(SHARED, {});\n\n(store.versions || (store.versions = [])).push({\n version: '3.36.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2024 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.36.0/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","'use strict';\nmodule.exports = false;\n","'use strict';\nvar global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","'use strict';\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw new $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype !== 42;\n});\n","'use strict';\nvar isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw new $TypeError($String(argument) + ' is not an object');\n};\n","'use strict';\nvar isCallable = require('../internals/is-callable');\nvar definePropertyModule = require('../internals/object-define-property');\nvar makeBuiltIn = require('../internals/make-built-in');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nmodule.exports = function (O, key, value, options) {\n if (!options) options = {};\n var simple = options.enumerable;\n var name = options.name !== undefined ? options.name : key;\n if (isCallable(value)) makeBuiltIn(value, name, options);\n if (options.global) {\n if (simple) O[key] = value;\n else defineGlobalProperty(key, value);\n } else {\n try {\n if (!options.unsafe) delete O[key];\n else if (O[key]) simple = true;\n } catch (error) { /* empty */ }\n if (simple) O[key] = value;\n else definePropertyModule.f(O, key, {\n value: value,\n enumerable: false,\n configurable: !options.nonConfigurable,\n writable: !options.nonWritable\n });\n } return O;\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar CONFIGURABLE_FUNCTION_NAME = require('../internals/function-name').CONFIGURABLE;\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar enforceInternalState = InternalStateModule.enforce;\nvar getInternalState = InternalStateModule.get;\nvar $String = String;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\nvar stringSlice = uncurryThis(''.slice);\nvar replace = uncurryThis(''.replace);\nvar join = uncurryThis([].join);\n\nvar CONFIGURABLE_LENGTH = DESCRIPTORS && !fails(function () {\n return defineProperty(function () { /* empty */ }, 'length', { value: 8 }).length !== 8;\n});\n\nvar TEMPLATE = String(String).split('String');\n\nvar makeBuiltIn = module.exports = function (value, name, options) {\n if (stringSlice($String(name), 0, 7) === 'Symbol(') {\n name = '[' + replace($String(name), /^Symbol\\(([^)]*)\\).*$/, '$1') + ']';\n }\n if (options && options.getter) name = 'get ' + name;\n if (options && options.setter) name = 'set ' + name;\n if (!hasOwn(value, 'name') || (CONFIGURABLE_FUNCTION_NAME && value.name !== name)) {\n if (DESCRIPTORS) defineProperty(value, 'name', { value: name, configurable: true });\n else value.name = name;\n }\n if (CONFIGURABLE_LENGTH && options && hasOwn(options, 'arity') && value.length !== options.arity) {\n defineProperty(value, 'length', { value: options.arity });\n }\n try {\n if (options && hasOwn(options, 'constructor') && options.constructor) {\n if (DESCRIPTORS) defineProperty(value, 'prototype', { writable: false });\n // in V8 ~ Chrome 53, prototypes of some methods, like `Array.prototype.values`, are non-writable\n } else if (value.prototype) value.prototype = undefined;\n } catch (error) { /* empty */ }\n var state = enforceInternalState(value);\n if (!hasOwn(state, 'source')) {\n state.source = join(TEMPLATE, typeof name == 'string' ? name : '');\n } return value;\n};\n\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n// eslint-disable-next-line no-extend-native -- required\nFunction.prototype.toString = makeBuiltIn(function toString() {\n return isCallable(this) && getInternalState(this).source || inspectSource(this);\n}, 'toString');\n","'use strict';\nvar DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","'use strict';\nvar NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw new TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","'use strict';\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","'use strict';\nvar shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","'use strict';\nmodule.exports = {};\n","'use strict';\nvar hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","'use strict';\nvar internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n if (length === 0) return !IS_INCLUDES && -1;\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el !== el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value !== value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","'use strict';\nvar trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","'use strict';\nvar ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","'use strict';\nvar toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","'use strict';\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n var len = toIntegerOrInfinity(argument);\n return len > 0 ? min(len, 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","'use strict';\n// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","'use strict';\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value === POLYFILL ? true\n : value === NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","'use strict';\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","'use strict';\nvar classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","'use strict';\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","'use strict';\nvar $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw new $TypeError('Not enough arguments');\n return passed;\n};\n","'use strict';\nvar userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","'use strict';\nvar global = require('../internals/global');\nvar classof = require('../internals/classof-raw');\n\nmodule.exports = classof(global.process) === 'process';\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar setTask = require('../internals/task').set;\nvar schedulersFix = require('../internals/schedulers-fix');\n\n// https://github.com/oven-sh/bun/issues/1633\nvar setImmediate = global.setImmediate ? schedulersFix(setTask, false) : setTask;\n\n// `setImmediate` method\n// http://w3c.github.io/setImmediate/#si-setImmediate\n$({ global: true, bind: true, enumerable: true, forced: global.setImmediate !== setImmediate }, {\n setImmediate: setImmediate\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar isCallable = require('../internals/is-callable');\nvar ENGINE_IS_BUN = require('../internals/engine-is-bun');\nvar USER_AGENT = require('../internals/engine-user-agent');\nvar arraySlice = require('../internals/array-slice');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\n\nvar Function = global.Function;\n// dirty IE9- and Bun 0.3.0- checks\nvar WRAP = /MSIE .\\./.test(USER_AGENT) || ENGINE_IS_BUN && (function () {\n var version = global.Bun.version.split('.');\n return version.length < 3 || version[0] === '0' && (version[1] < 3 || version[1] === '3' && version[2] === '0');\n})();\n\n// IE9- / Bun 0.3.0- setTimeout / setInterval / setImmediate additional parameters fix\n// https://html.spec.whatwg.org/multipage/timers-and-user-prompts.html#timers\n// https://github.com/oven-sh/bun/issues/1633\nmodule.exports = function (scheduler, hasTimeArg) {\n var firstParamIndex = hasTimeArg ? 2 : 1;\n return WRAP ? function (handler, timeout /* , ...arguments */) {\n var boundArgs = validateArgumentsLength(arguments.length, 1) > firstParamIndex;\n var fn = isCallable(handler) ? handler : Function(handler);\n var params = boundArgs ? arraySlice(arguments, firstParamIndex) : [];\n var callback = boundArgs ? function () {\n apply(fn, this, params);\n } : fn;\n return hasTimeArg ? scheduler(callback, timeout) : scheduler(callback);\n } : scheduler;\n};\n","'use strict';\n/* global Bun -- Bun case */\nmodule.exports = typeof Bun == 'function' && Bun && typeof Bun.version == 'string';\n","import { API_URL, RES_PER_PAGE, API_KEY } from './config';\r\nimport { AJAX } from './helpers';\r\n\r\nexport const state = {\r\n recipe: {},\r\n search: {\r\n query: '',\r\n results: [],\r\n resultsPerPage: RES_PER_PAGE,\r\n page: 1,\r\n },\r\n bookmarks: JSON.parse(localStorage.getItem('bookmarks')) || [],\r\n};\r\n\r\nconst createRecipeObject = function (data) {\r\n let { recipe } = data.data;\r\n return {\r\n id: recipe.id,\r\n title: recipe.title,\r\n publisher: recipe.publisher,\r\n sourceUrl: recipe.source_url,\r\n image: recipe.image_url,\r\n servings: recipe.servings,\r\n cookingTime: recipe.cooking_time,\r\n ingredients: recipe.ingredients,\r\n ...(recipe.key && { key: recipe.key }),\r\n };\r\n};\r\n\r\nexport const loadRecipe = async function (id) {\r\n try {\r\n const data = await AJAX(`${API_URL}${id}?key=${API_KEY}`);\r\n state.recipe = createRecipeObject(data);\r\n if (state.bookmarks.some(bookmark => bookmark.id === id))\r\n state.recipe.bookmarked = !state.recipe.bookmarked;\r\n // state.recipe.bookmarked = true;\r\n // else state.recipe.bookmarked = false;\r\n } catch (err) {\r\n console.error(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport const loadSearchResults = async function (query) {\r\n try {\r\n state.search.query = query;\r\n const data = await AJAX(`${API_URL}?search=${query}&key=${API_KEY}`);\r\n console.log(data);\r\n state.search.results = data.data.recipes.map(rec => {\r\n return {\r\n id: rec.id,\r\n title: rec.title,\r\n publisher: rec.publisher,\r\n image: rec.image_url,\r\n ...(rec.key && { key: rec.key }),\r\n };\r\n });\r\n console.log(state.search.results);\r\n state.search.page = 1;\r\n } catch (err) {\r\n console.log(err);\r\n throw err;\r\n }\r\n};\r\n\r\nexport const getSearchResultsPage = function (page = state.search.page) {\r\n state.search.page = page;\r\n const start = (page - 1) * state.search.resultsPerPage; // 0\r\n const end = page * state.search.resultsPerPage; // 9\r\n return state.search.results.slice(start, end);\r\n};\r\n\r\nexport const updateServings = function (newServings) {\r\n state.recipe.ingredients.forEach(ing => {\r\n ing.quantity = (ing.quantity * newServings) / state.recipe.servings;\r\n });\r\n\r\n state.recipe.servings = newServings;\r\n};\r\n\r\nconst persistBookmarks = function () {\r\n localStorage.setItem('bookmarks', JSON.stringify(state.bookmarks));\r\n};\r\n\r\nexport const addBookmark = function (recipe) {\r\n // Add bookmark\r\n state.bookmarks.push(recipe);\r\n\r\n // Mark current recipe as bookmarked\r\n if (recipe.id === state.recipe.id) state.recipe.bookmarked = true;\r\n\r\n persistBookmarks();\r\n};\r\n\r\nexport const deleteBookmark = function (id) {\r\n const index = state.bookmarks.findIndex(el => el.id === id);\r\n // Remove bookmark\r\n state.bookmarks.splice(index, 1);\r\n\r\n // Unmark current recipe as bookmarked\r\n if (id === state.recipe.id) state.recipe.bookmarked = false;\r\n\r\n persistBookmarks();\r\n};\r\n\r\nexport const uploadRecipe = async function (newRecipe) {\r\n try {\r\n const ingredients = Object.entries(newRecipe)\r\n .filter(entry => entry[0].startsWith('ingredient') && entry[1] !== '')\r\n .map(ing => {\r\n const ingArr = ing[1].split(',').map(el => el.trim());\r\n\r\n if (ingArr.length !== 3)\r\n throw new Error(\r\n 'Wrong ingredient format! Please use the correct format 😊'\r\n );\r\n const [quantity, unit, description] = ingArr;\r\n return { quantity: +quantity || null, unit, description };\r\n });\r\n const recipe = {\r\n title: newRecipe.title,\r\n source_url: newRecipe.sourceUrl,\r\n image_url: newRecipe.image,\r\n publisher: newRecipe.publisher,\r\n cooking_time: newRecipe.cookingTime,\r\n servings: newRecipe.servings,\r\n ingredients,\r\n };\r\n const data = await AJAX(`${API_URL}?key=${API_KEY}`, recipe);\r\n\r\n state.recipe = createRecipeObject(data);\r\n addBookmark(state.recipe);\r\n console.log(data);\r\n } catch (err) {\r\n throw err;\r\n }\r\n};\r\n","export const API_URL = 'https://forkify-api.herokuapp.com/api/v2/recipes/';\r\nexport const TIMEOUT_SEC = 10;\r\nexport const RES_PER_PAGE = 10;\r\nexport const MODAL_CLOSE_SEC = 2.5;\r\nexport const API_KEY = '763e47ed-f380-4bd6-b269-09971a80bf7e';\r\n","import { TIMEOUT_SEC } from './config';\r\n\r\nconst timeout = function (s) {\r\n return new Promise(function (_, reject) {\r\n setTimeout(function () {\r\n reject(new Error(`Request took too long! Timeout after ${s} second`));\r\n }, s * 1000);\r\n });\r\n};\r\n\r\n// export const getJSON = async function (url) {\r\n// try {\r\n// const res = await Promise.race([fetch(url), timeout(TIMEOUT_SEC)]);\r\n// const data = await res.json();\r\n// if (!res.ok)\r\n// throw new Error(`${data.message} ${res.status} ${res.statusText}`);\r\n// return data;\r\n// } catch (err) {\r\n// throw err;\r\n// }\r\n// };\r\n\r\n// export const sendJSON = async function (url, uploadData) {\r\n// try {\r\n// const fetchPro = fetch(url, {\r\n// method: 'POST',\r\n// headers: {\r\n// 'content-Type': 'application/json',\r\n// },\r\n// body: JSON.stringify(uploadData),\r\n// });\r\n\r\n// const res = await Promise.race([fetchPro, timeout(TIMEOUT_SEC)]);\r\n// const data = await res.json();\r\n// if (!res.ok)\r\n// throw new Error(`${data.message} ${res.status} ${res.statusText}`);\r\n// return data;\r\n// } catch (err) {\r\n// throw err;\r\n// }\r\n// };\r\n\r\nexport const AJAX = async function (url, uploadData = undefined) {\r\n try {\r\n const fetchPro = uploadData\r\n ? fetch(url, {\r\n method: 'POST',\r\n headers: {\r\n 'content-Type': 'application/json',\r\n },\r\n body: JSON.stringify(uploadData),\r\n })\r\n : fetch(url);\r\n\r\n const res = await Promise.race([fetchPro, timeout(TIMEOUT_SEC)]);\r\n const data = await res.json();\r\n if (!res.ok)\r\n throw new Error(`${data.message} ${res.status} ${res.statusText}`);\r\n return data;\r\n } catch (err) {\r\n throw err;\r\n }\r\n};\r\n","import View from './view';\r\nimport icons from '../../img/icons.svg';\r\nimport { Fraction } from 'fractional';\r\n\r\nclass RecipeView extends View {\r\n _parentElement = document.querySelector('.recipe');\r\n _message = '';\r\n _errorMessage = 'We could not find that recipe. Please try another one!';\r\n\r\n // MVC: Publisher\r\n addHandlerRender(handler) {\r\n ['load', 'hashchange'].forEach(ev => window.addEventListener(ev, handler));\r\n }\r\n\r\n addHandlerUpdateServings(handler) {\r\n this._parentElement.addEventListener('click', function (e) {\r\n const btn = e.target.closest('.btn--update-servings');\r\n if (!btn) return;\r\n const { updateTo } = btn.dataset;\r\n +updateTo > 0 && handler(+updateTo);\r\n });\r\n }\r\n\r\n addHandlerAddBookmark(handler) {\r\n this._parentElement.addEventListener('click', function (e) {\r\n const btn = e.target.closest('.btn--bookmark');\r\n if (!btn) return;\r\n handler();\r\n });\r\n }\r\n\r\n _generateMarkup() {\r\n return `
    \r\n \r\n

    \r\n ${this._data.title}\r\n

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n \r\n ${this._data.cookingTime}\r\n minutes\r\n
    \r\n
    \r\n \r\n \r\n \r\n ${this._data.servings}\r\n servings\r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n

    Recipe ingredients

    \r\n
      \r\n ${this._data.ingredients.map(this._generateMarkupIngredient).join('')}\r\n
    \r\n
    \r\n\r\n
    \r\n

    How to cook it

    \r\n

    \r\n This recipe was carefully designed and tested by\r\n ${this._data.publisher}. Please\r\n check out directions at their website.\r\n

    \r\n \r\n Directions\r\n \r\n \r\n \r\n \r\n
    `;\r\n }\r\n\r\n _generateMarkupIngredient(ing) {\r\n return `\r\n
  • \r\n \r\n \r\n \r\n
    \r\n ${ing.quantity ? new Fraction(ing.quantity).toString() : ''}\r\n
    \r\n
    \r\n ${ing.unit}\r\n ${ing.description}\r\n
    \r\n
  • `;\r\n }\r\n}\r\n\r\nexport default new RecipeView();\r\n","import icons from '../../img/icons.svg';\r\n\r\nexport default class View {\r\n _data;\r\n\r\n /**\r\n *\r\n * @param {*} data\r\n * @returns\r\n *\r\n */\r\n render(data) {\r\n if (!data || (Array.isArray(data) && data.length === 0))\r\n return this.renderError();\r\n\r\n this._data = data;\r\n const markup = this._generateMarkup();\r\n\r\n // if (!render) return markup;\r\n\r\n this._clear();\r\n this._parentElement.insertAdjacentHTML('afterbegin', markup);\r\n }\r\n\r\n update(data) {\r\n this._data = data;\r\n const newMarkup = this._generateMarkup();\r\n\r\n // To create virtual dom\r\n const newDOM = document.createRange().createContextualFragment(newMarkup);\r\n const newElements = Array.from(newDOM.querySelectorAll('*'));\r\n\r\n const currElements = Array.from(this._parentElement.querySelectorAll('*'));\r\n\r\n newElements.forEach((newEl, i) => {\r\n const curEl = currElements[i];\r\n // Updates changed TEXT\r\n if (\r\n !newEl.isEqualNode(curEl) &&\r\n newEl.firstChild?.nodeValue.trim() !== ''\r\n ) {\r\n curEl.textContent = newEl.textContent;\r\n }\r\n\r\n // Updates changed ATTRIBUTES\r\n if (!newEl.isEqualNode(curEl)) {\r\n Array.from(newEl.attributes).forEach(attr =>\r\n curEl.setAttribute(attr.name, attr.value)\r\n );\r\n }\r\n });\r\n }\r\n\r\n _clear() {\r\n this._parentElement.innerHTML = '';\r\n }\r\n\r\n renderSpinner() {\r\n const markup = `\r\n
    \r\n \r\n \r\n \r\n
    `;\r\n this._clear();\r\n this._parentElement.insertAdjacentHTML('afterbegin', markup);\r\n }\r\n\r\n renderError(message = this._errorMessage) {\r\n const markup = `\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n

    ${message}

    \r\n
    \r\n `;\r\n this._clear();\r\n this._parentElement.insertAdjacentHTML('afterbegin', markup);\r\n }\r\n\r\n renderSuccess(message = this._message) {\r\n const markup = `\r\n
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n

    ${message}

    \r\n
    \r\n `;\r\n this._clear();\r\n this._parentElement.insertAdjacentHTML('afterbegin', markup);\r\n }\r\n}\r\n","module.exports = new __parcel__URL__(\"icons.c14567a0.svg\").toString();","/*\nfraction.js\nA Javascript fraction library.\n\nCopyright (c) 2009 Erik Garrison \n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n\n*/\n\n\n/* Fractions */\n/* \n *\n * Fraction objects are comprised of a numerator and a denomenator. These\n * values can be accessed at fraction.numerator and fraction.denomenator.\n *\n * Fractions are always returned and stored in lowest-form normalized format.\n * This is accomplished via Fraction.normalize.\n *\n * The following mathematical operations on fractions are supported:\n *\n * Fraction.equals\n * Fraction.add\n * Fraction.subtract\n * Fraction.multiply\n * Fraction.divide\n *\n * These operations accept both numbers and fraction objects. (Best results\n * are guaranteed when the input is a fraction object.) They all return a new\n * Fraction object.\n *\n * Usage:\n *\n * TODO\n *\n */\n\n/*\n * The Fraction constructor takes one of:\n * an explicit numerator (integer) and denominator (integer),\n * a string representation of the fraction (string),\n * or a floating-point number (float)\n *\n * These initialization methods are provided for convenience. Because of\n * rounding issues the best results will be given when the fraction is\n * constructed from an explicit integer numerator and denomenator, and not a\n * decimal number.\n *\n *\n * e.g. new Fraction(1, 2) --> 1/2\n * new Fraction('1/2') --> 1/2\n * new Fraction('2 3/4') --> 11/4 (prints as 2 3/4)\n *\n */\nFraction = function(numerator, denominator)\n{\n /* double argument invocation */\n if (typeof numerator !== 'undefined' && denominator) {\n if (typeof(numerator) === 'number' && typeof(denominator) === 'number') {\n this.numerator = numerator;\n this.denominator = denominator;\n } else if (typeof(numerator) === 'string' && typeof(denominator) === 'string') {\n // what are they?\n // hmm....\n // assume they are ints?\n this.numerator = parseInt(numerator);\n this.denominator = parseInt(denominator);\n }\n /* single-argument invocation */\n } else if (typeof denominator === 'undefined') {\n num = numerator; // swap variable names for legibility\n if (typeof(num) === 'number') { // just a straight number init\n this.numerator = num;\n this.denominator = 1;\n } else if (typeof(num) === 'string') {\n var a, b; // hold the first and second part of the fraction, e.g. a = '1' and b = '2/3' in 1 2/3\n // or a = '2/3' and b = undefined if we are just passed a single-part number\n var arr = num.split(' ')\n if (arr[0]) a = arr[0]\n if (arr[1]) b = arr[1]\n /* compound fraction e.g. 'A B/C' */\n // if a is an integer ...\n if (a % 1 === 0 && b && b.match('/')) {\n return (new Fraction(a)).add(new Fraction(b));\n } else if (a && !b) {\n /* simple fraction e.g. 'A/B' */\n if (typeof(a) === 'string' && a.match('/')) {\n // it's not a whole number... it's actually a fraction without a whole part written\n var f = a.split('/');\n this.numerator = f[0]; this.denominator = f[1];\n /* string floating point */\n } else if (typeof(a) === 'string' && a.match('\\.')) {\n return new Fraction(parseFloat(a));\n /* whole number e.g. 'A' */\n } else { // just passed a whole number as a string\n this.numerator = parseInt(a);\n this.denominator = 1;\n }\n } else {\n return undefined; // could not parse\n }\n }\n }\n this.normalize();\n}\n\n\nFraction.prototype.clone = function()\n{\n return new Fraction(this.numerator, this.denominator);\n}\n\n\n/* pretty-printer, converts fractions into whole numbers and fractions */\nFraction.prototype.toString = function()\n{\n if (this.denominator==='NaN') return 'NaN'\n var wholepart = (this.numerator/this.denominator>0) ?\n Math.floor(this.numerator / this.denominator) :\n Math.ceil(this.numerator / this.denominator)\n var numerator = this.numerator % this.denominator \n var denominator = this.denominator;\n var result = []; \n if (wholepart != 0) \n result.push(wholepart);\n if (numerator != 0) \n result.push(((wholepart===0) ? numerator : Math.abs(numerator)) + '/' + denominator);\n return result.length > 0 ? result.join(' ') : 0;\n}\n\n\n/* destructively rescale the fraction by some integral factor */\nFraction.prototype.rescale = function(factor)\n{\n this.numerator *= factor;\n this.denominator *= factor;\n return this;\n}\n\n\nFraction.prototype.add = function(b)\n{\n var a = this.clone();\n if (b instanceof Fraction) {\n b = b.clone();\n } else {\n b = new Fraction(b);\n }\n td = a.denominator;\n a.rescale(b.denominator);\n b.rescale(td);\n\n a.numerator += b.numerator;\n\n return a.normalize();\n}\n\n\nFraction.prototype.subtract = function(b)\n{\n var a = this.clone();\n if (b instanceof Fraction) {\n b = b.clone(); // we scale our argument destructively, so clone\n } else {\n b = new Fraction(b);\n }\n td = a.denominator;\n a.rescale(b.denominator);\n b.rescale(td);\n\n a.numerator -= b.numerator;\n\n return a.normalize();\n}\n\n\nFraction.prototype.multiply = function(b)\n{\n var a = this.clone();\n if (b instanceof Fraction)\n {\n a.numerator *= b.numerator;\n a.denominator *= b.denominator;\n } else if (typeof b === 'number') {\n a.numerator *= b;\n } else {\n return a.multiply(new Fraction(b));\n }\n return a.normalize();\n}\n\nFraction.prototype.divide = function(b)\n{\n var a = this.clone();\n if (b instanceof Fraction)\n {\n a.numerator *= b.denominator;\n a.denominator *= b.numerator;\n } else if (typeof b === 'number') {\n a.denominator *= b;\n } else {\n return a.divide(new Fraction(b));\n }\n return a.normalize();\n}\n\nFraction.prototype.equals = function(b)\n{\n if (!(b instanceof Fraction)) {\n b = new Fraction(b);\n }\n // fractions that are equal should have equal normalized forms\n var a = this.clone().normalize();\n var b = b.clone().normalize();\n return (a.numerator === b.numerator && a.denominator === b.denominator);\n}\n\n\n/* Utility functions */\n\n/* Destructively normalize the fraction to its smallest representation. \n * e.g. 4/16 -> 1/4, 14/28 -> 1/2, etc.\n * This is called after all math ops.\n */\nFraction.prototype.normalize = (function()\n{\n\n var isFloat = function(n)\n {\n return (typeof(n) === 'number' && \n ((n > 0 && n % 1 > 0 && n % 1 < 1) || \n (n < 0 && n % -1 < 0 && n % -1 > -1))\n );\n }\n\n var roundToPlaces = function(n, places) \n {\n if (!places) {\n return Math.round(n);\n } else {\n var scalar = Math.pow(10, places);\n return Math.round(n*scalar)/scalar;\n }\n }\n \n return (function() {\n\n // XXX hackish. Is there a better way to address this issue?\n //\n /* first check if we have decimals, and if we do eliminate them\n * multiply by the 10 ^ number of decimal places in the number\n * round the number to nine decimal places\n * to avoid js floating point funnies\n */\n if (isFloat(this.denominator)) {\n var rounded = roundToPlaces(this.denominator, 9);\n var scaleup = Math.pow(10, rounded.toString().split('.')[1].length);\n this.denominator = Math.round(this.denominator * scaleup); // this !!! should be a whole number\n //this.numerator *= scaleup;\n this.numerator *= scaleup;\n } \n if (isFloat(this.numerator)) {\n var rounded = roundToPlaces(this.numerator, 9);\n var scaleup = Math.pow(10, rounded.toString().split('.')[1].length);\n this.numerator = Math.round(this.numerator * scaleup); // this !!! should be a whole number\n //this.numerator *= scaleup;\n this.denominator *= scaleup;\n }\n var gcf = Fraction.gcf(this.numerator, this.denominator);\n this.numerator /= gcf;\n this.denominator /= gcf;\n if ((this.numerator < 0 && this.denominator < 0) || (this.numerator > 0 && this.denominator < 0)) {\n this.numerator *= -1;\n this.denominator *= -1;\n }\n return this;\n });\n\n})();\n\n\n/* Takes two numbers and returns their greatest common factor.\n */\nFraction.gcf = function(a, b)\n{\n\n var common_factors = [];\n var fa = Fraction.primeFactors(a);\n var fb = Fraction.primeFactors(b);\n // for each factor in fa\n // if it's also in fb\n // put it into the common factors\n fa.forEach(function (factor) \n { \n var i = fb.indexOf(factor);\n if (i >= 0) {\n common_factors.push(factor);\n fb.splice(i,1); // remove from fb\n }\n });\n\n if (common_factors.length === 0)\n return 1;\n\n var gcf = (function() {\n var r = common_factors[0];\n var i;\n for (i=1;i `
  • \r\n \r\n
    \r\n \"${result.title}\"\r\n
    \r\n
    \r\n

    ${result.title} ...

    \r\n

    ${result.publisher}

    \r\n \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n
  • `\r\n )\r\n .join('')}\r\n \r\n `;\r\n }\r\n}\r\n\r\nexport default new PreviewView();\r\n","import View from './view';\r\nimport icons from '../../img/icons.svg';\r\n\r\nclass PaginationView extends View {\r\n _parentElement = document.querySelector('.pagination');\r\n\r\n addHandlerClick(handler) {\r\n this._parentElement.addEventListener('click', function (e) {\r\n const btn = e.target.closest('.btn--inline');\r\n if (!btn) return;\r\n handler(+btn.dataset.goto);\r\n });\r\n }\r\n _generateMarkup() {\r\n const numPages = Math.ceil(\r\n this._data.results.length / this._data.resultsPerPage\r\n );\r\n const currPage = this._data.page;\r\n\r\n // Page 1, and there are other pages\r\n if (currPage === 1 && numPages > 1) {\r\n return `${this._generateButtonMarkup('next', currPage)}`;\r\n }\r\n\r\n // Last page\r\n if (currPage === numPages && numPages > 1) {\r\n return `${this._generateButtonMarkup('prev', currPage)}`;\r\n }\r\n\r\n // Other pages\r\n if (currPage > 1 && currPage < numPages) {\r\n return `${this._generateButtonMarkup('prev', currPage)}\r\n ${this._generateButtonMarkup('next', currPage)}`;\r\n }\r\n\r\n // Page 1, and there are no other pages\r\n return '';\r\n }\r\n\r\n _generateButtonMarkup(pos, currPage) {\r\n const position = pos === 'next' ? currPage + 1 : currPage - 1;\r\n return `\r\n \r\n ${\r\n pos === 'next'\r\n ? `Page ${position}\r\n \r\n \r\n `\r\n : `\r\n \r\n \r\n Page ${position}`\r\n }\r\n \r\n `;\r\n }\r\n}\r\n\r\nexport default new PaginationView();\r\n","import View from './view';\r\nimport previewView from './previewView';\r\nimport icons from '../../img/icons.svg';\r\n\r\nclass BookmarksView extends View {\r\n _parentElement = document.querySelector('.bookmarks__list');\r\n _message = '';\r\n _errorMessage = 'No bookmarks yet! 🤷‍♂️ Find a recipe to add to bookmarks 😊';\r\n\r\n addHandlerRender(handler) {\r\n window.addEventListener('load', handler);\r\n }\r\n\r\n _generateMarkup() {\r\n return previewView._generateMarkupPreview(this._data);\r\n }\r\n}\r\n\r\nexport default new BookmarksView();\r\n","import View from './view';\r\nimport icons from '../../img/icons.svg';\r\n\r\nclass AddRecipeView extends View {\r\n _parentElement = document.querySelector('.upload');\r\n _message = 'Recipe was successfully uploaded';\r\n\r\n _window = document.querySelector('.add-recipe-window');\r\n _overlay = document.querySelector('.overlay');\r\n _btnOpen = document.querySelector('.nav__btn--add-recipe');\r\n _btnClose = document.querySelector('.btn--close-modal');\r\n\r\n constructor() {\r\n super();\r\n this._addHandlerShowWindow();\r\n this._addHandlerHideWindow();\r\n }\r\n\r\n _addHandlerShowWindow() {\r\n this._btnOpen.addEventListener('click', this.toggleWindow.bind(this));\r\n }\r\n\r\n _addHandlerHideWindow() {\r\n this._overlay.addEventListener('click', this.toggleWindow.bind(this));\r\n this._btnClose.addEventListener('click', this.toggleWindow.bind(this));\r\n }\r\n\r\n toggleWindow() {\r\n this._overlay.classList.toggle('hidden');\r\n this._window.classList.toggle('hidden');\r\n }\r\n\r\n _addHandlerUpload(handler) {\r\n this._parentElement.addEventListener('submit', function (e) {\r\n e.preventDefault();\r\n const dataArr = [...new FormData(this)];\r\n const data = Object.fromEntries(dataArr);\r\n handler(data);\r\n });\r\n }\r\n _generateMarkup() {}\r\n}\r\n\r\nexport default new AddRecipeView();\r\n","/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n \"use strict\";\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; };\n var undefined; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n defineProperty(generator, \"_invoke\", { value: makeInvokeMethod(innerFn, self, context) });\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n defineProperty(Gp, \"constructor\", { value: GeneratorFunctionPrototype, configurable: true });\n defineProperty(\n GeneratorFunctionPrototype,\n \"constructor\",\n { value: GeneratorFunction, configurable: true }\n );\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n defineProperty(this, \"_invoke\", { value: enqueue });\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per GeneratorResume behavior specified since ES2015:\n // ES2015 spec, step 3: https://262.ecma-international.org/6.0/#sec-generatorresume\n // Latest spec, step 2: https://tc39.es/ecma262/#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method;\n var method = delegate.iterator[methodName];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method, or a missing .next method, always terminate the\n // yield* loop.\n context.delegate = null;\n\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (methodName === \"throw\" && delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n if (methodName !== \"return\") {\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a '\" + methodName + \"' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(val) {\n var object = Object(val);\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable != null) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n throw new TypeError(typeof iterable + \" is not iterable\");\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n"],"names":["name","version","isFloat","roundToPlaces","$6d99163b6684d050$export$2d1720544b23b823","$1e0782be6903ea7b$export$2d1720544b23b823","$998d968a5e32cd49$var$match","$998d968a5e32cd49$var$version","$2d0ac3aa5e39584b$export$2d1720544b23b823","$3a8bcef306e86159$var$set","$3a8bcef306e86159$var$get","$3a8bcef306e86159$var$has","$f6c32256739dd9b5$export$2d1720544b23b823","$0ed66cde5c449819$export$2d1720544b23b823","$a393da0e05d61ed1$var$$location","$a393da0e05d61ed1$var$defer","$a393da0e05d61ed1$var$channel","$a393da0e05d61ed1$var$port","$d6b4c6d58e0c0c19$export$b336c2702c498be5","$parcel$global","globalThis","$parcel$interopDefault","a","__esModule","default","$ca3e1754e676956d$exports","$55b335199d6e6d5d$exports","$55b335199d6e6d5d$var$check","it","Math","window","self","Function","$ef322a7f89c3ed41$exports","$6140c9fa18232846$exports","exec","error","Object","defineProperty","get","$881ad37dbe259e8f$exports","$bcbe62e89adc7d37$exports","test","bind","hasOwnProperty","$881ad37dbe259e8f$var$call","prototype","call","apply","arguments","$1e0782be6903ea7b$var$$propertyIsEnumerable","propertyIsEnumerable","$1e0782be6903ea7b$var$getOwnPropertyDescriptor","getOwnPropertyDescriptor","$1e0782be6903ea7b$var$NASHORN_BUG","V","descriptor","enumerable","$b66966b48674609b$exports","bitmap","value","configurable","writable","$4d273c9d7e1bdf46$exports","$8239f4c7c6082668$exports","$43b18aa2f1faac44$exports","$43b18aa2f1faac44$var$FunctionPrototype","$43b18aa2f1faac44$var$call","$43b18aa2f1faac44$var$uncurryThisWithBind","$b0ba63bfbfb16088$exports","$b0ba63bfbfb16088$var$toString","fn","toString","$b0ba63bfbfb16088$var$stringSlice","slice","$8239f4c7c6082668$var$$Object","$8239f4c7c6082668$var$split","split","$c378177673193450$exports","$7ce250ddf7b42d4d$exports","$c378177673193450$var$$TypeError","TypeError","$7f19acfe53927f5c$exports","$8ffb6b36a733d3c0$exports","$6a130d390db46c8e$exports","$70e34a5a2021f756$exports","$70e34a5a2021f756$var$documentAll","document","all","undefined","argument","$0b429cc7792c7d26$exports","$a5217dbd1b0d33ce$exports","namespace","method","length","$41cc576e850a251e$exports","isPrototypeOf","$47f18b427c2fbabf$exports","$4a39565fee8fe980$exports","$998d968a5e32cd49$exports","$492c6dc902f2bf18$exports","navigator","String","userAgent","$998d968a5e32cd49$var$process","process","$998d968a5e32cd49$var$Deno","Deno","$998d968a5e32cd49$var$versions","versions","$998d968a5e32cd49$var$v8","v8","match","$4a39565fee8fe980$var$$String","getOwnPropertySymbols","symbol","Symbol","sham","iterator","$0b429cc7792c7d26$var$$Object","$Symbol","$eb80dcd0b8a5698c$exports","$ae485921c5498156$exports","$8f0ebae34f61e14c$exports","$8f0ebae34f61e14c$var$$String","$ae485921c5498156$var$$TypeError","P","func","$b0f812e443807cb5$exports","$b0f812e443807cb5$var$$TypeError","input","pref","val","valueOf","$1946b9b54b48e7fd$exports","$d00d03e557d638db$exports","$e0409817d4e03fc4$exports","$4ce407c7007beb63$exports","$4ce407c7007beb63$var$defineProperty","key","$d00d03e557d638db$var$SHARED","$d00d03e557d638db$var$store","push","mode","copyright","license","source","$1f868a26fd901990$exports","$a2f3ebb5da11db12$exports","$a2f3ebb5da11db12$var$$Object","$1f868a26fd901990$var$hasOwnProperty","hasOwn","$5e0a1e292f79defc$exports","$5e0a1e292f79defc$var$id","$5e0a1e292f79defc$var$postfix","random","$5e0a1e292f79defc$var$toString","$842f8f0a18746212$var$Symbol","$842f8f0a18746212$var$WellKnownSymbolsStore","$842f8f0a18746212$var$createWellKnownSymbol","withoutSetter","$8ffb6b36a733d3c0$var$$TypeError","$8ffb6b36a733d3c0$var$TO_PRIMITIVE","result","exoticToPrim","$d45526d8245cb22c$exports","$15c0c414b89100b1$exports","$15c0c414b89100b1$var$document","$15c0c414b89100b1$var$EXISTS","createElement","$6d99163b6684d050$var$$getOwnPropertyDescriptor","O","$8693737507995841$exports","$161a89d67c436ccf$exports","$c845d421b7b0e630$exports","$c845d421b7b0e630$var$$String","$c845d421b7b0e630$var$$TypeError","$2d0ac3aa5e39584b$var$$TypeError","$2d0ac3aa5e39584b$var$$defineProperty","$2d0ac3aa5e39584b$var$$getOwnPropertyDescriptor","$2d0ac3aa5e39584b$var$ENUMERABLE","$2d0ac3aa5e39584b$var$CONFIGURABLE","$2d0ac3aa5e39584b$var$WRITABLE","Attributes","current","object","$40e957865125f98f$exports","$09c56ff2ae09b2d7$exports","$81c64883d194e3b4$var$FunctionPrototype","$81c64883d194e3b4$var$getDescriptor","$81c64883d194e3b4$var$CONFIGURABLE","$81c64883d194e3b4$var$EXISTS","$9990f6f719f26a96$exports","$9990f6f719f26a96$var$functionToString","inspectSource","$3a8bcef306e86159$exports","$47d53bb84a8f3c5b$exports","$47d53bb84a8f3c5b$var$WeakMap","WeakMap","$834abcf0f8f3f871$exports","$834abcf0f8f3f871$var$keys","$9f571a3f3d135e31$exports","$3a8bcef306e86159$var$OBJECT_ALREADY_INITIALIZED","$3a8bcef306e86159$var$TypeError","$3a8bcef306e86159$var$WeakMap","state","$3a8bcef306e86159$var$store","has","set","metadata","facade","$3a8bcef306e86159$var$STATE","$09c56ff2ae09b2d7$var$enforceInternalState","enforce","getterFor","TYPE","type","$09c56ff2ae09b2d7$var$getInternalState","$09c56ff2ae09b2d7$var$$String","$09c56ff2ae09b2d7$var$defineProperty","$09c56ff2ae09b2d7$var$stringSlice","$09c56ff2ae09b2d7$var$replace","replace","$09c56ff2ae09b2d7$var$join","join","$09c56ff2ae09b2d7$var$CONFIGURABLE_LENGTH","$09c56ff2ae09b2d7$var$TEMPLATE","$09c56ff2ae09b2d7$var$makeBuiltIn","options","getter","setter","$09c56ff2ae09b2d7$require$CONFIGURABLE_FUNCTION_NAME","arity","constructor","simple","global","unsafe","nonConfigurable","nonWritable","$ef14b437ba65973a$exports","$339f2419d379e6c2$exports","$c4fba4611365c4f5$exports","$1ef9432c43157f41$exports","$b5bb21648546ce5b$exports","$5395b5a4913a5e32$exports","$5395b5a4913a5e32$var$ceil","ceil","$5395b5a4913a5e32$var$floor","floor","trunc","x","n","number","$1ef9432c43157f41$var$max","max","$1ef9432c43157f41$var$min","min","index","integer","$04c91bd3815cd64a$exports","$4aba983aae3daed3$exports","$4aba983aae3daed3$var$min","len","obj","$f00609c516640f24$var$createMethod","IS_INCLUDES","$this","el","fromIndex","$c4fba4611365c4f5$require$indexOf","$f00609c516640f24$exports","includes","indexOf","$c4fba4611365c4f5$var$push","names","i","$f6c32256739dd9b5$var$hiddenKeys","$e73f13f1d8a17cad$exports","concat","getOwnPropertyNames","$339f2419d379e6c2$var$concat","keys","target","exceptions","$ca268db110e9e457$exports","$ca268db110e9e457$var$replacement","$ca268db110e9e457$var$isForced","feature","detection","$ca268db110e9e457$var$data","$ca268db110e9e457$var$normalize","$ca268db110e9e457$var$POLYFILL","$ca268db110e9e457$var$NATIVE","normalize","string","toLowerCase","data","NATIVE","POLYFILL","targetProperty","sourceProperty","TARGET","GLOBAL","STATIC","stat","dontCallGetSet","$ca3e1754e676956d$require$getOwnPropertyDescriptor","forced","$a393da0e05d61ed1$exports","$3cdb2ef65d8e3cb5$exports","$3cdb2ef65d8e3cb5$var$FunctionPrototype","$3cdb2ef65d8e3cb5$var$apply","$3cdb2ef65d8e3cb5$var$call","Reflect","$43284f0171045916$exports","$4828cb1b4c7586c8$exports","$43284f0171045916$var$bind","that","$b8ce1ad1b6b1e7c1$exports","$0709cba658bb4ed6$exports","$7d824954c5058f7d$exports","$7d824954c5058f7d$var$$TypeError","passed","required","$05f68a2417343639$exports","$3f8bc2b5488269f3$exports","$a393da0e05d61ed1$var$set","setImmediate","$a393da0e05d61ed1$var$clear","clearImmediate","$a393da0e05d61ed1$var$process","$a393da0e05d61ed1$var$Dispatch","Dispatch","$a393da0e05d61ed1$var$Function","$a393da0e05d61ed1$var$MessageChannel","MessageChannel","$a393da0e05d61ed1$var$String","$a393da0e05d61ed1$var$counter","$a393da0e05d61ed1$var$queue","$a393da0e05d61ed1$var$ONREADYSTATECHANGE","location","$a393da0e05d61ed1$var$run","id","$a393da0e05d61ed1$var$runner","$a393da0e05d61ed1$var$eventListener","event","$a393da0e05d61ed1$var$globalPostMessageDefer","postMessage","protocol","host","handler","args","nextTick","now","port2","port1","onmessage","addEventListener","importScripts","appendChild","removeChild","setTimeout","$99b55bbd56d52729$require$clearImmediate","clear","$e55ac54d5aaa2e1c$require$setTask","$f112a170991e44cc$exports","$99637759dc933969$exports","Bun","$f112a170991e44cc$var$Function","$f112a170991e44cc$var$WRAP","scheduler","hasTimeArg","firstParamIndex","timeout","boundArgs","params","callback","$e55ac54d5aaa2e1c$var$setImmediate","$ba30e20475feac5a$export$923ea8233b386e99","$ba30e20475feac5a$export$a9861bd62f48e142","$bd02c871d9c5ba8e$export$2b3ff41fecbef7c8","url","uploadData","fetchPro","fetch","headers","body","JSON","stringify","res","Promise","race","_","reject","Error","s","json","ok","message","status","statusText","err","$0f1d4402dffacf5b$export$ca000e230c0caa3e","recipe","search","query","results","resultsPerPage","page","bookmarks","parse","localStorage","getItem","$0f1d4402dffacf5b$var$createRecipeObject","title","publisher","sourceUrl","source_url","image","image_url","servings","cookingTime","cooking_time","ingredients","$0f1d4402dffacf5b$export$b96725c7a035d60b","some","bookmark","bookmarked","console","$0f1d4402dffacf5b$export$202b8e5cb363a0c4","log","recipes","map","rec","$0f1d4402dffacf5b$export$8d7f79465139ab72","start","end","$0f1d4402dffacf5b$export$5e23f4642ecad5ea","newServings","forEach","ing","quantity","$0f1d4402dffacf5b$var$persistBookmarks","setItem","$0f1d4402dffacf5b$export$72009cc673d27d80","$0f1d4402dffacf5b$export$136048bcb9946c75","findIndex","splice","$0f1d4402dffacf5b$export$d660c2254e74960d","newRecipe","entries","filter","entry","startsWith","ingArr","trim","unit","description","$040c8022a0d92e23$exports","URL","$b2d7157267813d3a$export$2e2bcd8739ae039","_data","render","Array","isArray","renderError","markup","_generateMarkup","_clear","_parentElement","insertAdjacentHTML","update","newMarkup","newElements","from","newDOM","createRange","createContextualFragment","querySelectorAll","currElements","newEl","curEl","isEqualNode","firstChild","nodeValue","textContent","attributes","attr","setAttribute","innerHTML","renderSpinner","_errorMessage","renderSuccess","_message","Fraction","numerator","denominator","parseInt","num","b","arr","add","f","parseFloat","clone","wholepart","abs","rescale","factor","td","subtract","multiply","divide","equals","places","round","scalar","pow","rounded","scaleup","gcf","common_factors","fa","primeFactors","fb","r","num1","factors","_factor","$d14dc0f178617192$var$RecipeView","querySelector","addHandlerRender","ev","addHandlerUpdateServings","e","btn","closest","updateTo","dataset","addHandlerAddBookmark","_generateMarkupIngredient","$d14dc0f178617192$export$2e2bcd8739ae039","$813cf99795e9ec97$var$SearchView","parentElement","getQuery","clearInput","addHandlerSubmit","preventDefault","$813cf99795e9ec97$export$2e2bcd8739ae039","$a68ceb92eae160df$export$2e2bcd8739ae039","_generateMarkupPreview","hash","$dddbd0b30676c4ae$var$ResultView","$dddbd0b30676c4ae$export$2e2bcd8739ae039","$cfa940594ee109f7$var$PaginationView","addHandlerClick","goto","numPages","currPage","_generateButtonMarkup","pos","position","$cfa940594ee109f7$export$2e2bcd8739ae039","$5d1bb7e064b2cbd1$var$BookmarksView","$5d1bb7e064b2cbd1$export$2e2bcd8739ae039","$e5dc5dc5ede8bdf4$var$AddRecipeView","_window","_overlay","_btnOpen","_btnClose","_addHandlerShowWindow","_addHandlerHideWindow","toggleWindow","classList","toggle","_addHandlerUpload","fromEntries","FormData","$e5dc5dc5ede8bdf4$export$2e2bcd8739ae039","$7238a34a955809b2$var$runtime","exports","Op","desc","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","wrap","innerFn","outerFn","tryLocsList","context","generator","create","protoGenerator","Generator","Context","GenStateSuspendedStart","arg","GenStateExecuting","GenStateCompleted","done","delegate","delegateResult","maybeInvokeDelegate","methodName","ContinueSentinel","record","tryCatch","info","resultName","next","nextLoc","sent","_sent","dispatchException","abrupt","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","resolve","invoke","__await","then","unwrapped","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","displayName","isGeneratorFunction","genFun","ctor","mark","setPrototypeOf","__proto__","awrap","async","iter","reverse","pop","skipTempReset","prev","charAt","stop","rootRecord","rootEntry","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","$f50bd1f2915ed0f2$var$controlRecipes","$f50bd1f2915ed0f2$var$controlSearchResults","$f50bd1f2915ed0f2$var$controlAddRecipe","history","pushState","goToPage"],"version":3,"file":"index.6cd0e77f.js.map"} \ No newline at end of file diff --git a/dist/index.7586cd7f.js b/docs/index.7586cd7f.js similarity index 100% rename from dist/index.7586cd7f.js rename to docs/index.7586cd7f.js diff --git a/dist/index.7586cd7f.js.map b/docs/index.7586cd7f.js.map similarity index 100% rename from dist/index.7586cd7f.js.map rename to docs/index.7586cd7f.js.map diff --git a/docs/index.e55c1d8e.css b/docs/index.e55c1d8e.css new file mode 100644 index 0000000..97fa5f2 --- /dev/null +++ b/docs/index.e55c1d8e.css @@ -0,0 +1,2 @@ +*{margin:0;padding:0}*,:before,:after{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}@media only screen and (width<=61.25em){html{font-size:50%}}body{color:#615551;background-image:linear-gradient(to bottom right,#fbdb89,#f48982);background-repeat:no-repeat;background-size:cover;min-height:calc(100vh - 8vw);font-family:Nunito Sans,sans-serif;font-weight:400;line-height:1.6}.container{background-color:#fff;border-radius:9px;grid-template:"head head"10rem"list recipe"minmax(100rem,auto)/1fr 2fr;max-width:120rem;min-height:117rem;margin:4vw auto;display:grid;overflow:hidden;box-shadow:0 2rem 6rem .5rem #61555133}@media only screen and (width<=78.15em){.container{border-radius:0;max-width:100%;margin:0}}.btn--small,.btn--small:link,.btn--small:visited,.btn{text-transform:uppercase;color:#fff;cursor:pointer;background-image:linear-gradient(to bottom right,#fbdb89,#f48982);border:none;border-radius:10rem;align-items:center;transition:all .2s;display:flex}.btn--small:hover,.btn:hover{transform:scale(1.05)}.btn--small:focus,.btn:focus{outline:none}.btn--small>:first-child,.btn>:first-child{margin-right:1rem}.btn{padding:1.5rem 4rem;font-size:1.5rem;font-weight:600}.btn svg{fill:currentColor;width:2.25rem;height:2.25rem}.btn--small,.btn--small:link,.btn--small:visited{padding:1.25rem 2.25rem;font-size:1.4rem;font-weight:600;text-decoration:none}.btn--small svg,.btn--small:link svg,.btn--small:visited svg{fill:currentColor;width:1.75rem;height:1.75rem}.btn--inline{color:#f38e82;cursor:pointer;background-color:#f9f5f3;border:none;border-radius:10rem;align-items:center;padding:.8rem 1.2rem;font-size:1.3rem;font-weight:600;transition:all .2s;display:flex}.btn--inline svg{fill:currentColor;width:1.6rem;height:1.6rem;margin:0 .2rem}.btn--inline span{margin:0 .4rem}.btn--inline:hover{color:#f48982;background-color:#f2efee}.btn--inline:focus{outline:none}.btn--round{cursor:pointer;background-image:linear-gradient(to bottom right,#fbdb89,#f48982);border:none;border-radius:50%;justify-content:center;align-items:center;width:4.5rem;height:4.5rem;transition:all .2s;display:flex}.btn--round:hover{transform:scale(1.07)}.btn--round:focus{outline:none}.btn--round svg{fill:#fff;width:2.5rem;height:2.5rem}.btn--tiny{cursor:pointer;background:0 0;border:none;width:2rem;height:2rem}.btn--tiny svg{fill:#f38e82;width:100%;height:100%;transition:all .3s}.btn--tiny:focus{outline:none}.btn--tiny:hover svg{fill:#f48982;transform:translateY(-1px)}.btn--tiny:active svg{fill:#f48982;transform:translateY(0)}.btn--tiny:not(:last-child){margin-right:.3rem}.heading--2{color:#f38e82;text-transform:uppercase;text-align:center;margin-bottom:2.5rem;font-size:2rem;font-weight:700}.link:link,.link:visited{color:#918581}.spinner{text-align:center;margin:5rem auto}.spinner svg{fill:#f38e82;width:6rem;height:6rem;animation:2s linear infinite rotate}@keyframes rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.message,.error{max-width:40rem;margin:0 auto;padding:5rem 4rem;display:flex}.message svg,.error svg{fill:#f38e82;width:3rem;height:3rem;transform:translateY(-.3rem)}.message p,.error p{margin-left:1.5rem;font-size:1.8rem;font-weight:600;line-height:1.5}.header{background-color:#f9f5f3;grid-area:head;justify-content:space-between;align-items:center;display:flex}.header__logo{height:4.6rem;margin-left:4rem;display:block}.search{background-color:#fff;border-radius:10rem;align-items:center;padding-left:3rem;transition:all .3s;display:flex}.search:focus-within{transform:translateY(-2px);box-shadow:0 .7rem 3rem #61555114}.search__field{color:inherit;background:0 0;border:none;width:30rem;font-family:inherit;font-size:1.7rem}.search__field:focus{outline:none}.search__field::placeholder{color:#d3c7c3}@media only screen and (width<=61.25em){.search__field{width:auto}.search__field::placeholder{color:#fff}}.search__btn{font-family:inherit;font-weight:600}.nav{align-self:stretch;margin-right:2.5rem}.nav__list{height:100%;list-style:none;display:flex}.nav__item{position:relative}.nav__btn{color:inherit;text-transform:uppercase;cursor:pointer;background:0 0;border:none;align-items:center;height:100%;padding:0 1.5rem;font-family:inherit;font-size:1.4rem;font-weight:700;transition:all .3s;display:flex}.nav__btn svg{fill:#f38e82;width:2.4rem;height:2.4rem;margin-right:.7rem;transform:translateY(-1px)}.nav__btn:focus{outline:none}.nav__btn:hover{background-color:#f2efee}.bookmarks{z-index:10;visibility:hidden;opacity:0;background-color:#fff;width:40rem;padding:1rem 0;transition:all .5s .2s;position:absolute;right:-2.5rem;box-shadow:0 .8rem 5rem 2rem #6155511a}.bookmarks__list{list-style:none}.bookmarks__field{cursor:pointer;align-items:center;height:100%;padding:0 4rem;transition:all .3s;display:flex}.bookmarks__field:hover{background-color:#f2efee}.bookmarks:hover,.nav__btn--bookmarks:hover+.bookmarks{visibility:visible;opacity:1}.preview__link:link,.preview__link:visited{border-right:1px solid #fff;align-items:center;padding:1.5rem 3.25rem;text-decoration:none;transition:all .3s;display:flex}.preview__link:hover{background-color:#f9f5f3;transform:translateY(-2px)}.preview__link--active{background-color:#f9f5f3}.preview__fig{backface-visibility:hidden;border-radius:50%;flex:0 0 5.8rem;height:5.8rem;margin-right:2rem;position:relative;overflow:hidden}.preview__fig:before{content:"";opacity:.4;background-image:linear-gradient(to bottom right,#fbdb89,#f48982);width:100%;height:100%;display:block;position:absolute;top:0;left:0}.preview__fig img{object-fit:cover;width:100%;height:100%;transition:all .3s;display:block}.preview__data{grid-template-columns:1fr 2rem;align-items:center;row-gap:.1rem;width:100%;display:grid}.preview__title{color:#f38e82;text-transform:uppercase;text-overflow:ellipsis;white-space:nowrap;grid-column:1/-1;max-width:25rem;font-size:1.45rem;font-weight:600;overflow:hidden}.preview__publisher{color:#918581;text-transform:uppercase;font-size:1.15rem;font-weight:600}.preview__user-generated{background-color:#eeeae8;border-radius:10rem;justify-content:center;align-items:center;width:2rem;height:2rem;margin-left:auto;margin-right:1.75rem;display:flex}.preview__user-generated svg{fill:#f38e82;width:1.2rem;height:1.2rem}.search-results{flex-direction:column;padding:3rem 0;display:flex}.results{margin-bottom:2rem;list-style:none}.pagination{margin-top:auto;padding:0 3.5rem}.pagination:after{content:"";clear:both;display:table}.pagination__btn--prev{float:left}.pagination__btn--next{float:right}.copyright{color:#918581;margin-top:4rem;padding:0 3.5rem;font-size:1.2rem}.copyright .twitter-link:link,.copyright .twitter-link:visited{color:#918581}.recipe{background-color:#f9f5f3}.recipe__fig{transform-origin:top;height:32rem;position:relative}.recipe__fig:before{content:"";opacity:.6;background-image:linear-gradient(to bottom right,#fbdb89,#f48982);width:100%;height:100%;display:block;position:absolute;top:0;left:0}.recipe__img{object-fit:cover;width:100%;height:100%;display:block}.recipe__title{color:#fff;text-transform:uppercase;text-align:center;width:50%;font-size:3.25rem;font-weight:700;line-height:1.95;position:absolute;bottom:0;left:50%;transform:translate(-50%,20%)skewY(-6deg)}.recipe__title span{-webkit-box-decoration-break:clone;box-decoration-break:clone;background-image:linear-gradient(to bottom right,#fbdb89,#f48982);padding:1.3rem 2rem}@media only screen and (width<=61.25em){.recipe__title{width:70%}}.recipe__details{align-items:center;padding:7.5rem 8rem 3.5rem;display:flex}.recipe__info{text-transform:uppercase;align-items:center;font-size:1.65rem;display:flex}.recipe__info:not(:last-child){margin-right:4.5rem}.recipe__info-icon{fill:#f38e82;width:2.35rem;height:2.35rem;margin-right:1.15rem}.recipe__info-data{margin-right:.5rem;font-weight:700}.recipe__info-buttons{margin-left:1.6rem;display:flex;transform:translateY(-1px)}.recipe__user-generated{background-color:#eeeae8;border-radius:10rem;justify-content:center;align-items:center;width:4rem;height:4rem;margin-left:auto;margin-right:1.75rem;display:flex}.recipe__user-generated svg{fill:#f38e82;width:2.25rem;height:2.25rem}.recipe__ingredients{background-color:#f2efee;flex-direction:column;align-items:center;padding:5rem 8rem;font-size:1.6rem;line-height:1.4;display:flex}.recipe__ingredient-list{grid-template-columns:1fr 1fr;gap:2.5rem 3rem;list-style:none;display:grid}.recipe__ingredient{display:flex}.recipe__icon{fill:#f38e82;flex:none;width:2rem;height:2rem;margin-top:.1rem;margin-right:1.1rem}.recipe__quantity{flex:none;margin-right:.5rem}.recipe__directions{flex-direction:column;align-items:center;padding:5rem 10rem;display:flex}.recipe__directions-text{text-align:center;color:#918581;margin-bottom:3.5rem;font-size:1.7rem}.recipe__publisher{font-weight:700}.add-recipe-window{z-index:1000;background-color:#fff;border-radius:9px;width:100rem;padding:5rem 6rem;transition:all .5s;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);box-shadow:0 4rem 6rem #00000040}.add-recipe-window .btn--close-modal{color:inherit;cursor:pointer;background:0 0;border:none;font-family:inherit;font-size:3.5rem;position:absolute;top:.5rem;right:1.6rem}.overlay{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;background-color:#0006;width:100%;height:100%;transition:all .5s;position:fixed;top:0;left:0}.hidden{visibility:hidden;opacity:0}.upload{grid-template-columns:1fr 1fr;gap:4rem 6rem;display:grid}.upload__column{grid-template-columns:1fr 2.8fr;align-items:center;gap:1.5rem;display:grid}.upload__column label{color:inherit;font-size:1.5rem;font-weight:600}.upload__column input{border:1px solid #ddd;border-radius:.5rem;padding:.8rem 1rem;font-size:1.5rem;transition:all .2s}.upload__column input::placeholder{color:#d3c7c3}.upload__column input:focus{background-color:#f9f5f3;border:1px solid #f38e82;outline:none}.upload__column button{grid-column:1/span 2;justify-self:center;margin-top:1rem}.upload__heading{text-transform:uppercase;grid-column:1/-1;margin-bottom:1rem;font-size:2.25rem;font-weight:700}.upload__btn{grid-column:1/-1;justify-self:center} +/*# sourceMappingURL=index.e55c1d8e.css.map */ diff --git a/docs/index.e55c1d8e.css.map b/docs/index.e55c1d8e.css.map new file mode 100644 index 0000000..8fb8980 --- /dev/null +++ b/docs/index.e55c1d8e.css.map @@ -0,0 +1 @@ +{"mappings":"ACkBA,qBAKA,oCAMA,2CAIE,wCAJF,oBASA,uOAWA,iPAgBE,wCAhBF,oDCjDA,8PAWE,mDAIA,0CAIA,6DAKF,0DAOE,wDAQA,+HAUE,4GAQJ,4MAcE,6EAOA,iCAIA,0DAKA,gCAKF,gOAcE,wCAIA,+BAIA,qDAOF,4EAOE,sEAOA,8BAIA,6DAKA,2DAKA,+CAKF,yHAUA,uCAKA,4CAIE,qFAQF,sEAUA,6EAQE,yFAOA,wFC9MF,8GAOE,2DAOF,uHAQE,kFAKA,yGAQE,kCAIA,0CAIA,wCAhBF,0BAmBI,wCAMJ,iDAMF,4CAIE,oDAMA,6BAIA,gOAgBE,oGAQA,6BAIA,yCAMJ,iMAcE,iCAIA,+GASE,iDAKF,oFCxIE,sKAUA,yEAKA,gDAKF,6IASE,iLAgBA,2FASF,uGAQA,oLAcA,6FAOA,0LAaE,qEClGJ,kEAMA,4CAKA,6CAIE,sDAOE,kCAGA,mCAMJ,2EAME,6ECrCF,iCAKE,iEAME,gLAiBF,mEAOA,gNAaE,wKAWA,wCAxBF,0BA+BA,4EAMA,yFAME,mDAKF,kFAOA,sDAKA,iFAMA,yLAaE,sEASF,uJAUA,oGAOA,iCAIA,iGASA,+CAOA,6FAQA,+FAOA,mCC/KF,0NAcE,2KAaF,8KAYA,oCAKA,iEAKE,2FAME,qEAMA,uHAOE,iDAIA,2FAOF,gFAOF,gHAQA","sources":["index.e55c1d8e.css","src/sass/_base.scss","src/sass/_components.scss","src/sass/_header.scss","src/sass/_preview.scss","src/sass/_searchResults.scss","src/sass/_recipe.scss","src/sass/_upload.scss"],"sourcesContent":["* {\n margin: 0;\n padding: 0;\n}\n\n*, :before, :after {\n box-sizing: inherit;\n}\n\nhtml {\n box-sizing: border-box;\n font-size: 62.5%;\n}\n\n@media only screen and (width <= 61.25em) {\n html {\n font-size: 50%;\n }\n}\n\nbody {\n color: #615551;\n background-image: linear-gradient(to bottom right, #fbdb89, #f48982);\n background-repeat: no-repeat;\n background-size: cover;\n min-height: calc(100vh - 8vw);\n font-family: Nunito Sans, sans-serif;\n font-weight: 400;\n line-height: 1.6;\n}\n\n.container {\n background-color: #fff;\n border-radius: 9px;\n grid-template: \"head head\" 10rem\n \"list recipe\" minmax(100rem, auto)\n / 1fr 2fr;\n max-width: 120rem;\n min-height: 117rem;\n margin: 4vw auto;\n display: grid;\n overflow: hidden;\n box-shadow: 0 2rem 6rem .5rem #61555133;\n}\n\n@media only screen and (width <= 78.15em) {\n .container {\n border-radius: 0;\n max-width: 100%;\n margin: 0;\n }\n}\n\n.btn--small, .btn--small:link, .btn--small:visited, .btn {\n text-transform: uppercase;\n color: #fff;\n cursor: pointer;\n background-image: linear-gradient(to bottom right, #fbdb89, #f48982);\n border: none;\n border-radius: 10rem;\n align-items: center;\n transition: all .2s;\n display: flex;\n}\n\n.btn--small:hover, .btn:hover {\n transform: scale(1.05);\n}\n\n.btn--small:focus, .btn:focus {\n outline: none;\n}\n\n.btn--small > :first-child, .btn > :first-child {\n margin-right: 1rem;\n}\n\n.btn {\n padding: 1.5rem 4rem;\n font-size: 1.5rem;\n font-weight: 600;\n}\n\n.btn svg {\n fill: currentColor;\n width: 2.25rem;\n height: 2.25rem;\n}\n\n.btn--small, .btn--small:link, .btn--small:visited {\n padding: 1.25rem 2.25rem;\n font-size: 1.4rem;\n font-weight: 600;\n text-decoration: none;\n}\n\n.btn--small svg, .btn--small:link svg, .btn--small:visited svg {\n fill: currentColor;\n width: 1.75rem;\n height: 1.75rem;\n}\n\n.btn--inline {\n color: #f38e82;\n cursor: pointer;\n background-color: #f9f5f3;\n border: none;\n border-radius: 10rem;\n align-items: center;\n padding: .8rem 1.2rem;\n font-size: 1.3rem;\n font-weight: 600;\n transition: all .2s;\n display: flex;\n}\n\n.btn--inline svg {\n fill: currentColor;\n width: 1.6rem;\n height: 1.6rem;\n margin: 0 .2rem;\n}\n\n.btn--inline span {\n margin: 0 .4rem;\n}\n\n.btn--inline:hover {\n color: #f48982;\n background-color: #f2efee;\n}\n\n.btn--inline:focus {\n outline: none;\n}\n\n.btn--round {\n cursor: pointer;\n background-image: linear-gradient(to bottom right, #fbdb89, #f48982);\n border: none;\n border-radius: 50%;\n justify-content: center;\n align-items: center;\n width: 4.5rem;\n height: 4.5rem;\n transition: all .2s;\n display: flex;\n}\n\n.btn--round:hover {\n transform: scale(1.07);\n}\n\n.btn--round:focus {\n outline: none;\n}\n\n.btn--round svg {\n fill: #fff;\n width: 2.5rem;\n height: 2.5rem;\n}\n\n.btn--tiny {\n cursor: pointer;\n background: none;\n border: none;\n width: 2rem;\n height: 2rem;\n}\n\n.btn--tiny svg {\n fill: #f38e82;\n width: 100%;\n height: 100%;\n transition: all .3s;\n}\n\n.btn--tiny:focus {\n outline: none;\n}\n\n.btn--tiny:hover svg {\n fill: #f48982;\n transform: translateY(-1px);\n}\n\n.btn--tiny:active svg {\n fill: #f48982;\n transform: translateY(0);\n}\n\n.btn--tiny:not(:last-child) {\n margin-right: .3rem;\n}\n\n.heading--2 {\n color: #f38e82;\n text-transform: uppercase;\n text-align: center;\n margin-bottom: 2.5rem;\n font-size: 2rem;\n font-weight: 700;\n}\n\n.link:link, .link:visited {\n color: #918581;\n}\n\n.spinner {\n text-align: center;\n margin: 5rem auto;\n}\n\n.spinner svg {\n fill: #f38e82;\n width: 6rem;\n height: 6rem;\n animation: 2s linear infinite rotate;\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.message, .error {\n max-width: 40rem;\n margin: 0 auto;\n padding: 5rem 4rem;\n display: flex;\n}\n\n.message svg, .error svg {\n fill: #f38e82;\n width: 3rem;\n height: 3rem;\n transform: translateY(-.3rem);\n}\n\n.message p, .error p {\n margin-left: 1.5rem;\n font-size: 1.8rem;\n font-weight: 600;\n line-height: 1.5;\n}\n\n.header {\n background-color: #f9f5f3;\n grid-area: head;\n justify-content: space-between;\n align-items: center;\n display: flex;\n}\n\n.header__logo {\n height: 4.6rem;\n margin-left: 4rem;\n display: block;\n}\n\n.search {\n background-color: #fff;\n border-radius: 10rem;\n align-items: center;\n padding-left: 3rem;\n transition: all .3s;\n display: flex;\n}\n\n.search:focus-within {\n transform: translateY(-2px);\n box-shadow: 0 .7rem 3rem #61555114;\n}\n\n.search__field {\n color: inherit;\n background: none;\n border: none;\n width: 30rem;\n font-family: inherit;\n font-size: 1.7rem;\n}\n\n.search__field:focus {\n outline: none;\n}\n\n.search__field::placeholder {\n color: #d3c7c3;\n}\n\n@media only screen and (width <= 61.25em) {\n .search__field {\n width: auto;\n }\n\n .search__field::placeholder {\n color: #fff;\n }\n}\n\n.search__btn {\n font-family: inherit;\n font-weight: 600;\n}\n\n.nav {\n align-self: stretch;\n margin-right: 2.5rem;\n}\n\n.nav__list {\n height: 100%;\n list-style: none;\n display: flex;\n}\n\n.nav__item {\n position: relative;\n}\n\n.nav__btn {\n color: inherit;\n text-transform: uppercase;\n cursor: pointer;\n background: none;\n border: none;\n align-items: center;\n height: 100%;\n padding: 0 1.5rem;\n font-family: inherit;\n font-size: 1.4rem;\n font-weight: 700;\n transition: all .3s;\n display: flex;\n}\n\n.nav__btn svg {\n fill: #f38e82;\n width: 2.4rem;\n height: 2.4rem;\n margin-right: .7rem;\n transform: translateY(-1px);\n}\n\n.nav__btn:focus {\n outline: none;\n}\n\n.nav__btn:hover {\n background-color: #f2efee;\n}\n\n.bookmarks {\n z-index: 10;\n visibility: hidden;\n opacity: 0;\n background-color: #fff;\n width: 40rem;\n padding: 1rem 0;\n transition: all .5s .2s;\n position: absolute;\n right: -2.5rem;\n box-shadow: 0 .8rem 5rem 2rem #6155511a;\n}\n\n.bookmarks__list {\n list-style: none;\n}\n\n.bookmarks__field {\n cursor: pointer;\n align-items: center;\n height: 100%;\n padding: 0 4rem;\n transition: all .3s;\n display: flex;\n}\n\n.bookmarks__field:hover {\n background-color: #f2efee;\n}\n\n.bookmarks:hover, .nav__btn--bookmarks:hover + .bookmarks {\n visibility: visible;\n opacity: 1;\n}\n\n.preview__link:link, .preview__link:visited {\n border-right: 1px solid #fff;\n align-items: center;\n padding: 1.5rem 3.25rem;\n text-decoration: none;\n transition: all .3s;\n display: flex;\n}\n\n.preview__link:hover {\n background-color: #f9f5f3;\n transform: translateY(-2px);\n}\n\n.preview__link--active {\n background-color: #f9f5f3;\n}\n\n.preview__fig {\n backface-visibility: hidden;\n border-radius: 50%;\n flex: 0 0 5.8rem;\n height: 5.8rem;\n margin-right: 2rem;\n position: relative;\n overflow: hidden;\n}\n\n.preview__fig:before {\n content: \"\";\n opacity: .4;\n background-image: linear-gradient(to bottom right, #fbdb89, #f48982);\n width: 100%;\n height: 100%;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.preview__fig img {\n object-fit: cover;\n width: 100%;\n height: 100%;\n transition: all .3s;\n display: block;\n}\n\n.preview__data {\n grid-template-columns: 1fr 2rem;\n align-items: center;\n row-gap: .1rem;\n width: 100%;\n display: grid;\n}\n\n.preview__title {\n color: #f38e82;\n text-transform: uppercase;\n text-overflow: ellipsis;\n white-space: nowrap;\n grid-column: 1 / -1;\n max-width: 25rem;\n font-size: 1.45rem;\n font-weight: 600;\n overflow: hidden;\n}\n\n.preview__publisher {\n color: #918581;\n text-transform: uppercase;\n font-size: 1.15rem;\n font-weight: 600;\n}\n\n.preview__user-generated {\n background-color: #eeeae8;\n border-radius: 10rem;\n justify-content: center;\n align-items: center;\n width: 2rem;\n height: 2rem;\n margin-left: auto;\n margin-right: 1.75rem;\n display: flex;\n}\n\n.preview__user-generated svg {\n fill: #f38e82;\n width: 1.2rem;\n height: 1.2rem;\n}\n\n.search-results {\n flex-direction: column;\n padding: 3rem 0;\n display: flex;\n}\n\n.results {\n margin-bottom: 2rem;\n list-style: none;\n}\n\n.pagination {\n margin-top: auto;\n padding: 0 3.5rem;\n}\n\n.pagination:after {\n content: \"\";\n clear: both;\n display: table;\n}\n\n.pagination__btn--prev {\n float: left;\n}\n\n.pagination__btn--next {\n float: right;\n}\n\n.copyright {\n color: #918581;\n margin-top: 4rem;\n padding: 0 3.5rem;\n font-size: 1.2rem;\n}\n\n.copyright .twitter-link:link, .copyright .twitter-link:visited {\n color: #918581;\n}\n\n.recipe {\n background-color: #f9f5f3;\n}\n\n.recipe__fig {\n transform-origin: top;\n height: 32rem;\n position: relative;\n}\n\n.recipe__fig:before {\n content: \"\";\n opacity: .6;\n background-image: linear-gradient(to bottom right, #fbdb89, #f48982);\n width: 100%;\n height: 100%;\n display: block;\n position: absolute;\n top: 0;\n left: 0;\n}\n\n.recipe__img {\n object-fit: cover;\n width: 100%;\n height: 100%;\n display: block;\n}\n\n.recipe__title {\n color: #fff;\n text-transform: uppercase;\n text-align: center;\n width: 50%;\n font-size: 3.25rem;\n font-weight: 700;\n line-height: 1.95;\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 20%)skewY(-6deg);\n}\n\n.recipe__title span {\n -webkit-box-decoration-break: clone;\n box-decoration-break: clone;\n background-image: linear-gradient(to bottom right, #fbdb89, #f48982);\n padding: 1.3rem 2rem;\n}\n\n@media only screen and (width <= 61.25em) {\n .recipe__title {\n width: 70%;\n }\n}\n\n.recipe__details {\n align-items: center;\n padding: 7.5rem 8rem 3.5rem;\n display: flex;\n}\n\n.recipe__info {\n text-transform: uppercase;\n align-items: center;\n font-size: 1.65rem;\n display: flex;\n}\n\n.recipe__info:not(:last-child) {\n margin-right: 4.5rem;\n}\n\n.recipe__info-icon {\n fill: #f38e82;\n width: 2.35rem;\n height: 2.35rem;\n margin-right: 1.15rem;\n}\n\n.recipe__info-data {\n margin-right: .5rem;\n font-weight: 700;\n}\n\n.recipe__info-buttons {\n margin-left: 1.6rem;\n display: flex;\n transform: translateY(-1px);\n}\n\n.recipe__user-generated {\n background-color: #eeeae8;\n border-radius: 10rem;\n justify-content: center;\n align-items: center;\n width: 4rem;\n height: 4rem;\n margin-left: auto;\n margin-right: 1.75rem;\n display: flex;\n}\n\n.recipe__user-generated svg {\n fill: #f38e82;\n width: 2.25rem;\n height: 2.25rem;\n}\n\n.recipe__ingredients {\n background-color: #f2efee;\n flex-direction: column;\n align-items: center;\n padding: 5rem 8rem;\n font-size: 1.6rem;\n line-height: 1.4;\n display: flex;\n}\n\n.recipe__ingredient-list {\n grid-template-columns: 1fr 1fr;\n gap: 2.5rem 3rem;\n list-style: none;\n display: grid;\n}\n\n.recipe__ingredient {\n display: flex;\n}\n\n.recipe__icon {\n fill: #f38e82;\n flex: none;\n width: 2rem;\n height: 2rem;\n margin-top: .1rem;\n margin-right: 1.1rem;\n}\n\n.recipe__quantity {\n flex: none;\n margin-right: .5rem;\n}\n\n.recipe__directions {\n flex-direction: column;\n align-items: center;\n padding: 5rem 10rem;\n display: flex;\n}\n\n.recipe__directions-text {\n text-align: center;\n color: #918581;\n margin-bottom: 3.5rem;\n font-size: 1.7rem;\n}\n\n.recipe__publisher {\n font-weight: 700;\n}\n\n.add-recipe-window {\n z-index: 1000;\n background-color: #fff;\n border-radius: 9px;\n width: 100rem;\n padding: 5rem 6rem;\n transition: all .5s;\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n box-shadow: 0 4rem 6rem #00000040;\n}\n\n.add-recipe-window .btn--close-modal {\n color: inherit;\n cursor: pointer;\n background: none;\n border: none;\n font-family: inherit;\n font-size: 3.5rem;\n position: absolute;\n top: .5rem;\n right: 1.6rem;\n}\n\n.overlay {\n backdrop-filter: blur(4px);\n z-index: 100;\n background-color: #0006;\n width: 100%;\n height: 100%;\n transition: all .5s;\n position: fixed;\n top: 0;\n left: 0;\n}\n\n.hidden {\n visibility: hidden;\n opacity: 0;\n}\n\n.upload {\n grid-template-columns: 1fr 1fr;\n gap: 4rem 6rem;\n display: grid;\n}\n\n.upload__column {\n grid-template-columns: 1fr 2.8fr;\n align-items: center;\n gap: 1.5rem;\n display: grid;\n}\n\n.upload__column label {\n color: inherit;\n font-size: 1.5rem;\n font-weight: 600;\n}\n\n.upload__column input {\n border: 1px solid #ddd;\n border-radius: .5rem;\n padding: .8rem 1rem;\n font-size: 1.5rem;\n transition: all .2s;\n}\n\n.upload__column input::placeholder {\n color: #d3c7c3;\n}\n\n.upload__column input:focus {\n background-color: #f9f5f3;\n border: 1px solid #f38e82;\n outline: none;\n}\n\n.upload__column button {\n grid-column: 1 / span 2;\n justify-self: center;\n margin-top: 1rem;\n}\n\n.upload__heading {\n text-transform: uppercase;\n grid-column: 1 / -1;\n margin-bottom: 1rem;\n font-size: 2.25rem;\n font-weight: 700;\n}\n\n.upload__btn {\n grid-column: 1 / -1;\n justify-self: center;\n}\n/*# sourceMappingURL=index.e55c1d8e.css.map */\n","// $color-primary: #f59a83;\n$color-primary: #f38e82;\n$color-grad-1: #fbdb89;\n$color-grad-2: #f48982;\n\n$color-grey-light-1: #f9f5f3; // Light background\n$color-grey-light-2: #f2efee; // Light lines\n$color-grey-light-3: #d3c7c3; // Light text (placeholder)\n$color-grey-dark-1: #615551; // Normal text\n$color-grey-dark-2: #918581; // Lighter text\n\n$gradient: linear-gradient(to right bottom, $color-grad-1, $color-grad-2);\n\n$bp-large: 78.15em; // 1250px\n$bp-medium: 61.25em; // 980px\n$bp-small: 37.5em; // 600px\n$bp-smallest: 31.25em; // 500px\n\n* {\n margin: 0;\n padding: 0;\n}\n\n*,\n*::before,\n*::after {\n box-sizing: inherit;\n}\n\nhtml {\n box-sizing: border-box;\n font-size: 62.5%;\n\n @media only screen and (max-width: $bp-medium) {\n font-size: 50%;\n }\n}\n\nbody {\n font-family: 'Nunito Sans', sans-serif;\n font-weight: 400;\n line-height: 1.6;\n color: $color-grey-dark-1;\n background-image: $gradient;\n background-size: cover;\n background-repeat: no-repeat;\n min-height: calc(100vh - 2 * 4vw);\n}\n\n.container {\n max-width: 120rem;\n min-height: 117rem;\n margin: 4vw auto;\n background-color: #fff;\n border-radius: 9px;\n overflow: hidden;\n box-shadow: 0 2rem 6rem 0.5rem rgba($color-grey-dark-1, 0.2);\n\n display: grid;\n grid-template-rows: 10rem minmax(100rem, auto);\n grid-template-columns: 1fr 2fr;\n grid-template-areas:\n 'head head'\n 'list recipe';\n\n @media only screen and (max-width: $bp-large) {\n max-width: 100%;\n margin: 0;\n border-radius: 0;\n }\n}\n","%btn {\n background-image: $gradient;\n border-radius: 10rem;\n border: none;\n text-transform: uppercase;\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n transition: all 0.2s;\n\n &:hover {\n transform: scale(1.05);\n }\n\n &:focus {\n outline: none;\n }\n\n & > *:first-child {\n margin-right: 1rem;\n }\n}\n\n.btn {\n @extend %btn;\n\n padding: 1.5rem 4rem;\n font-size: 1.5rem;\n font-weight: 600;\n\n svg {\n height: 2.25rem;\n width: 2.25rem;\n fill: currentColor;\n }\n}\n\n.btn--small {\n &,\n &:link,\n &:visited {\n @extend %btn;\n\n font-size: 1.4rem;\n font-weight: 600;\n padding: 1.25rem 2.25rem;\n text-decoration: none;\n\n svg {\n height: 1.75rem;\n width: 1.75rem;\n fill: currentColor;\n }\n }\n}\n\n.btn--inline {\n color: $color-primary;\n font-size: 1.3rem;\n font-weight: 600;\n border: none;\n background-color: $color-grey-light-1;\n padding: 0.8rem 1.2rem;\n border-radius: 10rem;\n cursor: pointer;\n\n display: flex;\n align-items: center;\n transition: all 0.2s;\n\n svg {\n height: 1.6rem;\n width: 1.6rem;\n fill: currentColor;\n margin: 0 0.2rem;\n }\n\n span {\n margin: 0 0.4rem;\n }\n\n &:hover {\n color: $color-grad-2;\n background-color: $color-grey-light-2;\n }\n\n &:focus {\n outline: none;\n }\n}\n\n.btn--round {\n background-image: $gradient;\n border-radius: 50%;\n border: none;\n cursor: pointer;\n height: 4.5rem;\n width: 4.5rem;\n // margin-left: auto;\n transition: all 0.2s;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n &:hover {\n transform: scale(1.07);\n }\n\n &:focus {\n outline: none;\n }\n\n svg {\n height: 2.5rem;\n width: 2.5rem;\n fill: #fff;\n }\n}\n\n.btn--tiny {\n height: 2rem;\n width: 2rem;\n border: none;\n background: none;\n cursor: pointer;\n\n svg {\n height: 100%;\n width: 100%;\n fill: $color-primary;\n transition: all 0.3s;\n }\n\n &:focus {\n outline: none;\n }\n\n &:hover svg {\n fill: $color-grad-2;\n transform: translateY(-1px);\n }\n\n &:active svg {\n fill: $color-grad-2;\n transform: translateY(0);\n }\n\n &:not(:last-child) {\n margin-right: 0.3rem;\n }\n}\n\n.heading--2 {\n font-size: 2rem;\n font-weight: 700;\n color: $color-primary;\n text-transform: uppercase;\n margin-bottom: 2.5rem;\n text-align: center;\n // transform: skewY(-3deg);\n}\n\n.link:link,\n.link:visited {\n color: $color-grey-dark-2;\n}\n\n.spinner {\n margin: 5rem auto;\n text-align: center;\n\n svg {\n height: 6rem;\n width: 6rem;\n fill: $color-primary;\n animation: rotate 2s infinite linear;\n }\n}\n\n@keyframes rotate {\n 0% {\n transform: rotate(0);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.message,\n.error {\n max-width: 40rem;\n margin: 0 auto;\n padding: 5rem 4rem;\n\n display: flex;\n\n svg {\n height: 3rem;\n width: 3rem;\n fill: $color-primary;\n transform: translateY(-0.3rem);\n }\n\n p {\n margin-left: 1.5rem;\n font-size: 1.8rem;\n line-height: 1.5;\n font-weight: 600;\n }\n}\n",".header {\n grid-area: head;\n background-color: $color-grey-light-1;\n display: flex;\n align-items: center;\n justify-content: space-between;\n\n &__logo {\n margin-left: 4rem;\n height: 4.6rem;\n display: block;\n }\n}\n\n.search {\n background-color: #fff;\n border-radius: 10rem;\n display: flex;\n align-items: center;\n padding-left: 3rem;\n transition: all 0.3s;\n\n &:focus-within {\n transform: translateY(-2px);\n box-shadow: 0 0.7rem 3rem rgba($color-grey-dark-1, 0.08);\n }\n\n &__field {\n border: none;\n background: none;\n font-family: inherit;\n color: inherit;\n font-size: 1.7rem;\n width: 30rem;\n\n &:focus {\n outline: none;\n }\n\n &::placeholder {\n color: $color-grey-light-3;\n }\n\n @media only screen and (max-width: $bp-medium) {\n width: auto;\n\n &::placeholder {\n color: white;\n }\n }\n }\n\n &__btn {\n font-weight: 600;\n font-family: inherit;\n }\n}\n\n.nav {\n align-self: stretch;\n margin-right: 2.5rem;\n\n &__list {\n list-style: none;\n display: flex;\n height: 100%;\n }\n\n &__item {\n position: relative;\n }\n\n &__btn {\n height: 100%;\n font-family: inherit;\n color: inherit;\n font-size: 1.4rem;\n font-weight: 700;\n text-transform: uppercase;\n background: none;\n border: none;\n cursor: pointer;\n padding: 0 1.5rem;\n transition: all 0.3s;\n\n display: flex;\n align-items: center;\n\n svg {\n height: 2.4rem;\n width: 2.4rem;\n fill: $color-primary;\n margin-right: 0.7rem;\n transform: translateY(-1px);\n }\n\n &:focus {\n outline: none;\n }\n\n &:hover {\n background-color: $color-grey-light-2;\n }\n }\n}\n\n.bookmarks {\n padding: 1rem 0;\n position: absolute;\n // right: 0;\n right: -2.5rem;\n z-index: 10;\n width: 40rem;\n background-color: #fff;\n box-shadow: 0 0.8rem 5rem 2rem rgba($color-grey-dark-1, 0.1);\n\n visibility: hidden;\n opacity: 0;\n transition: all 0.5s 0.2s;\n\n &__list {\n list-style: none;\n }\n\n &__field {\n cursor: pointer;\n padding: 0 4rem;\n\n display: flex;\n align-items: center;\n height: 100%;\n transition: all 0.3s;\n\n &:hover {\n background-color: $color-grey-light-2;\n }\n }\n\n &:hover,\n .nav__btn--bookmarks:hover + & {\n visibility: visible;\n opacity: 1;\n }\n}\n",".preview {\n &__link {\n &:link,\n &:visited {\n display: flex;\n align-items: center;\n padding: 1.5rem 3.25rem;\n transition: all 0.3s;\n border-right: 1px solid #fff;\n text-decoration: none;\n }\n\n &:hover {\n background-color: $color-grey-light-1;\n transform: translateY(-2px);\n }\n\n &--active {\n background-color: $color-grey-light-1;\n }\n }\n\n &__fig {\n flex: 0 0 5.8rem;\n border-radius: 50%;\n overflow: hidden;\n height: 5.8rem;\n margin-right: 2rem;\n position: relative;\n backface-visibility: hidden;\n\n &::before {\n content: '';\n display: block;\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n background-image: linear-gradient(\n to right bottom,\n $color-grad-1,\n $color-grad-2\n );\n opacity: 0.4;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n transition: all 0.3s;\n }\n }\n\n &__data {\n display: grid;\n width: 100%;\n grid-template-columns: 1fr 2rem;\n row-gap: 0.1rem;\n align-items: center;\n }\n\n &__title {\n grid-column: 1/-1;\n font-size: 1.45rem;\n color: $color-primary;\n text-transform: uppercase;\n font-weight: 600;\n\n // This is how text is truncated!\n text-overflow: ellipsis;\n max-width: 25rem;\n white-space: nowrap;\n overflow: hidden;\n }\n\n &__publisher {\n font-size: 1.15rem;\n color: $color-grey-dark-2;\n text-transform: uppercase;\n font-weight: 600;\n }\n\n &__user-generated {\n background-color: darken($color-grey-light-2, 2%);\n\n display: flex;\n align-items: center;\n justify-content: center;\n height: 2rem;\n width: 2rem;\n border-radius: 10rem;\n\n margin-left: auto;\n margin-right: 1.75rem;\n\n svg {\n height: 1.2rem;\n width: 1.2rem;\n fill: $color-primary;\n }\n }\n}\n",".search-results {\n padding: 3rem 0;\n display: flex;\n flex-direction: column;\n}\n\n.results {\n list-style: none;\n margin-bottom: 2rem;\n}\n\n.pagination {\n margin-top: auto;\n padding: 0 3.5rem;\n\n &::after {\n content: '';\n display: table;\n clear: both;\n }\n\n &__btn {\n &--prev {\n float: left;\n }\n &--next {\n float: right;\n }\n }\n}\n\n.copyright {\n color: $color-grey-dark-2;\n font-size: 1.2rem;\n padding: 0 3.5rem;\n margin-top: 4rem;\n\n .twitter-link:link,\n .twitter-link:visited {\n color: $color-grey-dark-2;\n }\n}\n",".recipe {\n background-color: $color-grey-light-1;\n\n ///////////\n // FIGURE\n &__fig {\n height: 32rem;\n position: relative;\n // transform: scale(1.04) translateY(-1px);\n transform-origin: top;\n\n &::before {\n content: '';\n display: block;\n height: 100%;\n width: 100%;\n position: absolute;\n top: 0;\n left: 0;\n background-image: linear-gradient(\n to right bottom,\n $color-grad-1,\n $color-grad-2\n );\n opacity: 0.6;\n }\n }\n\n &__img {\n width: 100%;\n display: block;\n height: 100%;\n object-fit: cover;\n }\n\n &__title {\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 20%) skewY(-6deg);\n color: #fff;\n font-weight: 700;\n font-size: 3.25rem;\n text-transform: uppercase;\n width: 50%;\n line-height: 1.95;\n text-align: center;\n\n span {\n -webkit-box-decoration-break: clone;\n box-decoration-break: clone;\n padding: 1.3rem 2rem;\n background-image: linear-gradient(\n to right bottom,\n $color-grad-1,\n $color-grad-2\n );\n }\n\n @media only screen and (max-width: $bp-medium) {\n width: 70%;\n }\n }\n\n ///////////\n // DETAILS\n &__details {\n display: flex;\n align-items: center;\n padding: 7.5rem 8rem 3.5rem 8rem;\n }\n\n &__info {\n font-size: 1.65rem;\n text-transform: uppercase;\n display: flex;\n align-items: center;\n\n &:not(:last-child) {\n margin-right: 4.5rem;\n }\n }\n\n &__info-icon {\n height: 2.35rem;\n width: 2.35rem;\n fill: $color-primary;\n margin-right: 1.15rem;\n }\n\n &__info-data {\n margin-right: 0.5rem;\n font-weight: 700;\n }\n\n &__info-buttons {\n display: flex;\n margin-left: 1.6rem;\n transform: translateY(-1px);\n }\n\n &__user-generated {\n background-color: darken($color-grey-light-2, 2%);\n\n display: flex;\n align-items: center;\n justify-content: center;\n height: 4rem;\n width: 4rem;\n border-radius: 10rem;\n\n margin-left: auto;\n margin-right: 1.75rem;\n\n svg {\n height: 2.25rem;\n width: 2.25rem;\n fill: $color-primary;\n }\n }\n\n ///////////\n // INGREDIENTS\n &__ingredients {\n padding: 5rem 8rem;\n font-size: 1.6rem;\n line-height: 1.4;\n background-color: $color-grey-light-2;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &__ingredient-list {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 2.5rem 3rem;\n list-style: none;\n }\n\n &__ingredient {\n display: flex;\n }\n\n &__icon {\n height: 2rem;\n width: 2rem;\n fill: $color-primary;\n margin-right: 1.1rem;\n flex: 0 0 auto;\n margin-top: 0.1rem;\n }\n\n &__quantity {\n margin-right: 0.5rem;\n flex: 0 0 auto;\n }\n\n ///////////\n // DIRECTIONS\n &__directions {\n padding: 5rem 10rem;\n padding-bottom: 5rem;\n display: flex;\n flex-direction: column;\n align-items: center;\n }\n\n &__directions-text {\n font-size: 1.7rem;\n text-align: center;\n margin-bottom: 3.5rem;\n color: $color-grey-dark-2;\n }\n\n &__publisher {\n font-weight: 700;\n }\n}\n",".add-recipe-window {\n position: fixed;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n width: 100rem;\n background-color: white;\n border-radius: 9px;\n\n padding: 5rem 6rem;\n box-shadow: 0 4rem 6rem rgba(0, 0, 0, 0.25);\n z-index: 1000;\n transition: all 0.5s;\n\n .btn--close-modal {\n font-family: inherit;\n color: inherit;\n position: absolute;\n top: 0.5rem;\n right: 1.6rem;\n font-size: 3.5rem;\n cursor: pointer;\n border: none;\n background: none;\n }\n}\n\n.overlay {\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.4);\n backdrop-filter: blur(4px);\n z-index: 100;\n transition: all 0.5s;\n}\n\n.hidden {\n visibility: hidden;\n opacity: 0;\n}\n\n.upload {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 4rem 6rem;\n\n &__column {\n display: grid;\n grid-template-columns: 1fr 2.8fr;\n align-items: center;\n gap: 1.5rem;\n\n & label {\n font-size: 1.5rem;\n font-weight: 600;\n color: inherit;\n }\n\n & input {\n font-size: 1.5rem;\n padding: 0.8rem 1rem;\n border: 1px solid #ddd;\n border-radius: 0.5rem;\n transition: all 0.2s;\n\n &::placeholder {\n color: $color-grey-light-3;\n }\n\n &:focus {\n outline: none;\n border: 1px solid $color-primary;\n background-color: $color-grey-light-1;\n }\n }\n\n & button {\n grid-column: 1 / span 2;\n justify-self: center;\n margin-top: 1rem;\n }\n }\n\n &__heading {\n font-size: 2.25rem;\n font-weight: 700;\n text-transform: uppercase;\n margin-bottom: 1rem;\n grid-column: 1/-1;\n }\n\n &__btn {\n grid-column: 1 / -1;\n justify-self: center;\n }\n}\n"],"names":[],"version":3,"file":"index.e55c1d8e.css.map"} \ No newline at end of file diff --git a/dist/index.html b/docs/index.html similarity index 96% rename from dist/index.html rename to docs/index.html index 8f16589..50faba5 100644 --- a/dist/index.html +++ b/docs/index.html @@ -1 +1 @@ -forkify // Search over 1,000,000 recipes

    Start by searching for a recipe or an ingredient. Have fun!

    \ No newline at end of file +forkify // Search over 1,000,000 recipes

    Start by searching for a recipe or an ingredient. Have fun!

    \ No newline at end of file diff --git a/dist/index.runtime.283c0eb6.js b/docs/index.runtime.283c0eb6.js similarity index 100% rename from dist/index.runtime.283c0eb6.js rename to docs/index.runtime.283c0eb6.js diff --git a/dist/index.runtime.283c0eb6.js.map b/docs/index.runtime.283c0eb6.js.map similarity index 100% rename from dist/index.runtime.283c0eb6.js.map rename to docs/index.runtime.283c0eb6.js.map diff --git a/docs/index.runtime.b9507e23.js b/docs/index.runtime.b9507e23.js new file mode 100644 index 0000000..39c9198 --- /dev/null +++ b/docs/index.runtime.b9507e23.js @@ -0,0 +1,2 @@ +var e=globalThis,r={},t={},n=e.parcelRequire3a11;null==n&&((n=function(e){if(e in r)return r[e].exports;if(e in t){var n=t[e];delete t[e];var i={id:e,exports:{}};return r[e]=i,n.call(i.exports,i,i.exports),i.exports}var a=Error("Cannot find module '"+e+"'");throw a.code="MODULE_NOT_FOUND",a}).register=function(e,r){t[e]=r},e.parcelRequire3a11=n),(0,n.register)("27Lyk",function(e,r){Object.defineProperty(e.exports,"register",{get:()=>t,set:e=>t=e,enumerable:!0,configurable:!0});var t,n=new Map;t=function(e,r){for(var t=0;t","node_modules/@parcel/runtime-js/lib/helpers/bundle-manifest.js","node_modules/@parcel/runtime-js/lib/runtime-ffb238a9aea3188d.js"],"sourcesContent":["\nfunction $parcel$export(e, n, v, s) {\n Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n var $parcel$global = globalThis;\n \nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequire3a11\"];\n\nif (parcelRequire == null) {\n parcelRequire = function(id) {\n if (id in $parcel$modules) {\n return $parcel$modules[id].exports;\n }\n if (id in $parcel$inits) {\n var init = $parcel$inits[id];\n delete $parcel$inits[id];\n var module = {id: id, exports: {}};\n $parcel$modules[id] = module;\n init.call(module.exports, module, module.exports);\n return module.exports;\n }\n var err = new Error(\"Cannot find module '\" + id + \"'\");\n err.code = 'MODULE_NOT_FOUND';\n throw err;\n };\n\n parcelRequire.register = function register(id, init) {\n $parcel$inits[id] = init;\n };\n\n $parcel$global[\"parcelRequire3a11\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"27Lyk\", function(module, exports) {\n\n$parcel$export(module.exports, \"register\", () => $18c11f3350a906ea$export$6503ec6e8aabbaf, (v) => $18c11f3350a906ea$export$6503ec6e8aabbaf = v);\nvar $18c11f3350a906ea$export$6503ec6e8aabbaf;\nvar $18c11f3350a906ea$export$f7ad0328861e2f03;\n\"use strict\";\nvar $18c11f3350a906ea$var$mapping = new Map();\nfunction $18c11f3350a906ea$var$register(baseUrl, manifest) {\n for(var i = 0; i < manifest.length - 1; i += 2)$18c11f3350a906ea$var$mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n}\nfunction $18c11f3350a906ea$var$resolve(id) {\n var resolved = $18c11f3350a906ea$var$mapping.get(id);\n if (resolved == null) throw new Error(\"Could not resolve bundle with id \" + id);\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\n$18c11f3350a906ea$export$6503ec6e8aabbaf = $18c11f3350a906ea$var$register;\n$18c11f3350a906ea$export$f7ad0328861e2f03 = $18c11f3350a906ea$var$resolve;\n\n});\n\nvar $fc09d9600e29f09b$exports = {};\n\n(parcelRequire(\"27Lyk\")).register(new URL(\"\", import.meta.url).toString(), JSON.parse('[\"dghd8\",\"index.6cd0e77f.js\",\"jiuN2\",\"icons.c14567a0.svg\"]'));\n\n\n//# sourceMappingURL=index.runtime.b9507e23.js.map\n","\"use strict\";\n\nvar mapping = new Map();\nfunction register(baseUrl, manifest) {\n for (var i = 0; i < manifest.length - 1; i += 2) {\n mapping.set(manifest[i], {\n baseUrl: baseUrl,\n path: manifest[i + 1]\n });\n }\n}\nfunction resolve(id) {\n var resolved = mapping.get(id);\n if (resolved == null) {\n throw new Error('Could not resolve bundle with id ' + id);\n }\n return new URL(resolved.path, resolved.baseUrl).toString();\n}\nmodule.exports.register = register;\nmodule.exports.resolve = resolve;","require('./helpers/bundle-manifest').register(new __parcel__URL__(\"\").toString(),JSON.parse(\"[\\\"dghd8\\\",\\\"index.6cd0e77f.js\\\",\\\"jiuN2\\\",\\\"icons.c14567a0.svg\\\"]\"));"],"names":["$parcel$global","globalThis","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","parcelRegister","Object","defineProperty","get","$18c11f3350a906ea$export$6503ec6e8aabbaf","set","v","enumerable","configurable","$18c11f3350a906ea$var$mapping","Map","baseUrl","manifest","i","length","path","URL","url","toString","JSON","parse"],"version":3,"file":"index.runtime.b9507e23.js.map"} \ No newline at end of file diff --git a/dist/logo.833dfef5.png b/docs/logo.833dfef5.png similarity index 100% rename from dist/logo.833dfef5.png rename to docs/logo.833dfef5.png diff --git a/package.json b/package.json index 2785c22..b6305f4 100644 --- a/package.json +++ b/package.json @@ -5,7 +5,7 @@ "default": "index.html", "scripts": { "start": "parcel index.html", - "build": "parcel build index.html --dist-dir ./dist" + "build": "parcel build index.html --dist-dir ./docs" }, "author": "Abdullah Alaba", "license": "ISC",