view x/static/js/311.2c004784.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/311.2c004784.chunk.js","mappings":"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","sources":["../../../plugins/circular-view/src/CircularView/components/Ruler.tsx","../../../plugins/circular-view/src/CircularView/svgcomponents/SVGBackground.tsx","../../../plugins/circular-view/src/CircularView/svgcomponents/SVGCircularView.tsx"],"sourcesContent":["import React from 'react'\nimport { observer } from 'mobx-react'\nimport {\n  getSession,\n  polarToCartesian,\n  radToDeg,\n  assembleLocString,\n  getStrokeProps,\n  getFillProps,\n} from '@jbrowse/core/util'\nimport { makeContrasting } from '@jbrowse/core/util/color'\nimport { useTheme } from '@mui/material/styles'\nimport { makeStyles } from 'tss-react/mui'\n\n// locals\nimport {\n  Slice,\n  SliceElidedRegion,\n  SliceNonElidedRegion,\n} from '../models/slices'\nimport { CircularViewModel } from '../models/model'\n\nconst useStyles = makeStyles()({\n  rulerLabel: {\n    fontSize: '0.8rem',\n    fontWeight: 500,\n    lineHeight: 1.6,\n    letterSpacing: '0.0075em',\n  },\n})\n\nfunction sliceArcPath(\n  slice: Slice,\n  radiusPx: number,\n  startBase: number,\n  endBase: number,\n) {\n  // A rx ry x-axis-rotation large-arc-flag sweep-flag x y\n  if (slice.flipped) {\n    ;[startBase, endBase] = [endBase, startBase]\n  }\n  const startXY = slice.bpToXY(startBase, radiusPx)\n  const endXY = slice.bpToXY(endBase, radiusPx)\n  const largeArc =\n    Math.abs(endBase - startBase) / slice.bpPerRadian > Math.PI ? '1' : '0'\n  const sweepFlag = '1'\n  return [\n    'M',\n    ...startXY,\n    'A',\n    radiusPx,\n    radiusPx,\n    '0',\n    largeArc,\n    sweepFlag,\n    ...endXY,\n  ].join(' ')\n}\n\nconst ElisionRulerArc = observer(function ({\n  model,\n  slice,\n  region,\n}: {\n  model: CircularViewModel\n  slice: Slice\n  region: SliceElidedRegion\n}) {\n  const theme = useTheme()\n  const { radiusPx: modelRadiusPx } = model\n  const radiusPx = modelRadiusPx + 1\n  const { endRadians, startRadians } = slice\n  const startXY = polarToCartesian(radiusPx, startRadians)\n  const endXY = polarToCartesian(radiusPx, endRadians)\n  const widthPx = (endRadians - startRadians) * radiusPx\n  const largeArc = endRadians - startRadians > Math.PI ? '1' : '0'\n  // TODO: draw the elision\n  const centerRadians = (endRadians + startRadians) / 2\n  const regionCount = `[${Number(region.regions.length).toLocaleString()}]`\n  return (\n    <>\n      <RulerLabel\n        text={regionCount}\n        view={model}\n        maxWidthPx={widthPx}\n        radians={centerRadians}\n        radiusPx={radiusPx}\n        title={`${regionCount} more regions`}\n        color={theme.palette.text.primary}\n      />\n      <path\n        d={[\n          'M',\n          ...startXY,\n          'A',\n          radiusPx,\n          radiusPx,\n          '0',\n          largeArc,\n          '1',\n          ...endXY,\n        ].join(' ')}\n        {...getStrokeProps(theme.palette.text.secondary)}\n        strokeWidth={2}\n        strokeDasharray=\"2,2\"\n        fill=\"none\"\n      />\n    </>\n  )\n})\n\nconst RulerLabel = observer(function ({\n  view,\n  text,\n  maxWidthPx,\n  radians,\n  radiusPx,\n  title,\n  color,\n}: {\n  view: CircularViewModel\n  text: string\n  maxWidthPx: number\n  radiusPx: number\n  radians: number\n  title?: string\n  color: string\n}) {\n  const { classes } = useStyles()\n  const textXY = polarToCartesian(radiusPx + 5, radians)\n  if (!text) {\n    return null\n  }\n\n  if (text.length * 6.5 < maxWidthPx) {\n    // text is rotated parallel to the ruler arc\n    return (\n      <text\n        x={0}\n        y={0}\n        className={classes.rulerLabel}\n        textAnchor=\"middle\"\n        dominantBaseline=\"baseline\"\n        transform={`translate(${textXY}) rotate(${radToDeg(radians) + 90})`}\n        {...getFillProps(color)}\n      >\n        {text}\n        <title>{title || text}</title>\n      </text>\n    )\n  }\n  if (maxWidthPx > 4) {\n    // text is rotated perpendicular to the ruler arc\n    const overallRotation = radToDeg(radians + view.offsetRadians - Math.PI / 2)\n    if (overallRotation >= 180) {\n      return (\n        <text\n          x={0}\n          y={0}\n          className={classes.rulerLabel}\n          textAnchor=\"start\"\n          dominantBaseline=\"middle\"\n          transform={`translate(${textXY}) rotate(${radToDeg(radians)})`}\n          fill={color}\n        >\n          {text}\n          <title>{title || text}</title>\n        </text>\n      )\n    }\n    return (\n      <text\n        x={0}\n        y={0}\n        className={classes.rulerLabel}\n        textAnchor=\"end\"\n        dominantBaseline=\"middle\"\n        transform={`translate(${textXY}) rotate(${radToDeg(radians) + 180})`}\n        fill={color}\n      >\n        {text}\n        <title>{title || text}</title>\n      </text>\n    )\n  }\n\n  // if you get here there is no room for the text at all\n  return null\n})\n\nconst RegionRulerArc = observer(function ({\n  model,\n  slice,\n  region,\n}: {\n  model: CircularViewModel\n  slice: Slice\n  region: SliceNonElidedRegion\n}) {\n  const theme = useTheme()\n  const { radiusPx } = model\n  const { endRadians, startRadians } = slice\n  const centerRadians = (endRadians + startRadians) / 2\n  const widthPx = (endRadians - startRadians) * radiusPx\n  const session = getSession(model)\n  const assembly = session.assemblyManager.get(region.assemblyName)\n  let color = assembly ? assembly.getRefNameColor(region.refName) : undefined\n  if (color) {\n    try {\n      color = makeContrasting(color, theme.palette.background.paper)\n    } catch (error) {\n      color = theme.palette.text.primary\n    }\n  } else {\n    color = theme.palette.text.primary\n  }\n\n  // TODO: slice flipping\n  return (\n    <>\n      <RulerLabel\n        text={region.refName}\n        view={model}\n        maxWidthPx={widthPx}\n        radians={centerRadians}\n        radiusPx={radiusPx}\n        color={color}\n      />\n      <path\n        d={sliceArcPath(slice, radiusPx + 1, region.start, region.end)}\n        stroke={color}\n        strokeWidth={2}\n        fill=\"none\"\n      />\n    </>\n  )\n})\n\nconst Ruler = observer(function ({\n  model,\n  slice,\n}: {\n  model: CircularViewModel\n  slice: Slice\n}) {\n  return slice.region.elided ? (\n    <ElisionRulerArc\n      key={assembleLocString(slice.region.regions[0]!)}\n      model={model}\n      region={slice.region}\n      slice={slice}\n    />\n  ) : (\n    <RegionRulerArc\n      key={assembleLocString(slice.region)}\n      region={slice.region}\n      model={model}\n      slice={slice}\n    />\n  )\n})\n\nexport default Ruler\n","import React from 'react'\nimport { useTheme } from '@mui/material'\nimport { stripAlpha } from '@jbrowse/core/util'\n\nexport default function SVGBackground({\n  width,\n  height,\n  shift,\n}: {\n  width: number\n  height: number\n  shift: number\n}) {\n  const theme = useTheme()\n  return (\n    <rect\n      width={width + shift * 2}\n      height={height}\n      fill={stripAlpha(theme.palette.background.default)}\n    />\n  )\n}\n","import React from 'react'\nimport { ThemeProvider } from '@mui/material'\nimport { when } from 'mobx'\nimport { getSession, radToDeg, renderToStaticMarkup } from '@jbrowse/core/util'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { getRoot } from 'mobx-state-tree'\n\n// locals\nimport { ExportSvgOptions, CircularViewModel } from '../models/model'\nimport SVGBackground from './SVGBackground'\nimport Ruler from '../components/Ruler'\n\ntype CGV = CircularViewModel\n\nexport async function renderToSvg(model: CGV, opts: ExportSvgOptions) {\n  await when(() => model.initialized)\n  const { themeName = 'default', Wrapper = ({ children }) => children } = opts\n  const session = getSession(model)\n  const theme = session.allThemes?.()[themeName]\n\n  const { createRootFn } = getRoot<any>(model)\n  const { width, tracks, height } = model\n  const shift = 50\n  const displayResults = await Promise.all(\n    tracks.map(async track => {\n      const display = track.displays[0]\n      await when(() => (display.ready !== undefined ? display.ready : true))\n      return { track, result: await display.renderSvg({ ...opts, theme }) }\n    }),\n  )\n\n  const { staticSlices, offsetRadians, centerXY } = model\n  const deg = radToDeg(offsetRadians)\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={createJBrowseTheme(theme)}>\n      <Wrapper>\n        <svg\n          width={width}\n          height={height}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, width + shift * 2, height].toString()}\n        >\n          <SVGBackground width={width} height={height} shift={shift} />\n          <g transform={`translate(${centerXY}) rotate(${deg})`}>\n            {staticSlices.map((slice, i) => (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <Ruler key={i} model={model} slice={slice} />\n            ))}\n            {displayResults.map(({ result }, i) => (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <React.Fragment key={i}>{result}</React.Fragment>\n            ))}\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n"],"names":["useStyles","makeStyles","rulerLabel","fontSize","fontWeight","lineHeight","letterSpacing","sliceArcPath","slice","radiusPx","startBase","endBase","flipped","startXY","bpToXY","endXY","Math","abs","bpPerRadian","PI","join","ElisionRulerArc","observer","model","region","theme","useTheme","modelRadiusPx","endRadians","startRadians","polarToCartesian","widthPx","largeArc","centerRadians","regionCount","Number","regions","length","toLocaleString","React","RulerLabel","text","view","maxWidthPx","radians","title","color","palette","primary","_extends","d","getStrokeProps","secondary","strokeWidth","strokeDasharray","fill","classes","textXY","x","y","className","textAnchor","dominantBaseline","transform","radToDeg","getFillProps","offsetRadians","RegionRulerArc","assembly","getSession","assemblyManager","get","assemblyName","getRefNameColor","refName","undefined","makeContrasting","background","paper","error","start","end","stroke","elided","key","assembleLocString","SVGBackground","width","height","shift","stripAlpha","default","async","renderToSvg","opts","when","initialized","themeName","Wrapper","children","session","allThemes","createRootFn","getRoot","tracks","displayResults","Promise","all","map","display","track","displays","ready","result","renderSvg","staticSlices","centerXY","deg","renderToStaticMarkup","ThemeProvider","createJBrowseTheme","xmlns","xmlnsXlink","viewBox","toString","i","Ruler"],"sourceRoot":""}