view x/static/js/3416.f7c72cbe.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/3416.f7c72cbe.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearReadVsRef/LinearReadVsRef.tsx","../../../node_modules/@mui/material/CircularProgress/CircularProgress.js","../../../node_modules/@mui/material/CircularProgress/circularProgressClasses.js"],"sourcesContent":["import React, { useEffect, useState } from 'react'\nimport {\n  Button,\n  CircularProgress,\n  DialogActions,\n  DialogContent,\n  TextField,\n  Typography,\n} from '@mui/material'\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from 'tss-react/mui'\nimport { getConf } from '@jbrowse/core/configuration'\nimport { getRpcSessionId } from '@jbrowse/core/util/tracks'\nimport {\n  getSession,\n  getContainingView,\n  gatherOverlaps,\n  Feature,\n} from '@jbrowse/core/util'\n\n// locals\nimport { MismatchParser } from '@jbrowse/plugin-alignments'\nconst { featurizeSA, getClip, getLength, getLengthSansClipping, getTag } =\n  MismatchParser\n\ninterface ReducedFeature {\n  refName: string\n  start: number\n  clipPos: number\n  end: number\n  strand: number\n  seqLength: number\n  syntenyId?: number\n  uniqueId: string\n  mate: {\n    refName: string\n    start: number\n    end: number\n    syntenyId?: number\n    uniqueId?: string\n  }\n}\n\nconst useStyles = makeStyles()({\n  root: {\n    width: 300,\n  },\n})\n\nexport default function ReadVsRefDialog({\n  track,\n  feature: preFeature,\n  handleClose,\n}: {\n  feature: Feature\n  handleClose: () => void\n\n  track: any\n}) {\n  const { classes } = useStyles()\n\n  // window size stored as string, because it corresponds to a textfield which\n  // is parsed as number on submit\n  const [windowSizeText, setWindowSize] = useState('0')\n  const [error, setError] = useState<unknown>()\n  const [primaryFeature, setPrimaryFeature] = useState<Feature>()\n  const windowSize = +windowSizeText\n\n  // we need to fetch the primary alignment if the selected feature is 2048.\n  // this should be the first in the list of the SA tag\n  useEffect(() => {\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      setError(undefined)\n      try {\n        if (preFeature.get('flags') & 2048) {\n          const SA: string = getTag(preFeature, 'SA') || ''\n          const primaryAln = SA.split(';')[0]!\n          const [saRef, saStart] = primaryAln.split(',')\n          const { rpcManager } = getSession(track)\n          const adapterConfig = getConf(track, 'adapter')\n          const sessionId = getRpcSessionId(track)\n\n          const feats = (await rpcManager.call(sessionId, 'CoreGetFeatures', {\n            adapterConfig,\n            sessionId,\n            regions: [\n              {\n                refName: saRef,\n                start: +saStart! - 1,\n                end: +saStart!,\n              },\n            ],\n          })) as Feature[]\n\n          const result = feats.find(\n            f =>\n              f.get('name') === preFeature.get('name') &&\n              !(f.get('flags') & 2048) &&\n              !(f.get('flags') & 256),\n          )\n          if (result) {\n            setPrimaryFeature(result)\n          } else {\n            throw new Error('primary feature not found')\n          }\n        } else {\n          setPrimaryFeature(preFeature)\n        }\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [preFeature, track])\n\n  function onSubmit() {\n    try {\n      if (!primaryFeature) {\n        return\n      }\n      const feature = primaryFeature\n      const session = getSession(track)\n      const view = getContainingView(track)\n      const cigar = feature.get('CIGAR') as string\n      const flags = feature.get('flags') as number\n      const origStrand = feature.get('strand') as number\n      const SA = (getTag(feature, 'SA') as string) || ''\n      const readName = feature.get('name') as string\n      const clipPos = getClip(cigar, 1)\n\n      const readAssembly = `${readName}_assembly_${Date.now()}`\n      const [trackAssembly] = getConf(track, 'assemblyNames')\n      const assemblyNames = [trackAssembly, readAssembly]\n      const trackId = `track-${Date.now()}`\n      const trackName = `${readName}_vs_${trackAssembly}`\n\n      // get the canonical refname for the read because if the\n      // read.get('refName') is chr1 and the actual fasta refName is 1 then no\n      // tracks can be opened on the top panel of the linear read vs ref\n      const { assemblyManager } = session\n      const assembly = assemblyManager.get(trackAssembly)\n      if (!assembly) {\n        throw new Error('assembly not found')\n      }\n\n      const suppAlns = featurizeSA(SA, feature.id(), origStrand, readName, true)\n\n      const feat = feature.toJSON()\n      feat.clipPos = clipPos\n      feat.strand = 1\n\n      feat.mate = {\n        refName: readName,\n        start: clipPos,\n        end: clipPos + getLengthSansClipping(cigar),\n      }\n\n      // if secondary alignment or supplementary, calculate length from SA[0]'s\n      // CIGAR which is the primary alignments. otherwise it is the primary\n      // alignment just use seq.length if primary alignment\n      const totalLength =\n        flags & 2048 ? getLength(suppAlns[0]!.CIGAR) : getLength(cigar)\n\n      const features = [feat, ...suppAlns] as ReducedFeature[]\n\n      features.forEach((f, idx) => {\n        f.refName = assembly.getCanonicalRefName(f.refName) || f.refName\n        f.syntenyId = idx\n        f.mate.syntenyId = idx\n        f.mate.uniqueId = `${f.uniqueId}_mate`\n      })\n      features.sort((a, b) => a.clipPos - b.clipPos)\n\n      const featSeq = feature.get('seq') as string | undefined\n\n      // the config feature store includes synthetic mate features\n      // mapped to the read assembly\n      const configFeatureStore = [...features, ...features.map(f => f.mate)]\n      const expand = 2 * windowSize\n      const refLen = features.reduce((a, f) => a + f.end - f.start + expand, 0)\n\n      const seqTrackId = `${readName}_${Date.now()}`\n      const sequenceTrackConf = getConf(assembly, 'sequence')\n      const lgvRegions = gatherOverlaps(\n        features.map(f => ({\n          ...f,\n          start: Math.max(0, f.start - windowSize),\n          end: f.end + windowSize,\n          assemblyName: trackAssembly,\n        })),\n      )\n\n      session.addTemporaryAssembly?.({\n        name: readAssembly,\n        sequence: {\n          type: 'ReferenceSequenceTrack',\n          name: 'Read sequence',\n          trackId: seqTrackId,\n          assemblyNames: [readAssembly],\n          adapter: {\n            type: 'FromConfigSequenceAdapter',\n            noAssemblyManager: true,\n            features: [\n              {\n                start: 0,\n                end: totalLength,\n                seq: featSeq || '', // can be empty if user clicks secondary read\n                refName: readName,\n                uniqueId: `${Math.random()}`,\n              },\n            ],\n          },\n        },\n      })\n\n      session.addView('LinearSyntenyView', {\n        type: 'LinearSyntenyView',\n        views: [\n          {\n            type: 'LinearGenomeView',\n            hideHeader: true,\n            offsetPx: 0,\n            bpPerPx: refLen / view.width,\n            displayedRegions: lgvRegions,\n            tracks: [\n              {\n                id: `${Math.random()}`,\n                type: 'ReferenceSequenceTrack',\n                assemblyNames: [trackAssembly],\n                configuration: sequenceTrackConf.trackId,\n                displays: [\n                  {\n                    id: `${Math.random()}`,\n                    type: 'LinearReferenceSequenceDisplay',\n                    showReverse: true,\n                    showTranslation: false,\n                    height: 35,\n                    configuration: `${seqTrackId}-LinearReferenceSequenceDisplay`,\n                  },\n                ],\n              },\n            ],\n          },\n          {\n            type: 'LinearGenomeView',\n            hideHeader: true,\n            offsetPx: 0,\n            bpPerPx: totalLength / view.width,\n            displayedRegions: [\n              {\n                assemblyName: readAssembly,\n                start: 0,\n                end: totalLength,\n                refName: readName,\n              },\n            ],\n            tracks: [\n              {\n                id: `${Math.random()}`,\n                type: 'ReferenceSequenceTrack',\n                configuration: seqTrackId,\n                displays: [\n                  {\n                    id: `${Math.random()}`,\n                    type: 'LinearReferenceSequenceDisplay',\n                    showReverse: true,\n                    showTranslation: false,\n                    height: 35,\n                    configuration: `${seqTrackId}-LinearReferenceSequenceDisplay`,\n                  },\n                ],\n              },\n            ],\n          },\n        ],\n        viewTrackConfigs: [\n          {\n            type: 'SyntenyTrack',\n            assemblyNames,\n            adapter: {\n              type: 'FromConfigAdapter',\n              features: configFeatureStore,\n            },\n            trackId,\n            name: trackName,\n          },\n        ],\n        tracks: [\n          {\n            configuration: trackId,\n            type: 'SyntenyTrack',\n            displays: [\n              {\n                type: 'LinearSyntenyDisplay',\n                configuration: `${trackId}-LinearSyntenyDisplay`,\n              },\n            ],\n          },\n        ],\n        displayName: `${readName} vs ${trackAssembly}`,\n      })\n      handleClose()\n    } catch (e) {\n      console.error(e)\n      setError(e)\n    }\n  }\n\n  return (\n    <Dialog open onClose={handleClose} title=\"Set window size\">\n      <DialogContent>\n        {error ? (\n          <Typography color=\"error\">{`${error}`}</Typography>\n        ) : !primaryFeature ? (\n          <div>\n            <Typography>\n              To accurately perform comparison we are fetching the primary\n              alignment. Loading primary feature...\n            </Typography>\n            <CircularProgress />\n          </div>\n        ) : (\n          <div className={classes.root}>\n            {primaryFeature.get('flags') & 256 ? (\n              <Typography style={{ color: 'orange' }}>\n                Note: You selected a secondary alignment (which generally does\n                not have SA tags or SEQ fields) so do a full reconstruction of\n                the alignment\n              </Typography>\n            ) : null}\n            <Typography>\n              Show an extra window size around each part of the split alignment.\n              Using a larger value can allow you to see more genomic context.\n            </Typography>\n\n            <TextField\n              value={windowSize}\n              onChange={event => {\n                setWindowSize(event.target.value)\n              }}\n              label=\"Set window size\"\n            />\n          </div>\n        )}\n      </DialogContent>\n      <DialogActions>\n        <Button variant=\"contained\" color=\"secondary\" onClick={handleClose}>\n          Cancel\n        </Button>\n        <Button\n          disabled={!primaryFeature}\n          variant=\"contained\"\n          color=\"primary\"\n          onClick={onSubmit}\n        >\n          Submit\n        </Button>\n      </DialogActions>\n    </Dialog>\n  )\n}\n","'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;"],"names":["featurizeSA","getClip","getLength","getLengthSansClipping","getTag","MismatchParser","useStyles","makeStyles","root","width","ReadVsRefDialog","track","feature","preFeature","handleClose","classes","windowSizeText","setWindowSize","useState","error","setError","primaryFeature","setPrimaryFeature","windowSize","useEffect","undefined","get","primaryAln","split","saRef","saStart","rpcManager","getSession","adapterConfig","getConf","sessionId","getRpcSessionId","result","call","regions","refName","start","end","find","f","Error","e","console","React","Dialog","open","onClose","title","DialogContent","Typography","color","className","style","TextField","value","onChange","event","target","label","CircularProgress","DialogActions","Button","variant","onClick","disabled","session","view","getContainingView","cigar","flags","origStrand","SA","readName","clipPos","readAssembly","Date","now","trackAssembly","assemblyNames","trackId","trackName","assemblyManager","assembly","suppAlns","id","feat","toJSON","strand","mate","totalLength","CIGAR","features","forEach","idx","getCanonicalRefName","syntenyId","uniqueId","sort","a","b","featSeq","configFeatureStore","map","expand","refLen","reduce","seqTrackId","sequenceTrackConf","lgvRegions","gatherOverlaps","Math","max","assemblyName","addTemporaryAssembly","name","sequence","type","adapter","noAssemblyManager","seq","random","addView","views","hideHeader","offsetPx","bpPerPx","displayedRegions","tracks","configuration","displays","showReverse","showTranslation","height","viewTrackConfigs","displayName","circularRotateKeyframe","circularDashKeyframe","rotateAnimation","dashAnimation","CircularProgressRoot","slot","overridesResolver","props","styles","ownerState","theme","display","variants","transition","transitions","create","animation","Object","entries","palette","filter","vars","main","CircularProgressSVG","svg","CircularProgressCircle","circle","disableShrink","circleDisableShrink","stroke","strokeDasharray","strokeDashoffset","inProps","ref","size","thickness","other","slots","useUtilityClasses","circleStyle","rootStyle","rootProps","circumference","PI","toFixed","round","transform","role","children","viewBox","cx","cy","r","fill","strokeWidth","getCircularProgressUtilityClass"],"sourceRoot":""}