{"version":3,"sources":["../../../node_modules/@material-ui/core/esm/internal/svg-icons/ArrowDownward.js","../../../node_modules/@material-ui/core/esm/TableSortLabel/TableSortLabel.js","views/TestSearchV2/TestSearchResults.tsx","views/TestSearchV2/Categories.tsx","views/TestSearchV2/TestSearchV2Container.tsx","views/TestSearchV2/index.ts"],"names":["ArrowDownward","Object","createSvgIcon","react","d","TableSortLabel_TableSortLabel","props","ref","_props$active","active","children","classes","className","_props$direction","direction","_props$hideSortIcon","hideSortIcon","_props$IconComponent","IconComponent","other","objectWithoutProperties","ButtonBase","esm_extends","clsx_m","root","component","disableRipple","icon","concat","capitalize","esm_TableSortLabel_TableSortLabel","withStyles","theme","cursor","display","justifyContent","flexDirection","alignItems","&:focus","color","palette","text","secondary","&:hover","& $icon","opacity","&$active","primary","&& $icon","fontSize","marginRight","marginLeft","transition","transitions","create","duration","shorter","userSelect","iconDirectionDesc","transform","iconDirectionAsc","name","deepCopy","require","useStyles","makeStyles","noTest","fonts","sizes","xl","fontWeight","colors","powderBlue","width","textAlign","table","fontFamily","tableHeader","paddingLeft","paddingRight","tableRowCell","paddingBottom","verticalAlign","reqButton","textTransform","white","backgroundColor","deepSeaBlue","padding","height","lastColumnCell","paddingTop","smallGridContainer","buttonDiv","float","buttonWrapper","infoIcon","TestSearchResults","_ref","tests","isLoading","enqueueSnackbar","useSnackbar","_useState","useState","_useState2","slicedToArray","sortedTets","setSortedTets","_React$useState","React","_React$useState2","order","setOrder","_React$useState3","_React$useState4","orderBy","setOrderBy","useEffect","window","addEventListener","currentTests","sortTests","sortBy","newOrder","sortedTests","sort","a","b","code","turnAroundTimeText","fieldAndValue","field","value","link","bold","react_default","createElement","Fragment","style","blueLink","Link","href","underline","getButton","test","isReanalysisTest","tags","includes","hasOrderSections","Tooltip","title","InfoOutlined","AddToCartButton","onClick","addToCart","variant","handleAddToCart","disabled","disableAddToCartReason","length","disabledReason","undefined","Button","path","requisitionLink","open","testLink","testCodeNumber","Number","isNaN","displayTestCode","Hidden","smDown","TableContainer","Paper","Table","size","aria-label","TableHead","TableRow","TableCell","minWidth","align","appConfig","features","isPriceDisabled","TableBody","map","key","scope","shortDescription","cptCodes","price","mdUp","index","Grid","container","spacing","gridContainerSpacing","item","xs","Divider","createStyles","categoryContainer","margin","&:hover > img","transformOrigin","background","seaShell","marginTop","flexWrap","marginBottom","categoryText","xxs","createTheme","breakpoints","values","sm","md","lg","withRouter","history","mainCategories","setMainCategories","_useState3","_useState4","secondaryCategories","setSecondaryCategories","_ref2","asyncToGenerator","regenerator_default","mark","_callee","categories","_mainCategories","_secondaryCategories","wrap","_context","prev","next","testApi","getCategories","sent","sortByDisplayOrder","filter","x","parentCategoryId","stop","apply","this","arguments","ThemeProvider","id","catalogUrl","toLowerCase","src","displayName","toUpperCase","alt","components","searchWide","searchMobile","xxl","TestSearchV2Container","location","searchTerms","setSearchTerms","searchResults","setSearchResults","_useState5","_useState6","setLoading","_useState7","_useState8","showCategories","setShowCategories","runSearch","push","innerWidth","setWidth","mapToBriefDto","search","_ref3","_callee2","response","result","_context2","abrupt","searchDetails","testSummaryResults","sortByImportance","_x","keywordValues","queryString","parse","keywords","Array","isArray","join","document","hideLogin","centerStyle","searchText","placeholderText","handleChange","event","target","handleSubmit","LinearProgress","visibility","TestSearchV2_TestSearchResults","TestSearchV2_Categories"],"mappings":"0UAMeA,EAAAC,OAAAC,EAAA,GAEfC,EAAA,cAAmB,QACnBC,EAAA,mEACC,0CCyDGC,EAEJF,EAAA,WAAgB,SAAAG,EAAAC,GAChB,IAAAC,EAAAF,EAAAG,OACAA,OAAA,IAAAD,KACAE,EAAAJ,EAAAI,SACAC,EAAAL,EAAAK,QACAC,EAAAN,EAAAM,UACAC,EAAAP,EAAAQ,UACAA,OAAA,IAAAD,EAAA,MAAAA,EACAE,EAAAT,EAAAU,aACAA,OAAA,IAAAD,KACAE,EAAAX,EAAAY,cACAA,OAAA,IAAAD,EAAwDjB,EAAiBiB,EACzEE,EAAclB,OAAAmB,EAAA,EAAAnB,CAAwBK,EAAA,wFAEtC,OAEIH,EAAA,cAAoBkB,EAAA,EAAYpB,OAAAqB,EAAA,EAAArB,CAAQ,CAC5CW,UAAiBX,OAAAsB,EAAA,EAAAtB,CAAIU,EAAAa,KAAAZ,EAAAH,GAAAE,EAAAF,QACrBgB,UAAA,OACAC,eAAA,EACAnB,OACKY,GAAAT,EAAAM,IAAAP,EAAA,KAEDN,EAAA,cAAmBe,EAAA,CACvBN,UAAiBX,OAAAsB,EAAA,EAAAtB,CAAIU,EAAAgB,KAAAhB,EAAA,gBAAAiB,OAA8C3B,OAAA4B,EAAA,EAAA5B,CAAUa,WAyC9DgB,EAAA7B,OAAA8B,EAAA,EAAA9B,CA7HR,SAAA+B,GACP,OAEAR,KAAA,CACAS,OAAA,UACAC,QAAA,cACAC,eAAA,aACAC,cAAA,UACAC,WAAA,SACAC,UAAA,CACAC,MAAAP,EAAAQ,QAAAC,KAAAC,WAEAC,UAAA,CACAJ,MAAAP,EAAAQ,QAAAC,KAAAC,UACAE,UAAA,CACAC,QAAA,KAGAC,WAAA,CACAP,MAAAP,EAAAQ,QAAAC,KAAAM,QAEAC,WAAA,CACAH,QAAA,EACAN,MAAAP,EAAAQ,QAAAC,KAAAC,aAMAjC,OAAA,GAGAkB,KAAA,CACAsB,SAAA,GACAC,YAAA,EACAC,WAAA,EACAN,QAAA,EACAO,WAAApB,EAAAqB,YAAAC,OAAA,yBACAC,SAAAvB,EAAAqB,YAAAE,SAAAC,UAEAC,WAAA,QAIAC,kBAAA,CACAC,UAAA,gBAIAC,iBAAA,CACAD,UAAA,oBA2EyB,CACzBE,KAAA,qBADe,CAEZxD,sGC3GGyD,EAAWC,EAAQ,KAEnBC,EAAYC,YAAW,CAC3BC,OAAQ,CACNjB,SAAUkB,IAAMC,MAAMC,GACtBC,WAAY,IACZ/B,MAAOgC,IAAOC,WACdC,MAAO,OACPC,UAAW,UAEbC,MAAO,CACLC,WAAY,oBAEdC,YAAa,CACXP,WAAY,OACZrB,SAAU,QACV6B,YAAa,GACbC,aAAc,IAEhBC,aAAc,CACZC,cAAe,GACfH,YAAa,GACbC,aAAc,GACdG,cAAe,OAEjBC,UAAW,CACTlC,SAAU,UACVmC,cAAe,aACf7C,MAAOgC,IAAOc,MACdC,gBAAiBf,IAAOgB,YACxBC,QAAS,MACTC,OAAQ,QAEVC,eAAgB,CACdR,cAAe,SACfS,WAAY,IAEdC,mBAAoB,CAClBN,gBAAiB,QACjBE,QAAS,IAEXK,UAAW,CACTC,MAAO,SAETC,cAAe,CACb7D,QAAS,OACTG,WAAY,SACZF,eAAgB,YAElB6D,SAAU,CACR9C,YAAa,SAiVF+C,EAxUsD,SAAAC,GAG/D,IAFJC,EAEID,EAFJC,MACAC,EACIF,EADJE,UAEMzF,EAAUqD,IACRqC,EAAoBC,wBAApBD,gBAFJE,EAIgCC,mBAElCL,GANEM,EAAAxG,OAAAyG,EAAA,EAAAzG,CAAAsG,EAAA,GAIGI,EAJHF,EAAA,GAIeG,EAJfH,EAAA,GAAAI,EASsBC,IAAMN,SADX,QARjBO,EAAA9G,OAAAyG,EAAA,EAAAzG,CAAA4G,EAAA,GASGG,EATHD,EAAA,GASUE,EATVF,EAAA,GAAAG,EAU0BJ,IAAMN,SAAS,IAVzCW,EAAAlH,OAAAyG,EAAA,EAAAzG,CAAAiH,EAAA,GAUGE,EAVHD,EAAA,GAUYE,EAVZF,EAAA,GAYJG,oBAAU,WACRV,EAAcT,IACb,CAACA,IAEJoB,OAAOC,iBAAiB,UAAW,WACjC,IAAMC,EAAe3D,EAAS6C,GAC9BC,EAAca,KAGhB,IAAMC,EAAY,SAACC,GACjBN,EAAWM,GACX,IAAIC,EAA4B,SAAVZ,EAAmB,MAAQ,OAKjD,GAJII,IAAYO,IACdC,EAjBiB,QAmBnBX,EAASW,GACLzB,EAAO,CACT,IAAI0B,EAAc1B,EACH,SAAXwB,EACFE,EAAc1B,EAAM2B,KAAK,SAACC,EAAGC,GAAJ,MACV,QAAbJ,EACIG,EAAElE,KAAOmE,EAAEnE,KACT,GACC,EACHkE,EAAElE,KAAOmE,EAAEnE,KACX,GACC,IAEa,SAAX8D,EACTE,EAAc1B,EAAM2B,KAAK,SAACC,EAAGC,GAAJ,MACV,QAAbJ,EACIG,EAAEE,KAAOD,EAAEC,KACT,GACC,EACHF,EAAEE,KAAOD,EAAEC,KACX,GACC,IAEa,QAAXN,IACTE,EAAc1B,EAAM2B,KAAK,SAACC,EAAGC,GAAJ,MACV,QAAbJ,EACIG,EAAEG,oBACFF,EAAEE,oBACFH,EAAEG,mBAAqBF,EAAEE,mBACvB,GACC,EACHH,EAAEG,oBACFF,EAAEE,oBACFH,EAAEG,mBAAqBF,EAAEE,mBACzB,GACC,KAGTtB,EAAciB,KA0KZM,EAAgB,SACpBC,EACAC,EACAC,EACAC,GAEA,OACEC,EAAAT,EAAAU,cAAAD,EAAAT,EAAAW,SAAA,KACEF,EAAAT,EAAAU,cAAAD,EAAAT,EAAAW,SAAA,KAAGN,GACHI,EAAAT,EAAAU,cAAA,OACEE,MAAO,CACLrE,WAAYiE,EAAO,OAAS,KAG7BD,GAAQD,EACPG,EAAAT,EAAAU,cAAA,OAAKlG,MAAOgC,IAAOqE,UACjBJ,EAAAT,EAAAU,cAACI,EAAA,EAAD,CAAMC,KAAMR,EAAMS,UAAU,SACzBV,IAILA,KAOJW,EAAY,SAACC,GACjB,IAAMC,EACJD,EAAKE,MAAQF,EAAKE,KAAKC,SAAS,uBAElC,OACEZ,EAAAT,EAAAU,cAAA,OAAK7H,UAAWD,EAAQkF,WACrBoD,EAAKI,iBACJb,EAAAT,EAAAU,cAAA,OAAK7H,UAAWD,EAAQoF,eACrBmD,GACCV,EAAAT,EAAAU,cAACa,EAAA,EAAD,CAASC,MAAM,+GACbf,EAAAT,EAAAU,cAACe,EAAA,EAAD,CAAc5I,UAAWD,EAAQqF,YAGrCwC,EAAAT,EAAAU,cAACgB,EAAA,EAAD,CACEC,QAAS,kBAhNG,SAACT,GACvBU,YAAUV,GACV5C,EAAgB,mCAAoC,CAClDuD,QAAS,YA6McC,CAAgBZ,IAC/Ba,SAAUC,YAAuBd,GAAMe,OAAS,EAChDC,eACEf,OAAmBgB,EAAYH,YAAuBd,MAK5DT,EAAAT,EAAAU,cAAC0B,EAAA,EAAD,CACE5H,MAAM,UACNqH,QAAQ,YACRhJ,UAAWD,EAAQwE,UACnBuE,QAAS,kBArNMU,EAqNgBnB,EAAKoB,qBApN5C9C,OAAO+C,KAAKF,GADU,IAACA,IAiNjB,iBAaFG,EAAW,SAACtB,GAChB,IAAMuB,EAAiBC,OAAOxB,EAAKhB,MACnC,OAAIyC,MAAMF,IAAmBvB,EAAK0B,gBAChC,YAAA/I,OAAmBqH,EAAK0B,gBAAxB,SAAA/I,OAA+CqH,EAAKhB,MAEpD,YAAArG,OAAmBqH,EAAKhB,OAI5B,OACEO,EAAAT,EAAAU,cAAAD,EAAAT,EAAAW,SAAA,KACK/B,KAAeA,GAAoC,IAAtBA,EAAWqD,SAC1C5D,EAMCoC,EAAAT,EAAAU,cAAAD,EAAAT,EAAAW,SAAA,KACEF,EAAAT,EAAAU,cAACmC,EAAA,EAAD,CAAQC,QAAM,GA3OlBrC,EAAAT,EAAAU,cAAAD,EAAAT,EAAAW,SAAA,KACG/B,GAAcA,EAAWqD,OAAS,GACjCxB,EAAAT,EAAAU,cAACqC,EAAA,EAAD,CAAgBrJ,UAAWsJ,KACzBvC,EAAAT,EAAAU,cAACuC,EAAA,EAAD,CACEpK,UAAWD,EAAQgE,MACnBsG,KAAK,QACLC,aAAW,iBAEX1C,EAAAT,EAAAU,cAAC0C,EAAA,EAAD,KACE3C,EAAAT,EAAAU,cAAC2C,EAAA,EAAD,KACE5C,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CACEzK,UAAWD,EAAQkE,YACnB8D,MAAO,CAAE2C,SAAU,MAEnB9C,EAAAT,EAAAU,cAAC3G,EAAD,CACErB,OAAoB,SAAZ2G,EACRtG,UAAWkG,EACX0C,QAAS,kBAAMhC,EAAU,UAH3B,SAQFc,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CACEE,MAAM,OACN3K,UAAWD,EAAQkE,YACnB8D,MAAO,CAAE2C,SAAU,MAEnB9C,EAAAT,EAAAU,cAAC3G,EAAD,CACErB,OAAoB,SAAZ2G,EACRtG,UAAWkG,EACX0C,QAAS,kBAAMhC,EAAU,UAH3B,cAQFc,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,OAAO3K,UAAWD,EAAQkE,aAA3C,eAGA2D,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CACEE,MAAM,OACN3K,UAAWD,EAAQkE,YACnB8D,MAAO,CAAE2C,SAAU,KAEnB9C,EAAAT,EAAAU,cAAC3G,EAAD,CACErB,OAAoB,QAAZ2G,EACRtG,UAAWkG,EACX0C,QAAS,kBAAMhC,EAAU,SAH3B,QAQFc,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CACEE,MAAM,OACN3K,UAAWD,EAAQkE,YACnB8D,MAAO,CAAE2C,SAAU,KAHrB,iBAOE/D,OAAOiE,UAAUC,SAASC,iBAC1BlD,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,QAAQ3K,UAAWD,EAAQkE,aAA5C,SAIF2D,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,QAAQ3K,UAAWD,EAAQkE,gBAGhD2D,EAAAT,EAAAU,cAACkD,EAAA,EAAD,KACGhF,EAAWiF,IAAI,SAAC3C,GAAD,OACdT,EAAAT,EAAAU,cAAC2C,EAAA,EAAD,CAAUS,IAAK5C,EAAKhB,MAClBO,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CACE5J,UAAU,KACVqK,MAAM,MACNlL,UAAWD,EAAQqE,cAElBiE,EAAKpF,MAER2E,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CACEE,MAAM,OACN3K,UAAWD,EAAQqE,aACnBzC,MAAOgC,IAAOqE,UAEdJ,EAAAT,EAAAU,cAACI,EAAA,EAAD,CAAMC,KAAMyB,EAAStB,GAAOF,UAAU,SACnCE,EAAKhB,OAGVO,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,OAAO3K,UAAWD,EAAQqE,cACxCiE,EAAK8C,kBAERvD,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,OAAO3K,UAAWD,EAAQqE,cACxCiE,EAAKf,oBAERM,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,OAAO3K,UAAWD,EAAQqE,cACxCiE,EAAK+C,WAENzE,OAAOiE,UAAUC,SAASC,iBAC1BlD,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,QAAQ3K,UAAWD,EAAQqE,cACzCiE,EAAKgD,OAGVzD,EAAAT,EAAAU,cAAC4C,EAAA,EAAD,CAAWE,MAAM,OAAO3K,UAAWD,EAAQ+E,gBACxCsD,EAAUC,YAwIvBT,EAAAT,EAAAU,cAACmC,EAAA,EAAD,CAAQsB,MAAI,GA1HhB1D,EAAAT,EAAAU,cAAA,OAAK7H,UAAWD,EAAQiF,oBACrBe,GACCA,EAAWqD,OAAS,GACpBrD,EAAWiF,IAAI,SAAC3C,EAAMkD,GAAP,OACb3D,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMC,WAAS,EAACC,QAASC,uBAAsBV,IAAK5C,EAAKhB,MAC5C,IAAVkE,GACC3D,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACbjE,EAAAT,EAAAU,cAACiE,EAAA,EAAD,OAGJlE,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZtE,EAAc,YAAac,EAAKpF,UAAMqG,GAAW,IAEpD1B,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZtE,EAAc,YAAac,EAAKhB,KAAMsC,EAAStB,KAElDT,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZtE,EAAc,cAAec,EAAK8C,mBAErCvD,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZtE,EAAc,MAAOc,EAAKf,wBAAoBgC,GAAW,IAE5D1B,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZtE,EAAc,cAAec,EAAK+C,YAEnCzE,OAAOiE,UAAUC,SAASC,iBAC1BlD,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZtE,EAAc,QAASc,EAAKgD,QAGjCzD,EAAAT,EAAAU,cAAC2D,EAAA,EAAD,CAAMI,MAAI,EAACC,GAAI,IACZzD,EAAUC,UAoFnBT,EAAAT,EAAAU,cAAA,MAAI7H,UAAWD,EAAQuD,QAAvB,uLCxYFF,GAAYC,YAChB0I,YAAa,CACXC,kBAAmB,CACjBC,OAAQ,SACRjI,WAAY,SACZN,WAAY,IACZrB,SAAUkB,IAAMC,MAAMqI,GACtBlK,MAAOgC,IAAOgB,YACdtD,OAAQ,UACRyC,UAAW,SACXD,MAAO,UACPW,cAAe,YACfhC,WAAY,uBACZ0J,gBAAiB,CACfnJ,UAAW,aACXoJ,gBAAiB,UAEnBpK,UAAW,CACTqK,WAAYzI,IAAO0I,SACnBtJ,UAAW,cAEbtB,WAAY,YAEdgK,UAAW,CACTnK,QAAS,OACTgL,UAAW,MACX/K,eAAgB,SAChBgL,SAAU,OACV1I,MAAO,OACP2I,aAAc,OAEhBzL,KAAM,CACJyL,aAAc,OAEhBC,aAAc,CACZzI,WAAY,SACZN,WAAY,IACZrB,SAAUkB,IAAMC,MAAMkJ,IACtB/K,MAAO,cAKPP,GAAQuL,YAAY,CACxBC,YAAa,CACXC,OAAQ,CACNhB,GAAI,EACJiB,GAAI,IACJC,GAAI,IACJC,GAAI,KACJvJ,GAAI,SA0EKwJ,eAjEwC,SAAA3H,GAAiBA,EAAd4H,QAAc,IAAAvH,EAC1BC,qBAD0BC,EAAAxG,OAAAyG,EAAA,EAAAzG,CAAAsG,EAAA,GAC/DwH,EAD+DtH,EAAA,GAC/CuH,EAD+CvH,EAAA,GAAAwH,EAEhBzH,wBAEpD0D,GAJoEgE,EAAAjO,OAAAyG,EAAA,EAAAzG,CAAAgO,EAAA,GAE/DE,EAF+DD,EAAA,GAE1CE,EAF0CF,EAAA,GAMhEvN,EAAUqD,KAuBhB,OArBAsD,oBAAU,WAgBHyG,GAfc,eAAAM,EAAApO,OAAAqO,EAAA,EAAArO,CAAAsO,EAAAxG,EAAAyG,KAAG,SAAAC,IAAA,IAAAC,EAAAC,EAAAC,EAAA,OAAAL,EAAAxG,EAAA8G,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,cAAAF,EAAAE,KAAA,EACKC,IAAQC,gBADb,QACdR,EADcI,EAAAK,QAGlBC,YAAmBV,GACbX,EAAiBW,EAAWW,OAChC,SAACC,GAAD,YAA8BpF,IAAvBoF,EAAEC,mBAEXvB,EAAkBD,GACZI,EAAsBO,EAAWW,OACrC,SAACC,GAAD,YAA8BpF,IAAvBoF,EAAEC,mBAEXnB,EAAuBD,IAXL,wBAAAW,EAAAU,SAAAf,MAAH,yBAAAJ,EAAAoB,MAAAC,KAAAC,YAAA,EAgBjBT,IAED,CAACnB,IAGFvF,EAAAT,EAAAU,cAACmH,EAAA,EAAD,CAAe5N,MAAOA,IACpBwG,EAAAT,EAAAU,cAAA,OAAK7H,UAAWD,EAAQ0L,WACrB0B,GACCA,EAAenC,IAAI,SAAC0D,GAAD,OACjB9G,EAAAT,EAAAU,cAAC0B,EAAA,EAAD,CACE0B,IAAKyD,EAAEO,GACPjP,UAAWD,EAAQiM,kBACnB9D,KACEvB,OAAOiE,UAAUsE,WACjB,aACAR,EAAEzL,KAAKkM,eAGTvH,EAAAT,EAAAU,cAAA,YACED,EAAAT,EAAAU,cAAA,OACE7H,UAAWD,EAAQgB,KACnBqO,IAAK,WAAaV,EAAEW,YAAYC,cAAgB,OAChDC,IAAKb,EAAEW,YACPtH,MAAO,CACLlD,OAAQ,MACRE,WAAU,QAAA/D,OAtDZ,EAsDY,QAA2B,MAA3B,QAGd4G,EAAAT,EAAAU,cAAA,OAAK7H,UAAWD,EAAQ0M,cAAeiC,EAAEW,kBAKlD9B,GACC3F,EAAAT,EAAAU,cAAC2H,EAAA,EAAD,CAAqBjC,oBAAqBA,OC7G5CnK,GAAYC,YAAW,SAACjC,GAAD,OAC3B2K,YAAa,CACXzI,OAAQ,CACNjB,SAAUkB,IAAMC,MAAMC,GACtBC,WAAY,IACZ/B,MAAOgC,IAAOC,WACdC,MAAO,OACPC,UAAW,UAEb2L,WAAY,CAAE5L,MAAO,MAAOoI,OAAQ,aACpCyD,aAAc,CAAEzD,OAAQ,aACxBtD,MAAO,CACL2D,UAAW,MACXE,aAAc,QACdnK,SAAUkB,IAAMC,MAAMmM,IACtBhO,MAAOgC,IAAOgB,YACdb,UAAW,cAgHF8L,GA3GuD,SAAAtK,GAGhE,IAFJ4H,EAEI5H,EAFJ4H,QACA2C,EACIvK,EADJuK,SAEM9P,EAAUqD,KADZuC,EAGkCC,mBAAS,IAH3CC,EAAAxG,OAAAyG,EAAA,EAAAzG,CAAAsG,EAAA,GAGGmK,EAHHjK,EAAA,GAGgBkK,EAHhBlK,EAAA,GAAAwH,EAIsCzH,qBAJtC0H,EAAAjO,OAAAyG,EAAA,EAAAzG,CAAAgO,EAAA,GAIG2C,EAJH1C,EAAA,GAIkB2C,EAJlB3C,EAAA,GAAA4C,EAK4BtK,oBAAS,GALrCuK,EAAA9Q,OAAAyG,EAAA,EAAAzG,CAAA6Q,EAAA,GAKG1K,EALH2K,EAAA,GAKcC,EALdD,EAAA,GAAAE,EAMwCzK,oBAAS,GANjD0K,EAAAjR,OAAAyG,EAAA,EAAAzG,CAAAgR,EAAA,GAMGE,EANHD,EAAA,GAMmBE,EANnBF,EAAA,GAQEG,EAAS,eAAAhD,EAAApO,OAAAqO,EAAA,EAAArO,CAAAsO,EAAAxG,EAAAyG,KAAG,SAAAC,IAAA,OAAAF,EAAAxG,EAAA8G,KAAA,SAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAChBlB,EAAQwD,KAAK,WAAaZ,GAAW,aAAA9O,OAAiB8O,KADtC,wBAAA5B,EAAAU,SAAAf,MAAH,yBAAAJ,EAAAoB,MAAAC,KAAAC,YAAA,GARX9I,EAYsBC,IAAMN,SAASe,OAAOgK,YAZ5CxK,EAAA9G,OAAAyG,EAAA,EAAAzG,CAAA4G,EAAA,GAYGpC,EAZHsC,EAAA,GAYUyK,EAZVzK,EAAA,GAcJO,oBAAU,WACRC,OAAOC,iBAAiB,SAAU,kBAAMgK,EAASjK,OAAOgK,eACvD,IAGH,IAAME,EAAgB,SAACxI,GAcrB,MAboC,CAClCpF,KAAMoF,EAAKpF,KACXoE,KAAMgB,EAAKhB,KACX+D,SAAU/C,EAAK+C,SACfD,iBAAkB9C,EAAK8C,iBACvB2C,WAAYzF,EAAKyF,WACjBzC,MAAOhD,EAAKgD,MACZtB,gBAAiB1B,EAAK0B,gBACtBzC,mBAAoBe,EAAKf,mBACzBmB,iBAAkBJ,EAAKI,iBACvBgB,gBAAiBpB,EAAKoB,gBACtBlB,KAAMF,EAAKE,OAKf7B,oBAAU,WACR,IAAMoK,EAAM,eAAAC,EAAA1R,OAAAqO,EAAA,EAAArO,CAAAsO,EAAAxG,EAAAyG,KAAG,SAAAoD,EAAOvJ,GAAP,IAAAwJ,EAAAC,EAAAjK,EAAA,OAAA0G,EAAAxG,EAAA8G,KAAA,SAAAkD,GAAA,cAAAA,EAAAhD,KAAAgD,EAAA/C,MAAA,UACR3G,EADQ,CAAA0J,EAAA/C,KAAA,eAEX6B,OAAiB3G,GAFN6H,EAAAC,OAAA,wBAKbnB,EAAiB,IACjBG,GAAW,GANEe,EAAA/C,KAAA,EAOU7I,IAAM8L,cAAc5J,GAP9B,OAOPwJ,EAPOE,EAAA5C,KAQP2C,EACHD,EAASK,oBACRL,EAASK,mBAAmBtG,IAAI,SAAC3C,GAAD,OAAUwI,EAAcxI,MAC1D,GACIpB,EAAcsK,YAAiBL,GACrCjB,EAAiBhJ,GACjBmJ,GAAW,GAdE,yBAAAe,EAAAvC,SAAAoC,MAAH,gBAAAQ,GAAA,OAAAT,EAAAlC,MAAAC,KAAAC,YAAA,GAiBN0C,EAAgBC,IAAYC,MAAM9B,EAASiB,QAAQc,SACnDA,EAAWC,MAAMC,QAAQL,GAC3BA,EAAcM,KAAK,KACnBN,GAAiB,GACrB1B,EAAe6B,GACfpB,GAAmBoB,GACnBd,EAAOc,GACPI,SAASrJ,MAAQiJ,EAAQ,qCAAA5Q,OACgB4Q,EADhB,sBAErB,kCACH,CAAC/B,IAMJ,OACEjI,EAAAT,EAAAU,cAAC2H,EAAA,EAAD,CACEyC,WAAW,EACXC,YAAa,CACXtN,QAAS,gBACTZ,WAAY,yDAGd4D,EAAAT,EAAAU,cAAA,OAAK7H,UAAWD,EAAQ4I,OAAxB,aACAf,EAAAT,EAAAU,cAAA,OAAK7H,UAAW6D,EAAQ,IAAM9D,EAAQ0P,WAAa1P,EAAQ2P,cACzD9H,EAAAT,EAAAU,cAAC2H,EAAA,EAAD,CACE2C,WAAYrC,EACZsC,gBAAgB,oDAChBC,aAjBa,SAACC,GACpBvC,EAAeuC,EAAMC,OAAO9K,QAiBtB+K,aAAc/B,KAIlB7I,EAAAT,EAAAU,cAAC4K,EAAA,EAAD,CACEzJ,QAAQ,QACRjB,MAAO,CACL2K,WAAYlN,EAAY,UAAY,SACpCgH,aAAc,SAGjBwD,GACCpI,EAAAT,EAAAU,cAAC8K,EAAD,CAAmBpN,MAAOyK,EAAexK,UAAWA,IAGrD+K,GAAkB3I,EAAAT,EAAAU,cAAC+K,GAAD,QC5IVhD","file":"static/js/14.32f76a88.chunk.js","sourcesContent":["import * as React from 'react';\nimport createSvgIcon from '../../utils/createSvgIcon';\n/**\n * @ignore - internal component.\n */\n\nexport default createSvgIcon(\n/*#__PURE__*/\nReact.createElement(\"path\", {\n d: \"M20 12l-1.41-1.41L13 16.17V4h-2v12.17l-5.58-5.59L4 12l8 8 8-8z\"\n}), 'ArrowDownward');","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/esm/objectWithoutProperties\";\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport ArrowDownwardIcon from '../internal/svg-icons/ArrowDownward';\nimport withStyles from '../styles/withStyles';\nimport ButtonBase from '../ButtonBase';\nimport capitalize from '../utils/capitalize';\nexport var styles = function styles(theme) {\n return {\n /* Styles applied to the root element. */\n root: {\n cursor: 'pointer',\n display: 'inline-flex',\n justifyContent: 'flex-start',\n flexDirection: 'inherit',\n alignItems: 'center',\n '&:focus': {\n color: theme.palette.text.secondary\n },\n '&:hover': {\n color: theme.palette.text.secondary,\n '& $icon': {\n opacity: 0.5\n }\n },\n '&$active': {\n color: theme.palette.text.primary,\n // && instead of & is a workaround for https://github.com/cssinjs/jss/issues/1045\n '&& $icon': {\n opacity: 1,\n color: theme.palette.text.secondary\n }\n }\n },\n\n /* Pseudo-class applied to the root element if `active={true}`. */\n active: {},\n\n /* Styles applied to the icon component. */\n icon: {\n fontSize: 18,\n marginRight: 4,\n marginLeft: 4,\n opacity: 0,\n transition: theme.transitions.create(['opacity', 'transform'], {\n duration: theme.transitions.duration.shorter\n }),\n userSelect: 'none'\n },\n\n /* Styles applied to the icon component if `direction=\"desc\"`. */\n iconDirectionDesc: {\n transform: 'rotate(0deg)'\n },\n\n /* Styles applied to the icon component if `direction=\"asc\"`. */\n iconDirectionAsc: {\n transform: 'rotate(180deg)'\n }\n };\n};\n/**\n * A button based label for placing inside `TableCell` for column sorting.\n */\n\nvar TableSortLabel =\n/*#__PURE__*/\nReact.forwardRef(function TableSortLabel(props, ref) {\n var _props$active = props.active,\n active = _props$active === void 0 ? false : _props$active,\n children = props.children,\n classes = props.classes,\n className = props.className,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'asc' : _props$direction,\n _props$hideSortIcon = props.hideSortIcon,\n hideSortIcon = _props$hideSortIcon === void 0 ? false : _props$hideSortIcon,\n _props$IconComponent = props.IconComponent,\n IconComponent = _props$IconComponent === void 0 ? ArrowDownwardIcon : _props$IconComponent,\n other = _objectWithoutProperties(props, [\"active\", \"children\", \"classes\", \"className\", \"direction\", \"hideSortIcon\", \"IconComponent\"]);\n\n return (\n /*#__PURE__*/\n React.createElement(ButtonBase, _extends({\n className: clsx(classes.root, className, active && classes.active),\n component: \"span\",\n disableRipple: true,\n ref: ref\n }, other), children, hideSortIcon && !active ? null :\n /*#__PURE__*/\n React.createElement(IconComponent, {\n className: clsx(classes.icon, classes[\"iconDirection\".concat(capitalize(direction))])\n }))\n );\n});\nprocess.env.NODE_ENV !== \"production\" ? TableSortLabel.propTypes = {\n /**\n * If `true`, the label will have the active styling (should be true for the sorted column).\n */\n active: PropTypes.bool,\n\n /**\n * Label contents, the arrow will be appended automatically.\n */\n children: PropTypes.node,\n\n /**\n * Override or extend the styles applied to the component.\n * See [CSS API](#css) below for more details.\n */\n classes: PropTypes.object.isRequired,\n\n /**\n * @ignore\n */\n className: PropTypes.string,\n\n /**\n * The current sort direction.\n */\n direction: PropTypes.oneOf(['asc', 'desc']),\n\n /**\n * Hide sort icon when active is false.\n */\n hideSortIcon: PropTypes.bool,\n\n /**\n * Sort icon to use.\n */\n IconComponent: PropTypes.elementType\n} : void 0;\nexport default withStyles(styles, {\n name: 'MuiTableSortLabel'\n})(TableSortLabel);","import React, { FunctionComponent, useEffect, useState } from \"react\";\r\nimport { TestSummaryBriefDTO } from \"@bg/shared/lib/dal/tests\";\r\nimport { colors, fonts } from \"@bg/shared/lib/theme\";\r\nimport { gridContainerSpacing } from \"@bg/shared/lib/theme/themes\";\r\nimport {\r\n Button,\r\n Divider,\r\n Grid,\r\n Hidden,\r\n Link,\r\n makeStyles,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow,\r\n TableSortLabel,\r\n Tooltip,\r\n} from \"@material-ui/core\";\r\nimport AddToCartButton from \"../TestCategory/AddToCartButton\";\r\nimport {\r\n addToCart,\r\n disableAddToCartReason,\r\n} from \"../Checkout/CheckoutContainer\";\r\nimport { useSnackbar } from \"notistack\";\r\nimport { InfoOutlined } from \"@material-ui/icons\";\r\n\r\nconst deepCopy = require(\"deepcopy\");\r\n\r\nconst useStyles = makeStyles({\r\n noTest: {\r\n fontSize: fonts.sizes.xl,\r\n fontWeight: 100,\r\n color: colors.powderBlue,\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n },\r\n table: {\r\n fontFamily: \"Roboto Condensed\",\r\n },\r\n tableHeader: {\r\n fontWeight: \"bold\",\r\n fontSize: \"1.1em\",\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n },\r\n tableRowCell: {\r\n paddingBottom: 40,\r\n paddingLeft: 10,\r\n paddingRight: 10,\r\n verticalAlign: \"top\",\r\n },\r\n reqButton: {\r\n fontSize: \"0.85rem\",\r\n textTransform: \"capitalize\",\r\n color: colors.white,\r\n backgroundColor: colors.deepSeaBlue,\r\n padding: \"6px\",\r\n height: \"2rem\",\r\n },\r\n lastColumnCell: {\r\n verticalAlign: \"bottom\",\r\n paddingTop: 40,\r\n },\r\n smallGridContainer: {\r\n backgroundColor: \"white\",\r\n padding: 10,\r\n },\r\n buttonDiv: {\r\n float: \"right\",\r\n },\r\n buttonWrapper: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n },\r\n infoIcon: {\r\n marginRight: \"2px\",\r\n },\r\n});\r\n\r\ninterface TestSearchResultsProps {\r\n tests?: TestSummaryBriefDTO[];\r\n isLoading?: boolean;\r\n}\r\n\r\nconst TestSearchResults: FunctionComponent<TestSearchResultsProps> = ({\r\n tests,\r\n isLoading,\r\n}) => {\r\n const classes = useStyles();\r\n const { enqueueSnackbar } = useSnackbar();\r\n\r\n const [sortedTets, setSortedTets] = useState<\r\n TestSummaryBriefDTO[] | undefined\r\n >(tests);\r\n type Order = \"asc\" | \"desc\";\r\n const initialOrder = \"desc\";\r\n const [order, setOrder] = React.useState<Order>(initialOrder);\r\n const [orderBy, setOrderBy] = React.useState(\"\");\r\n\r\n useEffect(() => {\r\n setSortedTets(tests);\r\n }, [tests]);\r\n\r\n window.addEventListener(\"storage\", () => {\r\n const currentTests = deepCopy(sortedTets);\r\n setSortedTets(currentTests);\r\n });\r\n\r\n const sortTests = (sortBy: string) => {\r\n setOrderBy(sortBy);\r\n let newOrder: Order = order === \"desc\" ? \"asc\" : \"desc\";\r\n if (orderBy !== sortBy) {\r\n newOrder = initialOrder;\r\n }\r\n setOrder(newOrder);\r\n if (tests) {\r\n let sortedTests = tests;\r\n if (sortBy === \"name\") {\r\n sortedTests = tests.sort((a, b) =>\r\n newOrder === \"asc\"\r\n ? a.name < b.name\r\n ? 1\r\n : -1\r\n : a.name > b.name\r\n ? 1\r\n : -1,\r\n );\r\n } else if (sortBy === \"code\") {\r\n sortedTests = tests.sort((a, b) =>\r\n newOrder === \"asc\"\r\n ? a.code < b.code\r\n ? 1\r\n : -1\r\n : a.code > b.code\r\n ? 1\r\n : -1,\r\n );\r\n } else if (sortBy === \"tat\") {\r\n sortedTests = tests.sort((a, b) =>\r\n newOrder === \"asc\"\r\n ? a.turnAroundTimeText &&\r\n b.turnAroundTimeText &&\r\n a.turnAroundTimeText < b.turnAroundTimeText\r\n ? 1\r\n : -1\r\n : a.turnAroundTimeText &&\r\n b.turnAroundTimeText &&\r\n a.turnAroundTimeText > b.turnAroundTimeText\r\n ? 1\r\n : -1,\r\n );\r\n }\r\n setSortedTets(sortedTests);\r\n }\r\n };\r\n\r\n const handleAddToCart = (test: TestSummaryBriefDTO) => {\r\n addToCart(test);\r\n enqueueSnackbar(\"Test has been added to the Order\", {\r\n variant: \"success\",\r\n });\r\n };\r\n\r\n const openRequisition = (path?: string) => {\r\n window.open(path);\r\n };\r\n\r\n const largeScreenTable = () => {\r\n return (\r\n <>\r\n {sortedTets && sortedTets.length > 0 && (\r\n <TableContainer component={Paper}>\r\n <Table\r\n className={classes.table}\r\n size=\"small\"\r\n aria-label=\"a dense table\"\r\n >\r\n <TableHead>\r\n <TableRow>\r\n <TableCell\r\n className={classes.tableHeader}\r\n style={{ minWidth: 140 }}\r\n >\r\n <TableSortLabel\r\n active={orderBy === \"name\"}\r\n direction={order}\r\n onClick={() => sortTests(\"name\")}\r\n >\r\n Name\r\n </TableSortLabel>\r\n </TableCell>\r\n <TableCell\r\n align=\"left\"\r\n className={classes.tableHeader}\r\n style={{ minWidth: 115 }}\r\n >\r\n <TableSortLabel\r\n active={orderBy === \"code\"}\r\n direction={order}\r\n onClick={() => sortTests(\"code\")}\r\n >\r\n Test Code\r\n </TableSortLabel>\r\n </TableCell>\r\n <TableCell align=\"left\" className={classes.tableHeader}>\r\n Description\r\n </TableCell>\r\n <TableCell\r\n align=\"left\"\r\n className={classes.tableHeader}\r\n style={{ minWidth: 70 }}\r\n >\r\n <TableSortLabel\r\n active={orderBy === \"tat\"}\r\n direction={order}\r\n onClick={() => sortTests(\"tat\")}\r\n >\r\n TAT\r\n </TableSortLabel>\r\n </TableCell>\r\n <TableCell\r\n align=\"left\"\r\n className={classes.tableHeader}\r\n style={{ minWidth: 70 }}\r\n >\r\n CPT Codes(s)\r\n </TableCell>\r\n {!window.appConfig.features.isPriceDisabled && (\r\n <TableCell align=\"right\" className={classes.tableHeader}>\r\n Price\r\n </TableCell>\r\n )}\r\n <TableCell align=\"right\" className={classes.tableHeader} />\r\n </TableRow>\r\n </TableHead>\r\n <TableBody>\r\n {sortedTets.map((test) => (\r\n <TableRow key={test.code}>\r\n <TableCell\r\n component=\"th\"\r\n scope=\"row\"\r\n className={classes.tableRowCell}\r\n >\r\n {test.name}\r\n </TableCell>\r\n <TableCell\r\n align=\"left\"\r\n className={classes.tableRowCell}\r\n color={colors.blueLink}\r\n >\r\n <Link href={testLink(test)} underline=\"hover\">\r\n {test.code}\r\n </Link>\r\n </TableCell>\r\n <TableCell align=\"left\" className={classes.tableRowCell}>\r\n {test.shortDescription}\r\n </TableCell>\r\n <TableCell align=\"left\" className={classes.tableRowCell}>\r\n {test.turnAroundTimeText}\r\n </TableCell>\r\n <TableCell align=\"left\" className={classes.tableRowCell}>\r\n {test.cptCodes}\r\n </TableCell>\r\n {!window.appConfig.features.isPriceDisabled && (\r\n <TableCell align=\"right\" className={classes.tableRowCell}>\r\n {test.price}\r\n </TableCell>\r\n )}\r\n <TableCell align=\"left\" className={classes.lastColumnCell}>\r\n {getButton(test)}\r\n </TableCell>\r\n </TableRow>\r\n ))}\r\n </TableBody>\r\n </Table>\r\n </TableContainer>\r\n )}\r\n </>\r\n );\r\n };\r\n\r\n const smallScreenGrid = () => {\r\n return (\r\n <div className={classes.smallGridContainer}>\r\n {sortedTets &&\r\n sortedTets.length > 0 &&\r\n sortedTets.map((test, index) => (\r\n <Grid container spacing={gridContainerSpacing} key={test.code}>\r\n {index !== 0 && (\r\n <Grid item xs={12}>\r\n <Divider />\r\n </Grid>\r\n )}\r\n <Grid item xs={12}>\r\n {fieldAndValue(\"Test Name\", test.name, undefined, true)}\r\n </Grid>\r\n <Grid item xs={12}>\r\n {fieldAndValue(\"Test Code\", test.code, testLink(test))}\r\n </Grid>\r\n <Grid item xs={12}>\r\n {fieldAndValue(\"Description\", test.shortDescription)}\r\n </Grid>\r\n <Grid item xs={12}>\r\n {fieldAndValue(\"TAT\", test.turnAroundTimeText, undefined, true)}\r\n </Grid>\r\n <Grid item xs={12}>\r\n {fieldAndValue(\"CPT Code(s)\", test.cptCodes)}\r\n </Grid>\r\n {!window.appConfig.features.isPriceDisabled && (\r\n <Grid item xs={12}>\r\n {fieldAndValue(\"Price\", test.price)}\r\n </Grid>\r\n )}\r\n <Grid item xs={12}>\r\n {getButton(test)}\r\n </Grid>\r\n </Grid>\r\n ))}\r\n </div>\r\n );\r\n };\r\n\r\n const fieldAndValue = (\r\n field: string,\r\n value: any,\r\n link?: string,\r\n bold?: boolean,\r\n ) => {\r\n return (\r\n <>\r\n <>{field}</>\r\n <div\r\n style={{\r\n fontWeight: bold ? \"bold\" : \"\",\r\n }}\r\n >\r\n {link && value ? (\r\n <div color={colors.blueLink}>\r\n <Link href={link} underline=\"hover\">\r\n {value}\r\n </Link>\r\n </div>\r\n ) : (\r\n value\r\n )}\r\n </div>\r\n </>\r\n );\r\n };\r\n\r\n const getButton = (test: TestSummaryBriefDTO) => {\r\n const isReanalysisTest =\r\n test.tags && test.tags.includes(\"reanalysisTestCodes\");\r\n\r\n return (\r\n <div className={classes.buttonDiv}>\r\n {test.hasOrderSections ? (\r\n <div className={classes.buttonWrapper}>\r\n {isReanalysisTest && (\r\n <Tooltip title=\"To place a reanalysis order, go to the report details page for the patient and select Reanalyze Test there.\">\r\n <InfoOutlined className={classes.infoIcon} />\r\n </Tooltip>\r\n )}\r\n <AddToCartButton\r\n onClick={() => handleAddToCart(test)}\r\n disabled={disableAddToCartReason(test).length > 0}\r\n disabledReason={\r\n isReanalysisTest ? undefined : disableAddToCartReason(test)\r\n }\r\n />\r\n </div>\r\n ) : (\r\n <Button\r\n color=\"primary\"\r\n variant=\"contained\"\r\n className={classes.reqButton}\r\n onClick={() => openRequisition(test.requisitionLink)}\r\n >\r\n Requisition\r\n </Button>\r\n )}\r\n </div>\r\n );\r\n };\r\n\r\n const testLink = (test: TestSummaryBriefDTO) => {\r\n const testCodeNumber = Number(test.code);\r\n if (isNaN(testCodeNumber) && test.displayTestCode) {\r\n return `/details/${test.displayTestCode}?ctc=${test.code}`;\r\n } else {\r\n return `/details/${test.code}`;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {(!sortedTets || (sortedTets && sortedTets.length === 0)) &&\r\n !isLoading ? (\r\n <h2 className={classes.noTest}>\r\n We have transitioned to our new test menu. If you are not finding the\r\n tests you are looking for, please contact us at 1-800-411-4363.\r\n </h2>\r\n ) : (\r\n <>\r\n <Hidden smDown>{largeScreenTable()}</Hidden>\r\n <Hidden mdUp>{smallScreenGrid()}</Hidden>\r\n </>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default TestSearchResults;\r\n","import React, { FunctionComponent, useEffect, useState } from \"react\";\r\nimport { makeStyles, createStyles } from \"@material-ui/styles\";\r\nimport { colors, fonts } from \"@bg/shared/lib/theme\";\r\nimport { RouteComponentProps, withRouter } from \"react-router-dom\";\r\nimport { Button, createTheme } from \"@material-ui/core\";\r\nimport { ThemeProvider } from \"@material-ui/core/styles\";\r\nimport testApi, { Category } from \"@bg/shared/lib/dal/tests\";\r\nimport { SecondaryCategories } from \"@bg/shared/lib/components\";\r\nimport { sortByDisplayOrder } from \"../Helpers\";\r\n\r\nconst useStyles = makeStyles(\r\n createStyles({\r\n categoryContainer: {\r\n margin: \"0.25em\",\r\n fontFamily: \"Roboto\",\r\n fontWeight: 400,\r\n fontSize: fonts.sizes.xs,\r\n color: colors.deepSeaBlue,\r\n cursor: \"pointer\",\r\n textAlign: \"center\",\r\n width: \"9.375em\",\r\n textTransform: \"uppercase\",\r\n transition: \"all .2s ease-in-out;\",\r\n \"&:hover > img\": {\r\n transform: \"scale(1.2)\",\r\n transformOrigin: \"center\",\r\n },\r\n \"&:hover\": {\r\n background: colors.seaShell,\r\n transform: \"scale(1.2)\",\r\n },\r\n alignItems: \"baseline\",\r\n },\r\n container: {\r\n display: \"flex\",\r\n marginTop: \"1em\",\r\n justifyContent: \"center\",\r\n flexWrap: \"wrap\",\r\n width: \"100%\",\r\n marginBottom: \"2em\",\r\n },\r\n icon: {\r\n marginBottom: \"1em\",\r\n },\r\n categoryText: {\r\n fontFamily: \"Roboto\",\r\n fontWeight: 700,\r\n fontSize: fonts.sizes.xxs,\r\n color: \"#28A8E0\",\r\n },\r\n })\r\n);\r\n\r\nconst theme = createTheme({\r\n breakpoints: {\r\n values: {\r\n xs: 0,\r\n sm: 600,\r\n md: 900,\r\n lg: 1400,\r\n xl: 1620,\r\n },\r\n },\r\n});\r\n\r\nconst maxHeight = 5;\r\n\r\ninterface CategoriesProps extends RouteComponentProps {}\r\n\r\nconst Categories: FunctionComponent<CategoriesProps> = ({ history }) => {\r\n const [mainCategories, setMainCategories] = useState<Category[]>();\r\n const [secondaryCategories, setSecondaryCategories] = useState<\r\n Category[] | undefined\r\n >(undefined);\r\n\r\n const classes = useStyles();\r\n\r\n useEffect(() => {\r\n const getCategories = async () => {\r\n const categories = await testApi.getCategories();\r\n if (categories) {\r\n sortByDisplayOrder(categories);\r\n const mainCategories = categories.filter(\r\n (x) => x.parentCategoryId === undefined\r\n );\r\n setMainCategories(mainCategories);\r\n const secondaryCategories = categories.filter(\r\n (x) => x.parentCategoryId !== undefined\r\n );\r\n setSecondaryCategories(secondaryCategories);\r\n }\r\n };\r\n\r\n if (!mainCategories) {\r\n getCategories();\r\n }\r\n }, [mainCategories]);\r\n\r\n return (\r\n <ThemeProvider theme={theme}>\r\n <div className={classes.container}>\r\n {mainCategories &&\r\n mainCategories.map((x) => (\r\n <Button\r\n key={x.id}\r\n className={classes.categoryContainer}\r\n href={\r\n window.appConfig.catalogUrl +\r\n \"/category/\" +\r\n x.name.toLowerCase()\r\n }\r\n >\r\n <span>\r\n <img\r\n className={classes.icon}\r\n src={\"/images/\" + x.displayName.toUpperCase() + \".svg\"}\r\n alt={x.displayName}\r\n style={{\r\n height: \"7em\",\r\n paddingTop: `calc(${maxHeight}em - ${\"5em\"})`,\r\n }}\r\n />\r\n <div className={classes.categoryText}>{x.displayName}</div>\r\n </span>\r\n </Button>\r\n ))}\r\n </div>\r\n {secondaryCategories && (\r\n <SecondaryCategories secondaryCategories={secondaryCategories} />\r\n )}\r\n </ThemeProvider>\r\n );\r\n};\r\n\r\nexport default withRouter(Categories);\r\n","import { DefaultLayout, SearchField } from \"@bg/shared/lib/components\";\r\nimport tests, { Test, TestSummaryBriefDTO } from \"@bg/shared/lib/dal/tests\";\r\nimport { colors, fonts } from \"@bg/shared/lib/theme\";\r\nimport {\r\n createStyles,\r\n InputBaseComponentProps,\r\n LinearProgress,\r\n makeStyles,\r\n Theme,\r\n} from \"@material-ui/core\";\r\nimport queryString from \"query-string\";\r\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\n\r\nimport { sortByImportance } from \"../Helpers\";\r\nimport TestSearchResults from \"./TestSearchResults\";\r\nimport Categories from \"./Categories\";\r\nimport { useAuth0 } from \"@bg/shared/lib/auth/react-auth0-wrapper\";\r\n\r\nconst useStyles = makeStyles((theme: Theme) =>\r\n createStyles({\r\n noTest: {\r\n fontSize: fonts.sizes.xl,\r\n fontWeight: 100,\r\n color: colors.powderBlue,\r\n width: \"100%\",\r\n textAlign: \"center\",\r\n },\r\n searchWide: { width: \"50%\", margin: \"4rem auto\" },\r\n searchMobile: { margin: \"4rem auto\" },\r\n title: {\r\n marginTop: \"1em\",\r\n marginBottom: \"0.5em\",\r\n fontSize: fonts.sizes.xxl,\r\n color: colors.deepSeaBlue,\r\n textAlign: \"center\",\r\n },\r\n }),\r\n);\r\n\r\nconst TestSearchV2Container: FunctionComponent<RouteComponentProps> = ({\r\n history,\r\n location,\r\n}) => {\r\n const classes = useStyles();\r\n\r\n const [searchTerms, setSearchTerms] = useState(\"\");\r\n const [searchResults, setSearchResults] = useState<TestSummaryBriefDTO[]>();\r\n const [isLoading, setLoading] = useState(false);\r\n const [showCategories, setShowCategories] = useState(true);\r\n\r\n const runSearch = async () => {\r\n history.push(\"/search\" + (searchTerms && `?keywords=${searchTerms}`));\r\n };\r\n\r\n const [width, setWidth] = React.useState(window.innerWidth);\r\n\r\n useEffect(() => {\r\n window.addEventListener(\"resize\", () => setWidth(window.innerWidth));\r\n }, []);\r\n\r\n // until new search enpoint that returns TestSummaryBriefDTO is made\r\n const mapToBriefDto = (test: Test): TestSummaryBriefDTO => {\r\n const retVal: TestSummaryBriefDTO = {\r\n name: test.name,\r\n code: test.code,\r\n cptCodes: test.cptCodes,\r\n shortDescription: test.shortDescription,\r\n categories: test.categories,\r\n price: test.price,\r\n displayTestCode: test.displayTestCode,\r\n turnAroundTimeText: test.turnAroundTimeText,\r\n hasOrderSections: test.hasOrderSections,\r\n requisitionLink: test.requisitionLink,\r\n tags: test.tags,\r\n };\r\n return retVal;\r\n };\r\n\r\n useEffect(() => {\r\n const search = async (value?: string) => {\r\n if (!value) {\r\n setSearchResults(undefined);\r\n return;\r\n }\r\n setSearchResults([]);\r\n setLoading(true);\r\n const response = await tests.searchDetails(value);\r\n const result: TestSummaryBriefDTO[] =\r\n (response.testSummaryResults &&\r\n response.testSummaryResults.map((test) => mapToBriefDto(test))) ||\r\n [];\r\n const sortedTests = sortByImportance(result);\r\n setSearchResults(sortedTests);\r\n setLoading(false);\r\n };\r\n\r\n const keywordValues = queryString.parse(location.search).keywords;\r\n const keywords = Array.isArray(keywordValues)\r\n ? keywordValues.join(\" \")\r\n : keywordValues || \"\";\r\n setSearchTerms(keywords);\r\n setShowCategories(!keywords);\r\n search(keywords);\r\n document.title = keywords\r\n ? `Test Catalog - Search Results for ${keywords} - Baylor Genetics`\r\n : \"Test Catalog - Baylor Genetics\";\r\n }, [location]);\r\n\r\n const handleChange = (event: InputBaseComponentProps) => {\r\n setSearchTerms(event.target.value);\r\n };\r\n\r\n return (\r\n <DefaultLayout\r\n hideLogin={true}\r\n centerStyle={{\r\n padding: \"0 1em 1em 1em\",\r\n fontFamily: \"'Roboto Condensed', 'Helvetica', 'Arial', sans-serif\",\r\n }}\r\n >\r\n <div className={classes.title}>Test Menu</div>\r\n <div className={width > 500 ? classes.searchWide : classes.searchMobile}>\r\n <SearchField\r\n searchText={searchTerms}\r\n placeholderText=\"Find your test by disease, keywords, or gene list\"\r\n handleChange={handleChange}\r\n handleSubmit={runSearch}\r\n />\r\n </div>\r\n\r\n <LinearProgress\r\n variant=\"query\"\r\n style={{\r\n visibility: isLoading ? \"visible\" : \"hidden\",\r\n marginBottom: \"1em\",\r\n }}\r\n />\r\n {searchResults && (\r\n <TestSearchResults tests={searchResults} isLoading={isLoading} />\r\n )}\r\n\r\n {showCategories && <Categories />}\r\n </DefaultLayout>\r\n );\r\n};\r\n\r\nexport default TestSearchV2Container;\r\n","import TestSearchV2Container from \"./TestSearchV2Container\";\r\n\r\nexport default TestSearchV2Container;\r\n"],"sourceRoot":""}