jbrowse-plugin-graphgenomeviewer 7.6.0 → 8.0.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 (151) hide show
  1. package/README.md +6 -5
  2. package/dist/chunks/{AddTrackWorkflow-NLSZYK56.js → AddTrackWorkflow-KT6Z6PSW.js} +2 -2
  3. package/dist/chunks/{ChooseSamplesDialog-JRN4YLBY.js → ChooseSamplesDialog-YUH6SVEZ.js} +2 -2
  4. package/dist/chunks/{ChooseWalksDialog-SM326TOX.js → ChooseWalksDialog-2QJKRASB.js} +2 -2
  5. package/dist/chunks/GbzBaseSyntenyAdapter-NPEXW3Z3.js +2 -0
  6. package/dist/chunks/{GbzBaseSyntenyAdapter-3PVPTKNW.js.map → GbzBaseSyntenyAdapter-NPEXW3Z3.js.map} +2 -2
  7. package/dist/chunks/{GraphGenomeView-GQW4YC23.js → GraphGenomeView-5LYF6LMA.js} +2 -2
  8. package/dist/chunks/{GraphTrackSettingsDialog-ARWCWJW4.js → GraphTrackSettingsDialog-T5YKMIPH.js} +2 -2
  9. package/dist/chunks/{GraphTrackSettingsDialog-ARWCWJW4.js.map → GraphTrackSettingsDialog-T5YKMIPH.js.map} +1 -1
  10. package/dist/chunks/{HighlightColorDialog-PD3KMF2U.js → HighlightColorDialog-UGAQFACU.js} +2 -2
  11. package/dist/chunks/LinearGraphDisplay-YTSXFZED.js +2 -0
  12. package/dist/chunks/{LinearGraphDisplay-QNS4EAL3.js.map → LinearGraphDisplay-YTSXFZED.js.map} +2 -2
  13. package/dist/chunks/{MinigraphBubbleAdapter-L6JSQIOL.js → MinigraphBubbleAdapter-D57ZFMKV.js} +2 -2
  14. package/dist/chunks/{RgfaTabixAdapter-5HCAJ7QI.js → RgfaTabixAdapter-HN2NLJJW.js} +2 -2
  15. package/dist/chunks/{TrackWarningsDialog-CPAYIP6K.js → TrackWarningsDialog-4YDIV2FN.js} +2 -2
  16. package/dist/chunks/{TrackWarningsDialog-CPAYIP6K.js.map → TrackWarningsDialog-4YDIV2FN.js.map} +1 -1
  17. package/dist/chunks/{WalkFormsAdapter-NX36GP35.js → WalkFormsAdapter-ESCQSNEJ.js} +2 -2
  18. package/dist/chunks/{WalkTabixSyntenyAdapter-JFNFX3JP.js → WalkTabixSyntenyAdapter-62PJZBRP.js} +2 -2
  19. package/dist/chunks/chunk-26SCNTI3.js +2 -0
  20. package/dist/chunks/chunk-26SCNTI3.js.map +7 -0
  21. package/dist/chunks/chunk-2VKDQF54.js +2 -0
  22. package/dist/chunks/chunk-2VKDQF54.js.map +7 -0
  23. package/dist/chunks/chunk-3VGXCEMQ.js +2 -0
  24. package/dist/chunks/{chunk-7WIBGKBU.js.map → chunk-3VGXCEMQ.js.map} +3 -3
  25. package/dist/chunks/chunk-3WG3GF2A.js +2 -0
  26. package/dist/chunks/{chunk-NDRLCGPC.js.map → chunk-3WG3GF2A.js.map} +3 -3
  27. package/dist/chunks/{chunk-ZFJGNGIB.js → chunk-56YYNIV3.js} +2 -2
  28. package/dist/chunks/{chunk-ZFJGNGIB.js.map → chunk-56YYNIV3.js.map} +1 -1
  29. package/dist/chunks/{chunk-UGCNPRKC.js → chunk-5Z4VIKXZ.js} +2 -2
  30. package/dist/chunks/chunk-5Z4VIKXZ.js.map +7 -0
  31. package/dist/chunks/{chunk-4PHM6JNU.js → chunk-A4YQH3PN.js} +3 -3
  32. package/dist/chunks/chunk-A4YQH3PN.js.map +7 -0
  33. package/dist/chunks/chunk-AH5UWTAV.js +2 -0
  34. package/dist/chunks/{chunk-TYV6UXJA.js.map → chunk-AH5UWTAV.js.map} +2 -2
  35. package/dist/chunks/chunk-AZ3YVI3P.js +2 -0
  36. package/dist/chunks/{chunk-XF6GU4GK.js → chunk-DKUKQR3S.js} +3 -3
  37. package/dist/chunks/chunk-DKUKQR3S.js.map +7 -0
  38. package/dist/chunks/chunk-H53NTUCD.js +4 -0
  39. package/dist/chunks/chunk-H53NTUCD.js.map +7 -0
  40. package/dist/chunks/{chunk-TENPGIPX.js → chunk-J5RMHLFJ.js} +1 -1
  41. package/dist/chunks/chunk-J5RMHLFJ.js.map +7 -0
  42. package/dist/chunks/{chunk-LJ7O3736.js → chunk-JSWEU5QG.js} +1 -1
  43. package/dist/chunks/{chunk-LJ7O3736.js.map → chunk-JSWEU5QG.js.map} +1 -1
  44. package/dist/chunks/{chunk-OQHN2GWX.js → chunk-JYTZO52E.js} +2 -2
  45. package/dist/chunks/{chunk-SGP63UMC.js → chunk-KQ6JJDJC.js} +2 -2
  46. package/dist/chunks/{chunk-SGP63UMC.js.map → chunk-KQ6JJDJC.js.map} +4 -4
  47. package/dist/chunks/chunk-KUT6FNKO.js +4 -0
  48. package/dist/chunks/chunk-KUT6FNKO.js.map +7 -0
  49. package/dist/chunks/{chunk-LGV6BTOY.js → chunk-LJAPKX5Y.js} +2 -2
  50. package/dist/chunks/{chunk-LGV6BTOY.js.map → chunk-LJAPKX5Y.js.map} +3 -3
  51. package/dist/chunks/{chunk-IBWORBGY.js → chunk-LR45N54F.js} +2 -2
  52. package/dist/chunks/{chunk-XSDGE4RF.js → chunk-NE3OW4WX.js} +2 -2
  53. package/dist/chunks/{chunk-TWPUVVYH.js → chunk-ON465L7Z.js} +1 -1
  54. package/dist/chunks/{chunk-TWPUVVYH.js.map → chunk-ON465L7Z.js.map} +1 -1
  55. package/dist/chunks/{chunk-T4R3ZVEM.js → chunk-OTBDKJEA.js} +1 -1
  56. package/dist/chunks/{chunk-T4R3ZVEM.js.map → chunk-OTBDKJEA.js.map} +1 -1
  57. package/dist/chunks/{chunk-SI5VLKVN.js → chunk-QGLMVXGX.js} +2 -2
  58. package/dist/chunks/{chunk-SI5VLKVN.js.map → chunk-QGLMVXGX.js.map} +2 -2
  59. package/dist/chunks/{chunk-JRJHXLGP.js → chunk-ROZPEXN4.js} +2 -2
  60. package/dist/chunks/chunk-ROZPEXN4.js.map +7 -0
  61. package/dist/chunks/chunk-SD7WGQ6Y.js +3 -0
  62. package/dist/chunks/chunk-SD7WGQ6Y.js.map +7 -0
  63. package/dist/chunks/{chunk-5LFPNQWH.js → chunk-SVLBMU6I.js} +2 -2
  64. package/dist/chunks/{chunk-5LFPNQWH.js.map → chunk-SVLBMU6I.js.map} +1 -1
  65. package/dist/chunks/{chunk-DOC7QIE2.js → chunk-VCYF5E2N.js} +1 -1
  66. package/dist/chunks/{chunk-DOC7QIE2.js.map → chunk-VCYF5E2N.js.map} +1 -1
  67. package/dist/chunks/{chunk-G4OPM6G7.js → chunk-YXN7J6LG.js} +2 -2
  68. package/dist/chunks/{chunk-G4OPM6G7.js.map → chunk-YXN7J6LG.js.map} +1 -1
  69. package/dist/chunks/chunk-ZKCMVSD4.js +4 -0
  70. package/dist/chunks/chunk-ZKCMVSD4.js.map +7 -0
  71. package/dist/chunks/executeDiagonalize-MDMQAC5Z.js +2 -0
  72. package/dist/chunks/executeDiagonalize-MDMQAC5Z.js.map +7 -0
  73. package/dist/chunks/renderSvg-3KAQCRFY.js +2 -0
  74. package/dist/chunks/renderSvg-3KAQCRFY.js.map +7 -0
  75. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js +6 -4
  76. package/dist/jbrowse-plugin-graphgenomeviewer.esm.js.map +4 -4
  77. package/package.json +11 -11
  78. package/src/GraphAddTrackWorkflow/buildTrackConfig.test.ts +3 -1
  79. package/src/GraphAddTrackWorkflow/buildTrackConfig.ts +5 -1
  80. package/src/GraphGenomeView/components/LegendSwatch.tsx +11 -1
  81. package/src/GraphGenomeView/components/WalkStrip.tsx +1 -0
  82. package/src/GraphGenomeView/genes/geneFeatures.ts +8 -0
  83. package/src/GraphGenomeView/genes/genes.test.ts +14 -1
  84. package/src/GraphGenomeView/legendSections.ts +42 -6
  85. package/src/GraphGenomeView/model.test.ts +59 -7
  86. package/src/GraphGenomeView/nodeSize.test.ts +1 -0
  87. package/src/GraphGenomeView/nodeSize.ts +10 -5
  88. package/src/GraphGenomeView/pane/fitViews.ts +6 -5
  89. package/src/GraphGenomeView/pane/graphViews.ts +16 -12
  90. package/src/GraphGenomeView/pane/launchActions.ts +7 -1
  91. package/src/GraphGenomeView/pane/launchViews.ts +11 -3
  92. package/src/GraphGenomeView/pane/loadActions.ts +2 -2
  93. package/src/GraphGenomeView/pane/renderingActions.ts +36 -4
  94. package/src/GraphGenomeView/pane/settingActions.ts +1 -1
  95. package/src/GraphGenomeView/subgraphLoad.test.ts +42 -0
  96. package/src/GraphGenomeView/tubeMapPanels.test.ts +1 -1
  97. package/src/GraphGenomeView/tubeMapPanels.ts +6 -6
  98. package/src/GraphGenomeView/viewModel.ts +2 -2
  99. package/src/GraphGenomeView/walkRowGroups.test.ts +8 -4
  100. package/src/GraphGenomeView/walkRowGroups.ts +8 -6
  101. package/src/LinearGraphDisplay/LinearGraphDisplay.test.ts +1 -1
  102. package/src/LinearGraphDisplay/components/GraphStatusChrome.tsx +4 -8
  103. package/src/LinearGraphDisplay/configSchema.ts +4 -3
  104. package/src/graphTrackConfig.ts +14 -8
  105. package/src/launchFromGraph/launchFromGraph.ts +11 -11
  106. package/src/launchFromGraph/syntenyTracks.test.ts +6 -26
  107. package/src/launchFromGraph/syntenyTracks.ts +20 -17
  108. package/src/panSNAliases/trackAdapterConfig.ts +4 -7
  109. package/src/version.ts +1 -1
  110. package/dist/chunks/GbzBaseSyntenyAdapter-3PVPTKNW.js +0 -2
  111. package/dist/chunks/LinearGraphDisplay-QNS4EAL3.js +0 -2
  112. package/dist/chunks/chunk-2CPD5NX2.js +0 -4
  113. package/dist/chunks/chunk-2CPD5NX2.js.map +0 -7
  114. package/dist/chunks/chunk-3AC33AXB.js +0 -2
  115. package/dist/chunks/chunk-4PHM6JNU.js.map +0 -7
  116. package/dist/chunks/chunk-7WIBGKBU.js +0 -2
  117. package/dist/chunks/chunk-CNEUOM7X.js +0 -2
  118. package/dist/chunks/chunk-CNEUOM7X.js.map +0 -7
  119. package/dist/chunks/chunk-GRLNDNX4.js +0 -2
  120. package/dist/chunks/chunk-GRLNDNX4.js.map +0 -7
  121. package/dist/chunks/chunk-JRJHXLGP.js.map +0 -7
  122. package/dist/chunks/chunk-JYYF3U2H.js +0 -2
  123. package/dist/chunks/chunk-JYYF3U2H.js.map +0 -7
  124. package/dist/chunks/chunk-KDXVLEHS.js +0 -3
  125. package/dist/chunks/chunk-KDXVLEHS.js.map +0 -7
  126. package/dist/chunks/chunk-NDRLCGPC.js +0 -2
  127. package/dist/chunks/chunk-PTDOYJFH.js +0 -4
  128. package/dist/chunks/chunk-PTDOYJFH.js.map +0 -7
  129. package/dist/chunks/chunk-TENPGIPX.js.map +0 -7
  130. package/dist/chunks/chunk-TYV6UXJA.js +0 -2
  131. package/dist/chunks/chunk-UGCNPRKC.js.map +0 -7
  132. package/dist/chunks/chunk-XF6GU4GK.js.map +0 -7
  133. package/dist/chunks/chunk-ZI7RFIA2.js +0 -4
  134. package/dist/chunks/chunk-ZI7RFIA2.js.map +0 -7
  135. package/dist/chunks/executeDiagonalize-SGJDSTYC.js +0 -2
  136. package/dist/chunks/executeDiagonalize-SGJDSTYC.js.map +0 -7
  137. package/dist/chunks/renderSvg-NIWFCY3U.js +0 -2
  138. package/dist/chunks/renderSvg-NIWFCY3U.js.map +0 -7
  139. /package/dist/chunks/{AddTrackWorkflow-NLSZYK56.js.map → AddTrackWorkflow-KT6Z6PSW.js.map} +0 -0
  140. /package/dist/chunks/{ChooseSamplesDialog-JRN4YLBY.js.map → ChooseSamplesDialog-YUH6SVEZ.js.map} +0 -0
  141. /package/dist/chunks/{ChooseWalksDialog-SM326TOX.js.map → ChooseWalksDialog-2QJKRASB.js.map} +0 -0
  142. /package/dist/chunks/{GraphGenomeView-GQW4YC23.js.map → GraphGenomeView-5LYF6LMA.js.map} +0 -0
  143. /package/dist/chunks/{HighlightColorDialog-PD3KMF2U.js.map → HighlightColorDialog-UGAQFACU.js.map} +0 -0
  144. /package/dist/chunks/{MinigraphBubbleAdapter-L6JSQIOL.js.map → MinigraphBubbleAdapter-D57ZFMKV.js.map} +0 -0
  145. /package/dist/chunks/{RgfaTabixAdapter-5HCAJ7QI.js.map → RgfaTabixAdapter-HN2NLJJW.js.map} +0 -0
  146. /package/dist/chunks/{WalkFormsAdapter-NX36GP35.js.map → WalkFormsAdapter-ESCQSNEJ.js.map} +0 -0
  147. /package/dist/chunks/{WalkTabixSyntenyAdapter-JFNFX3JP.js.map → WalkTabixSyntenyAdapter-62PJZBRP.js.map} +0 -0
  148. /package/dist/chunks/{chunk-3AC33AXB.js.map → chunk-AZ3YVI3P.js.map} +0 -0
  149. /package/dist/chunks/{chunk-OQHN2GWX.js.map → chunk-JYTZO52E.js.map} +0 -0
  150. /package/dist/chunks/{chunk-IBWORBGY.js.map → chunk-LR45N54F.js.map} +0 -0
  151. /package/dist/chunks/{chunk-XSDGE4RF.js.map → chunk-NE3OW4WX.js.map} +0 -0
