{"version":3,"sources":["views/TestCategory/TestByCategoryDTO.ts","views/Checkout/Cart/CartDataRow.tsx","views/Checkout/Cart/CartHeaderRow.tsx","views/Checkout/Cart/CartContainer.tsx","views/Checkout/TotalCheckout.tsx","views/Checkout/TestInCart.tsx","../../shared/lib/utils/TestCodeRestrictions.js","views/Checkout/CheckoutContainer.tsx","views/TestCategory/TestCategoryTitle.tsx","views/Helpers.tsx","views/TestCategory/AddToCartButton.tsx","../../../node_modules/@material-ui/core/esm/Link/Link.js","../../../node_modules/@material-ui/core/esm/LinearProgress/LinearProgress.js"],"names":["currencyFormatter","Intl","NumberFormat","style","currency","maximumFractionDigits","appTheme","themes","useStyles","makeStyles","tablerow","_tablerow","textAlign","Object","defineProperty","breakpoints","up","borderBottomWidth","borderBottomColor","colors","grey","borderBottomStyle","datarow","_datarow","alignItems","down","fontWeight","gap","buttonBox","width","buttonLabel","_buttonLabel","textTransform","fontFamily","fontSize","sizes","lg","horizontalRule","icon","padding","iconBox","height","backgroundColor","color","borderRadius","removeButton","powderBlue","white","float","CartDataRow","_ref","headers","cartItem","idx","removeItem","classes","react_default","a","createElement","Grid","container","key","concat","className","Hidden","xsDown","item","xs","src","alt","map","header","field","gridSize","formatter","Button","label","onClick","e","index","toNumber","currentTarget","name","isNaN","toString","smUp","_header","black","headerCell","xxxs","CartHeaderRow","capitalize","_container","marginBottom","md","sm","emptyCart","CartContainer","cart","Paper","elevation","undefined","length","Typography","variant","Fragment","Cart_CartHeaderRow","Cart_CartDataRow","margin","gridRoot","_gridRoot","justifyContent","value","paddingTop","button","deepSeaBlue","&:hover","darken","mediumBlue","buttonDisabled","darkGrey","totalBox","flexBasis","TotalCheckout","total","checkoutUrl","disabled","testsInCart","disabledReason","spacing","gridContainerSpacing","window","appConfig","features","isPriceDisabled","display","format","Tooltip","title","href","appInsights","trackEvent","localStorage","testCodesToBlockOrderingTogether","testCodesThatCanOrderTogether","testCodesWithSpecificAllowedTests","addToCart","test","JSON","parse","getItem","newCartTest","testCode","code","price","displayTestCode","push","setItem","stringify","dispatchEvent","Event","getDisabledReason","testCodes","conflictingTests","karyotypeTestCodeInCart","duplicateMessage","x","disableAddToCartReason","tags","retVal","find","karyotypeCmaTests","includes","testsCantBeOrderTogetherBlock","blockGroup","some","blockedTest","t","ct","indexOfBlockingTest","findIndex","indexOfDuplicateTc","testsInCartToBeOrderedTogether","filter","block","exclusiveTestsToBeOrderedTogether","listsOfOrderTogetherTests","list","y","forEach","listThatCanBeOrderTogether","togetherTestsInCart","cartTest","_conflictingTests","listsOfTestsToBeOrderedTogetherWithAddedTC","testsInCartThatCannotBeOrderedWithAddedTC","apply","toConsumableArray","Set","Boolean","shouldExcludeTestCode","CheckoutContainer","history","pop","document","_useState","useState","_useState2","slicedToArray","setCart","_useState3","_useState4","setCheckoutUrl","useEffect","tests","ctc","isNil","isEmpty","toLowerCase","buildOrderUrlQuery","ordersUrl","join","theme","useTheme","mobileWidth","useMediaQuery","disabledCheckoutReason","testsInCartThatNeedToBeOrderedTogether","testsInCartThatAreNotInTheTogetherList","exclusiveTest","components","hideLogin","centerStyle","TestCategoryTitle","category","ShoppingCartOutlined","flexWrap","Cart_CartContainer","cartData","assign","splice","position","bottom","marginLeft","Checkout_TotalCheckout","values","reduce","_ref2","_material_ui_core__WEBPACK_IMPORTED_MODULE_0__","__webpack_require__","_material_ui_core__WEBPACK_IMPORTED_MODULE_1__","react__WEBPACK_IMPORTED_MODULE_2__","react__WEBPACK_IMPORTED_MODULE_2___default","n","font","marginRight","Icon","d","__webpack_exports__","groupByMainCategories","sortSubCategories","sortByImportance","sortByDisplayOrder","mainCategory","categories","selectedCategory","mainCategories","parentCategoryId","subCat","getSubCategories","keys","groupKey","testCategories","subCategoryArray","id","displayName","categoryNames","allCategories","mainCat","allSubCategories","subCategoryNames","sort","cat1","cat2","cat1split","split","cat2split","indexOf","b","importance","displayOrder","_bg_shared_lib_theme__WEBPACK_IMPORTED_MODULE_0__","_material_ui_core__WEBPACK_IMPORTED_MODULE_2__","_material_ui_core__WEBPACK_IMPORTED_MODULE_3__","react__WEBPACK_IMPORTED_MODULE_4__","react__WEBPACK_IMPORTED_MODULE_4___default","buttonRoot","AddToCartButton","_ref$disabledReason","root","_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__","_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_1__","clsx__WEBPACK_IMPORTED_MODULE_4__","_utils_capitalize__WEBPACK_IMPORTED_MODULE_5__","_styles_withStyles__WEBPACK_IMPORTED_MODULE_6__","_utils_useIsFocusVisible__WEBPACK_IMPORTED_MODULE_7__","_utils_useForkRef__WEBPACK_IMPORTED_MODULE_8__","_Typography__WEBPACK_IMPORTED_MODULE_9__","Link","props","ref","_props$color","_props$component","component","onBlur","onFocus","TypographyClasses","_props$underline","underline","_props$variant","other","_useIsFocusVisible","isFocusVisible","onBlurVisible","focusVisibleRef","_React$useState","focusVisible","setFocusVisible","handlerRef","event","underlineNone","textDecoration","underlineHover","underlineAlways","WebkitTapHighlightColor","outline","border","cursor","userSelect","verticalAlign","-moz-appearance","-webkit-appearance","&::-moz-focus-inner","borderStyle","&$focusVisible","_styles_colorManipulator__WEBPACK_IMPORTED_MODULE_7__","_styles_useTheme__WEBPACK_IMPORTED_MODULE_8__","LinearProgress","valueBuffer","rootProps","inlineStyles","bar1","bar2","Math","round","transform","direction","_transform","determinate","indeterminate","buffer","query","role","dashed","bar","bar1Indeterminate","bar1Determinate","bar1Buffer","bar2Indeterminate","bar2Buffer","getColor","palette","type","backgroundPrimary","primary","main","backgroundSecondary","secondary","overflow","@media print","colorAdjust","colorPrimary","colorSecondary","marginTop","animation","dashedColorPrimary","backgroundImage","backgroundSize","backgroundPosition","dashedColorSecondary","left","top","transition","transformOrigin","barColorPrimary","barColorSecondary","zIndex","@keyframes indeterminate1","0%","right","60%","100%","@keyframes indeterminate2","@keyframes buffer","opacity","50%"],"mappings":"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","file":"static/js/3.ac5d499a.chunk.js","sourcesContent":["import { Category, Test, TestSummaryBriefDTO } from \"@bg/shared/lib/dal/tests\";\r\nimport { GridSize } from \"@material-ui/core\";\r\n\r\nexport const mainCategoriesHardCoded = [\r\n  \"Pregnancy\",\r\n  \"NICU\",\r\n  \"Pediatric\",\r\n  \"Oncology\",\r\n  \"Reproductive\",\r\n];\r\n\r\nexport class TestByCategoryDTO {\r\n  name: string;\r\n  testCode: string;\r\n  categories?: Category[];\r\n  mainCategoryName: string;\r\n  displayCategory?: string;\r\n  subCategories?: string[];\r\n  shortDescription?: string;\r\n  cptCodes?: string; // comma separated\r\n  price?: number;\r\n\r\n  constructor(test: Test) {\r\n    // need to add price and short description to [PlatformTestCatalog].[dbo].[Tests]\r\n    this.name = test.name;\r\n    this.testCode = test.code;\r\n    if (test.description) {\r\n      this.shortDescription = `${test.description\r\n        .split(\" \")\r\n        .slice(0, 14)\r\n        .join(\" \")}...`;\r\n    }\r\n    this.cptCodes = test.cptCodes;\r\n    this.mainCategoryName = \"\";\r\n    if (test.categories) {\r\n      this.subCategories = test.categories\r\n        .map((category) => category.name)\r\n        .filter((category) => !mainCategoriesHardCoded.includes(category));\r\n      // assuming only one main category per test\r\n      const mainCategory = test.categories.find((category) =>\r\n        mainCategoriesHardCoded.includes(category.name),\r\n      );\r\n      this.mainCategoryName = (mainCategory && mainCategory.name) || \"\";\r\n    }\r\n  }\r\n}\r\n\r\nexport const currencyFormatter = new Intl.NumberFormat(\"en-US\", {\r\n  style: \"currency\",\r\n  currency: \"USD\",\r\n  maximumFractionDigits: 0,\r\n});\r\n\r\nexport interface TestCategoryTableHeaders {\r\n  field: keyof Omit<TestSummaryBriefDTO, \"tags\">;\r\n  label?: string;\r\n  gridSize?: GridSize;\r\n  formatter?: (value: any) => string;\r\n}\r\n","import { colors, themes } from '@bg/shared/lib/theme';\r\nimport { sizes } from '@bg/shared/lib/theme/fonts';\r\nimport { Button, Grid, Hidden, makeStyles } from '@material-ui/core';\r\nimport { toNumber } from 'lodash';\r\nimport React, { FunctionComponent } from 'react';\r\n\r\nimport { CartHeader, TestInCart } from './../TestInCart';\r\n\r\nconst appTheme = themes.appTheme;\r\nconst useStyles = makeStyles({\r\n  tablerow: {\r\n    textAlign: \"center\",\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      borderBottomWidth: \"1px\",\r\n      borderBottomColor: colors.grey,\r\n      borderBottomStyle: \"solid\",\r\n    },\r\n    padding: \"1rem\",\r\n  },\r\n  datarow: {\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      alignItems: \"center\",\r\n    },\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      textAlign: \"start\",\r\n      fontWeight: \"bold\",\r\n      // this is a bit of a hack, if we put price back we'll need to reassess this\r\n      gap: \"3rem\",\r\n    },\r\n  },\r\n  buttonBox: {\r\n    width: \"100%\",\r\n  },\r\n  buttonLabel: {\r\n    textTransform: \"capitalize\",\r\n    fontFamily: \"Roboto Condensed\",\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      fontSize: sizes.lg,\r\n    },\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      fontSize: \"initial\",\r\n    },\r\n  },\r\n  horizontalRule: {\r\n    width: \"100%\",\r\n  },\r\n  icon: { padding: \"1rem\" },\r\n  iconBox: {\r\n    width: \"96px\",\r\n    height: \"99px\",\r\n    backgroundColor: \"#C0EBFE\",\r\n    color: \"#626262\",\r\n    borderRadius: \"6px\",\r\n  },\r\n  removeButton: {\r\n    color: colors.powderBlue,\r\n    backgroundColor: colors.white,\r\n    float: \"right\",\r\n  },\r\n});\r\n\r\ninterface CartDataRowProps {\r\n  headers: CartHeader[];\r\n  cartItem: TestInCart;\r\n  idx: number;\r\n  removeItem: (index: number) => void;\r\n}\r\n\r\nconst CartDataRow: FunctionComponent<CartDataRowProps> = ({\r\n  headers,\r\n  cartItem,\r\n  idx,\r\n  removeItem,\r\n}) => {\r\n  const classes = useStyles();\r\n  const handleRemoveClick = (e: React.MouseEvent<HTMLButtonElement>) => {\r\n    const index = toNumber(e.currentTarget.name);\r\n    if (!isNaN(index)) {\r\n      removeItem(index);\r\n    }\r\n  };\r\n\r\n  return (\r\n    <Grid container key={`row-${idx}`} className={classes.tablerow}>\r\n      <Grid container className={classes.datarow}>\r\n        <Hidden xsDown>\r\n          <Grid item key={`data-${idx}-icon`} xs={3}>\r\n            <div className={classes.iconBox}>\r\n              <img\r\n                src={\"/images/cartIcon-default.svg\"}\r\n                alt=\"dna_icon\"\r\n                className={classes.icon}\r\n              />\r\n            </div>\r\n          </Grid>\r\n        </Hidden>\r\n        {headers.map((header) => (\r\n          <Grid\r\n            item\r\n            key={`data-${idx}-${header.field}`}\r\n            xs={header.gridSize || true}\r\n          >\r\n            {header.formatter\r\n              ? header.formatter(cartItem[header.field])\r\n              : cartItem[header.field]}\r\n          </Grid>\r\n        ))}\r\n      </Grid>\r\n      <Grid key={`remove-button-${idx}`} className={classes.buttonBox}>\r\n        <Button\r\n          className={classes.removeButton}\r\n          classes={{ label: classes.buttonLabel }}\r\n          onClick={handleRemoveClick}\r\n          name={idx.toString()}\r\n        >\r\n          Remove\r\n        </Button>\r\n      </Grid>\r\n      <Hidden smUp>\r\n        <hr className={classes.horizontalRule} />\r\n      </Hidden>\r\n    </Grid>\r\n  );\r\n};\r\n\r\nexport default CartDataRow;\r\n","import { colors, themes } from '@bg/shared/lib/theme';\r\nimport { sizes } from '@bg/shared/lib/theme/fonts';\r\nimport { Grid, Hidden, makeStyles } from '@material-ui/core';\r\nimport { capitalize } from 'lodash';\r\nimport React, { FunctionComponent } from 'react';\r\n\r\nimport { CartHeader } from '../TestInCart';\r\n\r\nconst appTheme = themes.appTheme;\r\nconst useStyles = makeStyles({\r\n  header: {\r\n    color: colors.black,\r\n    padding: \"0.5rem 1rem\",\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      backgroundColor: colors.grey,\r\n      fontWeight: \"bold\",\r\n      textAlign: \"center\",\r\n    },\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      textAlign: \"start\",\r\n      gap: \"3rem\",\r\n    },\r\n  },\r\n  headerCell: {\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      fontSize: sizes.xxxs,\r\n    },\r\n  },\r\n});\r\n\r\ninterface CartHeaderRowProps {\r\n  headers: CartHeader[];\r\n}\r\n\r\nconst CartHeaderRow: FunctionComponent<CartHeaderRowProps> = ({ headers }) => {\r\n  const classes = useStyles();\r\n  return (\r\n    <Grid container className={classes.header}>\r\n      <Hidden xsDown>\r\n        <Grid item key=\"header-icon\" xs={3} />\r\n      </Hidden>\r\n      {headers.map((header) => (\r\n        <Grid\r\n          item\r\n          key={`header-${header.field}`}\r\n          xs={header.gridSize || true}\r\n          className={classes.headerCell}\r\n        >\r\n          {header.label || capitalize(header.field)}\r\n        </Grid>\r\n      ))}\r\n    </Grid>\r\n  );\r\n};\r\n\r\nexport default CartHeaderRow;\r\n","import { themes } from '@bg/shared/lib/theme';\r\nimport { sizes } from '@bg/shared/lib/theme/fonts';\r\nimport { Grid, makeStyles, Paper, Typography } from '@material-ui/core';\r\nimport React, { FunctionComponent } from 'react';\r\n\r\nimport { CartHeader, TestInCart } from '../TestInCart';\r\nimport CartDataRow from './CartDataRow';\r\nimport CartHeaderRow from './CartHeaderRow';\r\n\r\nconst appTheme = themes.appTheme;\r\nconst useStyles = makeStyles({\r\n  container: {\r\n    width: \"648px\",\r\n    marginBottom: \"3rem\",\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      fontSize: sizes.md,\r\n    },\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      fontSize: sizes.sm,\r\n    },\r\n  },\r\n  emptyCart: {\r\n    textAlign: \"center\",\r\n    width: \"100%\",\r\n    padding: \"2rem\",\r\n  },\r\n});\r\n\r\ninterface CartContainerProps {\r\n  headers: CartHeader[];\r\n  cart: TestInCart[];\r\n  removeItem: (index: number) => void;\r\n}\r\n\r\nconst CartContainer: FunctionComponent<CartContainerProps> = ({\r\n  headers,\r\n  cart,\r\n  removeItem,\r\n}) => {\r\n  const classes = useStyles();\r\n\r\n  return (\r\n    <Paper elevation={3} className={classes.container}>\r\n      <Grid container>\r\n        {(cart === undefined || cart.length === 0) && (\r\n          <Typography variant=\"h4\" className={classes.emptyCart}>\r\n            Your Cart is Empty\r\n          </Typography>\r\n        )}\r\n        {cart.length > 0 && (\r\n          <>\r\n            <CartHeaderRow headers={headers} />\r\n            <Grid container>\r\n              {cart.map((cartItem, idx) => (\r\n                <CartDataRow\r\n                  key={idx}\r\n                  headers={headers}\r\n                  cartItem={cartItem}\r\n                  idx={idx}\r\n                  removeItem={removeItem}\r\n                />\r\n              ))}\r\n            </Grid>\r\n          </>\r\n        )}\r\n      </Grid>\r\n    </Paper>\r\n  );\r\n};\r\n\r\nexport default CartContainer;\r\n","import { colors, themes } from \"@bg/shared/lib/theme\";\r\nimport { sizes } from \"@bg/shared/lib/theme/fonts\";\r\nimport { gridContainerSpacing } from \"@bg/shared/lib/theme/themes\";\r\nimport { Button, Grid, makeStyles, Paper, Tooltip } from \"@material-ui/core\";\r\nimport { darken } from \"@material-ui/core/styles\";\r\nimport React, { FunctionComponent } from \"react\";\r\nimport { currencyFormatter } from \"../TestCategory/TestByCategoryDTO\";\r\nimport { TestInCart, cartKey } from \"./TestInCart\";\r\nimport { appInsights } from \"../../AppInsights\";\r\n\r\nconst appTheme = themes.appTheme;\r\nconst useStyles = makeStyles({\r\n  container: {\r\n    height: \"fit-content\",\r\n    fontSize: sizes.sm,\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      width: \"210px\",\r\n      margin: \"0 3rem\",\r\n    },\r\n  },\r\n  gridRoot: {\r\n    width: \"auto\",\r\n    justifyContent: \"center\",\r\n    [appTheme.breakpoints.up(\"sm\")]: {\r\n      margin: \"0.5rem\",\r\n    },\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      padding: \"0.5rem\",\r\n    },\r\n  },\r\n  label: { fontWeight: \"bold\" },\r\n  value: {},\r\n  buttonBox: {\r\n    paddingTop: \"0.75rem\",\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      width: \"90%\",\r\n    },\r\n  },\r\n  button: {\r\n    backgroundColor: colors.deepSeaBlue,\r\n    borderRadius: \"9px\",\r\n    width: \"160px\",\r\n    height: \"27px\",\r\n    \"&:hover\": {\r\n      backgroundColor: darken(colors.mediumBlue, 0.1),\r\n    },\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      width: \"100%\",\r\n    },\r\n  },\r\n  buttonDisabled: {\r\n    backgroundColor: colors.darkGrey,\r\n  },\r\n  buttonLabel: {\r\n    textTransform: \"capitalize\",\r\n    color: colors.white,\r\n    fontFamily: \"Roboto Condensed\",\r\n    fontSize: sizes.sm,\r\n  },\r\n  totalBox: {\r\n    padding: \"1rem 3rem\",\r\n    [appTheme.breakpoints.down(\"sm\")]: {\r\n      flexBasis: \"80%\",\r\n    },\r\n  },\r\n});\r\n\r\ninterface TotalCheckoutProps {\r\n  total: number;\r\n  checkoutUrl: string;\r\n  disabled?: boolean;\r\n  testsInCart?: TestInCart[];\r\n  disabledReason: string;\r\n}\r\n\r\nconst TotalCheckout: FunctionComponent<TotalCheckoutProps> = ({\r\n  total,\r\n  checkoutUrl,\r\n  disabled,\r\n  testsInCart,\r\n  disabledReason,\r\n}) => {\r\n  const classes = useStyles();\r\n  // TODO: only clear cart when req is filled out on orders\r\n  // https://stackoverflow.com/questions/33957477/cross-domain-localstorage-with-javascript\r\n  const handleClick = () => {\r\n    appInsights.trackEvent({ name: \"moveToOrder\" }, testsInCart);\r\n    localStorage.removeItem(cartKey);\r\n  };\r\n\r\n  return (\r\n    <Paper elevation={3} className={classes.container}>\r\n      <Grid\r\n        container\r\n        spacing={gridContainerSpacing}\r\n        className={classes.gridRoot}\r\n      >\r\n        <Grid\r\n          container\r\n          item\r\n          xs={12}\r\n          justifyContent=\"space-between\"\r\n          className={classes.totalBox}\r\n          style={\r\n            window.appConfig.features.isPriceDisabled ? { display: \"none\" } : {}\r\n          }\r\n        >\r\n          <Grid className={classes.label}>Total</Grid>\r\n          <Grid className={classes.value}>\r\n            {currencyFormatter.format(total)}\r\n          </Grid>\r\n        </Grid>\r\n        <Grid item className={classes.buttonBox}>\r\n          <Tooltip title={disabledReason}>\r\n            <span>\r\n              <Button\r\n                classes={{\r\n                  label: classes.buttonLabel,\r\n                  disabled: classes.buttonDisabled,\r\n                }}\r\n                className={classes.button}\r\n                href={checkoutUrl}\r\n                disabled={disabled}\r\n                onClick={handleClick}\r\n              >\r\n                Move to Order\r\n              </Button>\r\n            </span>\r\n          </Tooltip>\r\n        </Grid>\r\n      </Grid>\r\n    </Paper>\r\n  );\r\n};\r\n\r\nexport default TotalCheckout;\r\n","import { GridSize } from \"@material-ui/core\";\r\n\r\nexport interface TestInCart {\r\n\tname: string;\r\n\ttestCode: string;\r\n\tprice: number;\r\n\tdisplayTestCode?: string;\r\n}\r\n\r\nexport interface CartHeader {\r\n\tlabel?: string;\r\n\tfield: keyof TestInCart;\r\n\tgridSize?: GridSize;\r\n\tformatter?: (value: any) => string;\r\n}\r\n\r\nexport const cartKey = \"cart\";\r\n","export var testCodesToBlockOrderingTogether = [[\"8676\", \"8675\", \"8673\", \"8672\", \"8671\", \"8670\", \"8657\", \"8656\"], [\"1300\", \"1360\", \"1600\", \"1603\", \"1500\", \"1605\", \"1722\", \"1533\", \"1729\", \"1723\", \"1530\"], [\"1810\", \"1803\", \"1800\", \"1829\", \"1823\", \"1822\", \"1605\", \"1723\", \"1729\", \"1530\", \"1533\", \"1722\", \"1500\", \"1603\" // it seems like we don't want to restrict ordering wes and wgs tests together, just wes-wes and wgs-wgs\n], [\"1897\", \"1900\"], [\"8700\", \"8540\", \"8530\", \"8500\"], [\"6373\", \"6376\"], [\"64000\", \"64005\"]];\nexport var testCodesThatCanOrderTogether = [[\"8800\", \"8639\", \"1600\"], [\"1897\"], [\"1900\"]]; // TODO: if this list is extended to include overlapping order together blocks, the exclusion logic in catalog will need to be reworked\n\nexport var testCodesWithSpecificAllowedTests = [\"8800\", \"8639\", \"1897\", \"1900\"];","import { DefaultLayout } from \"@bg/shared/lib/components\";\r\nimport { TestSummaryBriefDTO } from \"@bg/shared/lib/dal/tests\";\r\nimport { useMediaQuery, useTheme } from \"@material-ui/core\";\r\nimport { ShoppingCartOutlined } from \"@material-ui/icons\";\r\nimport React, { FunctionComponent, useEffect, useState } from \"react\";\r\nimport { RouteComponentProps } from \"react-router-dom\";\r\nimport { appInsights } from \"../../AppInsights\";\r\nimport { currencyFormatter } from \"../TestCategory/TestByCategoryDTO\";\r\nimport TestCategoryTitle from \"../TestCategory/TestCategoryTitle\";\r\nimport CartContainer from \"./Cart/CartContainer\";\r\nimport { CartHeader, cartKey, TestInCart } from \"./TestInCart\";\r\nimport TotalCheckout from \"./TotalCheckout\";\r\nimport { isEmpty, isNil } from \"lodash\";\r\nimport {\r\n  testCodesThatCanOrderTogether,\r\n  testCodesToBlockOrderingTogether,\r\n  testCodesWithSpecificAllowedTests,\r\n} from \"@bg/shared/lib/utils/TestCodeRestrictions\";\r\n\r\nexport const addToCart = (test: TestSummaryBriefDTO) => {\r\n  const cart: TestInCart[] = JSON.parse(localStorage.getItem(cartKey) || \"[]\");\r\n  const newCartTest: TestInCart = {\r\n    name: test.name,\r\n    testCode: test.code,\r\n    price: test.price || 0,\r\n    displayTestCode: test.displayTestCode,\r\n  };\r\n  appInsights.trackEvent({ name: \"addToCart\" }, newCartTest);\r\n  cart.push(newCartTest);\r\n  localStorage.setItem(cartKey, JSON.stringify(cart));\r\n  window.dispatchEvent(new Event(\"storage\"));\r\n};\r\n\r\nconst shouldExcludeTestCode = (test: TestSummaryBriefDTO) => {\r\n  // returning a non-empty string will disable the add to cart button and show the string in the tooltip\r\n  // 1. Need to disable button for same TC (two different CTCs with same TC)\r\n  // 2. Need to disable button for testCodesToBlockOrderingTogether\r\n  // 3. Need to disable button if two or more TCs from testCodesThatCanOrderTogether are added as only they can be ordered together\r\n\r\n  const { code, displayTestCode, tags } = test;\r\n  let retVal: string | undefined = undefined;\r\n  const cart: TestInCart[] = JSON.parse(localStorage.getItem(cartKey) || \"[]\");\r\n\r\n  const karyotypeTestCodeInCart = cart.find((item) =>\r\n    window.appConfig.karyotypeCmaTests.includes(item.testCode),\r\n  );\r\n\r\n  const testsCantBeOrderTogetherBlock = testCodesToBlockOrderingTogether.find(\r\n    (blockGroup) =>\r\n      blockGroup.some(\r\n        (blockedTest) =>\r\n          blockedTest === code &&\r\n          blockGroup.some((t) => cart.some((ct) => ct.testCode === t)),\r\n      ),\r\n  );\r\n\r\n  const indexOfBlockingTest = cart.findIndex(\r\n    (item) =>\r\n      testsCantBeOrderTogetherBlock &&\r\n      testsCantBeOrderTogetherBlock.some(\r\n        (blockedTest) =>\r\n          item.testCode === blockedTest || item.displayTestCode === blockedTest,\r\n      ),\r\n  );\r\n\r\n  const indexOfDuplicateTc = cart.findIndex(\r\n    (item) =>\r\n      item.testCode.includes(code) ||\r\n      (item.displayTestCode &&\r\n        displayTestCode &&\r\n        item.displayTestCode.includes(displayTestCode)) ||\r\n      (displayTestCode && item.testCode.includes(displayTestCode)),\r\n  );\r\n\r\n  const testsInCartToBeOrderedTogether = cart.filter((item) =>\r\n    testCodesThatCanOrderTogether.some((block) =>\r\n      block.includes(item.testCode),\r\n    ),\r\n  );\r\n\r\n  const exclusiveTestsToBeOrderedTogether = cart.filter((item) =>\r\n    testCodesThatCanOrderTogether.some(\r\n      (block) =>\r\n        block.includes(item.testCode) &&\r\n        testCodesWithSpecificAllowedTests.includes(item.testCode),\r\n    ),\r\n  );\r\n\r\n  const listsOfOrderTogetherTests = testCodesThatCanOrderTogether.filter(\r\n    (list) =>\r\n      list.some((x) =>\r\n        testsInCartToBeOrderedTogether.some(\r\n          (y) => y.displayTestCode === x || y.testCode === x,\r\n        ),\r\n      ),\r\n  );\r\n\r\n  let conflictingTests: string[] = [];\r\n  if (indexOfDuplicateTc > -1) {\r\n    conflictingTests.push(cart[indexOfDuplicateTc].testCode);\r\n  }\r\n\r\n  if (indexOfBlockingTest > -1) {\r\n    conflictingTests.push(cart[indexOfBlockingTest].testCode);\r\n  }\r\n  if (\r\n    testsInCartToBeOrderedTogether.length > 0 &&\r\n    listsOfOrderTogetherTests.length > 0 &&\r\n    exclusiveTestsToBeOrderedTogether.length > 0 &&\r\n    conflictingTests.length == 0\r\n    // order together tests are only blocking if one of the tests inside of the cart is an exclusive test\r\n  ) {\r\n    // TODO: This logic will need to be rewritten to be clearer about which tests are the actual blocking tests\r\n    listsOfOrderTogetherTests.forEach((listThatCanBeOrderTogether) => {\r\n      if (cart.some((x) => x.displayTestCode === code || x.testCode === code)) {\r\n        conflictingTests.push(code);\r\n      }\r\n      const togetherTestsInCart = listThatCanBeOrderTogether.filter((test) =>\r\n        testsInCartToBeOrderedTogether.some(\r\n          (cartTest) =>\r\n            cartTest.displayTestCode === test || cartTest.testCode === test,\r\n        ),\r\n      );\r\n      if (!listThatCanBeOrderTogether.some((x) => x === code)) {\r\n        togetherTestsInCart.forEach((x) => {\r\n          conflictingTests.push(x);\r\n        });\r\n      }\r\n    });\r\n  }\r\n\r\n  if (\r\n    testCodesWithSpecificAllowedTests.includes(code) ||\r\n    testCodesWithSpecificAllowedTests.includes(displayTestCode || \"\")\r\n  ) {\r\n    const listsOfTestsToBeOrderedTogetherWithAddedTC =\r\n      listsOfOrderTogetherTests.filter((block) => block.includes(code));\r\n    const testsInCartThatCannotBeOrderedWithAddedTC = cart.filter(\r\n      (item) =>\r\n        !listsOfTestsToBeOrderedTogetherWithAddedTC.some((block) =>\r\n          block.includes(item.testCode),\r\n        ),\r\n    );\r\n    conflictingTests.push(\r\n      ...testsInCartThatCannotBeOrderedWithAddedTC.map((test) => test.testCode),\r\n    );\r\n  }\r\n\r\n  conflictingTests = [...new Set(conflictingTests)];\r\n  if (conflictingTests.length > 0) {\r\n    retVal = getDisabledReason(\r\n      [code],\r\n      conflictingTests,\r\n      Boolean(karyotypeTestCodeInCart),\r\n    );\r\n  }\r\n\r\n  if (tags !== undefined && tags.includes(\"reanalysisTestCodes\")) {\r\n    retVal =\r\n      \"To place a reanalysis order, go to the report details page for the patient, and select Reanalyze Test there.\";\r\n  }\r\n\r\n  return retVal;\r\n};\r\n\r\nconst getDisabledReason = (\r\n  testCodes: string[],\r\n  conflictingTests: string[],\r\n  karyotypeTestCodeInCart: boolean,\r\n) => {\r\n  const duplicateMessage = `Test ${\r\n    testCodes.length < 2\r\n      ? `code ${testCodes\r\n          .map((x) => {\r\n            return x;\r\n          })\r\n          .toString()}`\r\n      : `codes ${testCodes\r\n          .map((x) => {\r\n            return x;\r\n          })\r\n          .toString()}`\r\n  } cannot be combined with ${\r\n    conflictingTests.length > 0\r\n      ? conflictingTests\r\n          .map((item) => {\r\n            return item;\r\n          })\r\n          .toString()\r\n      : \"current cart\"\r\n  } as they are conflicting or duplicate orders`;\r\n  if (karyotypeTestCodeInCart) {\r\n    return `${duplicateMessage}; please select whether a 5 cell karyotype or a complete karyotype analysis is required.`;\r\n  } else {\r\n    return `${duplicateMessage}.`;\r\n  }\r\n};\r\n\r\nexport const disableAddToCartReason = (test: TestSummaryBriefDTO) => {\r\n  return shouldExcludeTestCode(test) || \"\";\r\n};\r\n\r\nconst CheckoutContainer: FunctionComponent<RouteComponentProps> = ({\r\n  history,\r\n}) => {\r\n  const headers: CartHeader[] = [\r\n    {\r\n      field: \"name\",\r\n      label: \"Test Name\",\r\n    },\r\n    {\r\n      field: \"testCode\",\r\n      label: \"Test Code\",\r\n      formatter: (value: number) => value.toString(),\r\n    },\r\n    {\r\n      field: \"price\",\r\n      gridSize: 1,\r\n      formatter: (value: number) =>\r\n        value === undefined ? \"\" : currencyFormatter.format(value),\r\n    },\r\n  ];\r\n\r\n  window.appConfig.features.isPriceDisabled && headers.pop();\r\n\r\n  document.title = \"Checkout - Baylor Genetics\";\r\n  const [cart, setCart] = useState(\r\n    JSON.parse(localStorage.getItem(cartKey) || \"[]\") as TestInCart[],\r\n  );\r\n  const [checkoutUrl, setCheckoutUrl] = useState(\"\");\r\n\r\n  useEffect(() => {\r\n    localStorage.setItem(cartKey, JSON.stringify(cart));\r\n    window.dispatchEvent(new Event(\"storage\"));\r\n    const tests: string[] = [];\r\n\r\n    const buildOrderUrlQuery = (test: TestInCart): string => {\r\n      let testCode = test.testCode;\r\n      let ctc = test.testCode;\r\n      if (\r\n        !isNil(test.displayTestCode) &&\r\n        !isEmpty(test.displayTestCode) &&\r\n        test.displayTestCode.toLowerCase() !== \"none\"\r\n      ) {\r\n        testCode = test.displayTestCode || test.testCode;\r\n      }\r\n      let retVal = `test=${testCode}`;\r\n      if (testCode !== ctc) {\r\n        retVal += `&ctc=${ctc}`;\r\n      }\r\n      return retVal;\r\n    };\r\n\r\n    cart.forEach((test) => {\r\n      tests.push(buildOrderUrlQuery(test));\r\n    });\r\n    setCheckoutUrl(\r\n      `${window.appConfig.ordersUrl}/create?${tests.join(\",\")}&new-cart=true`,\r\n    );\r\n  }, [cart, setCart, setCheckoutUrl]);\r\n\r\n  const removeItem = (index: number) => {\r\n    const cartData = Object.assign([], cart);\r\n    cartData.splice(index, 1);\r\n    setCart(cartData);\r\n  };\r\n\r\n  const theme = useTheme();\r\n  const mobileWidth = useMediaQuery(theme.breakpoints.down(\"xs\"));\r\n  const getCartTotal = () => {\r\n    return Object.values(cart).reduce((total, { price }) => total + price, 0);\r\n  };\r\n\r\n  const disabledCheckoutReason = () => {\r\n    if (cart.length <= 0) {\r\n      return \"There are no tests in your cart.\";\r\n    }\r\n\r\n    const testsInCartThatNeedToBeOrderedTogether = cart.filter((item) =>\r\n      testCodesThatCanOrderTogether.some(\r\n        (block) =>\r\n          block.includes(item.testCode) &&\r\n          testCodesWithSpecificAllowedTests.includes(item.testCode),\r\n      ),\r\n    );\r\n\r\n    const testsInCartThatAreNotInTheTogetherList = cart.filter((item) =>\r\n      testCodesThatCanOrderTogether.some(\r\n        (block) =>\r\n          !block.includes(item.testCode) &&\r\n          testsInCartThatNeedToBeOrderedTogether.some((exclusiveTest) =>\r\n            block.includes(exclusiveTest.testCode),\r\n          ),\r\n      ),\r\n    );\r\n\r\n    if (\r\n      testsInCartThatNeedToBeOrderedTogether.length > 0 &&\r\n      testsInCartThatAreNotInTheTogetherList.length > 0\r\n    ) {\r\n      return getDisabledReason(\r\n        testsInCartThatAreNotInTheTogetherList.map((x) => x.testCode),\r\n        testsInCartThatNeedToBeOrderedTogether.map((x) => x.testCode),\r\n        Boolean(\r\n          cart.find((item) =>\r\n            window.appConfig.karyotypeCmaTests.includes(item.testCode),\r\n          ),\r\n        ),\r\n      );\r\n    }\r\n\r\n    return \"\";\r\n  };\r\n\r\n  const disableCheckout = () => {\r\n    return Boolean(disabledCheckoutReason());\r\n  };\r\n\r\n  return (\r\n    <>\r\n      <DefaultLayout\r\n        hideLogin={true}\r\n        centerStyle={{\r\n          backgroundColor: \"#f5fbff\",\r\n          padding: \"0 1em 1em 1em\",\r\n          fontFamily: \"'Roboto Condensed', 'Helvetica', 'Arial', sans-serif\",\r\n        }}\r\n      >\r\n        <TestCategoryTitle category=\"Order\" icon={ShoppingCartOutlined} />\r\n        <div style={{ display: \"flex\", flexWrap: \"wrap\" }}>\r\n          <CartContainer\r\n            headers={headers}\r\n            cart={cart}\r\n            removeItem={removeItem}\r\n          />\r\n        </div>\r\n        <div\r\n          style={\r\n            mobileWidth\r\n              ? {\r\n                  position: \"fixed\",\r\n                  bottom: 0,\r\n                  marginLeft: \"-1em\",\r\n                  width: \"100%\",\r\n                }\r\n              : {}\r\n          }\r\n        >\r\n          <TotalCheckout\r\n            total={getCartTotal()}\r\n            checkoutUrl={checkoutUrl}\r\n            disabled={disableCheckout()}\r\n            testsInCart={cart}\r\n            disabledReason={disabledCheckoutReason()}\r\n          />\r\n        </div>\r\n      </DefaultLayout>\r\n    </>\r\n  );\r\n};\r\n\r\nexport default CheckoutContainer;\r\n","import { makeStyles, SvgIconProps, Typography } from \"@material-ui/core\";\r\nimport React, { ComponentType, FunctionComponent } from \"react\";\r\n\r\nconst useStyles = makeStyles({\r\n  title: {\r\n    padding: \"1rem\",\r\n    fontFamily: \"inherit\",\r\n    fontWeight: \"bold\",\r\n    fontSize: \"36px\",\r\n    display: \"flex\",\r\n    alignItems: \"center\",\r\n  },\r\n  icon: {\r\n    font: \"inherit\",\r\n    marginRight: \"0.25rem\",\r\n  },\r\n});\r\n\r\ninterface TestCategoryTitleProps {\r\n  category: string;\r\n  icon?: ComponentType<SvgIconProps>;\r\n}\r\n\r\nconst TestCategoryTitle: FunctionComponent<TestCategoryTitleProps> = ({\r\n  category,\r\n  icon,\r\n}) => {\r\n  const classes = useStyles();\r\n  if (icon) {\r\n    const Icon = icon;\r\n\r\n    return (\r\n      <Typography variant=\"h4\" className={classes.title}>\r\n        {<Icon className={classes.icon}>{icon}</Icon>}\r\n        {category}\r\n      </Typography>\r\n    );\r\n  }\r\n  return (\r\n    <Typography variant=\"h4\" className={classes.title}>\r\n      {category}\r\n    </Typography>\r\n  );\r\n};\r\n\r\nexport default TestCategoryTitle;\r\n","import { Category, TestSummaryBriefDTO } from \"@bg/shared/lib/dal/tests\";\r\n\r\nexport const booleanToYesNo = (input: boolean | undefined) => {\r\n  if (input === undefined) {\r\n    return \"no\";\r\n  }\r\n\r\n  return input ? \"Yes\" : \"No\";\r\n};\r\n\r\nexport const groupByMainCategories = (\r\n  mainCategory: Category,\r\n  tests: TestSummaryBriefDTO[],\r\n  categories: Category[],\r\n  selectedCategory: Category\r\n) => {\r\n  const retVal: Record<string, TestSummaryBriefDTO[]> = {};\r\n  tests.forEach((test) => {\r\n    if (test.categories) {\r\n      const mainCategories = categories.filter(\r\n        (x) => x.parentCategoryId === undefined\r\n      );\r\n      const subCat = getSubCategories(\r\n        mainCategory,\r\n        test.categories,\r\n        mainCategories,\r\n        selectedCategory\r\n      );\r\n      if (retVal[subCat] === undefined) {\r\n        retVal[subCat] = [test];\r\n      } else {\r\n        retVal[subCat].push(test);\r\n      }\r\n    }\r\n  });\r\n  Object.keys(retVal).forEach((groupKey) => {\r\n    sortByImportance(retVal[groupKey]);\r\n  });\r\n  return retVal;\r\n};\r\n\r\nconst getSubCategories = (\r\n  mainCategory: Category,\r\n  testCategories: Category[],\r\n  mainCategories: Category[],\r\n  selectedCategory: Category\r\n): string => {\r\n  let retVal = \"No sub-category\";\r\n  let subCategoryArray: string[];\r\n  if (mainCategories.map((x) => x.name).includes(selectedCategory.name)) {\r\n    subCategoryArray = testCategories\r\n      .filter(\r\n        (x) => x.parentCategoryId && x.parentCategoryId === selectedCategory.id\r\n      )\r\n      .map((x) => x.displayName);\r\n  } else {\r\n    subCategoryArray = testCategories\r\n      .filter(\r\n        (x) => x.parentCategoryId && x.parentCategoryId === mainCategory.id\r\n      )\r\n      .map((x) => x.displayName);\r\n  }\r\n  if (subCategoryArray.length === 0) {\r\n    return retVal;\r\n  }\r\n  return subCategoryArray.join(\", \");\r\n};\r\n\r\nexport const sortSubCategories = (\r\n  categoryNames: string[],\r\n  mainCategory: string,\r\n  allCategories: Category[]\r\n): string[] => {\r\n  const mainCat = allCategories.find(\r\n    (x) =>\r\n      (x.displayName.toLowerCase() === mainCategory.toLowerCase() ||\r\n        x.name.toLowerCase() === mainCategory.toLowerCase()) &&\r\n      x.parentCategoryId === undefined\r\n  );\r\n  if (mainCat) {\r\n    const allSubCategories = allCategories.filter(\r\n      (x) => x.parentCategoryId === mainCat.id\r\n    );\r\n\r\n    if (allSubCategories) {\r\n      const subCategoryNames = allSubCategories.map((x) => x.displayName);\r\n\r\n      return categoryNames.sort((cat1, cat2) => {\r\n        const cat1split = cat1.split(\", \");\r\n        const cat2split = cat2.split(\", \");\r\n        if (\r\n          subCategoryNames.indexOf(cat1split[0]) ===\r\n          subCategoryNames.indexOf(cat2split[0])\r\n        ) {\r\n          return subCategoryNames.indexOf(cat1split[1]) >=\r\n            subCategoryNames.indexOf(cat2split[1])\r\n            ? 1\r\n            : -1;\r\n        }\r\n        return subCategoryNames.indexOf(cat1split[0]) >=\r\n          subCategoryNames.indexOf(cat2split[0])\r\n          ? 1\r\n          : -1;\r\n      });\r\n    }\r\n  }\r\n  return [\"\"];\r\n};\r\n\r\nexport const sortByImportance = (tests: TestSummaryBriefDTO[]) => {\r\n  return tests.sort((a: TestSummaryBriefDTO, b: TestSummaryBriefDTO) => {\r\n    if (a.importance === undefined && b.importance === undefined) {\r\n      return 0;\r\n    } else if (a.importance === undefined) {\r\n      return 1;\r\n    } else if (b.importance === undefined) {\r\n      return -1;\r\n    } else {\r\n      return a.importance - b.importance;\r\n    }\r\n  });\r\n};\r\n\r\nexport const sortByDisplayOrder = (categories: Category[]) => {\r\n  return categories.sort((a, b) => {\r\n    return a.displayOrder - b.displayOrder;\r\n  });\r\n};\r\n","import { colors } from \"@bg/shared/lib/theme\";\r\nimport { Button, Tooltip, makeStyles } from \"@material-ui/core\";\r\nimport React, { FunctionComponent } from \"react\";\r\n\r\nconst useStyles = makeStyles({\r\n  buttonRoot: {\r\n    color: colors.white,\r\n    backgroundColor: colors.deepSeaBlue,\r\n    padding: \"6px\",\r\n    height: \"2rem\",\r\n    width: 90,\r\n  },\r\n  buttonLabel: {\r\n    fontFamily: \"'Roboto Condensed', 'Helvetica', 'Arial', sans-serif\",\r\n    fontSize: \"0.85rem\",\r\n    textTransform: \"capitalize\",\r\n  },\r\n});\r\n\r\ninterface AddToCartButtonProps {\r\n  onClick?: () => void;\r\n  disabled?: boolean;\r\n  disabledReason?: string;\r\n}\r\n\r\nconst AddToCartButton: FunctionComponent<AddToCartButtonProps> = ({\r\n  onClick,\r\n  disabled,\r\n  disabledReason = \"\",\r\n}) => {\r\n  const classes = useStyles();\r\n  return (\r\n    <Tooltip title={disabledReason}>\r\n      <span>\r\n        <Button\r\n          color=\"primary\"\r\n          variant=\"contained\"\r\n          classes={{ root: classes.buttonRoot, label: classes.buttonLabel }}\r\n          onClick={onClick}\r\n          disabled={disabled}\r\n        >\r\n          Add to Order\r\n        </Button>\r\n      </span>\r\n    </Tooltip>\r\n  );\r\n};\r\n\r\nexport default AddToCartButton;\r\n","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 capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nimport { elementTypeAcceptingRef } from '@material-ui/utils';\nimport useIsFocusVisible from '../utils/useIsFocusVisible';\nimport useForkRef from '../utils/useForkRef';\nimport Typography from '../Typography';\nexport var styles = {\n  /* Styles applied to the root element. */\n  root: {},\n\n  /* Styles applied to the root element if `underline=\"none\"`. */\n  underlineNone: {\n    textDecoration: 'none'\n  },\n\n  /* Styles applied to the root element if `underline=\"hover\"`. */\n  underlineHover: {\n    textDecoration: 'none',\n    '&:hover': {\n      textDecoration: 'underline'\n    }\n  },\n\n  /* Styles applied to the root element if `underline=\"always\"`. */\n  underlineAlways: {\n    textDecoration: 'underline'\n  },\n  // Same reset as ButtonBase.root\n\n  /* Styles applied to the root element if `component=\"button\"`. */\n  button: {\n    position: 'relative',\n    WebkitTapHighlightColor: 'transparent',\n    backgroundColor: 'transparent',\n    // Reset default value\n    // We disable the focus ring for mouse, touch and keyboard users.\n    outline: 0,\n    border: 0,\n    margin: 0,\n    // Remove the margin in Safari\n    borderRadius: 0,\n    padding: 0,\n    // Remove the padding in Firefox\n    cursor: 'pointer',\n    userSelect: 'none',\n    verticalAlign: 'middle',\n    '-moz-appearance': 'none',\n    // Reset\n    '-webkit-appearance': 'none',\n    // Reset\n    '&::-moz-focus-inner': {\n      borderStyle: 'none' // Remove Firefox dotted outline.\n\n    },\n    '&$focusVisible': {\n      outline: 'auto'\n    }\n  },\n\n  /* Pseudo-class applied to the root element if the link is keyboard focused. */\n  focusVisible: {}\n};\nvar Link =\n/*#__PURE__*/\nReact.forwardRef(function Link(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$color = props.color,\n      color = _props$color === void 0 ? 'primary' : _props$color,\n      _props$component = props.component,\n      component = _props$component === void 0 ? 'a' : _props$component,\n      onBlur = props.onBlur,\n      onFocus = props.onFocus,\n      TypographyClasses = props.TypographyClasses,\n      _props$underline = props.underline,\n      underline = _props$underline === void 0 ? 'hover' : _props$underline,\n      _props$variant = props.variant,\n      variant = _props$variant === void 0 ? 'inherit' : _props$variant,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"component\", \"onBlur\", \"onFocus\", \"TypographyClasses\", \"underline\", \"variant\"]);\n\n  var _useIsFocusVisible = useIsFocusVisible(),\n      isFocusVisible = _useIsFocusVisible.isFocusVisible,\n      onBlurVisible = _useIsFocusVisible.onBlurVisible,\n      focusVisibleRef = _useIsFocusVisible.ref;\n\n  var _React$useState = React.useState(false),\n      focusVisible = _React$useState[0],\n      setFocusVisible = _React$useState[1];\n\n  var handlerRef = useForkRef(ref, focusVisibleRef);\n\n  var handleBlur = function handleBlur(event) {\n    if (focusVisible) {\n      onBlurVisible();\n      setFocusVisible(false);\n    }\n\n    if (onBlur) {\n      onBlur(event);\n    }\n  };\n\n  var handleFocus = function handleFocus(event) {\n    if (isFocusVisible(event)) {\n      setFocusVisible(true);\n    }\n\n    if (onFocus) {\n      onFocus(event);\n    }\n  };\n\n  return (\n    /*#__PURE__*/\n    React.createElement(Typography, _extends({\n      className: clsx(classes.root, classes[\"underline\".concat(capitalize(underline))], className, focusVisible && classes.focusVisible, component === 'button' && classes.button),\n      classes: TypographyClasses,\n      color: color,\n      component: component,\n      onBlur: handleBlur,\n      onFocus: handleFocus,\n      ref: handlerRef,\n      variant: variant\n    }, other))\n  );\n});\nprocess.env.NODE_ENV !== \"production\" ? Link.propTypes = {\n  /**\n   * The content of the link.\n   */\n  children: PropTypes.node.isRequired,\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 color of the link.\n   */\n  color: PropTypes.oneOf(['initial', 'inherit', 'primary', 'secondary', 'textPrimary', 'textSecondary', 'error']),\n\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: elementTypeAcceptingRef,\n\n  /**\n   * @ignore\n   */\n  onBlur: PropTypes.func,\n\n  /**\n   * @ignore\n   */\n  onFocus: PropTypes.func,\n\n  /**\n   * `classes` prop applied to the [`Typography`](/api/typography/) element.\n   */\n  TypographyClasses: PropTypes.object,\n\n  /**\n   * Controls when the link should have an underline.\n   */\n  underline: PropTypes.oneOf(['none', 'hover', 'always']),\n\n  /**\n   * Applies the theme typography styles.\n   */\n  variant: PropTypes.string\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiLink'\n})(Link);","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 capitalize from '../utils/capitalize';\nimport withStyles from '../styles/withStyles';\nimport { darken, lighten } from '../styles/colorManipulator';\nimport useTheme from '../styles/useTheme';\nvar TRANSITION_DURATION = 4; // seconds\n\nexport var styles = function styles(theme) {\n  var getColor = function getColor(color) {\n    return theme.palette.type === 'light' ? lighten(color, 0.62) : darken(color, 0.5);\n  };\n\n  var backgroundPrimary = getColor(theme.palette.primary.main);\n  var backgroundSecondary = getColor(theme.palette.secondary.main);\n  return {\n    /* Styles applied to the root element. */\n    root: {\n      position: 'relative',\n      overflow: 'hidden',\n      height: 4,\n      '@media print': {\n        colorAdjust: 'exact'\n      }\n    },\n\n    /* Styles applied to the root and bar2 element if `color=\"primary\"`; bar2 if `variant=\"buffer\"`. */\n    colorPrimary: {\n      backgroundColor: backgroundPrimary\n    },\n\n    /* Styles applied to the root and bar2 elements if `color=\"secondary\"`; bar2 if `variant=\"buffer\"`. */\n    colorSecondary: {\n      backgroundColor: backgroundSecondary\n    },\n\n    /* Styles applied to the root element if `variant=\"determinate\"`. */\n    determinate: {},\n\n    /* Styles applied to the root element if `variant=\"indeterminate\"`. */\n    indeterminate: {},\n\n    /* Styles applied to the root element if `variant=\"buffer\"`. */\n    buffer: {\n      backgroundColor: 'transparent'\n    },\n\n    /* Styles applied to the root element if `variant=\"query\"`. */\n    query: {\n      transform: 'rotate(180deg)'\n    },\n\n    /* Styles applied to the additional bar element if `variant=\"buffer\"`. */\n    dashed: {\n      position: 'absolute',\n      marginTop: 0,\n      height: '100%',\n      width: '100%',\n      animation: '$buffer 3s infinite linear'\n    },\n\n    /* Styles applied to the additional bar element if `variant=\"buffer\"` and `color=\"primary\"`. */\n    dashedColorPrimary: {\n      backgroundImage: \"radial-gradient(\".concat(backgroundPrimary, \" 0%, \").concat(backgroundPrimary, \" 16%, transparent 42%)\"),\n      backgroundSize: '10px 10px',\n      backgroundPosition: '0 -23px'\n    },\n\n    /* Styles applied to the additional bar element if `variant=\"buffer\"` and `color=\"secondary\"`. */\n    dashedColorSecondary: {\n      backgroundImage: \"radial-gradient(\".concat(backgroundSecondary, \" 0%, \").concat(backgroundSecondary, \" 16%, transparent 42%)\"),\n      backgroundSize: '10px 10px',\n      backgroundPosition: '0 -23px'\n    },\n\n    /* Styles applied to the layered bar1 and bar2 elements. */\n    bar: {\n      width: '100%',\n      position: 'absolute',\n      left: 0,\n      bottom: 0,\n      top: 0,\n      transition: 'transform 0.2s linear',\n      transformOrigin: 'left'\n    },\n\n    /* Styles applied to the bar elements if `color=\"primary\"`; bar2 if `variant` not \"buffer\". */\n    barColorPrimary: {\n      backgroundColor: theme.palette.primary.main\n    },\n\n    /* Styles applied to the bar elements if `color=\"secondary\"`; bar2 if `variant` not \"buffer\". */\n    barColorSecondary: {\n      backgroundColor: theme.palette.secondary.main\n    },\n\n    /* Styles applied to the bar1 element if `variant=\"indeterminate or query\"`. */\n    bar1Indeterminate: {\n      width: 'auto',\n      animation: '$indeterminate1 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite'\n    },\n\n    /* Styles applied to the bar1 element if `variant=\"determinate\"`. */\n    bar1Determinate: {\n      transition: \"transform .\".concat(TRANSITION_DURATION, \"s linear\")\n    },\n\n    /* Styles applied to the bar1 element if `variant=\"buffer\"`. */\n    bar1Buffer: {\n      zIndex: 1,\n      transition: \"transform .\".concat(TRANSITION_DURATION, \"s linear\")\n    },\n\n    /* Styles applied to the bar2 element if `variant=\"indeterminate or query\"`. */\n    bar2Indeterminate: {\n      width: 'auto',\n      animation: '$indeterminate2 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite'\n    },\n\n    /* Styles applied to the bar2 element if `variant=\"buffer\"`. */\n    bar2Buffer: {\n      transition: \"transform .\".concat(TRANSITION_DURATION, \"s linear\")\n    },\n    // Legends:\n    // || represents the viewport\n    // -  represents a light background\n    // x  represents a dark background\n    '@keyframes indeterminate1': {\n      //  |-----|---x-||-----||-----|\n      '0%': {\n        left: '-35%',\n        right: '100%'\n      },\n      //  |-----|-----||-----||xxxx-|\n      '60%': {\n        left: '100%',\n        right: '-90%'\n      },\n      '100%': {\n        left: '100%',\n        right: '-90%'\n      }\n    },\n    '@keyframes indeterminate2': {\n      //  |xxxxx|xxxxx||-----||-----|\n      '0%': {\n        left: '-200%',\n        right: '100%'\n      },\n      //  |-----|-----||-----||-x----|\n      '60%': {\n        left: '107%',\n        right: '-8%'\n      },\n      '100%': {\n        left: '107%',\n        right: '-8%'\n      }\n    },\n    '@keyframes buffer': {\n      '0%': {\n        opacity: 1,\n        backgroundPosition: '0 -23px'\n      },\n      '50%': {\n        opacity: 0,\n        backgroundPosition: '0 -23px'\n      },\n      '100%': {\n        opacity: 1,\n        backgroundPosition: '-200px -23px'\n      }\n    }\n  };\n};\n/**\n * ## ARIA\n *\n * If the progress bar is describing the loading progress of a particular region of a page,\n * you should use `aria-describedby` to point to the progress bar, and set the `aria-busy`\n * attribute to `true` on that region until it has finished loading.\n */\n\nvar LinearProgress =\n/*#__PURE__*/\nReact.forwardRef(function LinearProgress(props, ref) {\n  var classes = props.classes,\n      className = props.className,\n      _props$color = props.color,\n      color = _props$color === void 0 ? 'primary' : _props$color,\n      value = props.value,\n      valueBuffer = props.valueBuffer,\n      _props$variant = props.variant,\n      variant = _props$variant === void 0 ? 'indeterminate' : _props$variant,\n      other = _objectWithoutProperties(props, [\"classes\", \"className\", \"color\", \"value\", \"valueBuffer\", \"variant\"]);\n\n  var theme = useTheme();\n  var rootProps = {};\n  var inlineStyles = {\n    bar1: {},\n    bar2: {}\n  };\n\n  if (variant === 'determinate' || variant === 'buffer') {\n    if (value !== undefined) {\n      rootProps['aria-valuenow'] = Math.round(value);\n      rootProps['aria-valuemin'] = 0;\n      rootProps['aria-valuemax'] = 100;\n      var transform = value - 100;\n\n      if (theme.direction === 'rtl') {\n        transform = -transform;\n      }\n\n      inlineStyles.bar1.transform = \"translateX(\".concat(transform, \"%)\");\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('Material-UI: You need to provide a value prop ' + 'when using the determinate or buffer variant of LinearProgress .');\n    }\n  }\n\n  if (variant === 'buffer') {\n    if (valueBuffer !== undefined) {\n      var _transform = (valueBuffer || 0) - 100;\n\n      if (theme.direction === 'rtl') {\n        _transform = -_transform;\n      }\n\n      inlineStyles.bar2.transform = \"translateX(\".concat(_transform, \"%)\");\n    } else if (process.env.NODE_ENV !== 'production') {\n      console.error('Material-UI: You need to provide a valueBuffer prop ' + 'when using the buffer variant of LinearProgress.');\n    }\n  }\n\n  return (\n    /*#__PURE__*/\n    React.createElement(\"div\", _extends({\n      className: clsx(classes.root, classes[\"color\".concat(capitalize(color))], className, {\n        'determinate': classes.determinate,\n        'indeterminate': classes.indeterminate,\n        'buffer': classes.buffer,\n        'query': classes.query\n      }[variant]),\n      role: \"progressbar\"\n    }, rootProps, {\n      ref: ref\n    }, other), variant === 'buffer' ?\n    /*#__PURE__*/\n    React.createElement(\"div\", {\n      className: clsx(classes.dashed, classes[\"dashedColor\".concat(capitalize(color))])\n    }) : null,\n    /*#__PURE__*/\n    React.createElement(\"div\", {\n      className: clsx(classes.bar, classes[\"barColor\".concat(capitalize(color))], (variant === 'indeterminate' || variant === 'query') && classes.bar1Indeterminate, {\n        'determinate': classes.bar1Determinate,\n        'buffer': classes.bar1Buffer\n      }[variant]),\n      style: inlineStyles.bar1\n    }), variant === 'determinate' ? null :\n    /*#__PURE__*/\n    React.createElement(\"div\", {\n      className: clsx(classes.bar, (variant === 'indeterminate' || variant === 'query') && classes.bar2Indeterminate, variant === 'buffer' ? [classes[\"color\".concat(capitalize(color))], classes.bar2Buffer] : classes[\"barColor\".concat(capitalize(color))]),\n      style: inlineStyles.bar2\n    }))\n  );\n});\nprocess.env.NODE_ENV !== \"production\" ? LinearProgress.propTypes = {\n  // ----------------------------- Warning --------------------------------\n  // | These PropTypes are generated from the TypeScript type definitions |\n  // |     To update them edit the d.ts file and run \"yarn proptypes\"     |\n  // ----------------------------------------------------------------------\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,\n\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n\n  /**\n   * The color of the component. It supports those theme colors that make sense for this component.\n   */\n  color: PropTypes.oneOf(['primary', 'secondary']),\n\n  /**\n   * The value of the progress indicator for the determinate and buffer variants.\n   * Value between 0 and 100.\n   */\n  value: PropTypes.number,\n\n  /**\n   * The value for the buffer variant.\n   * Value between 0 and 100.\n   */\n  valueBuffer: PropTypes.number,\n\n  /**\n   * The variant to use.\n   * Use indeterminate or query when there is no progress value.\n   */\n  variant: PropTypes.oneOf(['buffer', 'determinate', 'indeterminate', 'query'])\n} : void 0;\nexport default withStyles(styles, {\n  name: 'MuiLinearProgress'\n})(LinearProgress);"],"sourceRoot":""}