jbrowse-plugin-graphgenomeviewer 7.5.0 → 7.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/dist/chunks/{GbzBaseSyntenyAdapter-4KVWVUN6.js → GbzBaseSyntenyAdapter-3PVPTKNW.js} +2 -2
  2. package/dist/chunks/{GbzBaseSyntenyAdapter-4KVWVUN6.js.map → GbzBaseSyntenyAdapter-3PVPTKNW.js.map} +1 -1
  3. package/dist/chunks/{GraphGenomeView-KI4FQ5A7.js → GraphGenomeView-GQW4YC23.js} +2 -2
  4. package/dist/chunks/{GraphTrackSettingsDialog-UQNMDXTE.js → GraphTrackSettingsDialog-ARWCWJW4.js} +2 -2
  5. package/dist/chunks/{HighlightColorDialog-D4RCUCUF.js → HighlightColorDialog-PD3KMF2U.js} +2 -2
  6. package/dist/chunks/{LinearGraphDisplay-RPZUZSM2.js → LinearGraphDisplay-QNS4EAL3.js} +2 -2
  7. package/dist/chunks/{MinigraphBubbleAdapter-TJYI7KEN.js → MinigraphBubbleAdapter-L6JSQIOL.js} +2 -2
  8. package/dist/chunks/{RgfaTabixAdapter-5ZMJLFZP.js → RgfaTabixAdapter-5HCAJ7QI.js} +2 -2
  9. package/dist/chunks/{WalkFormsAdapter-CAJOWOEX.js → WalkFormsAdapter-NX36GP35.js} +2 -2
  10. package/dist/chunks/{WalkTabixSyntenyAdapter-VI3KA2GX.js → WalkTabixSyntenyAdapter-JFNFX3JP.js} +2 -2
  11. package/dist/chunks/{chunk-POUV7OPY.js → chunk-2CPD5NX2.js} +2 -2
  12. package/dist/chunks/{chunk-POUV7OPY.js.map → chunk-2CPD5NX2.js.map} +1 -1
  13. package/dist/chunks/chunk-3AC33AXB.js +2 -0
  14. package/dist/chunks/{chunk-HHMJNAA3.js → chunk-4PHM6JNU.js} +2 -2
  15. package/dist/chunks/{chunk-OZEKEYT3.js → chunk-5LFPNQWH.js} +2 -2
  16. package/dist/chunks/{chunk-OZEKEYT3.js.map → chunk-5LFPNQWH.js.map} +1 -1
  17. package/dist/chunks/{chunk-22ANI2KL.js → chunk-CNEUOM7X.js} +2 -2
  18. package/dist/chunks/{chunk-22ANI2KL.js.map → chunk-CNEUOM7X.js.map} +1 -1
  19. package/dist/chunks/{chunk-GYY6LF5L.js → chunk-DOC7QIE2.js} +1 -1
  20. package/dist/chunks/{chunk-GYY6LF5L.js.map → chunk-DOC7QIE2.js.map} +1 -1
  21. package/dist/chunks/{chunk-DEWZOJSC.js → chunk-G4OPM6G7.js} +2 -2
  22. package/dist/chunks/{chunk-DEWZOJSC.js.map → chunk-G4OPM6G7.js.map} +1 -1
  23. package/dist/chunks/{chunk-4NIWMRKH.js → chunk-GRLNDNX4.js} +2 -2
  24. package/dist/chunks/{chunk-4NIWMRKH.js.map → chunk-GRLNDNX4.js.map} +1 -1
  25. package/dist/chunks/{chunk-Z3IKZAYC.js → chunk-JYYF3U2H.js} +1 -1
  26. package/dist/chunks/{chunk-Z3IKZAYC.js.map → chunk-JYYF3U2H.js.map} +1 -1
  27. package/dist/chunks/{chunk-BCOXRUNQ.js → chunk-KDXVLEHS.js} +3 -3
  28. package/dist/chunks/{chunk-BCOXRUNQ.js.map → chunk-KDXVLEHS.js.map} +2 -2
  29. package/dist/chunks/{chunk-42KD4AVY.js → chunk-LGV6BTOY.js} +2 -2
  30. package/dist/chunks/{chunk-42KD4AVY.js.map → chunk-LGV6BTOY.js.map} +1 -1
  31. package/dist/chunks/{chunk-XZGYJ3JC.js → chunk-LJ7O3736.js} +1 -1
  32. package/dist/chunks/{chunk-XZGYJ3JC.js.map → chunk-LJ7O3736.js.map} +1 -1
  33. package/dist/chunks/{chunk-LTNFVL2F.js → chunk-OQHN2GWX.js} +2 -2
  34. package/dist/chunks/{chunk-KOC23YNN.js → chunk-PTDOYJFH.js} +2 -2
  35. package/dist/chunks/chunk-SGP63UMC.js +2 -0
  36. package/dist/chunks/chunk-SGP63UMC.js.map +7 -0
  37. package/dist/chunks/{chunk-HTTONSO4.js → chunk-SI5VLKVN.js} +2 -2
  38. package/dist/chunks/{chunk-HTTONSO4.js.map → chunk-SI5VLKVN.js.map} +1 -1
  39. package/dist/chunks/{chunk-FCMXEFJA.js → chunk-TWPUVVYH.js} +1 -1
  40. package/dist/chunks/{chunk-FCMXEFJA.js.map → chunk-TWPUVVYH.js.map} +1 -1
  41. package/dist/chunks/{chunk-ZV5FNOHS.js → chunk-XF6GU4GK.js} +2 -2
  42. package/dist/chunks/{chunk-K4JL57NR.js → chunk-XSDGE4RF.js} +2 -2
  43. package/dist/chunks/{chunk-SPL3UO2D.js → chunk-ZFJGNGIB.js} +2 -2
  44. package/dist/chunks/{chunk-SPL3UO2D.js.map → chunk-ZFJGNGIB.js.map} +1 -1
  45. package/dist/chunks/chunk-ZI7RFIA2.js +4 -0
  46. package/dist/chunks/chunk-ZI7RFIA2.js.map +7 -0
  47. package/dist/chunks/{renderSvg-3PPAEMBT.js → renderSvg-NIWFCY3U.js} +2 -2
  48. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +4 -4
  49. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  50. package/package.json +2 -2
  51. package/src/GraphGenomeView/model.test.ts +15 -3
  52. package/src/GraphGenomeView/nodeColor.test.ts +27 -1
  53. package/src/GraphGenomeView/nodeColor.ts +38 -29
  54. package/src/GraphGenomeView/pane/graphViews.ts +6 -4
  55. package/src/GraphGenomeView/pane/settingActions.ts +3 -1
  56. package/src/GraphGenomeView/retiredNodeColor.test.ts +46 -0
  57. package/src/GraphGenomeView/retiredNodeColor.ts +76 -0
  58. package/src/GraphGenomeView/viewModel.ts +12 -3
  59. package/src/LinearGraphDisplay/LinearGraphDisplay.test.ts +62 -5
  60. package/src/LinearGraphDisplay/configSchema.ts +14 -7
  61. package/src/LinearGraphDisplay/model.ts +4 -2
  62. package/src/version.ts +1 -1
  63. package/dist/chunks/chunk-DAPI7M4M.js +0 -4
  64. package/dist/chunks/chunk-DAPI7M4M.js.map +0 -7
  65. package/dist/chunks/chunk-UR2MJJUP.js +0 -2
  66. package/dist/chunks/chunk-VTMJQFN5.js +0 -2
  67. package/dist/chunks/chunk-VTMJQFN5.js.map +0 -7
  68. /package/dist/chunks/{GraphGenomeView-KI4FQ5A7.js.map → GraphGenomeView-GQW4YC23.js.map} +0 -0
  69. /package/dist/chunks/{GraphTrackSettingsDialog-UQNMDXTE.js.map → GraphTrackSettingsDialog-ARWCWJW4.js.map} +0 -0
  70. /package/dist/chunks/{HighlightColorDialog-D4RCUCUF.js.map → HighlightColorDialog-PD3KMF2U.js.map} +0 -0
  71. /package/dist/chunks/{LinearGraphDisplay-RPZUZSM2.js.map → LinearGraphDisplay-QNS4EAL3.js.map} +0 -0
  72. /package/dist/chunks/{MinigraphBubbleAdapter-TJYI7KEN.js.map → MinigraphBubbleAdapter-L6JSQIOL.js.map} +0 -0
  73. /package/dist/chunks/{RgfaTabixAdapter-5ZMJLFZP.js.map → RgfaTabixAdapter-5HCAJ7QI.js.map} +0 -0
  74. /package/dist/chunks/{WalkFormsAdapter-CAJOWOEX.js.map → WalkFormsAdapter-NX36GP35.js.map} +0 -0
  75. /package/dist/chunks/{WalkTabixSyntenyAdapter-VI3KA2GX.js.map → WalkTabixSyntenyAdapter-JFNFX3JP.js.map} +0 -0
  76. /package/dist/chunks/{chunk-UR2MJJUP.js.map → chunk-3AC33AXB.js.map} +0 -0
  77. /package/dist/chunks/{chunk-HHMJNAA3.js.map → chunk-4PHM6JNU.js.map} +0 -0
  78. /package/dist/chunks/{chunk-LTNFVL2F.js.map → chunk-OQHN2GWX.js.map} +0 -0
  79. /package/dist/chunks/{chunk-KOC23YNN.js.map → chunk-PTDOYJFH.js.map} +0 -0
  80. /package/dist/chunks/{chunk-ZV5FNOHS.js.map → chunk-XF6GU4GK.js.map} +0 -0
  81. /package/dist/chunks/{chunk-K4JL57NR.js.map → chunk-XSDGE4RF.js.map} +0 -0
  82. /package/dist/chunks/{renderSvg-3PPAEMBT.js.map → renderSvg-NIWFCY3U.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-K5SIJGAE.js", "../../src/GraphGenomeView/components/LabelledSelect.tsx", "../../src/GraphGenomeView/components/GraphSettingsDialog.tsx"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-K5SIJGAE.js", "../../src/GraphGenomeView/components/LabelledSelect.tsx", "../../src/GraphGenomeView/components/GraphSettingsDialog.tsx"],
4
4
  "sourcesContent": ["// src/layoutQualities.ts\nvar LAYOUT_QUALITIES = [\n { value: 0, label: \"Fastest\" },\n { value: 1, label: \"Fast\" },\n { value: 2, label: \"Default\" },\n { value: 3, label: \"Fine\" },\n { value: 4, label: \"Best\" }\n];\n\nexport {\n LAYOUT_QUALITIES\n};\n", "import { useId } from 'react'\n\nimport {\n FormControl,\n InputLabel,\n ListItemText,\n MenuItem,\n Select,\n} from '@mui/material'\n\nimport type { SxProps } from '@mui/material'\n\ninterface SelectOption<T extends string> {\n value: T\n label: string\n // an option's tooltip, and the reason under a disabled one, whose tooltip\n // cannot open\n description?: string\n disabled?: boolean\n}\n\n// One dropdown with its label tied to it, so a screen reader names the combobox\nexport default function LabelledSelect<T extends string>({\n label,\n value,\n options,\n testId,\n size,\n sx,\n disabled,\n title,\n shown,\n onChange,\n}: {\n label: string\n value: T\n options: readonly SelectOption<T>[]\n testId?: string\n size?: 'small' | 'medium'\n sx?: SxProps\n disabled?: boolean\n title?: string\n // what the closed select reads, when not the picked option's label\n shown?: string\n onChange: (value: T) => void\n}) {\n const labelId = useId()\n return (\n <FormControl size={size} sx={sx} disabled={disabled} title={title}>\n <InputLabel id={labelId} shrink>\n {label}\n </InputLabel>\n <Select\n labelId={labelId}\n value={value}\n label={label}\n notched\n displayEmpty\n data-testid={testId}\n renderValue={picked =>\n shown ?? options.find(o => o.value === picked)?.label ?? picked\n }\n onChange={e => {\n onChange(e.target.value as T)\n }}\n >\n {options.map(o => (\n <MenuItem\n key={o.value}\n value={o.value}\n disabled={o.disabled}\n title={o.disabled ? undefined : o.description}\n >\n <ListItemText\n primary={o.label}\n secondary={o.disabled ? o.description : undefined}\n />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )\n}\n", "import type { ReactNode } from 'react'\n\nimport { BUBBLE_SPREADS } from '@jbrowse/bandage-core/bubbleSpreads'\nimport { EDGE_WIDTHS } from '@jbrowse/bandage-core/edgeWidths'\nimport { LAYOUT_ENGINES } from '@jbrowse/bandage-core/layoutEngines'\nimport { LAYOUT_QUALITIES } from '@jbrowse/bandage-core/layoutQualities'\nimport { NODE_WIDTHS } from '@jbrowse/bandage-core/nodeWidths'\nimport { MAX_PATH_COLORS } from '@jbrowse/bandage-core/pathColors'\nimport { Dialog } from '@jbrowse/core/ui'\nimport {\n Button,\n DialogActions,\n DialogContent,\n FormControlLabel,\n Switch,\n Typography,\n} from '@mui/material'\nimport { observer } from 'mobx-react'\nimport { makeStyles } from 'tss-react/mui'\n\nimport LabelledSelect from './LabelledSelect'\nimport { pickGeneTrack } from '../genes/geneFeatures'\nimport { pickRepeatTrack } from '../repeats/repeatFeatures'\n\nimport type { GraphPaneModel } from '../model'\n\nconst useStyles = makeStyles()({\n section: {\n marginBottom: 24,\n },\n group: {\n marginBottom: 16,\n },\n heading: {\n marginBottom: 8,\n },\n})\n\nfunction Caption({\n warn = false,\n children,\n}: {\n warn?: boolean\n children: ReactNode\n}) {\n return (\n <Typography\n variant=\"caption\"\n component=\"div\"\n color={warn ? 'warning.main' : 'text.secondary'}\n >\n {children}\n </Typography>\n )\n}\n\nfunction Group({ title, children }: { title: string; children: ReactNode }) {\n const { classes } = useStyles()\n return (\n <section className={classes.group}>\n <Typography variant=\"subtitle1\" className={classes.heading}>\n {title}\n </Typography>\n {children}\n </section>\n )\n}\n\nfunction SettingSwitch({\n label,\n checked,\n onChange,\n children,\n}: {\n label: string\n checked: boolean\n onChange: (checked: boolean) => void\n children?: ReactNode\n}) {\n const { classes } = useStyles()\n return (\n <div className={classes.section}>\n <FormControlLabel\n control={\n <Switch\n checked={checked}\n onChange={e => {\n onChange(e.target.checked)\n }}\n />\n }\n label={label}\n />\n {children}\n </div>\n )\n}\n\n// one dropdown setting, at the dialog's width, and its caption\nfunction SettingSelect<T extends string>({\n children,\n ...props\n}: Omit<Parameters<typeof LabelledSelect<T>>[0], 'size' | 'sx'> & {\n children?: ReactNode\n}) {\n const { classes } = useStyles()\n return (\n <div className={classes.section}>\n <LabelledSelect sx={{ minWidth: 200 }} {...props} />\n {children}\n </div>\n )\n}\n\nconst NODE_LIMITS = [5000, 20_000, 50_000, 100_000]\n\n// the presets, with a limit a session states among them\nfunction nodeLimitOptions(current: number) {\n return [...new Set([...NODE_LIMITS, current])]\n .sort((a, b) => a - b)\n .map(limit => ({ value: String(limit), label: limit.toLocaleString() }))\n}\n\ninterface NamedTrack {\n trackId: string\n name: string\n}\n\n// '' leaves the pick to the heuristic, so a session can go back to it\nfunction TrackPickSetting({\n label,\n choices,\n stored,\n auto,\n testId,\n onChange,\n children,\n}: {\n label: string\n choices: NamedTrack[]\n stored: string\n auto: NamedTrack | undefined\n testId: string\n onChange: (trackId: string) => void\n children: ReactNode\n}) {\n return choices.length > 0 ? (\n <SettingSelect\n label={label}\n value={choices.some(t => t.trackId === stored) ? stored : ''}\n options={[\n { value: '', label: `Automatic (${auto?.name ?? 'none'})` },\n ...choices.map(({ trackId, name }) => ({\n value: trackId,\n label: name,\n })),\n ]}\n testId={testId}\n onChange={onChange}\n >\n {children}\n </SettingSelect>\n ) : null\n}\n\n// Toggles the menus already offer (halos, genes, color) stay out of here.\n// `children` is the host's own part of the subgraph group.\nconst GraphSettingsDialog = observer(function GraphSettingsDialog(props: {\n model: GraphPaneModel\n onClose: () => void\n children?: ReactNode\n}) {\n const { model, onClose, children } = props\n const { classes } = useStyles()\n\n return (\n <Dialog open onClose={onClose} title=\"Graph settings\">\n <DialogContent>\n <Group title=\"Subgraph\">\n {children}\n <SettingSelect\n label=\"Node limit\"\n value={String(model.maxGraphNodes)}\n options={nodeLimitOptions(model.maxGraphNodes)}\n testId=\"graph-node-limit-select\"\n onChange={limit => {\n model.setMaxGraphNodes(Number(limit))\n }}\n >\n <Caption>\n The most nodes a layout draws; past it the graph is declined. Walk\n rows take no limit.\n </Caption>\n </SettingSelect>\n </Group>\n\n <Group title=\"Drawing\">\n {model.anchorPaths.length > 1 ? (\n <SettingSelect\n label=\"Reference path\"\n value={model.activeReferencePath ?? ''}\n options={model.anchorPaths.map(({ name }) => ({\n value: name,\n label: name,\n }))}\n testId=\"graph-reference-path-select\"\n onChange={name => {\n model.setReferencePath(name)\n void model.recomputeLayout()\n }}\n >\n <Caption>The path the anchored layouts place x along</Caption>\n </SettingSelect>\n ) : null}\n\n <SettingSelect\n label=\"Node width\"\n value={model.nodeWidth}\n options={NODE_WIDTHS}\n testId=\"graph-node-width-select\"\n onChange={width => {\n model.setNodeWidth(width)\n }}\n >\n <Caption>\n Depth as width. In a cut with walks, depth is how many haplotypes\n carry the node.\n </Caption>\n </SettingSelect>\n\n <SettingSelect\n label=\"Link width\"\n value={model.linkWidth}\n options={EDGE_WIDTHS}\n testId=\"graph-link-width-select\"\n onChange={links => {\n model.setLinkWidth(links)\n }}\n >\n <Caption>\n Walks as width, so a common route reads heavy and a private one\n thin.\n </Caption>\n </SettingSelect>\n\n <SettingSwitch\n label=\"Draw paths\"\n checked={model.drawPaths}\n onChange={draw => {\n model.setLayer('paths', draw)\n }}\n >\n <Caption>\n Color each node by the paths through it, one lane per path\n </Caption>\n {model.drawPaths && !model.effectiveDrawPaths ? (\n <Caption warn>\n {model.pathCount > MAX_PATH_COLORS\n ? `Off: ${model.pathCount.toLocaleString()} paths is past the ${MAX_PATH_COLORS} this can tell apart`\n : 'Off: this graph states no paths'}\n </Caption>\n ) : null}\n </SettingSwitch>\n\n <TrackPickSetting\n label=\"Gene track\"\n choices={model.geneTrackChoices}\n stored={model.geneTrackId}\n auto={pickGeneTrack(model.geneTrackChoices, '')}\n testId=\"graph-gene-track-select\"\n onChange={trackId => {\n model.setGeneTrackId(trackId)\n }}\n >\n <Caption>Where genes on the backbone come from</Caption>\n </TrackPickSetting>\n\n <TrackPickSetting\n label=\"Repeat track\"\n choices={model.repeatTrackChoices}\n stored={model.repeatTrackId}\n auto={pickRepeatTrack(model.repeatTrackChoices, '')}\n testId=\"graph-repeat-track-select\"\n onChange={trackId => {\n model.setRepeatTrackId(trackId)\n }}\n >\n <Caption>\n The tandem repeat annotation walk rows measure and tile by\n </Caption>\n </TrackPickSetting>\n </Group>\n\n <Group title=\"Force-directed layout\">\n {model.hasGraph && !model.usesLayoutEngine ? (\n <div className={classes.section}>\n <Caption warn>\n No effect on the current layout until Layout is Force-directed\n </Caption>\n </div>\n ) : null}\n\n <SettingSelect\n label=\"Engine\"\n value={model.layoutEngine}\n options={LAYOUT_ENGINES}\n testId=\"graph-layout-engine-select\"\n onChange={engine => {\n model.setLayoutEngine(engine)\n }}\n >\n <Caption>\n Stress keeps the reference straight, so a zoom keeps the picture;\n FMMM lets the whole graph settle.\n </Caption>\n </SettingSelect>\n\n <SettingSelect\n label=\"Layout quality\"\n value={String(model.layoutQuality)}\n options={LAYOUT_QUALITIES.map(q => ({\n value: String(q.value),\n label: q.label,\n }))}\n testId=\"graph-layout-quality-select\"\n onChange={quality => {\n model.setLayoutQuality(Number(quality))\n }}\n >\n <Caption>\n The engine&apos;s iteration budget; higher is slower\n </Caption>\n </SettingSelect>\n\n <SettingSelect\n label=\"Bubble spread\"\n value={model.bubbleSpread}\n options={BUBBLE_SPREADS}\n testId=\"graph-bubble-spread-select\"\n onChange={spread => {\n model.setBubbleSpread(spread)\n }}\n >\n <Caption>How far the layout opens a bubble</Caption>\n </SettingSelect>\n\n {model.layoutEngine === 'stress' ? null : (\n <SettingSwitch\n label=\"Linear layout\"\n checked={model.linearLayout}\n onChange={linear => {\n model.setLinearLayout(linear)\n }}\n >\n <Caption>Keeps a chain of nodes on one line where it can</Caption>\n </SettingSwitch>\n )}\n </Group>\n </DialogContent>\n\n <DialogActions>\n <Button variant=\"contained\" color=\"primary\" onClick={onClose}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n})\n\nexport default GraphSettingsDialog\n"],
5
5
  "mappings": "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",
6
6
  "names": ["LAYOUT_QUALITIES", "LabelledSelect", "label", "value", "options", "testId", "size", "sx", "disabled", "title", "shown", "onChange", "labelId", "useId", "jsxs", "FormControl", "jsx", "InputLabel", "Select", "picked", "o", "e", "MenuItem", "ListItemText", "useStyles", "makeStyles", "Caption", "warn", "children", "jsx", "Typography", "Group", "title", "classes", "jsxs", "SettingSwitch", "label", "checked", "onChange", "FormControlLabel", "Switch", "e", "SettingSelect", "props", "LabelledSelect", "NODE_LIMITS", "nodeLimitOptions", "current", "a", "b", "limit", "TrackPickSetting", "choices", "stored", "auto", "testId", "t", "trackId", "name", "GraphSettingsDialog", "observer", "model", "onClose", "Dialog", "DialogContent", "NODE_WIDTHS", "width", "EDGE_WIDTHS", "links", "draw", "MAX_PATH_COLORS", "pickGeneTrack", "pickRepeatTrack", "LAYOUT_ENGINES", "engine", "LAYOUT_QUALITIES", "q", "quality", "BUBBLE_SPREADS", "spread", "linear", "DialogActions", "Button", "GraphSettingsDialog_default"]