@@ -1,2 +0,0 @@
1
- import{a as l}from"./chunk-T4R3ZVEM.js";import{d}from"./chunk-TENPGIPX.js";var o=JBrowseExports["@jbrowse/core/data_adapters/getFeatureAdapter"],R=e=>o!=null&&e in Object(o)?o[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/data_adapters/getFeatureAdapter' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e});var u=R("getFeatureAdapterOrThrow"),v=o&&o.__esModule?o.default:o;var t=JBrowseExports["@jbrowse/core/util/aborting"],_=e=>t!=null&&e in Object(t)?t[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/aborting' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),w=_("checkAbortSignal");var T=t&&t.__esModule?t.default:t;var r=JBrowseExports["@jbrowse/core/util/diagonalizeRegions"],z=e=>r!=null&&e in Object(r)?r[e]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+e+"' from '@jbrowse/core/util/diagonalizeRegions' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:e}),f=z("diagonalizeRegions"),y=r&&r.__esModule?r.default:r;async function P(e,{sessionId:s,adapters:i,referenceRegions:h,currentRegions:g,bpPerPx:b,signal:a,statusCallback:n}){if(!s)throw new Error("must pass a unique session id");w(a);let m=g[0]?.assemblyName;n?.("Downloading alignments");let p=[];for(let[x,{adapterConfig:j,fetchRegions:B,refRefNameMap:E,queryRefNameMap:J}]of i.entries()){let F=await u({pluginManager:e,sessionId:s,adapterConfig:j}),O={sessionId:s,signal:a,bpPerPx:b,statusCallback:n,targetAssemblyName:m},M=d(await F.getFeaturesInMultipleRegionsArray(B,O),c=>c.id());n?.(i.length>1?`Processing alignments (${x+1}/${i.length})`:"Processing alignments");for(let c of l(M,{refRefNameMap:E,queryRefNameMap:J}))p.push(c)}if(p.length===0)return null;let A=await f(p,h,g,{signal:a,statusCallback:n});return n?.("Diagonalization complete!"),A}export{P as executeDiagonalize};
2
- //# sourceMappingURL=executeDiagonalize-SGJDSTYC.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["host:@jbrowse/core/data_adapters/getFeatureAdapter", "host:@jbrowse/core/util/aborting", "host:@jbrowse/core/util/diagonalizeRegions", "../../node_modules/.pnpm/@jbrowse+synteny-core@5.0.0-beta.11_@emotion+react@11.14.0_@types+react@19.3.0_react@19_6b83ce7782285603d64e48e3d7c0913c/node_modules/@jbrowse/synteny-core/esm/executeDiagonalize.js"],
4
- "sourcesContent": ["const host = JBrowseExports[\"@jbrowse/core/data_adapters/getFeatureAdapter\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/core/data_adapters/getFeatureAdapter\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const getFeatureAdapter = /* @__PURE__ */ read(\"getFeatureAdapter\")\nexport const getFeatureAdapterOrThrow = /* @__PURE__ */ read(\"getFeatureAdapterOrThrow\")\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/core/util/aborting\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/core/util/aborting\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const checkAbortSignal = /* @__PURE__ */ read(\"checkAbortSignal\")\nexport const createAbortBreakpoint = /* @__PURE__ */ read(\"createAbortBreakpoint\")\nexport const handleFetchError = /* @__PURE__ */ read(\"handleFetchError\")\nexport const isAbortException = /* @__PURE__ */ read(\"isAbortException\")\nexport const makeAbortError = /* @__PURE__ */ read(\"makeAbortError\")\nexport const withAbortCheck = /* @__PURE__ */ read(\"withAbortCheck\")\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/core/util/diagonalizeRegions\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/core/util/diagonalizeRegions\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const diagonalizeRegions = /* @__PURE__ */ read(\"diagonalizeRegions\")\nexport default host && host.__esModule ? host.default : host", "import { getFeatureAdapterOrThrow } from '@jbrowse/core/data_adapters/getFeatureAdapter';\nimport { dedupe } from '@jbrowse/core/util';\nimport { checkAbortSignal } from '@jbrowse/core/util/aborting';\nimport { diagonalizeRegions } from '@jbrowse/core/util/diagonalizeRegions';\nimport { extractAlignmentData } from './extractAlignmentData.js';\n/**\n * Fetch a pair of axes' alignments and run the shared `diagonalizeRegions` off\n * the main thread. Shared by the linear-synteny and dotplot diagonalize RPCs \u2014\n * a dotplot is the single-LEVEL case of a stacked synteny view, not the\n * single-adapter one \u2014 so the two can't drift. They previously did: the\n * dotplot caller reached one display deep and diagonalized against a single\n * track's alignments, and before that only the synteny copy forwarded\n * `targetAssemblyName`, so a dotplot on a multi-genome track diagonalized\n * against the wrong pair's alignments.\n *\n * Returns null when the pair has no alignments to reorder, rather than\n * throwing, so an empty pair reads as \"nothing to do\" and an init-time\n * auto-diagonalize still resolves instead of stalling.\n */\nexport async function executeDiagonalize(pluginManager, { sessionId, adapters, referenceRegions, currentRegions, bpPerPx, signal, statusCallback, }) {\n if (!sessionId) {\n throw new Error('must pass a unique session id');\n }\n checkAbortSignal(signal);\n // Which of its N-1 pairs a multi-genome adapter (MCScanBlocksAdapter,\n // MultiGenomePAFAdapter) should return: the assembly being reordered. Derived\n // rather than taken as an argument \u2014 it is exactly currentRegions' assembly,\n // so a caller could only ever pass the same value or a wrong one. Forgetting\n // to pass it is what made the dotplot diagonalize against the wrong band\n // while the synteny view worked.\n const targetAssemblyName = currentRegions[0]?.assemblyName;\n // The getFeatures call upgrades \"Downloading alignments\" to a determinate\n // download/parse bar while it runs. Still fetched sequentially: the adapters\n // are typically the same file at different perspectives, so serial fetching\n // keeps peak worker memory to one adapter's records rather than all of them.\n statusCallback?.('Downloading alignments');\n const alignments = [];\n for (const [adapterIndex, { adapterConfig, fetchRegions, refRefNameMap, queryRefNameMap },] of adapters.entries()) {\n const dataAdapter = await getFeatureAdapterOrThrow({\n pluginManager,\n sessionId,\n adapterConfig,\n });\n const fetchOpts = {\n sessionId,\n signal,\n bpPerPx,\n statusCallback,\n targetAssemblyName,\n };\n const feats = dedupe(await dataAdapter.getFeaturesInMultipleRegionsArray(fetchRegions, fetchOpts), f => f.id());\n // Labelled because it is a distinct pass over hundreds of thousands of\n // features; without it the bar sat on the fetch's last percentage. Numbered\n // when there are several adapters, so a multi-track level doesn't look like\n // it is repeating the same step.\n statusCallback?.(adapters.length > 1\n ? `Processing alignments (${adapterIndex + 1}/${adapters.length})`\n : 'Processing alignments');\n // append element-by-element, not `push(...arr)`: whole-genome synteny\n // yields hundreds of thousands of alignments, and spreading that many\n // args overflows the call stack (\"Maximum call stack size exceeded\")\n for (const a of extractAlignmentData(feats, {\n refRefNameMap,\n queryRefNameMap,\n })) {\n alignments.push(a);\n }\n }\n if (alignments.length === 0) {\n return null;\n }\n // The algorithm labels and ticks its own two phases from here, so it reports\n // a live percentage rather than one message held for its whole run.\n const result = await diagonalizeRegions(alignments, referenceRegions, currentRegions, { signal, statusCallback });\n statusCallback?.('Diagonalization complete!');\n return result;\n}\n"],
5
- "mappings": "2EAAA,IAAMA,EAAO,eAAe,+CAA+C,EACrEC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,+JAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EAEC,IAAMC,EAA2CC,EAAK,0BAA0B,EAChFC,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECdxD,IAAMC,EAAO,eAAe,6BAA6B,EACnDC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,6IAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EACOC,EAAmCF,EAAK,kBAAkB,EAMvE,IAAOG,EAAQC,GAAQA,EAAK,WAAaA,EAAK,QAAUA,EClBxD,IAAMC,EAAO,eAAe,uCAAuC,EAC7DC,EAAOC,GACXF,GAAQ,MAAQE,KAAQ,OAAOF,CAAI,EAC/BA,EAAKE,CAAI,EACT,OAAO,OACL,UAAY,CACV,MAAM,IAAI,MACR,kCAAoCA,EAAO,uJAC7C,CACF,EACA,CAAE,mBAAoBA,CAAK,CAC7B,EACOC,EAAqCF,EAAK,oBAAoB,EACpEG,EAAQJ,GAAQA,EAAK,WAAaA,EAAK,QAAUA,ECMxD,eAAsBK,EAAmBC,EAAe,CAAE,UAAAC,EAAW,SAAAC,EAAU,iBAAAC,EAAkB,eAAAC,EAAgB,QAAAC,EAAS,OAAAC,EAAQ,eAAAC,CAAgB,EAAG,CACjJ,GAAI,CAACN,EACD,MAAM,IAAI,MAAM,+BAA+B,EAEnDO,EAAiBF,CAAM,EAOvB,IAAMG,EAAqBL,EAAe,CAAC,GAAG,aAK9CG,IAAiB,wBAAwB,EACzC,IAAMG,EAAa,CAAC,EACpB,OAAW,CAACC,EAAc,CAAE,cAAAC,EAAe,aAAAC,EAAc,cAAAC,EAAe,gBAAAC,CAAgB,CAAE,IAAKb,EAAS,QAAQ,EAAG,CAC/G,IAAMc,EAAc,MAAMC,EAAyB,CAC/C,cAAAjB,EACA,UAAAC,EACA,cAAAW,CACJ,CAAC,EACKM,EAAY,CACd,UAAAjB,EACA,OAAAK,EACA,QAAAD,EACA,eAAAE,EACA,mBAAAE,CACJ,EACMU,EAAQC,EAAO,MAAMJ,EAAY,kCAAkCH,EAAcK,CAAS,EAAGG,GAAKA,EAAE,GAAG,CAAC,EAK9Gd,IAAiBL,EAAS,OAAS,EAC7B,0BAA0BS,EAAe,CAAC,IAAIT,EAAS,MAAM,IAC7D,uBAAuB,EAI7B,QAAWoB,KAAKC,EAAqBJ,EAAO,CACxC,cAAAL,EACA,gBAAAC,CACJ,CAAC,EACGL,EAAW,KAAKY,CAAC,CAEzB,CACA,GAAIZ,EAAW,SAAW,EACtB,OAAO,KAIX,IAAMc,EAAS,MAAMC,EAAmBf,EAAYP,EAAkBC,EAAgB,CAAE,OAAAE,EAAQ,eAAAC,CAAe,CAAC,EAChH,OAAAA,IAAiB,2BAA2B,EACrCiB,CACX",
6
- "names": ["host", "read", "name", "getFeatureAdapterOrThrow", "read", "getFeatureAdapter_default", "host", "host", "read", "name", "checkAbortSignal", "aborting_default", "host", "host", "read", "name", "diagonalizeRegions", "diagonalizeRegions_default", "executeDiagonalize", "pluginManager", "sessionId", "adapters", "referenceRegions", "currentRegions", "bpPerPx", "signal", "statusCallback", "checkAbortSignal", "targetAssemblyName", "alignments", "adapterIndex", "adapterConfig", "fetchRegions", "refRefNameMap", "queryRefNameMap", "dataAdapter", "getFeatureAdapterOrThrow", "fetchOpts", "feats", "dedupe", "f", "a", "extractAlignmentData", "result", "diagonalizeRegions"]
7
- }
@@ -1,2 +0,0 @@
1
- import{d as B,g as C,i as $,j as O,k as j,l as W,n as X,p as H,q as A,s as z,u as F}from"./chunk-PTDOYJFH.js";import{Db as M,Fb as E,Nb as R,q as S,r as L}from"./chunk-KDXVLEHS.js";import"./chunk-SGP63UMC.js";import"./chunk-LJ7O3736.js";import{o as P}from"./chunk-GRLNDNX4.js";import"./chunk-DOC7QIE2.js";import"./chunk-2CPD5NX2.js";import"./chunk-G4OPM6G7.js";import"./chunk-ZFJGNGIB.js";import"./chunk-TWPUVVYH.js";import"./chunk-IKJZPPOA.js";import"./chunk-NDRLCGPC.js";import"./chunk-YU7T5WOQ.js";import{a as v,b as e,c as f}from"./chunk-JMBDTNUR.js";var m=JBrowseExports["@jbrowse/display-kit/renderDisplaySvg"],U=t=>m!=null&&t in Object(m)?m[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/display-kit/renderDisplaySvg' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t});var Y=U("renderDisplaySvg");var ot=m&&m.__esModule?m.default:m;var w=JBrowseExports["@jbrowse/core/util/paintLayer"],Z=t=>w!=null&&t in Object(w)?w[t]:Object.assign(function(){throw new Error("This JBrowse does not provide '"+t+"' from '@jbrowse/core/util/paintLayer' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse")},{jbrowseHostMissing:t}),G=Z("PaintLayer"),lt=w&&w.__esModule?w.default:w;var k={fontFamily:"sans-serif",fontSize:11},x=16,q=2,J=t=>t;function N({model:t,lift:n,drawPaths:o,width:r,height:a,rasterize:i}){let p=t.buildDrawing(n,o);if(!p)return null;let c=i?q:1,d=i?void 0:M(r,a),h=d?.canvas??document.createElement("canvas");d||(h.width=Math.round(r*c),h.height=Math.round(a*c));let{scaleX:u,scaleY:y,translateX:l,translateY:s}=t.screenTransform,g=new E(h);return g.uploadGeometry(p.batch),g.updateTransform({scaleX:u*c,scaleY:y*c,translateX:l*c,translateY:s*c,dpr:c}),g.render([0,0,0,0]),d?e("svg",{width:r,height:a,overflow:"hidden",children:e("g",{dangerouslySetInnerHTML:{__html:d.markup()}})}):e("image",{width:r,height:a,href:h.toDataURL("image/png")})}function D(t,n){if(!t.swatch)return{key:t.key,width:t.label.length*P,height:x,draw:i=>e("text",{...k,x:i,y:0,fill:"#666",children:t.label},t.key)};let o=t.swatch,r=C(o),a=(t.strong??"")+t.label;return{key:t.key,width:Math.max(r+5+a.length*P,(t.under?.length??0)*P),height:t.under?x*2:x,draw:i=>f("g",{...k,children:[e(W,{swatch:o,x:i,id:n}),f("text",{x:i+r+5,y:0,children:[t.strong?e("tspan",{fontWeight:"bold",children:t.strong}):null,t.label]}),t.under?e("text",{x:i,y:x,children:t.under}):null]},t.key)}}function Q({model:t,idPrefix:n}){let o=j(t).map(({testid:l,rows:s})=>s.map((g,b)=>D(g,`${n}-${l}-${b}`)));if(o.length===0)return null;let r=6,a=o.flat(),i=a.reduce((l,s)=>Math.max(l,s.width),-1/0)+r*2,p=a.reduce((l,s)=>l+s.height,0)+o.length*r,d=t.paneWidth-R-i+r,h=R+t.referenceStripZonePx,u=[],y=h+12-r/2;for(let l of o){y+=r;for(let s of l)u.push({row:s,y}),y+=s.height}return f("g",{"data-testid":"graph-svg-keys",children:[e("rect",{x:d-r,y:h,width:i,height:p,rx:3,fill:"#fff",fillOpacity:.82}),u.map(({row:l,y:s})=>e("g",{transform:`translate(0 ${s})`,children:l.draw(d)},l.key))]})}function K({x:t,y:n,text:o,fontSize:r,anchor:a,bold:i}){let p=o.length*r*.56+6,c=a==="middle"?t-p/2:t-3;return f(v,{children:[e("rect",{x:c,y:n-r*.65,width:p,height:r*1.3,rx:3,fill:"#fff",fillOpacity:.8}),e("text",{x:t,y:n+r*.35,textAnchor:a,fontSize:r,fontWeight:i?600:void 0,fill:"#18181c",children:o})]})}function tt({model:t}){return e("g",{fontFamily:k.fontFamily,children:t.overlayLabels.sizes.map(({key:n,text:o,x:r,y:a,kind:i,leader:p})=>f("g",{children:[p?e("line",{x1:p.arcX,y1:p.arcY,x2:p.labelX,y2:p.labelY,stroke:"#18181c"}):null,e(K,{x:r,y:a,text:o,fontSize:10,anchor:"middle",bold:i==="deletion"})]},n))})}function et({model:t}){return e("g",{fontFamily:k.fontFamily,children:t.visibleRowLabels.map(({label:n,y:o,top:r})=>e(K,{x:10,y:r,text:n,fontSize:11,anchor:"start"},o))})}function rt({model:t,rasterize:n,idPrefix:o}){let r=t.facetPanels,a=t.facetGrid,i=t.facetPlacement;if(!r||!a||!i)return null;let{columns:p,width:c,height:d}=a,h=a.total+S+14,u=O(t).map((l,s)=>D(l,`${o}-facet-key-${s}`)),y=u.map((l,s)=>u.slice(0,s).reduce((g,b)=>g+b.width+14,6));return f(v,{children:[e("g",{transform:`translate(0 ${h})`,children:u.map((l,s)=>l.draw(y[s]))}),r.map((l,s)=>{let g=i.cells[s],b=g%p*(c+S),I=Math.floor(g/p)*(L+d+S),_=l.walks[0],V=D($(t,_),`${o}-facet-${s}`);return f("g",{transform:`translate(${b} ${I})`,children:[e("g",{transform:`translate(0 ${x-2})`,children:V.draw(6)}),e("g",{transform:`translate(0 ${L})`,children:e(N,{model:t,lift:l,drawPaths:!1,width:c,height:d,rasterize:n})})]},_.name)})]})}function T({model:t,rasterize:n=!1,idPrefix:o}){let r=t.paneWidth,a=t.canvasHeight,i=!!t.layoutResult?.tubeMap,p={rasterizeLayers:n};return f("g",{"data-testid":"graph-pane-svg",children:[t.facetPanels?e(rt,{model:t,rasterize:n,idPrefix:o}):i?e(G,{width:r,height:a,opts:p,paint:c=>{z(J(c),t,{highlightNode:null})}}):e(N,{model:t,lift:t.drawnHighlight,drawPaths:t.effectiveDrawPaths,width:r,height:a,rasterize:n}),t.facetPanels?null:f(v,{children:[e(B,{model:t}),e(X,{model:t}),e(tt,{model:t}),e(H,{model:t}),e(F,{model:t,vector:!0}),e(et,{model:t})]}),t.referenceStripShown?e(G,{width:r,height:a,opts:p,paint:c=>{A(J(c),t,{lit:void 0,dpr:1})}}):null,t.facetPanels?null:e(Q,{model:t,idPrefix:o})]})}function nt({model:t,opts:n}){return e(T,{model:t,rasterize:!!n?.rasterizeLayers,idPrefix:`graph-${t.id}`})}function Gt(t,n){return Y(t,n,nt)}export{Gt as renderGraphTrackSvg};
2
- //# sourceMappingURL=renderSvg-NIWFCY3U.js.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["host:@jbrowse/display-kit/renderDisplaySvg", "host:@jbrowse/core/util/paintLayer", "../../src/GraphGenomeView/components/PaneSvg.tsx", "../../src/LinearGraphDisplay/renderSvg.tsx"],
4
- "sourcesContent": ["const host = JBrowseExports[\"@jbrowse/display-kit/renderDisplaySvg\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/display-kit/renderDisplaySvg\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const SvgLegend = /* @__PURE__ */ read(\"SvgLegend\")\nexport const SvgPinnedHighlight = /* @__PURE__ */ read(\"SvgPinnedHighlight\")\nexport const SvgYAxis = /* @__PURE__ */ read(\"SvgYAxis\")\nexport const exportsTooLargeNote = /* @__PURE__ */ read(\"exportsTooLargeNote\")\nexport const renderDisplaySvg = /* @__PURE__ */ read(\"renderDisplaySvg\")\nexport const svgSidebarWidthOf = /* @__PURE__ */ read(\"svgSidebarWidthOf\")\nexport default host && host.__esModule ? host.default : host", "const host = JBrowseExports[\"@jbrowse/core/util/paintLayer\"]\nconst read = name =>\n host != null && name in Object(host)\n ? host[name]\n : Object.assign(\n function () {\n throw new Error(\n \"This JBrowse does not provide '\" + name + \"' from '\" + \"@jbrowse/core/util/paintLayer\" + \"' to plugins: GraphGenomeView was built for a different JBrowse version, so update the plugin or JBrowse\",\n )\n },\n { jbrowseHostMissing: name },\n )\nexport const PaintLayer = /* @__PURE__ */ read(\"PaintLayer\")\nexport default host && host.__esModule ? host.default : host", "import { FACET_GAP_PX, FACET_TITLE_PX } from '@jbrowse/bandage-core/facetGrid'\nimport { LEGEND_INSET_PX } from '@jbrowse/bandage-core/labelLayout'\nimport { LABEL_CHAR_PX } from '@jbrowse/bandage-core/overlayLabels'\nimport { Canvas2DRenderer } from '@jbrowse/bandage-core/renderer/Canvas2DRenderer'\nimport { svgCanvas } from '@jbrowse/bandage-core/renderer/svgCanvas'\nimport { PaintLayer } from '@jbrowse/core/util/paintLayer'\n\nimport BubbleHalos from './BubbleHalos'\nimport GenePins from './GenePins'\nimport LabelLayer from './LabelLayer'\nimport { SvgSwatch } from './LegendSwatch'\nimport { paintReferenceStrip } from './ReferenceStripOverlay'\nimport { paintTubeMap } from './TubeMapOverlay'\nimport WalkRowsOverlay from './WalkRowsOverlay'\nimport {\n facetKeyRows,\n legendSections,\n swatchWidth,\n walkKeyRow,\n} from '../legendSections'\n\nimport type { LegendRow } from '../legendSections'\nimport type { GraphPaneModel } from '../model'\nimport type { WalkLift } from '@jbrowse/bandage-core/walkHighlight'\nimport type { Ctx2D } from '@jbrowse/core/util/paintLayer'\n\nconst FONT = { fontFamily: 'sans-serif', fontSize: 11 }\nconst ROW_PX = 16\nconst RASTER_SCALE = 2\n\nconst asCanvasCtx = (ctx: Ctx2D) => ctx as CanvasRenderingContext2D\n\n// The drawing's nodes and edges through the pane's own transform, so the\n// export lines up with the linear view's ruler wherever the screen does\nfunction Body({\n model,\n lift,\n drawPaths,\n width,\n height,\n rasterize,\n}: {\n model: GraphPaneModel\n lift: WalkLift | undefined\n drawPaths: boolean\n width: number\n height: number\n rasterize: boolean\n}) {\n const built = model.buildDrawing(lift, drawPaths)\n if (!built) {\n return null\n }\n const k = rasterize ? RASTER_SCALE : 1\n const vector = rasterize ? undefined : svgCanvas(width, height)\n const canvas = vector?.canvas ?? document.createElement('canvas')\n if (!vector) {\n canvas.width = Math.round(width * k)\n canvas.height = Math.round(height * k)\n }\n const { scaleX, scaleY, translateX, translateY } = model.screenTransform\n const renderer = new Canvas2DRenderer(canvas)\n renderer.uploadGeometry(built.batch)\n renderer.updateTransform({\n scaleX: scaleX * k,\n scaleY: scaleY * k,\n translateX: translateX * k,\n translateY: translateY * k,\n dpr: k,\n })\n renderer.render([0, 0, 0, 0])\n return vector ? (\n <svg width={width} height={height} overflow=\"hidden\">\n <g dangerouslySetInnerHTML={{ __html: vector.markup() }} />\n </svg>\n ) : (\n <image width={width} height={height} href={canvas.toDataURL('image/png')} />\n )\n}\n\ninterface KeyRow {\n key: string\n width: number\n height: number\n draw: (left: number) => React.ReactNode\n}\n\n// A legend row as the screen lays it out: its swatch, then its words, the\n// line under it if any; a note is grey words alone\nfunction svgRow(row: LegendRow, id: string): KeyRow {\n if (!row.swatch) {\n return {\n key: row.key,\n width: row.label.length * LABEL_CHAR_PX,\n height: ROW_PX,\n draw: left => (\n <text key={row.key} {...FONT} x={left} y={0} fill=\"#666\">\n {row.label}\n </text>\n ),\n }\n }\n const swatch = row.swatch\n const sw = swatchWidth(swatch)\n const words = (row.strong ?? '') + row.label\n return {\n key: row.key,\n width: Math.max(\n sw + 5 + words.length * LABEL_CHAR_PX,\n (row.under?.length ?? 0) * LABEL_CHAR_PX,\n ),\n height: row.under ? ROW_PX * 2 : ROW_PX,\n draw: left => (\n <g key={row.key} {...FONT}>\n <SvgSwatch swatch={swatch} x={left} id={id} />\n <text x={left + sw + 5} y={0}>\n {row.strong ? <tspan fontWeight=\"bold\">{row.strong}</tspan> : null}\n {row.label}\n </text>\n {row.under ? (\n <text x={left} y={ROW_PX}>\n {row.under}\n </text>\n ) : null}\n </g>\n ),\n }\n}\n\n// The screen's legend panel, section by section\nfunction Keys({\n model,\n idPrefix,\n}: {\n model: GraphPaneModel\n idPrefix: string\n}) {\n const sections = legendSections(model).map(({ testid, rows }) =>\n rows.map((row, i) => svgRow(row, `${idPrefix}-${testid}-${i}`)),\n )\n if (sections.length === 0) {\n return null\n }\n const pad = 6\n const rows = sections.flat()\n const boxWidth =\n rows.reduce((max, r) => Math.max(max, r.width), -Infinity) + pad * 2\n const boxHeight =\n rows.reduce((sum, r) => sum + r.height, 0) + sections.length * pad\n const right = model.paneWidth - LEGEND_INSET_PX\n const left = right - boxWidth + pad\n const top = LEGEND_INSET_PX + model.referenceStripZonePx\n const placed: { row: KeyRow; y: number }[] = []\n let y = top + 12 - pad / 2\n for (const section of sections) {\n y += pad\n for (const row of section) {\n placed.push({ row, y })\n y += row.height\n }\n }\n return (\n <g data-testid=\"graph-svg-keys\">\n <rect\n x={left - pad}\n y={top}\n width={boxWidth}\n height={boxHeight}\n rx={3}\n fill=\"#fff\"\n fillOpacity={0.82}\n />\n {placed.map(({ row, y }) => (\n <g key={row.key} transform={`translate(0 ${y})`}>\n {row.draw(left)}\n </g>\n ))}\n </g>\n )\n}\n\n// Words on a pale rounded backing, as the screen's labels sit\nfunction Chip({\n x,\n y,\n text,\n fontSize,\n anchor,\n bold,\n}: {\n x: number\n y: number\n text: string\n fontSize: number\n anchor: 'start' | 'middle'\n bold?: boolean\n}) {\n const w = text.length * fontSize * 0.56 + 6\n const left = anchor === 'middle' ? x - w / 2 : x - 3\n return (\n <>\n <rect\n x={left}\n y={y - fontSize * 0.65}\n width={w}\n height={fontSize * 1.3}\n rx={3}\n fill=\"#fff\"\n fillOpacity={0.8}\n />\n <text\n x={x}\n y={y + fontSize * 0.35}\n textAnchor={anchor}\n fontSize={fontSize}\n fontWeight={bold ? 600 : undefined}\n fill=\"#18181c\"\n >\n {text}\n </text>\n </>\n )\n}\n\n// The node and deletion lengths written on the drawing, with their leaders\nfunction SizeLabels({ model }: { model: GraphPaneModel }) {\n return (\n <g fontFamily={FONT.fontFamily}>\n {model.overlayLabels.sizes.map(({ key, text, x, y, kind, leader }) => (\n <g key={key}>\n {leader ? (\n <line\n x1={leader.arcX}\n y1={leader.arcY}\n x2={leader.labelX}\n y2={leader.labelY}\n stroke=\"#18181c\"\n />\n ) : null}\n <Chip\n x={x}\n y={y}\n text={text}\n fontSize={10}\n anchor=\"middle\"\n bold={kind === 'deletion'}\n />\n </g>\n ))}\n </g>\n )\n}\n\nfunction RowLabels({ model }: { model: GraphPaneModel }) {\n return (\n <g fontFamily={FONT.fontFamily}>\n {model.visibleRowLabels.map(({ label, y, top }) => (\n <Chip\n key={y}\n x={10}\n y={top}\n text={label}\n fontSize={11}\n anchor=\"start\"\n />\n ))}\n </g>\n )\n}\n\n// Each lifted walk in a panel of its own, its key as the panel's title\nfunction Facets({\n model,\n rasterize,\n idPrefix,\n}: {\n model: GraphPaneModel\n rasterize: boolean\n idPrefix: string\n}) {\n const panels = model.facetPanels\n const grid = model.facetGrid\n const place = model.facetPlacement\n if (!panels || !grid || !place) {\n return null\n }\n const { columns, width, height } = grid\n const keyY = grid.total + FACET_GAP_PX + 14\n const key = facetKeyRows(model).map((row, i) =>\n svgRow(row, `${idPrefix}-facet-key-${i}`),\n )\n const keyX = key.map((_, i) =>\n key.slice(0, i).reduce((x, row) => x + row.width + 14, 6),\n )\n return (\n <>\n <g transform={`translate(0 ${keyY})`}>\n {key.map((row, i) => row.draw(keyX[i]!))}\n </g>\n {panels.map((lift, i) => {\n const cell = place.cells[i]!\n const x = (cell % columns) * (width + FACET_GAP_PX)\n const y =\n Math.floor(cell / columns) * (FACET_TITLE_PX + height + FACET_GAP_PX)\n const walk = lift.walks[0]!\n const title = svgRow(walkKeyRow(model, walk), `${idPrefix}-facet-${i}`)\n return (\n <g key={walk.name} transform={`translate(${x} ${y})`}>\n <g transform={`translate(0 ${ROW_PX - 2})`}>{title.draw(6)}</g>\n <g transform={`translate(0 ${FACET_TITLE_PX})`}>\n <Body\n model={model}\n lift={lift}\n drawPaths={false}\n width={width}\n height={height}\n rasterize={rasterize}\n />\n </g>\n </g>\n )\n })}\n </>\n )\n}\n\n// The pane as the screen draws it, for the linear view's SVG export: the\n// canvas's ink, the tube map and reference strip painters, and the SVG\n// overlays the screen mounts over them. Hover and selection are left out.\nexport default function PaneSvg({\n model,\n rasterize = false,\n idPrefix,\n}: {\n model: GraphPaneModel\n rasterize?: boolean\n idPrefix: string\n}) {\n const width = model.paneWidth\n const height = model.canvasHeight\n const tubeMap = !!model.layoutResult?.tubeMap\n const opts = { rasterizeLayers: rasterize }\n return (\n <g data-testid=\"graph-pane-svg\">\n {model.facetPanels ? (\n <Facets model={model} rasterize={rasterize} idPrefix={idPrefix} />\n ) : tubeMap ? (\n <PaintLayer\n width={width}\n height={height}\n opts={opts}\n paint={ctx => {\n paintTubeMap(asCanvasCtx(ctx), model, { highlightNode: null })\n }}\n />\n ) : (\n <Body\n model={model}\n lift={model.drawnHighlight}\n drawPaths={model.effectiveDrawPaths}\n width={width}\n height={height}\n rasterize={rasterize}\n />\n )}\n {/* in the screen's stacking order, bottom first */}\n {model.facetPanels ? null : (\n <>\n <BubbleHalos model={model} />\n <GenePins model={model} />\n <SizeLabels model={model} />\n <LabelLayer model={model} />\n <WalkRowsOverlay model={model} vector />\n <RowLabels model={model} />\n </>\n )}\n {model.referenceStripShown ? (\n <PaintLayer\n width={width}\n height={height}\n opts={opts}\n paint={ctx => {\n paintReferenceStrip(asCanvasCtx(ctx), model, {\n lit: undefined,\n dpr: 1,\n })\n }}\n />\n ) : null}\n {model.facetPanels ? null : <Keys model={model} idPrefix={idPrefix} />}\n </g>\n )\n}\n", "import { renderDisplaySvg } from '@jbrowse/display-kit/renderDisplaySvg'\n\nimport PaneSvg from '../GraphGenomeView/components/PaneSvg'\n\nimport type { LinearGraphDisplayModel } from './model'\nimport type { LgvSvgBodyProps } from '@jbrowse/display-kit/renderDisplaySvg'\nimport type { ExportSvgDisplayOptions } from '@jbrowse/display-kit/types'\n\nfunction GraphTrackSvgBody({\n model,\n opts,\n}: LgvSvgBodyProps<LinearGraphDisplayModel>) {\n return (\n <PaneSvg\n model={model}\n rasterize={!!opts?.rasterizeLayers}\n idPrefix={`graph-${model.id}`}\n />\n )\n}\n\nexport function renderGraphTrackSvg(\n model: LinearGraphDisplayModel,\n opts?: ExportSvgDisplayOptions,\n) {\n return renderDisplaySvg(model, opts, GraphTrackSvgBody)\n}\n"],
5
- "mappings": "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",
6
- "names": ["host", "read", "name", "renderDisplaySvg", "read", "renderDisplaySvg_default", "host", "host", "read", "name", "PaintLayer", "paintLayer_default", "FONT", "ROW_PX", "RASTER_SCALE", "asCanvasCtx", "ctx", "Body", "model", "lift", "drawPaths", "width", "height", "rasterize", "built", "k", "vector", "svgCanvas", "canvas", "scaleX", "scaleY", "translateX", "translateY", "renderer", "Canvas2DRenderer", "jsx", "svgRow", "row", "id", "LABEL_CHAR_PX", "left", "swatch", "sw", "swatchWidth", "words", "jsxs", "SvgSwatch", "Keys", "idPrefix", "sections", "legendSections", "testid", "rows", "i", "pad", "boxWidth", "max", "r", "boxHeight", "sum", "LEGEND_INSET_PX", "top", "placed", "section", "y", "Chip", "x", "text", "fontSize", "anchor", "bold", "w", "Fragment", "SizeLabels", "key", "kind", "leader", "RowLabels", "label", "Facets", "panels", "grid", "place", "columns", "keyY", "FACET_GAP_PX", "facetKeyRows", "keyX", "_", "cell", "FACET_TITLE_PX", "walk", "title", "walkKeyRow", "PaneSvg", "tubeMap", "opts", "PaintLayer", "paintTubeMap", "BubbleHalos_default", "GenePins_default", "LabelLayer_default", "WalkRowsOverlay_default", "paintReferenceStrip", "GraphTrackSvgBody", "model", "opts", "jsx", "PaneSvg", "renderGraphTrackSvg", "renderDisplaySvg"]
7
- }