diff --git a/public/asset-manifest.json b/public/asset-manifest.json
index 5c030d3..b15a7be 100644
--- a/public/asset-manifest.json
+++ b/public/asset-manifest.json
@@ -1,7 +1,7 @@
{
"files": {
- "main.js": "/static/js/main.e49801bc.chunk.js",
- "main.js.map": "/static/js/main.e49801bc.chunk.js.map",
+ "main.js": "/static/js/main.33101a6f.chunk.js",
+ "main.js.map": "/static/js/main.33101a6f.chunk.js.map",
"runtime-main.js": "/static/js/runtime-main.45092312.js",
"runtime-main.js.map": "/static/js/runtime-main.45092312.js.map",
"static/js/2.c9c7c886.chunk.js": "/static/js/2.c9c7c886.chunk.js",
@@ -14,6 +14,6 @@
"entrypoints": [
"static/js/runtime-main.45092312.js",
"static/js/2.c9c7c886.chunk.js",
- "static/js/main.e49801bc.chunk.js"
+ "static/js/main.33101a6f.chunk.js"
]
}
\ No newline at end of file
diff --git a/public/static/js/main.33101a6f.chunk.js b/public/static/js/main.33101a6f.chunk.js
new file mode 100644
index 0000000..efc8103
--- /dev/null
+++ b/public/static/js/main.33101a6f.chunk.js
@@ -0,0 +1,2 @@
+(this["webpackJsonpnew-item-finder-website"]=this["webpackJsonpnew-item-finder-website"]||[]).push([[0],{126:function(e,t,r){"use strict";r.r(t);var n,a,o=r(0),c=r.n(o),i=r(37),s=r.n(i),l=r(9),u=r(206),d=r(197),f=r(198),m=r(191),h=r(2),p=Object(m.a)((function(e){return{footerHolder:{display:"flex",flex:"0 1 3vh",flexDirection:"row",alignItems:"center",justifyContent:"center",padding:"0 10vw 0 10vw"}}})),b=function(){var e=p();return Object(h.jsx)(d.a,{className:e.footerHolder,children:Object(h.jsx)(f.a,{children:"SPT-Aki \xa92021 Created by Rev and Shirito"})})},j=r(204),v=r(15),O=r.n(v),x=r(23),w=r(94),g=r.n(w),k=function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n,a;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("".concat("https://www.sp-tarkov.com","/api/search"),{mode:"cors",method:"post",headers:{"Content-Type":"application/json"},body:JSON.stringify(r?{query:t,locale:r}:{query:t})});case 2:if(200!==(n=e.sent).status){e.next=10;break}return e.next=6,n.json();case 6:return a=e.sent,e.abrupt("return",a.items);case 10:n.status>=400&&console.error(n);case 11:return e.abrupt("return",[]);case 12:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),E=function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n,a;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n="".concat("https://www.sp-tarkov.com","/api/item?id=").concat(t),r&&(n="".concat(n,"&locale=").concat(r)),e.next=4,fetch(n,{mode:"cors"});case 4:if(200!==(a=e.sent).status){e.next=11;break}return e.next=8,a.json();case 8:return e.abrupt("return",e.sent);case 11:a.status>=400&&console.error(a);case 12:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),y=function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n,a,o,c,i,s,l,u;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n={},a=null===t||void 0===t?void 0:t._id,o=H.getState().itemsHierarchy,c=!0;case 4:if(!a){e.next=13;break}if(a in o){e.next=8;break}return c=!1,e.abrupt("break",13);case 8:s=H.getState().itemsHierarchy[a],n[s.item._id]=s,a=null===s||void 0===s||null===(i=s.item)||void 0===i?void 0:i._parent,e.next=4;break;case 13:if(!c){e.next=15;break}return e.abrupt("return",n);case 15:return l="".concat("https://www.sp-tarkov.com","/api/item/hierarchy?id=").concat(t._id),r&&(l="".concat(l,"&locale=").concat(r)),e.next=19,fetch(l,{mode:"cors"});case 19:if(200!==(u=e.sent).status){e.next=26;break}return e.next=23,u.json();case 23:return e.abrupt("return",e.sent);case 26:u.status>=400&&console.error(u);case 27:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),C=function(){var e=Object(x.a)(O.a.mark((function e(){var t;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("".concat("https://www.sp-tarkov.com","/api/locales"),{mode:"cors"});case 2:if(200!==(t=e.sent).status){e.next=9;break}return e.next=6,t.json();case 6:return e.abrupt("return",e.sent);case 9:t.status>=400&&console.error(t);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();!function(e){e.PREFERED_COLOR_SCHEME="items.sp-tarkov.com-prefered-color-scheme",e.PREFERED_JSON_THEME="items.sp-tarkov.com-prefered-json-theme",e.PREFERED_LOCALE="items.sp-tarkov.com-prefered-locale"}(n||(n={})),function(e){e.LOCALES="items.sp-tarkov.com-locales",e.ITEMS_HIERARCHY="items.sp-tarkov.com-items-hierarchy"}(a||(a={}));var L,I=["apathy","apathy:inverted","ashes","bespin","brewer","bright:inverted","bright","chalk","codeschool","colors","eighties","embers","flat","google","grayscale","grayscale:inverted","greenscreen","harmonic","hopscotch","isotope","marrakesh","mocha","monokai","ocean","paraiso","pop","railscasts","rjv-default","shapeshifter","shapeshifter:inverted","solarized","summerfruit","summerfruit:inverted","threezerotwofour","tomorrow","tube","twilight"];!function(e){e.LIGHT_MODE="light",e.DARK_MODE="dark"}(L||(L={}));var S=localStorage.getItem(n.PREFERED_LOCALE),N=localStorage.getItem(n.PREFERED_JSON_THEME),_=localStorage.getItem(n.PREFERED_COLOR_SCHEME),H=g()((function(e){return{sptarkovWebsiteUrl:"https://www.sp-tarkov.com/",sptarkovWorkshopUrl:"https://mods.sp-tarkov.com/",sptarkovDocumentationUrl:"https://docs.sp-tarkov.com/",preferedLocale:S||"en",setPreferedLocale:function(t){localStorage.setItem(n.PREFERED_LOCALE,t),e((function(e){return{preferedLocale:t}}))},localesList:[],refreshLocalesList:function(){var t=Object(x.a)(O.a.mark((function t(){var r,n;return O.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=sessionStorage.getItem(a.LOCALES))){t.next=5;break}t.t0=JSON.parse(r),t.next=8;break;case 5:return t.next=7,C();case 7:t.t0=t.sent;case 8:n=t.t0,console.log(n),r||sessionStorage.setItem(a.LOCALES,JSON.stringify(n)),e((function(e){return{localesList:n||[]}}));case 12:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),preferedJsonViewerTheme:N&&I.includes(N)?N:I[0],setPreferedJsonViewerTheme:function(t){localStorage.setItem(n.PREFERED_JSON_THEME,t),e((function(e){return{preferedJsonViewerTheme:t}}))},preferedColorScheme:_||L.DARK_MODE,setPreferedColorScheme:function(t){localStorage.setItem(n.PREFERED_COLOR_SCHEME,t),e((function(e){return{preferedColorScheme:t}}))},searchInput:"",setSearchInput:function(t){return e((function(e){return{searchInput:t}}))},desiredSearchInput:"",setDesiredSearchInput:function(t){return e((function(e){return{desiredSearchInput:t}}))},itemsHierarchy:{},initHierarchy:function(){var t=sessionStorage.getItem(a.ITEMS_HIERARCHY);t&&e((function(e){return{itemsHierarchy:JSON.parse(t)}}))},setHierarchy:function(t){e((function(e){var r=Object.assign({},e.itemsHierarchy,t);return sessionStorage.setItem(a.ITEMS_HIERARCHY,JSON.stringify(r)),{itemsHierarchy:r}}))},selectedItem:void 0,setSelectedItem:function(t){return e((function(e){return{selectedItem:t}}))}}})),D=r(199),R=r(31),M=r(96),T=r.n(M),F=r(95),P=r.n(F),J=Object(m.a)((function(e){return{modeToggleButtonHolder:{display:"flex",alignItems:"center",justifyContent:"center",color:"primary",flexGrow:1},iconButton:{ml:1}}})),A=function(){var e=Object(R.a)(),t=J(),r=H(Object(o.useCallback)((function(e){return[e.preferedColorScheme,e.setPreferedColorScheme]}),[])),n=Object(l.a)(r,2),a=n[0],c=n[1];return Object(h.jsxs)(d.a,{className:t.modeToggleButtonHolder,id:"modeToggleButtonHolder",children:[e.palette.mode," mode",Object(h.jsx)(D.a,{className:t.iconButton,sx:{ml:1},onClick:function(){var e=a===L.LIGHT_MODE?L.DARK_MODE:L.LIGHT_MODE;c(e)},color:"inherit",id:"modeToggleButton",children:"dark"===e.palette.mode?Object(h.jsx)(P.a,{}):Object(h.jsx)(T.a,{})})]})},G=r(200),B=r(190),V=r(194),W=Object(m.a)((function(e){return{localeHolder:{display:"flex",flexGrow:1,padding:"0 0.5vw 0 0.5vw"},select:{display:"flex",flexGrow:1}}})),K=function(){var e=W(),t=H(Object(o.useCallback)((function(e){return[e.preferedLocale,e.setPreferedLocale]}),[])),r=Object(l.a)(t,2),n=r[0],a=r[1],c=H(Object(o.useCallback)((function(e){return[e.localesList,e.refreshLocalesList]}),[])),i=Object(l.a)(c,2),s=i[0],u=i[1];return Object(o.useEffect)((function(){return u()}),[u]),Object(h.jsx)(h.Fragment,{children:Object(h.jsx)(d.a,{className:e.localeHolder,children:Object(h.jsx)(G.a,{fullWidth:!0,variant:"standard",children:Object(h.jsxs)(B.a,{displayEmpty:!0,className:e.select,labelId:"prefered-locale",value:s.length>0?n:"",onChange:function(e){a(e.target.value)},id:"locale-selector",children:[Object(h.jsx)(V.a,{disabled:!0,value:"",children:Object(h.jsx)("em",{children:"Language"})}),s.map((function(e,t){return Object(h.jsx)(V.a,{value:e,children:e},t)}))]})})})})},U=Object(m.a)((function(e){return{jsonHolder:{display:"flex",flexGrow:1,padding:"0 0.5vw 0 0.5vw"},select:{display:"flex",flexGrow:1}}})),z=function(){var e=U(),t=H(Object(o.useCallback)((function(e){return[e.preferedJsonViewerTheme,e.setPreferedJsonViewerTheme]}),[])),r=Object(l.a)(t,2),a=r[0],c=r[1];return Object(h.jsx)(h.Fragment,{children:Object(h.jsx)(d.a,{className:e.jsonHolder,children:Object(h.jsx)(G.a,{fullWidth:!0,variant:"standard",children:Object(h.jsxs)(B.a,{displayEmpty:!0,className:e.select,labelId:"react-json-view-theme",value:a,label:"JSON theme",onChange:function(e){c(e.target.value),localStorage.setItem(n.PREFERED_JSON_THEME,e.target.value)},id:"json-selector",children:[Object(h.jsx)(V.a,{disabled:!0,value:"",children:Object(h.jsx)("em",{children:"JSON theme"})}),I.map((function(e,t){return Object(h.jsx)(V.a,{value:e,children:e},t)}))]})})})})},Y=Object(m.a)((function(e){return{form:{display:"flex",flexDirection:"row",flexGrow:1,justifyContent:"flex-end",height:"100%"}}})),q=function(){var e=Y();return Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)("form",{className:e.form,children:[Object(h.jsx)(A,{}),Object(h.jsx)(K,{}),Object(h.jsx)(z,{})]})})},Q=Object(m.a)((function(e){return{headerContainer:{display:"flex",flex:"0 1 3vh",flexDirection:"row",backgroundColor:e.palette.background.paper,alignItems:"center",padding:"0 10vw 0 10vw"},linksContainer:{display:"flex",flexGrow:2,flexDirection:"row",alignItems:"center",height:"100%"},formContainer:{display:"flex",flexGrow:1,flexDirection:"row",alignItems:"center",height:"100%"},link:{display:"flex",padding:"0 1vw 0 1vw",height:"100%",alignItems:"center",borderBottom:"1px solid transparent","&:hover":{borderBottom:"1px solid ".concat(e.palette.action.hover)}}}})),X=function(){var e=Q(),t=H(Object(o.useCallback)((function(e){return e.sptarkovWebsiteUrl}),[])),r=H(Object(o.useCallback)((function(e){return e.sptarkovWorkshopUrl}),[])),n=H(Object(o.useCallback)((function(e){return e.sptarkovDocumentationUrl}),[]));return Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)(d.a,{className:e.headerContainer,children:[Object(h.jsxs)(d.a,{className:e.linksContainer,children:[Object(h.jsx)(j.a,{underline:"hover",color:"inherit",id:"website-link",href:t,className:e.link,children:"Website"}),Object(h.jsx)(j.a,{underline:"hover",color:"inherit",id:"workshop-link",href:r,className:e.link,children:"Workshop"}),Object(h.jsx)(j.a,{underline:"hover",color:"inherit",id:"documentation-link",href:n,className:e.link,children:"Documentation"})]}),Object(h.jsx)(d.a,{className:e.formContainer,children:Object(h.jsx)(q,{})})]})})},Z=r(195),$=Object(m.a)((function(e){return{breadcrumbHolder:{display:"flex",flex:"0 1 3vh",flexDirection:"row",alignItems:"center",padding:"0 10vw 0 10vw",borderBottom:"1px solid ".concat(e.palette.background.paper)},breadcrumb:{display:"flex",flex:"0 1 3vh",flexDirection:"row",flexGrow:1},link:{color:e.palette.text.secondary,display:"flex",padding:"0 1vw 0 1vw",height:"100%",alignItems:"center",borderBottom:"1px solid transparent","&:hover":{color:e.palette.action.hover,cursor:"pointer"}},currentItem:{cursor:"default",borderBottom:"1px solid ".concat(e.palette.action.hover)}}})),ee=function(){var e=$(),t=H((function(e){return e.setSelectedItem})),r=H((function(e){return e.itemsHierarchy})),n=H((function(e){return[e.searchInput,e.setSearchInput]})),a=Object(l.a)(n,2),c=a[0],i=a[1],s=H((function(e){return e.selectedItem})),u=Object(o.useState)([]),m=Object(l.a)(u,2),p=m[0],b=m[1];Object(o.useEffect)((function(){var e;if(s){for(var t=[s],n=null===s||void 0===s||null===(e=s.item)||void 0===e?void 0:e._parent;n;){var a,o=r[n];t.push(o),n=null===o||void 0===o||null===(a=o.item)||void 0===a?void 0:a._parent}b(t.filter((function(e){return void 0!==e&&null!==e})).reverse())}}),[s,r]);return Object(h.jsx)(d.a,{className:e.breadcrumbHolder,children:Object(h.jsxs)(Z.a,{"aria-label":"breadcrumb",className:e.breadcrumb,id:"navigation-breadcrumb",children:[Object(h.jsx)(j.a,{underline:"hover",color:"inherit",href:"/",id:"home-breadcrumb",className:e.link,children:Object(h.jsx)(f.a,{variant:"body2",children:"Home"})},"home"),p.map((function(r,n){return function(r,n){return c===r.locale.Name||c===r.item._id||c===r.item._name?Object(h.jsx)(f.a,{variant:"body2",className:e.currentItem,children:r.locale.Name?r.locale.Name:r.item._name},r.item._id):Object(h.jsx)(j.a,{underline:"hover",color:"inherit",onClick:function(){i(r.item._id),t(void 0)},className:e.link,children:Object(h.jsx)(f.a,{variant:"body2",children:r.locale.Name?r.locale.Name:r.item._name})},n)}(r,n.toString())}))]})})},te=r(62),re=r(205),ne=r(189),ae=r(192),oe=r(97),ce=r.n(oe),ie=Object(m.a)((function(e){return{searchAreaHolder:{display:"flex",flexGrow:1,flexDirection:"column",background:e.palette.background.paper,padding:"2vh 2vw 2vh 2vw"},jsonHolder:{display:"flex",flexGrow:1,alignItems:"center",flexDirection:"column",background:e.palette.background.paper,maxHeight:"80vh"},autocomplete:{}}})),se=function(){var e=ie(),t=H((function(e){return e.preferedLocale})),r=H(Object(o.useCallback)((function(e){return e.preferedJsonViewerTheme}),[])),n=H((function(e){return[e.searchInput,e.setSearchInput]})),a=Object(l.a)(n,2),c=a[0],i=a[1],s=H((function(e){return[e.setHierarchy,e.initHierarchy]})),u=Object(l.a)(s,2),m=u[0],p=u[1],b=H((function(e){return[e.selectedItem,e.setSelectedItem]})),j=Object(l.a)(b,2),v=j[0],w=j[1],g=Object(o.useState)([]),C=Object(l.a)(g,2),L=C[0],I=C[1],S=Object(o.useState)(!1),N=Object(l.a)(S,2),_=N[0],D=N[1],R=function(){var e=Object(x.a)(O.a.mark((function e(r){var n,a;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k(r,t);case 2:n=e.sent,a=null===n||void 0===n?void 0:n.map((function(e){return{id:e.item._id,name:e.locale.Name?e.locale.Name:e.item._name,shortName:e.locale.ShortName}})),I(a||[]);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),M=Object(o.useCallback)(function(){var e=Object(x.a)(O.a.mark((function e(r){var n,a,o;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E(r,t);case 2:if(n=e.sent){e.next=7;break}return w(void 0),i(""),e.abrupt("return");case 7:return w(n),a={id:n.item._id,name:n.locale.Name?n.locale.Name:n.item._name,shortName:n.locale.ShortName},I([a]),i(a.name),e.next=13,y(n.item,t);case 13:o=e.sent,m(o||{});case 15:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[]);Object(o.useEffect)((function(){return p()}),[p]),Object(o.useEffect)((function(){c&&c.match(/([a-z0-9]{24})/)&&M(c)}),[M,c]);var T=function(){var e=Object(x.a)(O.a.mark((function e(t){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(!t||t.length<3||_)){e.next=5;break}return w(void 0),I([]),D(!1),e.abrupt("return");case 5:if(D(!0),!t.match(/([a-z0-9]{24})/)){e.next=11;break}return e.next=9,M(t);case 9:e.next=13;break;case 11:return e.next=13,R(t);case 13:D(!1);case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return Object(h.jsxs)(d.a,{className:e.searchAreaHolder,children:[Object(h.jsx)(ne.a,{id:"search-autocomplete",options:L.map((function(e){return{name:e.name,shortName:e.shortName,id:e.id}})),getOptionLabel:function(e){return e.name?e.name:e.id},isOptionEqualToValue:function(e,t){return function(e,t){var r,n,a,o,c,i;return(null===(r=e.name)||void 0===r?void 0:r.toLocaleLowerCase())===(null===(n=t.name)||void 0===n?void 0:n.toLocaleLowerCase())||(null===(a=e.id)||void 0===a?void 0:a.toLocaleLowerCase())===(null===(o=t.id)||void 0===o?void 0:o.toLocaleLowerCase())||(null===(c=e.shortName)||void 0===c?void 0:c.toLocaleLowerCase())===(null===(i=t.shortName)||void 0===i?void 0:i.toLocaleLowerCase())}(e,t)},open:!_&&c.length>=3&&c!==(null===v||void 0===v?void 0:v.locale.Name)&&c!==(null===v||void 0===v?void 0:v.item._name),className:e.autocomplete,inputValue:c||"",onInputChange:function(){var e=Object(x.a)(O.a.mark((function e(t,r){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return w(void 0),i(r),e.next=6,T(r.trim());case 6:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),value:function(){var e=L.find((function(e){return e.id===c||e.name===c}));return e||null}(),onChange:function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r){e.next=5;break}if(!(n=L.find((function(e){return e.name===r.name})))){e.next=5;break}return e.next=5,M(n.id);case 5:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),renderInput:function(e){return Object(h.jsx)(ae.a,Object(te.a)(Object(te.a)({},e),{},{label:"Search by name or ID"}))},renderOption:function(e,t,r){return Object(o.createElement)("li",Object(te.a)(Object(te.a)({},e),{},{key:t.id}),Object(h.jsx)(f.a,{children:t.name}))},filterOptions:function(e,t){return e.filter((function(e){var r,n,a,o,c;return console.log(null===(r=e.shortName)||void 0===r?void 0:r.toLocaleLowerCase(),t.inputValue.toLocaleLowerCase(),null===(n=e.shortName)||void 0===n?void 0:n.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase())),(null===(a=e.name)||void 0===a?void 0:a.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase()))||(null===(o=e.id)||void 0===o?void 0:o.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase()))||(null===(c=e.shortName)||void 0===c?void 0:c.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase()))}))},filterSelectedOptions:!0}),Object(h.jsx)(d.a,{className:e.jsonHolder,children:_?Object(h.jsx)(re.a,{size:100}):v?Object(h.jsx)(ce.a,{src:v,theme:r,style:{marginTop:"2vh",width:"100%",overflowY:"auto",display:"flex"}}):Object(h.jsx)(f.a,{id:"search-no-data",children:"No data to display"})})]})},le=Object(m.a)((function(e){return{container:{background:"background.default",display:"flex",flexDirection:"column",flexGrow:1,height:"100vh",maxheight:"100vh"},searchContainer:{display:"flex",flexDirection:"row",flexGrow:1,padding:"2vh 2vw 1vh 2vw"}}})),ue=function(){var e=le();return Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)(d.a,{className:e.container,children:[Object(h.jsx)(X,{}),Object(h.jsx)(ee,{}),Object(h.jsx)(d.a,{className:e.searchContainer,children:Object(h.jsx)(se,{})}),Object(h.jsx)(b,{})]})})},de=r(187),fe=r(188),me=r(92),he=r(52),pe=r(44),be=r(186),je=r(48),ve=Object(je.a)({mode:L.DARK_MODE,background:{default:me.a[900],paper:"#121212"},text:{primary:he.a.white,secondary:"#8894a2",disabled:pe.a[100]},action:{hover:be.a[700]}}),Oe=r(43),xe=Object(je.a)({mode:L.LIGHT_MODE,background:{default:me.a[100],paper:me.a[300]},text:{primary:he.a.black,secondary:Oe.a[500],disabled:me.a[600]},action:{hover:Oe.a[500]}}),we=r(98),ge=function(){var e,t=Object(de.a)("(prefers-color-scheme: dark)"),r=H((function(e){return[e.preferedColorScheme,e.setPreferedColorScheme]})),a=Object(l.a)(r,2),c=a[0],i=a[1];return Object(o.useEffect)((function(){var e=localStorage.getItem(n.PREFERED_COLOR_SCHEME);if(e)i(e);else{var r=t?L.DARK_MODE:L.LIGHT_MODE;i(r)}}),[t]),Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)(u.a,{theme:(e=c===L.DARK_MODE?ve:xe,Object(we.a)({palette:e,components:{MuiLink:{styleOverrides:{root:{"&:hover":{textDecoration:"none"}}}},MuiInput:{styleOverrides:{root:{"&:before":{borderColor:"transparent"},"&:after":{borderColor:"transparent"},"&:hover:not(.Mui-disabled):before":{borderColor:e.action.hover}},input:{"&:focus":{backgroundColor:"transparent"}}}},MuiTextField:{styleOverrides:{root:{"& label.Mui-focused":{color:e.action.hover},"& .MuiFilledInput-underline:after":{borderBottomColor:e.action.hover}}}},MuiInputBase:{styleOverrides:{root:{"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"".concat(e.action.hover," !important")}}}},MuiFormLabel:{styleOverrides:{root:{"&.Mui-focused .MuiInputLabel":{color:e.action.hover}}}}}})),children:[Object(h.jsx)(fe.a,{}),Object(h.jsx)(ue,{})]})})},ke=function(e){e&&e instanceof Function&&r.e(3).then(r.bind(null,207)).then((function(t){var r=t.getCLS,n=t.getFID,a=t.getFCP,o=t.getLCP,c=t.getTTFB;r(e),n(e),a(e),o(e),c(e)}))};s.a.render(Object(h.jsx)(c.a.StrictMode,{children:Object(h.jsx)(ge,{})}),document.getElementById("root")),ke()}},[[126,1,2]]]);
+//# sourceMappingURL=main.33101a6f.chunk.js.map
\ No newline at end of file
diff --git a/public/static/js/main.e49801bc.chunk.js.map b/public/static/js/main.33101a6f.chunk.js.map
similarity index 99%
rename from public/static/js/main.e49801bc.chunk.js.map
rename to public/static/js/main.33101a6f.chunk.js.map
index 3eeb3b3..040ddc2 100644
--- a/public/static/js/main.e49801bc.chunk.js.map
+++ b/public/static/js/main.33101a6f.chunk.js.map
@@ -1 +1 @@
-{"version":3,"sources":["dataaccess/SaveKeys.ts","components/Footer.tsx","dataaccess/ItemBackend.ts","state/ReactJsonViewThemes.ts","state/ThemeMode.ts","state/GlobalState.ts","components/DarkModeToggle.tsx","components/LocaleSelect.tsx","components/JsonTheme.tsx","components/HeaderForm.tsx","components/Header.tsx","pages/mainPageComponents/NavigationBreadcrumb.tsx","pages/mainPageComponents/SearchArea.tsx","pages/MainPage.tsx","theme/darkTheme.ts","theme/lightTheme.ts","App.tsx","theme/Theme.ts","reportWebVitals.ts","index.tsx"],"names":["LocalStorageKeys","SessionStorageKeys","useStyles","makeStyles","theme","footerHolder","display","flex","flexDirection","alignItems","justifyContent","padding","Footer","classes","Box","className","Typography","searchItem","query","locale","a","fetch","process","mode","method","headers","body","JSON","stringify","resp","status","json","items","console","error","getItem","id","requestUrl","getItemHierarchy","itemData","hierarchy","currItemID","_id","currentHierarchy","useGlobalState","getState","itemsHierarchy","gotAllHierarchy","item","_parent","getLocaleList","ThemeMode","ReactJsonViewThemes","preferedLocale","localStorage","PREFERED_LOCALE","storedPreferedJsonTheme","PREFERED_JSON_THEME","preferedColorScheme","PREFERED_COLOR_SCHEME","create","set","sptarkovWebsiteUrl","sptarkovWorkshopUrl","sptarkovDocumentationUrl","setPreferedLocale","newLocale","setItem","_state","localesList","refreshLocalesList","locales","sessionStorage","LOCALES","parse","log","preferedJsonViewerTheme","includes","setPreferedJsonViewerTheme","newJsonTheme","DARK_MODE","setPreferedColorScheme","newColorScheme","searchInput","setSearchInput","newInput","desiredSearchInput","setDesiredSearchInput","initHierarchy","ITEMS_HIERARCHY","setHierarchy","newHierarchy","state","newStateHierarchy","Object","assign","selectedItem","undefined","setSelectedItem","newSelectedItem","modeToggleButtonHolder","color","flexGrow","iconButton","ml","DarkModeToggle","useTheme","useCallback","palette","IconButton","sx","onClick","newTheme","LIGHT_MODE","localeHolder","select","LocaleSelect","useEffect","FormControl","fullWidth","variant","Select","displayEmpty","labelId","value","length","onChange","evt","target","MenuItem","disabled","map","idx","jsonHolder","JsonTheme","label","form","height","HeaderForm","headerContainer","backgroundColor","background","paper","linksContainer","formContainer","link","borderBottom","action","hover","Header","websiteLink","workshopLink","documentationLink","Link","underline","href","breadcrumbHolder","breadcrumb","text","secondary","cursor","currentItem","NavigationBreadcrumb","itemHierachyState","searchInputState","useState","setCurrentHierarchy","push","filter","elt","reverse","Breadcrumbs","Name","_name","formatLink","toString","searchAreaHolder","maxHeight","autocomplete","SearchArea","selectOptions","setSelecteOptions","isbusy","setIsBusy","handleNameInput","input","searchResults","options","res","name","shortName","ShortName","handleIDInput","itemJson","itemObj","itemHierarchy","match","handleInput","Autocomplete","getOptionLabel","option","isOptionEqualToValue","toLocaleLowerCase","findOptionValue","open","inputValue","onInputChange","newValue","trim","selectedOption","find","event","renderInput","params","TextField","renderOption","props","key","filterOptions","filterSelectedOptions","CircularProgress","size","src","style","marginTop","width","overflowY","container","maxheight","searchContainer","MainPage","darkPalette","createPalette","default","grey","primary","common","white","lightBlue","yellow","lightPalette","black","blue","App","prefersDarkMode","useMediaQuery","localPreferedTheme","preferedTheme","ThemeProvider","createTheme","components","MuiLink","styleOverrides","root","textDecoration","MuiInput","borderColor","MuiTextField","borderBottomColor","MuiInputBase","MuiFormLabel","CssBaseline","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.e49801bc.chunk.js","sourcesContent":["export enum LocalStorageKeys {\r\n PREFERED_COLOR_SCHEME = 'items.sp-tarkov.com-prefered-color-scheme',\r\n PREFERED_JSON_THEME = 'items.sp-tarkov.com-prefered-json-theme',\r\n PREFERED_LOCALE = 'items.sp-tarkov.com-prefered-locale'\r\n}\r\n\r\nexport enum SessionStorageKeys {\r\n LOCALES = 'items.sp-tarkov.com-locales',\r\n ITEMS_HIERARCHY = 'items.sp-tarkov.com-items-hierarchy',\r\n}","import { Box, Theme, Typography } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n footerHolder: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '0 10vw 0 10vw'\r\n }\r\n}))\r\n\r\nexport const Footer = () => {\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n SPT-Aki ©2021 Created by Rev and Shirito\r\n \r\n )\r\n}\r\n","import { ItemWithLocale } from '../dto/ItemWithLocale';\r\nimport { ItemHierarchy } from '../dto/ItemHierarchy';\r\nimport { ItemData } from '../dto/ItemData';\r\nimport { useGlobalState } from '../state/GlobalState';\r\n\r\nexport const searchItem = async (query: string, locale?: string): Promise => {\r\n const resp = await fetch(\r\n `${process.env.REACT_APP_BACKEND_URL}/api/search`,\r\n {\r\n mode: 'cors',\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(locale ? { query, locale } : { query })\r\n },\r\n )\r\n if (resp.status === 200) {\r\n const json = await resp.json()\r\n return json.items;\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n return []\r\n}\r\n\r\nexport const getItem = async (id: string, locale?: string): Promise => {\r\n let requestUrl = `${process.env.REACT_APP_BACKEND_URL}/api/item?id=${id}`;\r\n if (locale) requestUrl = `${requestUrl}&locale=${locale}`\r\n const resp = await fetch(requestUrl, { mode: 'cors' })\r\n if (resp.status === 200) {\r\n return await resp.json();\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n}\r\n\r\nexport const getItemHierarchy = async (itemData: ItemData, locale?: string): Promise => {\r\n // Check if we have all the item hierarchy\r\n const hierarchy: ItemHierarchy = {}\r\n let currItemID: string | undefined = itemData?._id\r\n const currentHierarchy = useGlobalState.getState().itemsHierarchy\r\n let gotAllHierarchy = true\r\n while (currItemID) {\r\n if (!(currItemID in currentHierarchy)) {\r\n gotAllHierarchy = false\r\n break\r\n }\r\n const item: ItemWithLocale = useGlobalState.getState().itemsHierarchy[currItemID]\r\n hierarchy[item.item._id] = item\r\n currItemID = item?.item?._parent\r\n }\r\n if (gotAllHierarchy) return hierarchy;\r\n\r\n // Otherwise get it\r\n let requestUrl = `${process.env.REACT_APP_BACKEND_URL}/api/item/hierarchy?id=${itemData._id}`;\r\n if (locale) requestUrl = `${requestUrl}&locale=${locale}`\r\n const resp = await fetch(requestUrl, { mode: 'cors' })\r\n if (resp.status === 200) {\r\n return await resp.json();\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n}\r\n\r\nexport const getLocaleList = async (): Promise => {\r\n const resp = await fetch(\r\n `${process.env.REACT_APP_BACKEND_URL}/api/locales`,\r\n { mode: 'cors' },\r\n )\r\n if (resp.status === 200) {\r\n return await resp.json();\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n}","// No choice but to hard code since it is only a type in the library\r\nexport const ReactJsonViewThemes = [\r\n 'apathy',\r\n 'apathy:inverted',\r\n 'ashes',\r\n 'bespin',\r\n 'brewer',\r\n 'bright:inverted',\r\n 'bright',\r\n 'chalk',\r\n 'codeschool',\r\n 'colors',\r\n 'eighties',\r\n 'embers',\r\n 'flat',\r\n 'google',\r\n 'grayscale',\r\n 'grayscale:inverted',\r\n 'greenscreen',\r\n 'harmonic',\r\n 'hopscotch',\r\n 'isotope',\r\n 'marrakesh',\r\n 'mocha',\r\n 'monokai',\r\n 'ocean',\r\n 'paraiso',\r\n 'pop',\r\n 'railscasts',\r\n 'rjv-default',\r\n 'shapeshifter',\r\n 'shapeshifter:inverted',\r\n 'solarized',\r\n 'summerfruit',\r\n 'summerfruit:inverted',\r\n 'threezerotwofour',\r\n 'tomorrow',\r\n 'tube',\r\n 'twilight'\r\n]","export enum ThemeMode {\r\n LIGHT_MODE = 'light',\r\n DARK_MODE = 'dark'\r\n}","import { ThemeKeys } from 'react-json-view'\r\nimport create from 'zustand'\r\nimport { getLocaleList } from '../dataaccess/ItemBackend'\r\nimport { LocalStorageKeys, SessionStorageKeys } from '../dataaccess/SaveKeys'\r\nimport { ItemHierarchy } from '../dto/ItemHierarchy'\r\nimport { ReactJsonViewThemes } from './ReactJsonViewThemes'\r\nimport { ThemeMode } from './ThemeMode'\r\nimport { ItemWithLocale } from '../dto/ItemWithLocale';\r\n\r\nexport interface GlobalState {\r\n sptarkovWebsiteUrl: string\r\n sptarkovWorkshopUrl: string\r\n sptarkovDocumentationUrl: string\r\n\r\n preferedLocale: string\r\n setPreferedLocale: (newLocale: string) => void\r\n localesList: string[]\r\n refreshLocalesList: () => void\r\n\r\n preferedJsonViewerTheme: ThemeKeys\r\n setPreferedJsonViewerTheme: (newJsonTheme: string) => void\r\n\r\n preferedColorScheme: string\r\n setPreferedColorScheme: (newColorScheme: ThemeMode) => void\r\n\r\n searchInput: string\r\n setSearchInput: (newInput: string) => void\r\n\r\n desiredSearchInput: string\r\n setDesiredSearchInput: (newInput: string) => void\r\n\r\n itemsHierarchy: ItemHierarchy\r\n initHierarchy: () => void\r\n setHierarchy: (newHierarchy: ItemHierarchy) => void\r\n\r\n selectedItem: ItemWithLocale | undefined\r\n setSelectedItem: (newSelectedItem: ItemWithLocale | undefined) => void\r\n}\r\n\r\nconst preferedLocale = localStorage.getItem(LocalStorageKeys.PREFERED_LOCALE)\r\nconst storedPreferedJsonTheme = localStorage.getItem(\r\n LocalStorageKeys.PREFERED_JSON_THEME,\r\n)\r\nconst preferedColorScheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME)\r\n\r\nexport const useGlobalState = create((set) => ({\r\n sptarkovWebsiteUrl: process.env.REACT_APP_SPTARKOV_HOME ? process.env.REACT_APP_SPTARKOV_HOME : '',\r\n sptarkovWorkshopUrl: process.env.REACT_APP_SPTARKOV_WORKSHOP ? process.env.REACT_APP_SPTARKOV_WORKSHOP : '',\r\n sptarkovDocumentationUrl: process.env.REACT_APP_SPTARKOV_DOCUMENTATION ? process.env.REACT_APP_SPTARKOV_DOCUMENTATION : '',\r\n\r\n // Locale\r\n preferedLocale: preferedLocale ? preferedLocale : 'en',\r\n setPreferedLocale: (newLocale: string) => {\r\n localStorage.setItem(LocalStorageKeys.PREFERED_LOCALE, newLocale)\r\n set((_state) => ({ preferedLocale: newLocale }))\r\n },\r\n localesList: [],\r\n refreshLocalesList: async () => {\r\n const locales = sessionStorage.getItem(SessionStorageKeys.LOCALES);\r\n const localesList = locales ? JSON.parse(locales) : await getLocaleList()\r\n console.log(localesList)\r\n if (!locales) sessionStorage.setItem(SessionStorageKeys.LOCALES, JSON.stringify(localesList))\r\n set((_state) => ({ localesList: localesList ? localesList : [] }))\r\n },\r\n\r\n // Json viewer theme\r\n preferedJsonViewerTheme:\r\n storedPreferedJsonTheme &&\r\n ReactJsonViewThemes.includes(storedPreferedJsonTheme)\r\n ? (storedPreferedJsonTheme as ThemeKeys)\r\n : (ReactJsonViewThemes[0] as ThemeKeys),\r\n setPreferedJsonViewerTheme: (newJsonTheme: string) => {\r\n localStorage.setItem(LocalStorageKeys.PREFERED_JSON_THEME, newJsonTheme)\r\n set((_state) => ({ preferedJsonViewerTheme: newJsonTheme as ThemeKeys }))\r\n },\r\n\r\n // Prefered theme\r\n preferedColorScheme: preferedColorScheme\r\n ? preferedColorScheme\r\n : ThemeMode.DARK_MODE,\r\n setPreferedColorScheme: (newColorScheme: ThemeMode) => {\r\n localStorage.setItem(LocalStorageKeys.PREFERED_COLOR_SCHEME, newColorScheme)\r\n set((_state) => ({ preferedColorScheme: newColorScheme }))\r\n },\r\n\r\n // SearchInput\r\n searchInput: '',\r\n setSearchInput: (newInput: string) =>\r\n set((_state) => ({ searchInput: newInput })),\r\n desiredSearchInput: '',\r\n setDesiredSearchInput: (newInput: string) =>\r\n set((_state) => ({ desiredSearchInput: newInput })),\r\n\r\n // Hierarchy\r\n itemsHierarchy: {},\r\n initHierarchy: () => {\r\n const itemsHierarchy = sessionStorage.getItem(SessionStorageKeys.ITEMS_HIERARCHY);\r\n if (itemsHierarchy) {\r\n set((_state) => ({ itemsHierarchy: JSON.parse(itemsHierarchy) }))\r\n }\r\n },\r\n setHierarchy: (newHierarchy: ItemHierarchy) => {\r\n set((state) => {\r\n const newStateHierarchy = Object.assign({}, state.itemsHierarchy, newHierarchy);\r\n sessionStorage.setItem(SessionStorageKeys.ITEMS_HIERARCHY, JSON.stringify(newStateHierarchy))\r\n return ({\r\n itemsHierarchy: newStateHierarchy,\r\n })\r\n });\r\n },\r\n\r\n // Selected item\r\n selectedItem: undefined,\r\n setSelectedItem: (newSelectedItem: ItemWithLocale | undefined) =>\r\n set((_state) => ({ selectedItem: newSelectedItem })),\r\n}))\r\n","import { Box, IconButton, Theme } from '@mui/material'\r\nimport { useTheme } from '@mui/material/styles'\r\nimport Brightness4Icon from '@mui/icons-material/Brightness4'\r\nimport Brightness7Icon from '@mui/icons-material/Brightness7'\r\nimport { ThemeMode } from '../state/ThemeMode'\r\nimport { useGlobalState } from '../state/GlobalState'\r\nimport { useCallback } from 'react'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n modeToggleButtonHolder: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'primary',\r\n flexGrow: 1,\r\n },\r\n iconButton: {\r\n ml: 1,\r\n },\r\n}))\r\n\r\nexport const DarkModeToggle = () => {\r\n const theme = useTheme()\r\n const classes = useStyles()\r\n const [preferedColorScheme, setPreferedColorScheme] = useGlobalState(\r\n useCallback(\r\n (state) => [state.preferedColorScheme, state.setPreferedColorScheme],\r\n [],\r\n ),\r\n )\r\n\r\n const toggleColor = () => {\r\n const newTheme =\r\n preferedColorScheme === ThemeMode.LIGHT_MODE\r\n ? ThemeMode.DARK_MODE\r\n : ThemeMode.LIGHT_MODE\r\n setPreferedColorScheme(newTheme)\r\n }\r\n\r\n return (\r\n \r\n {theme.palette.mode} mode\r\n \r\n {theme.palette.mode === 'dark' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n","import { Select, MenuItem, Theme, Box, FormControl } from '@mui/material'\r\nimport {makeStyles} from '@mui/styles'\r\nimport { useCallback, useEffect } from 'react';\r\nimport { useGlobalState } from '../state/GlobalState'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n localeHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n padding: '0 0.5vw 0 0.5vw'\r\n },\r\n select: {\r\n display: 'flex',\r\n flexGrow: 1\r\n }\r\n}))\r\n\r\n\r\n\r\nexport const LocaleSelect = () => {\r\n const classes = useStyles()\r\n const [preferedLocale, setPreferedLocale] = useGlobalState(useCallback(state => [state.preferedLocale, state.setPreferedLocale],[]))\r\n const [localesList, refreshLocalesList] = useGlobalState(useCallback(state => [state.localesList, state.refreshLocalesList],[]))\r\n\r\n useEffect(()=> refreshLocalesList(), [refreshLocalesList])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n","import {\r\n Box,\r\n FormControl,\r\n MenuItem,\r\n Select,\r\n Theme,\r\n} from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { ReactJsonViewThemes } from '../state/ReactJsonViewThemes'\r\nimport { LocalStorageKeys } from '../dataaccess/SaveKeys'\r\nimport { useGlobalState } from '../state/GlobalState'\r\nimport { useCallback } from 'react'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n jsonHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n padding: '0 0.5vw 0 0.5vw'\r\n },\r\n select: {\r\n display: 'flex',\r\n flexGrow: 1\r\n }\r\n}))\r\n\r\nexport const JsonTheme = () => {\r\n const classes = useStyles()\r\n const [preferedJsonViewerTheme, setPreferedJsonViewerTheme] = useGlobalState(\r\n useCallback(\r\n (state) => [\r\n state.preferedJsonViewerTheme,\r\n state.setPreferedJsonViewerTheme,\r\n ],\r\n [],\r\n ),\r\n )\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n","import { DarkModeToggle } from './DarkModeToggle'\r\nimport { LocaleSelect } from './LocaleSelect'\r\nimport { JsonTheme } from './JsonTheme'\r\nimport { Theme } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n form: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n justifyContent: 'flex-end',\r\n height: '100%'\r\n },\r\n}));\r\n\r\nexport const HeaderForm = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n >\r\n )\r\n}\r\n","import { Box, Link, Theme } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { useCallback } from 'react';\r\nimport { useGlobalState } from '../state/GlobalState';\r\nimport { HeaderForm } from './HeaderForm';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n headerContainer: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n backgroundColor: theme.palette.background.paper,\r\n alignItems: 'center',\r\n padding: '0 10vw 0 10vw',\r\n },\r\n linksContainer: {\r\n display: 'flex',\r\n flexGrow: 2,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n formContainer: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n link: {\r\n display: 'flex',\r\n padding: '0 1vw 0 1vw',\r\n height: '100%',\r\n alignItems: 'center',\r\n borderBottom: `1px solid transparent`,\r\n '&:hover': {\r\n borderBottom: `1px solid ${theme.palette.action.hover}`,\r\n },\r\n },\r\n}))\r\n\r\nexport const Header = () => {\r\n const classes = useStyles()\r\n const websiteLink = useGlobalState(useCallback((state) => state.sptarkovWebsiteUrl,[]))\r\n const workshopLink = useGlobalState(useCallback((state) => state.sptarkovWorkshopUrl,[]))\r\n const documentationLink = useGlobalState(useCallback((state) => state.sptarkovDocumentationUrl,[]))\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Website\r\n \r\n \r\n Workshop\r\n \r\n \r\n Documentation\r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n","import { useState } from 'react'\r\nimport { Box, Breadcrumbs, Link, Theme, Typography } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { useEffect } from 'react'\r\nimport { useGlobalState } from '../../state/GlobalState'\r\nimport { ItemWithLocale } from '../../dto/ItemWithLocale'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n breadcrumbHolder: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0 10vw 0 10vw',\r\n borderBottom: `1px solid ${theme.palette.background.paper}`,\r\n },\r\n breadcrumb: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n },\r\n link: {\r\n color: theme.palette.text.secondary,\r\n display: 'flex',\r\n padding: '0 1vw 0 1vw',\r\n height: '100%',\r\n alignItems: 'center',\r\n borderBottom: `1px solid transparent`,\r\n '&:hover': {\r\n color: theme.palette.action.hover,\r\n cursor: 'pointer',\r\n },\r\n },\r\n currentItem: {\r\n cursor: 'default',\r\n borderBottom: `1px solid ${theme.palette.action.hover}`,\r\n },\r\n}))\r\n\r\nexport const NavigationBreadcrumb = () => {\r\n const classes = useStyles()\r\n const setSelectedItem = useGlobalState((state) => state.setSelectedItem)\r\n const itemHierachyState = useGlobalState((state) => state.itemsHierarchy)\r\n const [searchInputState, setSearchInput] = useGlobalState((state) => [\r\n state.searchInput,\r\n state.setSearchInput,\r\n ])\r\n const selectedItem = useGlobalState((state) => state.selectedItem)\r\n const [currentHierarchy, setCurrentHierarchy] = useState([])\r\n\r\n useEffect(() => {\r\n if (!selectedItem) return;\r\n\r\n const hierarchy: ItemWithLocale[] = [selectedItem]\r\n let currItemID: string | undefined = selectedItem?.item?._parent\r\n while (currItemID) {\r\n const item: ItemWithLocale = itemHierachyState[currItemID]\r\n hierarchy.push(item)\r\n currItemID = item?.item?._parent\r\n }\r\n setCurrentHierarchy(hierarchy.filter(elt => elt !== undefined && elt !== null).reverse())\r\n }, [selectedItem, itemHierachyState])\r\n\r\n const formatLink = (item: ItemWithLocale, idx: string) => {\r\n if (\r\n searchInputState === item.locale.Name ||\r\n searchInputState === item.item._id ||\r\n searchInputState === item.item._name\r\n ) {\r\n return (\r\n \r\n {item.locale.Name ? item.locale.Name : item.item._name}\r\n \r\n )\r\n } else {\r\n return (\r\n {\r\n setSearchInput(item.item._id)\r\n setSelectedItem(undefined)\r\n }}\r\n className={classes.link}\r\n >\r\n {item.locale.Name ? item.locale.Name : item.item._name}\r\n \r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Home\r\n \r\n {currentHierarchy.map((item, idx) => formatLink(item, idx.toString()))}\r\n \r\n \r\n )\r\n}\r\n","import { SyntheticEvent, useCallback, useEffect, useState } from 'react'\r\nimport {\r\n Autocomplete,\r\n Box,\r\n CircularProgress,\r\n Theme,\r\n Typography,\r\n} from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport TextField from '@mui/material/TextField'\r\nimport ReactJson from 'react-json-view'\r\nimport {\r\n getItem,\r\n getItemHierarchy,\r\n searchItem,\r\n} from '../../dataaccess/ItemBackend'\r\nimport { ItemOption } from '../../dto/ItemOption'\r\nimport { useGlobalState } from '../../state/GlobalState'\r\n\r\ninterface IItemOption {\r\n id?: string\r\n name?: string\r\n shortName?: string\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n searchAreaHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n flexDirection: 'column',\r\n background: theme.palette.background.paper,\r\n padding: '2vh 2vw 2vh 2vw',\r\n },\r\n jsonHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n background: theme.palette.background.paper,\r\n maxHeight: '80vh',\r\n },\r\n autocomplete: {},\r\n}))\r\n\r\nexport const SearchArea = () => {\r\n const classes = useStyles()\r\n const preferedLocale = useGlobalState((state) => state.preferedLocale)\r\n const preferedJsonViewerTheme = useGlobalState(\r\n useCallback((state) => state.preferedJsonViewerTheme, []),\r\n )\r\n const [searchInputState, setSearchInput] = useGlobalState((state) => [\r\n state.searchInput,\r\n state.setSearchInput,\r\n ])\r\n const [setHierarchy, initHierarchy] = useGlobalState((state) => [state.setHierarchy, state.initHierarchy])\r\n const [selectedItem, setSelectedItem] = useGlobalState((state) => [\r\n state.selectedItem,\r\n state.setSelectedItem,\r\n ])\r\n const [selectOptions, setSelecteOptions] = useState([])\r\n const [isbusy, setIsBusy] = useState(false)\r\n const searchThreshold = 3\r\n\r\n const handleNameInput = async (input: string) => {\r\n const searchResults = await searchItem(input, preferedLocale)\r\n const options = searchResults?.map((res) => ({\r\n id: res.item._id,\r\n name: res.locale.Name ? res.locale.Name : res.item._name,\r\n shortName: res.locale.ShortName\r\n }))\r\n setSelecteOptions(options ? options : [])\r\n }\r\n\r\n const handleIDInput = useCallback(async (input: string) => {\r\n const itemJson = await getItem(input, preferedLocale)\r\n if (!itemJson) {\r\n setSelectedItem(undefined)\r\n setSearchInput('')\r\n return;\r\n }\r\n\r\n setSelectedItem(itemJson)\r\n const itemObj = {\r\n id: itemJson.item._id,\r\n name: itemJson.locale.Name ? itemJson.locale.Name : itemJson.item._name,\r\n shortName: itemJson.locale.ShortName\r\n }\r\n setSelecteOptions([itemObj])\r\n setSearchInput(itemObj.name)\r\n\r\n // Update hierachy\r\n const itemHierarchy = await getItemHierarchy(\r\n itemJson.item,\r\n preferedLocale,\r\n )\r\n setHierarchy(itemHierarchy ? itemHierarchy : {})\r\n // eslint-disable-next-line\r\n }, []) // Need to only be created on startup\r\n\r\n useEffect(() => initHierarchy(), [initHierarchy])\r\n\r\n useEffect(() => {\r\n if (searchInputState && searchInputState.match(/([a-z0-9]{24})/)) {\r\n handleIDInput(searchInputState)\r\n }\r\n }, [handleIDInput, searchInputState])\r\n\r\n const handleInput = async (input: string) => {\r\n if (!input || input.length < searchThreshold || isbusy) {\r\n setSelectedItem(undefined)\r\n setSelecteOptions([])\r\n setIsBusy(false)\r\n return\r\n }\r\n setIsBusy(true)\r\n\r\n if (input.match(/([a-z0-9]{24})/)) await handleIDInput(input)\r\n else await handleNameInput(input)\r\n\r\n setIsBusy(false)\r\n }\r\n\r\n const formatDisplayItems = () => {\r\n // If loading\r\n if (isbusy) return \r\n\r\n // If finished loading\r\n if (selectedItem){\r\n return (\r\n \r\n )\r\n }\r\n else return No data to display\r\n }\r\n\r\n const findOptionValue = (option: ItemOption, value: ItemOption): boolean => {\r\n return option.name?.toLocaleLowerCase() === value.name?.toLocaleLowerCase()\r\n || option.id?.toLocaleLowerCase() === value.id?.toLocaleLowerCase()\r\n || option.shortName?.toLocaleLowerCase() === value.shortName?.toLocaleLowerCase()\r\n }\r\n\r\n return (\r\n \r\n ({name: elt.name, shortName: elt.shortName, id: elt.id}))}\r\n getOptionLabel={(option)=> option.name ? option.name : option.id}\r\n isOptionEqualToValue={(option, value) => findOptionValue(option, value)}\r\n open={!isbusy && searchInputState.length >= searchThreshold && (searchInputState !== selectedItem?.locale.Name && searchInputState !== selectedItem?.item._name)}\r\n className={classes.autocomplete}\r\n inputValue={searchInputState ? searchInputState : ''}\r\n onInputChange={async (evt: SyntheticEvent, newValue: string) => {\r\n if (!evt) return\r\n setSelectedItem(undefined)\r\n setSearchInput(newValue)\r\n await handleInput(newValue.trim())\r\n }}\r\n value={(()=>{\r\n const selectedOption = selectOptions.find(elt => elt.id === searchInputState || elt.name === searchInputState);\r\n return selectedOption ? selectedOption : null;\r\n })()}\r\n onChange={async (event: SyntheticEvent, newValue: IItemOption | null) => {\r\n if (newValue) {\r\n const selectedOption = selectOptions.find(\r\n (elt) => elt.name === newValue.name,\r\n )\r\n if (selectedOption) await handleIDInput(selectedOption.id)\r\n }\r\n }}\r\n renderInput={(params) =>(\r\n \r\n )}\r\n renderOption={(props, option, state) => (\r\n {option.name}\r\n )}\r\n filterOptions={(options, state) => options.filter(elt =>{\r\n console.log(elt.shortName?.toLocaleLowerCase(), state.inputValue.toLocaleLowerCase(), elt.shortName?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase()))\r\n return (elt.name?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase())\r\n || elt.id?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase())\r\n || elt.shortName?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase()))\r\n })}\r\n filterSelectedOptions\r\n />\r\n {formatDisplayItems()}\r\n \r\n )\r\n}\r\n","import {Box, Theme} from '@mui/material'\r\nimport {Footer} from '../components/Footer'\r\nimport {Header} from '../components/Header'\r\nimport {NavigationBreadcrumb} from './mainPageComponents/NavigationBreadcrumb'\r\nimport {SearchArea} from './mainPageComponents/SearchArea'\r\nimport {makeStyles} from \"@mui/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n container: {\r\n background: 'background.default',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n height: '100vh',\r\n maxheight: '100vh',\r\n },\r\n searchContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n padding: '2vh 2vw 1vh 2vw'\r\n }\r\n}))\r\n\r\nexport const MainPage = () => {\r\n const classes = useStyles();\r\n return (\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","import {ThemeMode} from '../state/ThemeMode';\r\nimport {common, grey, lightBlue, yellow} from '@mui/material/colors';\r\nimport createPalette from \"@mui/material/styles/createPalette\";\r\n\r\nexport const darkPalette = createPalette({\r\n mode: ThemeMode.DARK_MODE,\r\n background: {\r\n default: grey[900],\r\n paper: '#121212'\r\n },\r\n text: {\r\n primary: common.white,\r\n secondary: '#8894a2',\r\n disabled: lightBlue[100]\r\n },\r\n action: {\r\n hover: yellow[700]\r\n },\r\n});","import {ThemeMode} from '../state/ThemeMode';\r\nimport {blue, common, grey} from \"@mui/material/colors\";\r\nimport createPalette from \"@mui/material/styles/createPalette\";\r\n\r\nexport const lightPalette = createPalette({\r\n mode: ThemeMode.LIGHT_MODE,\r\n background: {\r\n default: grey[100],\r\n paper: grey[300]\r\n },\r\n text: {\r\n primary: common.black,\r\n secondary: blue[500],\r\n disabled: grey[600]\r\n },\r\n action: {\r\n hover: blue[500],\r\n }\r\n});","import {ThemeProvider} from '@mui/material/styles'\r\nimport {MainPage} from './pages/MainPage'\r\nimport {ThemeMode} from './state/ThemeMode'\r\nimport {CssBaseline, useMediaQuery} from '@mui/material'\r\nimport {useEffect} from \"react\";\r\nimport {darkPalette} from \"./theme/darkTheme\";\r\nimport {lightPalette} from \"./theme/lightTheme\";\r\nimport {getTheme} from \"./theme/Theme\";\r\nimport {LocalStorageKeys} from \"./dataaccess/SaveKeys\";\r\nimport { useGlobalState } from './state/GlobalState'\r\n\r\nconst App = () => {\r\n const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\r\n const [preferedColorScheme ,setPreferedColorScheme] = useGlobalState(state => [state.preferedColorScheme, state.setPreferedColorScheme])\r\n\r\n useEffect(() => {\r\n const localPreferedTheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME);\r\n if (localPreferedTheme) {\r\n setPreferedColorScheme(localPreferedTheme as ThemeMode)\r\n return\r\n }\r\n\r\n const preferedTheme = prefersDarkMode ? ThemeMode.DARK_MODE : ThemeMode.LIGHT_MODE;\r\n setPreferedColorScheme(preferedTheme)\r\n // eslint-disable-next-line\r\n }, [prefersDarkMode]) // Need to be only used on prefersDarkMode change\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n\r\nexport default App\r\n","import {createTheme, Palette} from '@mui/material/styles';\r\n\r\nexport const getTheme = (palette: Palette) => createTheme({\r\n palette: palette,\r\n components: {\r\n MuiLink: {\r\n styleOverrides: {\r\n root: {\r\n '&:hover': {\r\n textDecoration: 'none'\r\n }\r\n }\r\n }\r\n },\r\n MuiInput:{\r\n styleOverrides: {\r\n root: {\r\n '&:before': {\r\n borderColor: 'transparent',\r\n },\r\n '&:after': {\r\n borderColor: 'transparent',\r\n },\r\n '&:hover:not(.Mui-disabled):before': {\r\n borderColor: palette.action.hover,\r\n }\r\n },\r\n input:{\r\n '&:focus': {\r\n backgroundColor: 'transparent',\r\n },\r\n }\r\n }\r\n },\r\n MuiTextField: {\r\n styleOverrides: {\r\n root: {\r\n '& label.Mui-focused': {\r\n color: palette.action.hover,\r\n },\r\n '& .MuiFilledInput-underline:after': {\r\n borderBottomColor: palette.action.hover,\r\n }\r\n }\r\n }\r\n },\r\n MuiInputBase:{\r\n styleOverrides:{\r\n root:{\r\n '&.Mui-focused .MuiOutlinedInput-notchedOutline':{\r\n borderColor: `${palette.action.hover} !important`,\r\n }\r\n }\r\n }\r\n },\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root:{\r\n '&.Mui-focused .MuiInputLabel': {\r\n color: palette.action.hover\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["dataaccess/SaveKeys.ts","components/Footer.tsx","dataaccess/ItemBackend.ts","state/ReactJsonViewThemes.ts","state/ThemeMode.ts","state/GlobalState.ts","components/DarkModeToggle.tsx","components/LocaleSelect.tsx","components/JsonTheme.tsx","components/HeaderForm.tsx","components/Header.tsx","pages/mainPageComponents/NavigationBreadcrumb.tsx","pages/mainPageComponents/SearchArea.tsx","pages/MainPage.tsx","theme/darkTheme.ts","theme/lightTheme.ts","App.tsx","theme/Theme.ts","reportWebVitals.ts","index.tsx"],"names":["LocalStorageKeys","SessionStorageKeys","useStyles","makeStyles","theme","footerHolder","display","flex","flexDirection","alignItems","justifyContent","padding","Footer","classes","Box","className","Typography","searchItem","query","locale","a","fetch","process","mode","method","headers","body","JSON","stringify","resp","status","json","items","console","error","getItem","id","requestUrl","getItemHierarchy","itemData","hierarchy","currItemID","_id","currentHierarchy","useGlobalState","getState","itemsHierarchy","gotAllHierarchy","item","_parent","getLocaleList","ThemeMode","ReactJsonViewThemes","preferedLocale","localStorage","PREFERED_LOCALE","storedPreferedJsonTheme","PREFERED_JSON_THEME","preferedColorScheme","PREFERED_COLOR_SCHEME","create","set","sptarkovWebsiteUrl","sptarkovWorkshopUrl","sptarkovDocumentationUrl","setPreferedLocale","newLocale","setItem","_state","localesList","refreshLocalesList","locales","sessionStorage","LOCALES","parse","log","preferedJsonViewerTheme","includes","setPreferedJsonViewerTheme","newJsonTheme","DARK_MODE","setPreferedColorScheme","newColorScheme","searchInput","setSearchInput","newInput","desiredSearchInput","setDesiredSearchInput","initHierarchy","ITEMS_HIERARCHY","setHierarchy","newHierarchy","state","newStateHierarchy","Object","assign","selectedItem","undefined","setSelectedItem","newSelectedItem","modeToggleButtonHolder","color","flexGrow","iconButton","ml","DarkModeToggle","useTheme","useCallback","palette","IconButton","sx","onClick","newTheme","LIGHT_MODE","localeHolder","select","LocaleSelect","useEffect","FormControl","fullWidth","variant","Select","displayEmpty","labelId","value","length","onChange","evt","target","MenuItem","disabled","map","idx","jsonHolder","JsonTheme","label","form","height","HeaderForm","headerContainer","backgroundColor","background","paper","linksContainer","formContainer","link","borderBottom","action","hover","Header","websiteLink","workshopLink","documentationLink","Link","underline","href","breadcrumbHolder","breadcrumb","text","secondary","cursor","currentItem","NavigationBreadcrumb","itemHierachyState","searchInputState","useState","setCurrentHierarchy","push","filter","elt","reverse","Breadcrumbs","Name","_name","formatLink","toString","searchAreaHolder","maxHeight","autocomplete","SearchArea","selectOptions","setSelecteOptions","isbusy","setIsBusy","handleNameInput","input","searchResults","options","res","name","shortName","ShortName","handleIDInput","itemJson","itemObj","itemHierarchy","match","handleInput","Autocomplete","getOptionLabel","option","isOptionEqualToValue","toLocaleLowerCase","findOptionValue","open","inputValue","onInputChange","newValue","trim","selectedOption","find","event","renderInput","params","TextField","renderOption","props","key","filterOptions","filterSelectedOptions","CircularProgress","size","src","style","marginTop","width","overflowY","container","maxheight","searchContainer","MainPage","darkPalette","createPalette","default","grey","primary","common","white","lightBlue","yellow","lightPalette","black","blue","App","prefersDarkMode","useMediaQuery","localPreferedTheme","preferedTheme","ThemeProvider","createTheme","components","MuiLink","styleOverrides","root","textDecoration","MuiInput","borderColor","MuiTextField","borderBottomColor","MuiInputBase","MuiFormLabel","CssBaseline","reportWebVitals","onPerfEntry","Function","then","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.33101a6f.chunk.js","sourcesContent":["export enum LocalStorageKeys {\r\n PREFERED_COLOR_SCHEME = 'items.sp-tarkov.com-prefered-color-scheme',\r\n PREFERED_JSON_THEME = 'items.sp-tarkov.com-prefered-json-theme',\r\n PREFERED_LOCALE = 'items.sp-tarkov.com-prefered-locale'\r\n}\r\n\r\nexport enum SessionStorageKeys {\r\n LOCALES = 'items.sp-tarkov.com-locales',\r\n ITEMS_HIERARCHY = 'items.sp-tarkov.com-items-hierarchy',\r\n}","import { Box, Theme, Typography } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n footerHolder: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n padding: '0 10vw 0 10vw'\r\n }\r\n}))\r\n\r\nexport const Footer = () => {\r\n const classes = useStyles()\r\n\r\n return (\r\n \r\n SPT-Aki ©2021 Created by Rev and Shirito\r\n \r\n )\r\n}\r\n","import { ItemWithLocale } from '../dto/ItemWithLocale';\r\nimport { ItemHierarchy } from '../dto/ItemHierarchy';\r\nimport { ItemData } from '../dto/ItemData';\r\nimport { useGlobalState } from '../state/GlobalState';\r\n\r\nexport const searchItem = async (query: string, locale?: string): Promise => {\r\n const resp = await fetch(\r\n `${process.env.REACT_APP_BACKEND_URL}/api/search`,\r\n {\r\n mode: 'cors',\r\n method: 'post',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(locale ? { query, locale } : { query })\r\n },\r\n )\r\n if (resp.status === 200) {\r\n const json = await resp.json()\r\n return json.items;\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n return []\r\n}\r\n\r\nexport const getItem = async (id: string, locale?: string): Promise => {\r\n let requestUrl = `${process.env.REACT_APP_BACKEND_URL}/api/item?id=${id}`;\r\n if (locale) requestUrl = `${requestUrl}&locale=${locale}`\r\n const resp = await fetch(requestUrl, { mode: 'cors' })\r\n if (resp.status === 200) {\r\n return await resp.json();\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n}\r\n\r\nexport const getItemHierarchy = async (itemData: ItemData, locale?: string): Promise => {\r\n // Check if we have all the item hierarchy\r\n const hierarchy: ItemHierarchy = {}\r\n let currItemID: string | undefined = itemData?._id\r\n const currentHierarchy = useGlobalState.getState().itemsHierarchy\r\n let gotAllHierarchy = true\r\n while (currItemID) {\r\n if (!(currItemID in currentHierarchy)) {\r\n gotAllHierarchy = false\r\n break\r\n }\r\n const item: ItemWithLocale = useGlobalState.getState().itemsHierarchy[currItemID]\r\n hierarchy[item.item._id] = item\r\n currItemID = item?.item?._parent\r\n }\r\n if (gotAllHierarchy) return hierarchy;\r\n\r\n // Otherwise get it\r\n let requestUrl = `${process.env.REACT_APP_BACKEND_URL}/api/item/hierarchy?id=${itemData._id}`;\r\n if (locale) requestUrl = `${requestUrl}&locale=${locale}`\r\n const resp = await fetch(requestUrl, { mode: 'cors' })\r\n if (resp.status === 200) {\r\n return await resp.json();\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n}\r\n\r\nexport const getLocaleList = async (): Promise => {\r\n const resp = await fetch(\r\n `${process.env.REACT_APP_BACKEND_URL}/api/locales`,\r\n { mode: 'cors' },\r\n )\r\n if (resp.status === 200) {\r\n return await resp.json();\r\n } else if (resp.status >= 400) {\r\n console.error(resp)\r\n }\r\n}","// No choice but to hard code since it is only a type in the library\r\nexport const ReactJsonViewThemes = [\r\n 'apathy',\r\n 'apathy:inverted',\r\n 'ashes',\r\n 'bespin',\r\n 'brewer',\r\n 'bright:inverted',\r\n 'bright',\r\n 'chalk',\r\n 'codeschool',\r\n 'colors',\r\n 'eighties',\r\n 'embers',\r\n 'flat',\r\n 'google',\r\n 'grayscale',\r\n 'grayscale:inverted',\r\n 'greenscreen',\r\n 'harmonic',\r\n 'hopscotch',\r\n 'isotope',\r\n 'marrakesh',\r\n 'mocha',\r\n 'monokai',\r\n 'ocean',\r\n 'paraiso',\r\n 'pop',\r\n 'railscasts',\r\n 'rjv-default',\r\n 'shapeshifter',\r\n 'shapeshifter:inverted',\r\n 'solarized',\r\n 'summerfruit',\r\n 'summerfruit:inverted',\r\n 'threezerotwofour',\r\n 'tomorrow',\r\n 'tube',\r\n 'twilight'\r\n]","export enum ThemeMode {\r\n LIGHT_MODE = 'light',\r\n DARK_MODE = 'dark'\r\n}","import { ThemeKeys } from 'react-json-view'\r\nimport create from 'zustand'\r\nimport { getLocaleList } from '../dataaccess/ItemBackend'\r\nimport { LocalStorageKeys, SessionStorageKeys } from '../dataaccess/SaveKeys'\r\nimport { ItemHierarchy } from '../dto/ItemHierarchy'\r\nimport { ReactJsonViewThemes } from './ReactJsonViewThemes'\r\nimport { ThemeMode } from './ThemeMode'\r\nimport { ItemWithLocale } from '../dto/ItemWithLocale';\r\n\r\nexport interface GlobalState {\r\n sptarkovWebsiteUrl: string\r\n sptarkovWorkshopUrl: string\r\n sptarkovDocumentationUrl: string\r\n\r\n preferedLocale: string\r\n setPreferedLocale: (newLocale: string) => void\r\n localesList: string[]\r\n refreshLocalesList: () => void\r\n\r\n preferedJsonViewerTheme: ThemeKeys\r\n setPreferedJsonViewerTheme: (newJsonTheme: string) => void\r\n\r\n preferedColorScheme: string\r\n setPreferedColorScheme: (newColorScheme: ThemeMode) => void\r\n\r\n searchInput: string\r\n setSearchInput: (newInput: string) => void\r\n\r\n desiredSearchInput: string\r\n setDesiredSearchInput: (newInput: string) => void\r\n\r\n itemsHierarchy: ItemHierarchy\r\n initHierarchy: () => void\r\n setHierarchy: (newHierarchy: ItemHierarchy) => void\r\n\r\n selectedItem: ItemWithLocale | undefined\r\n setSelectedItem: (newSelectedItem: ItemWithLocale | undefined) => void\r\n}\r\n\r\nconst preferedLocale = localStorage.getItem(LocalStorageKeys.PREFERED_LOCALE)\r\nconst storedPreferedJsonTheme = localStorage.getItem(\r\n LocalStorageKeys.PREFERED_JSON_THEME,\r\n)\r\nconst preferedColorScheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME)\r\n\r\nexport const useGlobalState = create((set) => ({\r\n sptarkovWebsiteUrl: process.env.REACT_APP_SPTARKOV_HOME ? process.env.REACT_APP_SPTARKOV_HOME : '',\r\n sptarkovWorkshopUrl: process.env.REACT_APP_SPTARKOV_WORKSHOP ? process.env.REACT_APP_SPTARKOV_WORKSHOP : '',\r\n sptarkovDocumentationUrl: process.env.REACT_APP_SPTARKOV_DOCUMENTATION ? process.env.REACT_APP_SPTARKOV_DOCUMENTATION : '',\r\n\r\n // Locale\r\n preferedLocale: preferedLocale ? preferedLocale : 'en',\r\n setPreferedLocale: (newLocale: string) => {\r\n localStorage.setItem(LocalStorageKeys.PREFERED_LOCALE, newLocale)\r\n set((_state) => ({ preferedLocale: newLocale }))\r\n },\r\n localesList: [],\r\n refreshLocalesList: async () => {\r\n const locales = sessionStorage.getItem(SessionStorageKeys.LOCALES);\r\n const localesList = locales ? JSON.parse(locales) : await getLocaleList()\r\n console.log(localesList)\r\n if (!locales) sessionStorage.setItem(SessionStorageKeys.LOCALES, JSON.stringify(localesList))\r\n set((_state) => ({ localesList: localesList ? localesList : [] }))\r\n },\r\n\r\n // Json viewer theme\r\n preferedJsonViewerTheme:\r\n storedPreferedJsonTheme &&\r\n ReactJsonViewThemes.includes(storedPreferedJsonTheme)\r\n ? (storedPreferedJsonTheme as ThemeKeys)\r\n : (ReactJsonViewThemes[0] as ThemeKeys),\r\n setPreferedJsonViewerTheme: (newJsonTheme: string) => {\r\n localStorage.setItem(LocalStorageKeys.PREFERED_JSON_THEME, newJsonTheme)\r\n set((_state) => ({ preferedJsonViewerTheme: newJsonTheme as ThemeKeys }))\r\n },\r\n\r\n // Prefered theme\r\n preferedColorScheme: preferedColorScheme\r\n ? preferedColorScheme\r\n : ThemeMode.DARK_MODE,\r\n setPreferedColorScheme: (newColorScheme: ThemeMode) => {\r\n localStorage.setItem(LocalStorageKeys.PREFERED_COLOR_SCHEME, newColorScheme)\r\n set((_state) => ({ preferedColorScheme: newColorScheme }))\r\n },\r\n\r\n // SearchInput\r\n searchInput: '',\r\n setSearchInput: (newInput: string) =>\r\n set((_state) => ({ searchInput: newInput })),\r\n desiredSearchInput: '',\r\n setDesiredSearchInput: (newInput: string) =>\r\n set((_state) => ({ desiredSearchInput: newInput })),\r\n\r\n // Hierarchy\r\n itemsHierarchy: {},\r\n initHierarchy: () => {\r\n const itemsHierarchy = sessionStorage.getItem(SessionStorageKeys.ITEMS_HIERARCHY);\r\n if (itemsHierarchy) {\r\n set((_state) => ({ itemsHierarchy: JSON.parse(itemsHierarchy) }))\r\n }\r\n },\r\n setHierarchy: (newHierarchy: ItemHierarchy) => {\r\n set((state) => {\r\n const newStateHierarchy = Object.assign({}, state.itemsHierarchy, newHierarchy);\r\n sessionStorage.setItem(SessionStorageKeys.ITEMS_HIERARCHY, JSON.stringify(newStateHierarchy))\r\n return ({\r\n itemsHierarchy: newStateHierarchy,\r\n })\r\n });\r\n },\r\n\r\n // Selected item\r\n selectedItem: undefined,\r\n setSelectedItem: (newSelectedItem: ItemWithLocale | undefined) =>\r\n set((_state) => ({ selectedItem: newSelectedItem })),\r\n}))\r\n","import { Box, IconButton, Theme } from '@mui/material'\r\nimport { useTheme } from '@mui/material/styles'\r\nimport Brightness4Icon from '@mui/icons-material/Brightness4'\r\nimport Brightness7Icon from '@mui/icons-material/Brightness7'\r\nimport { ThemeMode } from '../state/ThemeMode'\r\nimport { useGlobalState } from '../state/GlobalState'\r\nimport { useCallback } from 'react'\r\nimport { makeStyles } from '@mui/styles'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n modeToggleButtonHolder: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n justifyContent: 'center',\r\n color: 'primary',\r\n flexGrow: 1,\r\n },\r\n iconButton: {\r\n ml: 1,\r\n },\r\n}))\r\n\r\nexport const DarkModeToggle = () => {\r\n const theme = useTheme()\r\n const classes = useStyles()\r\n const [preferedColorScheme, setPreferedColorScheme] = useGlobalState(\r\n useCallback(\r\n (state) => [state.preferedColorScheme, state.setPreferedColorScheme],\r\n [],\r\n ),\r\n )\r\n\r\n const toggleColor = () => {\r\n const newTheme =\r\n preferedColorScheme === ThemeMode.LIGHT_MODE\r\n ? ThemeMode.DARK_MODE\r\n : ThemeMode.LIGHT_MODE\r\n setPreferedColorScheme(newTheme)\r\n }\r\n\r\n return (\r\n \r\n {theme.palette.mode} mode\r\n \r\n {theme.palette.mode === 'dark' ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n )\r\n}\r\n","import { Select, MenuItem, Theme, Box, FormControl } from '@mui/material'\r\nimport {makeStyles} from '@mui/styles'\r\nimport { useCallback, useEffect } from 'react';\r\nimport { useGlobalState } from '../state/GlobalState'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n localeHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n padding: '0 0.5vw 0 0.5vw'\r\n },\r\n select: {\r\n display: 'flex',\r\n flexGrow: 1\r\n }\r\n}))\r\n\r\n\r\n\r\nexport const LocaleSelect = () => {\r\n const classes = useStyles()\r\n const [preferedLocale, setPreferedLocale] = useGlobalState(useCallback(state => [state.preferedLocale, state.setPreferedLocale],[]))\r\n const [localesList, refreshLocalesList] = useGlobalState(useCallback(state => [state.localesList, state.refreshLocalesList],[]))\r\n\r\n useEffect(()=> refreshLocalesList(), [refreshLocalesList])\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n","import {\r\n Box,\r\n FormControl,\r\n MenuItem,\r\n Select,\r\n Theme,\r\n} from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { ReactJsonViewThemes } from '../state/ReactJsonViewThemes'\r\nimport { LocalStorageKeys } from '../dataaccess/SaveKeys'\r\nimport { useGlobalState } from '../state/GlobalState'\r\nimport { useCallback } from 'react'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n jsonHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n padding: '0 0.5vw 0 0.5vw'\r\n },\r\n select: {\r\n display: 'flex',\r\n flexGrow: 1\r\n }\r\n}))\r\n\r\nexport const JsonTheme = () => {\r\n const classes = useStyles()\r\n const [preferedJsonViewerTheme, setPreferedJsonViewerTheme] = useGlobalState(\r\n useCallback(\r\n (state) => [\r\n state.preferedJsonViewerTheme,\r\n state.setPreferedJsonViewerTheme,\r\n ],\r\n [],\r\n ),\r\n )\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n","import { DarkModeToggle } from './DarkModeToggle'\r\nimport { LocaleSelect } from './LocaleSelect'\r\nimport { JsonTheme } from './JsonTheme'\r\nimport { Theme } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n form: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n justifyContent: 'flex-end',\r\n height: '100%'\r\n },\r\n}));\r\n\r\nexport const HeaderForm = () => {\r\n const classes = useStyles();\r\n\r\n return (\r\n <>\r\n \r\n >\r\n )\r\n}\r\n","import { Box, Link, Theme } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { useCallback } from 'react';\r\nimport { useGlobalState } from '../state/GlobalState';\r\nimport { HeaderForm } from './HeaderForm';\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n headerContainer: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n backgroundColor: theme.palette.background.paper,\r\n alignItems: 'center',\r\n padding: '0 10vw 0 10vw',\r\n },\r\n linksContainer: {\r\n display: 'flex',\r\n flexGrow: 2,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n formContainer: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n height: '100%',\r\n },\r\n link: {\r\n display: 'flex',\r\n padding: '0 1vw 0 1vw',\r\n height: '100%',\r\n alignItems: 'center',\r\n borderBottom: `1px solid transparent`,\r\n '&:hover': {\r\n borderBottom: `1px solid ${theme.palette.action.hover}`,\r\n },\r\n },\r\n}))\r\n\r\nexport const Header = () => {\r\n const classes = useStyles()\r\n const websiteLink = useGlobalState(useCallback((state) => state.sptarkovWebsiteUrl,[]))\r\n const workshopLink = useGlobalState(useCallback((state) => state.sptarkovWorkshopUrl,[]))\r\n const documentationLink = useGlobalState(useCallback((state) => state.sptarkovDocumentationUrl,[]))\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n Website\r\n \r\n \r\n Workshop\r\n \r\n \r\n Documentation\r\n \r\n \r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n","import { useState } from 'react'\r\nimport { Box, Breadcrumbs, Link, Theme, Typography } from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport { useEffect } from 'react'\r\nimport { useGlobalState } from '../../state/GlobalState'\r\nimport { ItemWithLocale } from '../../dto/ItemWithLocale'\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n breadcrumbHolder: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n padding: '0 10vw 0 10vw',\r\n borderBottom: `1px solid ${theme.palette.background.paper}`,\r\n },\r\n breadcrumb: {\r\n display: 'flex',\r\n flex: '0 1 3vh',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n },\r\n link: {\r\n color: theme.palette.text.secondary,\r\n display: 'flex',\r\n padding: '0 1vw 0 1vw',\r\n height: '100%',\r\n alignItems: 'center',\r\n borderBottom: `1px solid transparent`,\r\n '&:hover': {\r\n color: theme.palette.action.hover,\r\n cursor: 'pointer',\r\n },\r\n },\r\n currentItem: {\r\n cursor: 'default',\r\n borderBottom: `1px solid ${theme.palette.action.hover}`,\r\n },\r\n}))\r\n\r\nexport const NavigationBreadcrumb = () => {\r\n const classes = useStyles()\r\n const setSelectedItem = useGlobalState((state) => state.setSelectedItem)\r\n const itemHierachyState = useGlobalState((state) => state.itemsHierarchy)\r\n const [searchInputState, setSearchInput] = useGlobalState((state) => [\r\n state.searchInput,\r\n state.setSearchInput,\r\n ])\r\n const selectedItem = useGlobalState((state) => state.selectedItem)\r\n const [currentHierarchy, setCurrentHierarchy] = useState([])\r\n\r\n useEffect(() => {\r\n if (!selectedItem) return;\r\n\r\n const hierarchy: ItemWithLocale[] = [selectedItem]\r\n let currItemID: string | undefined = selectedItem?.item?._parent\r\n while (currItemID) {\r\n const item: ItemWithLocale = itemHierachyState[currItemID]\r\n hierarchy.push(item)\r\n currItemID = item?.item?._parent\r\n }\r\n setCurrentHierarchy(hierarchy.filter(elt => elt !== undefined && elt !== null).reverse())\r\n }, [selectedItem, itemHierachyState])\r\n\r\n const formatLink = (item: ItemWithLocale, idx: string) => {\r\n if (\r\n searchInputState === item.locale.Name ||\r\n searchInputState === item.item._id ||\r\n searchInputState === item.item._name\r\n ) {\r\n return (\r\n \r\n {item.locale.Name ? item.locale.Name : item.item._name}\r\n \r\n )\r\n } else {\r\n return (\r\n {\r\n setSearchInput(item.item._id)\r\n setSelectedItem(undefined)\r\n }}\r\n className={classes.link}\r\n >\r\n {item.locale.Name ? item.locale.Name : item.item._name}\r\n \r\n )\r\n }\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Home\r\n \r\n {currentHierarchy.map((item, idx) => formatLink(item, idx.toString()))}\r\n \r\n \r\n )\r\n}\r\n","import { SyntheticEvent, useCallback, useEffect, useState } from 'react'\r\nimport {\r\n Autocomplete,\r\n Box,\r\n CircularProgress,\r\n Theme,\r\n Typography,\r\n} from '@mui/material'\r\nimport { makeStyles } from '@mui/styles'\r\nimport TextField from '@mui/material/TextField'\r\nimport ReactJson from 'react-json-view'\r\nimport {\r\n getItem,\r\n getItemHierarchy,\r\n searchItem,\r\n} from '../../dataaccess/ItemBackend'\r\nimport { ItemOption } from '../../dto/ItemOption'\r\nimport { useGlobalState } from '../../state/GlobalState'\r\n\r\ninterface IItemOption {\r\n id?: string\r\n name?: string\r\n shortName?: string\r\n}\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n searchAreaHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n flexDirection: 'column',\r\n background: theme.palette.background.paper,\r\n padding: '2vh 2vw 2vh 2vw',\r\n },\r\n jsonHolder: {\r\n display: 'flex',\r\n flexGrow: 1,\r\n alignItems: 'center',\r\n flexDirection: 'column',\r\n background: theme.palette.background.paper,\r\n maxHeight: '80vh',\r\n },\r\n autocomplete: {},\r\n}))\r\n\r\nexport const SearchArea = () => {\r\n const classes = useStyles()\r\n const preferedLocale = useGlobalState((state) => state.preferedLocale)\r\n const preferedJsonViewerTheme = useGlobalState(\r\n useCallback((state) => state.preferedJsonViewerTheme, []),\r\n )\r\n const [searchInputState, setSearchInput] = useGlobalState((state) => [\r\n state.searchInput,\r\n state.setSearchInput,\r\n ])\r\n const [setHierarchy, initHierarchy] = useGlobalState((state) => [state.setHierarchy, state.initHierarchy])\r\n const [selectedItem, setSelectedItem] = useGlobalState((state) => [\r\n state.selectedItem,\r\n state.setSelectedItem,\r\n ])\r\n const [selectOptions, setSelecteOptions] = useState([])\r\n const [isbusy, setIsBusy] = useState(false)\r\n const searchThreshold = 3\r\n\r\n const handleNameInput = async (input: string) => {\r\n const searchResults = await searchItem(input, preferedLocale)\r\n const options = searchResults?.map((res) => ({\r\n id: res.item._id,\r\n name: res.locale.Name ? res.locale.Name : res.item._name,\r\n shortName: res.locale.ShortName\r\n }))\r\n setSelecteOptions(options ? options : [])\r\n }\r\n\r\n const handleIDInput = useCallback(async (input: string) => {\r\n const itemJson = await getItem(input, preferedLocale)\r\n if (!itemJson) {\r\n setSelectedItem(undefined)\r\n setSearchInput('')\r\n return;\r\n }\r\n\r\n setSelectedItem(itemJson)\r\n const itemObj = {\r\n id: itemJson.item._id,\r\n name: itemJson.locale.Name ? itemJson.locale.Name : itemJson.item._name,\r\n shortName: itemJson.locale.ShortName\r\n }\r\n setSelecteOptions([itemObj])\r\n setSearchInput(itemObj.name)\r\n\r\n // Update hierachy\r\n const itemHierarchy = await getItemHierarchy(\r\n itemJson.item,\r\n preferedLocale,\r\n )\r\n setHierarchy(itemHierarchy ? itemHierarchy : {})\r\n // eslint-disable-next-line\r\n }, []) // Need to only be created on startup\r\n\r\n useEffect(() => initHierarchy(), [initHierarchy])\r\n\r\n useEffect(() => {\r\n if (searchInputState && searchInputState.match(/([a-z0-9]{24})/)) {\r\n handleIDInput(searchInputState)\r\n }\r\n }, [handleIDInput, searchInputState])\r\n\r\n const handleInput = async (input: string) => {\r\n if (!input || input.length < searchThreshold || isbusy) {\r\n setSelectedItem(undefined)\r\n setSelecteOptions([])\r\n setIsBusy(false)\r\n return\r\n }\r\n setIsBusy(true)\r\n\r\n if (input.match(/([a-z0-9]{24})/)) await handleIDInput(input)\r\n else await handleNameInput(input)\r\n\r\n setIsBusy(false)\r\n }\r\n\r\n const formatDisplayItems = () => {\r\n // If loading\r\n if (isbusy) return \r\n\r\n // If finished loading\r\n if (selectedItem){\r\n return (\r\n \r\n )\r\n }\r\n else return No data to display\r\n }\r\n\r\n const findOptionValue = (option: ItemOption, value: ItemOption): boolean => {\r\n return option.name?.toLocaleLowerCase() === value.name?.toLocaleLowerCase()\r\n || option.id?.toLocaleLowerCase() === value.id?.toLocaleLowerCase()\r\n || option.shortName?.toLocaleLowerCase() === value.shortName?.toLocaleLowerCase()\r\n }\r\n\r\n return (\r\n \r\n ({name: elt.name, shortName: elt.shortName, id: elt.id}))}\r\n getOptionLabel={(option)=> option.name ? option.name : option.id}\r\n isOptionEqualToValue={(option, value) => findOptionValue(option, value)}\r\n open={!isbusy && searchInputState.length >= searchThreshold && (searchInputState !== selectedItem?.locale.Name && searchInputState !== selectedItem?.item._name)}\r\n className={classes.autocomplete}\r\n inputValue={searchInputState ? searchInputState : ''}\r\n onInputChange={async (evt: SyntheticEvent, newValue: string) => {\r\n if (!evt) return\r\n setSelectedItem(undefined)\r\n setSearchInput(newValue)\r\n await handleInput(newValue.trim())\r\n }}\r\n value={(()=>{\r\n const selectedOption = selectOptions.find(elt => elt.id === searchInputState || elt.name === searchInputState);\r\n return selectedOption ? selectedOption : null;\r\n })()}\r\n onChange={async (event: SyntheticEvent, newValue: IItemOption | null) => {\r\n if (newValue) {\r\n const selectedOption = selectOptions.find(\r\n (elt) => elt.name === newValue.name,\r\n )\r\n if (selectedOption) await handleIDInput(selectedOption.id)\r\n }\r\n }}\r\n renderInput={(params) =>(\r\n \r\n )}\r\n renderOption={(props, option, state) => (\r\n {option.name}\r\n )}\r\n filterOptions={(options, state) => options.filter(elt =>{\r\n console.log(elt.shortName?.toLocaleLowerCase(), state.inputValue.toLocaleLowerCase(), elt.shortName?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase()))\r\n return (elt.name?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase())\r\n || elt.id?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase())\r\n || elt.shortName?.toLocaleLowerCase().includes(state.inputValue.toLocaleLowerCase()))\r\n })}\r\n filterSelectedOptions\r\n />\r\n {formatDisplayItems()}\r\n \r\n )\r\n}\r\n","import {Box, Theme} from '@mui/material'\r\nimport {Footer} from '../components/Footer'\r\nimport {Header} from '../components/Header'\r\nimport {NavigationBreadcrumb} from './mainPageComponents/NavigationBreadcrumb'\r\nimport {SearchArea} from './mainPageComponents/SearchArea'\r\nimport {makeStyles} from \"@mui/styles\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) => ({\r\n container: {\r\n background: 'background.default',\r\n display: 'flex',\r\n flexDirection: 'column',\r\n flexGrow: 1,\r\n height: '100vh',\r\n maxheight: '100vh',\r\n },\r\n searchContainer: {\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexGrow: 1,\r\n padding: '2vh 2vw 1vh 2vw'\r\n }\r\n}))\r\n\r\nexport const MainPage = () => {\r\n const classes = useStyles();\r\n return (\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","import {ThemeMode} from '../state/ThemeMode';\r\nimport {common, grey, lightBlue, yellow} from '@mui/material/colors';\r\nimport createPalette from \"@mui/material/styles/createPalette\";\r\n\r\nexport const darkPalette = createPalette({\r\n mode: ThemeMode.DARK_MODE,\r\n background: {\r\n default: grey[900],\r\n paper: '#121212'\r\n },\r\n text: {\r\n primary: common.white,\r\n secondary: '#8894a2',\r\n disabled: lightBlue[100]\r\n },\r\n action: {\r\n hover: yellow[700]\r\n },\r\n});","import {ThemeMode} from '../state/ThemeMode';\r\nimport {blue, common, grey} from \"@mui/material/colors\";\r\nimport createPalette from \"@mui/material/styles/createPalette\";\r\n\r\nexport const lightPalette = createPalette({\r\n mode: ThemeMode.LIGHT_MODE,\r\n background: {\r\n default: grey[100],\r\n paper: grey[300]\r\n },\r\n text: {\r\n primary: common.black,\r\n secondary: blue[500],\r\n disabled: grey[600]\r\n },\r\n action: {\r\n hover: blue[500],\r\n }\r\n});","import {ThemeProvider} from '@mui/material/styles'\r\nimport {MainPage} from './pages/MainPage'\r\nimport {ThemeMode} from './state/ThemeMode'\r\nimport {CssBaseline, useMediaQuery} from '@mui/material'\r\nimport {useEffect} from \"react\";\r\nimport {darkPalette} from \"./theme/darkTheme\";\r\nimport {lightPalette} from \"./theme/lightTheme\";\r\nimport {getTheme} from \"./theme/Theme\";\r\nimport {LocalStorageKeys} from \"./dataaccess/SaveKeys\";\r\nimport { useGlobalState } from './state/GlobalState'\r\n\r\nconst App = () => {\r\n const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)');\r\n const [preferedColorScheme ,setPreferedColorScheme] = useGlobalState(state => [state.preferedColorScheme, state.setPreferedColorScheme])\r\n\r\n useEffect(() => {\r\n const localPreferedTheme = localStorage.getItem(LocalStorageKeys.PREFERED_COLOR_SCHEME);\r\n if (localPreferedTheme) {\r\n setPreferedColorScheme(localPreferedTheme as ThemeMode)\r\n return\r\n }\r\n\r\n const preferedTheme = prefersDarkMode ? ThemeMode.DARK_MODE : ThemeMode.LIGHT_MODE;\r\n setPreferedColorScheme(preferedTheme)\r\n // eslint-disable-next-line\r\n }, [prefersDarkMode]) // Need to be only used on prefersDarkMode change\r\n\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n >\r\n )\r\n}\r\n\r\nexport default App\r\n","import {createTheme, Palette} from '@mui/material/styles';\r\n\r\nexport const getTheme = (palette: Palette) => createTheme({\r\n palette: palette,\r\n components: {\r\n MuiLink: {\r\n styleOverrides: {\r\n root: {\r\n '&:hover': {\r\n textDecoration: 'none'\r\n }\r\n }\r\n }\r\n },\r\n MuiInput:{\r\n styleOverrides: {\r\n root: {\r\n '&:before': {\r\n borderColor: 'transparent',\r\n },\r\n '&:after': {\r\n borderColor: 'transparent',\r\n },\r\n '&:hover:not(.Mui-disabled):before': {\r\n borderColor: palette.action.hover,\r\n }\r\n },\r\n input:{\r\n '&:focus': {\r\n backgroundColor: 'transparent',\r\n },\r\n }\r\n }\r\n },\r\n MuiTextField: {\r\n styleOverrides: {\r\n root: {\r\n '& label.Mui-focused': {\r\n color: palette.action.hover,\r\n },\r\n '& .MuiFilledInput-underline:after': {\r\n borderBottomColor: palette.action.hover,\r\n }\r\n }\r\n }\r\n },\r\n MuiInputBase:{\r\n styleOverrides:{\r\n root:{\r\n '&.Mui-focused .MuiOutlinedInput-notchedOutline':{\r\n borderColor: `${palette.action.hover} !important`,\r\n }\r\n }\r\n }\r\n },\r\n MuiFormLabel: {\r\n styleOverrides: {\r\n root:{\r\n '&.Mui-focused .MuiInputLabel': {\r\n color: palette.action.hover\r\n }\r\n }\r\n }\r\n }\r\n }\r\n});","import { ReportHandler } from 'web-vitals';\r\n\r\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\r\n if (onPerfEntry && onPerfEntry instanceof Function) {\r\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\r\n getCLS(onPerfEntry);\r\n getFID(onPerfEntry);\r\n getFCP(onPerfEntry);\r\n getLCP(onPerfEntry);\r\n getTTFB(onPerfEntry);\r\n });\r\n }\r\n};\r\n\r\nexport default reportWebVitals;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport reportWebVitals from './reportWebVitals';\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want to start measuring performance in your app, pass a function\r\n// to log results (for example: reportWebVitals(console.log))\r\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\r\nreportWebVitals();\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/public/static/js/main.e49801bc.chunk.js b/public/static/js/main.e49801bc.chunk.js
deleted file mode 100644
index d84c6ec..0000000
--- a/public/static/js/main.e49801bc.chunk.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(this["webpackJsonpnew-item-finder-website"]=this["webpackJsonpnew-item-finder-website"]||[]).push([[0],{126:function(e,t,r){"use strict";r.r(t);var n,a,o=r(0),c=r.n(o),i=r(37),s=r.n(i),l=r(9),u=r(206),d=r(197),f=r(198),m=r(191),h=r(2),p=Object(m.a)((function(e){return{footerHolder:{display:"flex",flex:"0 1 3vh",flexDirection:"row",alignItems:"center",justifyContent:"center",padding:"0 10vw 0 10vw"}}})),b=function(){var e=p();return Object(h.jsx)(d.a,{className:e.footerHolder,children:Object(h.jsx)(f.a,{children:"SPT-Aki \xa92021 Created by Rev and Shirito"})})},j=r(204),v=r(15),O=r.n(v),x=r(23),g=r(94),w=r.n(g),k=function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n,a;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("".concat("https://items.sp-tarkov.com","/api/search"),{mode:"cors",method:"post",headers:{"Content-Type":"application/json"},body:JSON.stringify(r?{query:t,locale:r}:{query:t})});case 2:if(200!==(n=e.sent).status){e.next=10;break}return e.next=6,n.json();case 6:return a=e.sent,e.abrupt("return",a.items);case 10:n.status>=400&&console.error(n);case 11:return e.abrupt("return",[]);case 12:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),E=function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n,a;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n="".concat("https://items.sp-tarkov.com","/api/item?id=").concat(t),r&&(n="".concat(n,"&locale=").concat(r)),e.next=4,fetch(n,{mode:"cors"});case 4:if(200!==(a=e.sent).status){e.next=11;break}return e.next=8,a.json();case 8:return e.abrupt("return",e.sent);case 11:a.status>=400&&console.error(a);case 12:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),y=function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n,a,o,c,i,s,l,u;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n={},a=null===t||void 0===t?void 0:t._id,o=H.getState().itemsHierarchy,c=!0;case 4:if(!a){e.next=13;break}if(a in o){e.next=8;break}return c=!1,e.abrupt("break",13);case 8:s=H.getState().itemsHierarchy[a],n[s.item._id]=s,a=null===s||void 0===s||null===(i=s.item)||void 0===i?void 0:i._parent,e.next=4;break;case 13:if(!c){e.next=15;break}return e.abrupt("return",n);case 15:return l="".concat("https://items.sp-tarkov.com","/api/item/hierarchy?id=").concat(t._id),r&&(l="".concat(l,"&locale=").concat(r)),e.next=19,fetch(l,{mode:"cors"});case 19:if(200!==(u=e.sent).status){e.next=26;break}return e.next=23,u.json();case 23:return e.abrupt("return",e.sent);case 26:u.status>=400&&console.error(u);case 27:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),C=function(){var e=Object(x.a)(O.a.mark((function e(){var t;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,fetch("".concat("https://items.sp-tarkov.com","/api/locales"),{mode:"cors"});case 2:if(200!==(t=e.sent).status){e.next=9;break}return e.next=6,t.json();case 6:return e.abrupt("return",e.sent);case 9:t.status>=400&&console.error(t);case 10:case"end":return e.stop()}}),e)})));return function(){return e.apply(this,arguments)}}();!function(e){e.PREFERED_COLOR_SCHEME="items.sp-tarkov.com-prefered-color-scheme",e.PREFERED_JSON_THEME="items.sp-tarkov.com-prefered-json-theme",e.PREFERED_LOCALE="items.sp-tarkov.com-prefered-locale"}(n||(n={})),function(e){e.LOCALES="items.sp-tarkov.com-locales",e.ITEMS_HIERARCHY="items.sp-tarkov.com-items-hierarchy"}(a||(a={}));var L,I=["apathy","apathy:inverted","ashes","bespin","brewer","bright:inverted","bright","chalk","codeschool","colors","eighties","embers","flat","google","grayscale","grayscale:inverted","greenscreen","harmonic","hopscotch","isotope","marrakesh","mocha","monokai","ocean","paraiso","pop","railscasts","rjv-default","shapeshifter","shapeshifter:inverted","solarized","summerfruit","summerfruit:inverted","threezerotwofour","tomorrow","tube","twilight"];!function(e){e.LIGHT_MODE="light",e.DARK_MODE="dark"}(L||(L={}));var S=localStorage.getItem(n.PREFERED_LOCALE),N=localStorage.getItem(n.PREFERED_JSON_THEME),_=localStorage.getItem(n.PREFERED_COLOR_SCHEME),H=w()((function(e){return{sptarkovWebsiteUrl:"https://www.sp-tarkov.com/",sptarkovWorkshopUrl:"https://mods.sp-tarkov.com/",sptarkovDocumentationUrl:"https://docs.sp-tarkov.com/",preferedLocale:S||"en",setPreferedLocale:function(t){localStorage.setItem(n.PREFERED_LOCALE,t),e((function(e){return{preferedLocale:t}}))},localesList:[],refreshLocalesList:function(){var t=Object(x.a)(O.a.mark((function t(){var r,n;return O.a.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(!(r=sessionStorage.getItem(a.LOCALES))){t.next=5;break}t.t0=JSON.parse(r),t.next=8;break;case 5:return t.next=7,C();case 7:t.t0=t.sent;case 8:n=t.t0,console.log(n),r||sessionStorage.setItem(a.LOCALES,JSON.stringify(n)),e((function(e){return{localesList:n||[]}}));case 12:case"end":return t.stop()}}),t)})));return function(){return t.apply(this,arguments)}}(),preferedJsonViewerTheme:N&&I.includes(N)?N:I[0],setPreferedJsonViewerTheme:function(t){localStorage.setItem(n.PREFERED_JSON_THEME,t),e((function(e){return{preferedJsonViewerTheme:t}}))},preferedColorScheme:_||L.DARK_MODE,setPreferedColorScheme:function(t){localStorage.setItem(n.PREFERED_COLOR_SCHEME,t),e((function(e){return{preferedColorScheme:t}}))},searchInput:"",setSearchInput:function(t){return e((function(e){return{searchInput:t}}))},desiredSearchInput:"",setDesiredSearchInput:function(t){return e((function(e){return{desiredSearchInput:t}}))},itemsHierarchy:{},initHierarchy:function(){var t=sessionStorage.getItem(a.ITEMS_HIERARCHY);t&&e((function(e){return{itemsHierarchy:JSON.parse(t)}}))},setHierarchy:function(t){e((function(e){var r=Object.assign({},e.itemsHierarchy,t);return sessionStorage.setItem(a.ITEMS_HIERARCHY,JSON.stringify(r)),{itemsHierarchy:r}}))},selectedItem:void 0,setSelectedItem:function(t){return e((function(e){return{selectedItem:t}}))}}})),D=r(199),R=r(31),M=r(96),T=r.n(M),F=r(95),P=r.n(F),J=Object(m.a)((function(e){return{modeToggleButtonHolder:{display:"flex",alignItems:"center",justifyContent:"center",color:"primary",flexGrow:1},iconButton:{ml:1}}})),A=function(){var e=Object(R.a)(),t=J(),r=H(Object(o.useCallback)((function(e){return[e.preferedColorScheme,e.setPreferedColorScheme]}),[])),n=Object(l.a)(r,2),a=n[0],c=n[1];return Object(h.jsxs)(d.a,{className:t.modeToggleButtonHolder,id:"modeToggleButtonHolder",children:[e.palette.mode," mode",Object(h.jsx)(D.a,{className:t.iconButton,sx:{ml:1},onClick:function(){var e=a===L.LIGHT_MODE?L.DARK_MODE:L.LIGHT_MODE;c(e)},color:"inherit",id:"modeToggleButton",children:"dark"===e.palette.mode?Object(h.jsx)(P.a,{}):Object(h.jsx)(T.a,{})})]})},G=r(200),B=r(190),V=r(194),W=Object(m.a)((function(e){return{localeHolder:{display:"flex",flexGrow:1,padding:"0 0.5vw 0 0.5vw"},select:{display:"flex",flexGrow:1}}})),K=function(){var e=W(),t=H(Object(o.useCallback)((function(e){return[e.preferedLocale,e.setPreferedLocale]}),[])),r=Object(l.a)(t,2),n=r[0],a=r[1],c=H(Object(o.useCallback)((function(e){return[e.localesList,e.refreshLocalesList]}),[])),i=Object(l.a)(c,2),s=i[0],u=i[1];return Object(o.useEffect)((function(){return u()}),[u]),Object(h.jsx)(h.Fragment,{children:Object(h.jsx)(d.a,{className:e.localeHolder,children:Object(h.jsx)(G.a,{fullWidth:!0,variant:"standard",children:Object(h.jsxs)(B.a,{displayEmpty:!0,className:e.select,labelId:"prefered-locale",value:s.length>0?n:"",onChange:function(e){a(e.target.value)},id:"locale-selector",children:[Object(h.jsx)(V.a,{disabled:!0,value:"",children:Object(h.jsx)("em",{children:"Language"})}),s.map((function(e,t){return Object(h.jsx)(V.a,{value:e,children:e},t)}))]})})})})},U=Object(m.a)((function(e){return{jsonHolder:{display:"flex",flexGrow:1,padding:"0 0.5vw 0 0.5vw"},select:{display:"flex",flexGrow:1}}})),z=function(){var e=U(),t=H(Object(o.useCallback)((function(e){return[e.preferedJsonViewerTheme,e.setPreferedJsonViewerTheme]}),[])),r=Object(l.a)(t,2),a=r[0],c=r[1];return Object(h.jsx)(h.Fragment,{children:Object(h.jsx)(d.a,{className:e.jsonHolder,children:Object(h.jsx)(G.a,{fullWidth:!0,variant:"standard",children:Object(h.jsxs)(B.a,{displayEmpty:!0,className:e.select,labelId:"react-json-view-theme",value:a,label:"JSON theme",onChange:function(e){c(e.target.value),localStorage.setItem(n.PREFERED_JSON_THEME,e.target.value)},id:"json-selector",children:[Object(h.jsx)(V.a,{disabled:!0,value:"",children:Object(h.jsx)("em",{children:"JSON theme"})}),I.map((function(e,t){return Object(h.jsx)(V.a,{value:e,children:e},t)}))]})})})})},Y=Object(m.a)((function(e){return{form:{display:"flex",flexDirection:"row",flexGrow:1,justifyContent:"flex-end",height:"100%"}}})),q=function(){var e=Y();return Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)("form",{className:e.form,children:[Object(h.jsx)(A,{}),Object(h.jsx)(K,{}),Object(h.jsx)(z,{})]})})},Q=Object(m.a)((function(e){return{headerContainer:{display:"flex",flex:"0 1 3vh",flexDirection:"row",backgroundColor:e.palette.background.paper,alignItems:"center",padding:"0 10vw 0 10vw"},linksContainer:{display:"flex",flexGrow:2,flexDirection:"row",alignItems:"center",height:"100%"},formContainer:{display:"flex",flexGrow:1,flexDirection:"row",alignItems:"center",height:"100%"},link:{display:"flex",padding:"0 1vw 0 1vw",height:"100%",alignItems:"center",borderBottom:"1px solid transparent","&:hover":{borderBottom:"1px solid ".concat(e.palette.action.hover)}}}})),X=function(){var e=Q(),t=H(Object(o.useCallback)((function(e){return e.sptarkovWebsiteUrl}),[])),r=H(Object(o.useCallback)((function(e){return e.sptarkovWorkshopUrl}),[])),n=H(Object(o.useCallback)((function(e){return e.sptarkovDocumentationUrl}),[]));return Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)(d.a,{className:e.headerContainer,children:[Object(h.jsxs)(d.a,{className:e.linksContainer,children:[Object(h.jsx)(j.a,{underline:"hover",color:"inherit",id:"website-link",href:t,className:e.link,children:"Website"}),Object(h.jsx)(j.a,{underline:"hover",color:"inherit",id:"workshop-link",href:r,className:e.link,children:"Workshop"}),Object(h.jsx)(j.a,{underline:"hover",color:"inherit",id:"documentation-link",href:n,className:e.link,children:"Documentation"})]}),Object(h.jsx)(d.a,{className:e.formContainer,children:Object(h.jsx)(q,{})})]})})},Z=r(195),$=Object(m.a)((function(e){return{breadcrumbHolder:{display:"flex",flex:"0 1 3vh",flexDirection:"row",alignItems:"center",padding:"0 10vw 0 10vw",borderBottom:"1px solid ".concat(e.palette.background.paper)},breadcrumb:{display:"flex",flex:"0 1 3vh",flexDirection:"row",flexGrow:1},link:{color:e.palette.text.secondary,display:"flex",padding:"0 1vw 0 1vw",height:"100%",alignItems:"center",borderBottom:"1px solid transparent","&:hover":{color:e.palette.action.hover,cursor:"pointer"}},currentItem:{cursor:"default",borderBottom:"1px solid ".concat(e.palette.action.hover)}}})),ee=function(){var e=$(),t=H((function(e){return e.setSelectedItem})),r=H((function(e){return e.itemsHierarchy})),n=H((function(e){return[e.searchInput,e.setSearchInput]})),a=Object(l.a)(n,2),c=a[0],i=a[1],s=H((function(e){return e.selectedItem})),u=Object(o.useState)([]),m=Object(l.a)(u,2),p=m[0],b=m[1];Object(o.useEffect)((function(){var e;if(s){for(var t=[s],n=null===s||void 0===s||null===(e=s.item)||void 0===e?void 0:e._parent;n;){var a,o=r[n];t.push(o),n=null===o||void 0===o||null===(a=o.item)||void 0===a?void 0:a._parent}b(t.filter((function(e){return void 0!==e&&null!==e})).reverse())}}),[s,r]);return Object(h.jsx)(d.a,{className:e.breadcrumbHolder,children:Object(h.jsxs)(Z.a,{"aria-label":"breadcrumb",className:e.breadcrumb,id:"navigation-breadcrumb",children:[Object(h.jsx)(j.a,{underline:"hover",color:"inherit",href:"/",id:"home-breadcrumb",className:e.link,children:Object(h.jsx)(f.a,{variant:"body2",children:"Home"})},"home"),p.map((function(r,n){return function(r,n){return c===r.locale.Name||c===r.item._id||c===r.item._name?Object(h.jsx)(f.a,{variant:"body2",className:e.currentItem,children:r.locale.Name?r.locale.Name:r.item._name},r.item._id):Object(h.jsx)(j.a,{underline:"hover",color:"inherit",onClick:function(){i(r.item._id),t(void 0)},className:e.link,children:Object(h.jsx)(f.a,{variant:"body2",children:r.locale.Name?r.locale.Name:r.item._name})},n)}(r,n.toString())}))]})})},te=r(62),re=r(205),ne=r(189),ae=r(192),oe=r(97),ce=r.n(oe),ie=Object(m.a)((function(e){return{searchAreaHolder:{display:"flex",flexGrow:1,flexDirection:"column",background:e.palette.background.paper,padding:"2vh 2vw 2vh 2vw"},jsonHolder:{display:"flex",flexGrow:1,alignItems:"center",flexDirection:"column",background:e.palette.background.paper,maxHeight:"80vh"},autocomplete:{}}})),se=function(){var e=ie(),t=H((function(e){return e.preferedLocale})),r=H(Object(o.useCallback)((function(e){return e.preferedJsonViewerTheme}),[])),n=H((function(e){return[e.searchInput,e.setSearchInput]})),a=Object(l.a)(n,2),c=a[0],i=a[1],s=H((function(e){return[e.setHierarchy,e.initHierarchy]})),u=Object(l.a)(s,2),m=u[0],p=u[1],b=H((function(e){return[e.selectedItem,e.setSelectedItem]})),j=Object(l.a)(b,2),v=j[0],g=j[1],w=Object(o.useState)([]),C=Object(l.a)(w,2),L=C[0],I=C[1],S=Object(o.useState)(!1),N=Object(l.a)(S,2),_=N[0],D=N[1],R=function(){var e=Object(x.a)(O.a.mark((function e(r){var n,a;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,k(r,t);case 2:n=e.sent,a=null===n||void 0===n?void 0:n.map((function(e){return{id:e.item._id,name:e.locale.Name?e.locale.Name:e.item._name,shortName:e.locale.ShortName}})),I(a||[]);case 5:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),M=Object(o.useCallback)(function(){var e=Object(x.a)(O.a.mark((function e(r){var n,a,o;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,E(r,t);case 2:if(n=e.sent){e.next=7;break}return g(void 0),i(""),e.abrupt("return");case 7:return g(n),a={id:n.item._id,name:n.locale.Name?n.locale.Name:n.item._name,shortName:n.locale.ShortName},I([a]),i(a.name),e.next=13,y(n.item,t);case 13:o=e.sent,m(o||{});case 15:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),[]);Object(o.useEffect)((function(){return p()}),[p]),Object(o.useEffect)((function(){c&&c.match(/([a-z0-9]{24})/)&&M(c)}),[M,c]);var T=function(){var e=Object(x.a)(O.a.mark((function e(t){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(!t||t.length<3||_)){e.next=5;break}return g(void 0),I([]),D(!1),e.abrupt("return");case 5:if(D(!0),!t.match(/([a-z0-9]{24})/)){e.next=11;break}return e.next=9,M(t);case 9:e.next=13;break;case 11:return e.next=13,R(t);case 13:D(!1);case 14:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}();return Object(h.jsxs)(d.a,{className:e.searchAreaHolder,children:[Object(h.jsx)(ne.a,{id:"search-autocomplete",options:L.map((function(e){return{name:e.name,shortName:e.shortName,id:e.id}})),getOptionLabel:function(e){return e.name?e.name:e.id},isOptionEqualToValue:function(e,t){return function(e,t){var r,n,a,o,c,i;return(null===(r=e.name)||void 0===r?void 0:r.toLocaleLowerCase())===(null===(n=t.name)||void 0===n?void 0:n.toLocaleLowerCase())||(null===(a=e.id)||void 0===a?void 0:a.toLocaleLowerCase())===(null===(o=t.id)||void 0===o?void 0:o.toLocaleLowerCase())||(null===(c=e.shortName)||void 0===c?void 0:c.toLocaleLowerCase())===(null===(i=t.shortName)||void 0===i?void 0:i.toLocaleLowerCase())}(e,t)},open:!_&&c.length>=3&&c!==(null===v||void 0===v?void 0:v.locale.Name)&&c!==(null===v||void 0===v?void 0:v.item._name),className:e.autocomplete,inputValue:c||"",onInputChange:function(){var e=Object(x.a)(O.a.mark((function e(t,r){return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:return g(void 0),i(r),e.next=6,T(r.trim());case 6:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),value:function(){var e=L.find((function(e){return e.id===c||e.name===c}));return e||null}(),onChange:function(){var e=Object(x.a)(O.a.mark((function e(t,r){var n;return O.a.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!r){e.next=5;break}if(!(n=L.find((function(e){return e.name===r.name})))){e.next=5;break}return e.next=5,M(n.id);case 5:case"end":return e.stop()}}),e)})));return function(t,r){return e.apply(this,arguments)}}(),renderInput:function(e){return Object(h.jsx)(ae.a,Object(te.a)(Object(te.a)({},e),{},{label:"Search by name or ID"}))},renderOption:function(e,t,r){return Object(o.createElement)("li",Object(te.a)(Object(te.a)({},e),{},{key:t.id}),Object(h.jsx)(f.a,{children:t.name}))},filterOptions:function(e,t){return e.filter((function(e){var r,n,a,o,c;return console.log(null===(r=e.shortName)||void 0===r?void 0:r.toLocaleLowerCase(),t.inputValue.toLocaleLowerCase(),null===(n=e.shortName)||void 0===n?void 0:n.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase())),(null===(a=e.name)||void 0===a?void 0:a.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase()))||(null===(o=e.id)||void 0===o?void 0:o.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase()))||(null===(c=e.shortName)||void 0===c?void 0:c.toLocaleLowerCase().includes(t.inputValue.toLocaleLowerCase()))}))},filterSelectedOptions:!0}),Object(h.jsx)(d.a,{className:e.jsonHolder,children:_?Object(h.jsx)(re.a,{size:100}):v?Object(h.jsx)(ce.a,{src:v,theme:r,style:{marginTop:"2vh",width:"100%",overflowY:"auto",display:"flex"}}):Object(h.jsx)(f.a,{id:"search-no-data",children:"No data to display"})})]})},le=Object(m.a)((function(e){return{container:{background:"background.default",display:"flex",flexDirection:"column",flexGrow:1,height:"100vh",maxheight:"100vh"},searchContainer:{display:"flex",flexDirection:"row",flexGrow:1,padding:"2vh 2vw 1vh 2vw"}}})),ue=function(){var e=le();return Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)(d.a,{className:e.container,children:[Object(h.jsx)(X,{}),Object(h.jsx)(ee,{}),Object(h.jsx)(d.a,{className:e.searchContainer,children:Object(h.jsx)(se,{})}),Object(h.jsx)(b,{})]})})},de=r(187),fe=r(188),me=r(92),he=r(52),pe=r(44),be=r(186),je=r(48),ve=Object(je.a)({mode:L.DARK_MODE,background:{default:me.a[900],paper:"#121212"},text:{primary:he.a.white,secondary:"#8894a2",disabled:pe.a[100]},action:{hover:be.a[700]}}),Oe=r(43),xe=Object(je.a)({mode:L.LIGHT_MODE,background:{default:me.a[100],paper:me.a[300]},text:{primary:he.a.black,secondary:Oe.a[500],disabled:me.a[600]},action:{hover:Oe.a[500]}}),ge=r(98),we=function(){var e,t=Object(de.a)("(prefers-color-scheme: dark)"),r=H((function(e){return[e.preferedColorScheme,e.setPreferedColorScheme]})),a=Object(l.a)(r,2),c=a[0],i=a[1];return Object(o.useEffect)((function(){var e=localStorage.getItem(n.PREFERED_COLOR_SCHEME);if(e)i(e);else{var r=t?L.DARK_MODE:L.LIGHT_MODE;i(r)}}),[t]),Object(h.jsx)(h.Fragment,{children:Object(h.jsxs)(u.a,{theme:(e=c===L.DARK_MODE?ve:xe,Object(ge.a)({palette:e,components:{MuiLink:{styleOverrides:{root:{"&:hover":{textDecoration:"none"}}}},MuiInput:{styleOverrides:{root:{"&:before":{borderColor:"transparent"},"&:after":{borderColor:"transparent"},"&:hover:not(.Mui-disabled):before":{borderColor:e.action.hover}},input:{"&:focus":{backgroundColor:"transparent"}}}},MuiTextField:{styleOverrides:{root:{"& label.Mui-focused":{color:e.action.hover},"& .MuiFilledInput-underline:after":{borderBottomColor:e.action.hover}}}},MuiInputBase:{styleOverrides:{root:{"&.Mui-focused .MuiOutlinedInput-notchedOutline":{borderColor:"".concat(e.action.hover," !important")}}}},MuiFormLabel:{styleOverrides:{root:{"&.Mui-focused .MuiInputLabel":{color:e.action.hover}}}}}})),children:[Object(h.jsx)(fe.a,{}),Object(h.jsx)(ue,{})]})})},ke=function(e){e&&e instanceof Function&&r.e(3).then(r.bind(null,207)).then((function(t){var r=t.getCLS,n=t.getFID,a=t.getFCP,o=t.getLCP,c=t.getTTFB;r(e),n(e),a(e),o(e),c(e)}))};s.a.render(Object(h.jsx)(c.a.StrictMode,{children:Object(h.jsx)(we,{})}),document.getElementById("root")),ke()}},[[126,1,2]]]);
-//# sourceMappingURL=main.e49801bc.chunk.js.map
\ No newline at end of file
diff --git a/resources/views/app.blade.php b/resources/views/app.blade.php
index 52f47eb..f915c59 100644
--- a/resources/views/app.blade.php
+++ b/resources/views/app.blade.php
@@ -17,7 +17,7 @@
-
+