diff --git a/asset-manifest.json b/asset-manifest.json index de52c9696d0886da1592e223b859f8b66aa02123..9d5fb4640e7d7b2e59ec9867015574820b69525f 100644 --- a/asset-manifest.json +++ b/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { - "main.css": "/static/css/main.00f3c558.css", - "main.js": "/static/js/main.efb181dd.js", + "main.css": "/static/css/main.5173ff82.css", + "main.js": "/static/js/main.e65f6e7b.js", "static/js/787.0bfccc2a.chunk.js": "/static/js/787.0bfccc2a.chunk.js", "index.html": "/index.html", - "main.00f3c558.css.map": "/static/css/main.00f3c558.css.map", - "main.efb181dd.js.map": "/static/js/main.efb181dd.js.map", + "main.5173ff82.css.map": "/static/css/main.5173ff82.css.map", + "main.e65f6e7b.js.map": "/static/js/main.e65f6e7b.js.map", "787.0bfccc2a.chunk.js.map": "/static/js/787.0bfccc2a.chunk.js.map" }, "entrypoints": [ - "static/css/main.00f3c558.css", - "static/js/main.efb181dd.js" + "static/css/main.5173ff82.css", + "static/js/main.e65f6e7b.js" ] } \ No newline at end of file diff --git a/index.html b/index.html index 92cdb40f590f24ea3e9d08e2c52ac0ec3f3f3615..0bf45add4eede99676927873e00a6049605b2d11 100644 --- a/index.html +++ b/index.html @@ -1 +1 @@ -Like History
\ No newline at end of file +Like History
\ No newline at end of file diff --git a/src/App.js b/src/App.js index 625d300ad83ef9bb841b72e345079b4c97580bbf..626c90f8dd130248d3017d5eacc6d14878999680 100644 --- a/src/App.js +++ b/src/App.js @@ -1,8 +1,6 @@ -import { useState } from "react"; +import { useEffect, useState } from "react"; import chartXkcd from "chart.xkcd"; -const projectTypes = ["model", "dataset", "space"]; - function transformLikesData(likesData) { // Step 1 likesData.sort((a, b) => new Date(a.likedAt) - new Date(b.likedAt)); @@ -27,19 +25,32 @@ function transformLikesData(likesData) { return transformedData; } -const datasets = []; +function getProjectsFromHash() { + const hash = window.location.hash; + const projects = hash.replace("#", "").split('&').filter(project => project !== ''); + return projects; +} + function App() { const [projectType, setProjectType] = useState("models"); const [projectName, setProjectName] = useState(""); const [hasGraph, setHasGraph] = useState(false); const [isLoading, setIsLoading] = useState(false); - // const [datasets, setDatasets] = useState([]); + const [datasets, setDatasets] = useState([]); - const onSubmit = async () => { - setIsLoading(true) - const svg = document.querySelector('.line-chart') + function setHash() { + const hashes = datasets.map(dataset => dataset.label).join('&'); - const res = await fetch(`https://huggingface.co/api/${projectType}/${projectName}/likers?expand[]=likeAt`) + if (window.parent && window.parent.postMessage) { + window.parent.postMessage({ + hash: hashes, + }, "*"); + } + window.location.hash = hashes + } + + async function getLikeHistory(projectPath) { + const res = await fetch(`https://huggingface.co/api/${projectPath}/likers?expand[]=likeAt`) /** * Format: @@ -47,7 +58,6 @@ function App() { */ const likers = await res.json() - let likeHistory = transformLikesData(likers) if (likeHistory.length > 40) { @@ -64,6 +74,13 @@ function App() { likeHistory = sampledLikeHistory } + return likeHistory; + } + const onSubmit = async () => { + setIsLoading(true) + + const likeHistory = await getLikeHistory(`${projectType}/${projectName}`); + // if likeHistory is empty, show error message if (likeHistory.length === 0) { setIsLoading(false) @@ -71,13 +88,24 @@ function App() { return } - datasets.push({ - label: projectName, + setDatasets([...datasets, { + label: `${projectType !== 'models' ? `${projectType}/` : ''}${projectName}`, data: likeHistory, - }) + }]) + + setHasGraph(true) + setIsLoading(false) + setProjectName("") + } + useEffect(() => { + const svg = document.querySelector('.line-chart') + if (datasets.length == 0) { + svg.innerHTML = '' + setHash() + return + } // draw chart in next tick - // setTimeout(() => { new chartXkcd.XY(svg, { title: 'Like History', xLabel: 'Time', @@ -107,27 +135,50 @@ function App() { ] }, }); - setHasGraph(true) - setIsLoading(false) - setProjectName("") - // }, 0.2) - } + + setHash() + }, [datasets]) + + useEffect(() => { + const projects = getProjectsFromHash(); + if (projects.length <= 0) return; + + async function getLikeHistoryAndDisplay() { + + console.log('hi') + setIsLoading(true); + for (const project of projects) { + let projectPath = project.startsWith('spaces/') || project.startsWith('datasets/') ? project : `models/${project}` + const likeHistory = await getLikeHistory(projectPath); + setDatasets(prevDatasets => [...prevDatasets, { + label: project, + data: likeHistory, + }]) + } + setIsLoading(false); + } + + getLikeHistoryAndDisplay() + + + }, []) + return (

View the like history of a project on huggingface 🤗

-
+
-
\n setProjectName(e.target.value.trim())}\n onFocus={(e) => e.target.select()}\n onKeyDown={async (e) => {\n if (e.key === \"Enter\") {\n try {\n await onSubmit();\n } catch (err) {\n setIsLoading(false);\n alert(`No like history found for ${projectName}, please check the name and try again`);\n }\n }\n }}\n disabled={isLoading}\n />\n\n {\n isLoading &&\n
\n \n \n \n \n \n
\n }\n
\n
\n\n\n\n
\n\n {datasets.length > 0 &&\n
\n {datasets.map(dataset =>\n {\n setDatasets(datasets.filter(ds => ds.label !== dataset.label));\n }}\n >\n {dataset.label}\n \n \n \n )\n }\n
\n }\n\n \n {\n hasGraph &&\n 🤗 like-history.ai\n }\n
\n\n \n Install the chrome extension\n \n
\n
\n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["_a","a","__esModule","d","default","ab","bb","t","e","i","Object","keys","getOwnPropertySymbols","o","filter","getOwnPropertyDescriptor","enumerable","push","apply","Bc","defineProperty","value","configurable","writable","Cc","cb","$","this","querySelector","Ec","db","Array","length","M","ownerDocument","namespaceURI","_next","_parent","__data__","prototype","constructor","appendChild","insertBefore","querySelectorAll","Lc","r","n","c","l","Mc","f","q","_","O","call","Tc","NaN","$c","removeAttribute","_c","removeAttributeNS","space","local","ad","setAttribute","bd","setAttributeNS","cd","arguments","dd","ta","fb","svg","xhtml","xlink","xml","xmlns","gb","indexOf","slice","hasOwnProperty","fd","style","removeProperty","gd","setProperty","hd","hb","defaultView","document","kd","ld","md","ib","s","trim","split","ua","classList","jb","_node","_names","getAttribute","kb","add","lb","remove","od","pd","qd","join","splice","contains","sd","textContent","td","ud","wd","innerHTML","xd","yd","Ad","nextSibling","parentNode","Cd","previousSibling","firstChild","Ed","documentElement","createElement","createElementNS","Fd","mb","Hd","Jd","removeChild","Ld","cloneNode","Md","Pd","nb","mouseenter","mouseleave","Rd","ob","relatedTarget","compareDocumentPosition","Td","__on","type","name","removeEventListener","listener","capture","Ud","p","v","u","addEventListener","pb","CustomEvent","createEvent","initEvent","bubbles","cancelable","detail","dispatchEvent","Wd","Xd","Zd","m","_groups","_parents","select","selectAll","Fc","matches","Hc","S","data","size","each","Kc","y","h","x","_enter","_exit","enter","map","exit","append","merge","order","Math","min","sort","w","nodes","node","empty","attr","getAttributeNS","getPropertyValue","getComputedStyle","jd","property","classed","text","html","raise","lower","insert","clone","datum","on","Sd","dispatch","sourceEvent","$d","changedTouches","ownerSVGElement","createSVGPoint","clientX","clientY","matrixTransform","getScreenCTM","inverse","getBoundingClientRect","left","clientLeft","top","clientTop","_d","vb","unknown","domain","range","g","max","floor","round","de","reverse","_n","_slicedToArray","rangeRound","_n2","bandwidth","step","padding","paddingInner","paddingOuter","align","copy","ba","qb","ae","rb","sb","be","right","tb","ce","ceil","va","sqrt","wa","xa","ee","z","aa","isFinite","log","LN10","pow","ya","abs","ub","Symbol","Map","get","set","_step","_iterator","_createForOfIteratorHelper","done","has","err","from","Mb","Lb","ticks","tickFormat","Ve","nice","fe","E","za","wb","create","F","G","ge","he","RegExp","ie","je","ke","le","me","xb","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","green","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen","yb","rgb","formatHex","zb","formatRgb","H","toLowerCase","exec","parseInt","Ab","Bb","Eb","ca","b","opacity","oe","Cb","Aa","Db","isNaN","toString","Fb","Ba","Gb","assign","displayable","hex","formatHsl","brighter","darker","ue","Hb","te","Ca","se","Ib","gamma","Jb","ve","Fa","we","Date","setTime","da","xe","Da","Ea","source","Ha","Ie","Je","Ae","lastIndex","index","ze","ye","isArray","valueOf","Be","Ce","De","Kb","Ga","Fe","Ge","interpolate","clamp","He","j","Ee","C","invert","ea","toExponential","Ne","fa","Error","Ia","fill","sign","symbol","zero","width","comma","precision","Pe","Nb","Ob","toFixed","toPrecision","X","toUpperCase","Pb","Qb","Rb","Re","grouping","thousands","substring","Le","Number","currency","decimal","numerals","replace","Me","String","percent","minus","nan","I","V","test","Oe","charCodeAt","format","formatPrefix","Ke","Te","Ue","Se","Ja","We","Ka","La","Ma","Sb","Xe","Ye","Ze","$e","_e","__axis","Tb","selection","k","transition","scale","tickArguments","tickValues","tickSize","tickSizeInner","tickSizeOuter","tickPadding","_ref2","xScale","tickCount","moveDown","fontFamily","unxkcdify","stroke","concat","af","_ref","yScale","bf","getComputedTextLength","positionType","upLeft","upRight","downLeft","downRight","A","_ref3","_this","parent","title","items","position","backgroundColor","strokeColor","_classCallCheck","_getUpLeftX","_getUpLeftY","tipBackground","_getBackgroundWidth","_getBackgroundHeight","tipTitle","tipItems","_generateTipItem","_createClass","key","_ref4","_this2","JSON","stringify","forEach","_toConsumableArray","getBBox","color","height","reduce","B","D","bottom","hf","_ref5","xLabel","yLabel","_ref5$data","labels","datasets","options","getOwnPropertyDescriptors","defineProperties","Ac","yTickCount","dataColors","svgEl","parentElement","clientWidth","window","innerHeight","chart","render","_this3","show","hide","update","label","Ub","kf","J","_x","_x2","_J","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_ref6","wrap","_context","prev","next","parentWidth","parentHeight","Promise","setTimeout","stop","lf","_ref7","_ref7$data","jf","legendPosition","showLegend","_this4","flat","Vb","nf","of","pf","Wb","Q","atan2","W","cos","qf","Na","sin","U","Y","PI","ga","ha","Xb","asin","tf","innerRadius","uf","outerRadius","vf","startAngle","wf","endAngle","xf","padAngle","ia","L","T","R","P","cx","cy","x01","y01","x11","y11","Oa","Pa","zf","Qa","_x0","_y0","_x1","_y1","Ra","moveTo","closePath","lineTo","quadraticCurveTo","bezierCurveTo","arcTo","acos","arc","rect","Af","yf","K","rf","N","centroid","cornerRadius","padRadius","context","Cf","_ref8","_ref8$data","mf","_this5","Z","sortValues","sf","Yb","Ef","Zb","areaStart","_line","areaEnd","lineStart","_point","lineEnd","point","Ff","Gf","Hf","Sa","defined","curve","$b","_b","ac","Ta","ja","bc","_t0","If","_ref9","_ref9$data","Df","_this6","cc","Kf","Ua","Va","offset","count","every","ka","la","dc","ec","fc","gc","getMilliseconds","getUTCSeconds","hc","getSeconds","getMinutes","ic","getHours","ma","setHours","setDate","getDate","getTimezoneOffset","getDay","Wa","na","Lf","Mf","oa","Nf","Of","jc","setMonth","getMonth","getFullYear","setFullYear","Xa","setUTCHours","setUTCDate","getUTCDate","getUTCDay","kc","pa","Pf","Qf","qa","Rf","Sf","setUTCMonth","setUTCFullYear","getUTCFullYear","Tf","Ya","Za","UTC","lc","Wf","Xf","Yf","Zf","$f","_f","ag","bg","cg","dg","eg","fg","gg","mc","hg","nc","ig","jg","kg","lg","mg","ng","og","oc","pg","qg","rg","pc","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","qc","Eg","getUTCHours","Fg","Gg","rc","getUTCMilliseconds","Hg","Ig","getUTCMonth","Jg","getUTCMinutes","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","sc","tc","uc","dateTime","date","time","periods","days","shortDays","months","shortMonths","charAt","parse","utcFormat","utcParse","Vf","Uf","vc","$a","Vg","Wg","wc","Tg","Xg","ra","define","utcOffset","year","month","ms","weekdays","pl","locale","$L","utc","$u","$offset","match","init","$y","$M","$D","$W","$H","$m","$s","$ms","$utils","isValid","isSame","startOf","endOf","isAfter","isBefore","$g","day","hour","minute","second","millisecond","unix","getTime","toDate","$locale","weekStart","$set","daysInMonth","subtract","substr","meridiem","YY","YYYY","MM","MMM","monthsShort","MMMM","DD","weekdaysMin","ddd","weekdaysShort","dddd","HH","hh","mm","ss","SSS","diff","toJSON","toISOString","toUTCString","extend","isDayjs","en","Ls","Yg","_ref10","Jf","dotSize","showLine","timeFormat","xTickCount","_this7","dowfnRight","$dZYI$$interop$default","xc","yc","zc","_g","sa","ch","_ref11","_ref11$data","Zg","showLabels","ticksCount","directionsCount","_this8","config","Bar","StackedBar","Pie","Line","XY","Radar","module","exports","require","encodeURIComponent","Set","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","xlinkHref","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","for","iterator","stack","prepareStackTrace","Reflect","construct","displayName","includes","tag","$$typeof","_payload","_init","nodeName","_valueTracker","getValue","setValue","stopTracking","checked","activeElement","body","defaultChecked","defaultValue","_wrapperState","initialChecked","initialValue","controlled","eb","selected","defaultSelected","disabled","dangerouslySetInnerHTML","children","MSApp","execUnsafeLocalFunction","lastChild","nodeType","nodeValue","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","menuitem","area","base","br","col","embed","hr","img","input","keygen","link","meta","param","track","wbr","is","target","srcElement","correspondingUseElement","stateNode","onError","alternate","return","flags","memoizedState","dehydrated","child","sibling","current","unstable_scheduleCallback","unstable_cancelCallback","unstable_shouldYield","unstable_requestPaint","unstable_now","unstable_getCurrentPriorityLevel","unstable_ImmediatePriority","unstable_UserBlockingPriority","unstable_NormalPriority","unstable_LowPriority","unstable_IdlePriority","clz32","LN2","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","eventTimes","Dc","Gc","Ic","Jc","Nc","Oc","Pc","Qc","Rc","Sc","delete","pointerId","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","shift","Zc","ReactCurrentBatchConfig","ed","id","Uc","stopPropagation","nd","keyCode","charCode","rd","_reactName","_targetInst","currentTarget","isDefaultPrevented","defaultPrevented","returnValue","isPropagationStopped","preventDefault","cancelBubble","persist","isPersistent","eventPhase","timeStamp","now","isTrusted","view","vd","screenX","screenY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","animationName","elapsedTime","pseudoElement","Id","clipboardData","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Qd","fromCharCode","code","location","repeat","which","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","documentMode","datetime","email","number","password","search","tel","url","week","ne","event","listeners","pe","qe","re","oninput","detachEvent","attachEvent","HTMLIFrameElement","contentWindow","href","contentEditable","focusedElem","selectionRange","start","end","selectionStart","selectionEnd","getSelection","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","element","scrollLeft","scrollTop","focus","Qe","animationend","animationiteration","animationstart","transitionend","animation","cf","df","ef","ff","gf","instance","random","bind","passive","parentWindow","char","unshift","Bf","__html","clearTimeout","queueMicrotask","resolve","then","catch","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","childContextTypes","getChildContext","__reactInternalMemoizedMergedChildContext","elementType","deletions","pendingProps","overflow","treeContext","retryLane","mode","memoizedProps","defaultProps","_currentValue","childLanes","dependencies","firstContext","lanes","Ug","memoizedValue","interleaved","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","shared","pending","effects","bh","eventTime","lane","payload","callback","dh","eh","fh","gh","ih","jh","Component","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","contextType","state","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","props","getDerivedStateFromProps","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","componentDidMount","sh","ref","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","tagName","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","queue","di","ei","fi","lastRenderedReducer","action","hasEagerState","eagerState","lastRenderedState","gi","hi","ii","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","message","digest","Li","Mi","console","error","Ni","WeakMap","Oi","Pi","Qi","Ri","getDerivedStateFromError","componentDidCatch","Si","componentStack","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","compare","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","last","tail","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onClick","onclick","autoFocus","createTextNode","Hj","Ij","Jj","Kj","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","componentWillUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","display","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","src","Wk","mk","nk","ok","pk","qk","rk","sk","tk","uk","Infinity","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","callbackPriority","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Pj","onCommitFiberRoot","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","cache","pendingSuspenseBoundaries","el","fl","gl","hl","il","jl","zj","$k","ll","reportError","ml","_internalRoot","nl","ol","ql","sl","rl","unmount","unstable_scheduleHydration","form","tl","usingClientEntryPoint","Events","ul","findFiberByHostInstance","bundleType","version","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setErrorHandler","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","createRoot","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","setState","forceUpdate","escape","_status","_result","Children","toArray","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","lazy","memo","startTransition","unstable_act","pop","sortIndex","performance","setImmediate","startTime","expirationTime","priorityLevel","navigator","scheduling","isInputPending","MessageChannel","port2","port1","onmessage","postMessage","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","delay","unstable_wrapCallback","arr","len","arr2","arrayLikeToArray","asyncGeneratorStep","gen","reject","_throw","arg","info","fn","self","args","undefined","Constructor","TypeError","toPropertyKey","_defineProperties","descriptor","protoProps","staticProps","unsupportedIterableToArray","allowArrayLike","it","normalCompletion","didErr","_e2","iter","_typeof","asyncIterator","toStringTag","Generator","Context","makeInvokeMethod","tryCatch","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","values","defineIteratorMethods","_invoke","AsyncIterator","invoke","__await","callInvokeWithMethodAndArg","method","delegate","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","resultName","nextLoc","pushTryEntry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","isGeneratorFunction","setPrototypeOf","__proto__","awrap","async","rval","handle","complete","finish","delegateYield","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","hint","prim","toPrimitive","res","minLen","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","getter","definition","chunkId","all","promises","miniCssF","obj","prop","inProgress","dataWebpackPrefix","script","needAttach","scripts","getElementsByTagName","charset","timeout","onScriptComplete","onerror","onload","doneFns","head","installedChunks","installedChunkData","promise","errorType","realSrc","request","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","_arrayLikeToArray","_unsupportedIterableToArray","transformLikesData","likesData","likedAt","cumulativeLikes","cumulativeCount","like","_useState2","projectType","setProjectType","_useState4","projectName","setProjectName","_useState6","hasGraph","setHasGraph","_useState8","isLoading","setIsLoading","_useState10","setDatasets","setHash","hashes","hash","getLikeHistory","_getLikeHistory","_callee4","projectPath","likers","likeHistory","sampledLikeHistory","_context5","fetch","json","onSubmit","alert","chartXkcd","projects","project","_getLikeHistoryAndDisplay","_callee2","_loop","_context3","_context2","startsWith","prevDatasets","t1","getLikeHistoryAndDisplay","_jsx","className","_jsxs","htmlFor","autoComplete","onChange","placeholder","onFocus","onKeyDown","_callee3","_context4","t0","viewBox","ds","strokeLinecap","strokeLinejoin","rel","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","getElementById","React","App","reportWebVitals"],"sourceRoot":""} \ No newline at end of file