view x/static/js/7428.1e6f676f.chunk.js.map @ 127:fbabf7498471 draft

planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/jbrowse2 commit 116b1a4bbd62251ad552306df2dc8aa8f46c6721
author fubar
date Mon, 07 Oct 2024 02:11:55 +0000
parents 49f3d3878413
children
line wrap: on
line source

{"version":3,"file":"static/js/7428.1e6f676f.chunk.js","mappings":"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","sources":["../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/SequenceFeatureDetails.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceFeatureMenu.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/dialogs/SequenceTypeSelector.tsx","../../../packages/core/BaseFeatureWidget/SequenceFeatureDetails/hooks.ts","../../../node_modules/@mui/icons-material/esm/Settings.js"],"sourcesContent":["import React, { lazy, useRef, useState, Suspense, useEffect } from 'react'\nimport { Button, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\n\n// locals\nimport { useFeatureSequence } from './hooks'\nimport { ErrorMessage, LoadingEllipses } from '../../ui'\nimport { SimpleFeatureSerialized } from '../../util'\nimport { BaseFeatureWidgetModel } from '../stateModelFactory'\n\n// icons\nimport SequenceFeatureMenu from './dialogs/SequenceFeatureMenu'\nimport SequenceTypeSelector from './dialogs/SequenceTypeSelector'\n\n// lazies\nconst SequencePanel = lazy(() => import('./SequencePanel'))\nconst SequenceDialog = lazy(() => import('./dialogs/SequenceDialog'))\n\n// set the key on this component to feature.id to clear state after new feature\n// is selected\nconst SequenceFeatureDetails = observer(function ({\n  model,\n  feature,\n}: {\n  model: BaseFeatureWidgetModel\n  feature: SimpleFeatureSerialized\n}) {\n  const { sequenceFeatureDetails } = model\n  const { upDownBp } = sequenceFeatureDetails\n  const seqPanelRef = useRef<HTMLDivElement>(null)\n\n  const [openInDialog, setOpenInDialog] = useState(false)\n  const [force, setForce] = useState(false)\n  const { sequence, error } = useFeatureSequence(\n    model,\n    feature,\n    upDownBp,\n    force,\n  )\n  useEffect(() => {\n    sequenceFeatureDetails.setFeature(feature)\n  }, [sequenceFeatureDetails, feature])\n\n  return (\n    <>\n      <div>\n        <SequenceTypeSelector model={sequenceFeatureDetails} />\n        <SequenceFeatureMenu\n          ref={seqPanelRef}\n          model={sequenceFeatureDetails}\n          extraItems={[\n            {\n              label: 'Open in dialog',\n              onClick: () => {\n                // this is given a setTimeout because it allows the menu to\n                // close before dialog opens\n                setTimeout(() => {\n                  setOpenInDialog(true)\n                }, 1)\n              },\n            },\n          ]}\n        />\n      </div>\n      {openInDialog ? (\n        <div>\n          Open in dialog...\n          <Suspense fallback={<LoadingEllipses />}>\n            <SequenceDialog\n              model={model}\n              feature={feature}\n              handleClose={() => {\n                setOpenInDialog(false)\n              }}\n            />\n          </Suspense>\n        </div>\n      ) : (\n        <div>\n          {feature.type === 'gene' ? (\n            <Typography>\n              Note: inspect subfeature sequences for protein/CDS computations\n            </Typography>\n          ) : null}\n          {error ? (\n            <ErrorMessage error={error} />\n          ) : !sequence ? (\n            <LoadingEllipses />\n          ) : 'error' in sequence ? (\n            <>\n              <Typography color=\"error\">{sequence.error}</Typography>\n              <Button\n                variant=\"contained\"\n                color=\"inherit\"\n                onClick={() => {\n                  setForce(true)\n                }}\n              >\n                Force load\n              </Button>\n            </>\n          ) : (\n            <Suspense fallback={<LoadingEllipses />}>\n              <SequencePanel\n                ref={seqPanelRef}\n                feature={feature}\n                sequence={sequence}\n                model={sequenceFeatureDetails}\n              />\n            </Suspense>\n          )}\n        </div>\n      )}\n    </>\n  )\n})\n\nexport default SequenceFeatureDetails\n","import React, { lazy, useState } from 'react'\nimport { observer } from 'mobx-react'\nimport copy from 'copy-to-clipboard'\nimport { saveAs } from 'file-saver'\n\n// locals\nimport CascadingMenuButton from '../../../ui/CascadingMenuButton'\nimport { SequenceFeatureDetailsModel } from '../model'\nimport { MenuItem } from '../../../ui'\n\n// icons\nimport MoreVert from '@mui/icons-material/MoreVert'\nimport Settings from '@mui/icons-material/Settings'\n\n// lazies\nconst SequenceFeatureSettingsDialog = lazy(() => import('./SettingsDialog'))\n\ninterface Props {\n  model: SequenceFeatureDetailsModel\n  extraItems?: MenuItem[]\n}\nconst SequenceFeatureMenu = observer(\n  React.forwardRef<HTMLDivElement, Props>(function SequenceFeatureMenu2(\n    { model, extraItems = [] },\n    ref,\n  ) {\n    if (typeof ref === 'function') {\n      throw new Error('needs a non function ref')\n    }\n    const [showSettings, setShowSettings] = useState(false)\n    const { showCoordinatesSetting, showGenomicCoordsOption } = model\n\n    return (\n      <>\n        <CascadingMenuButton\n          menuItems={[\n            {\n              label: 'Copy plaintext',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  copy(r.textContent || '', { format: 'text/plain' })\n                }\n              },\n            },\n            {\n              label: 'Copy HTML',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  copy(r.outerHTML, { format: 'text/html' })\n                }\n              },\n            },\n            {\n              label: 'Download plaintext',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  saveAs(\n                    new Blob([r.textContent || ''], {\n                      type: 'text/plain;charset=utf-8',\n                    }),\n                    'sequence.txt',\n                  )\n                }\n              },\n            },\n            {\n              label: 'Download HTML',\n              onClick: () => {\n                const r = ref?.current\n                if (r) {\n                  saveAs(\n                    new Blob([r.outerHTML || ''], {\n                      type: 'text/html;charset=utf-8',\n                    }),\n                    'sequence.html',\n                  )\n                }\n              },\n            },\n\n            ...extraItems,\n\n            {\n              label: 'Show coordinates?',\n              type: 'subMenu',\n              subMenu: [\n                {\n                  label: 'No coordinates',\n                  type: 'radio',\n                  checked: showCoordinatesSetting === 'none',\n                  onClick: () => {\n                    model.setShowCoordinates('none')\n                  },\n                },\n                {\n                  label: 'Coordinates relative to feature start',\n                  type: 'radio',\n                  checked: showCoordinatesSetting === 'relative',\n                  onClick: () => {\n                    model.setShowCoordinates('relative')\n                  },\n                },\n                ...(showGenomicCoordsOption\n                  ? [\n                      {\n                        label:\n                          'Coordinates relative to genome (only available for continuous genome based sequence types)',\n                        type: 'radio' as const,\n                        checked: showCoordinatesSetting === 'genomic',\n                        onClick: () => {\n                          model.setShowCoordinates('genomic')\n                        },\n                      },\n                    ]\n                  : []),\n              ],\n            },\n            {\n              label: 'Settings',\n              icon: Settings,\n              onClick: () => {\n                setShowSettings(true)\n              },\n            },\n          ]}\n        >\n          <MoreVert />\n        </CascadingMenuButton>\n\n        {showSettings ? (\n          <SequenceFeatureSettingsDialog\n            model={model}\n            handleClose={() => {\n              setShowSettings(false)\n            }}\n          />\n        ) : null}\n      </>\n    )\n  }),\n)\n\nexport default SequenceFeatureMenu\n","import React from 'react'\nimport { FormControl, MenuItem, Select } from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n// locals\nimport { SequenceFeatureDetailsModel } from '../model'\n\nconst useStyles = makeStyles()({\n  formControl: {\n    margin: 0,\n    marginLeft: 4,\n  },\n})\n\nconst SequenceTypeSelector = observer(function ({\n  model,\n}: {\n  model: SequenceFeatureDetailsModel\n}) {\n  const { classes } = useStyles()\n  const { intronBp, upDownBp, mode, hasCDS, hasExonOrCDS } = model\n\n  return (\n    <FormControl className={classes.formControl}>\n      <Select\n        size=\"small\"\n        value={mode}\n        onChange={event => {\n          model.setMode(event.target.value)\n        }}\n      >\n        {Object.entries({\n          ...(hasCDS\n            ? {\n                cds: 'CDS',\n              }\n            : {}),\n          ...(hasCDS\n            ? {\n                protein: 'Protein',\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                cdna: 'cDNA',\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene: 'Genomic w/ full introns',\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene_updownstream: `Genomic w/ full introns +/- ${upDownBp}bp up+down stream`,\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene_collapsed_intron: `Genomic w/ ${intronBp}bp intron`,\n              }\n            : {}),\n          ...(hasExonOrCDS\n            ? {\n                gene_updownstream_collapsed_intron: `Genomic w/ ${intronBp}bp intron +/- ${upDownBp}bp up+down stream `,\n              }\n            : {}),\n          ...(!hasExonOrCDS\n            ? {\n                genomic: 'Genomic',\n              }\n            : {}),\n          ...(!hasExonOrCDS\n            ? {\n                genomic_sequence_updownstream: `Genomic +/- ${upDownBp}bp up+down stream`,\n              }\n            : {}),\n        }).map(([key, val]) => (\n          <MenuItem key={key} value={key}>\n            {val}\n          </MenuItem>\n        ))}\n      </Select>\n    </FormControl>\n  )\n})\n\nexport default SequenceTypeSelector\n","import { useEffect, useState } from 'react'\n\nimport { SeqState, ErrorState } from '../util'\nimport { Feature, SimpleFeatureSerialized, getSession } from '../../util'\nimport { getConf } from '../../configuration'\n\nconst BPLIMIT = 500_000\n\ninterface CoordFeat extends SimpleFeatureSerialized {\n  refName: string\n  start: number\n  end: number\n}\n\nexport function useFeatureSequence(\n  model: { view?: { assemblyNames?: string[] } } | undefined,\n  feature: SimpleFeatureSerialized,\n  upDownBp: number,\n  forceLoad: boolean,\n) {\n  const [sequence, setSequence] = useState<SeqState | ErrorState>()\n  const [error, setError] = useState<unknown>()\n  useEffect(() => {\n    if (!model) {\n      return\n    }\n    const { assemblyManager, rpcManager } = getSession(model)\n    const assemblyName = model.view?.assemblyNames?.[0] || ''\n    async function fetchSeq(start: number, end: number, refName: string) {\n      const assembly = await assemblyManager.waitForAssembly(assemblyName)\n      if (!assembly) {\n        throw new Error('assembly not found')\n      }\n      const sessionId = 'getSequence'\n      const feats = await rpcManager.call(sessionId, 'CoreGetFeatures', {\n        adapterConfig: getConf(assembly, ['sequence', 'adapter']),\n        sessionId,\n        regions: [\n          {\n            start,\n            end,\n            refName: assembly.getCanonicalRefName(refName),\n            assemblyName,\n          },\n        ],\n      })\n\n      const [feat] = feats as Feature[]\n      return (feat?.get('seq') as string | undefined) || ''\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-floating-promises\n    ;(async () => {\n      try {\n        setError(undefined)\n        const { start, end, refName } = feature as CoordFeat\n\n        if (!forceLoad && end - start > BPLIMIT) {\n          setSequence({\n            error: `Genomic sequence larger than ${BPLIMIT}bp, use \"force load\" button to display`,\n          })\n        } else {\n          const b = start - upDownBp\n          const e = end + upDownBp\n          const seq = await fetchSeq(start, end, refName)\n          const up = await fetchSeq(Math.max(0, b), start, refName)\n          const down = await fetchSeq(end, e, refName)\n          setSequence({ seq, upstream: up, downstream: down })\n        }\n      } catch (e) {\n        console.error(e)\n        setError(e)\n      }\n    })()\n  }, [feature, model, upDownBp, forceLoad])\n  return { sequence, error }\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.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.07-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.74 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.07.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .44-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.47-.12-.61zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6\"\n}), 'Settings');"],"names":["SequencePanel","lazy","SequenceDialog","observer","model","feature","sequenceFeatureDetails","upDownBp","seqPanelRef","useRef","openInDialog","setOpenInDialog","useState","force","setForce","sequence","error","useFeatureSequence","useEffect","setFeature","React","SequenceTypeSelector","SequenceFeatureMenu","ref","extraItems","label","onClick","setTimeout","Suspense","fallback","LoadingEllipses","handleClose","type","Typography","ErrorMessage","color","Button","variant","SequenceFeatureSettingsDialog","Error","showSettings","setShowSettings","showCoordinatesSetting","showGenomicCoordsOption","CascadingMenuButton","menuItems","r","current","copy","textContent","format","outerHTML","saveAs","Blob","subMenu","checked","setShowCoordinates","icon","Settings","MoreVert","useStyles","makeStyles","formControl","margin","marginLeft","classes","intronBp","mode","hasCDS","hasExonOrCDS","FormControl","className","Select","size","value","onChange","event","setMode","target","Object","entries","cds","protein","cdna","gene","gene_updownstream","gene_collapsed_intron","gene_updownstream_collapsed_intron","genomic","genomic_sequence_updownstream","map","key","val","MenuItem","BPLIMIT","forceLoad","setSequence","setError","assemblyManager","rpcManager","getSession","assemblyName","view","assemblyNames","async","fetchSeq","start","end","refName","assembly","waitForAssembly","sessionId","feats","call","adapterConfig","getConf","regions","getCanonicalRefName","feat","get","undefined","b","e","seq","up","Math","max","down","upstream","downstream","console","d"],"sourceRoot":""}