view x/static/js/9658.33669a59.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/9658.33669a59.chunk.js","mappings":"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","sources":["../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/components/util.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyDisplay/drawSynteny.ts","../../../plugins/linear-comparative-view/src/LinearSyntenyView/svgcomponents/SVGBackground.tsx","../../../plugins/linear-comparative-view/src/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.tsx"],"sourcesContent":["import React from 'react'\nimport {\n  assembleLocString,\n  doesIntersect2,\n  getSession,\n  isSessionModelWithWidgets,\n  Feature,\n  getContainingTrack,\n  getContainingView,\n} from '@jbrowse/core/util'\n\n// locals\nimport { getId, MAX_COLOR_RANGE } from '../drawSynteny'\nimport { LinearSyntenyDisplayModel } from '../model'\n\ninterface Pos {\n  offsetPx: number\n}\n\nexport interface ClickCoord {\n  clientX: number\n  clientY: number\n  feature: { f: Feature }\n}\n\ninterface FeatPos {\n  p11: Pos\n  p12: Pos\n  p21: Pos\n  p22: Pos\n  f: Feature\n  cigar: string[]\n}\n\nexport function drawMatchSimple({\n  feature,\n  ctx,\n  offsets,\n  cb,\n  height,\n  drawCurves,\n  oobLimit,\n  viewWidth,\n  hideTiny,\n}: {\n  feature: FeatPos\n  ctx: CanvasRenderingContext2D\n  offsets: number[]\n  oobLimit: number\n  viewWidth: number\n  cb: (ctx: CanvasRenderingContext2D) => void\n  height: number\n  drawCurves?: boolean\n  hideTiny?: boolean\n}) {\n  const { p11, p12, p21, p22 } = feature\n\n  const x11 = p11.offsetPx - offsets[0]!\n  const x12 = p12.offsetPx - offsets[0]!\n  const x21 = p21.offsetPx - offsets[1]!\n  const x22 = p22.offsetPx - offsets[1]!\n\n  const l1 = Math.abs(x12 - x11)\n  const l2 = Math.abs(x22 - x21)\n  const y1 = 0\n  const y2 = height\n  const mid = (y2 - y1) / 2\n  const minX = Math.min(x21, x22)\n  const maxX = Math.max(x21, x22)\n\n  if (!doesIntersect2(minX, maxX, -oobLimit, viewWidth + oobLimit)) {\n    return\n  }\n\n  // drawing a line if the results are thin: drawing a line results in much\n  // less pixellation than filling in a thin polygon\n  if (l1 <= 1 && l2 <= 1) {\n    // hideTiny can be used to avoid drawing mouseover for thin lines in this\n    // case\n    if (!hideTiny) {\n      ctx.beginPath()\n      ctx.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx.lineTo(x21, y2)\n      }\n      ctx.stroke()\n    }\n  } else {\n    draw(ctx, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n    cb(ctx)\n  }\n}\n\nexport function draw(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n  drawCurves?: boolean,\n) {\n  if (drawCurves) {\n    drawBezierBox(ctx, x1, x2, y1, x3, x4, y2, mid)\n  } else {\n    drawBox(ctx, x1, x2, y1, x3, x4, y2)\n  }\n}\n\nexport function drawBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n) {\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.lineTo(x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function drawBezierBox(\n  ctx: CanvasRenderingContext2D,\n  x1: number,\n  x2: number,\n  y1: number,\n  x3: number,\n  x4: number,\n  y2: number,\n  mid: number,\n) {\n  const len1 = Math.abs(x1 - x2)\n  const len2 = Math.abs(x1 - x2)\n\n  // heuristic to not draw hourglass inversions with bezier curves when they\n  // are thin and far apart because it results in areas that are not drawn well\n  // demo https://codesandbox.io/s/fast-glitter-q3b1or?file=/src/index.js\n  if (len1 < 5 && len2 < 5 && x2 < x1 && Math.abs(x1 - x3) > 100) {\n    const tmp = x1\n    x1 = x2\n    x2 = tmp\n  }\n  ctx.beginPath()\n  ctx.moveTo(x1, y1)\n  ctx.lineTo(x2, y1)\n  ctx.bezierCurveTo(x2, mid, x3, mid, x3, y2)\n  ctx.lineTo(x4, y2)\n  ctx.bezierCurveTo(x4, mid, x1, mid, x1, y1)\n  ctx.closePath()\n  ctx.fill()\n}\n\nexport function onSynClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n) {\n  const view = getContainingView(model)\n  const track = getContainingTrack(model)\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const x = event.clientX - rect.left\n  const y = event.clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const feat = model.featPositions[id]\n  if (feat) {\n    const { f } = feat\n    model.setClickId(f.id())\n    const session = getSession(model)\n    if (isSessionModelWithWidgets(session)) {\n      session.showWidget(\n        session.addWidget('BaseFeatureWidget', 'baseFeature', {\n          view,\n          track,\n          featureData: f.toJSON(),\n        }),\n      )\n    }\n  }\n  return feat\n}\n\nexport function onSynContextClick(\n  event: React.MouseEvent,\n  model: LinearSyntenyDisplayModel,\n  setAnchorEl: (arg: ClickCoord) => void,\n) {\n  event.preventDefault()\n  const ref1 = model.clickMapCanvas\n  const ref2 = model.cigarClickMapCanvas\n  if (!ref1 || !ref2) {\n    return\n  }\n  const rect = ref1.getBoundingClientRect()\n  const ctx1 = ref1.getContext('2d')\n  const ctx2 = ref2.getContext('2d')\n  if (!ctx1 || !ctx2) {\n    return\n  }\n  const { clientX, clientY } = event\n  const x = clientX - rect.left\n  const y = clientY - rect.top\n  const [r1, g1, b1] = ctx1.getImageData(x, y, 1, 1).data\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / model.numFeats)\n  const id = getId(r1!, g1!, b1!, unitMultiplier)\n  const f = model.featPositions[id]\n  if (f) {\n    model.setClickId(f.f.id())\n    setAnchorEl({ clientX, clientY, feature: f })\n  }\n}\n\nexport function getTooltip(f: Feature, cigarOp?: string, cigarOpLen?: string) {\n  // @ts-expect-error\n  const f1 = f.toJSON() as {\n    refName: string\n    start: number\n    end: number\n    strand?: number\n    assemblyName: string\n    identity?: number\n    name?: string\n    mate: {\n      start: number\n      end: number\n      refName: string\n      name: string\n    }\n  }\n  const f2 = f1.mate\n  const l1 = f1.end - f1.start\n  const l2 = f2.end - f2.start\n  const identity = f1.identity\n  const n1 = f1.name\n  const n2 = f2.name\n  return [\n    `Loc1: ${assembleLocString(f1)}`,\n    `Loc2: ${assembleLocString(f2)}`,\n    `Inverted: ${f1.strand === -1}`,\n    `Query len: ${l1.toLocaleString('en-US')}`,\n    `Target len: ${l2.toLocaleString('en-US')}`,\n    identity ? `Identity: ${identity.toPrecision(2)}` : '',\n    cigarOp ? `CIGAR operator: ${cigarOp}${cigarOpLen}` : '',\n    n1 ? `Name 1: ${n1}` : '',\n    n2 ? `Name 1: ${n2}` : '',\n  ]\n    .filter(f => !!f)\n    .join('<br/>')\n}\n","import { doesIntersect2, getContainingView } from '@jbrowse/core/util'\n// locals\nimport { LinearSyntenyViewModel } from '../LinearSyntenyView/model'\nimport { LinearSyntenyDisplayModel } from './model'\nimport { draw, drawMatchSimple } from './components/util'\n\nexport const MAX_COLOR_RANGE = 255 * 255 * 255 // max color range\n\nfunction makeColor(idx: number) {\n  const r = Math.floor(idx / (255 * 255)) % 255\n  const g = Math.floor(idx / 255) % 255\n  const b = idx % 255\n  return `rgb(${r},${g},${b})`\n}\n\nconst colorMap = {\n  I: '#ff03',\n  N: '#0a03',\n  D: '#00f3',\n  X: 'brown',\n  M: '#f003',\n  '=': '#f003',\n}\n\nconst lineLimit = 3\n\nconst oobLimit = 1600\n\nexport function getId(r: number, g: number, b: number, unitMultiplier: number) {\n  return Math.floor((r * 255 * 255 + g * 255 + b - 1) / unitMultiplier)\n}\n\nexport function drawRef(\n  model: LinearSyntenyDisplayModel,\n  ctx1: CanvasRenderingContext2D,\n  ctx3?: CanvasRenderingContext2D,\n) {\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const drawCIGAR = view.drawCIGAR\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const bpPerPxs = view.views.map(v => v.bpPerPx)\n\n  if (ctx3) {\n    ctx3.imageSmoothingEnabled = false\n  }\n\n  ctx1.beginPath()\n  const featPos = model.featPositions\n  const offsets = view.views.map(v => v.offsetPx)\n\n  const unitMultiplier = Math.floor(MAX_COLOR_RANGE / featPos.length)\n\n  // this loop is optimized to draw many thin lines with a single ctx.stroke\n  // call, a separate loop below draws larger boxes\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22 } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    // drawing a line if the results are thin results in much less pixellation\n    // than filling in a thin polygon\n    if (\n      l1 <= lineLimit &&\n      l2 <= lineLimit &&\n      x21 < width + oobLimit &&\n      x21 > -oobLimit\n    ) {\n      ctx1.moveTo(x11, y1)\n      if (drawCurves) {\n        ctx1.bezierCurveTo(x11, mid, x21, mid, x21, y2)\n      } else {\n        ctx1.lineTo(x21, y2)\n      }\n    }\n  }\n  ctx1.stroke()\n\n  // this loop only draws small lines as a polyline, the polyline calls\n  // ctx.stroke once is much more efficient than calling stroke() many times\n  ctx1.fillStyle = colorMap.M\n  ctx1.strokeStyle = colorMap.M\n  for (const { p11, p12, p21, p22, f, cigar } of featPos) {\n    const x11 = p11.offsetPx - offsets[0]!\n    const x12 = p12.offsetPx - offsets[0]!\n    const x21 = p21.offsetPx - offsets[1]!\n    const x22 = p22.offsetPx - offsets[1]!\n    const l1 = Math.abs(x12 - x11)\n    const l2 = Math.abs(x22 - x21)\n    const minX = Math.min(x21, x22)\n    const maxX = Math.max(x21, x22)\n    const y1 = 0\n    const y2 = height\n    const mid = (y2 - y1) / 2\n\n    if (\n      !(l1 <= lineLimit && l2 <= lineLimit) &&\n      doesIntersect2(minX, maxX, -oobLimit, view.width + oobLimit)\n    ) {\n      const s1 = f.get('strand')\n      const k1 = s1 === -1 ? x12 : x11\n      const k2 = s1 === -1 ? x11 : x12\n\n      // rev1/rev2 flip the direction of the CIGAR drawing in horizontally flipped\n      // modes. somewhat heuristically determined, but tested for\n      const rev1 = k1 < k2 ? 1 : -1\n      const rev2 = (x21 < x22 ? 1 : -1) * s1\n\n      // cx1/cx2 are the current x positions on top and bottom rows\n      let cx1 = k1\n      let cx2 = s1 === -1 ? x22 : x21\n      if (cigar.length && drawCIGAR) {\n        // continuingFlag skips drawing commands on very small CIGAR features\n        let continuingFlag = false\n\n        // px1/px2 are the previous x positions on the top and bottom rows\n        let px1 = 0\n        let px2 = 0\n        const unitMultiplier2 = Math.floor(MAX_COLOR_RANGE / cigar.length)\n        for (let j = 0; j < cigar.length; j += 2) {\n          const idx = j * unitMultiplier2 + 1\n\n          const len = +cigar[j]!\n          const op = cigar[j + 1] as keyof typeof colorMap\n\n          if (!continuingFlag) {\n            px1 = cx1\n            px2 = cx2\n          }\n\n          const d1 = len / bpPerPxs[0]!\n          const d2 = len / bpPerPxs[1]!\n\n          if (op === 'M' || op === '=' || op === 'X') {\n            cx1 += d1 * rev1\n            cx2 += d2 * rev2\n          } else if (op === 'D' || op === 'N') {\n            cx1 += d1 * rev1\n          }\n          // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n          else if (op === 'I') {\n            cx2 += d2 * rev2\n          }\n\n          // check that we are even drawing in view here, e.g. that all\n          // points are not all less than 0 or greater than width\n          if (\n            !(\n              Math.max(px1, px2, cx1, cx2) < 0 ||\n              Math.min(px1, px2, cx1, cx2) > width\n            )\n          ) {\n            // if it is a small feature and not the last element of the\n            // CIGAR (which could skip rendering it entire if we did turn\n            // it on), then turn on continuing flag\n            const isNotLast = j < cigar.length - 2\n            if (\n              Math.abs(cx1 - px1) <= 1 &&\n              Math.abs(cx2 - px2) <= 1 &&\n              isNotLast\n            ) {\n              continuingFlag = true\n            } else {\n              // allow rendering the dominant color when using continuing flag\n              // if the last element of continuing was a large feature, else\n              // just use match\n              ctx1.fillStyle =\n                colorMap[(continuingFlag && d1 > 1) || d2 > 1 ? op : 'M']\n              continuingFlag = false\n\n              draw(ctx1, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              if (ctx3) {\n                ctx3.fillStyle = makeColor(idx)\n                draw(ctx3, px1, cx1, y1, cx2, px2, y2, mid, drawCurves)\n              }\n            }\n          }\n        }\n      } else {\n        draw(ctx1, x11, x12, y1, x22, x21, y2, mid, drawCurves)\n      }\n    }\n  }\n\n  // draw click map\n  const ctx2 = model.clickMapCanvas?.getContext('2d')\n  if (!ctx2) {\n    return\n  }\n  ctx2.imageSmoothingEnabled = false\n  ctx2.clearRect(0, 0, width, height)\n  for (let i = 0; i < featPos.length; i++) {\n    const feature = featPos[i]!\n    const idx = i * unitMultiplier + 1\n    ctx2.fillStyle = makeColor(idx)\n\n    // too many click map false positives with colored stroked lines\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature,\n      ctx: ctx2,\n      drawCurves,\n      offsets,\n      oobLimit,\n      viewWidth: view.width,\n      hideTiny: true,\n      height,\n    })\n  }\n  return undefined\n}\n\nexport function drawMouseoverSynteny(model: LinearSyntenyDisplayModel) {\n  const { clickId, mouseoverId } = model\n  const highResolutionScaling = 1\n  const view = getContainingView(model) as LinearSyntenyViewModel\n  const drawCurves = view.drawCurves\n  const height = view.middleComparativeHeight\n  const width = view.width\n  const ctx = model.mouseoverCanvas?.getContext('2d')\n  const offsets = view.views.map(v => v.offsetPx)\n\n  if (!ctx) {\n    return\n  }\n  ctx.resetTransform()\n  ctx.scale(highResolutionScaling, highResolutionScaling)\n  ctx.clearRect(0, 0, width, height)\n  const feature1 = model.featMap[mouseoverId || '']\n  if (feature1) {\n    ctx.fillStyle = 'rgb(0,0,0,0.1)'\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.fill()\n      },\n      feature: feature1,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n  const feature2 = model.featMap[clickId || '']\n  if (feature2) {\n    ctx.strokeStyle = 'rgb(0, 0, 0, 0.9)'\n\n    drawMatchSimple({\n      cb: ctx => {\n        ctx.stroke()\n      },\n      feature: feature2,\n      ctx,\n      oobLimit,\n      viewWidth: view.width,\n      drawCurves,\n      offsets,\n      height,\n    })\n  }\n}\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 { getRoot } from 'mobx-state-tree'\nimport { when } from 'mobx'\nimport {\n  getSession,\n  getSerializedSvg,\n  max,\n  measureText,\n  ReactRendering,\n  renderToAbstractCanvas,\n  renderToStaticMarkup,\n  sum,\n  getFillProps,\n} from '@jbrowse/core/util'\nimport { getTrackName } from '@jbrowse/core/util/tracks'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport {\n  SVGTracks,\n  SVGRuler,\n  totalHeight,\n} from '@jbrowse/plugin-linear-genome-view'\n\n// locals\nimport SVGBackground from './SVGBackground'\nimport { ExportSvgOptions, LinearSyntenyViewModel } from '../model'\nimport { drawRef } from '../../LinearSyntenyDisplay/drawSynteny'\n\ntype LSV = LinearSyntenyViewModel\n\n// render LGV to SVG\nexport async function renderToSvg(model: LSV, opts: ExportSvgOptions) {\n  await when(() => model.initialized)\n  const {\n    textHeight = 18,\n    headerHeight = 30,\n    rulerHeight = 30,\n    fontSize = 13,\n    trackLabels = 'offset',\n    Wrapper = ({ children }) => children,\n    themeName = 'default',\n  } = opts\n  const session = getSession(model)\n  const themeVar = session.allThemes?.()[themeName]\n  const { width, views, middleComparativeHeight: synH, tracks } = model\n  const shift = 50\n  const offset = headerHeight + rulerHeight\n\n  const { createRootFn } = getRoot<any>(model)\n  const heights = views.map(\n    v => totalHeight(v.tracks, textHeight, trackLabels) + offset,\n  )\n  const totalHeightSvg = sum(heights) + synH + 100\n  const displayResults = await Promise.all(\n    views.map(\n      async view =>\n        ({\n          view,\n          data: await Promise.all(\n            view.tracks.map(async track => {\n              const d = track.displays[0]\n              await when(() => (d.ready !== undefined ? d.ready : true))\n              return {\n                track,\n                result: await d.renderSvg({ ...opts, theme: themeVar }),\n              }\n            }),\n          ),\n        }) as const,\n    ),\n  )\n\n  const renderings = await Promise.all(\n    tracks.map(async track => {\n      const d = track.displays[0]\n      await when(() => (d.ready !== undefined ? d.ready : true))\n      const r = await renderToAbstractCanvas(\n        width,\n        synH,\n        { exportSVG: opts },\n        ctx => {\n          drawRef(d, ctx)\n          return undefined\n        },\n      )\n\n      if ('imageData' in r) {\n        throw new Error('found a canvas in svg export, probably a bug')\n      }\n      if ('canvasRecordedData' in r) {\n        return {\n          html: await getSerializedSvg({\n            ...r,\n            width,\n            height: synH,\n          }),\n        }\n      }\n      return r\n    }),\n  )\n\n  const trackLabelMaxLen =\n    max(\n      views.flatMap(view =>\n        view.tracks.map(t =>\n          measureText(getTrackName(t.configuration, session), fontSize),\n        ),\n      ),\n      0,\n    ) + 40\n  const trackLabelOffset = trackLabels === 'left' ? trackLabelMaxLen : 0\n  const w = width + trackLabelOffset\n  const theme = createJBrowseTheme(themeVar)\n\n  // the xlink namespace is used for rendering <image> tag\n  return renderToStaticMarkup(\n    <ThemeProvider theme={theme}>\n      <Wrapper>\n        <svg\n          width={width}\n          height={totalHeightSvg}\n          xmlns=\"http://www.w3.org/2000/svg\"\n          xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n          viewBox={[0, 0, w + shift * 2, totalHeightSvg].toString()}\n        >\n          <SVGBackground width={w} height={totalHeightSvg} shift={shift} />\n          <g transform={`translate(${shift} ${fontSize})`}>\n            <g transform={`translate(${trackLabelOffset})`}>\n              <text\n                x={0}\n                fontSize={fontSize}\n                {...getFillProps(theme.palette.text.primary)}\n              >\n                {views[0]!.assemblyNames.join(', ')}\n              </text>\n\n              <SVGRuler model={displayResults[0]!.view} fontSize={fontSize} />\n            </g>\n            <SVGTracks\n              textHeight={textHeight}\n              trackLabels={trackLabels}\n              fontSize={fontSize}\n              model={displayResults[0]!.view}\n              displayResults={displayResults[0]!.data}\n              offset={offset}\n              trackLabelOffset={trackLabelOffset}\n            />\n          </g>\n\n          <defs>\n            <clipPath id={'synclip'}>\n              <rect x={0} y={0} width={width} height={synH} />\n            </clipPath>\n          </defs>\n          <g\n            transform={`translate(${shift + trackLabelOffset} ${\n              fontSize + heights[0]!\n            })`}\n            clipPath={'url(#synclip)'}\n          >\n            {renderings.map((r, i) => (\n              /* biome-ignore lint/suspicious/noArrayIndexKey: */\n              <ReactRendering key={i} rendering={r} />\n            ))}\n          </g>\n          <g transform={`translate(${shift} ${fontSize + heights[0]! + synH})`}>\n            <g transform={`translate(${trackLabelOffset})`}>\n              <text\n                x={0}\n                fontSize={fontSize}\n                {...getFillProps(theme.palette.text.primary)}\n              >\n                {views[1]!.assemblyNames.join(', ')}\n              </text>\n              <SVGRuler model={displayResults[1]!.view} fontSize={fontSize} />\n            </g>\n            <SVGTracks\n              textHeight={textHeight}\n              trackLabels={trackLabels}\n              fontSize={fontSize}\n              model={displayResults[1]!.view}\n              displayResults={displayResults[1]!.data}\n              offset={offset}\n              trackLabelOffset={trackLabelOffset}\n            />\n          </g>\n        </svg>\n      </Wrapper>\n    </ThemeProvider>,\n    createRootFn,\n  )\n}\n"],"names":["drawMatchSimple","feature","ctx","offsets","cb","height","drawCurves","oobLimit","viewWidth","hideTiny","p11","p12","p21","p22","x11","offsetPx","x12","x21","x22","l1","Math","abs","l2","y2","mid","minX","min","maxX","max","doesIntersect2","beginPath","moveTo","bezierCurveTo","lineTo","stroke","draw","x1","x2","y1","x3","x4","len1","len2","tmp","closePath","fill","drawBezierBox","drawBox","onSynClick","event","model","view","getContainingView","track","getContainingTrack","ref1","clickMapCanvas","ref2","cigarClickMapCanvas","rect","getBoundingClientRect","ctx1","getContext","ctx2","x","clientX","left","y","clientY","top","r1","g1","b1","getImageData","data","unitMultiplier","floor","MAX_COLOR_RANGE","numFeats","id","getId","feat","featPositions","f","setClickId","session","getSession","isSessionModelWithWidgets","showWidget","addWidget","featureData","toJSON","onSynContextClick","setAnchorEl","preventDefault","getTooltip","cigarOp","cigarOpLen","f1","f2","mate","end","start","identity","n1","name","n2","assembleLocString","strand","toLocaleString","toPrecision","filter","join","makeColor","idx","colorMap","I","N","D","X","M","lineLimit","r","g","b","drawRef","ctx3","drawCIGAR","middleComparativeHeight","width","bpPerPxs","views","map","v","bpPerPx","imageSmoothingEnabled","featPos","length","fillStyle","strokeStyle","cigar","s1","get","k1","rev1","rev2","cx1","cx2","continuingFlag","px1","px2","unitMultiplier2","j","len","op","d1","d2","isNotLast","clearRect","i","drawMouseoverSynteny","clickId","mouseoverId","mouseoverCanvas","resetTransform","scale","feature1","featMap","feature2","SVGBackground","shift","theme","useTheme","React","stripAlpha","palette","background","default","async","renderToSvg","opts","when","initialized","textHeight","headerHeight","rulerHeight","fontSize","trackLabels","Wrapper","children","themeName","themeVar","allThemes","synH","tracks","offset","createRootFn","getRoot","heights","totalHeight","totalHeightSvg","sum","displayResults","Promise","all","d","displays","undefined","ready","result","renderSvg","renderings","renderToAbstractCanvas","exportSVG","Error","html","getSerializedSvg","trackLabelMaxLen","flatMap","t","measureText","getTrackName","configuration","trackLabelOffset","w","createJBrowseTheme","renderToStaticMarkup","ThemeProvider","xmlns","xmlnsXlink","viewBox","toString","transform","_extends","getFillProps","text","primary","assemblyNames","SVGRuler","SVGTracks","clipPath","ReactRendering","key","rendering"],"sourceRoot":""}