Mercurial > repos > fubar > jbrowse2
view x/static/js/7761.0cf7cf29.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 source
{"version":3,"file":"static/js/7761.0cf7cf29.chunk.js","mappings":"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","sources":["../../../plugins/linear-genome-view/src/LinearGenomeView/components/GetSequenceDialog.tsx","../../../packages/core/util/formatFastaStrings.ts","../../../node_modules/@mui/icons-material/esm/GetApp.js","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js","../../../node_modules/@mui/system/Container/createContainer.js","../../../node_modules/@mui/material/Container/Container.js","../../../node_modules/@mui/system/styled/styled.js"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport {\n Button,\n Checkbox,\n CircularProgress,\n Container,\n DialogActions,\n DialogContent,\n FormGroup,\n FormControlLabel,\n TextField,\n Typography,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { saveAs } from 'file-saver'\nimport { getConf } from '@jbrowse/core/configuration'\nimport copy from 'copy-to-clipboard'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n getSession,\n reverse,\n complement,\n Feature,\n Region,\n} from '@jbrowse/core/util'\nimport { formatSeqFasta } from '@jbrowse/core/util/formatFastaStrings'\n\n// icons\nimport { ContentCopy as ContentCopyIcon } from '@jbrowse/core/ui/Icons'\nimport GetAppIcon from '@mui/icons-material/GetApp'\n\n// locals\nimport { LinearGenomeViewModel } from '..'\n\nconst useStyles = makeStyles()({\n dialogContent: {\n width: '80em',\n },\n textAreaFont: {\n fontFamily: 'Courier New',\n },\n})\n\ntype LGV = LinearGenomeViewModel\n\n/**\n * Fetches and returns a list features for a given list of regions\n */\nasync function fetchSequence(\n model: LGV,\n regions: Region[],\n signal?: AbortSignal,\n) {\n const session = getSession(model)\n const { leftOffset, rightOffset } = model\n\n if (!leftOffset || !rightOffset) {\n throw new Error('no offsets on model to use for range')\n }\n\n if (leftOffset.assemblyName !== rightOffset.assemblyName) {\n throw new Error('not able to fetch sequences from multiple assemblies')\n }\n const { rpcManager, assemblyManager } = session\n const assemblyName = leftOffset.assemblyName || rightOffset.assemblyName || ''\n const assembly = assemblyManager.get(assemblyName)\n if (!assembly) {\n throw new Error(`assembly ${assemblyName} not found`)\n }\n const adapterConfig = getConf(assembly, ['sequence', 'adapter'])\n\n const sessionId = 'getSequence'\n return rpcManager.call(sessionId, 'CoreGetFeatures', {\n adapterConfig,\n regions,\n sessionId,\n signal,\n }) as Promise<Feature[]>\n}\n\nconst GetSequenceDialog = observer(function ({\n model,\n handleClose,\n}: {\n model: LGV\n handleClose: () => void\n}) {\n const { classes } = useStyles()\n const [error, setError] = useState<unknown>()\n const [sequenceChunks, setSequenceChunks] = useState<Feature[]>()\n const [rev, setReverse] = useState(false)\n const [copied, setCopied] = useState(false)\n const [comp, setComplement] = useState(false)\n const { leftOffset, rightOffset } = model\n const loading = Boolean(sequenceChunks === undefined)\n\n useEffect(() => {\n const controller = new AbortController()\n\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n ;(async () => {\n try {\n // random note: the current selected region can't be a computed because\n // it uses action on base1dview even though it's on the ephemeral\n // base1dview\n const selection = model.getSelectedRegions(leftOffset, rightOffset)\n if (selection.length === 0) {\n throw new Error('Selected region is out of bounds')\n }\n const chunks = await fetchSequence(model, selection, controller.signal)\n setSequenceChunks(chunks)\n } catch (e) {\n console.error(e)\n setError(e)\n }\n })()\n\n return () => {\n controller.abort()\n }\n }, [model, leftOffset, rightOffset])\n\n const sequence = sequenceChunks\n ? formatSeqFasta(\n sequenceChunks.map(chunk => {\n let chunkSeq = chunk.get('seq')\n const chunkRefName = chunk.get('refName')\n const chunkStart = chunk.get('start') + 1\n const chunkEnd = chunk.get('end')\n const loc = `${chunkRefName}:${chunkStart}-${chunkEnd}`\n if (chunkSeq?.length !== chunkEnd - chunkStart + 1) {\n throw new Error(\n `${loc} returned ${chunkSeq.length.toLocaleString()} bases, but should have returned ${(\n chunkEnd - chunkStart\n ).toLocaleString()}`,\n )\n }\n\n if (rev) {\n chunkSeq = reverse(chunkSeq)\n }\n if (comp) {\n chunkSeq = complement(chunkSeq)\n }\n return {\n header: loc + (rev ? '-rev' : '') + (comp ? '-comp' : ''),\n seq: chunkSeq,\n }\n }),\n )\n : ''\n\n const sequenceTooLarge = sequence ? sequence.length > 1_000_000 : false\n\n return (\n <Dialog\n maxWidth=\"xl\"\n open\n onClose={() => {\n handleClose()\n model.setOffsets()\n }}\n title=\"Reference sequence\"\n >\n <DialogContent>\n {error ? (\n <Typography color=\"error\">{`${error}`}</Typography>\n ) : loading ? (\n <Container>\n Retrieving reference sequence...\n <CircularProgress\n style={{ marginLeft: 10 }}\n size={20}\n disableShrink\n />\n </Container>\n ) : null}\n <TextField\n data-testid=\"rubberband-sequence\"\n variant=\"outlined\"\n multiline\n minRows={5}\n maxRows={10}\n disabled={sequenceTooLarge}\n className={classes.dialogContent}\n fullWidth\n value={\n sequenceTooLarge\n ? 'Reference sequence too large to display, use the download FASTA button'\n : sequence\n }\n InputProps={{\n readOnly: true,\n classes: {\n input: classes.textAreaFont,\n },\n }}\n />\n <FormGroup>\n <FormControlLabel\n control={\n <Checkbox\n value={rev}\n onChange={event => {\n setReverse(event.target.checked)\n }}\n />\n }\n label=\"Reverse sequence\"\n />\n <FormControlLabel\n control={\n <Checkbox\n value={comp}\n onChange={event => {\n setComplement(event.target.checked)\n }}\n />\n }\n label=\"Complement sequence\"\n />\n </FormGroup>\n <Typography style={{ margin: 10 }}>\n Note: Check both boxes for the "reverse complement"\n </Typography>\n </DialogContent>\n <DialogActions>\n <Button\n onClick={() => {\n copy(sequence)\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 500)\n }}\n disabled={loading || !!error || sequenceTooLarge}\n color=\"primary\"\n startIcon={<ContentCopyIcon />}\n >\n {copied ? 'Copied' : 'Copy to clipboard'}\n </Button>\n <Button\n onClick={() => {\n saveAs(\n new Blob([sequence || ''], {\n type: 'text/x-fasta;charset=utf-8',\n }),\n 'jbrowse_ref_seq.fa',\n )\n }}\n disabled={loading || !!error}\n color=\"primary\"\n startIcon={<GetAppIcon />}\n >\n Download FASTA\n </Button>\n <Button onClick={handleClose} variant=\"contained\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n})\n\nexport default GetSequenceDialog\n","export interface SeqChunk {\n header: string\n seq: string\n}\n/**\n * Returns sequence with new line every 80 characters\n * ref https://stackoverflow.com/a/51506718/2129219\n *\n * @param seqString - string\n * @returns formatted sequence string\n */\nexport function formatFastaLines(seqString: string) {\n return seqString.replaceAll(/(.{1,80})/g, '$1\\n').trimEnd()\n}\n/**\n * Formats the sequences chunks into Fasta format\n *\n * @param chunks - array of seq chunks of the form `{ header: string, seq: string }`\n * @returns formatted sequence in fasta format\n */\nexport function formatSeqFasta(chunks: SeqChunk[]) {\n return chunks\n .map(chunk => `>${chunk.header}\\n${formatFastaLines(chunk.seq)}`)\n .join('\\n')\n}\n","\"use client\";\n\nimport createSvgIcon from './utils/createSvgIcon';\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nexport default createSvgIcon( /*#__PURE__*/_jsx(\"path\", {\n d: \"M19 9h-4V3H9v6H5l7 7zM5 18v2h14v-2z\"\n}), 'GetApp');","'use client';\n\nimport * as React from 'react';\nimport PropTypes from 'prop-types';\nimport clsx from 'clsx';\nimport chainPropTypes from '@mui/utils/chainPropTypes';\nimport composeClasses from '@mui/utils/composeClasses';\nimport { keyframes, css, styled } from \"../zero-styled/index.js\";\nimport memoTheme from \"../utils/memoTheme.js\";\nimport { useDefaultProps } from \"../DefaultPropsProvider/index.js\";\nimport capitalize from \"../utils/capitalize.js\";\nimport createSimplePaletteValueFilter from \"../utils/createSimplePaletteValueFilter.js\";\nimport { getCircularProgressUtilityClass } from \"./circularProgressClasses.js\";\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nconst SIZE = 44;\nconst circularRotateKeyframe = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n\n 100% {\n transform: rotate(360deg);\n }\n`;\nconst circularDashKeyframe = keyframes`\n 0% {\n stroke-dasharray: 1px, 200px;\n stroke-dashoffset: 0;\n }\n\n 50% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -15px;\n }\n\n 100% {\n stroke-dasharray: 100px, 200px;\n stroke-dashoffset: -125px;\n }\n`;\n\n// This implementation is for supporting both Styled-components v4+ and Pigment CSS.\n// A global animation has to be created here for Styled-components v4+ (https://github.com/styled-components/styled-components/blob/main/packages/styled-components/src/utils/errors.md#12).\n// which can be done by checking typeof indeterminate1Keyframe !== 'string' (at runtime, Pigment CSS transform keyframes`` to a string).\nconst rotateAnimation = typeof circularRotateKeyframe !== 'string' ? css`\n animation: ${circularRotateKeyframe} 1.4s linear infinite;\n ` : null;\nconst dashAnimation = typeof circularDashKeyframe !== 'string' ? css`\n animation: ${circularDashKeyframe} 1.4s ease-in-out infinite;\n ` : null;\nconst useUtilityClasses = ownerState => {\n const {\n classes,\n variant,\n color,\n disableShrink\n } = ownerState;\n const slots = {\n root: ['root', variant, `color${capitalize(color)}`],\n svg: ['svg'],\n circle: ['circle', `circle${capitalize(variant)}`, disableShrink && 'circleDisableShrink']\n };\n return composeClasses(slots, getCircularProgressUtilityClass, classes);\n};\nconst CircularProgressRoot = styled('span', {\n name: 'MuiCircularProgress',\n slot: 'Root',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.root, styles[ownerState.variant], styles[`color${capitalize(ownerState.color)}`]];\n }\n})(memoTheme(({\n theme\n}) => ({\n display: 'inline-block',\n variants: [{\n props: {\n variant: 'determinate'\n },\n style: {\n transition: theme.transitions.create('transform')\n }\n }, {\n props: {\n variant: 'indeterminate'\n },\n style: rotateAnimation || {\n animation: `${circularRotateKeyframe} 1.4s linear infinite`\n }\n }, ...Object.entries(theme.palette).filter(createSimplePaletteValueFilter()).map(([color]) => ({\n props: {\n color\n },\n style: {\n color: (theme.vars || theme).palette[color].main\n }\n }))]\n})));\nconst CircularProgressSVG = styled('svg', {\n name: 'MuiCircularProgress',\n slot: 'Svg',\n overridesResolver: (props, styles) => styles.svg\n})({\n display: 'block' // Keeps the progress centered\n});\nconst CircularProgressCircle = styled('circle', {\n name: 'MuiCircularProgress',\n slot: 'Circle',\n overridesResolver: (props, styles) => {\n const {\n ownerState\n } = props;\n return [styles.circle, styles[`circle${capitalize(ownerState.variant)}`], ownerState.disableShrink && styles.circleDisableShrink];\n }\n})(memoTheme(({\n theme\n}) => ({\n stroke: 'currentColor',\n variants: [{\n props: {\n variant: 'determinate'\n },\n style: {\n transition: theme.transitions.create('stroke-dashoffset')\n }\n }, {\n props: {\n variant: 'indeterminate'\n },\n style: {\n // Some default value that looks fine waiting for the animation to kicks in.\n strokeDasharray: '80px, 200px',\n strokeDashoffset: 0 // Add the unit to fix a Edge 16 and below bug.\n }\n }, {\n props: ({\n ownerState\n }) => ownerState.variant === 'indeterminate' && !ownerState.disableShrink,\n style: dashAnimation || {\n // At runtime for Pigment CSS, `bufferAnimation` will be null and the generated keyframe will be used.\n animation: `${circularDashKeyframe} 1.4s ease-in-out infinite`\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 */\nconst CircularProgress = /*#__PURE__*/React.forwardRef(function CircularProgress(inProps, ref) {\n const props = useDefaultProps({\n props: inProps,\n name: 'MuiCircularProgress'\n });\n const {\n className,\n color = 'primary',\n disableShrink = false,\n size = 40,\n style,\n thickness = 3.6,\n value = 0,\n variant = 'indeterminate',\n ...other\n } = props;\n const ownerState = {\n ...props,\n color,\n disableShrink,\n size,\n thickness,\n value,\n variant\n };\n const classes = useUtilityClasses(ownerState);\n const circleStyle = {};\n const rootStyle = {};\n const rootProps = {};\n if (variant === 'determinate') {\n const circumference = 2 * Math.PI * ((SIZE - thickness) / 2);\n circleStyle.strokeDasharray = circumference.toFixed(3);\n rootProps['aria-valuenow'] = Math.round(value);\n circleStyle.strokeDashoffset = `${((100 - value) / 100 * circumference).toFixed(3)}px`;\n rootStyle.transform = 'rotate(-90deg)';\n }\n return /*#__PURE__*/_jsx(CircularProgressRoot, {\n className: clsx(classes.root, className),\n style: {\n width: size,\n height: size,\n ...rootStyle,\n ...style\n },\n ownerState: ownerState,\n ref: ref,\n role: \"progressbar\",\n ...rootProps,\n ...other,\n children: /*#__PURE__*/_jsx(CircularProgressSVG, {\n className: classes.svg,\n ownerState: ownerState,\n viewBox: `${SIZE / 2} ${SIZE / 2} ${SIZE} ${SIZE}`,\n children: /*#__PURE__*/_jsx(CircularProgressCircle, {\n className: classes.circle,\n style: circleStyle,\n ownerState: ownerState,\n cx: SIZE,\n cy: SIZE,\n r: (SIZE - thickness) / 2,\n fill: \"none\",\n strokeWidth: thickness\n })\n })\n });\n});\nprocess.env.NODE_ENV !== \"production\" ? CircularProgress.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 * 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(['inherit', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), PropTypes.string]),\n /**\n * If `true`, the shrink animation is disabled.\n * This only works if variant is `indeterminate`.\n * @default false\n */\n disableShrink: chainPropTypes(PropTypes.bool, props => {\n if (props.disableShrink && props.variant && props.variant !== 'indeterminate') {\n return new Error('MUI: You have provided the `disableShrink` prop ' + 'with a variant other than `indeterminate`. This will have no effect.');\n }\n return null;\n }),\n /**\n * The size of the component.\n * If using a number, the pixel unit is assumed.\n * If using a string, you need to provide the CSS unit, for example '3rem'.\n * @default 40\n */\n size: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n /**\n * @ignore\n */\n style: PropTypes.object,\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 thickness of the circle.\n * @default 3.6\n */\n thickness: PropTypes.number,\n /**\n * The value of the progress indicator for the determinate variant.\n * Value between 0 and 100.\n * @default 0\n */\n value: PropTypes.number,\n /**\n * The variant to use.\n * Use indeterminate when there is no progress value.\n * @default 'indeterminate'\n */\n variant: PropTypes.oneOf(['determinate', 'indeterminate'])\n} : void 0;\nexport default CircularProgress;","import generateUtilityClasses from '@mui/utils/generateUtilityClasses';\nimport generateUtilityClass from '@mui/utils/generateUtilityClass';\nexport function getCircularProgressUtilityClass(slot) {\n return generateUtilityClass('MuiCircularProgress', slot);\n}\nconst circularProgressClasses = generateUtilityClasses('MuiCircularProgress', ['root', 'determinate', 'indeterminate', 'colorPrimary', 'colorSecondary', 'svg', 'circle', 'circleDeterminate', 'circleIndeterminate', 'circleDisableShrink']);\nexport default circularProgressClasses;","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;","import createStyled from \"../createStyled/index.js\";\nconst styled = createStyled();\nexport default styled;"],"names":["useStyles","makeStyles","dialogContent","width","textAreaFont","fontFamily","observer","model","handleClose","classes","error","setError","useState","sequenceChunks","setSequenceChunks","rev","setReverse","copied","setCopied","comp","setComplement","leftOffset","rightOffset","loading","Boolean","undefined","useEffect","controller","AbortController","selection","getSelectedRegions","length","Error","chunks","async","regions","signal","session","getSession","assemblyName","rpcManager","assemblyManager","assembly","get","adapterConfig","getConf","sessionId","call","fetchSequence","e","console","abort","sequence","map","chunk","chunkSeq","chunkRefName","chunkStart","chunkEnd","loc","toLocaleString","reverse","complement","header","seq","seqString","replaceAll","trimEnd","join","sequenceTooLarge","React","Dialog","maxWidth","open","onClose","setOffsets","title","DialogContent","Typography","color","Container","CircularProgress","style","marginLeft","size","disableShrink","TextField","variant","multiline","minRows","maxRows","disabled","className","fullWidth","value","InputProps","readOnly","input","FormGroup","FormControlLabel","control","Checkbox","onChange","event","target","checked","label","margin","DialogActions","Button","onClick","copy","setTimeout","startIcon","ContentCopyIcon","saveAs","Blob","type","GetAppIcon","d","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","name","slot","overridesResolver","props","styles","ownerState","root","theme","display","variants","transition","transitions","create","animation","Object","entries","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","Math","PI","toFixed","round","transform","height","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass","defaultTheme","createTheme","defaultCreateStyledComponent","capitalize","String","fixed","disableGutters","useThemePropsDefault","useThemeProps","options","createStyledComponent","componentName","ContainerRoot","boxSizing","marginRight","paddingLeft","spacing","paddingRight","breakpoints","up","keys","values","reduce","acc","breakpointValueKey","breakpoint","unit","max","xs","component","classesProp","composeClasses","generateUtilityClass","as","clsx","createContainer"],"sourceRoot":""}