comparison x/static/js/1266.cd6d9354.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
comparison
equal deleted inserted replaced
124:137e08517410 125:49f3d3878413
1 {"version":3,"file":"static/js/1266.cd6d9354.chunk.js","mappings":"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","sources":["../../../plugins/dotplot-view/src/DotplotView/components/Axes.tsx","../../../plugins/dotplot-view/src/DotplotView/components/Grid.tsx","../../../plugins/dotplot-view/src/DotplotView/svgcomponents/SVGBackground.tsx","../../../plugins/dotplot-view/src/DotplotView/svgcomponents/SVGDotplotView.tsx"],"sourcesContent":["import React from 'react'\nimport { makeStyles } from 'tss-react/mui'\nimport { observer } from 'mobx-react'\nimport { getSnapshot } from 'mobx-state-tree'\nimport {\n getFillProps,\n getStrokeProps,\n getTickDisplayStr,\n} from '@jbrowse/core/util'\nimport { bpToPx } from '@jbrowse/core/util/Base1DUtils'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { getBlockLabelKeysToHide } from './util'\nimport { DotplotViewModel } from '../model'\n\nconst useStyles = makeStyles()(() => ({\n vtext: {\n gridColumn: '1/2',\n gridRow: '1/2',\n pointerEvents: 'none',\n userSelect: 'none',\n },\n htext: {\n gridColumn: '2/2',\n gridRow: '2/2',\n pointerEvents: 'none',\n userSelect: 'none',\n },\n}))\nexport const HorizontalAxis = observer(function ({\n model,\n}: {\n model: DotplotViewModel\n}) {\n const { viewWidth, borderY } = model\n const { classes } = useStyles()\n return (\n <svg width={viewWidth} height={borderY} className={classes.htext}>\n <HorizontalAxisRaw model={model} />\n </svg>\n )\n})\n\nexport const HorizontalAxisRaw = observer(function ({\n model,\n}: {\n model: DotplotViewModel\n}) {\n const { viewWidth, borderX, borderY, hview, htextRotation, hticks } = model\n const { offsetPx, width, dynamicBlocks, bpPerPx } = hview\n const dblocks = dynamicBlocks.contentBlocks\n const hide = getBlockLabelKeysToHide(dblocks, viewWidth, offsetPx)\n const theme = useTheme()\n const hviewSnap = {\n ...getSnapshot(hview),\n width,\n staticBlocks: hview.staticBlocks,\n }\n\n const ticks = hticks\n .map(\n tick =>\n [\n tick,\n bpToPx({\n refName: tick.refName,\n coord: tick.base,\n self: hviewSnap,\n })?.offsetPx,\n ] as const,\n )\n .filter(f => f[1] !== undefined)\n .map(f => [f[0], f[1]! - offsetPx] as const)\n\n return (\n <>\n {dblocks\n .filter(region => !hide.has(region.key))\n .map(region => {\n const x = region.offsetPx\n const y = 0\n const xoff = Math.floor(x - hview.offsetPx)\n\n return (\n <text\n transform={`rotate(${htextRotation},${xoff},${y})`}\n key={JSON.stringify(region)}\n x={xoff}\n y={y + 1}\n fontSize={11}\n dominantBaseline=\"hanging\"\n textAnchor=\"end\"\n {...getFillProps(theme.palette.text.primary)}\n >\n {region.refName}\n </text>\n )\n })}\n {ticks.map(([tick, x]) =>\n x > 0 && x < width ? (\n <line\n key={`line-${JSON.stringify(tick)}`}\n x1={x}\n x2={x}\n y1={0}\n y2={tick.type === 'major' ? 6 : 4}\n strokeWidth={1}\n {...getFillProps(theme.palette.text.primary)}\n />\n ) : null,\n )}\n {ticks\n .filter(t => t[0].type === 'major')\n .map(([tick, x]) =>\n x > 10 && x < width ? (\n <text\n x={x - 7}\n y={0}\n transform={`rotate(${htextRotation},${x},0)`}\n key={`text-${JSON.stringify(tick)}`}\n fontSize={11}\n dominantBaseline=\"middle\"\n textAnchor=\"end\"\n {...getFillProps(theme.palette.text.primary)}\n >\n {getTickDisplayStr(tick.base + 1, bpPerPx)}\n </text>\n ) : null,\n )}\n <text\n y={borderY - 12}\n x={(viewWidth - borderX) / 2}\n textAnchor=\"middle\"\n fontSize={11}\n dominantBaseline=\"hanging\"\n {...getFillProps(theme.palette.text.primary)}\n >\n {hview.assemblyNames.join(',')}\n </text>\n </>\n )\n})\nexport const VerticalAxis = observer(function ({\n model,\n}: {\n model: DotplotViewModel\n}) {\n const { borderX, viewHeight } = model\n const { classes } = useStyles()\n return (\n <svg className={classes.vtext} width={borderX} height={viewHeight}>\n <VerticalAxisRaw model={model} />\n </svg>\n )\n})\n\nexport const VerticalAxisRaw = observer(function ({\n model,\n}: {\n model: DotplotViewModel\n}) {\n const { viewHeight, borderX, borderY, vview, vtextRotation, vticks } = model\n const { offsetPx, width, dynamicBlocks, bpPerPx } = vview\n const dblocks = dynamicBlocks.contentBlocks\n const hide = getBlockLabelKeysToHide(dblocks, viewHeight, offsetPx)\n const theme = useTheme()\n const vviewSnap = {\n ...getSnapshot(vview),\n width,\n staticBlocks: vview.staticBlocks,\n }\n const ticks = vticks\n .map(\n tick =>\n [\n tick,\n bpToPx({\n refName: tick.refName,\n coord: tick.base,\n self: vviewSnap,\n })?.offsetPx,\n ] as const,\n )\n .filter(f => f[1] !== undefined)\n .map(f => [f[0], f[1]! - offsetPx] as const)\n\n return (\n <>\n {dblocks\n .filter(region => !hide.has(region.key))\n .map(region => {\n const y = region.offsetPx\n const x = borderX\n const yoff = Math.floor(viewHeight - y + offsetPx)\n\n return (\n <text\n transform={`rotate(${vtextRotation},${x},${y})`}\n key={JSON.stringify(region)}\n x={x}\n y={yoff}\n fontSize={11}\n textAnchor=\"end\"\n {...getFillProps(theme.palette.text.primary)}\n >\n {region.refName}\n </text>\n )\n })}\n {ticks.map(([tick, y]) =>\n y > 0 ? (\n <line\n key={`line-${JSON.stringify(tick)}`}\n y1={viewHeight - y}\n y2={viewHeight - y}\n x1={borderX}\n x2={borderX - (tick.type === 'major' ? 6 : 4)}\n strokeWidth={1}\n {...getStrokeProps(theme.palette.grey[400])}\n />\n ) : null,\n )}\n {ticks\n .filter(t => t[0].type === 'major')\n .map(([tick, y]) =>\n y > 10 && y < viewHeight ? (\n <text\n y={viewHeight - y - 3}\n x={borderX - 7}\n key={`text-${JSON.stringify(tick)}`}\n textAnchor=\"end\"\n dominantBaseline=\"hanging\"\n fontSize={11}\n {...getFillProps(theme.palette.text.primary)}\n >\n {getTickDisplayStr(tick.base + 1, bpPerPx)}\n </text>\n ) : null,\n )}\n <text\n y={(viewHeight - borderY) / 2}\n x={12}\n transform={`rotate(-90,12,${(viewHeight - borderY) / 2})`}\n textAnchor=\"middle\"\n fontSize={11}\n {...getFillProps(theme.palette.text.primary)}\n >\n {vview.assemblyNames.join(',')}\n </text>\n </>\n )\n})\n","import React from 'react'\nimport { observer } from 'mobx-react'\nimport { useTheme } from '@mui/material'\n\n// locals\nimport { DotplotViewModel } from '../model'\nimport { getFillProps, getStrokeProps } from '@jbrowse/core/util'\n\nexport const GridRaw = observer(function ({\n model,\n children,\n}: {\n model: DotplotViewModel\n children?: React.ReactNode\n}) {\n const { viewWidth, viewHeight, hview, vview } = model\n const hblocks = hview.dynamicBlocks.contentBlocks\n const vblocks = vview.dynamicBlocks.contentBlocks\n if (!hblocks.length || !vblocks.length) {\n return null\n }\n const htop = hview.displayedRegionsTotalPx - hview.offsetPx\n const vtop = vview.displayedRegionsTotalPx - vview.offsetPx\n const hbottom = hblocks[0]!.offsetPx - hview.offsetPx\n const vbottom = vblocks[0]!.offsetPx - vview.offsetPx\n const theme = useTheme()\n const stroke = theme.palette.divider\n\n // Uses math.max/min avoid making very large SVG rect offscreen element,\n // which can sometimes fail to draw\n const rx = Math.max(hbottom, 0)\n const ry = Math.max(viewHeight - vtop, 0)\n const w = Math.min(htop - hbottom, viewWidth)\n const h = Math.min(viewHeight - vbottom - ry, viewHeight)\n\n let lastx = Number.POSITIVE_INFINITY\n let lasty = Number.POSITIVE_INFINITY\n return (\n <>\n <rect\n x={rx}\n y={ry}\n width={w}\n height={h}\n {...getFillProps(theme.palette.background.default)}\n />\n <g>\n {hblocks.map(region => {\n const x = region.offsetPx - hview.offsetPx\n const render = Math.floor(x) !== Math.floor(lastx)\n if (render) {\n lastx = x\n }\n return render ? (\n <line\n key={JSON.stringify(region)}\n x1={x}\n y1={0}\n x2={x}\n y2={viewHeight}\n {...getStrokeProps(stroke)}\n />\n ) : null\n })}\n {vblocks.map(region => {\n const y = viewHeight - (region.offsetPx - vview.offsetPx)\n const render = Math.floor(y) !== Math.floor(lasty)\n if (render) {\n lasty = y\n }\n return render ? (\n <line\n key={JSON.stringify(region)}\n x1={0}\n y1={y}\n x2={viewWidth}\n y2={y}\n {...getStrokeProps(stroke)}\n />\n ) : null\n })}\n <line\n x1={htop}\n y1={0}\n x2={htop}\n y2={viewHeight}\n {...getStrokeProps(stroke)}\n />\n <line\n x1={0}\n y1={viewHeight - vtop}\n x2={viewWidth}\n y2={viewHeight - vtop}\n {...getStrokeProps(stroke)}\n />\n </g>\n {children}\n </>\n )\n})\n\nexport default function Grid({\n model,\n children,\n}: {\n model: DotplotViewModel\n children?: React.ReactNode\n}) {\n const { viewWidth, viewHeight } = model\n return (\n <svg\n width={viewWidth}\n height={viewHeight}\n style={{ background: 'rgba(0,0,0,0.12)' }}\n >\n <GridRaw model={model}>{children}</GridRaw>\n </svg>\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}: {\n width: number\n height: number\n}) {\n const theme = useTheme()\n return (\n <rect\n x={0}\n y={0}\n width={width}\n height={height}\n fill={stripAlpha(theme.palette.background.default)}\n />\n )\n}\n","import React from 'react'\nimport { when } from 'mobx'\nimport { getSession, renderToStaticMarkup } from '@jbrowse/core/util'\nimport { ThemeProvider } from '@mui/material'\nimport { createJBrowseTheme } from '@jbrowse/core/ui'\nimport { getRoot } from 'mobx-state-tree'\n\n// locals\nimport { DotplotViewModel, ExportSvgOptions } from '../model'\nimport { GridRaw } from '../components/Grid'\nimport { HorizontalAxisRaw, VerticalAxisRaw } from '../components/Axes'\nimport SVGBackground from './SVGBackground'\n\n// render LGV to SVG\nexport async function renderToSvg(\n model: DotplotViewModel,\n opts: ExportSvgOptions,\n) {\n await when(() => model.initialized)\n const { themeName = 'default', Wrapper = ({ children }) => children } = opts\n\n const { createRootFn } = getRoot<any>(model)\n const session = getSession(model)\n const theme = session.allThemes?.()[themeName]\n const { width, borderX, viewWidth, viewHeight, 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 const w = width + shift * 2\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, w, height].toString()}\n >\n <SVGBackground width={w} height={height} />\n <VerticalAxisRaw model={model} />\n <g transform={`translate(${borderX} 0)`}>\n <GridRaw model={model} />\n <defs>\n <clipPath id=\"clip-ruler\">\n <rect x={0} y={0} width={viewWidth} height={viewHeight} />\n </clipPath>\n </defs>\n <g clipPath=\"url(#clip-ruler)\">\n {displayResults.map(({ result }, i) => (\n /* biome-ignore lint/suspicious/noArrayIndexKey: */\n <g key={i}>{result}</g>\n ))}\n </g>\n </g>\n <g transform={`translate(${borderX} ${viewHeight})`}>\n <HorizontalAxisRaw model={model} />\n </g>\n </svg>\n </Wrapper>\n </ThemeProvider>,\n createRootFn,\n )\n}\n"],"names":["useStyles","makeStyles","vtext","gridColumn","gridRow","pointerEvents","userSelect","htext","HorizontalAxis","observer","model","viewWidth","borderY","classes","React","width","height","className","HorizontalAxisRaw","borderX","hview","htextRotation","hticks","offsetPx","dynamicBlocks","bpPerPx","dblocks","contentBlocks","hide","getBlockLabelKeysToHide","theme","useTheme","hviewSnap","getSnapshot","staticBlocks","ticks","map","tick","bpToPx","refName","coord","base","self","filter","f","undefined","region","has","key","x","xoff","Math","floor","_extends","transform","JSON","stringify","y","fontSize","dominantBaseline","textAnchor","getFillProps","palette","text","primary","x1","x2","y1","y2","type","strokeWidth","t","getTickDisplayStr","assemblyNames","join","VerticalAxis","viewHeight","VerticalAxisRaw","vview","vtextRotation","vticks","vviewSnap","yoff","getStrokeProps","grey","GridRaw","children","hblocks","vblocks","length","htop","displayedRegionsTotalPx","vtop","hbottom","vbottom","stroke","divider","rx","max","ry","w","min","h","lastx","Number","POSITIVE_INFINITY","lasty","background","default","render","Grid","style","SVGBackground","fill","stripAlpha","async","renderToSvg","opts","when","initialized","themeName","Wrapper","createRootFn","getRoot","session","getSession","allThemes","tracks","displayResults","Promise","all","display","track","displays","ready","result","renderSvg","shift","renderToStaticMarkup","ThemeProvider","createJBrowseTheme","xmlns","xmlnsXlink","viewBox","toString","id","clipPath","i"],"sourceRoot":""}