@@ -1,2 +1,2 @@
1
- import{b as d,g as l}from"./chunk-SPL3UO2D.js";import{a as m,b as u,c as p,d as f}from"./chunk-FCMXEFJA.js";var v=new Map([["hg38","GRCh38"],["hg19","GRCh37"],["hs1","CHM13"],["t2t-chm13","CHM13"],["chm13v2","CHM13"]]);function M(n){return v.get(n.toLowerCase())}function h(n){let t=n.includes("#")?m(n):void 0;return t===void 0||u(t)?void 0:t}function N(n){return p(n)??m(n)}function b(n){let t=new Set((n.anchorPaths??[]).map(e=>e.name));for(let e of n.nodes)e.stable&&t.add(e.stable.refName);let s=new Map;for(let e of t){let o=h(e);o!==void 0&&d(s,o,N(e))}return s}function g(n,t){let s=new Set(n.map(i=>h(i.refName))),[e]=s;if(s.size!==1||e===void 0)return{contigs:n,prefixes:[],named:!1};let o=new Set(n.map(i=>N(i.refName))),c=[...t.get(e)??[]].every(i=>o.has(i)),a=new Set(n.map(i=>p(i.refName))),[r]=a;return{contigs:n,prefixes:[...c?[e]:[],...a.size===1&&r?[r]:[]],named:!0}}function S(n){let t=new Map;for(let e of n.nodes)if(l(e)){let{refName:o,start:c}=e.stable,a=c+e.length,r=t.get(o);r?(r.start=Math.min(r.start,c),r.end=Math.max(r.end,a)):t.set(o,{refName:o,contig:f(o),start:c,end:a})}let s=[...t.values()];return s.length?g(s,b(n)):void 0}function B(n,t){let s=S(n),e=t?f(t.refName):s?.contigs.length===1?s.contigs[0].contig:void 0,o=s?.named?m(s.contigs[0].refName):void 0;return e&&(o?`${o} ${e}`:e)}function w(n,t){let s=a=>[a.name,...a.aliases??[]],e=a=>r=>s(r).some(i=>i.toLowerCase()===a.toLowerCase()),o=[...n?.prefixes??[]].reverse(),c=n?.prefixes.find(a=>!a.includes("#"))?.toLowerCase();for(let a of o){let r=t.find(e(a));if(r)return r}return c===void 0?void 0:t.find(a=>s(a).some(r=>M(r)?.toLowerCase()===c))}function O(n,t){let s=b(n);return n.anchorPaths?.find(e=>w(g([{refName:e.name,contig:f(e.name),start:e.start,end:e.start+e.length}],s),[t]))}function y(n){let t=n.replace(/^chr/i,""),s=t?/^(M|MT)$/i.test(t)?["M","MT"]:[t]:[];return[...new Set([n,...s.flatMap(e=>[e,`chr${e}`])])]}function C(n,t={}){let s=new Set(n),e=new Map;for(let o of s){let c=f(o),a=t[c];for(let r of new Set([...y(c),...a?[a]:[]]))e.set(r,e.has(r)?void 0:o)}return o=>s.has(o)?o:e.get(o)}function $(n,t,s){let e=C(t.contigs.map(o=>o.refName),s);return n.flatMap(o=>{let c=e(o.refName);return c===void 0?[]:[c===o.refName?o:{...o,refName:c}]})}export{M as a,S as b,B as c,w as d,O as e,$ as f};
2
- //# sourceMappingURL=chunk-22ANI2KL.js.map
1
+ import{b as d,g as l}from"./chunk-ZFJGNGIB.js";import{a as m,b as u,c as p,d as f}from"./chunk-TWPUVVYH.js";var v=new Map([["hg38","GRCh38"],["hg19","GRCh37"],["hs1","CHM13"],["t2t-chm13","CHM13"],["chm13v2","CHM13"]]);function M(n){return v.get(n.toLowerCase())}function h(n){let t=n.includes("#")?m(n):void 0;return t===void 0||u(t)?void 0:t}function N(n){return p(n)??m(n)}function b(n){let t=new Set((n.anchorPaths??[]).map(e=>e.name));for(let e of n.nodes)e.stable&&t.add(e.stable.refName);let s=new Map;for(let e of t){let o=h(e);o!==void 0&&d(s,o,N(e))}return s}function g(n,t){let s=new Set(n.map(i=>h(i.refName))),[e]=s;if(s.size!==1||e===void 0)return{contigs:n,prefixes:[],named:!1};let o=new Set(n.map(i=>N(i.refName))),c=[...t.get(e)??[]].every(i=>o.has(i)),a=new Set(n.map(i=>p(i.refName))),[r]=a;return{contigs:n,prefixes:[...c?[e]:[],...a.size===1&&r?[r]:[]],named:!0}}function S(n){let t=new Map;for(let e of n.nodes)if(l(e)){let{refName:o,start:c}=e.stable,a=c+e.length,r=t.get(o);r?(r.start=Math.min(r.start,c),r.end=Math.max(r.end,a)):t.set(o,{refName:o,contig:f(o),start:c,end:a})}let s=[...t.values()];return s.length?g(s,b(n)):void 0}function B(n,t){let s=S(n),e=t?f(t.refName):s?.contigs.length===1?s.contigs[0].contig:void 0,o=s?.named?m(s.contigs[0].refName):void 0;return e&&(o?`${o} ${e}`:e)}function w(n,t){let s=a=>[a.name,...a.aliases??[]],e=a=>r=>s(r).some(i=>i.toLowerCase()===a.toLowerCase()),o=[...n?.prefixes??[]].reverse(),c=n?.prefixes.find(a=>!a.includes("#"))?.toLowerCase();for(let a of o){let r=t.find(e(a));if(r)return r}return c===void 0?void 0:t.find(a=>s(a).some(r=>M(r)?.toLowerCase()===c))}function O(n,t){let s=b(n);return n.anchorPaths?.find(e=>w(g([{refName:e.name,contig:f(e.name),start:e.start,end:e.start+e.length}],s),[t]))}function y(n){let t=n.replace(/^chr/i,""),s=t?/^(M|MT)$/i.test(t)?["M","MT"]:[t]:[];return[...new Set([n,...s.flatMap(e=>[e,`chr${e}`])])]}function C(n,t={}){let s=new Set(n),e=new Map;for(let o of s){let c=f(o),a=t[c];for(let r of new Set([...y(c),...a?[a]:[]]))e.set(r,e.has(r)?void 0:o)}return o=>s.has(o)?o:e.get(o)}function $(n,t,s){let e=C(t.contigs.map(o=>o.refName),s);return n.flatMap(o=>{let c=e(o.refName);return c===void 0?[]:[c===o.refName?o:{...o,refName:c}]})}export{M as a,S as b,B as c,w as d,O as e,$ as f};
2
+ //# sourceMappingURL=chunk-CNEUOM7X.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5ORP7EFJ.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-5ORP7EFJ.js"],
4
4
  "sourcesContent": ["import {\n addTo\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n isBackbone\n} from \"./chunk-RJWPJCIB.js\";\nimport {\n isGenericSample,\n panSNContig,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/reference.ts\nvar WELL_KNOWN_SAMPLES = /* @__PURE__ */ new Map([\n [\"hg38\", \"GRCh38\"],\n [\"hg19\", \"GRCh37\"],\n [\"hs1\", \"CHM13\"],\n [\"t2t-chm13\", \"CHM13\"],\n [\"chm13v2\", \"CHM13\"]\n]);\nfunction wellKnownSample(assemblyName) {\n return WELL_KNOWN_SAMPLES.get(assemblyName.toLowerCase());\n}\nfunction sampleOf(refName) {\n const sample = refName.includes(\"#\") ? panSNSample(refName) : void 0;\n return sample === void 0 || isGenericSample(sample) ? void 0 : sample;\n}\nfunction haplotypeOf(refName) {\n return panSNHaplotype(refName) ?? panSNSample(refName);\n}\nfunction graphHaplotypes(graph) {\n const refNames = new Set((graph.anchorPaths ?? []).map((p) => p.name));\n for (const node of graph.nodes) {\n if (node.stable) {\n refNames.add(node.stable.refName);\n }\n }\n const bySample = /* @__PURE__ */ new Map();\n for (const refName of refNames) {\n const sample = sampleOf(refName);\n if (sample !== void 0) {\n addTo(bySample, sample, haplotypeOf(refName));\n }\n }\n return bySample;\n}\nfunction backboneFrom(contigs, haplotypes) {\n const samples = new Set(contigs.map((c) => sampleOf(c.refName)));\n const [sample] = samples;\n if (samples.size !== 1 || sample === void 0) {\n return { contigs, prefixes: [], named: false };\n }\n const own = new Set(contigs.map((c) => haplotypeOf(c.refName)));\n const unique = [...haplotypes.get(sample) ?? []].every((h) => own.has(h));\n const shared = new Set(contigs.map((c) => panSNHaplotype(c.refName)));\n const [haplotype] = shared;\n return {\n contigs,\n prefixes: [\n ...unique ? [sample] : [],\n ...shared.size === 1 && haplotype ? [haplotype] : []\n ],\n named: true\n };\n}\nfunction graphBackbone(graph) {\n const spans = /* @__PURE__ */ new Map();\n for (const node of graph.nodes) {\n if (isBackbone(node)) {\n const { refName, start } = node.stable;\n const end = start + node.length;\n const span = spans.get(refName);\n if (span) {\n span.start = Math.min(span.start, start);\n span.end = Math.max(span.end, end);\n } else {\n spans.set(refName, {\n refName,\n contig: panSNContig(refName),\n start,\n end\n });\n }\n }\n }\n const contigs = [...spans.values()];\n return contigs.length ? backboneFrom(contigs, graphHaplotypes(graph)) : void 0;\n}\nfunction referenceLabel(graph, region) {\n const backbone = graphBackbone(graph);\n const contig = region ? panSNContig(region.refName) : backbone?.contigs.length === 1 ? backbone.contigs[0].contig : void 0;\n const sample = backbone?.named ? panSNSample(backbone.contigs[0].refName) : void 0;\n return contig && (sample ? `${sample} ${contig}` : contig);\n}\nfunction backboneAssembly(backbone, assemblies) {\n const names = (a) => [a.name, ...a.aliases ?? []];\n const naming = (prefix) => (a) => names(a).some((n) => n.toLowerCase() === prefix.toLowerCase());\n const prefixes = [...backbone?.prefixes ?? []].reverse();\n const sample = backbone?.prefixes.find((p) => !p.includes(\"#\"))?.toLowerCase();\n for (const prefix of prefixes) {\n const assembly = assemblies.find(naming(prefix));\n if (assembly) {\n return assembly;\n }\n }\n return sample === void 0 ? void 0 : assemblies.find(\n (a) => names(a).some((n) => wellKnownSample(n)?.toLowerCase() === sample)\n );\n}\nfunction assemblyWalk(graph, assembly) {\n const haplotypes = graphHaplotypes(graph);\n return graph.anchorPaths?.find(\n (walk) => backboneAssembly(\n backboneFrom(\n [\n {\n refName: walk.name,\n contig: panSNContig(walk.name),\n start: walk.start,\n end: walk.start + walk.length\n }\n ],\n haplotypes\n ),\n [assembly]\n )\n );\n}\nfunction contigNames(contig) {\n const bare = contig.replace(/^chr/i, \"\");\n const forms = !bare ? [] : /^(M|MT)$/i.test(bare) ? [\"M\", \"MT\"] : [bare];\n return [.../* @__PURE__ */ new Set([contig, ...forms.flatMap((f) => [f, `chr${f}`])])];\n}\nfunction refNameBinding(refNames, aliases = {}) {\n const exact = new Set(refNames);\n const byName = /* @__PURE__ */ new Map();\n for (const refName of exact) {\n const contig = panSNContig(refName);\n const alias = aliases[contig];\n for (const name of /* @__PURE__ */ new Set([\n ...contigNames(contig),\n ...alias ? [alias] : []\n ])) {\n byName.set(name, byName.has(name) ? void 0 : refName);\n }\n }\n return (name) => exact.has(name) ? name : byName.get(name);\n}\nfunction featuresOnBackbone(features, backbone, aliases) {\n const bind = refNameBinding(\n backbone.contigs.map((c) => c.refName),\n aliases\n );\n return features.flatMap((f) => {\n const refName = bind(f.refName);\n return refName === void 0 ? [] : [refName === f.refName ? f : { ...f, refName }];\n });\n}\n\nexport {\n WELL_KNOWN_SAMPLES,\n wellKnownSample,\n graphBackbone,\n referenceLabel,\n backboneAssembly,\n assemblyWalk,\n contigNames,\n refNameBinding,\n featuresOnBackbone\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["WELL_KNOWN_SAMPLES", "wellKnownSample", "assemblyName", "sampleOf", "refName", "sample", "panSNSample", "isGenericSample", "haplotypeOf", "panSNHaplotype", "graphHaplotypes", "graph", "refNames", "p", "node", "bySample", "addTo", "backboneFrom", "contigs", "haplotypes", "samples", "c", "own", "unique", "h", "shared", "haplotype", "graphBackbone", "spans", "isBackbone", "start", "end", "span", "panSNContig", "referenceLabel", "region", "backbone", "contig", "backboneAssembly", "assemblies", "names", "naming", "prefix", "a", "n", "prefixes", "assembly", "assemblyWalk", "walk", "contigNames", "bare", "forms", "f", "refNameBinding", "aliases", "exact", "byName", "alias", "name", "featuresOnBackbone", "features", "bind"]
@@ -1,2 +1,2 @@
1
1
  function o(t){return t===void 0||t==="*"?void 0:t}function s(t){let e=t.split(" ");return{refName:e[0],start:+e[1],end:+e[2],segmentCount:+e[3],pathCount:+e[4],inversion:e[5]==="1",shortestAlleleLength:+e[6],longestAlleleLength:+e[7],segments:e[11],shortestAllele:o(e[12]),longestAllele:o(e[13])}}function u(t,e){return t.key!==void 0||e.key!==void 0?t.key===e.key:t.refName===e.refName&&t.start===e.start&&t.end===e.end}function i(t){return t.key??`${t.refName}:${t.start}-${t.end}`}function b(t){let{shortestAlleleLength:e,longestAlleleLength:n}=t;return e===n?`${n.toLocaleString()} bp`:`${e.toLocaleString()}-${n.toLocaleString()} bp`}var r=2147483647;function a(t){let{pathCount:e,segmentCount:n,inversion:l}=t;return[`${n} segments`,e===r?"more paths than gfatools counts":`up to ${e.toLocaleString()} paths`,...l?["inversion"]:[]].join(", ")}export{s as a,u as b,i as c,b as d,r as e,a as f};
2
- //# sourceMappingURL=chunk-GYY6LF5L.js.map
2
+ //# sourceMappingURL=chunk-DOC7QIE2.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FX4RDMDN.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-FX4RDMDN.js"],
4
4
  "sourcesContent": ["// src/bubbles/bubbleLine.ts\nfunction sequence(field) {\n return field === void 0 || field === \"*\" ? void 0 : field;\n}\nfunction parseBubbleLine(line) {\n const cols = line.split(\"\t\");\n return {\n refName: cols[0],\n start: +cols[1],\n end: +cols[2],\n segmentCount: +cols[3],\n pathCount: +cols[4],\n inversion: cols[5] === \"1\",\n shortestAlleleLength: +cols[6],\n longestAlleleLength: +cols[7],\n segments: cols[11],\n shortestAllele: sequence(cols[12]),\n longestAllele: sequence(cols[13])\n };\n}\nfunction sameBubble(a, b) {\n return a.key !== void 0 || b.key !== void 0 ? a.key === b.key : a.refName === b.refName && a.start === b.start && a.end === b.end;\n}\nfunction bubbleKey(b) {\n return b.key ?? `${b.refName}:${b.start}-${b.end}`;\n}\nfunction bubbleLabel(bubble) {\n const { shortestAlleleLength: min, longestAlleleLength: max } = bubble;\n return min === max ? `${max.toLocaleString()} bp` : `${min.toLocaleString()}-${max.toLocaleString()} bp`;\n}\nvar SATURATED_PATH_COUNT = 2147483647;\nfunction bubbleDescription(bubble) {\n const { pathCount, segmentCount, inversion } = bubble;\n return [\n `${segmentCount} segments`,\n pathCount === SATURATED_PATH_COUNT ? \"more paths than gfatools counts\" : `up to ${pathCount.toLocaleString()} paths`,\n ...inversion ? [\"inversion\"] : []\n ].join(\", \");\n}\n\nexport {\n parseBubbleLine,\n sameBubble,\n bubbleKey,\n bubbleLabel,\n SATURATED_PATH_COUNT,\n bubbleDescription\n};\n"],
5
5
  "mappings": "AACA,SAASA,EAASC,EAAO,CACvB,OAAOA,IAAU,QAAUA,IAAU,IAAM,OAASA,CACtD,CACA,SAASC,EAAgBC,EAAM,CAC7B,IAAMC,EAAOD,EAAK,MAAM,GAAG,EAC3B,MAAO,CACL,QAASC,EAAK,CAAC,EACf,MAAO,CAACA,EAAK,CAAC,EACd,IAAK,CAACA,EAAK,CAAC,EACZ,aAAc,CAACA,EAAK,CAAC,EACrB,UAAW,CAACA,EAAK,CAAC,EAClB,UAAWA,EAAK,CAAC,IAAM,IACvB,qBAAsB,CAACA,EAAK,CAAC,EAC7B,oBAAqB,CAACA,EAAK,CAAC,EAC5B,SAAUA,EAAK,EAAE,EACjB,eAAgBJ,EAASI,EAAK,EAAE,CAAC,EACjC,cAAeJ,EAASI,EAAK,EAAE,CAAC,CAClC,CACF,CACA,SAASC,EAAWC,EAAGC,EAAG,CACxB,OAAOD,EAAE,MAAQ,QAAUC,EAAE,MAAQ,OAASD,EAAE,MAAQC,EAAE,IAAMD,EAAE,UAAYC,EAAE,SAAWD,EAAE,QAAUC,EAAE,OAASD,EAAE,MAAQC,EAAE,GAChI,CACA,SAASC,EAAUD,EAAG,CACpB,OAAOA,EAAE,KAAO,GAAGA,EAAE,OAAO,IAAIA,EAAE,KAAK,IAAIA,EAAE,GAAG,EAClD,CACA,SAASE,EAAYC,EAAQ,CAC3B,GAAM,CAAE,qBAAsBC,EAAK,oBAAqBC,CAAI,EAAIF,EAChE,OAAOC,IAAQC,EAAM,GAAGA,EAAI,eAAe,CAAC,MAAQ,GAAGD,EAAI,eAAe,CAAC,IAAIC,EAAI,eAAe,CAAC,KACrG,CACA,IAAIC,EAAuB,WAC3B,SAASC,EAAkBJ,EAAQ,CACjC,GAAM,CAAE,UAAAK,EAAW,aAAAC,EAAc,UAAAC,CAAU,EAAIP,EAC/C,MAAO,CACL,GAAGM,CAAY,YACfD,IAAcF,EAAuB,kCAAoC,SAASE,EAAU,eAAe,CAAC,SAC5G,GAAGE,EAAY,CAAC,WAAW,EAAI,CAAC,CAClC,EAAE,KAAK,IAAI,CACb",
6
6
  "names": ["sequence", "field", "parseBubbleLine", "line", "cols", "sameBubble", "a", "b", "bubbleKey", "bubbleLabel", "bubble", "min", "max", "SATURATED_PATH_COUNT", "bubbleDescription", "pathCount", "segmentCount", "inversion"]
@@ -1,2 +1,2 @@
1
- import{c as Wt,o as Ht,r as pt}from"./chunk-SPL3UO2D.js";import{a as St,c as Dt,d as Vt,e as Zt}from"./chunk-FCMXEFJA.js";var fe="ws",ce="we",Xt=["elsewhere","break","end"],ke={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded"},ye="outside the extracted subgraph";function Kt(t,e,s){if(!e&&!s)return[{bp:t}];let n=Math.min(e?.trimmed??0,t),r=Math.min(s?.trimmed??0,t-n),i=t-n-r,h=e?.kind==="break"?Math.min(e.bp,i):0;i-=h;let c=s?.kind==="break"?Math.min(s.bp,i):0;i-=c;let o=[e,s].find(k=>k?.kind==="elsewhere");return[{bp:n},{bp:h,cause:"missing"},o?.kind==="elsewhere"?{bp:i,cause:"elsewhere",chunk:o.chunk}:{bp:i,cause:"unknown"},{bp:c,cause:"missing"},{bp:r}].filter(k=>k.bp>0)}function xt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return qt(t.kindNames[t.kinds[e]],Number.isNaN(s)?void 0:s,t.trimmed[e],n<0?void 0:{refName:t.chunkRefNames[n],start:t.chunkStarts[e]})}function qt(t,e,s,n){let r=s>0?{trimmed:s}:{};return t==="elsewhere"&&n?{kind:t,chunk:n,...e===void 0?{}:{bp:e},...r}:t==="break"&&e!==void 0?{kind:t,bp:e,...n?{chunk:n}:{},...r}:t==="end"?{kind:t,...r}:void 0}function zt(t){let[e,...s]=t.split(","),n,r=0,i;for(let h of s)if(h.startsWith("bp="))n=+h.slice(3);else if(h.startsWith("trimmed="))r=+h.slice(8);else if(h.startsWith("chunk=")){let c=h.lastIndexOf(":");i={refName:h.slice(6,c),start:+h.slice(c+1)}}return qt(e,n,r,i)}function Ft(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function Ae(t){let e=t[fe],s=t[ce];return Ft(typeof e=="string"?zt(e):void 0,typeof s=="string"?zt(s):void 0)}var we=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Xt.indexOf(t.kind)),this.bp.push("bp"in t&&t.bp!==void 0?t.bp:NaN),this.trimmed.push(t.trimmed??0);let e="chunk"in t?t.chunk:void 0;if(e){let s=this.refIndex.get(e.refName);s===void 0&&(s=this.chunkRefNames.length,this.refIndex.set(e.refName,s),this.chunkRefNames.push(e.refName)),this.chunkRefs.push(s),this.chunkStarts.push(e.start)}else this.chunkRefs.push(-1),this.chunkStarts.push(NaN)}table(){return{kinds:Uint8Array.from(this.kinds),kindNames:[...Xt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function le(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Mt(t,e){let s=t.names[e],n=Zt(s),r=t.starts[e],i=t.abridgedSteps?.[e]??Number.NaN,h=Number.isNaN(i)?{}:{abridged:{steps:i,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Ft(t.before&&xt(t.before,e),t.after&&xt(t.after,e)),...h}:{name:le(s,r,t.ends[e]),start:r}}function he(t,e,s,n){let r=new Int32Array(s+1);for(let o of t)r[o+1]++;for(let o=0;o<s;o++)r[o+1]+=r[o];let i=r.slice(0,s),h=new Int32Array(t.length);t.forEach((o,p)=>{h[i[o]++]=e[p]});let c=new Int32Array(n.length).fill(-1);return Array.from({length:s},(o,p)=>{let k=[];for(let R=r[p];R<r[p+1];R++){let j=h[R];c[j]!==p&&(c[j]=p,k.push(n[j]))}return k})}function Tt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),i=(c,o)=>{r[c]===0&&(r[c]=o?2:1)};for(let c=0;c<e.from.length;c++)i(e.from[c],e.strands[c]&1),i(e.to[c],e.strands[c]&2);let h=s.offsets[s.names.length]??0;for(let c=0;c<h;c++){let o=s.steps[c];i(o,s.reversed[c]),n&&n[o]++}return t.names.map((c,o)=>`${c}${r[o]===2?"-":"+"}`)}function xe({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,i=t.lengths.length,h=[];for(let a=0;a<s.names.length;a++)s.offsets[a+1]>s.offsets[a]&&h.push(a);let c=new Int32Array(r),o=Tt({nodes:t,links:e,walks:s},c),p=[];for(let a=0;a<i;a++){let v=t.refs[a];p.push({id:o[a],name:t.names[a],length:t.lengths[a],depth:Math.max(c[a],1),stable:v<0?void 0:{refName:t.refNames[v],start:t.starts[a],rank:t.ranks[a]},samples:void 0})}let k=[],R=new Array(r),j=(a,v)=>{let u=R[a];if(u){for(let w=0;w<u.length;w+=2)if(u[w]===v)return u[w+1]}},W=(a,v,u)=>{let w=R[a];w?w.push(v,u):R[a]=[v,u]},at=[],tt=0;for(let a=0;a<e.from.length;a++){let v=e.from[a],u=e.to[a];k.push({from:o[v],to:o[u],fromStrand:e.strands[a]&1?"-":"+",toStrand:e.strands[a]&2?"-":"+"});let w=j(v,u);w===void 0&&(w=tt++,W(v,u,w),W(u,v,w)),at.push(w)}let M=new Int32Array(r+1);for(let a=0;a<r;a++)M[a+1]=M[a]+(R[a]?.length??0)/2;let it=new Int32Array(M[r]),ft=new Int32Array(M[r]);R.forEach((a,v)=>{for(let u=0;u<a.length;u+=2)it[M[v]+u/2]=a[u],ft[M[v]+u/2]=a[u+1]});let Rt=(a,v)=>{for(let u=M[a];u<M[a+1];u++)if(it[u]===v)return ft[u];return-1},O=new Map,B=[],V=new Int32Array(s.offsets[s.names.length]??0),ct=new Int32Array(V.length),et=0,x=new Int32Array(tt).fill(-1),gt=[],U=[],Z=s.offsets[s.names.length]??0,lt=new Int32Array(Z),Nt=new Float64Array(Z),H=new Uint8Array(Z),I=new Int32Array(r).fill(-1),T=[],G=[0],st=[],X=new Map,z=[];for(let a of h){let v=Mt(s,a),{start:u,name:w}=v,K=v.sample===void 0?s.names[a]:w,q=O.get(K);q===void 0&&(q=B.length,O.set(K,q),B.push(K),st.push(St(K)));let f=X.get(w);f===void 0&&(f=z.length,X.set(w,f),z.push(w));let g=st[q],$=s.offsets[a],L=new Array(s.offsets[a+1]-$),E=u,y=-1;for(let P=$;P<s.offsets[a+1];P++){let S=s.steps[P];L[P-$]=o[S],I[S]===-1&&(I[S]=G.at(-1),G.push(I[S]+c[S]),T.push(S));let J=I[S]++;if(lt[J]=q,Nt[J]=E,H[J]=s.reversed[P],E+=S<i?t.lengths[S]:0,y>=0){let D=Rt(y,S);D>=0&&x[D]!==a&&(x[D]=a,V[et]=D,ct[et++]=f)}y=S}gt.push({...v,nodeIds:L}),U.push({name:K,sample:g,start:u,length:E-u})}let bt=he(V.subarray(0,et),ct,tt,z);k.forEach((a,v)=>{let u=bt[at[v]];u.length>0&&(a.pathIds=u)});let ht=h.length>0;return{name:n,nodes:p,edges:k,paths:ht?gt:void 0,anchorPaths:ht?U:void 0,pathVisits:ht?new Ht({segments:T.map(a=>t.names[a]),offsets:Int32Array.from(G),path:lt.subarray(0,G.at(-1)),start:Nt.subarray(0,G.at(-1)),reversed:H.subarray(0,G.at(-1)),paths:B,samples:st}):void 0,anchoredBy:p.some(a=>a.stable)?"tags":void 0}}var Pt=1,Qt=2,It=4,Yt=[void 0,"missing","elsewhere","unknown","abridged"],te=3,ue=t=>Yt.indexOf(t)<<te;function ee(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function de(t){return ee((t.paths??[]).map(e=>pt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function pe(t){let e=new Map,s=[],n=[],r=p=>{let k=e.get(p);return k===void 0&&(k=s.length,e.set(p,k),s.push(p),n.push(0)),k};for(let p of t.nodes)n[r(p.id)]=p.length;let i=t.paths??[],h=new Int32Array(i.length),c=new Int32Array(i.length),o=[];return i.forEach((p,k)=>{h[k]=o.length;for(let R of p.nodeIds)o.push(r(R));c[k]=o.length}),{heads:i,from:h,to:c,steps:Int32Array.from(o),lengths:Int32Array.from(n),names:s,reference:de(t)}}function me(t,e,s){let{nodes:n,walks:r}=t,i=[];for(let o=0;o<r.names.length;o++)r.offsets[o+1]>r.offsets[o]&&i.push(o);let h=i.map(o=>Mt(r,o)),c=new Set;for(let o=0;o<n.lengths.length;o++)n.refs[o]>=0&&n.ranks[o]===0&&c.add(n.refNames[n.refs[o]]);return{heads:h,from:Int32Array.from(i,o=>r.offsets[o]),to:Int32Array.from(i,o=>r.offsets[o+1]),steps:r.steps,lengths:n.lengths,names:s?Tt(t):n.names,reference:ee(h.map(o=>pt(o.name).name),e,c)}}function se(t){return t.sample??St(t.name)}function ge(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:se(t)}var Jt=class{constructor(t){this.offsets=[0],this.values=Array.from({length:t},()=>[])}get length(){return this.values[0].length}push(t,e,s,n,r){let i=this.values;i[0].push(t),i[1].push(e),i[2].push(s),i[3].push(n),r!==void 0&&i[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,i)=>{s[i+1]=s[i]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,i)=>{let h=this.values[i],c=r(this.length),o=0;for(let p of t)for(let k=this.offsets[p];k<this.offsets[p+1];k++)c[o++]=h[k];return c});return{offsets:s,columns:n}}},mt=t=>new Float64Array(t);function je(t,e,s={}){let{heads:n,from:r,to:i,steps:h,lengths:c,names:o,reference:p}="walks"in t?me(t,s.referencePath,s.visits):pe(t),k=c.length,R=f=>f<k?c[f]:0,j=f=>pt(n[f].name).name,W=f=>n[f].start,at=(f,g)=>(W(f)??0)-(W(g)??0),tt=n.map((f,g)=>g),M=tt.filter(f=>j(f)===p).sort(at),it=M[0],ft=tt.filter(f=>j(f)!==p);if(it===void 0||ft.length===0)return;let Rt=Wt(ft,j),O=new Float64Array(o.length).fill(Number.NaN),B=new Float64Array(o.length),V=new Map,ct=!1,et=!1,x=e&&e.end>e.start?e:void 0;for(let f of M){let g=W(f)??0;for(let $=r[f],L=i[f];$<L;$++){let E=h[$],y=R(E);if(Number.isNaN(O[E]))O[E]=g,B[E]=g+y,x&&(ct||=g+y<=x.start,et||=g>=x.end);else{let P=V.get(E);P?P.push(g):V.set(E,[O[E],g])}g+=y}}let gt=x===void 0||ct&&et,U=new Jt(5),Z=[],lt=new Map,Nt=f=>{if(!f)return-1;let g=`${f.refName}:${f.start}`,$=lt.get(g);return $===void 0&&($=Z.length,lt.set(g,$),Z.push(f)),$},H=s.visits?new Jt(4):void 0,I=new Int32Array(0),T=new Float64Array(0),G=f=>{let g=n[f[0]],$=[...f].sort(at),L=$.length-1,E=0;for(let l of $)L+=i[l]-r[l]+(n[l].abridged?1:0),E+=n[l].abridged?.steps??0;L>I.length&&(I=new Int32Array(L*2),T=new Float64Array(L*2));let y=0,P=!1,S,J,D=new Map;for(let l of $){let d=W(l);(d===void 0||S!==void 0&&d<S)&&(P=!0),S!==void 0&&d!==void 0&&d>S&&(D.set(y,Kt(d-S,J===void 0?void 0:n[J].after,n[l].before)),I[y]=-(d-S),T[y++]=S);let b=d??0,A=n[l].abridged;for(let m=r[l],N=i[l];m<N;m++){let F=h[m],_=A?A.bp-(b-(d??0))-R(F):0;_>0&&m===N-1&&m>r[l]&&(D.set(y,[{bp:_,cause:"abridged"}]),I[y]=-_,T[y++]=b,b+=_),I[y]=F,T[y++]=b,b+=R(F)}S=d===void 0?void 0:b,J=l}let _t=l=>l>=0&&l<y&&I[l]>=0&&!Number.isNaN(O[I[l]]),$t=l=>{let d=I[l];return T[l]+(d<0?-d:R(d))},ne=(l,d)=>{let b=l>=0?l:d,A=-1;for(let Y=1;A<0&&Y<y;Y++)A=[b-Y,b+Y].find(_t)??-1;if(A<0)return;let m=A>b==O[I[A]]>O[I[b]],N=m===(b===l),F=N?y-1:0,_=_t(F);return{stop:{contigEnds:_,shortBp:_?Math.max(0,x.start-B[I[F]],O[I[F]]-x.end):0},lo:N?b+1:0,hi:N?y:b,backward:!m,axisStart:m?N?$t(b):T[0]:N?$t(y-1):T[b]}},vt=0,kt=y,ut=!1,Ut=!0,dt=-1,jt=-1,Ot,Bt;if(x&&gt){let l=-1,d=-1,b=-1/0,A=1/0;for(let m=0;m<y;m++){let N=I[m];N>=0&&!Number.isNaN(O[N])&&(B[N]<=x.start&&B[N]>b&&(b=B[N],l=m),O[N]>=x.end&&O[N]<A&&(A=O[N],d=m))}if(l<0||d<0){Ut=!1;let m=l>=0||d>=0?ne(l,d):void 0;m&&({lo:vt,hi:kt,backward:ut,axisStart:Ot,stop:Bt}=m)}else vt=Math.min(l,d)+1,kt=Math.max(l,d),ut=l>d,dt=l,jt=d}let yt=g.contig??Vt(pt(g.name).name),re=P||y===0?void 0:Ot!==void 0?{contig:yt,start:Ot,reversed:ut}:dt<0?{contig:yt,start:T[0],reversed:!1}:dt<jt?{contig:yt,start:$t(dt),reversed:!1}:{contig:yt,start:T[dt],reversed:!0},nt=0,Gt=0,Lt=0,rt=0,C=-1,ot=0,Q=Number.NaN,At=Number.NaN,oe=l=>{let d=V.get(l);if(!d||Number.isNaN(At))return O[l];let b=R(l),A=d[0],m=1/0;for(let N of d){let F=Math.min(Math.abs(N-At),Math.abs(N+b-At));F<m&&(A=N,m=F)}return A},[,Et,ae,ie]=U.values;for(let l=vt;l<kt;l++){let d=ut?kt-1-(l-vt):l,b=I[d];if(b<0){let Y=D.get(d);for(let wt of ut?[...Y].reverse():Y)U.push(nt,wt.bp,Number.NaN,It|ue(wt.cause),Nt(wt.chunk)),nt+=wt.bp;C=U.length-1,ot=It,Q=Number.NaN,Lt+=-b,rt=0;continue}let A=R(b),m=oe(b),N=!Number.isNaN(m);H?.push(b,nt,A,N?1:0);let F=C>=0&&!Number.isNaN(Q),_=N&&F&&rt>=0&&Q+(Et[C]??0)===m,Ct=N&&F&&rt<=0&&m+A===Q;!N&&C>=0&&!(ot&(Pt|It))?Et[C]+=A:_||Ct?(Et[C]+=A,_||(Q=m,ae[C]=m,ot|=Qt,ie[C]=ot),rt=_?1:-1):(ot=N?Pt:0,Q=N?m:Number.NaN,U.push(nt,A,Q,ot,-1),C=U.length-1,rt=0),nt+=A,N?At=rt<0?m:m+A:Gt+=A}return U.endRow(),H?.endRow(),{name:g.name,label:ge(g),sample:se(g),haplotype:g.haplotype,bp:nt,offReferenceBp:Gt,gapBp:Lt,complete:Ut,stop:Bt,axis:re,...E>0?{abridgedSteps:E}:{}}},st=G(M),X=[...Rt.values()].map((f,g)=>({meta:G(f),row:g+1})),z=[st,...X.map(f=>f.meta)];if(new Set(z.map(f=>f.label)).size<z.length)for(let f of z)f.label=Dt(f.name)??f.label;X.sort((f,g)=>Number(g.meta.complete)-Number(f.meta.complete)||g.meta.bp-f.meta.bp||f.meta.label.localeCompare(g.meta.label));let bt=[0,...X.map(f=>f.row)],{offsets:ht,columns:a}=U.reorder(bt,[mt,mt,mt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[v,u,w,K,q]=a;return{origin:x?x.start:W(it)??0,rows:[st,...X.map(f=>f.meta)],offsets:ht,start:v,bp:u,referenceStart:w,flags:K,chunk:q,chunks:Z,visits:H&&Ne(H,bt,o)}}function Ne(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[p=>new Int32Array(p),mt,mt,p=>new Uint8Array(p)]),[i,h,c,o]=r;return{offsets:n,node:i,start:h,bp:c,onReference:o,names:s}}function be(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Pt)!==0};if(s&It){n.gap=!0;let r=Yt[s>>te&7];r&&(n.cause=r);let i=t.chunks[t.chunk[e]];i&&(n.chunk=i)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&Qt&&(n.reversed=!0),n}function ve(t,e){let s=[];for(let n=t.offsets[e];n<t.offsets[e+1];n++)s.push({node:t.names[t.node[n]],start:t.start[n],bp:t.bp[n],onReference:t.onReference[n]===1});return s}function Be(t,e){let s=t.rows.map((n,r)=>{let i=[];for(let h=t.offsets[r];h<t.offsets[r+1];h++)i.push(be(t,h));return{...n,runs:i,visits:t.visits&&ve(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{fe as a,ce as b,ke as c,ye as d,Kt as e,zt as f,Ae as g,we as h,Mt as i,xe as j,de as k,je as l,Be as m};
2
- //# sourceMappingURL=chunk-DEWZOJSC.js.map
1
+ import{c as Wt,o as Ht,r as pt}from"./chunk-ZFJGNGIB.js";import{a as St,c as Dt,d as Vt,e as Zt}from"./chunk-TWPUVVYH.js";var fe="ws",ce="we",Xt=["elsewhere","break","end"],ke={missing:"not in the graph",elsewhere:"on nodes filed elsewhere",unknown:"gap, cause unknown",abridged:"abridged: steps not loaded"},ye="outside the extracted subgraph";function Kt(t,e,s){if(!e&&!s)return[{bp:t}];let n=Math.min(e?.trimmed??0,t),r=Math.min(s?.trimmed??0,t-n),i=t-n-r,h=e?.kind==="break"?Math.min(e.bp,i):0;i-=h;let c=s?.kind==="break"?Math.min(s.bp,i):0;i-=c;let o=[e,s].find(k=>k?.kind==="elsewhere");return[{bp:n},{bp:h,cause:"missing"},o?.kind==="elsewhere"?{bp:i,cause:"elsewhere",chunk:o.chunk}:{bp:i,cause:"unknown"},{bp:c,cause:"missing"},{bp:r}].filter(k=>k.bp>0)}function xt(t,e){let s=t.bp[e],n=t.chunkRefs[e];return qt(t.kindNames[t.kinds[e]],Number.isNaN(s)?void 0:s,t.trimmed[e],n<0?void 0:{refName:t.chunkRefNames[n],start:t.chunkStarts[e]})}function qt(t,e,s,n){let r=s>0?{trimmed:s}:{};return t==="elsewhere"&&n?{kind:t,chunk:n,...e===void 0?{}:{bp:e},...r}:t==="break"&&e!==void 0?{kind:t,bp:e,...n?{chunk:n}:{},...r}:t==="end"?{kind:t,...r}:void 0}function zt(t){let[e,...s]=t.split(","),n,r=0,i;for(let h of s)if(h.startsWith("bp="))n=+h.slice(3);else if(h.startsWith("trimmed="))r=+h.slice(8);else if(h.startsWith("chunk=")){let c=h.lastIndexOf(":");i={refName:h.slice(6,c),start:+h.slice(c+1)}}return qt(e,n,r,i)}function Ft(t,e){return{...t?{before:t}:{},...e?{after:e}:{}}}function Ae(t){let e=t[fe],s=t[ce];return Ft(typeof e=="string"?zt(e):void 0,typeof s=="string"?zt(s):void 0)}var we=class{constructor(){this.kinds=[],this.bp=[],this.trimmed=[],this.chunkRefs=[],this.chunkStarts=[],this.chunkRefNames=[],this.refIndex=new Map}push(t){this.kinds.push(Xt.indexOf(t.kind)),this.bp.push("bp"in t&&t.bp!==void 0?t.bp:NaN),this.trimmed.push(t.trimmed??0);let e="chunk"in t?t.chunk:void 0;if(e){let s=this.refIndex.get(e.refName);s===void 0&&(s=this.chunkRefNames.length,this.refIndex.set(e.refName,s),this.chunkRefNames.push(e.refName)),this.chunkRefs.push(s),this.chunkStarts.push(e.start)}else this.chunkRefs.push(-1),this.chunkStarts.push(NaN)}table(){return{kinds:Uint8Array.from(this.kinds),kindNames:[...Xt],bp:Float64Array.from(this.bp),trimmed:Float64Array.from(this.trimmed),chunkRefs:Int32Array.from(this.chunkRefs),chunkStarts:Float64Array.from(this.chunkStarts),chunkRefNames:this.chunkRefNames}}};function le(t,e,s){return e===0?t:`${t}:${e}-${s}`}function Mt(t,e){let s=t.names[e],n=Zt(s),r=t.starts[e],i=t.abridgedSteps?.[e]??Number.NaN,h=Number.isNaN(i)?{}:{abridged:{steps:i,bp:t.abridgedBp?.[e]??0}};return n?{name:`${n.sample}#${n.haplotype}#${n.contig}`,start:r,...n,...Ft(t.before&&xt(t.before,e),t.after&&xt(t.after,e)),...h}:{name:le(s,r,t.ends[e]),start:r}}function he(t,e,s,n){let r=new Int32Array(s+1);for(let o of t)r[o+1]++;for(let o=0;o<s;o++)r[o+1]+=r[o];let i=r.slice(0,s),h=new Int32Array(t.length);t.forEach((o,p)=>{h[i[o]++]=e[p]});let c=new Int32Array(n.length).fill(-1);return Array.from({length:s},(o,p)=>{let k=[];for(let R=r[p];R<r[p+1];R++){let j=h[R];c[j]!==p&&(c[j]=p,k.push(n[j]))}return k})}function Tt({nodes:t,links:e,walks:s},n){let r=new Uint8Array(t.names.length),i=(c,o)=>{r[c]===0&&(r[c]=o?2:1)};for(let c=0;c<e.from.length;c++)i(e.from[c],e.strands[c]&1),i(e.to[c],e.strands[c]&2);let h=s.offsets[s.names.length]??0;for(let c=0;c<h;c++){let o=s.steps[c];i(o,s.reversed[c]),n&&n[o]++}return t.names.map((c,o)=>`${c}${r[o]===2?"-":"+"}`)}function xe({nodes:t,links:e,walks:s},n="Imported GFA"){let r=t.names.length,i=t.lengths.length,h=[];for(let a=0;a<s.names.length;a++)s.offsets[a+1]>s.offsets[a]&&h.push(a);let c=new Int32Array(r),o=Tt({nodes:t,links:e,walks:s},c),p=[];for(let a=0;a<i;a++){let v=t.refs[a];p.push({id:o[a],name:t.names[a],length:t.lengths[a],depth:Math.max(c[a],1),stable:v<0?void 0:{refName:t.refNames[v],start:t.starts[a],rank:t.ranks[a]},samples:void 0})}let k=[],R=new Array(r),j=(a,v)=>{let u=R[a];if(u){for(let w=0;w<u.length;w+=2)if(u[w]===v)return u[w+1]}},W=(a,v,u)=>{let w=R[a];w?w.push(v,u):R[a]=[v,u]},at=[],tt=0;for(let a=0;a<e.from.length;a++){let v=e.from[a],u=e.to[a];k.push({from:o[v],to:o[u],fromStrand:e.strands[a]&1?"-":"+",toStrand:e.strands[a]&2?"-":"+"});let w=j(v,u);w===void 0&&(w=tt++,W(v,u,w),W(u,v,w)),at.push(w)}let M=new Int32Array(r+1);for(let a=0;a<r;a++)M[a+1]=M[a]+(R[a]?.length??0)/2;let it=new Int32Array(M[r]),ft=new Int32Array(M[r]);R.forEach((a,v)=>{for(let u=0;u<a.length;u+=2)it[M[v]+u/2]=a[u],ft[M[v]+u/2]=a[u+1]});let Rt=(a,v)=>{for(let u=M[a];u<M[a+1];u++)if(it[u]===v)return ft[u];return-1},O=new Map,B=[],V=new Int32Array(s.offsets[s.names.length]??0),ct=new Int32Array(V.length),et=0,x=new Int32Array(tt).fill(-1),gt=[],U=[],Z=s.offsets[s.names.length]??0,lt=new Int32Array(Z),Nt=new Float64Array(Z),H=new Uint8Array(Z),I=new Int32Array(r).fill(-1),T=[],G=[0],st=[],X=new Map,z=[];for(let a of h){let v=Mt(s,a),{start:u,name:w}=v,K=v.sample===void 0?s.names[a]:w,q=O.get(K);q===void 0&&(q=B.length,O.set(K,q),B.push(K),st.push(St(K)));let f=X.get(w);f===void 0&&(f=z.length,X.set(w,f),z.push(w));let g=st[q],$=s.offsets[a],L=new Array(s.offsets[a+1]-$),E=u,y=-1;for(let P=$;P<s.offsets[a+1];P++){let S=s.steps[P];L[P-$]=o[S],I[S]===-1&&(I[S]=G.at(-1),G.push(I[S]+c[S]),T.push(S));let J=I[S]++;if(lt[J]=q,Nt[J]=E,H[J]=s.reversed[P],E+=S<i?t.lengths[S]:0,y>=0){let D=Rt(y,S);D>=0&&x[D]!==a&&(x[D]=a,V[et]=D,ct[et++]=f)}y=S}gt.push({...v,nodeIds:L}),U.push({name:K,sample:g,start:u,length:E-u})}let bt=he(V.subarray(0,et),ct,tt,z);k.forEach((a,v)=>{let u=bt[at[v]];u.length>0&&(a.pathIds=u)});let ht=h.length>0;return{name:n,nodes:p,edges:k,paths:ht?gt:void 0,anchorPaths:ht?U:void 0,pathVisits:ht?new Ht({segments:T.map(a=>t.names[a]),offsets:Int32Array.from(G),path:lt.subarray(0,G.at(-1)),start:Nt.subarray(0,G.at(-1)),reversed:H.subarray(0,G.at(-1)),paths:B,samples:st}):void 0,anchoredBy:p.some(a=>a.stable)?"tags":void 0}}var Pt=1,Qt=2,It=4,Yt=[void 0,"missing","elsewhere","unknown","abridged"],te=3,ue=t=>Yt.indexOf(t)<<te;function ee(t,e,s){return e!==void 0&&t.includes(e)?e:t.find(n=>s.has(n))??t[0]}function de(t){return ee((t.paths??[]).map(e=>pt(e.name).name),t.referencePath,new Set(t.nodes.flatMap(e=>e.stable?.rank===0?[e.stable.refName]:[])))}function pe(t){let e=new Map,s=[],n=[],r=p=>{let k=e.get(p);return k===void 0&&(k=s.length,e.set(p,k),s.push(p),n.push(0)),k};for(let p of t.nodes)n[r(p.id)]=p.length;let i=t.paths??[],h=new Int32Array(i.length),c=new Int32Array(i.length),o=[];return i.forEach((p,k)=>{h[k]=o.length;for(let R of p.nodeIds)o.push(r(R));c[k]=o.length}),{heads:i,from:h,to:c,steps:Int32Array.from(o),lengths:Int32Array.from(n),names:s,reference:de(t)}}function me(t,e,s){let{nodes:n,walks:r}=t,i=[];for(let o=0;o<r.names.length;o++)r.offsets[o+1]>r.offsets[o]&&i.push(o);let h=i.map(o=>Mt(r,o)),c=new Set;for(let o=0;o<n.lengths.length;o++)n.refs[o]>=0&&n.ranks[o]===0&&c.add(n.refNames[n.refs[o]]);return{heads:h,from:Int32Array.from(i,o=>r.offsets[o]),to:Int32Array.from(i,o=>r.offsets[o+1]),steps:r.steps,lengths:n.lengths,names:s?Tt(t):n.names,reference:ee(h.map(o=>pt(o.name).name),e,c)}}function se(t){return t.sample??St(t.name)}function ge(t){return t.haplotype!==void 0&&t.sample!==void 0?`${t.sample}#${t.haplotype}`:se(t)}var Jt=class{constructor(t){this.offsets=[0],this.values=Array.from({length:t},()=>[])}get length(){return this.values[0].length}push(t,e,s,n,r){let i=this.values;i[0].push(t),i[1].push(e),i[2].push(s),i[3].push(n),r!==void 0&&i[4].push(r)}endRow(){this.offsets.push(this.length)}reorder(t,e){let s=new Uint32Array(t.length+1);t.forEach((r,i)=>{s[i+1]=s[i]+this.offsets[r+1]-this.offsets[r]});let n=e.map((r,i)=>{let h=this.values[i],c=r(this.length),o=0;for(let p of t)for(let k=this.offsets[p];k<this.offsets[p+1];k++)c[o++]=h[k];return c});return{offsets:s,columns:n}}},mt=t=>new Float64Array(t);function je(t,e,s={}){let{heads:n,from:r,to:i,steps:h,lengths:c,names:o,reference:p}="walks"in t?me(t,s.referencePath,s.visits):pe(t),k=c.length,R=f=>f<k?c[f]:0,j=f=>pt(n[f].name).name,W=f=>n[f].start,at=(f,g)=>(W(f)??0)-(W(g)??0),tt=n.map((f,g)=>g),M=tt.filter(f=>j(f)===p).sort(at),it=M[0],ft=tt.filter(f=>j(f)!==p);if(it===void 0||ft.length===0)return;let Rt=Wt(ft,j),O=new Float64Array(o.length).fill(Number.NaN),B=new Float64Array(o.length),V=new Map,ct=!1,et=!1,x=e&&e.end>e.start?e:void 0;for(let f of M){let g=W(f)??0;for(let $=r[f],L=i[f];$<L;$++){let E=h[$],y=R(E);if(Number.isNaN(O[E]))O[E]=g,B[E]=g+y,x&&(ct||=g+y<=x.start,et||=g>=x.end);else{let P=V.get(E);P?P.push(g):V.set(E,[O[E],g])}g+=y}}let gt=x===void 0||ct&&et,U=new Jt(5),Z=[],lt=new Map,Nt=f=>{if(!f)return-1;let g=`${f.refName}:${f.start}`,$=lt.get(g);return $===void 0&&($=Z.length,lt.set(g,$),Z.push(f)),$},H=s.visits?new Jt(4):void 0,I=new Int32Array(0),T=new Float64Array(0),G=f=>{let g=n[f[0]],$=[...f].sort(at),L=$.length-1,E=0;for(let l of $)L+=i[l]-r[l]+(n[l].abridged?1:0),E+=n[l].abridged?.steps??0;L>I.length&&(I=new Int32Array(L*2),T=new Float64Array(L*2));let y=0,P=!1,S,J,D=new Map;for(let l of $){let d=W(l);(d===void 0||S!==void 0&&d<S)&&(P=!0),S!==void 0&&d!==void 0&&d>S&&(D.set(y,Kt(d-S,J===void 0?void 0:n[J].after,n[l].before)),I[y]=-(d-S),T[y++]=S);let b=d??0,A=n[l].abridged;for(let m=r[l],N=i[l];m<N;m++){let F=h[m],_=A?A.bp-(b-(d??0))-R(F):0;_>0&&m===N-1&&m>r[l]&&(D.set(y,[{bp:_,cause:"abridged"}]),I[y]=-_,T[y++]=b,b+=_),I[y]=F,T[y++]=b,b+=R(F)}S=d===void 0?void 0:b,J=l}let _t=l=>l>=0&&l<y&&I[l]>=0&&!Number.isNaN(O[I[l]]),$t=l=>{let d=I[l];return T[l]+(d<0?-d:R(d))},ne=(l,d)=>{let b=l>=0?l:d,A=-1;for(let Y=1;A<0&&Y<y;Y++)A=[b-Y,b+Y].find(_t)??-1;if(A<0)return;let m=A>b==O[I[A]]>O[I[b]],N=m===(b===l),F=N?y-1:0,_=_t(F);return{stop:{contigEnds:_,shortBp:_?Math.max(0,x.start-B[I[F]],O[I[F]]-x.end):0},lo:N?b+1:0,hi:N?y:b,backward:!m,axisStart:m?N?$t(b):T[0]:N?$t(y-1):T[b]}},vt=0,kt=y,ut=!1,Ut=!0,dt=-1,jt=-1,Ot,Bt;if(x&&gt){let l=-1,d=-1,b=-1/0,A=1/0;for(let m=0;m<y;m++){let N=I[m];N>=0&&!Number.isNaN(O[N])&&(B[N]<=x.start&&B[N]>b&&(b=B[N],l=m),O[N]>=x.end&&O[N]<A&&(A=O[N],d=m))}if(l<0||d<0){Ut=!1;let m=l>=0||d>=0?ne(l,d):void 0;m&&({lo:vt,hi:kt,backward:ut,axisStart:Ot,stop:Bt}=m)}else vt=Math.min(l,d)+1,kt=Math.max(l,d),ut=l>d,dt=l,jt=d}let yt=g.contig??Vt(pt(g.name).name),re=P||y===0?void 0:Ot!==void 0?{contig:yt,start:Ot,reversed:ut}:dt<0?{contig:yt,start:T[0],reversed:!1}:dt<jt?{contig:yt,start:$t(dt),reversed:!1}:{contig:yt,start:T[dt],reversed:!0},nt=0,Gt=0,Lt=0,rt=0,C=-1,ot=0,Q=Number.NaN,At=Number.NaN,oe=l=>{let d=V.get(l);if(!d||Number.isNaN(At))return O[l];let b=R(l),A=d[0],m=1/0;for(let N of d){let F=Math.min(Math.abs(N-At),Math.abs(N+b-At));F<m&&(A=N,m=F)}return A},[,Et,ae,ie]=U.values;for(let l=vt;l<kt;l++){let d=ut?kt-1-(l-vt):l,b=I[d];if(b<0){let Y=D.get(d);for(let wt of ut?[...Y].reverse():Y)U.push(nt,wt.bp,Number.NaN,It|ue(wt.cause),Nt(wt.chunk)),nt+=wt.bp;C=U.length-1,ot=It,Q=Number.NaN,Lt+=-b,rt=0;continue}let A=R(b),m=oe(b),N=!Number.isNaN(m);H?.push(b,nt,A,N?1:0);let F=C>=0&&!Number.isNaN(Q),_=N&&F&&rt>=0&&Q+(Et[C]??0)===m,Ct=N&&F&&rt<=0&&m+A===Q;!N&&C>=0&&!(ot&(Pt|It))?Et[C]+=A:_||Ct?(Et[C]+=A,_||(Q=m,ae[C]=m,ot|=Qt,ie[C]=ot),rt=_?1:-1):(ot=N?Pt:0,Q=N?m:Number.NaN,U.push(nt,A,Q,ot,-1),C=U.length-1,rt=0),nt+=A,N?At=rt<0?m:m+A:Gt+=A}return U.endRow(),H?.endRow(),{name:g.name,label:ge(g),sample:se(g),haplotype:g.haplotype,bp:nt,offReferenceBp:Gt,gapBp:Lt,complete:Ut,stop:Bt,axis:re,...E>0?{abridgedSteps:E}:{}}},st=G(M),X=[...Rt.values()].map((f,g)=>({meta:G(f),row:g+1})),z=[st,...X.map(f=>f.meta)];if(new Set(z.map(f=>f.label)).size<z.length)for(let f of z)f.label=Dt(f.name)??f.label;X.sort((f,g)=>Number(g.meta.complete)-Number(f.meta.complete)||g.meta.bp-f.meta.bp||f.meta.label.localeCompare(g.meta.label));let bt=[0,...X.map(f=>f.row)],{offsets:ht,columns:a}=U.reorder(bt,[mt,mt,mt,f=>new Uint8Array(f),f=>new Int32Array(f)]),[v,u,w,K,q]=a;return{origin:x?x.start:W(it)??0,rows:[st,...X.map(f=>f.meta)],offsets:ht,start:v,bp:u,referenceStart:w,flags:K,chunk:q,chunks:Z,visits:H&&Ne(H,bt,o)}}function Ne(t,e,s){let{offsets:n,columns:r}=t.reorder(e,[p=>new Int32Array(p),mt,mt,p=>new Uint8Array(p)]),[i,h,c,o]=r;return{offsets:n,node:i,start:h,bp:c,onReference:o,names:s}}function be(t,e){let s=t.flags[e],n={start:t.start[e],bp:t.bp[e],onReference:(s&Pt)!==0};if(s&It){n.gap=!0;let r=Yt[s>>te&7];r&&(n.cause=r);let i=t.chunks[t.chunk[e]];i&&(n.chunk=i)}else n.referenceStart=Number.isNaN(t.referenceStart[e])?void 0:t.referenceStart[e];return s&Qt&&(n.reversed=!0),n}function ve(t,e){let s=[];for(let n=t.offsets[e];n<t.offsets[e+1];n++)s.push({node:t.names[t.node[n]],start:t.start[n],bp:t.bp[n],onReference:t.onReference[n]===1});return s}function Be(t,e){let s=t.rows.map((n,r)=>{let i=[];for(let h=t.offsets[r];h<t.offsets[r+1];h++)i.push(be(t,h));return{...n,runs:i,visits:t.visits&&ve(t.visits,r)}});return{origin:t.origin,unit:e,reference:s[0],rows:s.slice(1)}}export{fe as a,ce as b,ke as c,ye as d,Kt as e,zt as f,Ae as g,we as h,Mt as i,xe as j,de as k,je as l,Be as m};
2
+ //# sourceMappingURL=chunk-G4OPM6G7.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LG2UK4MB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7L7MN2OM.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.11.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LODKC7PJ.js"],
3
+ "sources": ["../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LG2UK4MB.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-7L7MN2OM.js", "../../node_modules/.pnpm/@jbrowse+bandage-core@11.14.0/node_modules/@jbrowse/bandage-core/dist/chunks/chunk-LODKC7PJ.js"],
4
4
  "sourcesContent": ["// src/gfa/walkStops.ts\nvar START_STOP_TAG = \"ws\";\nvar END_STOP_TAG = \"we\";\nvar STOP_KINDS = [\"elsewhere\", \"break\", \"end\"];\nvar GAP_CAUSE_TEXT = {\n missing: \"not in the graph\",\n elsewhere: \"on nodes filed elsewhere\",\n unknown: \"gap, cause unknown\",\n abridged: \"abridged: steps not loaded\"\n};\nvar OUTSIDE_TEXT = \"outside the extracted subgraph\";\nfunction gapParts(bp, after, before) {\n if (!after && !before) {\n return [{ bp }];\n }\n const left = Math.min(after?.trimmed ?? 0, bp);\n const right = Math.min(before?.trimmed ?? 0, bp - left);\n let rest = bp - left - right;\n const lead = after?.kind === \"break\" ? Math.min(after.bp, rest) : 0;\n rest -= lead;\n const trail = before?.kind === \"break\" ? Math.min(before.bp, rest) : 0;\n rest -= trail;\n const elsewhere = [after, before].find((s) => s?.kind === \"elsewhere\");\n const parts = [\n { bp: left },\n { bp: lead, cause: \"missing\" },\n elsewhere?.kind === \"elsewhere\" ? { bp: rest, cause: \"elsewhere\", chunk: elsewhere.chunk } : { bp: rest, cause: \"unknown\" },\n { bp: trail, cause: \"missing\" },\n { bp: right }\n ];\n return parts.filter((part) => part.bp > 0);\n}\nfunction stopAt(table, i) {\n const bp = table.bp[i];\n const ref = table.chunkRefs[i];\n return stopOf(\n table.kindNames[table.kinds[i]],\n Number.isNaN(bp) ? void 0 : bp,\n table.trimmed[i],\n ref < 0 ? void 0 : { refName: table.chunkRefNames[ref], start: table.chunkStarts[i] }\n );\n}\nfunction stopOf(kind, bp, trimmed, chunk) {\n const cut = trimmed > 0 ? { trimmed } : {};\n if (kind === \"elsewhere\" && chunk) {\n return { kind, chunk, ...bp === void 0 ? {} : { bp }, ...cut };\n }\n if (kind === \"break\" && bp !== void 0) {\n return { kind, bp, ...chunk ? { chunk } : {}, ...cut };\n }\n return kind === \"end\" ? { kind, ...cut } : void 0;\n}\nfunction stopTag(stop) {\n const parts = [stop.kind];\n if (\"bp\" in stop && stop.bp !== void 0) {\n parts.push(`bp=${stop.bp}`);\n }\n if (stop.trimmed) {\n parts.push(`trimmed=${stop.trimmed}`);\n }\n if (\"chunk\" in stop && stop.chunk) {\n parts.push(`chunk=${stop.chunk.refName}:${stop.chunk.start}`);\n }\n return parts.join(\",\");\n}\nfunction parseStopTag(value) {\n const [kind, ...fields] = value.split(\",\");\n let bp;\n let trimmed = 0;\n let chunk;\n for (const field of fields) {\n if (field.startsWith(\"bp=\")) {\n bp = +field.slice(3);\n } else if (field.startsWith(\"trimmed=\")) {\n trimmed = +field.slice(8);\n } else if (field.startsWith(\"chunk=\")) {\n const at = field.lastIndexOf(\":\");\n chunk = { refName: field.slice(6, at), start: +field.slice(at + 1) };\n }\n }\n return stopOf(kind, bp, trimmed, chunk);\n}\nfunction stopFields(before, after) {\n return {\n ...before ? { before } : {},\n ...after ? { after } : {}\n };\n}\nfunction walkStopFields(tags) {\n const before = tags[START_STOP_TAG];\n const after = tags[END_STOP_TAG];\n return stopFields(\n typeof before === \"string\" ? parseStopTag(before) : void 0,\n typeof after === \"string\" ? parseStopTag(after) : void 0\n );\n}\nfunction walkStopTags(walks, p) {\n const tags = [];\n for (const [tag, table] of [\n [START_STOP_TAG, walks.before],\n [END_STOP_TAG, walks.after]\n ]) {\n const stop = table && stopAt(table, p);\n if (stop) {\n tags.push(`\t${tag}:Z:${stopTag(stop)}`);\n }\n }\n return tags.join(\"\");\n}\nvar StopColumns = class {\n constructor() {\n this.kinds = [];\n this.bp = [];\n this.trimmed = [];\n this.chunkRefs = [];\n this.chunkStarts = [];\n this.chunkRefNames = [];\n this.refIndex = /* @__PURE__ */ new Map();\n }\n push(stop) {\n this.kinds.push(STOP_KINDS.indexOf(stop.kind));\n this.bp.push(\"bp\" in stop && stop.bp !== void 0 ? stop.bp : NaN);\n this.trimmed.push(stop.trimmed ?? 0);\n const chunk = \"chunk\" in stop ? stop.chunk : void 0;\n if (chunk) {\n let ref = this.refIndex.get(chunk.refName);\n if (ref === void 0) {\n ref = this.chunkRefNames.length;\n this.refIndex.set(chunk.refName, ref);\n this.chunkRefNames.push(chunk.refName);\n }\n this.chunkRefs.push(ref);\n this.chunkStarts.push(chunk.start);\n } else {\n this.chunkRefs.push(-1);\n this.chunkStarts.push(NaN);\n }\n }\n table() {\n return {\n kinds: Uint8Array.from(this.kinds),\n kindNames: [...STOP_KINDS],\n bp: Float64Array.from(this.bp),\n trimmed: Float64Array.from(this.trimmed),\n chunkRefs: Int32Array.from(this.chunkRefs),\n chunkStarts: Float64Array.from(this.chunkStarts),\n chunkRefNames: this.chunkRefNames\n };\n }\n};\n\nexport {\n START_STOP_TAG,\n END_STOP_TAG,\n GAP_CAUSE_TEXT,\n OUTSIDE_TEXT,\n gapParts,\n stopAt,\n stopTag,\n parseStopTag,\n stopFields,\n walkStopFields,\n walkStopTags,\n StopColumns\n};\n", "import {\n stopAt,\n stopFields,\n walkStopTags\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n PathVisits\n} from \"./chunk-ZPZ7GNBT.js\";\nimport {\n panSNFields,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/gfa/graphTables.ts\nfunction pLineName(name, start, end) {\n return start === 0 ? name : `${name}:${start}-${end}`;\n}\nfunction tablePath(w, p) {\n const walkName = w.names[p];\n const fields = panSNFields(walkName);\n const start = w.starts[p];\n const steps = w.abridgedSteps?.[p] ?? Number.NaN;\n const abridged = Number.isNaN(steps) ? {} : { abridged: { steps, bp: w.abridgedBp?.[p] ?? 0 } };\n return fields ? {\n name: `${fields.sample}#${fields.haplotype}#${fields.contig}`,\n start,\n ...fields,\n ...stopFields(\n w.before && stopAt(w.before, p),\n w.after && stopAt(w.after, p)\n ),\n ...abridged\n } : { name: pLineName(walkName, start, w.ends[p]), start };\n}\nfunction namesByList(lists, names, listCount, pathNames) {\n const starts = new Int32Array(listCount + 1);\n for (const list of lists) {\n starts[list + 1]++;\n }\n for (let i = 0; i < listCount; i++) {\n starts[i + 1] += starts[i];\n }\n const fill = starts.slice(0, listCount);\n const grouped = new Int32Array(lists.length);\n lists.forEach((list, i) => {\n grouped[fill[list]++] = names[i];\n });\n const listed = new Int32Array(pathNames.length).fill(-1);\n return Array.from({ length: listCount }, (_, list) => {\n const out = [];\n for (let i = starts[list]; i < starts[list + 1]; i++) {\n const k = grouped[i];\n if (listed[k] !== list) {\n listed[k] = list;\n out.push(pathNames[k]);\n }\n }\n return out;\n });\n}\nfunction tableNodeIds({ nodes: n, links: l, walks: w }, traversals) {\n const canonical = new Uint8Array(n.names.length);\n const claim = (node, reversed) => {\n if (canonical[node] === 0) {\n canonical[node] = reversed ? 2 : 1;\n }\n };\n for (let i = 0; i < l.from.length; i++) {\n claim(l.from[i], l.strands[i] & 1);\n claim(l.to[i], l.strands[i] & 2);\n }\n const stepCount = w.offsets[w.names.length] ?? 0;\n for (let s = 0; s < stepCount; s++) {\n const node = w.steps[s];\n claim(node, w.reversed[s]);\n if (traversals) {\n traversals[node]++;\n }\n }\n return n.names.map(\n (segment, i) => `${segment}${canonical[i] === 2 ? \"-\" : \"+\"}`\n );\n}\nfunction graphFromTables({ nodes: n, links: l, walks: w }, name = \"Imported GFA\") {\n const count = n.names.length;\n const declared = n.lengths.length;\n const drawnWalks = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n drawnWalks.push(p);\n }\n }\n const traversals = new Int32Array(count);\n const ids = tableNodeIds({ nodes: n, links: l, walks: w }, traversals);\n const nodes = [];\n for (let i = 0; i < declared; i++) {\n const ref = n.refs[i];\n nodes.push({\n id: ids[i],\n name: n.names[i],\n length: n.lengths[i],\n depth: Math.max(traversals[i], 1),\n stable: ref < 0 ? void 0 : {\n refName: n.refNames[ref],\n start: n.starts[i],\n rank: n.ranks[i]\n },\n samples: void 0\n });\n }\n const edges = [];\n const neighbours = new Array(count);\n const pairList = (a, b) => {\n const near = neighbours[a];\n if (near) {\n for (let j = 0; j < near.length; j += 2) {\n if (near[j] === b) {\n return near[j + 1];\n }\n }\n }\n return void 0;\n };\n const addPair = (a, b, list) => {\n const near = neighbours[a];\n if (near) {\n near.push(b, list);\n } else {\n neighbours[a] = [b, list];\n }\n };\n const edgeLists = [];\n let lists = 0;\n for (let i = 0; i < l.from.length; i++) {\n const a = l.from[i];\n const b = l.to[i];\n edges.push({\n from: ids[a],\n to: ids[b],\n fromStrand: l.strands[i] & 1 ? \"-\" : \"+\",\n toStrand: l.strands[i] & 2 ? \"-\" : \"+\"\n });\n let list = pairList(a, b);\n if (list === void 0) {\n list = lists++;\n addPair(a, b, list);\n addPair(b, a, list);\n }\n edgeLists.push(list);\n }\n const adjacency = new Int32Array(count + 1);\n for (let a = 0; a < count; a++) {\n adjacency[a + 1] = adjacency[a] + (neighbours[a]?.length ?? 0) / 2;\n }\n const adjacentNode = new Int32Array(adjacency[count]);\n const adjacentList = new Int32Array(adjacency[count]);\n neighbours.forEach((near, a) => {\n for (let j = 0; j < near.length; j += 2) {\n adjacentNode[adjacency[a] + j / 2] = near[j];\n adjacentList[adjacency[a] + j / 2] = near[j + 1];\n }\n });\n const listOf = (a, b) => {\n for (let j = adjacency[a]; j < adjacency[a + 1]; j++) {\n if (adjacentNode[j] === b) {\n return adjacentList[j];\n }\n }\n return -1;\n };\n const nameIndex = /* @__PURE__ */ new Map();\n const pathNames = [];\n const crossedList = new Int32Array(w.offsets[w.names.length] ?? 0);\n const crossedName = new Int32Array(crossedList.length);\n let crossings = 0;\n const lastWalk = new Int32Array(lists).fill(-1);\n const paths = [];\n const anchorPaths = [];\n const totalSteps = w.offsets[w.names.length] ?? 0;\n const visitPath = new Int32Array(totalSteps);\n const visitStart = new Float64Array(totalSteps);\n const visitReversed = new Uint8Array(totalSteps);\n const fill = new Int32Array(count).fill(-1);\n const visitOrder = [];\n const blocks = [0];\n const pathSamples = [];\n const edgeNameIndex = /* @__PURE__ */ new Map();\n const edgeNames = [];\n for (const p of drawnWalks) {\n const head = tablePath(w, p);\n const { start, name: pathName } = head;\n const visitName = head.sample === void 0 ? w.names[p] : pathName;\n let named = nameIndex.get(visitName);\n if (named === void 0) {\n named = pathNames.length;\n nameIndex.set(visitName, named);\n pathNames.push(visitName);\n pathSamples.push(panSNSample(visitName));\n }\n let edgeNamed = edgeNameIndex.get(pathName);\n if (edgeNamed === void 0) {\n edgeNamed = edgeNames.length;\n edgeNameIndex.set(pathName, edgeNamed);\n edgeNames.push(pathName);\n }\n const visitSample = pathSamples[named];\n const first = w.offsets[p];\n const nodeIds = new Array(w.offsets[p + 1] - first);\n let pos = start;\n let prev = -1;\n for (let s = first; s < w.offsets[p + 1]; s++) {\n const node = w.steps[s];\n nodeIds[s - first] = ids[node];\n if (fill[node] === -1) {\n fill[node] = blocks.at(-1);\n blocks.push(fill[node] + traversals[node]);\n visitOrder.push(node);\n }\n const at = fill[node]++;\n visitPath[at] = named;\n visitStart[at] = pos;\n visitReversed[at] = w.reversed[s];\n pos += node < declared ? n.lengths[node] : 0;\n if (prev >= 0) {\n const list = listOf(prev, node);\n if (list >= 0 && lastWalk[list] !== p) {\n lastWalk[list] = p;\n crossedList[crossings] = list;\n crossedName[crossings++] = edgeNamed;\n }\n }\n prev = node;\n }\n paths.push({ ...head, nodeIds });\n anchorPaths.push({\n name: visitName,\n sample: visitSample,\n start,\n length: pos - start\n });\n }\n const listNames = namesByList(\n crossedList.subarray(0, crossings),\n crossedName,\n lists,\n edgeNames\n );\n edges.forEach((edge, i) => {\n const names = listNames[edgeLists[i]];\n if (names.length > 0) {\n edge.pathIds = names;\n }\n });\n const walked = drawnWalks.length > 0;\n return {\n name,\n nodes,\n edges,\n paths: walked ? paths : void 0,\n anchorPaths: walked ? anchorPaths : void 0,\n pathVisits: walked ? new PathVisits({\n segments: visitOrder.map((node) => n.names[node]),\n offsets: Int32Array.from(blocks),\n path: visitPath.subarray(0, blocks.at(-1)),\n start: visitStart.subarray(0, blocks.at(-1)),\n reversed: visitReversed.subarray(0, blocks.at(-1)),\n paths: pathNames,\n samples: pathSamples\n }) : void 0,\n anchoredBy: nodes.some((node) => node.stable) ? \"tags\" : void 0\n };\n}\nfunction graphTablesGFA({ nodes, links, walks }) {\n const { names } = nodes;\n const lines = [\"H\tVN:Z:1.1\"];\n for (let i = 0; i < nodes.lengths.length; i++) {\n const ref = nodes.refs[i];\n const stable = ref < 0 ? \"\" : `\tSN:Z:${nodes.refNames[ref]}\tSO:i:${nodes.starts[i]}\tSR:i:${nodes.ranks[i]}`;\n lines.push(`S\t${names[i]}\t*\tLN:i:${nodes.lengths[i]}${stable}`);\n }\n for (let i = 0; i < links.from.length; i++) {\n const strands = links.strands[i];\n lines.push(\n `L\t${names[links.from[i]]}\t${strands & 1 ? \"-\" : \"+\"}\t${names[links.to[i]]}\t${strands & 2 ? \"-\" : \"+\"}\t0M`\n );\n }\n for (let p = 0; p < walks.names.length; p++) {\n const name = walks.names[p];\n const fields = panSNFields(name);\n const start = walks.starts[p];\n const end = walks.ends[p];\n const steps = [];\n for (let s = walks.offsets[p]; s < walks.offsets[p + 1]; s++) {\n steps.push([names[walks.steps[s]], walks.reversed[s]]);\n }\n lines.push(\n fields ? `W\t${fields.sample}\t${fields.haplotype}\t${fields.contig}\t${start}\t${end}\t${steps.map(([id, rev]) => (rev ? \"<\" : \">\") + id).join(\"\")}${walkStopTags(walks, p)}` : `P\t${pLineName(name, start, end)}\t${steps.map(([id, rev]) => id + (rev ? \"-\" : \"+\")).join(\",\")}\t*`\n );\n }\n return lines.join(\"\\n\");\n}\n\nexport {\n tablePath,\n tableNodeIds,\n graphFromTables,\n graphTablesGFA\n};\n", "import {\n tableNodeIds,\n tablePath\n} from \"./chunk-7L7MN2OM.js\";\nimport {\n gapParts\n} from \"./chunk-LG2UK4MB.js\";\nimport {\n pathOrigin\n} from \"./chunk-3YBP46PB.js\";\nimport {\n groupBy\n} from \"./chunk-BSOZW3FC.js\";\nimport {\n panSNContig,\n panSNHaplotype,\n panSNSample\n} from \"./chunk-2JL2JVZ2.js\";\n\n// src/layout/walkRowRuns.ts\nvar RUN_ON_REFERENCE = 1;\nvar RUN_REVERSED = 2;\nvar RUN_GAP = 4;\nvar GAP_CAUSES = [\n void 0,\n \"missing\",\n \"elsewhere\",\n \"unknown\",\n \"abridged\"\n];\nvar CAUSE_SHIFT = 3;\nvar causeFlags = (cause) => GAP_CAUSES.indexOf(cause) << CAUSE_SHIFT;\nfunction referenceOf(names, referencePath, rankZero) {\n return referencePath !== void 0 && names.includes(referencePath) ? referencePath : names.find((n) => rankZero.has(n)) ?? names[0];\n}\nfunction referenceWalkName(graph) {\n return referenceOf(\n (graph.paths ?? []).map((p) => pathOrigin(p.name).name),\n graph.referencePath,\n new Set(\n graph.nodes.flatMap(\n (n) => n.stable?.rank === 0 ? [n.stable.refName] : []\n )\n )\n );\n}\nfunction graphPieces(graph) {\n const index = /* @__PURE__ */ new Map();\n const names = [];\n const lengths = [];\n const indexOf = (id) => {\n let i = index.get(id);\n if (i === void 0) {\n i = names.length;\n index.set(id, i);\n names.push(id);\n lengths.push(0);\n }\n return i;\n };\n for (const node of graph.nodes) {\n lengths[indexOf(node.id)] = node.length;\n }\n const heads = graph.paths ?? [];\n const from = new Int32Array(heads.length);\n const to = new Int32Array(heads.length);\n const steps = [];\n heads.forEach((path, p) => {\n from[p] = steps.length;\n for (const id of path.nodeIds) {\n steps.push(indexOf(id));\n }\n to[p] = steps.length;\n });\n return {\n heads,\n from,\n to,\n steps: Int32Array.from(steps),\n lengths: Int32Array.from(lengths),\n names,\n reference: referenceWalkName(graph)\n };\n}\nfunction tablePieces(tables, referencePath, visits) {\n const { nodes: n, walks: w } = tables;\n const kept = [];\n for (let p = 0; p < w.names.length; p++) {\n if (w.offsets[p + 1] > w.offsets[p]) {\n kept.push(p);\n }\n }\n const heads = kept.map((p) => tablePath(w, p));\n const rankZero = /* @__PURE__ */ new Set();\n for (let i = 0; i < n.lengths.length; i++) {\n if (n.refs[i] >= 0 && n.ranks[i] === 0) {\n rankZero.add(n.refNames[n.refs[i]]);\n }\n }\n return {\n heads,\n from: Int32Array.from(kept, (p) => w.offsets[p]),\n to: Int32Array.from(kept, (p) => w.offsets[p + 1]),\n steps: w.steps,\n lengths: n.lengths,\n // a visit names its node as the Graph does, which costs a pass over the\n // steps\n names: visits ? tableNodeIds(tables) : n.names,\n reference: referenceOf(\n heads.map((h) => pathOrigin(h.name).name),\n referencePath,\n rankZero\n )\n };\n}\nfunction sampleOf(path) {\n return path.sample ?? panSNSample(path.name);\n}\nfunction labelOf(path) {\n return path.haplotype !== void 0 && path.sample !== void 0 ? `${path.sample}#${path.haplotype}` : sampleOf(path);\n}\nvar Columns = class {\n constructor(width) {\n this.offsets = [0];\n this.values = Array.from({ length: width }, () => []);\n }\n get length() {\n return this.values[0].length;\n }\n push(a, b, c, d, e) {\n const v = this.values;\n v[0].push(a);\n v[1].push(b);\n v[2].push(c);\n v[3].push(d);\n if (e !== void 0) {\n v[4].push(e);\n }\n }\n endRow() {\n this.offsets.push(this.length);\n }\n // the rows in `order`, column i in the array `make[i]` makes\n reorder(order, make) {\n const offsets = new Uint32Array(order.length + 1);\n order.forEach((row, i) => {\n offsets[i + 1] = offsets[i] + this.offsets[row + 1] - this.offsets[row];\n });\n const columns = make.map((m, c) => {\n const from = this.values[c];\n const out = m(this.length);\n let at = 0;\n for (const row of order) {\n for (let k = this.offsets[row]; k < this.offsets[row + 1]; k++) {\n out[at++] = from[k];\n }\n }\n return out;\n });\n return { offsets, columns };\n }\n};\nvar float64 = (n) => new Float64Array(n);\nfunction walkRowRuns(source, region, o = {}) {\n const {\n heads,\n from,\n to,\n steps: all,\n lengths,\n names,\n reference\n } = \"walks\" in source ? tablePieces(source, o.referencePath, o.visits) : graphPieces(source);\n const declared = lengths.length;\n const lengthOf = (node) => node < declared ? lengths[node] : 0;\n const nameOf = (p) => pathOrigin(heads[p].name).name;\n const startOf = (p) => heads[p].start;\n const byStart = (a, b) => (startOf(a) ?? 0) - (startOf(b) ?? 0);\n const pieceIds = heads.map((_, p) => p);\n const referencePieces = pieceIds.filter((p) => nameOf(p) === reference).sort(byStart);\n const first = referencePieces[0];\n const others = pieceIds.filter((p) => nameOf(p) !== reference);\n if (first === void 0 || others.length === 0) {\n return void 0;\n }\n const walks = groupBy(others, nameOf);\n const spanStart = new Float64Array(names.length).fill(Number.NaN);\n const spanEnd = new Float64Array(names.length);\n const revisits = /* @__PURE__ */ new Map();\n let reachesBefore = false;\n let reachesAfter = false;\n const cut = region && region.end > region.start ? region : void 0;\n for (const piece of referencePieces) {\n let pos = startOf(piece) ?? 0;\n for (let s = from[piece], stop = to[piece]; s < stop; s++) {\n const node = all[s];\n const len = lengthOf(node);\n if (!Number.isNaN(spanStart[node])) {\n const starts = revisits.get(node);\n if (starts) {\n starts.push(pos);\n } else {\n revisits.set(node, [spanStart[node], pos]);\n }\n } else {\n spanStart[node] = pos;\n spanEnd[node] = pos + len;\n if (cut) {\n reachesBefore ||= pos + len <= cut.start;\n reachesAfter ||= pos >= cut.end;\n }\n }\n pos += len;\n }\n }\n const flanked = cut === void 0 || reachesBefore && reachesAfter;\n const runs = new Columns(5);\n const chunks = [];\n const chunkIndex = /* @__PURE__ */ new Map();\n const chunkOf = (chunk2) => {\n if (!chunk2) {\n return -1;\n }\n const key = `${chunk2.refName}:${chunk2.start}`;\n let i = chunkIndex.get(key);\n if (i === void 0) {\n i = chunks.length;\n chunkIndex.set(key, i);\n chunks.push(chunk2);\n }\n return i;\n };\n const visits = o.visits ? new Columns(4) : void 0;\n let steps = new Int32Array(0);\n let stepStart = new Float64Array(0);\n const rowOf = (pieces) => {\n const head = heads[pieces[0]];\n const ordered = [...pieces].sort(byStart);\n let count = ordered.length - 1;\n let abridgedSteps = 0;\n for (const piece of ordered) {\n count += to[piece] - from[piece] + (heads[piece].abridged ? 1 : 0);\n abridgedSteps += heads[piece].abridged?.steps ?? 0;\n }\n if (count > steps.length) {\n steps = new Int32Array(count * 2);\n stepStart = new Float64Array(count * 2);\n }\n let length = 0;\n let unplaced = false;\n let end;\n let previous;\n const partsAt = /* @__PURE__ */ new Map();\n for (const piece of ordered) {\n const start2 = startOf(piece);\n if (start2 === void 0 || end !== void 0 && start2 < end) {\n unplaced = true;\n }\n if (end !== void 0 && start2 !== void 0 && start2 > end) {\n partsAt.set(\n length,\n gapParts(\n start2 - end,\n previous === void 0 ? void 0 : heads[previous].after,\n heads[piece].before\n )\n );\n steps[length] = -(start2 - end);\n stepStart[length++] = end;\n }\n let pos = start2 ?? 0;\n const abridged = heads[piece].abridged;\n for (let s = from[piece], stop2 = to[piece]; s < stop2; s++) {\n const node = all[s];\n const bp3 = abridged ? abridged.bp - (pos - (start2 ?? 0)) - lengthOf(node) : 0;\n if (bp3 > 0 && s === stop2 - 1 && s > from[piece]) {\n partsAt.set(length, [{ bp: bp3, cause: \"abridged\" }]);\n steps[length] = -bp3;\n stepStart[length++] = pos;\n pos += bp3;\n }\n steps[length] = node;\n stepStart[length++] = pos;\n pos += lengthOf(node);\n }\n end = start2 === void 0 ? void 0 : pos;\n previous = piece;\n }\n const onReference = (i) => i >= 0 && i < length && steps[i] >= 0 && !Number.isNaN(spanStart[steps[i]]);\n const stepEnd = (i) => {\n const id = steps[i];\n return stepStart[i] + (id < 0 ? -id : lengthOf(id));\n };\n const partialSide = (i0, i1) => {\n const flank = i0 >= 0 ? i0 : i1;\n let near = -1;\n for (let d = 1; near < 0 && d < length; d++) {\n near = [flank - d, flank + d].find(onReference) ?? -1;\n }\n if (near < 0) {\n return void 0;\n }\n const forward = near > flank === spanStart[steps[near]] > spanStart[steps[flank]];\n const after = forward === (flank === i0);\n const last2 = after ? length - 1 : 0;\n const contigEnds = onReference(last2);\n const stop2 = {\n contigEnds,\n shortBp: contigEnds ? Math.max(\n 0,\n cut.start - spanEnd[steps[last2]],\n spanStart[steps[last2]] - cut.end\n ) : 0\n };\n return {\n stop: stop2,\n lo: after ? flank + 1 : 0,\n hi: after ? length : flank,\n backward: !forward,\n axisStart: forward ? after ? stepEnd(flank) : stepStart[0] : after ? stepEnd(length - 1) : stepStart[flank]\n };\n };\n let lo = 0;\n let hi = length;\n let backward = false;\n let complete = true;\n let flankFrom = -1;\n let flankTo = -1;\n let axisStart;\n let stop;\n if (cut && flanked) {\n let i0 = -1;\n let i1 = -1;\n let bestEnd = -Infinity;\n let bestStart = Infinity;\n for (let i = 0; i < length; i++) {\n const id = steps[i];\n if (id >= 0 && !Number.isNaN(spanStart[id])) {\n if (spanEnd[id] <= cut.start && spanEnd[id] > bestEnd) {\n bestEnd = spanEnd[id];\n i0 = i;\n }\n if (spanStart[id] >= cut.end && spanStart[id] < bestStart) {\n bestStart = spanStart[id];\n i1 = i;\n }\n }\n }\n if (i0 < 0 || i1 < 0) {\n complete = false;\n const inside = i0 >= 0 || i1 >= 0 ? partialSide(i0, i1) : void 0;\n if (inside) {\n ;\n ({ lo, hi, backward, axisStart, stop } = inside);\n }\n } else {\n lo = Math.min(i0, i1) + 1;\n hi = Math.max(i0, i1);\n backward = i0 > i1;\n flankFrom = i0;\n flankTo = i1;\n }\n }\n const contig = head.contig ?? panSNContig(pathOrigin(head.name).name);\n const axis = unplaced || length === 0 ? void 0 : axisStart !== void 0 ? { contig, start: axisStart, reversed: backward } : flankFrom < 0 ? { contig, start: stepStart[0], reversed: false } : flankFrom < flankTo ? { contig, start: stepEnd(flankFrom), reversed: false } : { contig, start: stepStart[flankFrom], reversed: true };\n let bp2 = 0;\n let offReferenceBp = 0;\n let gapBp = 0;\n let step = 0;\n let last = -1;\n let lastFlags = 0;\n let lastRef = Number.NaN;\n let cursor = Number.NaN;\n const placeOf = (id) => {\n const starts = revisits.get(id);\n if (!starts || Number.isNaN(cursor)) {\n return spanStart[id];\n }\n const len = lengthOf(id);\n let best = starts[0];\n let bestGap = Infinity;\n for (const start2 of starts) {\n const gap = Math.min(\n Math.abs(start2 - cursor),\n Math.abs(start2 + len - cursor)\n );\n if (gap < bestGap) {\n best = start2;\n bestGap = gap;\n }\n }\n return best;\n };\n const [, runBp, runRef, runFlags] = runs.values;\n for (let k = lo; k < hi; k++) {\n const index = backward ? hi - 1 - (k - lo) : k;\n const id = steps[index];\n if (id < 0) {\n const parts = partsAt.get(index);\n for (const part of backward ? [...parts].reverse() : parts) {\n runs.push(\n bp2,\n part.bp,\n Number.NaN,\n RUN_GAP | causeFlags(part.cause),\n chunkOf(part.chunk)\n );\n bp2 += part.bp;\n }\n last = runs.length - 1;\n lastFlags = RUN_GAP;\n lastRef = Number.NaN;\n gapBp += -id;\n step = 0;\n continue;\n }\n const len = lengthOf(id);\n const at = placeOf(id);\n const on = !Number.isNaN(at);\n visits?.push(id, bp2, len, on ? 1 : 0);\n const placed = last >= 0 && !Number.isNaN(lastRef);\n const forward = on && placed && step >= 0 && lastRef + (runBp[last] ?? 0) === at;\n const back = on && placed && step <= 0 && at + len === lastRef;\n if (!on && last >= 0 && !(lastFlags & (RUN_ON_REFERENCE | RUN_GAP))) {\n runBp[last] += len;\n } else if (forward || back) {\n runBp[last] += len;\n if (!forward) {\n lastRef = at;\n runRef[last] = at;\n lastFlags |= RUN_REVERSED;\n runFlags[last] = lastFlags;\n }\n step = forward ? 1 : -1;\n } else {\n lastFlags = on ? RUN_ON_REFERENCE : 0;\n lastRef = on ? at : Number.NaN;\n runs.push(bp2, len, lastRef, lastFlags, -1);\n last = runs.length - 1;\n step = 0;\n }\n bp2 += len;\n if (on) {\n cursor = step < 0 ? at : at + len;\n } else {\n offReferenceBp += len;\n }\n }\n runs.endRow();\n visits?.endRow();\n return {\n name: head.name,\n label: labelOf(head),\n sample: sampleOf(head),\n haplotype: head.haplotype,\n bp: bp2,\n offReferenceBp,\n gapBp,\n complete,\n stop,\n axis,\n ...abridgedSteps > 0 ? { abridgedSteps } : {}\n };\n };\n const referenceRow = rowOf(referencePieces);\n const rows = [...walks.values()].map((pieces, i) => ({\n meta: rowOf(pieces),\n row: i + 1\n }));\n const metas = [referenceRow, ...rows.map((r) => r.meta)];\n if (new Set(metas.map((m) => m.label)).size < metas.length) {\n for (const meta of metas) {\n meta.label = panSNHaplotype(meta.name) ?? meta.label;\n }\n }\n rows.sort(\n (a, b) => Number(b.meta.complete) - Number(a.meta.complete) || b.meta.bp - a.meta.bp || a.meta.label.localeCompare(b.meta.label)\n );\n const order = [0, ...rows.map((r) => r.row)];\n const { offsets, columns } = runs.reorder(order, [\n float64,\n float64,\n float64,\n (n) => new Uint8Array(n),\n (n) => new Int32Array(n)\n ]);\n const [start, bp, referenceStart, flags, chunk] = columns;\n return {\n origin: cut ? cut.start : startOf(first) ?? 0,\n rows: [referenceRow, ...rows.map((r) => r.meta)],\n offsets,\n start,\n bp,\n referenceStart,\n flags,\n chunk,\n chunks,\n visits: visits && visitColumns(visits, order, names)\n };\n}\nfunction visitColumns(visits, order, names) {\n const { offsets, columns } = visits.reorder(order, [\n (n) => new Int32Array(n),\n float64,\n float64,\n (n) => new Uint8Array(n)\n ]);\n const [node, start, bp, onReference] = columns;\n return { offsets, node, start, bp, onReference, names };\n}\nfunction runAt(t, k) {\n const f = t.flags[k];\n const run = {\n start: t.start[k],\n bp: t.bp[k],\n onReference: (f & RUN_ON_REFERENCE) !== 0\n };\n if (f & RUN_GAP) {\n run.gap = true;\n const cause = GAP_CAUSES[f >> CAUSE_SHIFT & 7];\n if (cause) {\n run.cause = cause;\n }\n const chunk = t.chunks[t.chunk[k]];\n if (chunk) {\n run.chunk = chunk;\n }\n } else {\n run.referenceStart = Number.isNaN(t.referenceStart[k]) ? void 0 : t.referenceStart[k];\n }\n if (f & RUN_REVERSED) {\n run.reversed = true;\n }\n return run;\n}\nfunction visitsOf(v, row) {\n const out = [];\n for (let k = v.offsets[row]; k < v.offsets[row + 1]; k++) {\n out.push({\n node: v.names[v.node[k]],\n start: v.start[k],\n bp: v.bp[k],\n onReference: v.onReference[k] === 1\n });\n }\n return out;\n}\nfunction walkRowsOf(t, unit) {\n const rows = t.rows.map((meta, i) => {\n const runs = [];\n for (let k = t.offsets[i]; k < t.offsets[i + 1]; k++) {\n runs.push(runAt(t, k));\n }\n return {\n ...meta,\n runs,\n visits: t.visits && visitsOf(t.visits, i)\n };\n });\n return { origin: t.origin, unit, reference: rows[0], rows: rows.slice(1) };\n}\n\nexport {\n referenceWalkName,\n walkRowRuns,\n runAt,\n walkRowsOf\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["START_STOP_TAG", "END_STOP_TAG", "STOP_KINDS", "GAP_CAUSE_TEXT", "OUTSIDE_TEXT", "gapParts", "bp", "after", "before", "left", "right", "rest", "lead", "trail", "elsewhere", "s", "part", "stopAt", "table", "i", "ref", "stopOf", "kind", "trimmed", "chunk", "cut", "parseStopTag", "value", "kind", "fields", "bp", "trimmed", "chunk", "field", "at", "stopOf", "stopFields", "before", "after", "walkStopFields", "tags", "START_STOP_TAG", "END_STOP_TAG", "StopColumns", "stop", "STOP_KINDS", "chunk", "ref", "pLineName", "name", "start", "end", "tablePath", "w", "p", "walkName", "fields", "panSNFields", "steps", "abridged", "stopFields", "stopAt", "namesByList", "lists", "names", "listCount", "pathNames", "starts", "list", "i", "fill", "grouped", "listed", "_", "out", "k", "tableNodeIds", "n", "l", "traversals", "canonical", "claim", "node", "reversed", "stepCount", "s", "segment", "graphFromTables", "count", "declared", "drawnWalks", "ids", "nodes", "ref", "edges", "neighbours", "pairList", "b", "near", "j", "addPair", "edgeLists", "a", "adjacency", "adjacentNode", "adjacentList", "listOf", "nameIndex", "crossedList", "crossedName", "crossings", "lastWalk", "paths", "anchorPaths", "totalSteps", "visitPath", "visitStart", "visitReversed", "visitOrder", "blocks", "pathSamples", "edgeNameIndex", "edgeNames", "head", "pathName", "visitName", "named", "panSNSample", "edgeNamed", "visitSample", "first", "nodeIds", "pos", "prev", "at", "listNames", "edge", "walked", "PathVisits", "RUN_ON_REFERENCE", "RUN_REVERSED", "RUN_GAP", "GAP_CAUSES", "CAUSE_SHIFT", "causeFlags", "cause", "referenceOf", "names", "referencePath", "rankZero", "referenceWalkName", "graph", "p", "pathOrigin", "n", "graphPieces", "index", "lengths", "indexOf", "id", "i", "node", "heads", "from", "to", "steps", "path", "tablePieces", "tables", "visits", "w", "kept", "tablePath", "tableNodeIds", "h", "sampleOf", "panSNSample", "labelOf", "Columns", "width", "a", "b", "c", "d", "e", "v", "order", "make", "offsets", "row", "columns", "m", "out", "at", "float64", "walkRowRuns", "source", "region", "o", "all", "reference", "declared", "lengthOf", "nameOf", "startOf", "byStart", "pieceIds", "_", "referencePieces", "first", "others", "walks", "groupBy", "spanStart", "spanEnd", "revisits", "reachesBefore", "reachesAfter", "cut", "piece", "pos", "s", "stop", "len", "starts", "flanked", "runs", "chunks", "chunkIndex", "chunkOf", "chunk2", "key", "stepStart", "rowOf", "pieces", "head", "ordered", "count", "abridgedSteps", "length", "unplaced", "end", "previous", "partsAt", "start2", "gapParts", "abridged", "stop2", "bp3", "onReference", "stepEnd", "partialSide", "i0", "i1", "flank", "near", "forward", "after", "last2", "contigEnds", "lo", "hi", "backward", "complete", "flankFrom", "flankTo", "axisStart", "bestEnd", "bestStart", "inside", "contig", "panSNContig", "axis", "bp2", "offReferenceBp", "gapBp", "step", "last", "lastFlags", "lastRef", "cursor", "placeOf", "best", "bestGap", "gap", "runBp", "runRef", "runFlags", "k", "parts", "part", "on", "placed", "back", "referenceRow", "rows", "metas", "r", "meta", "panSNHaplotype", "start", "bp", "referenceStart", "flags", "chunk", "visitColumns", "runAt", "f", "run", "visitsOf", "walkRowsOf", "unit"]
@@ -1,2 +1,2 @@
1
- import{a as lt,c as dt,d as ht,g as N,j as J,l as xt,q as pt,r as R,w as mt,x as Mt}from"./chunk-SPL3UO2D.js";import{b as yt}from"./chunk-FCMXEFJA.js";var bt=20;function lo(t){let n=o=>Math.round(o*100)/100;return t.map((o,e)=>`${e?"L":"M"}${n(o.x)},${n(o.y)}`).join("")}function gt(t,n,o,e,s){let r=Math.hypot(e-n,o-t);if(r===0)return[o,e];let c=(o-t)/r,a=(e-n)/r;return[o+s*c,e+s*a]}function Y(t,n){let o=1-n,e=o*o*o,s=3*o*o*n,r=3*o*n*n,c=n*n*n;return{x:e*t.x0+s*t.cx0+r*t.cx1+c*t.x1,y:e*t.y0+s*t.cy0+r*t.cy1+c*t.y1}}function Ot(t){let n=t[Math.floor(t.length/2)];return n?Y(n,.5):void 0}function St(t){let n=1/0,o=1/0,e=-1/0,s=-1/0;for(let r of t)n=Math.min(n,r.x0,r.cx0,r.cx1,r.x1),e=Math.max(e,r.x0,r.cx0,r.cx1,r.x1),o=Math.min(o,r.y0,r.cy0,r.cy1,r.y1),s=Math.max(s,r.y0,r.cy0,r.cy1,r.y1);return{minX:n,minY:o,maxX:e,maxY:s}}function Qt(t,n,o){let e=Y(t,n),s=Y(t,o),r=(o-n)/3,c=vt(t,n),a=vt(t,o);return{x0:e.x,y0:e.y,cx0:e.x+c.x*r,cy0:e.y+c.y*r,cx1:s.x-a.x*r,cy1:s.y-a.y*r,x1:s.x,y1:s.y}}function vt(t,n){let o=1-n,e=3*o*o,s=6*o*n,r=3*n*n;return{x:e*(t.cx0-t.x0)+s*(t.cx1-t.cx0)+r*(t.x1-t.cx1),y:e*(t.cy0-t.y0)+s*(t.cy1-t.cy0)+r*(t.y1-t.cy1)}}var H=32;function Zt(t,n,o,e){let s=[],r=0;return t.forEach((c,a)=>{let i=n[a],d=i/H,l=Y(c,0);for(let u=1;u<=H;u++){let h=Y(c,u/H);if(Math.max(l.x,h.x)+d>=o.minX&&Math.min(l.x,h.x)-d<=o.maxX&&Math.max(l.y,h.y)+d/e>=o.minY&&Math.min(l.y,h.y)-d/e<=o.maxY){let f=r+i*(u-1)/H,x=r+i*u/H,y=s.at(-1);y&&y[1]>=f?y[1]=x:s.push([f,x])}l=h}r+=i}),s}function ho(t,n,o=1,e){let s=t.map(u=>Math.hypot(u.cx0-u.x0,(u.cy0-u.y0)*o)+Math.hypot(u.cx1-u.cx0,(u.cy1-u.cy0)*o)+Math.hypot(u.x1-u.cx1,(u.y1-u.cy1)*o)),r=s.reduce((u,h)=>u+h,0),c=Math.round(r/n),a=Math.max(3,c%2?c:c+1),i=e?Zt(t,s,e,o):void 0,d=0,l=[];for(let u=0;u<a;u+=2){let h=u/a*r,f=(u+1)/a*r;if(i){for(;d<i.length&&i[d][1]<h;)d++;if(d===i.length)break;if(i[d][0]>f)continue}let x=[],y=[],p=0;t.forEach((b,m)=>{let M=s[m],v=p+M;if(M>0&&v>h&&p<f){let g=Math.max(0,(h-p)/M),w=Math.min(1,(f-p)/M);x.push(Qt(b,g,w)),y.push((m+g)/t.length,(m+w)/t.length)}p=v}),x.length&&l.push({curves:x,startAlong:y[0],endAlong:y.at(-1)})}return l}var xo=(t,n,o)=>({dx:t.dx+(n.dx-t.dx)*o,dy:t.dy+(n.dy-t.dy)*o});function yo(t,n,o,e,s){let r=t.length,c=new Array(r);for(let a=0;a<r;a++){let i=t[a],d=a/r,l=(a+1)/r,u=n+(e-n)*d,h=o+(s-o)*d,f=n+(e-n)*l,x=o+(s-o)*l;c[a]={x0:i.x0+u,y0:i.y0+h,cx0:i.cx0+u,cy0:i.cy0+h,cx1:i.cx1+f,cy1:i.cy1+x,x1:i.x1+f,y1:i.y1+x}}return c}function po(t,n,o){let e=new Array(t.length);for(let s=0;s<t.length;s++){let r=t[s];e[s]={x0:r.x0+n,y0:r.y0+o,cx0:r.cx0+n,cy0:r.cy0+o,cx1:r.cx1+n,cy1:r.cy1+o,x1:r.x1+n,y1:r.y1+o}}return e}function $(t,n){let o=t.length-1;return n==="end"?{at:t[o],inward:t[o-1]}:{at:t[0],inward:t[1]}}var tn=.5,nn=80;function F(t){return t.endsWith("-")?"-":"+"}function G(t){let n=(o,e)=>(e??F(o))===F(o);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function wt(t){let n=1/0,o=-1/0;for(let e of t)n=Math.min(n,e.x),o=Math.max(o,e.x);return{min:n,max:o}}function At(t,n){return Math.max(0,n.min-t,t-n.max)}function _t(t,n,o){let e=At(t[0].x,n),s=At(t[t.length-1].x,n);return e===s?o:e<s?"start":"end"}function on(t,n){return{from:_t(t,wt(n),"end"),to:_t(n,wt(t),"start")}}var Et=new WeakMap;function en(t,n){let o=Et.get(t);o||(o=new WeakMap,Et.set(t,o));let e=o.get(n);return e||(e=on(t,n),o.set(n,e)),e}var sn=.75,rn=1.15,cn=.35,an=3*bt;function fn(t,n,o,e,s,r){let c=Math.hypot(o-t,e-n),a=c===0?1:(o-t)/c,i=c===0?0:(e-n)/c,d=0,l=1/0,u=-1/0;for(let y of s){let p=y.x-t,b=y.y-n,m=p*-i+b*a;Math.abs(m)>Math.abs(d)&&(d=m);let M=p*a+b*i;l=Math.min(l,M),u=Math.max(u,M)}let h=s.length?u-l:0,f=Math.max(Math.abs(d)*rn/sn,h*cn),x=r===void 0?f:Math.min(f,r);return d<0?-x:x}function Pt({scaleX:t,scaleY:n}){return n/t}var un=3;function K(t,n,o){let e=n.x-t.x,s=(n.y-t.y)*o,r=Math.hypot(e,s);return r===0?void 0:{x:e/r,y:s/r}}function mo(t,n,o,e){let s=Pt(e),r=un/Math.max(e.scaleX,1e-6),c=K(t[t.length-1],n[0],s)??K(t[0],t.at(-1),s)??K(n[0],n.at(-1),s)??{x:1,y:0},a=[];for(let i=0;i<o;i++){let d=(i-(o-1)/2)*r;a.push({x:-c.y*d,y:c.x*d/s})}return a}function Q(t,n){return t.map(o=>({x:o.x,y:o.y*n}))}function ln(t,n){for(let o of t)o.y0/=n,o.cy0/=n,o.cy1/=n,o.y1/=n;return t}function Z(t,n,o){let e=0;for(let s=1;s<t.length;s++){let r=t[s-1],c=t[s];e+=Math.hypot((c.x-r.x)*n,(c.y-r.y)*o)}return e}var dn=12,hn=40;function It(t,n){let o=Z(t,n,n);return Math.min(hn,Math.max(dn,o/2))/Math.max(n,Number.EPSILON)}function xn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Xt(t,n=!1){let o=xn(t);if(!n)return o;let e=G(t);return o===!1?e:e.from===e.to?e.from:!0}function yn(t,n){let{at:o,inward:e}=t,s=e?o.x-e.x:1,r=e?o.y-e.y:0,c=Math.hypot(s,r)||1,a=s/c,i=r/c,d=o.x,l=o.y,u=d+a*n/3,h=l+i*n/3,f=d+a*n,x=l+i*n,y=-i*n/2,p=a*n/2;return[{x0:d,y0:l,cx0:u,cy0:h,cx1:f+y,cy1:x+p,x1:f,y1:x},{x0:f,y0:x,cx0:f-y,cy0:x-p,cx1:u,cy1:h,x1:d,y1:l}]}function tt(t,n,o,e,s=[],r){let c=e.scaleX,a=Pt(e),i=r??(e.pixelRows?an:void 0);if(o===!1&&(o=en(t,n)),a!==1)return ln(tt(Q(t,a),Q(n,a),o,{scaleX:c,scaleY:c},Q(s,a),i===void 0?void 0:i*a),a);if(typeof o=="string")return yn($(t,o),It(t,c));let d=o===!0,l=o===!0?{from:"end",to:"start"}:o,u=$(t,l.from),h=$(n,l.to),f=u.at,x=h.at,y=f.x,p=f.y,b=x.x,m=x.y;if(d){let M=1,v=0;if(u.inward){let S=f.x-u.inward.x,P=f.y-u.inward.y,C=Math.hypot(S,P);C>0&&(M=S/C,v=P/C)}let g=It(t,c),w=-v,_=M,I=(f.x+x.x)/2+w*g,E=(f.y+x.y)/2+_*g,A=y+M*g,X=p+v*g,O=b-M*g,L=m-v*g;return[{x0:y,y0:p,cx0:A,cy0:X,cx1:A+w*g,cy1:X+_*g,x1:I,y1:E},{x0:I,y0:E,cx0:O+w*g,cy0:L+_*g,cx1:O,cy1:L,x1:b,y1:m}]}else{let M=u.inward??{x:f.x-(x.x-f.x),y:f.y-(x.y-f.y)},v=h.inward??{x:x.x-(f.x-x.x),y:x.y-(f.y-x.y)},g=Math.hypot(b-y,m-p),w=(ct,at,Ut,Jt)=>{let it=at.x-ct.x,ft=at.y-ct.y,ut=Math.hypot(it,ft),Kt=ut===0?0:(Ut*it+Jt*ft)/ut;return Math.max(0,Math.min(g*tn,nn,Kt*.5))},_=x.x-f.x,I=x.y-f.y,[E,A]=gt(M.x,M.y,f.x,f.y,w(M,f,_,I)),[X,O]=gt(v.x,v.y,x.x,x.y,w(v,x,-_,-I)),L=s.length?fn(y,p,b,m,s,i):0,S=g===0?1:g,P=(b-y)/S,C=(m-p)/S,T=-C*L,B=P*L,W=P*Math.abs(L),rt=C*Math.abs(L);return[{x0:y,y0:p,cx0:E+T-W,cy0:A+B-rt,cx1:X+T+W,cy1:O+B+rt,x1:b,y1:m}]}}function Lt(t,n){let o=t[0],e=t.at(-1);return Math.hypot(o.x-n.x,o.y-n.y)<Math.hypot(e.x-n.x,e.y-n.y)?"start":"end"}function Ct(t,n,o,e){let s=$(t,e?.from??Lt(t,o[0])),r=$(n,e?.to??Lt(n,o.at(-1))),c=[s.at,...o,r.at],a=d=>{let l=c[d],u=f=>Math.hypot(f.x-l.x,f.y-l.y),h=(f,x)=>{let y=f?u(f):0,p=u(x);return y===0?{x:x.x-l.x,y:x.y-l.y}:{x:(l.x-f.x)/y*p,y:(l.y-f.y)/y*p}};if(d===0)return h(s.inward,c[1]);if(d===c.length-1){let f=h(r.inward,c[d-1]);return{x:-f.x,y:-f.y}}return{x:(c[d+1].x-c[d-1].x)/2,y:(c[d+1].y-c[d-1].y)/2}},i=[];for(let d=0;d<c.length-1;d++){let l=c[d],u=c[d+1],h=a(d),f=a(d+1);i.push({x0:l.x,y0:l.y,cx0:l.x+h.x/3,cy0:l.y+h.y/3,cx1:u.x-f.x/3,cy1:u.y-f.y/3,x1:u.x,y1:u.y})}return i}function nt(){let t=new WeakMap;return(n,o,e)=>{let s=t.get(n);if(s?.deps.length===o.length&&s.deps.every((c,a)=>Object.is(c,o[a])))return s.value;let r=e();return t.set(n,{deps:o,value:r}),r}}var Nt=11,pn=6.2,V=4;function ot(t){return t.length*pn+V*2}function mn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function kt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function Mn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function Bt(t,n=[]){let o=[...n];return e=>kt(e,t)||o.some(s=>mn(s,e))?!1:(o.push(e),!0)}function go(t,n,o){let e=[],s=Nt+V*2,r=(c,a)=>{let i=ot(a),d=c.y>n.height/2?-1:1;for(let l=0;l<=(c.stack??0);l++){let u=c.y+d*l*s,h={x0:c.x-i/2,x1:c.x+i/2,y0:u-Nt-V,y1:u+V};if(kt(h,n))return;if(Mn(h,n)&&(c.fits?.(h)??!0)&&o(h))return{...c,text:a,y:u,w:i}}};for(let c of t){let a=r(c,c.text)??(c.fallback===void 0?void 0:r(c,c.fallback));a&&e.push(a)}return e}function Tt(t){return t==="+"?"-":"+"}function Eo(t,n=new Set){let o=t.edges.map(G),e=new Map,s=(f,x,y)=>{lt(e,`${f}|${x}`,y)};t.edges.forEach((f,x)=>{s(f.from,o[x].from,x),s(f.to,o[x].to,x)});let r=f=>{let x=e.get(`${f}|end`);if(x?.length!==1)return;let y=x[0],p=t.edges[y];return p.from===f&&p.to!==f&&!n.has(f)&&!n.has(p.to)&&o[y].from==="end"&&o[y].to==="start"&&e.get(`${p.to}|start`)?.length===1?y:void 0},c=new Set,a=new Map,i=new Map;for(let f of t.nodes){let x=e.get(`${f.id}|start`),y=x?.length===1?t.edges[x[0]].from:void 0;if(a.has(f.id)||y!==void 0&&r(y)===x[0])continue;let p=[f.id];for(;;){let b=r(p.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||a.has(m))break;c.add(b),p.push(m)}for(let b of p)a.set(b,f.id);p.length>1&&i.set(f.id,p)}for(let f of t.nodes)a.has(f.id)||a.set(f.id,f.id);let d=new Map(t.nodes.map(f=>[f.id,f])),l=[];for(let f of t.nodes){if(a.get(f.id)!==f.id)continue;let x=i.get(f.id);if(!x){l.push(f);continue}let y=x.map(m=>d.get(m)),p=y.filter(N),b=p.length?p.reduce((m,M)=>m.stable.start<=M.stable.start?m:M):y[0];l.push({id:f.id,name:f.name,length:y.reduce((m,M)=>m+M.length,0),depth:f.depth,stable:b.stable})}let u=new Set,h=[];return t.edges.forEach((f,x)=>{let y=a.get(f.from),p=a.get(f.to),b=o[x],m=`${y}|${b.from}>${p}|${b.to}`;c.has(x)||u.has(m)||(u.add(m),h.push({from:y,to:p,...b.from==="start"?{fromStrand:Tt(F(y))}:{},...b.to==="end"?{toStrand:Tt(F(p))}:{}}))}),{graph:{...t,nodes:l,edges:h,paths:void 0,pathVisits:void 0},runs:i}}function Io(t,n,o){let e={...t};for(let[s,r]of n){let c=t[s];if(!c?.length)continue;delete e[s];let a=st(c),i=a.at(-1),d=r.map(h=>Math.max(o(h),0)),l=d.reduce((h,f)=>h+f,0),u=0;r.forEach((h,f)=>{let x=l?d[f]/l*i:i/r.length,y=f===r.length-1?i:u+x;e[h]=Ht(c,a,u,y),u=y})}return e}function Lo(t,n,o){if(t.length===0)return[];let e=st(t),s=e.at(-1);return Ht(t,e,n*s,o*s)}function Wt(t){let n=st(t);return et(t,n,n.at(-1)/2)}function st(t){let n=[0];for(let o=1;o<t.length;o++)n.push(n[o-1]+Math.hypot(t[o].x-t[o-1].x,t[o].y-t[o-1].y));return n}function Rt(t,n){let o=0,e=t.length;for(;o<e;){let s=o+e>>1;t[s]<n?o=s+1:e=s}return o}function et(t,n,o){if(o<=0)return{...t[0]};let e=Rt(n,o);if(e>=n.length)return{...t.at(-1)};let s=n[e]-n[e-1],r=s>0?(o-n[e-1])/s:0,c=t[e-1],a=t[e];return{x:c.x+(a.x-c.x)*r,y:c.y+(a.y-c.y)*r}}function Ht(t,n,o,e){let s=[et(t,n,o)];for(let r=Rt(n,o);r<t.length&&n[r]<e;r++)n[r]>o&&s.push({...t[r]});return s.push(et(t,n,e)),s}function Co(t,n){let o=new Set(t.nodes.filter(i=>N(i)&&J(i,n)).map(i=>i.id)),e=t.paths??[];if(o.size===0||e.length===0)return t;let s=e.map(i=>{let d=-1,l=-1;return i.nodeIds.forEach((u,h)=>{o.has(u)&&(d<0&&(d=h),l=h)}),d<0?void 0:{first:d,last:l}});if(s.every((i,d)=>i?.first===0&&i.last===e[d].nodeIds.length-1))return t;let r=new Set,c=[],a=new Map;return e.forEach((i,d)=>{let l=s[d];if(l){let u=i.nodeIds.slice(l.first,l.last+1);for(let h of u)r.add(h);c.push({...i,nodeIds:u}),a.set(i.name,{first:l.first,nodeIds:u})}}),{...t,nodes:t.nodes.filter(i=>r.has(i.id)),edges:t.edges.filter(i=>r.has(i.from)&&r.has(i.to)),paths:c,pathVisits:t.pathVisits&&bn(t.pathVisits,e,s,new Map(t.nodes.map(i=>[i.id,i.name]))),anchorPaths:mt(t,a)}}function bn(t,n,o,e){let s=t.replay(),r=new pt;return n.forEach((c,a)=>{let i=t.pathIndex(R(c.name).name),d=o[a];c.nodeIds.forEach((l,u)=>{let h=e.get(l)??l,f=s(t.slot(h),i);f>=0&&d&&u>=d.first&&u<=d.last&&r.add(h,t.paths[i],t.samples[i],t.start[f],t.reversed[f]===1)})}),r.build()}function No(t,n,o){let e=t.nodes.map(s=>{if(!N(s))return s;let r=s.stable.start,c=r+s.length,[a,i]=J(s,n)?[Math.max(r,n.start),Math.min(c,n.end)]:c<=n.start?[Math.max(r,c-o),c]:[r,Math.min(c,r+o)];return a===r&&i===c?s:{...s,length:i-a,stable:{...s.stable,start:a},unclipped:{start:r,length:s.length}}});return e.some((s,r)=>s!==t.nodes[r])?{...t,nodes:e}:t}function $t(t){return t.nodes.some(n=>n.unclipped)?{...t,nodes:t.nodes.map(({unclipped:n,...o})=>n&&o.stable?{...o,length:n.length,stable:{...o.stable,start:n.start}}:o)}:t}var gn=1;function vn(t,n){return n.flatMap(o=>t[o]??[])}function Ft(t,n,o,e,s,r){let c=t[n.from],a=t[n.to];if(!(!c?.length||!a?.length))return s?Ct(c,a,s,r?G(n):void 0):tt(c,a,Xt(n,r),o,e?vn(t,e):[])}function wn(t){let n=dt(t.nodes.filter(N),o=>o.stable.refName);for(let o of n.values())o.sort((e,s)=>e.stable.start-s.stable.start);return n}function An(t,n,o){let e=[];if(t)for(let s=xt(t,n);s<t.length;s++){let r=t[s];if(r.stable.start>=o)break;r.stable.start+r.length<=o&&e.push(r.id)}return e}function _n(t,n,o,e){let{fromStrand:s,toStrand:r}=t;if(s===void 0||r===void 0)return!0;let c=s===(n.stable.strand??"+"),a=r===(o.stable.strand??"+");return e?c&&a:!c&&!a}function En(t,n,o,e){let s;for(let r of e(n))for(let c of e(o)){let a=r<=c,i=a?{start:r+n.length,end:c}:{start:c+o.length,end:r};_n(t,n,o,a)&&(!s||Math.abs(i.end-i.start)<Math.abs(s.end-s.start))&&(s=i)}return s}var In=.01;function Ln(t,n){let o=new Map;for(let[e,s]of t){let r=s.flatMap(c=>{let a=n(c);return a.slice(1).map((i,d)=>({at:a[d],copy:i-a[d]}))});r.length&&o.set(e,r.sort((c,a)=>c.at-a.at))}return o}function On(t,n,o){if(!t)return!1;let e=ht(t.length,r=>t[r].at<n),s=[t[e-1],t[e]].filter(r=>r!==void 0).sort((r,c)=>Math.abs(r.at-n)-Math.abs(c.at-n))[0];return s!==void 0&&Math.abs(s.at-n)<=s.copy&&Math.abs(o-s.copy)<=s.copy*In}function Yo(t){let n=$t(t),o=new Map(n.nodes.map(a=>[a.id,a])),e=wn(n),s=Mt(n),r=Ln(e,s),c=[];for(let a=0;a<n.edges.length;a++){let i=n.edges[a],d=o.get(i.from),l=o.get(i.to);if(!i.foldBridge&&d!==void 0&&l!==void 0&&N(d)&&N(l)&&d.stable.refName===l.stable.refName){let u=En(i,d,l,s),h=d.stable.refName,f=u?u.end-u.start:0;if(u&&f>=gn&&!On(r.get(h),u.start,f)){let{start:x,end:y}=u;c.push({edgeIndex:a,from:i.from,to:i.to,...i.fromStrand?{fromStrand:i.fromStrand}:{},...i.toStrand?{toStrand:i.toStrand}:{},refName:h,start:x,end:y,bp:f,bypassed:An(e.get(h),x,y)})}}}return c}function Sn(t,n){let o=new Map,e=c=>{let a=c;for(;o.has(a);)a=o.get(a);return a!==c&&o.set(c,a),a},s=(c,a)=>{let[i,d]=[e(c),e(a)];return i!==d&&o.set(i,d),i!==d},r=new Set(n.map(c=>c.edgeIndex));return t.edges.forEach((c,a)=>{r.has(a)||s(c.from,c.to)}),new Set(n.filter(c=>!s(c.from,c.to)).map(c=>c.edgeIndex))}var Yt=new WeakMap;function Fo(t,n,o=!0){let e=Yt.get(n);e||(e=new Map,Yt.set(n,e));let s=e.get(o);if(!s){let r=o?new Set:Sn(t,n);s={shown:n.filter(c=>!r.has(c.edgeIndex)),bypassed:new Map(n.map(c=>[c.edgeIndex,c.bypassed])),hidden:r},e.set(o,s)}return s}var Pn=26,Xn=4e4,Cn=8,Nn=8,kn=5.7,Bn=6,Tn=13,D=3,q=2;function U(t){return(t.length*kn+Bn+D)/2}var k=(Tn+D)/2,Wn=U("1 bp");function j(t,n,o){return{x0:n-t,x1:n+t,y0:o-k,y1:o+k}}function Uo(t,n){return{x0:6,x1:6+ot(t)+D,y0:n-8-D/2,y1:n+8+D/2}}function z(t,n,o){return o<n?t:Math.min(Math.max(t,n),o)}function Vt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function qt(t){let[n,o]=t>=999500?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${o}`}function Gt(t){return`${qt(t)} del`}function Rn(t,n,o,e){let s=t[0],r=t[t.length-1],c=(n.x-(s.x0+r.x1)/2)*o,a=(n.y-(s.y0+r.y1)/2)*e,i=Math.hypot(c,a);return i===0?{x:0,y:-1}:{x:c/i,y:a/i}}function Hn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function $n(t,n){let o=(t.x1-t.x0)/2,e=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:o/Math.abs(n.x),n.y===0?1/0:e/Math.abs(n.y))}function Yn(t,n){let o=1/0,e=1/0,s=-1/0,r=-1/0;for(let c of t)for(let a of n[c]??[])o=Math.min(o,a.x),s=Math.max(s,a.x),e=Math.min(e,a.y),r=Math.max(r,a.y);return o===1/0?void 0:{minX:o,minY:e,maxX:s,maxY:r}}var Fn=nt();function Gn(t,n){return Fn(t,[n],()=>Object.entries(t).filter(([o,e])=>e.length>0&&n.has(o)).sort(([o],[e])=>n.get(e)-n.get(o)))}var Dn=nt();function Vn(t,n,o,e,s,r){let{scaleX:c,scaleY:a}=o;return Dn(t,[n,s,r,c,a,e],()=>{let i=[];for(let d of[...n].sort((l,u)=>u.bp-l.bp)){let l=Ft(t,d,o,d.bypassed,s?.[d.edgeIndex],r),u=l?Ot(l):void 0;if(l&&u){let{minX:h,minY:f,maxX:x,maxY:y}=St(l);i.push({deletion:d,curves:l,apex:u,extent:Math.max((x-h)*c,(y-f)*a)})}}return i})}function qn({nodePositions:t,nodeLengths:n,deletions:o,deletionRoutes:e,stranded:s=!1,alleleDeletions:r,axis:c,translateX:a,translateY:i,width:d,height:l,version:u=0}){let{scaleX:h,scaleY:f}=c,x=[],y=[];for(let{deletion:m,curves:M,apex:v,extent:g}of Vn(t,o,c,u,e,s))if(g>=Pn){let w=Gt(m.bp),_=U(w),I=j(_,0,0),E=v.x*h+a,A=v.y*f+i;if(E<0||E>d||A<0||A>l)continue;let X=g>=_*2/q,O=Rn(M,v,h,f),L=Hn(I,O)+Nn,S=X?E:z(E+O.x*L,_,d-_),P=X?A:z(A+O.y*L,k,l-k),C=Math.hypot(S-E,P-A),T;if(C>0){let B={x:(S-E)/C,y:(P-A)/C},W=$n(I,B);T={arcX:E,arcY:A,labelX:S-B.x*W,labelY:P-B.y*W}}x.push({label:{key:`del:${m.edgeIndex}`,text:w,x:S,y:P,kind:"deletion",leader:T},box:j(_,S,P)})}let p=new Set,b=[...r??[]].sort((m,M)=>M.bp-m.bp);for(let m of b){let M=Yn(m.nodeIds,t);if(!M)continue;let v=Math.max(M.minX*h+a,0),g=Math.min(M.maxX*h+a,d),w=Math.max(M.minY*f+i,0),_=Math.min(M.maxY*f+i,l);if(g<v||_<w)continue;let I=Math.max(g-v,_-w),E=Gt(m.bp),A=U(E);if(I>=A*2/q){for(let L of m.nodeIds)p.add(L);let X=z((v+g)/2,A,d-A),O=z((w+_)/2,k,l-k);x.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:X,y:O,kind:"deletion"},box:j(A,X,O)})}}for(let[m,M]of Gn(t,n)){if(p.has(m))continue;let{x:v,y:g}=Wt(M),w=g*f+i;if(w+k<=0||w-k>=l)continue;let _=Z(M,h,f);if(_<Wn*2/q)continue;let I=qt(n.get(m)),E=U(I);if(_>=E*2/q){let A=v*h+a;y.push({label:{key:`node:${m}`,text:I,x:A,y:w,kind:"node"},box:j(E,A,w)})}}return{deletions:x,nodes:y}}function jn(t,n){return Math.max(Cn,Math.floor(t*n/Xn))}function Dt(t,n,o=1/0){let e=[];for(let{label:s,box:r}of t){if(e.length>=o)break;n(r)&&e.push(s)}return e}function Jo({reserved:t,take:n,...o}){n??=Bt(o,t);let{deletions:e,nodes:s}=qn(o);return[...Dt(e,n),...Dt(s,n,jn(o.width,o.height))]}function ne(t){let n=0;for(let o=0;o<t.length;o++)n=t.charCodeAt(o)+((n<<5)-n);return Math.abs(n%360)}function zn(t,n){return t*360/n}var Un=.7,Jn=.5,Kn=16;function oe(t){return t>0&&t<=Kn}function Qn(t,n){return`hsl(${zn(t,n)}, ${Un*100}%, ${Jn*100}%)`}function ee(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function Zn(t){let n=R(t).name.split("#"),o=n.join("#");if(n.length>=3&&yt(n[0])){let e=n.slice(2).join("#");return[e,e,o]}return[n[0],n.slice(0,2).join("#"),o]}function to(t,n){let{start:o}=R(t);return n.map(e=>`${e} @${Vt(o)}`)}function se(t,n){let o=new Map;t.forEach((l,u)=>{o.has(l.name)||o.set(l.name,u)});let e=[...o].map(([l,u])=>({name:l,i:u})),s=e.map(l=>Zn(l.name)),r=l=>e.map((u,h)=>s[h][l]),c=l=>e.map((u,h)=>to(u.name,s[h])[l]),a=[r(0),r(1),c(0),r(2),c(1),c(2)],d=a.find(l=>new Set(l).size===e.length)??a.at(-1);return e.map(({name:l,i:u},h)=>({name:l,label:d[h],color:n?.[u]??Qn(u,t.length)}))}function re(t){let n=new Map;return new Map([...t].sort((o,e)=>o.label.localeCompare(e.label)).map(o=>{let e=(n.get(o.label)??0)+1;return n.set(o.label,e),[o.name,e>1?`${o.label} (${e})`:o.label]}))}var ae=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],no=.3,jt=3;function oo(t){let n=0,o=0;for(let e of t.nodes)n+=e.depth*e.length,o+=e.length;return o>0?n/o:0}function eo(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(jt,Math.max(no,Math.sqrt(t.depth/n)))}function so(t,n,o,e){return n*(o==="depth"?eo(t,e):1)}function ro(t,n){return t*(n==="depth"?jt:1)}var co=4;function ao(t,n){return Math.max(t/n,co)}function ie(t,n,o,e,s=0){let r=t?oo(t):0,c=a=>s>0?ao(a,s)*s/2:a/2;return{maxHalfWidthPx:c(ro(o,e)),halfWidthPx:a=>{let i=n?.get(a);return c(i?so(i,o,e,r):o)}}}var ue=[{value:"uniform",label:"Uniform",description:"Every link the same thickness."},{value:"walks",label:"By walks",description:"Thicker the more walks take a link, on the square root of its count against the busiest link in the cut. A graph without walks draws uniform."}],zt=.5,io=4;function le(t){let n=0;for(let o of t.edges)n=Math.max(n,o.pathIds?.length??0);return n}function de(t,n,o){return o==="uniform"||n===0?1:zt+(io-zt)*Math.sqrt(t/n)}export{bt as a,lo as b,St as c,ho as d,xo as e,yo as f,po as g,F as h,G as i,Pt as j,mo as k,Z as l,nt as m,Nt as n,pn as o,V as p,ot as q,Bt as r,go as s,Eo as t,Io as u,Lo as v,Co as w,No as x,Ft as y,Yo as z,Fo as A,Uo as B,Vt as C,qt as D,Jo as E,ne as F,zn as G,Un as H,Jn as I,Kn as J,oe as K,Qn as L,ee as M,se as N,re as O,ae as P,oo as Q,so as R,ao as S,ie as T,ue as U,le as V,de as W};
2
- //# sourceMappingURL=chunk-4NIWMRKH.js.map
1
+ import{a as lt,c as dt,d as ht,g as N,j as J,l as xt,q as pt,r as R,w as mt,x as Mt}from"./chunk-ZFJGNGIB.js";import{b as yt}from"./chunk-TWPUVVYH.js";var bt=20;function lo(t){let n=o=>Math.round(o*100)/100;return t.map((o,e)=>`${e?"L":"M"}${n(o.x)},${n(o.y)}`).join("")}function gt(t,n,o,e,s){let r=Math.hypot(e-n,o-t);if(r===0)return[o,e];let c=(o-t)/r,a=(e-n)/r;return[o+s*c,e+s*a]}function Y(t,n){let o=1-n,e=o*o*o,s=3*o*o*n,r=3*o*n*n,c=n*n*n;return{x:e*t.x0+s*t.cx0+r*t.cx1+c*t.x1,y:e*t.y0+s*t.cy0+r*t.cy1+c*t.y1}}function Ot(t){let n=t[Math.floor(t.length/2)];return n?Y(n,.5):void 0}function St(t){let n=1/0,o=1/0,e=-1/0,s=-1/0;for(let r of t)n=Math.min(n,r.x0,r.cx0,r.cx1,r.x1),e=Math.max(e,r.x0,r.cx0,r.cx1,r.x1),o=Math.min(o,r.y0,r.cy0,r.cy1,r.y1),s=Math.max(s,r.y0,r.cy0,r.cy1,r.y1);return{minX:n,minY:o,maxX:e,maxY:s}}function Qt(t,n,o){let e=Y(t,n),s=Y(t,o),r=(o-n)/3,c=vt(t,n),a=vt(t,o);return{x0:e.x,y0:e.y,cx0:e.x+c.x*r,cy0:e.y+c.y*r,cx1:s.x-a.x*r,cy1:s.y-a.y*r,x1:s.x,y1:s.y}}function vt(t,n){let o=1-n,e=3*o*o,s=6*o*n,r=3*n*n;return{x:e*(t.cx0-t.x0)+s*(t.cx1-t.cx0)+r*(t.x1-t.cx1),y:e*(t.cy0-t.y0)+s*(t.cy1-t.cy0)+r*(t.y1-t.cy1)}}var H=32;function Zt(t,n,o,e){let s=[],r=0;return t.forEach((c,a)=>{let i=n[a],d=i/H,l=Y(c,0);for(let u=1;u<=H;u++){let h=Y(c,u/H);if(Math.max(l.x,h.x)+d>=o.minX&&Math.min(l.x,h.x)-d<=o.maxX&&Math.max(l.y,h.y)+d/e>=o.minY&&Math.min(l.y,h.y)-d/e<=o.maxY){let f=r+i*(u-1)/H,x=r+i*u/H,y=s.at(-1);y&&y[1]>=f?y[1]=x:s.push([f,x])}l=h}r+=i}),s}function ho(t,n,o=1,e){let s=t.map(u=>Math.hypot(u.cx0-u.x0,(u.cy0-u.y0)*o)+Math.hypot(u.cx1-u.cx0,(u.cy1-u.cy0)*o)+Math.hypot(u.x1-u.cx1,(u.y1-u.cy1)*o)),r=s.reduce((u,h)=>u+h,0),c=Math.round(r/n),a=Math.max(3,c%2?c:c+1),i=e?Zt(t,s,e,o):void 0,d=0,l=[];for(let u=0;u<a;u+=2){let h=u/a*r,f=(u+1)/a*r;if(i){for(;d<i.length&&i[d][1]<h;)d++;if(d===i.length)break;if(i[d][0]>f)continue}let x=[],y=[],p=0;t.forEach((b,m)=>{let M=s[m],v=p+M;if(M>0&&v>h&&p<f){let g=Math.max(0,(h-p)/M),w=Math.min(1,(f-p)/M);x.push(Qt(b,g,w)),y.push((m+g)/t.length,(m+w)/t.length)}p=v}),x.length&&l.push({curves:x,startAlong:y[0],endAlong:y.at(-1)})}return l}var xo=(t,n,o)=>({dx:t.dx+(n.dx-t.dx)*o,dy:t.dy+(n.dy-t.dy)*o});function yo(t,n,o,e,s){let r=t.length,c=new Array(r);for(let a=0;a<r;a++){let i=t[a],d=a/r,l=(a+1)/r,u=n+(e-n)*d,h=o+(s-o)*d,f=n+(e-n)*l,x=o+(s-o)*l;c[a]={x0:i.x0+u,y0:i.y0+h,cx0:i.cx0+u,cy0:i.cy0+h,cx1:i.cx1+f,cy1:i.cy1+x,x1:i.x1+f,y1:i.y1+x}}return c}function po(t,n,o){let e=new Array(t.length);for(let s=0;s<t.length;s++){let r=t[s];e[s]={x0:r.x0+n,y0:r.y0+o,cx0:r.cx0+n,cy0:r.cy0+o,cx1:r.cx1+n,cy1:r.cy1+o,x1:r.x1+n,y1:r.y1+o}}return e}function $(t,n){let o=t.length-1;return n==="end"?{at:t[o],inward:t[o-1]}:{at:t[0],inward:t[1]}}var tn=.5,nn=80;function F(t){return t.endsWith("-")?"-":"+"}function G(t){let n=(o,e)=>(e??F(o))===F(o);return{from:n(t.from,t.fromStrand)?"end":"start",to:n(t.to,t.toStrand)?"start":"end"}}function wt(t){let n=1/0,o=-1/0;for(let e of t)n=Math.min(n,e.x),o=Math.max(o,e.x);return{min:n,max:o}}function At(t,n){return Math.max(0,n.min-t,t-n.max)}function _t(t,n,o){let e=At(t[0].x,n),s=At(t[t.length-1].x,n);return e===s?o:e<s?"start":"end"}function on(t,n){return{from:_t(t,wt(n),"end"),to:_t(n,wt(t),"start")}}var Et=new WeakMap;function en(t,n){let o=Et.get(t);o||(o=new WeakMap,Et.set(t,o));let e=o.get(n);return e||(e=on(t,n),o.set(n,e)),e}var sn=.75,rn=1.15,cn=.35,an=3*bt;function fn(t,n,o,e,s,r){let c=Math.hypot(o-t,e-n),a=c===0?1:(o-t)/c,i=c===0?0:(e-n)/c,d=0,l=1/0,u=-1/0;for(let y of s){let p=y.x-t,b=y.y-n,m=p*-i+b*a;Math.abs(m)>Math.abs(d)&&(d=m);let M=p*a+b*i;l=Math.min(l,M),u=Math.max(u,M)}let h=s.length?u-l:0,f=Math.max(Math.abs(d)*rn/sn,h*cn),x=r===void 0?f:Math.min(f,r);return d<0?-x:x}function Pt({scaleX:t,scaleY:n}){return n/t}var un=3;function K(t,n,o){let e=n.x-t.x,s=(n.y-t.y)*o,r=Math.hypot(e,s);return r===0?void 0:{x:e/r,y:s/r}}function mo(t,n,o,e){let s=Pt(e),r=un/Math.max(e.scaleX,1e-6),c=K(t[t.length-1],n[0],s)??K(t[0],t.at(-1),s)??K(n[0],n.at(-1),s)??{x:1,y:0},a=[];for(let i=0;i<o;i++){let d=(i-(o-1)/2)*r;a.push({x:-c.y*d,y:c.x*d/s})}return a}function Q(t,n){return t.map(o=>({x:o.x,y:o.y*n}))}function ln(t,n){for(let o of t)o.y0/=n,o.cy0/=n,o.cy1/=n,o.y1/=n;return t}function Z(t,n,o){let e=0;for(let s=1;s<t.length;s++){let r=t[s-1],c=t[s];e+=Math.hypot((c.x-r.x)*n,(c.y-r.y)*o)}return e}var dn=12,hn=40;function It(t,n){let o=Z(t,n,n);return Math.min(hn,Math.max(dn,o/2))/Math.max(n,Number.EPSILON)}function xn(t){return t.from!==t.to?!1:t.fromStrand&&t.toStrand&&t.fromStrand!==t.toStrand?t.fromStrand==="+"?"end":"start":!0}function Xt(t,n=!1){let o=xn(t);if(!n)return o;let e=G(t);return o===!1?e:e.from===e.to?e.from:!0}function yn(t,n){let{at:o,inward:e}=t,s=e?o.x-e.x:1,r=e?o.y-e.y:0,c=Math.hypot(s,r)||1,a=s/c,i=r/c,d=o.x,l=o.y,u=d+a*n/3,h=l+i*n/3,f=d+a*n,x=l+i*n,y=-i*n/2,p=a*n/2;return[{x0:d,y0:l,cx0:u,cy0:h,cx1:f+y,cy1:x+p,x1:f,y1:x},{x0:f,y0:x,cx0:f-y,cy0:x-p,cx1:u,cy1:h,x1:d,y1:l}]}function tt(t,n,o,e,s=[],r){let c=e.scaleX,a=Pt(e),i=r??(e.pixelRows?an:void 0);if(o===!1&&(o=en(t,n)),a!==1)return ln(tt(Q(t,a),Q(n,a),o,{scaleX:c,scaleY:c},Q(s,a),i===void 0?void 0:i*a),a);if(typeof o=="string")return yn($(t,o),It(t,c));let d=o===!0,l=o===!0?{from:"end",to:"start"}:o,u=$(t,l.from),h=$(n,l.to),f=u.at,x=h.at,y=f.x,p=f.y,b=x.x,m=x.y;if(d){let M=1,v=0;if(u.inward){let S=f.x-u.inward.x,P=f.y-u.inward.y,C=Math.hypot(S,P);C>0&&(M=S/C,v=P/C)}let g=It(t,c),w=-v,_=M,I=(f.x+x.x)/2+w*g,E=(f.y+x.y)/2+_*g,A=y+M*g,X=p+v*g,O=b-M*g,L=m-v*g;return[{x0:y,y0:p,cx0:A,cy0:X,cx1:A+w*g,cy1:X+_*g,x1:I,y1:E},{x0:I,y0:E,cx0:O+w*g,cy0:L+_*g,cx1:O,cy1:L,x1:b,y1:m}]}else{let M=u.inward??{x:f.x-(x.x-f.x),y:f.y-(x.y-f.y)},v=h.inward??{x:x.x-(f.x-x.x),y:x.y-(f.y-x.y)},g=Math.hypot(b-y,m-p),w=(ct,at,Ut,Jt)=>{let it=at.x-ct.x,ft=at.y-ct.y,ut=Math.hypot(it,ft),Kt=ut===0?0:(Ut*it+Jt*ft)/ut;return Math.max(0,Math.min(g*tn,nn,Kt*.5))},_=x.x-f.x,I=x.y-f.y,[E,A]=gt(M.x,M.y,f.x,f.y,w(M,f,_,I)),[X,O]=gt(v.x,v.y,x.x,x.y,w(v,x,-_,-I)),L=s.length?fn(y,p,b,m,s,i):0,S=g===0?1:g,P=(b-y)/S,C=(m-p)/S,T=-C*L,B=P*L,W=P*Math.abs(L),rt=C*Math.abs(L);return[{x0:y,y0:p,cx0:E+T-W,cy0:A+B-rt,cx1:X+T+W,cy1:O+B+rt,x1:b,y1:m}]}}function Lt(t,n){let o=t[0],e=t.at(-1);return Math.hypot(o.x-n.x,o.y-n.y)<Math.hypot(e.x-n.x,e.y-n.y)?"start":"end"}function Ct(t,n,o,e){let s=$(t,e?.from??Lt(t,o[0])),r=$(n,e?.to??Lt(n,o.at(-1))),c=[s.at,...o,r.at],a=d=>{let l=c[d],u=f=>Math.hypot(f.x-l.x,f.y-l.y),h=(f,x)=>{let y=f?u(f):0,p=u(x);return y===0?{x:x.x-l.x,y:x.y-l.y}:{x:(l.x-f.x)/y*p,y:(l.y-f.y)/y*p}};if(d===0)return h(s.inward,c[1]);if(d===c.length-1){let f=h(r.inward,c[d-1]);return{x:-f.x,y:-f.y}}return{x:(c[d+1].x-c[d-1].x)/2,y:(c[d+1].y-c[d-1].y)/2}},i=[];for(let d=0;d<c.length-1;d++){let l=c[d],u=c[d+1],h=a(d),f=a(d+1);i.push({x0:l.x,y0:l.y,cx0:l.x+h.x/3,cy0:l.y+h.y/3,cx1:u.x-f.x/3,cy1:u.y-f.y/3,x1:u.x,y1:u.y})}return i}function nt(){let t=new WeakMap;return(n,o,e)=>{let s=t.get(n);if(s?.deps.length===o.length&&s.deps.every((c,a)=>Object.is(c,o[a])))return s.value;let r=e();return t.set(n,{deps:o,value:r}),r}}var Nt=11,pn=6.2,V=4;function ot(t){return t.length*pn+V*2}function mn(t,n){return t.x0<n.x1&&t.x1>n.x0&&t.y0<n.y1&&t.y1>n.y0}function kt(t,n){return t.x1<=0||t.x0>=n.width||t.y1<=0||t.y0>=n.height}function Mn(t,n){return t.x0>=0&&t.x1<=n.width&&t.y0>=0&&t.y1<=n.height}function Bt(t,n=[]){let o=[...n];return e=>kt(e,t)||o.some(s=>mn(s,e))?!1:(o.push(e),!0)}function go(t,n,o){let e=[],s=Nt+V*2,r=(c,a)=>{let i=ot(a),d=c.y>n.height/2?-1:1;for(let l=0;l<=(c.stack??0);l++){let u=c.y+d*l*s,h={x0:c.x-i/2,x1:c.x+i/2,y0:u-Nt-V,y1:u+V};if(kt(h,n))return;if(Mn(h,n)&&(c.fits?.(h)??!0)&&o(h))return{...c,text:a,y:u,w:i}}};for(let c of t){let a=r(c,c.text)??(c.fallback===void 0?void 0:r(c,c.fallback));a&&e.push(a)}return e}function Tt(t){return t==="+"?"-":"+"}function Eo(t,n=new Set){let o=t.edges.map(G),e=new Map,s=(f,x,y)=>{lt(e,`${f}|${x}`,y)};t.edges.forEach((f,x)=>{s(f.from,o[x].from,x),s(f.to,o[x].to,x)});let r=f=>{let x=e.get(`${f}|end`);if(x?.length!==1)return;let y=x[0],p=t.edges[y];return p.from===f&&p.to!==f&&!n.has(f)&&!n.has(p.to)&&o[y].from==="end"&&o[y].to==="start"&&e.get(`${p.to}|start`)?.length===1?y:void 0},c=new Set,a=new Map,i=new Map;for(let f of t.nodes){let x=e.get(`${f.id}|start`),y=x?.length===1?t.edges[x[0]].from:void 0;if(a.has(f.id)||y!==void 0&&r(y)===x[0])continue;let p=[f.id];for(;;){let b=r(p.at(-1)),m=b===void 0?void 0:t.edges[b].to;if(m===void 0||a.has(m))break;c.add(b),p.push(m)}for(let b of p)a.set(b,f.id);p.length>1&&i.set(f.id,p)}for(let f of t.nodes)a.has(f.id)||a.set(f.id,f.id);let d=new Map(t.nodes.map(f=>[f.id,f])),l=[];for(let f of t.nodes){if(a.get(f.id)!==f.id)continue;let x=i.get(f.id);if(!x){l.push(f);continue}let y=x.map(m=>d.get(m)),p=y.filter(N),b=p.length?p.reduce((m,M)=>m.stable.start<=M.stable.start?m:M):y[0];l.push({id:f.id,name:f.name,length:y.reduce((m,M)=>m+M.length,0),depth:f.depth,stable:b.stable})}let u=new Set,h=[];return t.edges.forEach((f,x)=>{let y=a.get(f.from),p=a.get(f.to),b=o[x],m=`${y}|${b.from}>${p}|${b.to}`;c.has(x)||u.has(m)||(u.add(m),h.push({from:y,to:p,...b.from==="start"?{fromStrand:Tt(F(y))}:{},...b.to==="end"?{toStrand:Tt(F(p))}:{}}))}),{graph:{...t,nodes:l,edges:h,paths:void 0,pathVisits:void 0},runs:i}}function Io(t,n,o){let e={...t};for(let[s,r]of n){let c=t[s];if(!c?.length)continue;delete e[s];let a=st(c),i=a.at(-1),d=r.map(h=>Math.max(o(h),0)),l=d.reduce((h,f)=>h+f,0),u=0;r.forEach((h,f)=>{let x=l?d[f]/l*i:i/r.length,y=f===r.length-1?i:u+x;e[h]=Ht(c,a,u,y),u=y})}return e}function Lo(t,n,o){if(t.length===0)return[];let e=st(t),s=e.at(-1);return Ht(t,e,n*s,o*s)}function Wt(t){let n=st(t);return et(t,n,n.at(-1)/2)}function st(t){let n=[0];for(let o=1;o<t.length;o++)n.push(n[o-1]+Math.hypot(t[o].x-t[o-1].x,t[o].y-t[o-1].y));return n}function Rt(t,n){let o=0,e=t.length;for(;o<e;){let s=o+e>>1;t[s]<n?o=s+1:e=s}return o}function et(t,n,o){if(o<=0)return{...t[0]};let e=Rt(n,o);if(e>=n.length)return{...t.at(-1)};let s=n[e]-n[e-1],r=s>0?(o-n[e-1])/s:0,c=t[e-1],a=t[e];return{x:c.x+(a.x-c.x)*r,y:c.y+(a.y-c.y)*r}}function Ht(t,n,o,e){let s=[et(t,n,o)];for(let r=Rt(n,o);r<t.length&&n[r]<e;r++)n[r]>o&&s.push({...t[r]});return s.push(et(t,n,e)),s}function Co(t,n){let o=new Set(t.nodes.filter(i=>N(i)&&J(i,n)).map(i=>i.id)),e=t.paths??[];if(o.size===0||e.length===0)return t;let s=e.map(i=>{let d=-1,l=-1;return i.nodeIds.forEach((u,h)=>{o.has(u)&&(d<0&&(d=h),l=h)}),d<0?void 0:{first:d,last:l}});if(s.every((i,d)=>i?.first===0&&i.last===e[d].nodeIds.length-1))return t;let r=new Set,c=[],a=new Map;return e.forEach((i,d)=>{let l=s[d];if(l){let u=i.nodeIds.slice(l.first,l.last+1);for(let h of u)r.add(h);c.push({...i,nodeIds:u}),a.set(i.name,{first:l.first,nodeIds:u})}}),{...t,nodes:t.nodes.filter(i=>r.has(i.id)),edges:t.edges.filter(i=>r.has(i.from)&&r.has(i.to)),paths:c,pathVisits:t.pathVisits&&bn(t.pathVisits,e,s,new Map(t.nodes.map(i=>[i.id,i.name]))),anchorPaths:mt(t,a)}}function bn(t,n,o,e){let s=t.replay(),r=new pt;return n.forEach((c,a)=>{let i=t.pathIndex(R(c.name).name),d=o[a];c.nodeIds.forEach((l,u)=>{let h=e.get(l)??l,f=s(t.slot(h),i);f>=0&&d&&u>=d.first&&u<=d.last&&r.add(h,t.paths[i],t.samples[i],t.start[f],t.reversed[f]===1)})}),r.build()}function No(t,n,o){let e=t.nodes.map(s=>{if(!N(s))return s;let r=s.stable.start,c=r+s.length,[a,i]=J(s,n)?[Math.max(r,n.start),Math.min(c,n.end)]:c<=n.start?[Math.max(r,c-o),c]:[r,Math.min(c,r+o)];return a===r&&i===c?s:{...s,length:i-a,stable:{...s.stable,start:a},unclipped:{start:r,length:s.length}}});return e.some((s,r)=>s!==t.nodes[r])?{...t,nodes:e}:t}function $t(t){return t.nodes.some(n=>n.unclipped)?{...t,nodes:t.nodes.map(({unclipped:n,...o})=>n&&o.stable?{...o,length:n.length,stable:{...o.stable,start:n.start}}:o)}:t}var gn=1;function vn(t,n){return n.flatMap(o=>t[o]??[])}function Ft(t,n,o,e,s,r){let c=t[n.from],a=t[n.to];if(!(!c?.length||!a?.length))return s?Ct(c,a,s,r?G(n):void 0):tt(c,a,Xt(n,r),o,e?vn(t,e):[])}function wn(t){let n=dt(t.nodes.filter(N),o=>o.stable.refName);for(let o of n.values())o.sort((e,s)=>e.stable.start-s.stable.start);return n}function An(t,n,o){let e=[];if(t)for(let s=xt(t,n);s<t.length;s++){let r=t[s];if(r.stable.start>=o)break;r.stable.start+r.length<=o&&e.push(r.id)}return e}function _n(t,n,o,e){let{fromStrand:s,toStrand:r}=t;if(s===void 0||r===void 0)return!0;let c=s===(n.stable.strand??"+"),a=r===(o.stable.strand??"+");return e?c&&a:!c&&!a}function En(t,n,o,e){let s;for(let r of e(n))for(let c of e(o)){let a=r<=c,i=a?{start:r+n.length,end:c}:{start:c+o.length,end:r};_n(t,n,o,a)&&(!s||Math.abs(i.end-i.start)<Math.abs(s.end-s.start))&&(s=i)}return s}var In=.01;function Ln(t,n){let o=new Map;for(let[e,s]of t){let r=s.flatMap(c=>{let a=n(c);return a.slice(1).map((i,d)=>({at:a[d],copy:i-a[d]}))});r.length&&o.set(e,r.sort((c,a)=>c.at-a.at))}return o}function On(t,n,o){if(!t)return!1;let e=ht(t.length,r=>t[r].at<n),s=[t[e-1],t[e]].filter(r=>r!==void 0).sort((r,c)=>Math.abs(r.at-n)-Math.abs(c.at-n))[0];return s!==void 0&&Math.abs(s.at-n)<=s.copy&&Math.abs(o-s.copy)<=s.copy*In}function Yo(t){let n=$t(t),o=new Map(n.nodes.map(a=>[a.id,a])),e=wn(n),s=Mt(n),r=Ln(e,s),c=[];for(let a=0;a<n.edges.length;a++){let i=n.edges[a],d=o.get(i.from),l=o.get(i.to);if(!i.foldBridge&&d!==void 0&&l!==void 0&&N(d)&&N(l)&&d.stable.refName===l.stable.refName){let u=En(i,d,l,s),h=d.stable.refName,f=u?u.end-u.start:0;if(u&&f>=gn&&!On(r.get(h),u.start,f)){let{start:x,end:y}=u;c.push({edgeIndex:a,from:i.from,to:i.to,...i.fromStrand?{fromStrand:i.fromStrand}:{},...i.toStrand?{toStrand:i.toStrand}:{},refName:h,start:x,end:y,bp:f,bypassed:An(e.get(h),x,y)})}}}return c}function Sn(t,n){let o=new Map,e=c=>{let a=c;for(;o.has(a);)a=o.get(a);return a!==c&&o.set(c,a),a},s=(c,a)=>{let[i,d]=[e(c),e(a)];return i!==d&&o.set(i,d),i!==d},r=new Set(n.map(c=>c.edgeIndex));return t.edges.forEach((c,a)=>{r.has(a)||s(c.from,c.to)}),new Set(n.filter(c=>!s(c.from,c.to)).map(c=>c.edgeIndex))}var Yt=new WeakMap;function Fo(t,n,o=!0){let e=Yt.get(n);e||(e=new Map,Yt.set(n,e));let s=e.get(o);if(!s){let r=o?new Set:Sn(t,n);s={shown:n.filter(c=>!r.has(c.edgeIndex)),bypassed:new Map(n.map(c=>[c.edgeIndex,c.bypassed])),hidden:r},e.set(o,s)}return s}var Pn=26,Xn=4e4,Cn=8,Nn=8,kn=5.7,Bn=6,Tn=13,D=3,q=2;function U(t){return(t.length*kn+Bn+D)/2}var k=(Tn+D)/2,Wn=U("1 bp");function j(t,n,o){return{x0:n-t,x1:n+t,y0:o-k,y1:o+k}}function Uo(t,n){return{x0:6,x1:6+ot(t)+D,y0:n-8-D/2,y1:n+8+D/2}}function z(t,n,o){return o<n?t:Math.min(Math.max(t,n),o)}function Vt(t){return String(t).replace(/\B(?=(\d{3})+$)/g,",")}function qt(t){let[n,o]=t>=999500?[t/1e6,"Mb"]:t>=1e3?[t/1e3,"kb"]:[];return n===void 0?`${t} bp`:`${+n.toFixed(n>=100?0:1)} ${o}`}function Gt(t){return`${qt(t)} del`}function Rn(t,n,o,e){let s=t[0],r=t[t.length-1],c=(n.x-(s.x0+r.x1)/2)*o,a=(n.y-(s.y0+r.y1)/2)*e,i=Math.hypot(c,a);return i===0?{x:0,y:-1}:{x:c/i,y:a/i}}function Hn(t,n){return Math.abs(n.x)*(t.x1-t.x0)/2+Math.abs(n.y)*(t.y1-t.y0)/2}function $n(t,n){let o=(t.x1-t.x0)/2,e=(t.y1-t.y0)/2;return Math.min(n.x===0?1/0:o/Math.abs(n.x),n.y===0?1/0:e/Math.abs(n.y))}function Yn(t,n){let o=1/0,e=1/0,s=-1/0,r=-1/0;for(let c of t)for(let a of n[c]??[])o=Math.min(o,a.x),s=Math.max(s,a.x),e=Math.min(e,a.y),r=Math.max(r,a.y);return o===1/0?void 0:{minX:o,minY:e,maxX:s,maxY:r}}var Fn=nt();function Gn(t,n){return Fn(t,[n],()=>Object.entries(t).filter(([o,e])=>e.length>0&&n.has(o)).sort(([o],[e])=>n.get(e)-n.get(o)))}var Dn=nt();function Vn(t,n,o,e,s,r){let{scaleX:c,scaleY:a}=o;return Dn(t,[n,s,r,c,a,e],()=>{let i=[];for(let d of[...n].sort((l,u)=>u.bp-l.bp)){let l=Ft(t,d,o,d.bypassed,s?.[d.edgeIndex],r),u=l?Ot(l):void 0;if(l&&u){let{minX:h,minY:f,maxX:x,maxY:y}=St(l);i.push({deletion:d,curves:l,apex:u,extent:Math.max((x-h)*c,(y-f)*a)})}}return i})}function qn({nodePositions:t,nodeLengths:n,deletions:o,deletionRoutes:e,stranded:s=!1,alleleDeletions:r,axis:c,translateX:a,translateY:i,width:d,height:l,version:u=0}){let{scaleX:h,scaleY:f}=c,x=[],y=[];for(let{deletion:m,curves:M,apex:v,extent:g}of Vn(t,o,c,u,e,s))if(g>=Pn){let w=Gt(m.bp),_=U(w),I=j(_,0,0),E=v.x*h+a,A=v.y*f+i;if(E<0||E>d||A<0||A>l)continue;let X=g>=_*2/q,O=Rn(M,v,h,f),L=Hn(I,O)+Nn,S=X?E:z(E+O.x*L,_,d-_),P=X?A:z(A+O.y*L,k,l-k),C=Math.hypot(S-E,P-A),T;if(C>0){let B={x:(S-E)/C,y:(P-A)/C},W=$n(I,B);T={arcX:E,arcY:A,labelX:S-B.x*W,labelY:P-B.y*W}}x.push({label:{key:`del:${m.edgeIndex}`,text:w,x:S,y:P,kind:"deletion",leader:T},box:j(_,S,P)})}let p=new Set,b=[...r??[]].sort((m,M)=>M.bp-m.bp);for(let m of b){let M=Yn(m.nodeIds,t);if(!M)continue;let v=Math.max(M.minX*h+a,0),g=Math.min(M.maxX*h+a,d),w=Math.max(M.minY*f+i,0),_=Math.min(M.maxY*f+i,l);if(g<v||_<w)continue;let I=Math.max(g-v,_-w),E=Gt(m.bp),A=U(E);if(I>=A*2/q){for(let L of m.nodeIds)p.add(L);let X=z((v+g)/2,A,d-A),O=z((w+_)/2,k,l-k);x.push({label:{key:`alleledel:${m.nodeIds.join(",")}`,text:E,x:X,y:O,kind:"deletion"},box:j(A,X,O)})}}for(let[m,M]of Gn(t,n)){if(p.has(m))continue;let{x:v,y:g}=Wt(M),w=g*f+i;if(w+k<=0||w-k>=l)continue;let _=Z(M,h,f);if(_<Wn*2/q)continue;let I=qt(n.get(m)),E=U(I);if(_>=E*2/q){let A=v*h+a;y.push({label:{key:`node:${m}`,text:I,x:A,y:w,kind:"node"},box:j(E,A,w)})}}return{deletions:x,nodes:y}}function jn(t,n){return Math.max(Cn,Math.floor(t*n/Xn))}function Dt(t,n,o=1/0){let e=[];for(let{label:s,box:r}of t){if(e.length>=o)break;n(r)&&e.push(s)}return e}function Jo({reserved:t,take:n,...o}){n??=Bt(o,t);let{deletions:e,nodes:s}=qn(o);return[...Dt(e,n),...Dt(s,n,jn(o.width,o.height))]}function ne(t){let n=0;for(let o=0;o<t.length;o++)n=t.charCodeAt(o)+((n<<5)-n);return Math.abs(n%360)}function zn(t,n){return t*360/n}var Un=.7,Jn=.5,Kn=16;function oe(t){return t>0&&t<=Kn}function Qn(t,n){return`hsl(${zn(t,n)}, ${Un*100}%, ${Jn*100}%)`}function ee(t,n){return`hsl(0, 0%, ${n>1?25+45*t/(n-1):45}%)`}function Zn(t){let n=R(t).name.split("#"),o=n.join("#");if(n.length>=3&&yt(n[0])){let e=n.slice(2).join("#");return[e,e,o]}return[n[0],n.slice(0,2).join("#"),o]}function to(t,n){let{start:o}=R(t);return n.map(e=>`${e} @${Vt(o)}`)}function se(t,n){let o=new Map;t.forEach((l,u)=>{o.has(l.name)||o.set(l.name,u)});let e=[...o].map(([l,u])=>({name:l,i:u})),s=e.map(l=>Zn(l.name)),r=l=>e.map((u,h)=>s[h][l]),c=l=>e.map((u,h)=>to(u.name,s[h])[l]),a=[r(0),r(1),c(0),r(2),c(1),c(2)],d=a.find(l=>new Set(l).size===e.length)??a.at(-1);return e.map(({name:l,i:u},h)=>({name:l,label:d[h],color:n?.[u]??Qn(u,t.length)}))}function re(t){let n=new Map;return new Map([...t].sort((o,e)=>o.label.localeCompare(e.label)).map(o=>{let e=(n.get(o.label)??0)+1;return n.set(o.label,e),[o.name,e>1?`${o.label} (${e})`:o.label]}))}var ae=[{value:"depth",label:"By depth",description:"Thicker the more paths carry a node, on the square root of its depth against the mean. A graph with one depth everywhere draws uniform."},{value:"uniform",label:"Uniform",description:"Every node the same thickness."}],no=.3,jt=3;function oo(t){let n=0,o=0;for(let e of t.nodes)n+=e.depth*e.length,o+=e.length;return o>0?n/o:0}function eo(t,n){return!(n>0)||!(t.depth>0)?1:Math.min(jt,Math.max(no,Math.sqrt(t.depth/n)))}function so(t,n,o,e){return n*(o==="depth"?eo(t,e):1)}function ro(t,n){return t*(n==="depth"?jt:1)}var co=4;function ao(t,n){return Math.max(t/n,co)}function ie(t,n,o,e,s=0){let r=t?oo(t):0,c=a=>s>0?ao(a,s)*s/2:a/2;return{maxHalfWidthPx:c(ro(o,e)),halfWidthPx:a=>{let i=n?.get(a);return c(i?so(i,o,e,r):o)}}}var ue=[{value:"uniform",label:"Uniform",description:"Every link the same thickness."},{value:"walks",label:"By walks",description:"Thicker the more walks take a link, on the square root of its count against the busiest link in the cut. A graph without walks draws uniform."}],zt=.5,io=4;function le(t){let n=0;for(let o of t.edges)n=Math.max(n,o.pathIds?.length??0);return n}function de(t,n,o){return o==="uniform"||n===0?1:zt+(io-zt)*Math.sqrt(t/n)}export{bt as a,lo as b,St as c,ho as d,xo as e,yo as f,po as g,F as h,G as i,Pt as j,mo as k,Z as l,nt as m,Nt as n,pn as o,V as p,ot as q,Bt as r,go as s,Eo as t,Io as u,Lo as v,Co as w,No as x,Ft as y,Yo as z,Fo as A,Uo as B,Vt as C,qt as D,Jo as E,ne as F,zn as G,Un as H,Jn as I,Kn as J,oe as K,Qn as L,ee as M,se as N,re as O,ae as P,oo as Q,so as R,ao as S,ie as T,ue as U,le as V,de as W};
2
+ //# sourceMappingURL=chunk-GRLNDNX4.js.map