diff x/static/js/8301.877076ce.chunk.js.map @ 125:49f3d3878413 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 5ea1f9c1eef1de76232e69aa6d34cda77d90d566
author fubar
date Sat, 05 Oct 2024 23:58:05 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/x/static/js/8301.877076ce.chunk.js.map	Sat Oct 05 23:58:05 2024 +0000
@@ -0,0 +1,1 @@
+{"version":3,"file":"static/js/8301.877076ce.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportCustomTrack.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/util.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/components/ImportForm/index.tsx","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonUnchecked.js","../../../node_modules/@mui/material/internal/svg-icons/RadioButtonChecked.js","../../../node_modules/@mui/material/Radio/RadioButtonIcon.js","../../../node_modules/@mui/material/Radio/Radio.js","../../../node_modules/@mui/material/Radio/radioClasses.js","../../../node_modules/@mui/material/RadioGroup/RadioGroup.js","../../../node_modules/@mui/material/RadioGroup/RadioGroupContext.js","../../../node_modules/@mui/material/RadioGroup/radioGroupClasses.js","../../../node_modules/@mui/material/RadioGroup/useRadioGroup.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import React, { useState, useEffect } from 'react'\nimport { SnapshotIn } from 'mobx-state-tree'\nimport {\n  FormControlLabel,\n  Grid,\n  Paper,\n  Radio,\n  RadioGroup,\n  Typography,\n} from '@mui/material'\nimport { ErrorMessage, FileSelector } from '@jbrowse/core/ui'\nimport { FileLocation } from '@jbrowse/core/util/types'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { basename, extName, getName, stripGz } from './util'\n\nfunction getAdapter({\n  radioOption,\n  assembly1,\n  assembly2,\n  fileLocation,\n  indexFileLocation,\n  bed1Location,\n  bed2Location,\n}: {\n  radioOption: string\n  assembly1: string\n  assembly2: string\n  fileLocation?: FileLocation\n  indexFileLocation?: FileLocation\n  bed1Location?: FileLocation\n  bed2Location?: FileLocation\n}) {\n  if (radioOption === '.paf') {\n    return {\n      type: 'PAFAdapter',\n      pafLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.out') {\n    return {\n      type: 'MashMapAdapter',\n      outLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.delta') {\n    return {\n      type: 'DeltaAdapter',\n      deltaLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.chain') {\n    return {\n      type: 'ChainAdapter',\n      chainLocation: fileLocation,\n      queryAssembly: assembly1,\n      targetAssembly: assembly2,\n    }\n  } else if (radioOption === '.anchors') {\n    return {\n      type: 'MCScanAnchorsAdapter',\n      mcscanAnchorsLocation: fileLocation,\n      bed1Location,\n      bed2Location,\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else if (radioOption === '.anchors.simple') {\n    return {\n      type: 'MCScanSimpleAnchorsAdapter',\n      mcscanSimpleAnchorsLocation: fileLocation,\n      bed1Location,\n      bed2Location,\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else if (radioOption === '.pif.gz') {\n    return {\n      type: 'PairwiseIndexedPAFAdapter',\n      pifGzLocation: fileLocation,\n      index: { location: indexFileLocation },\n      assemblyNames: [assembly1, assembly2],\n    }\n  } else {\n    throw new Error(\n      `Unknown to detect type ${radioOption} from filename (select radio button to clarify)`,\n    )\n  }\n}\n\ntype Conf = SnapshotIn<AnyConfigurationModel>\n\nconst ImportCustomTrack = observer(function ({\n  assembly1,\n  assembly2,\n  setSessionTrackData,\n}: {\n  sessionTrackData: Conf\n  assembly1: string\n  assembly2: string\n  setSessionTrackData: (arg: Conf) => void\n}) {\n  const [bed2Location, setBed2Location] = useState<FileLocation>()\n  const [bed1Location, setBed1Location] = useState<FileLocation>()\n  const [fileLocation, setFileLocation] = useState<FileLocation>()\n  const [indexFileLocation, setIndexFileLocation] = useState<FileLocation>()\n  const [value, setValue] = useState('')\n  const [error, setError] = useState<unknown>()\n  const fileName = getName(fileLocation)\n\n  const radioOption = value || (fileName ? extName(stripGz(fileName)) : '')\n\n  useEffect(() => {\n    try {\n      if (fileLocation) {\n        const fn = fileName ? basename(fileName) : 'MyTrack'\n        const trackId = `${fn}-${Date.now()}`\n        setError(undefined)\n\n        setSessionTrackData({\n          trackId,\n          name: fn,\n          assemblyNames: [assembly2, assembly1],\n          type: 'SyntenyTrack',\n          adapter: getAdapter({\n            radioOption,\n            assembly1,\n            assembly2,\n            fileLocation,\n            indexFileLocation,\n            bed1Location,\n            bed2Location,\n          }),\n        })\n      }\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }, [\n    fileName,\n    assembly1,\n    assembly2,\n    bed1Location,\n    bed2Location,\n    fileLocation,\n    indexFileLocation,\n    radioOption,\n    setSessionTrackData,\n  ])\n  return (\n    <Paper style={{ padding: 12 }}>\n      {error ? <ErrorMessage error={error} /> : null}\n      <Typography style={{ textAlign: 'center' }}>\n        Add a .paf, .out (MashMap), .delta (Mummer), .chain, .anchors or\n        .anchors.simple (MCScan) file to view. These file types can also be\n        gzipped. The first assembly should be the query sequence (e.g. left\n        column of the PAF) and the second assembly should be the target sequence\n        (e.g. right column of the PAF)\n      </Typography>\n      <RadioGroup\n        value={radioOption}\n        onChange={event => {\n          setValue(event.target.value)\n        }}\n      >\n        <Grid container justifyContent=\"center\">\n          <Grid item>\n            <FormControlLabel value=\".paf\" control={<Radio />} label=\".paf\" />\n          </Grid>\n          <Grid item>\n            <FormControlLabel value=\".out\" control={<Radio />} label=\".out\" />\n          </Grid>\n\n          <Grid item>\n            <FormControlLabel\n              value=\".delta\"\n              control={<Radio />}\n              label=\".delta\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".chain\"\n              control={<Radio />}\n              label=\".chain\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".anchors\"\n              control={<Radio />}\n              label=\".anchors\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".anchors.simple\"\n              control={<Radio />}\n              label=\".anchors.simple\"\n            />\n          </Grid>\n          <Grid item>\n            <FormControlLabel\n              value=\".pif.gz\"\n              control={<Radio />}\n              label=\".pif.gz\"\n            />\n          </Grid>\n        </Grid>\n      </RadioGroup>\n      <Grid container justifyContent=\"center\">\n        <Grid item>\n          {value === '.anchors' || value === '.anchors.simple' ? (\n            <div>\n              <div style={{ margin: 20 }}>\n                Open the {value} and .bed files for both genome assemblies from\n                the MCScan (Python version) pipeline{' '}\n                <a href=\"https://github.com/tanghaibao/jcvi/wiki/MCscan-(Python-version)\">\n                  (more info)\n                </a>\n              </div>\n              <div style={{ display: 'flex' }}>\n                <div>\n                  <FileSelector\n                    name=\".anchors file\"\n                    description=\"\"\n                    location={fileLocation}\n                    setLocation={loc => {\n                      setFileLocation(loc)\n                    }}\n                  />\n                </div>\n                <div>\n                  <FileSelector\n                    name=\"genome 1 .bed (left column of anchors file)\"\n                    description=\"\"\n                    location={bed1Location}\n                    setLocation={loc => {\n                      setBed1Location(loc)\n                    }}\n                  />\n                </div>\n                <div>\n                  <FileSelector\n                    name=\"genome 2 .bed (right column of anchors file)\"\n                    description=\"\"\n                    location={bed2Location}\n                    setLocation={loc => {\n                      setBed2Location(loc)\n                    }}\n                  />\n                </div>\n              </div>\n            </div>\n          ) : value === '.pif.gz' ? (\n            <div style={{ display: 'flex' }}>\n              <div>\n                <FileSelector\n                  name={`${value} location`}\n                  description=\"\"\n                  location={fileLocation}\n                  setLocation={loc => {\n                    setFileLocation(loc)\n                  }}\n                />\n              </div>\n              <div>\n                <FileSelector\n                  name={`${value} index location`}\n                  description=\"\"\n                  location={indexFileLocation}\n                  setLocation={loc => {\n                    setIndexFileLocation(loc)\n                  }}\n                />\n              </div>\n            </div>\n          ) : (\n            <FileSelector\n              name={value ? `${value} location` : ''}\n              description=\"\"\n              location={fileLocation}\n              setLocation={loc => {\n                setFileLocation(loc)\n              }}\n            />\n          )}\n        </Grid>\n      </Grid>\n    </Paper>\n  )\n})\n\nexport default ImportCustomTrack\n","export function getName(\n  sessionTrackData?: { uri: string } | { localPath: string } | { name: string },\n) {\n  return sessionTrackData\n    ? // @ts-expect-error\n      sessionTrackData.uri ||\n        // @ts-expect-error\n        sessionTrackData.localPath ||\n        // @ts-expect-error\n        sessionTrackData.name\n    : undefined\n}\n\nexport function stripGz(fileName: string) {\n  return fileName.endsWith('.gz') ? fileName.slice(0, -3) : fileName\n}\n\nexport function basename(str: string) {\n  return str.split('#')[0]!.split('?')[0]!.split('/').pop()\n}\n\nexport function extName(str: string) {\n  const r = str.split('.').pop()\n  return r ? `.${r}` : ''\n}\n","import React, { useState, useEffect } from 'react'\nimport { Select, MenuItem, Paper, Typography } from '@mui/material'\nimport { getSession } from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { ErrorMessage } from '@jbrowse/core/ui'\nimport {\n  AnyConfigurationModel,\n  readConfObject,\n} from '@jbrowse/core/configuration'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { LinearSyntenyViewModel } from '../../model'\n\nfunction f(track: AnyConfigurationModel, assembly1: string, assembly2: string) {\n  const assemblyNames = readConfObject(track, 'assemblyNames')\n  return (\n    assemblyNames.includes(assembly1) &&\n    assemblyNames.includes(assembly2) &&\n    track.type.includes('Synteny')\n  )\n}\n\nconst Selector = observer(\n  ({\n    model,\n    assembly1,\n    assembly2,\n    setShowTrackId,\n  }: {\n    model: LinearSyntenyViewModel\n    assembly1: string\n    assembly2: string\n    setShowTrackId: (arg: string) => void\n  }) => {\n    const session = getSession(model)\n    const { tracks = [], sessionTracks = [] } = session\n    const allTracks = [...tracks, ...sessionTracks] as AnyConfigurationModel[]\n    const filteredTracks = allTracks.filter(t => f(t, assembly2, assembly1))\n    const resetTrack = filteredTracks[0]?.trackId || ''\n    const [value, setValue] = useState(resetTrack)\n    useEffect(() => {\n      // if assembly1/assembly2 changes, then we will want to use this effect to\n      // change the state of the useState because it otherwise gets locked to a\n      // stale value\n      setValue(resetTrack)\n    }, [resetTrack])\n\n    useEffect(() => {\n      // sets track data in a useEffect because the initial load is needed as well\n      // as onChange's to the select box\n      setShowTrackId(value)\n    }, [value, setShowTrackId])\n    return (\n      <Paper style={{ padding: 12 }}>\n        <Typography paragraph>\n          Select a track from the select box below, the track will be shown when\n          you hit \"Launch\".\n        </Typography>\n\n        {filteredTracks.length ? (\n          <Select\n            value={value}\n            onChange={event => {\n              setValue(event.target.value)\n            }}\n          >\n            {filteredTracks.map(track => (\n              <MenuItem key={track.trackId} value={track.trackId}>\n                {getTrackName(track, session)}\n              </MenuItem>\n            ))}\n          </Select>\n        ) : (\n          <ErrorMessage\n            error={`No synteny tracks found for ${assembly1},${assembly2}`}\n          />\n        )}\n      </Paper>\n    )\n  },\n)\n\nexport default Selector\n","import React, { useState, useEffect } from 'react'\nimport {\n  Button,\n  Container,\n  FormControl,\n  FormLabel,\n  FormControlLabel,\n  Grid,\n  Paper,\n  Radio,\n  RadioGroup,\n} from '@mui/material'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { AnyConfigurationModel } from '@jbrowse/core/configuration'\nimport { SnapshotIn } from 'mobx-state-tree'\nimport { getSession, isSessionWithAddTracks } from '@jbrowse/core/util'\nimport { ErrorMessage, AssemblySelector } from '@jbrowse/core/ui'\n\n// locals\nimport { LinearSyntenyViewModel } from '../../model'\nimport ImportCustomTrack from './ImportCustomTrack'\nimport ImportSyntenyTrackSelector from './ImportSyntenyTrackSelector'\n\nconst useStyles = makeStyles()(theme => ({\n  importFormContainer: {\n    padding: theme.spacing(4),\n    margin: '0 auto',\n  },\n  assemblySelector: {\n    width: '75%',\n    margin: '0 auto',\n  },\n}))\n\ntype Conf = SnapshotIn<AnyConfigurationModel>\n\nfunction TrackSelector({\n  setSessionTrackData,\n  setShowTrackId,\n  sessionTrackData,\n  assembly1,\n  assembly2,\n  model,\n}: {\n  sessionTrackData: Conf\n  setSessionTrackData: (arg: Conf) => void\n  setShowTrackId: (arg?: string) => void\n  model: LinearSyntenyViewModel\n  assembly1: string\n  assembly2: string\n}) {\n  const [choice, setChoice] = useState('tracklist')\n\n  useEffect(() => {\n    if (choice === 'none') {\n      setSessionTrackData(undefined)\n      setShowTrackId(undefined)\n    }\n  }, [choice, setSessionTrackData, setShowTrackId])\n  return (\n    <>\n      <FormControl>\n        <FormLabel id=\"group-label\">\n          (Optional) Select or add a synteny track\n        </FormLabel>\n        <RadioGroup\n          row\n          value={choice}\n          onChange={event => {\n            setChoice(event.target.value)\n          }}\n          aria-labelledby=\"group-label\"\n        >\n          <FormControlLabel value=\"none\" control={<Radio />} label=\"None\" />\n          <FormControlLabel\n            value=\"tracklist\"\n            control={<Radio />}\n            label=\"Existing track\"\n          />\n          <FormControlLabel\n            value=\"custom\"\n            control={<Radio />}\n            label=\"New track\"\n          />\n        </RadioGroup>\n      </FormControl>\n      {choice === 'custom' ? (\n        <ImportCustomTrack\n          setSessionTrackData={setSessionTrackData}\n          sessionTrackData={sessionTrackData}\n          assembly2={assembly2}\n          assembly1={assembly1}\n        />\n      ) : null}\n      {choice === 'tracklist' ? (\n        <ImportSyntenyTrackSelector\n          model={model}\n          assembly1={assembly1}\n          assembly2={assembly2}\n          setShowTrackId={setShowTrackId}\n        />\n      ) : null}\n    </>\n  )\n}\n\nconst LinearSyntenyViewImportForm = observer(function ({\n  model,\n}: {\n  model: LinearSyntenyViewModel\n}) {\n  const { classes } = useStyles()\n  const session = getSession(model)\n  const { assemblyNames } = session\n  const [assembly2, setAssembly2] = useState(assemblyNames[0] || '')\n  const [assembly1, setAssembly1] = useState(assemblyNames[0] || '')\n  const [error, setError] = useState<unknown>()\n  const [sessionTrackData, setSessionTrackData] = useState<Conf>()\n  const [showTrackId, setShowTrackId] = useState<string>()\n\n  async function onOpenClick() {\n    try {\n      if (!isSessionWithAddTracks(session)) {\n        return\n      }\n      setError(undefined)\n\n      const { assemblyManager } = session\n      const assemblies = [assembly1, assembly2]\n      model.setViews(\n        await Promise.all(\n          assemblies.map(async sel => {\n            const asm = await assemblyManager.waitForAssembly(sel)\n            if (!asm) {\n              throw new Error(`Assembly ${sel} failed to load`)\n            }\n            return {\n              type: 'LinearGenomeView' as const,\n              bpPerPx: 1,\n              offsetPx: 0,\n              hideHeader: true,\n              displayedRegions: asm.regions,\n            }\n          }),\n        ),\n      )\n      model.views.forEach(view => {\n        view.setWidth(model.width)\n      })\n      model.views.forEach(view => {\n        view.showAllRegions()\n      })\n      if (sessionTrackData) {\n        session.addTrackConf(sessionTrackData)\n        model.toggleTrack(sessionTrackData.trackId)\n      } else if (showTrackId) {\n        model.showTrack(showTrackId)\n      }\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }\n\n  // this is a combination of any displayed error message we have\n  const displayError = error\n  return (\n    <Container className={classes.importFormContainer}>\n      {displayError ? <ErrorMessage error={displayError} /> : null}\n      <Grid\n        container\n        spacing={1}\n        justifyContent=\"center\"\n        alignItems=\"center\"\n        className={classes.assemblySelector}\n      >\n        <Grid item>\n          <Paper style={{ padding: 12 }}>\n            <p style={{ textAlign: 'center' }}>\n              Select assemblies for linear synteny view\n            </p>\n            <Grid\n              container\n              spacing={1}\n              justifyContent=\"center\"\n              alignItems=\"center\"\n            >\n              <Grid item>\n                <AssemblySelector\n                  selected={assembly1}\n                  onChange={val => {\n                    setAssembly1(val)\n                  }}\n                  session={session}\n                />\n              </Grid>\n              <Grid item>\n                <AssemblySelector\n                  selected={assembly2}\n                  onChange={val => {\n                    setAssembly2(val)\n                  }}\n                  session={session}\n                />\n              </Grid>\n              <Grid item>\n                <FormControl>\n                  <Button\n                    onClick={onOpenClick}\n                    variant=\"contained\"\n                    color=\"primary\"\n                  >\n                    Launch\n                  </Button>\n                </FormControl>\n              </Grid>\n            </Grid>\n          </Paper>\n          <TrackSelector\n            setShowTrackId={setShowTrackId}\n            assembly2={assembly2}\n            assembly1={assembly1}\n            setSessionTrackData={setSessionTrackData}\n            sessionTrackData={sessionTrackData}\n            model={model}\n          />\n        </Grid>\n      </Grid>\n    </Container>\n  )\n})\n\nexport default LinearSyntenyViewImportForm\n","import * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nimport composeClasses from '@mui/utils/composeClasses';\nimport capitalize from '@mui/utils/capitalize';\nimport useThemePropsSystem from \"../useThemeProps/index.js\";\nimport systemStyled from \"../styled/index.js\";\nimport createTheme from \"../createTheme/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst defaultTheme = createTheme();\nconst defaultCreateStyledComponent = systemStyled('div', {\n  name: 'MuiContainer',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n  }\n});\nconst useThemePropsDefault = inProps => useThemePropsSystem({\n  props: inProps,\n  name: 'MuiContainer',\n  defaultTheme\n});\nconst useUtilityClasses = (ownerState, componentName) => {\n  const getContainerUtilityClass = slot => {\n    return generateUtilityClass(componentName, slot);\n  };\n  const {\n    classes,\n    fixed,\n    disableGutters,\n    maxWidth\n  } = ownerState;\n  const slots = {\n    root: ['root', maxWidth && `maxWidth${capitalize(String(maxWidth))}`, fixed && 'fixed', disableGutters && 'disableGutters']\n  };\n  return composeClasses(slots, getContainerUtilityClass, classes);\n};\nexport default function createContainer(options = {}) {\n  const {\n    // This will allow adding custom styled fn (for example for custom sx style function)\n    createStyledComponent = defaultCreateStyledComponent,\n    useThemeProps = useThemePropsDefault,\n    componentName = 'MuiContainer'\n  } = options;\n  const ContainerRoot = createStyledComponent(({\n    theme,\n    ownerState\n  }) => ({\n    width: '100%',\n    marginLeft: 'auto',\n    boxSizing: 'border-box',\n    marginRight: 'auto',\n    ...(!ownerState.disableGutters && {\n      paddingLeft: theme.spacing(2),\n      paddingRight: theme.spacing(2),\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('sm')]: {\n        paddingLeft: theme.spacing(3),\n        paddingRight: theme.spacing(3)\n      }\n    })\n  }), ({\n    theme,\n    ownerState\n  }) => ownerState.fixed && Object.keys(theme.breakpoints.values).reduce((acc, breakpointValueKey) => {\n    const breakpoint = breakpointValueKey;\n    const value = theme.breakpoints.values[breakpoint];\n    if (value !== 0) {\n      // @ts-ignore\n      acc[theme.breakpoints.up(breakpoint)] = {\n        maxWidth: `${value}${theme.breakpoints.unit}`\n      };\n    }\n    return acc;\n  }, {}), ({\n    theme,\n    ownerState\n  }) => ({\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ...(ownerState.maxWidth === 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up('xs')]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: Math.max(theme.breakpoints.values.xs, 444)\n      }\n    }),\n    ...(ownerState.maxWidth &&\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    ownerState.maxWidth !== 'xs' && {\n      // @ts-ignore module augmentation fails if custom breakpoints are used\n      [theme.breakpoints.up(ownerState.maxWidth)]: {\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        maxWidth: `${theme.breakpoints.values[ownerState.maxWidth]}${theme.breakpoints.unit}`\n      }\n    })\n  }));\n  const Container = /*#__PURE__*/React.forwardRef(function Container(inProps, ref) {\n    const props = useThemeProps(inProps);\n    const {\n      className,\n      component = 'div',\n      disableGutters = false,\n      fixed = false,\n      maxWidth = 'lg',\n      classes: classesProp,\n      ...other\n    } = props;\n    const ownerState = {\n      ...props,\n      component,\n      disableGutters,\n      fixed,\n      maxWidth\n    };\n\n    // @ts-ignore module augmentation fails if custom breakpoints are used\n    const classes = useUtilityClasses(ownerState, componentName);\n    return (\n      /*#__PURE__*/\n      // @ts-ignore theme is injected by the styled util\n      _jsx(ContainerRoot, {\n        as: component\n        // @ts-ignore module augmentation fails if custom breakpoints are used\n        ,\n        ownerState: ownerState,\n        className: clsx(classes.root, className),\n        ref: ref,\n        ...other\n      })\n    );\n  });\n  process.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n    children: PropTypes.node,\n    classes: PropTypes.object,\n    className: PropTypes.string,\n    component: PropTypes.elementType,\n    disableGutters: PropTypes.bool,\n    fixed: PropTypes.bool,\n    maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n    sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n  } : void 0;\n  return Container;\n}","'use client';\n\nimport PropTypes from 'prop-types';\nimport { createContainer } from '@mui/system';\nimport capitalize from \"../utils/capitalize.js\";\nimport styled from \"../styles/styled.js\";\nimport useThemeProps from \"../styles/useThemeProps.js\";\nconst Container = createContainer({\n  createStyledComponent: styled('div', {\n    name: 'MuiContainer',\n    slot: 'Root',\n    overridesResolver: (props, styles) => {\n      const {\n        ownerState\n      } = props;\n      return [styles.root, styles[`maxWidth${capitalize(String(ownerState.maxWidth))}`], ownerState.fixed && styles.fixed, ownerState.disableGutters && styles.disableGutters];\n    }\n  }),\n  useThemeProps: inProps => useThemeProps({\n    props: inProps,\n    name: 'MuiContainer'\n  })\n});\nprocess.env.NODE_ENV !== \"production\" ? Container.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * @ignore\n   */\n  children: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The component used for the root node.\n   * Either a string to use a HTML element or a component.\n   */\n  component: PropTypes.elementType,\n  /**\n   * If `true`, the left and right padding is removed.\n   * @default false\n   */\n  disableGutters: PropTypes.bool,\n  /**\n   * Set the max-width to match the min-width of the current breakpoint.\n   * This is useful if you'd prefer to design for a fixed set of sizes\n   * instead of trying to accommodate a fully fluid viewport.\n   * It's fluid by default.\n   * @default false\n   */\n  fixed: PropTypes.bool,\n  /**\n   * Determine the max-width of the container.\n   * The container width grows with the size of the screen.\n   * Set to `false` to disable `maxWidth`.\n   * @default 'lg'\n   */\n  maxWidth: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object])\n} : void 0;\nexport default Container;","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n}), 'RadioButtonUnchecked');","'use client';\n\nimport * as React from 'react';\nimport createSvgIcon from \"../../utils/createSvgIcon.js\";\n\n/**\n * @ignore - internal component.\n */\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon(/*#__PURE__*/_jsx(\"path\", {\n  d: \"M8.465 8.465C9.37 7.56 10.62 7 12 7C14.76 7 17 9.24 17 12C17 13.38 16.44 14.63 15.535 15.535C14.63 16.44 13.38 17 12 17C9.24 17 7 14.76 7 12C7 10.62 7.56 9.37 8.465 8.465Z\"\n}), 'RadioButtonChecked');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport RadioButtonUncheckedIcon from \"../internal/svg-icons/RadioButtonUnchecked.js\";\nimport RadioButtonCheckedIcon from \"../internal/svg-icons/RadioButtonChecked.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nconst RadioButtonIconRoot = styled('span', {\n  shouldForwardProp: rootShouldForwardProp\n})({\n  position: 'relative',\n  display: 'flex'\n});\nconst RadioButtonIconBackground = styled(RadioButtonUncheckedIcon)({\n  // Scale applied to prevent dot misalignment in Safari\n  transform: 'scale(1)'\n});\nconst RadioButtonIconDot = styled(RadioButtonCheckedIcon)(memoTheme(({\n  theme\n}) => ({\n  left: 0,\n  position: 'absolute',\n  transform: 'scale(0)',\n  transition: theme.transitions.create('transform', {\n    easing: theme.transitions.easing.easeIn,\n    duration: theme.transitions.duration.shortest\n  }),\n  variants: [{\n    props: {\n      checked: true\n    },\n    style: {\n      transform: 'scale(1)',\n      transition: theme.transitions.create('transform', {\n        easing: theme.transitions.easing.easeOut,\n        duration: theme.transitions.duration.shortest\n      })\n    }\n  }]\n})));\n\n/**\n * @ignore - internal component.\n */\nfunction RadioButtonIcon(props) {\n  const {\n    checked = false,\n    classes = {},\n    fontSize\n  } = props;\n  const ownerState = {\n    ...props,\n    checked\n  };\n  return /*#__PURE__*/_jsxs(RadioButtonIconRoot, {\n    className: classes.root,\n    ownerState: ownerState,\n    children: [/*#__PURE__*/_jsx(RadioButtonIconBackground, {\n      fontSize: fontSize,\n      className: classes.background,\n      ownerState: ownerState\n    }), /*#__PURE__*/_jsx(RadioButtonIconDot, {\n      fontSize: fontSize,\n      className: classes.dot,\n      ownerState: ownerState\n    })]\n  });\n}\nprocess.env.NODE_ENV !== \"production\" ? RadioButtonIcon.propTypes /* remove-proptypes */ = {\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   */\n  fontSize: PropTypes.oneOf(['small', 'medium'])\n} : void 0;\nexport default RadioButtonIcon;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport refType from '@mui/utils/refType';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { alpha } from '@mui/system/colorManipulator';\nimport SwitchBase from \"../internal/SwitchBase.js\";\nimport RadioButtonIcon from \"./RadioButtonIcon.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createChainedFunction from \"../utils/createChainedFunction.js\";\nimport useFormControl from \"../FormControl/useFormControl.js\";\nimport useRadioGroup from \"../RadioGroup/useRadioGroup.js\";\nimport radioClasses, { getRadioUtilityClass } from \"./radioClasses.js\";\nimport rootShouldForwardProp from \"../styles/rootShouldForwardProp.js\";\nimport { styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = ownerState => {\n  const {\n    classes,\n    color,\n    size\n  } = ownerState;\n  const slots = {\n    root: ['root', `color${capitalize(color)}`, size !== 'medium' && `size${capitalize(size)}`]\n  };\n  return {\n    ...classes,\n    ...composeClasses(slots, getRadioUtilityClass, classes)\n  };\n};\nconst RadioRoot = styled(SwitchBase, {\n  shouldForwardProp: prop => rootShouldForwardProp(prop) || prop === 'classes',\n  name: 'MuiRadio',\n  slot: 'Root',\n  overridesResolver: (props, styles) => {\n    const {\n      ownerState\n    } = props;\n    return [styles.root, ownerState.size !== 'medium' && styles[`size${capitalize(ownerState.size)}`], styles[`color${capitalize(ownerState.color)}`]];\n  }\n})(memoTheme(({\n  theme\n}) => ({\n  color: (theme.vars || theme).palette.text.secondary,\n  [`&.${radioClasses.disabled}`]: {\n    color: (theme.vars || theme).palette.action.disabled\n  },\n  variants: [{\n    props: {\n      color: 'default',\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette.action.activeChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette.action.active, theme.palette.action.hoverOpacity)\n      }\n    }\n  }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false,\n      disableRipple: false\n    },\n    style: {\n      '&:hover': {\n        backgroundColor: theme.vars ? `rgba(${theme.vars.palette[color].mainChannel} / ${theme.vars.palette.action.hoverOpacity})` : alpha(theme.palette[color].main, theme.palette.action.hoverOpacity)\n      }\n    }\n  })), ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n    props: {\n      color,\n      disabled: false\n    },\n    style: {\n      [`&.${radioClasses.checked}`]: {\n        color: (theme.vars || theme).palette[color].main\n      }\n    }\n  })), {\n    // Should be last to override other colors\n    props: {\n      disableRipple: false\n    },\n    style: {\n      // Reset on touch devices, it doesn't add specificity\n      '&:hover': {\n        '@media (hover: none)': {\n          backgroundColor: 'transparent'\n        }\n      }\n    }\n  }]\n})));\nfunction areEqualValues(a, b) {\n  if (typeof b === 'object' && b !== null) {\n    return a === b;\n  }\n\n  // The value could be a number, the DOM will stringify it anyway.\n  return String(a) === String(b);\n}\nconst defaultCheckedIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {\n  checked: true\n});\nconst defaultIcon = /*#__PURE__*/_jsx(RadioButtonIcon, {});\nconst Radio = /*#__PURE__*/React.forwardRef(function Radio(inProps, ref) {\n  const props = useDefaultProps({\n    props: inProps,\n    name: 'MuiRadio'\n  });\n  const {\n    checked: checkedProp,\n    checkedIcon = defaultCheckedIcon,\n    color = 'primary',\n    icon = defaultIcon,\n    name: nameProp,\n    onChange: onChangeProp,\n    size = 'medium',\n    className,\n    disabled: disabledProp,\n    disableRipple = false,\n    ...other\n  } = props;\n  const muiFormControl = useFormControl();\n  let disabled = disabledProp;\n  if (muiFormControl) {\n    if (typeof disabled === 'undefined') {\n      disabled = muiFormControl.disabled;\n    }\n  }\n  disabled ??= false;\n  const ownerState = {\n    ...props,\n    disabled,\n    disableRipple,\n    color,\n    size\n  };\n  const classes = useUtilityClasses(ownerState);\n  const radioGroup = useRadioGroup();\n  let checked = checkedProp;\n  const onChange = createChainedFunction(onChangeProp, radioGroup && radioGroup.onChange);\n  let name = nameProp;\n  if (radioGroup) {\n    if (typeof checked === 'undefined') {\n      checked = areEqualValues(radioGroup.value, props.value);\n    }\n    if (typeof name === 'undefined') {\n      name = radioGroup.name;\n    }\n  }\n  return /*#__PURE__*/_jsx(RadioRoot, {\n    type: \"radio\",\n    icon: /*#__PURE__*/React.cloneElement(icon, {\n      fontSize: defaultIcon.props.fontSize ?? size\n    }),\n    checkedIcon: /*#__PURE__*/React.cloneElement(checkedIcon, {\n      fontSize: defaultCheckedIcon.props.fontSize ?? size\n    }),\n    disabled: disabled,\n    ownerState: ownerState,\n    classes: classes,\n    name: name,\n    checked: checked,\n    onChange: onChange,\n    ref: ref,\n    className: clsx(classes.root, className),\n    ...other\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? Radio.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * If `true`, the component is checked.\n   */\n  checked: PropTypes.bool,\n  /**\n   * The icon to display when the component is checked.\n   * @default <RadioButtonIcon checked />\n   */\n  checkedIcon: PropTypes.node,\n  /**\n   * Override or extend the styles applied to the component.\n   */\n  classes: PropTypes.object,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The color of the component.\n   * It supports both default and custom theme colors, which can be added as shown in the\n   * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).\n   * @default 'primary'\n   */\n  color: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['default', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n  /**\n   * If `true`, the component is disabled.\n   */\n  disabled: PropTypes.bool,\n  /**\n   * If `true`, the ripple effect is disabled.\n   * @default false\n   */\n  disableRipple: PropTypes.bool,\n  /**\n   * The icon to display when the component is unchecked.\n   * @default <RadioButtonIcon />\n   */\n  icon: PropTypes.node,\n  /**\n   * The id of the `input` element.\n   */\n  id: PropTypes.string,\n  /**\n   * [Attributes](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Attributes) applied to the `input` element.\n   */\n  inputProps: PropTypes.object,\n  /**\n   * Pass a ref to the `input` element.\n   */\n  inputRef: refType,\n  /**\n   * Name attribute of the `input` element.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when the state is changed.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   * You can pull out the new checked state by accessing `event.target.checked` (boolean).\n   */\n  onChange: PropTypes.func,\n  /**\n   * If `true`, the `input` element is required.\n   * @default false\n   */\n  required: PropTypes.bool,\n  /**\n   * The size of the component.\n   * `small` is equivalent to the dense radio styling.\n   * @default 'medium'\n   */\n  size: PropTypes /* @typescript-to-proptypes-ignore */.oneOfType([PropTypes.oneOf(['medium', 'small']), PropTypes.string]),\n  /**\n   * The system prop that allows defining system overrides as well as additional CSS styles.\n   */\n  sx: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object, PropTypes.bool])), PropTypes.func, PropTypes.object]),\n  /**\n   * The value of the component. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default Radio;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioUtilityClass(slot) {\n  return generateUtilityClass('MuiRadio', slot);\n}\nconst radioClasses = generateUtilityClasses('MuiRadio', ['root', 'checked', 'disabled', 'colorPrimary', 'colorSecondary', 'sizeSmall']);\nexport default radioClasses;","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport composeClasses from '@mui/utils/composeClasses';\nimport FormGroup from \"../FormGroup/index.js\";\nimport { getRadioGroupUtilityClass } from \"./radioGroupClasses.js\";\nimport useForkRef from \"../utils/useForkRef.js\";\nimport useControlled from \"../utils/useControlled.js\";\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nimport useId from \"../utils/useId.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst useUtilityClasses = props => {\n  const {\n    classes,\n    row,\n    error\n  } = props;\n  const slots = {\n    root: ['root', row && 'row', error && 'error']\n  };\n  return composeClasses(slots, getRadioGroupUtilityClass, classes);\n};\nconst RadioGroup = /*#__PURE__*/React.forwardRef(function RadioGroup(props, ref) {\n  const {\n    // private\n    // eslint-disable-next-line react/prop-types\n    actions,\n    children,\n    className,\n    defaultValue,\n    name: nameProp,\n    onChange,\n    value: valueProp,\n    ...other\n  } = props;\n  const rootRef = React.useRef(null);\n  const classes = useUtilityClasses(props);\n  const [value, setValueState] = useControlled({\n    controlled: valueProp,\n    default: defaultValue,\n    name: 'RadioGroup'\n  });\n  React.useImperativeHandle(actions, () => ({\n    focus: () => {\n      let input = rootRef.current.querySelector('input:not(:disabled):checked');\n      if (!input) {\n        input = rootRef.current.querySelector('input:not(:disabled)');\n      }\n      if (input) {\n        input.focus();\n      }\n    }\n  }), []);\n  const handleRef = useForkRef(ref, rootRef);\n  const name = useId(nameProp);\n  const contextValue = React.useMemo(() => ({\n    name,\n    onChange(event) {\n      setValueState(event.target.value);\n      if (onChange) {\n        onChange(event, event.target.value);\n      }\n    },\n    value\n  }), [name, onChange, setValueState, value]);\n  return /*#__PURE__*/_jsx(RadioGroupContext.Provider, {\n    value: contextValue,\n    children: /*#__PURE__*/_jsx(FormGroup, {\n      role: \"radiogroup\",\n      ref: handleRef,\n      className: clsx(classes.root, className),\n      ...other,\n      children: children\n    })\n  });\n});\nprocess.env.NODE_ENV !== \"production\" ? RadioGroup.propTypes /* remove-proptypes */ = {\n  // ┌────────────────────────────── Warning ──────────────────────────────┐\n  // │ These PropTypes are generated from the TypeScript type definitions. │\n  // │    To update them, edit the d.ts file and run `pnpm proptypes`.     │\n  // └─────────────────────────────────────────────────────────────────────┘\n  /**\n   * The content of the component.\n   */\n  children: PropTypes.node,\n  /**\n   * @ignore\n   */\n  className: PropTypes.string,\n  /**\n   * The default value. Use when the component is not controlled.\n   */\n  defaultValue: PropTypes.any,\n  /**\n   * The name used to reference the value of the control.\n   * If you don't provide this prop, it falls back to a randomly generated name.\n   */\n  name: PropTypes.string,\n  /**\n   * Callback fired when a radio button is selected.\n   *\n   * @param {React.ChangeEvent<HTMLInputElement>} event The event source of the callback.\n   * @param {string} value The value of the selected radio button.\n   * You can pull out the new value by accessing `event.target.value` (string).\n   */\n  onChange: PropTypes.func,\n  /**\n   * Value of the selected radio button. The DOM API casts this to a string.\n   */\n  value: PropTypes.any\n} : void 0;\nexport default RadioGroup;","import * as React from 'react';\n/**\n * @ignore - internal component.\n */\nconst RadioGroupContext = /*#__PURE__*/React.createContext(undefined);\nif (process.env.NODE_ENV !== 'production') {\n  RadioGroupContext.displayName = 'RadioGroupContext';\n}\nexport default RadioGroupContext;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getRadioGroupUtilityClass(slot) {\n  return generateUtilityClass('MuiRadioGroup', slot);\n}\nconst radioGroupClasses = generateUtilityClasses('MuiRadioGroup', ['root', 'row', 'error']);\nexport default radioGroupClasses;","'use client';\n\nimport * as React from 'react';\nimport RadioGroupContext from \"./RadioGroupContext.js\";\nexport default function useRadioGroup() {\n  return React.useContext(RadioGroupContext);\n}","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["getAdapter","radioOption","assembly1","assembly2","fileLocation","indexFileLocation","bed1Location","bed2Location","type","pafLocation","queryAssembly","targetAssembly","outLocation","deltaLocation","chainLocation","mcscanAnchorsLocation","assemblyNames","mcscanSimpleAnchorsLocation","pifGzLocation","index","location","Error","observer","setSessionTrackData","setBed2Location","useState","setBed1Location","setFileLocation","setIndexFileLocation","value","setValue","error","setError","fileName","sessionTrackData","uri","localPath","name","undefined","str","r","split","pop","extName","endsWith","slice","stripGz","useEffect","fn","trackId","Date","now","adapter","e","console","React","Paper","style","padding","ErrorMessage","Typography","textAlign","RadioGroup","onChange","event","target","Grid","container","justifyContent","item","FormControlLabel","control","Radio","label","margin","href","display","FileSelector","description","setLocation","loc","model","setShowTrackId","session","getSession","tracks","sessionTracks","filteredTracks","filter","t","track","readConfObject","includes","f","resetTrack","paragraph","length","Select","map","MenuItem","key","getTrackName","useStyles","makeStyles","theme","importFormContainer","spacing","assemblySelector","width","TrackSelector","choice","setChoice","FormControl","FormLabel","id","row","ImportCustomTrack","ImportSyntenyTrackSelector","classes","setAssembly2","setAssembly1","showTrackId","displayError","Container","className","alignItems","AssemblySelector","selected","val","Button","onClick","async","isSessionWithAddTracks","assemblyManager","assemblies","setViews","Promise","all","asm","waitForAssembly","sel","bpPerPx","offsetPx","hideHeader","displayedRegions","regions","views","forEach","view","setWidth","showAllRegions","addTrackConf","toggleTrack","showTrack","variant","color","defaultTheme","createTheme","defaultCreateStyledComponent","slot","overridesResolver","props","styles","ownerState","root","capitalize","String","maxWidth","fixed","disableGutters","useThemePropsDefault","inProps","useThemeProps","options","createStyledComponent","componentName","ContainerRoot","marginLeft","boxSizing","marginRight","paddingLeft","paddingRight","breakpoints","up","Object","keys","values","reduce","acc","breakpointValueKey","breakpoint","unit","Math","max","xs","ref","component","classesProp","other","slots","composeClasses","generateUtilityClass","useUtilityClasses","as","clsx","createContainer","createSvgIcon","d","RadioButtonIconRoot","styled","shouldForwardProp","rootShouldForwardProp","position","RadioButtonIconBackground","RadioButtonUnchecked","transform","RadioButtonIconDot","RadioButtonChecked","memoTheme","left","transition","transitions","create","easing","easeIn","duration","shortest","variants","checked","easeOut","fontSize","children","background","dot","RadioRoot","SwitchBase","prop","size","vars","palette","text","secondary","radioClasses","disabled","action","disableRipple","backgroundColor","activeChannel","hoverOpacity","active","entries","createSimplePaletteValueFilter","mainChannel","main","defaultCheckedIcon","defaultIcon","checkedProp","checkedIcon","icon","nameProp","onChangeProp","disabledProp","muiFormControl","useFormControl","radioGroup","useRadioGroup","createChainedFunction","a","b","getRadioUtilityClass","actions","defaultValue","valueProp","rootRef","setValueState","controlled","default","focus","input","current","querySelector","handleRef","contextValue","Provider","role","getRadioGroupUtilityClass"],"sourceRoot":""}
\ No newline at end of file