jbrowse-plugin-msaview 5.1.1 → 5.2.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 (59) hide show
  1. package/dist/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.js +0 -2
  2. package/dist/MsaViewPanel/model.d.ts +24 -22
  3. package/dist/chunks/{AboutDialog-YNPKL64P.js → AboutDialog-IRBPUPJK.js} +2 -2
  4. package/dist/chunks/{AboutDialog-YNPKL64P.js.map → AboutDialog-IRBPUPJK.js.map} +2 -2
  5. package/dist/chunks/{AnnotationFileDialog-NJGKHAVR.js → AnnotationFileDialog-FCYYZ4JN.js} +2 -2
  6. package/dist/chunks/{AnnotationFileDialog-NJGKHAVR.js.map → AnnotationFileDialog-FCYYZ4JN.js.map} +1 -1
  7. package/dist/chunks/ExportSVGDialog-TYYPI6VB.js +2 -0
  8. package/dist/chunks/ExportSVGDialog-TYYPI6VB.js.map +7 -0
  9. package/dist/chunks/{FeatureDialog-7XXL6XUK.js → FeatureDialog-ZBX3XQZ5.js} +1 -1
  10. package/dist/chunks/{FeatureDialog-7XXL6XUK.js.map → FeatureDialog-ZBX3XQZ5.js.map} +1 -1
  11. package/dist/chunks/{LaunchMsaViewDialog-C53VHT52.js → LaunchMsaViewDialog-GJAUPGFC.js} +3 -3
  12. package/dist/chunks/{LaunchMsaViewDialog-C53VHT52.js.map → LaunchMsaViewDialog-GJAUPGFC.js.map} +2 -2
  13. package/dist/chunks/{MetadataDialog-QCUWTDBU.js → MetadataDialog-KZWQFRF7.js} +2 -2
  14. package/dist/chunks/{MetadataDialog-QCUWTDBU.js.map → MetadataDialog-KZWQFRF7.js.map} +1 -1
  15. package/dist/chunks/{MsaViewPanel-DS4STM3W.js → MsaViewPanel-RUZAKFCB.js} +2 -2
  16. package/dist/chunks/{TrackInfoDialog-BVZWIDEU.js → TrackInfoDialog-IFIG77WO.js} +2 -2
  17. package/dist/chunks/{TrackInfoDialog-BVZWIDEU.js.map → TrackInfoDialog-IFIG77WO.js.map} +1 -1
  18. package/dist/chunks/{TreeNodeInfoDialog-LPLF6BA6.js → TreeNodeInfoDialog-VRCVIF26.js} +2 -2
  19. package/dist/chunks/{TreeNodeInfoDialog-LPLF6BA6.js.map → TreeNodeInfoDialog-VRCVIF26.js.map} +1 -1
  20. package/dist/chunks/{chunk-OF4AZJER.js → chunk-F3EC6OCO.js} +1 -1
  21. package/dist/chunks/{chunk-OF4AZJER.js.map → chunk-F3EC6OCO.js.map} +1 -1
  22. package/dist/chunks/{chunk-VWM6IHF2.js → chunk-GDFVLZYX.js} +2 -2
  23. package/dist/chunks/{chunk-VWM6IHF2.js.map → chunk-GDFVLZYX.js.map} +1 -1
  24. package/dist/chunks/{chunk-IP2BEEIU.js → chunk-GIHMPOCO.js} +1 -1
  25. package/dist/chunks/{chunk-IP2BEEIU.js.map → chunk-GIHMPOCO.js.map} +1 -1
  26. package/dist/chunks/{chunk-VJQWGQ4V.js → chunk-H6IQBAW7.js} +2 -2
  27. package/dist/chunks/{chunk-VJQWGQ4V.js.map → chunk-H6IQBAW7.js.map} +1 -1
  28. package/dist/chunks/chunk-NMYD2GWF.js +18 -0
  29. package/dist/chunks/chunk-NMYD2GWF.js.map +7 -0
  30. package/dist/chunks/{chunk-P7ZJCOIY.js → chunk-QQ5LZUIO.js} +1 -1
  31. package/dist/chunks/{chunk-P7ZJCOIY.js.map → chunk-QQ5LZUIO.js.map} +1 -1
  32. package/dist/chunks/chunk-QUWPHTZQ.js +2 -0
  33. package/dist/chunks/chunk-QUWPHTZQ.js.map +7 -0
  34. package/dist/chunks/{chunk-NSKY4K4T.js → chunk-YOTSFJMU.js} +1 -1
  35. package/dist/chunks/{chunk-NSKY4K4T.js.map → chunk-YOTSFJMU.js.map} +1 -1
  36. package/dist/chunks/{chunk-HOEVB65D.js → chunk-ZCT7RD24.js} +2 -2
  37. package/dist/chunks/{dist-UX5CKLQJ.js → dist-CMWKVHC7.js} +1 -1
  38. package/dist/chunks/{dist-UX5CKLQJ.js.map → dist-CMWKVHC7.js.map} +1 -1
  39. package/dist/chunks/{dist-6DG5HXEW.js → dist-R73J3CC3.js} +2 -2
  40. package/dist/chunks/{model-DXQOMSLC.js → model-VE7IYWNU.js} +2 -2
  41. package/dist/chunks/{renderToSvg-2LBAS6XS.js → renderToSvg-VDXAB7TT.js} +2 -2
  42. package/dist/jbrowse-plugin-msaview.esm.js +2 -2
  43. package/dist/jbrowse-plugin-msaview.esm.js.map +1 -1
  44. package/dist/version.d.ts +1 -1
  45. package/dist/version.js +1 -1
  46. package/package.json +3 -3
  47. package/src/LaunchMsaView/components/PreLoadedMSA/PreLoadedMSADataPanel.tsx +0 -2
  48. package/src/version.ts +1 -1
  49. package/dist/chunks/ExportSVGDialog-D5DKR6CZ.js +0 -2
  50. package/dist/chunks/ExportSVGDialog-D5DKR6CZ.js.map +0 -7
  51. package/dist/chunks/chunk-S2T7S4SB.js +0 -18
  52. package/dist/chunks/chunk-S2T7S4SB.js.map +0 -7
  53. package/dist/chunks/chunk-SKDGC3HW.js +0 -2
  54. package/dist/chunks/chunk-SKDGC3HW.js.map +0 -7
  55. /package/dist/chunks/{MsaViewPanel-DS4STM3W.js.map → MsaViewPanel-RUZAKFCB.js.map} +0 -0
  56. /package/dist/chunks/{chunk-HOEVB65D.js.map → chunk-ZCT7RD24.js.map} +0 -0
  57. /package/dist/chunks/{dist-6DG5HXEW.js.map → dist-R73J3CC3.js.map} +0 -0
  58. /package/dist/chunks/{model-DXQOMSLC.js.map → model-VE7IYWNU.js.map} +0 -0
  59. /package/dist/chunks/{renderToSvg-2LBAS6XS.js.map → renderToSvg-VDXAB7TT.js.map} +0 -0
@@ -1,2 +1,2 @@
1
- import{a as n,b as m,c as l}from"./chunk-VJQWGQ4V.js";import"./chunk-NSKY4K4T.js";import"./chunk-OF4AZJER.js";import"./chunk-P7ZJCOIY.js";import"./chunk-73KAPCJ2.js";import"./chunk-VWM6IHF2.js";import"./chunk-IP2BEEIU.js";import{a as u}from"./chunk-CVLB4VFP.js";import{a as f}from"./chunk-DNFD5II2.js";import{a as d}from"./chunk-BX4Z274Q.js";import{a as s}from"./chunk-J6KYLXRD.js";import{b as a}from"./chunk-FY3BTKY4.js";var e=a(s(),1),i=a(f(),1),t=a(d(),1),c=a(u(),1);var E=(0,c.observer)(function({model:r,onClose:p}){let{header:o}=r;return e.default.createElement(i.Dialog,{onClose:()=>{p()},open:!0,title:"Metadata",maxWidth:"xl"},e.default.createElement(t.DialogContent,null,Object.values(o).every(n)?e.default.createElement(t.Typography,null,"This alignment has no metadata."):e.default.createElement(m,{record:o}),e.default.createElement(t.Typography,{variant:"h6"},"Sequences"),e.default.createElement(l,{str:r.rows})))}),v=E;export{v as default};
2
- //# sourceMappingURL=MetadataDialog-QCUWTDBU.js.map
1
+ import{a as n,b as m,c as l}from"./chunk-H6IQBAW7.js";import"./chunk-YOTSFJMU.js";import"./chunk-F3EC6OCO.js";import"./chunk-QQ5LZUIO.js";import"./chunk-73KAPCJ2.js";import"./chunk-GDFVLZYX.js";import"./chunk-GIHMPOCO.js";import{a as u}from"./chunk-CVLB4VFP.js";import{a as f}from"./chunk-DNFD5II2.js";import{a as d}from"./chunk-BX4Z274Q.js";import{a as s}from"./chunk-J6KYLXRD.js";import{b as a}from"./chunk-FY3BTKY4.js";var e=a(s(),1),i=a(f(),1),t=a(d(),1),c=a(u(),1);var E=(0,c.observer)(function({model:r,onClose:p}){let{header:o}=r;return e.default.createElement(i.Dialog,{onClose:()=>{p()},open:!0,title:"Metadata",maxWidth:"xl"},e.default.createElement(t.DialogContent,null,Object.values(o).every(n)?e.default.createElement(t.Typography,null,"This alignment has no metadata."):e.default.createElement(m,{record:o}),e.default.createElement(t.Typography,{variant:"h6"},"Sequences"),e.default.createElement(l,{str:r.rows})))}),v=E;export{v as default};
2
+ //# sourceMappingURL=MetadataDialog-KZWQFRF7.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/dialogs/MetadataDialog.tsx"],
3
+ "sources": ["../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/dialogs/MetadataDialog.tsx"],
4
4
  "sourcesContent": ["import React from 'react'\n\nimport { Dialog } from '@jbrowse/core/ui'\nimport { DialogContent, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\n\nimport MetadataTable, { isEmpty } from '../MetadataTable.tsx'\nimport SequenceTextArea from '../SequenceTextArea.tsx'\n\nimport type { MsaViewModel } from '../../model.ts'\n\nconst MetadataDialog = observer(function ({\n model,\n onClose,\n}: {\n model: MsaViewModel\n onClose: () => void\n}) {\n const { header } = model\n return (\n <Dialog\n onClose={() => {\n onClose()\n }}\n open\n title=\"Metadata\"\n maxWidth=\"xl\"\n >\n <DialogContent>\n {Object.values(header).every(isEmpty) ? (\n <Typography>This alignment has no metadata.</Typography>\n ) : (\n <MetadataTable record={header} />\n )}\n <Typography variant=\"h6\">Sequences</Typography>\n <SequenceTextArea str={model.rows} />\n </DialogContent>\n </Dialog>\n )\n})\n\nexport default MetadataDialog\n"],
5
5
  "mappings": "saAAA,IAAAA,EAAkB,SAElBC,EAAuB,SACvBC,EAA0C,SAC1CC,EAAyB,SAOzB,IAAMC,KAAiB,YAAS,SAAU,CACxC,MAAAC,EACA,QAAAC,CAAO,EAIR,CACC,GAAM,CAAE,OAAAC,CAAM,EAAKF,EACnB,OACE,EAAAG,QAAA,cAAC,SAAM,CACL,QAAS,IAAK,CACZF,EAAO,CACT,EACA,KAAI,GACJ,MAAM,WACN,SAAS,IAAI,EAEb,EAAAE,QAAA,cAAC,gBAAa,KACX,OAAO,OAAOD,CAAM,EAAE,MAAME,CAAO,EAClC,EAAAD,QAAA,cAAC,aAAU,KAAA,iCAAA,EAEX,EAAAA,QAAA,cAACE,EAAa,CAAC,OAAQH,CAAM,CAAA,EAE/B,EAAAC,QAAA,cAAC,aAAU,CAAC,QAAQ,IAAI,EAAA,WAAA,EACxB,EAAAA,QAAA,cAACG,EAAgB,CAAC,IAAKN,EAAM,IAAI,CAAA,CAAI,CACvB,CAGtB,CAAC,EAEDO,EAAeR",
6
6
  "names": ["import_react", "import_ui", "import_material", "import_mobx_react", "MetadataDialog", "model", "onClose", "header", "React", "isEmpty", "MetadataTable", "SequenceTextArea", "MetadataDialog_default"]
@@ -1,2 +1,2 @@
1
- import{a as b,c as k,d as C}from"./chunk-HOEVB65D.js";import{e as M}from"./chunk-S2T7S4SB.js";import"./chunk-OF4AZJER.js";import"./chunk-FCWXYIFC.js";import{a as B}from"./chunk-6YFCSBEE.js";import"./chunk-F726IWCW.js";import"./chunk-YUKJI2AH.js";import"./chunk-P7ZJCOIY.js";import{a as L}from"./chunk-NSASZ5FM.js";import"./chunk-IBBQUV2I.js";import"./chunk-SKDGC3HW.js";import"./chunk-73KAPCJ2.js";import"./chunk-IP2BEEIU.js";import{a as y}from"./chunk-CVLB4VFP.js";import{a as P}from"./chunk-DNFD5II2.js";import{a as w}from"./chunk-BX4Z274Q.js";import{a as h}from"./chunk-J6KYLXRD.js";import{b as i}from"./chunk-FY3BTKY4.js";var e=i(h()),z=i(P()),E=i(y());var I=i(L());var o=i(h()),d=i(P()),n=i(w()),S=i(y()),x=i(L());var c=i(h()),J=i(w());function N({jobId:s}){let r=C(s)?k(s):b(s);return c.default.createElement(J.Typography,null,"Job ",s," (",c.default.createElement(B,{href:r},"see status"),")")}var v=N;var U=(0,x.makeStyles)()({margin:{padding:20},progressRow:{display:"flex",alignItems:"center",gap:12}}),D=(0,S.observer)(function({model:r}){let{progress:u,rid:a,error:m}=r,{classes:t}=U(),f=!r.launchCompleted,{blastParams:l,orthologParams:g}=r,p=l?`Running EBI ${l.searchProgram==="phmmer"?"phmmer":"BLAST"}`:g?g.source==="uniref"?"Building UniRef homolog alignment":"Building ortholog alignment":"Loading alignment";return o.default.createElement("div",{className:t.margin},m?o.default.createElement(o.default.Fragment,null,o.default.createElement(n.Typography,{variant:"h5"},f?`${p} failed`:"Alignment no longer available"),a?o.default.createElement(v,{jobId:a}):null,o.default.createElement(d.ErrorMessage,{error:m}),o.default.createElement("div",{className:t.progressRow},o.default.createElement(n.Button,{variant:"outlined",size:"small",onClick:()=>{r.retryLaunch()}},"Retry"),o.default.createElement(n.Button,{variant:"outlined",size:"small",onClick:()=>{r.cancelLaunch()}},"Dismiss"))):o.default.createElement(o.default.Fragment,null,o.default.createElement(d.LoadingEllipses,{message:p,variant:"h5"}),a?o.default.createElement(v,{jobId:a}):null,o.default.createElement("div",{className:t.progressRow},o.default.createElement(n.Typography,null,u||"Initializing"),o.default.createElement(n.Button,{variant:"outlined",size:"small",onClick:()=>{r.cancelLaunch()}},"Cancel"))))}),V=D;var $=(0,I.makeStyles)()({loadingContainer:{padding:20}}),q=(0,E.observer)(function({model:r}){let{classes:u}=$(),{blastParams:a,orthologParams:m,init:t,loadingStoredData:f}=r,l=a??m,g=!!l&&!r.launchCompleted,p=!!(r.data.msa||r.data.tree),T=!!l&&!!r.error&&!p,A=g||T||!!t&&!r.dataInitialized;return e.default.createElement("div",null,A?e.default.createElement(V,{model:r}):f&&!r.dataInitialized?e.default.createElement("div",{className:u.loadingContainer},e.default.createElement(z.LoadingEllipses,{message:"Loading MSA data",variant:"h6"})):e.default.createElement(M,{model:r}))}),X=q;export{X as default};
2
- //# sourceMappingURL=MsaViewPanel-DS4STM3W.js.map
1
+ import{a as b,c as k,d as C}from"./chunk-ZCT7RD24.js";import{e as M}from"./chunk-NMYD2GWF.js";import"./chunk-F3EC6OCO.js";import"./chunk-FCWXYIFC.js";import{a as B}from"./chunk-6YFCSBEE.js";import"./chunk-F726IWCW.js";import"./chunk-YUKJI2AH.js";import"./chunk-QQ5LZUIO.js";import{a as L}from"./chunk-NSASZ5FM.js";import"./chunk-IBBQUV2I.js";import"./chunk-QUWPHTZQ.js";import"./chunk-73KAPCJ2.js";import"./chunk-GIHMPOCO.js";import{a as y}from"./chunk-CVLB4VFP.js";import{a as P}from"./chunk-DNFD5II2.js";import{a as w}from"./chunk-BX4Z274Q.js";import{a as h}from"./chunk-J6KYLXRD.js";import{b as i}from"./chunk-FY3BTKY4.js";var e=i(h()),z=i(P()),E=i(y());var I=i(L());var o=i(h()),d=i(P()),n=i(w()),S=i(y()),x=i(L());var c=i(h()),J=i(w());function N({jobId:s}){let r=C(s)?k(s):b(s);return c.default.createElement(J.Typography,null,"Job ",s," (",c.default.createElement(B,{href:r},"see status"),")")}var v=N;var U=(0,x.makeStyles)()({margin:{padding:20},progressRow:{display:"flex",alignItems:"center",gap:12}}),D=(0,S.observer)(function({model:r}){let{progress:u,rid:a,error:m}=r,{classes:t}=U(),f=!r.launchCompleted,{blastParams:l,orthologParams:g}=r,p=l?`Running EBI ${l.searchProgram==="phmmer"?"phmmer":"BLAST"}`:g?g.source==="uniref"?"Building UniRef homolog alignment":"Building ortholog alignment":"Loading alignment";return o.default.createElement("div",{className:t.margin},m?o.default.createElement(o.default.Fragment,null,o.default.createElement(n.Typography,{variant:"h5"},f?`${p} failed`:"Alignment no longer available"),a?o.default.createElement(v,{jobId:a}):null,o.default.createElement(d.ErrorMessage,{error:m}),o.default.createElement("div",{className:t.progressRow},o.default.createElement(n.Button,{variant:"outlined",size:"small",onClick:()=>{r.retryLaunch()}},"Retry"),o.default.createElement(n.Button,{variant:"outlined",size:"small",onClick:()=>{r.cancelLaunch()}},"Dismiss"))):o.default.createElement(o.default.Fragment,null,o.default.createElement(d.LoadingEllipses,{message:p,variant:"h5"}),a?o.default.createElement(v,{jobId:a}):null,o.default.createElement("div",{className:t.progressRow},o.default.createElement(n.Typography,null,u||"Initializing"),o.default.createElement(n.Button,{variant:"outlined",size:"small",onClick:()=>{r.cancelLaunch()}},"Cancel"))))}),V=D;var $=(0,I.makeStyles)()({loadingContainer:{padding:20}}),q=(0,E.observer)(function({model:r}){let{classes:u}=$(),{blastParams:a,orthologParams:m,init:t,loadingStoredData:f}=r,l=a??m,g=!!l&&!r.launchCompleted,p=!!(r.data.msa||r.data.tree),T=!!l&&!!r.error&&!p,A=g||T||!!t&&!r.dataInitialized;return e.default.createElement("div",null,A?e.default.createElement(V,{model:r}):f&&!r.dataInitialized?e.default.createElement("div",{className:u.loadingContainer},e.default.createElement(z.LoadingEllipses,{message:"Loading MSA data",variant:"h6"})):e.default.createElement(M,{model:r}))}),X=q;export{X as default};
2
+ //# sourceMappingURL=MsaViewPanel-RUZAKFCB.js.map
@@ -1,2 +1,2 @@
1
- import{a as l}from"./chunk-VWM6IHF2.js";import{a as k}from"./chunk-IP2BEEIU.js";import{a as p}from"./chunk-CVLB4VFP.js";import{a as f}from"./chunk-DNFD5II2.js";import{a as g}from"./chunk-BX4Z274Q.js";import{a as d}from"./chunk-J6KYLXRD.js";import{b as o}from"./chunk-FY3BTKY4.js";var e=o(d(),1),c=o(f(),1),i=o(k(),1),t=o(g(),1),m=o(p(),1);var E=(0,i.makeStyles)()(a=>({textArea:{padding:a.spacing(2),overflow:"auto",background:a.palette.action.selected,wordBreak:"break-word"}})),x=(0,m.observer)(function({model:a,onClose:n}){let{name:s,data:r}=a,{classes:u}=E();return e.default.createElement(c.Dialog,{open:!0,onClose:n,fullWidth:!0,maxWidth:"lg",title:`Track info - ${s}`},e.default.createElement(t.DialogContent,null,r===void 0?e.default.createElement(t.Typography,null,"This track has no text data."):e.default.createElement(e.default.Fragment,null,e.default.createElement(l,{text:r}),e.default.createElement("pre",{className:u.textArea},r))),e.default.createElement(t.DialogActions,null,e.default.createElement(t.Button,{variant:"contained",onClick:n,color:"secondary"},"Close")))}),h=x;export{h as default};
2
- //# sourceMappingURL=TrackInfoDialog-BVZWIDEU.js.map
1
+ import{a as l}from"./chunk-GDFVLZYX.js";import{a as k}from"./chunk-GIHMPOCO.js";import{a as p}from"./chunk-CVLB4VFP.js";import{a as f}from"./chunk-DNFD5II2.js";import{a as g}from"./chunk-BX4Z274Q.js";import{a as d}from"./chunk-J6KYLXRD.js";import{b as o}from"./chunk-FY3BTKY4.js";var e=o(d(),1),c=o(f(),1),i=o(k(),1),t=o(g(),1),m=o(p(),1);var E=(0,i.makeStyles)()(a=>({textArea:{padding:a.spacing(2),overflow:"auto",background:a.palette.action.selected,wordBreak:"break-word"}})),x=(0,m.observer)(function({model:a,onClose:n}){let{name:s,data:r}=a,{classes:u}=E();return e.default.createElement(c.Dialog,{open:!0,onClose:n,fullWidth:!0,maxWidth:"lg",title:`Track info - ${s}`},e.default.createElement(t.DialogContent,null,r===void 0?e.default.createElement(t.Typography,null,"This track has no text data."):e.default.createElement(e.default.Fragment,null,e.default.createElement(l,{text:r}),e.default.createElement("pre",{className:u.textArea},r))),e.default.createElement(t.DialogActions,null,e.default.createElement(t.Button,{variant:"contained",onClick:n,color:"secondary"},"Close")))}),h=x;export{h as default};
2
+ //# sourceMappingURL=TrackInfoDialog-IFIG77WO.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/dialogs/TrackInfoDialog.tsx"],
3
+ "sources": ["../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/dialogs/TrackInfoDialog.tsx"],
4
4
  "sourcesContent": ["import React from 'react'\n\nimport { Dialog } from '@jbrowse/core/ui'\nimport { makeStyles } from '@jbrowse/core/util/tss-react'\nimport { Button, DialogActions, DialogContent, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\n\nimport CopyButton from '../CopyButton.tsx'\n\nimport type { BasicTrack } from '../../types.ts'\n\nconst useStyles = makeStyles()(theme => ({\n textArea: {\n padding: theme.spacing(2),\n overflow: 'auto',\n background: theme.palette.action.selected,\n wordBreak: 'break-word',\n },\n}))\n\nconst TrackInfoDialog = observer(function ({\n model,\n onClose,\n}: {\n model: BasicTrack['model']\n onClose: () => void\n}) {\n const { name, data } = model\n const { classes } = useStyles()\n return (\n <Dialog\n open\n onClose={onClose}\n fullWidth\n maxWidth=\"lg\"\n title={`Track info - ${name}`}\n >\n <DialogContent>\n {/* the bar tracks (conservation) are computed per column and carry no\n text of their own, so there is nothing to show or copy for them */}\n {data === undefined ? (\n <Typography>This track has no text data.</Typography>\n ) : (\n <>\n <CopyButton text={data} />\n <pre className={classes.textArea}>{data}</pre>\n </>\n )}\n </DialogContent>\n <DialogActions>\n <Button variant=\"contained\" onClick={onClose} color=\"secondary\">\n Close\n </Button>\n </DialogActions>\n </Dialog>\n )\n})\n\nexport default TrackInfoDialog\n"],
5
5
  "mappings": "wRAAA,IAAAA,EAAkB,SAElBC,EAAuB,SACvBC,EAA2B,SAC3BC,EAAiE,SACjEC,EAAyB,SAMzB,IAAMC,KAAY,cAAU,EAAGC,IAAU,CACvC,SAAU,CACR,QAASA,EAAM,QAAQ,CAAC,EACxB,SAAU,OACV,WAAYA,EAAM,QAAQ,OAAO,SACjC,UAAW,eAEb,EAEIC,KAAkB,YAAS,SAAU,CACzC,MAAAC,EACA,QAAAC,CAAO,EAIR,CACC,GAAM,CAAE,KAAAC,EAAM,KAAAC,CAAI,EAAKH,EACjB,CAAE,QAAAI,CAAO,EAAKP,EAAS,EAC7B,OACE,EAAAQ,QAAA,cAAC,SAAM,CACL,KAAI,GACJ,QAASJ,EACT,UAAS,GACT,SAAS,KACT,MAAO,gBAAgBC,CAAI,EAAE,EAE7B,EAAAG,QAAA,cAAC,gBAAa,KAGXF,IAAS,OACR,EAAAE,QAAA,cAAC,aAAU,KAAA,8BAAA,EAEX,EAAAA,QAAA,cAAA,EAAAA,QAAA,SAAA,KACE,EAAAA,QAAA,cAACC,EAAU,CAAC,KAAMH,CAAI,CAAA,EACtB,EAAAE,QAAA,cAAA,MAAA,CAAK,UAAWD,EAAQ,QAAQ,EAAGD,CAAI,CAAO,CAEjD,EAEH,EAAAE,QAAA,cAAC,gBAAa,KACZ,EAAAA,QAAA,cAAC,SAAM,CAAC,QAAQ,YAAY,QAASJ,EAAS,MAAM,WAAW,EAAA,OAAA,CAEtD,CACK,CAGtB,CAAC,EAEDM,EAAeR",
6
6
  "names": ["import_react", "import_ui", "import_tss_react", "import_material", "import_mobx_react", "useStyles", "theme", "TrackInfoDialog", "model", "onClose", "name", "data", "classes", "React", "CopyButton", "TrackInfoDialog_default"]
@@ -1,2 +1,2 @@
1
- import{b as n,c}from"./chunk-VJQWGQ4V.js";import"./chunk-NSKY4K4T.js";import"./chunk-OF4AZJER.js";import"./chunk-P7ZJCOIY.js";import"./chunk-73KAPCJ2.js";import"./chunk-VWM6IHF2.js";import"./chunk-IP2BEEIU.js";import{a as g}from"./chunk-CVLB4VFP.js";import{a as h}from"./chunk-DNFD5II2.js";import{a as x}from"./chunk-BX4Z274Q.js";import{a as d}from"./chunk-J6KYLXRD.js";import{b as r}from"./chunk-FY3BTKY4.js";var e=r(d(),1),i=r(h(),1),t=r(x(),1),f=r(g(),1);var T=(0,f.observer)(function({info:u,model:o,nodeName:a,onClose:E}){let{rows:p}=o,l=o.rowDataOf(a),m=p.find(s=>s[0]===a);return e.default.createElement(i.Dialog,{onClose:()=>{E()},open:!0,title:"Tree node info",maxWidth:"xl"},e.default.createElement(t.DialogContent,null,e.default.createElement(t.Typography,{variant:"h6"},"Attributes"),e.default.createElement(n,{record:{nodeName:a,...u}}),e.default.createElement(t.Typography,{variant:"h6"},"Sequence"),m?e.default.createElement(c,{str:[m]}):e.default.createElement(t.Typography,null,"Sequence not found"),l?e.default.createElement(e.default.Fragment,null,e.default.createElement(t.Typography,{variant:"h6"},"Extra metadata"),e.default.createElement(n,{record:l})):null))}),b=T;export{b as default};
2
- //# sourceMappingURL=TreeNodeInfoDialog-LPLF6BA6.js.map
1
+ import{b as n,c}from"./chunk-H6IQBAW7.js";import"./chunk-YOTSFJMU.js";import"./chunk-F3EC6OCO.js";import"./chunk-QQ5LZUIO.js";import"./chunk-73KAPCJ2.js";import"./chunk-GDFVLZYX.js";import"./chunk-GIHMPOCO.js";import{a as g}from"./chunk-CVLB4VFP.js";import{a as h}from"./chunk-DNFD5II2.js";import{a as x}from"./chunk-BX4Z274Q.js";import{a as d}from"./chunk-J6KYLXRD.js";import{b as r}from"./chunk-FY3BTKY4.js";var e=r(d(),1),i=r(h(),1),t=r(x(),1),f=r(g(),1);var T=(0,f.observer)(function({info:u,model:o,nodeName:a,onClose:E}){let{rows:p}=o,l=o.rowDataOf(a),m=p.find(s=>s[0]===a);return e.default.createElement(i.Dialog,{onClose:()=>{E()},open:!0,title:"Tree node info",maxWidth:"xl"},e.default.createElement(t.DialogContent,null,e.default.createElement(t.Typography,{variant:"h6"},"Attributes"),e.default.createElement(n,{record:{nodeName:a,...u}}),e.default.createElement(t.Typography,{variant:"h6"},"Sequence"),m?e.default.createElement(c,{str:[m]}):e.default.createElement(t.Typography,null,"Sequence not found"),l?e.default.createElement(e.default.Fragment,null,e.default.createElement(t.Typography,{variant:"h6"},"Extra metadata"),e.default.createElement(n,{record:l})):null))}),b=T;export{b as default};
2
+ //# sourceMappingURL=TreeNodeInfoDialog-VRCVIF26.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/tree/dialogs/TreeNodeInfoDialog.tsx"],
3
+ "sources": ["../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/tree/dialogs/TreeNodeInfoDialog.tsx"],
4
4
  "sourcesContent": ["import React from 'react'\n\nimport { Dialog } from '@jbrowse/core/ui'\nimport { DialogContent, Typography } from '@mui/material'\nimport { observer } from 'mobx-react'\n\nimport MetadataTable from '../../MetadataTable.tsx'\nimport SequenceTextArea from '../../SequenceTextArea.tsx'\n\nimport type { MsaViewModel } from '../../../model.ts'\n\nconst TreeNodeInfoDialog = observer(function ({\n info,\n model,\n nodeName,\n onClose,\n}: {\n info: Record<string, unknown>\n model: MsaViewModel\n nodeName: string\n onClose: () => void\n}) {\n const { rows } = model\n const metadata = model.rowDataOf(nodeName)\n const res = rows.find(f => f[0] === nodeName)\n return (\n <Dialog\n onClose={() => {\n onClose()\n }}\n open\n title=\"Tree node info\"\n maxWidth=\"xl\"\n >\n <DialogContent>\n <Typography variant=\"h6\">Attributes</Typography>\n <MetadataTable record={{ nodeName, ...info }} />\n <Typography variant=\"h6\">Sequence</Typography>\n {res ? (\n <SequenceTextArea str={[res]} />\n ) : (\n <Typography>Sequence not found</Typography>\n )}\n {metadata ? (\n <>\n <Typography variant=\"h6\">Extra metadata</Typography>\n <MetadataTable record={metadata} />\n </>\n ) : null}\n </DialogContent>\n </Dialog>\n )\n})\n\nexport default TreeNodeInfoDialog\n"],
5
5
  "mappings": "0ZAAA,IAAAA,EAAkB,SAElBC,EAAuB,SACvBC,EAA0C,SAC1CC,EAAyB,SAOzB,IAAMC,KAAqB,YAAS,SAAU,CAC5C,KAAAC,EACA,MAAAC,EACA,SAAAC,EACA,QAAAC,CAAO,EAMR,CACC,GAAM,CAAE,KAAAC,CAAI,EAAKH,EACXI,EAAWJ,EAAM,UAAUC,CAAQ,EACnCI,EAAMF,EAAK,KAAKG,GAAKA,EAAE,CAAC,IAAML,CAAQ,EAC5C,OACE,EAAAM,QAAA,cAAC,SAAM,CACL,QAAS,IAAK,CACZL,EAAO,CACT,EACA,KAAI,GACJ,MAAM,iBACN,SAAS,IAAI,EAEb,EAAAK,QAAA,cAAC,gBAAa,KACZ,EAAAA,QAAA,cAAC,aAAU,CAAC,QAAQ,IAAI,EAAA,YAAA,EACxB,EAAAA,QAAA,cAACC,EAAa,CAAC,OAAQ,CAAE,SAAAP,EAAU,GAAGF,CAAI,CAAE,CAAA,EAC5C,EAAAQ,QAAA,cAAC,aAAU,CAAC,QAAQ,IAAI,EAAA,UAAA,EACvBF,EACC,EAAAE,QAAA,cAACE,EAAgB,CAAC,IAAK,CAACJ,CAAG,CAAC,CAAA,EAE5B,EAAAE,QAAA,cAAC,aAAU,KAAA,oBAAA,EAEZH,EACC,EAAAG,QAAA,cAAA,EAAAA,QAAA,SAAA,KACE,EAAAA,QAAA,cAAC,aAAU,CAAC,QAAQ,IAAI,EAAA,gBAAA,EACxB,EAAAA,QAAA,cAACC,EAAa,CAAC,OAAQJ,CAAQ,CAAA,CAAI,EAEnC,IAAI,CACM,CAGtB,CAAC,EAEDM,EAAeZ",
6
6
  "names": ["import_react", "import_ui", "import_material", "import_mobx_react", "TreeNodeInfoDialog", "info", "model", "nodeName", "onClose", "rows", "metadata", "res", "f", "React", "MetadataTable", "SequenceTextArea", "TreeNodeInfoDialog_default"]
@@ -1,2 +1,2 @@
1
1
  function n(c,o){let t=URL.createObjectURL(c),e=document.createElement("a");e.href=t,e.download=o,e.click(),setTimeout(()=>{URL.revokeObjectURL(t)},4e4)}export{n as a};
2
- //# sourceMappingURL=chunk-OF4AZJER.js.map
2
+ //# sourceMappingURL=chunk-F3EC6OCO.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/vendor/fileSaver.ts"],
3
+ "sources": ["../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/vendor/fileSaver.ts"],
4
4
  "sourcesContent": ["export function saveAs(blob: Blob, name: string) {\n const url = URL.createObjectURL(blob)\n const a = document.createElement('a')\n a.href = url\n a.download = name\n a.click()\n setTimeout(() => {\n URL.revokeObjectURL(url)\n }, 40_000)\n}\n"],
5
5
  "mappings": "AAAM,SAAUA,EAAOC,EAAYC,EAAY,CAC7C,IAAMC,EAAM,IAAI,gBAAgBF,CAAI,EAC9BG,EAAI,SAAS,cAAc,GAAG,EACpCA,EAAE,KAAOD,EACTC,EAAE,SAAWF,EACbE,EAAE,MAAK,EACP,WAAW,IAAK,CACd,IAAI,gBAAgBD,CAAG,CACzB,EAAG,GAAM,CACX",
6
6
  "names": ["saveAs", "blob", "name", "url", "a"]
@@ -1,2 +1,2 @@
1
- import{b as n}from"./chunk-IP2BEEIU.js";import{a as f}from"./chunk-BX4Z274Q.js";import{a as p}from"./chunk-J6KYLXRD.js";import{b as i}from"./chunk-FY3BTKY4.js";var e=i(p(),1),c=i(f(),1);function m({text:t,label:u="Copy to clipboard"}){let[a,r]=(0,e.useState)(!1),o=(0,e.useRef)(void 0);return(0,e.useEffect)(()=>()=>{clearTimeout(o.current)},[]),e.default.createElement(c.Button,{variant:"contained",color:"primary",onClick:()=>{n(typeof t=="string"?t:t()),r(!0),clearTimeout(o.current),o.current=setTimeout(()=>{r(!1)},500)}},a?"Copied!":u)}export{m as a};
2
- //# sourceMappingURL=chunk-VWM6IHF2.js.map
1
+ import{b as n}from"./chunk-GIHMPOCO.js";import{a as f}from"./chunk-BX4Z274Q.js";import{a as p}from"./chunk-J6KYLXRD.js";import{b as i}from"./chunk-FY3BTKY4.js";var e=i(p(),1),c=i(f(),1);function m({text:t,label:u="Copy to clipboard"}){let[a,r]=(0,e.useState)(!1),o=(0,e.useRef)(void 0);return(0,e.useEffect)(()=>()=>{clearTimeout(o.current)},[]),e.default.createElement(c.Button,{variant:"contained",color:"primary",onClick:()=>{n(typeof t=="string"?t:t()),r(!0),clearTimeout(o.current),o.current=setTimeout(()=>{r(!1)},500)}},a?"Copied!":u)}export{m as a};
2
+ //# sourceMappingURL=chunk-GDFVLZYX.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/CopyButton.tsx"],
3
+ "sources": ["../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/CopyButton.tsx"],
4
4
  "sourcesContent": ["import React, { useEffect, useRef, useState } from 'react'\n\nimport { Button } from '@mui/material'\n\nimport copy from '../vendor/copyToClipboard.ts'\n\n/**\n * Copy-to-clipboard button that confirms on the label for a moment. The timer is\n * cleared on unmount, since these live in dialogs the copy itself often closes.\n */\nexport default function CopyButton({\n text,\n label = 'Copy to clipboard',\n}: {\n text: string | (() => string)\n label?: string\n}) {\n const [copied, setCopied] = useState(false)\n const timer = useRef<ReturnType<typeof setTimeout>>(undefined)\n\n useEffect(\n () => () => {\n clearTimeout(timer.current)\n },\n [],\n )\n\n return (\n <Button\n variant=\"contained\"\n color=\"primary\"\n onClick={() => {\n copy(typeof text === 'string' ? text : text())\n setCopied(true)\n clearTimeout(timer.current)\n timer.current = setTimeout(() => {\n setCopied(false)\n }, 500)\n }}\n >\n {copied ? 'Copied!' : label}\n </Button>\n )\n}\n"],
5
5
  "mappings": "gKAAA,IAAAA,EAAmD,SAEnDC,EAAuB,SAQT,SAAPC,EAA4B,CACjC,KAAAC,EACA,MAAAC,EAAQ,mBAAmB,EAI5B,CACC,GAAM,CAACC,EAAQC,CAAS,KAAI,YAAS,EAAK,EACpCC,KAAQ,UAAsC,MAAS,EAE7D,sBACE,IAAM,IAAK,CACT,aAAaA,EAAM,OAAO,CAC5B,EACA,CAAA,CAAE,EAIF,EAAAC,QAAA,cAAC,SAAM,CACL,QAAQ,YACR,MAAM,UACN,QAAS,IAAK,CACZC,EAAK,OAAON,GAAS,SAAWA,EAAOA,EAAI,CAAE,EAC7CG,EAAU,EAAI,EACd,aAAaC,EAAM,OAAO,EAC1BA,EAAM,QAAU,WAAW,IAAK,CAC9BD,EAAU,EAAK,CACjB,EAAG,GAAG,CACR,CAAC,EAEAD,EAAS,UAAYD,CAAK,CAGjC",
6
6
  "names": ["import_react", "import_material", "CopyButton", "text", "label", "copied", "setCopied", "timer", "React", "copy"]
@@ -1,2 +1,2 @@
1
1
  import{a}from"./chunk-FY3BTKY4.js";var i=a((p,c)=>{c.exports=JBrowseExports["@jbrowse/core/util/tss-react"]});function n(t){let o=navigator.clipboard;if(o?.writeText){o.writeText(t).catch(r=>{console.error("Failed to copy to clipboard:",r)});return}let e=document.createElement("textarea");e.value=t,e.style.position="fixed",e.style.opacity="0",document.body.append(e),e.select(),document.execCommand("copy"),e.remove()}export{i as a,n as b};
2
- //# sourceMappingURL=chunk-IP2BEEIU.js.map
2
+ //# sourceMappingURL=chunk-GIHMPOCO.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["global-externals:@jbrowse/core/util/tss-react", "../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/vendor/copyToClipboard.ts"],
3
+ "sources": ["global-externals:@jbrowse/core/util/tss-react", "../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/vendor/copyToClipboard.ts"],
4
4
  "sourcesContent": ["module.exports = JBrowseExports[\"@jbrowse/core/util/tss-react\"];", "export default function copy(text: string) {\n const clip = navigator.clipboard as Clipboard | undefined\n if (clip?.writeText) {\n clip.writeText(text).catch((e: unknown) => {\n console.error('Failed to copy to clipboard:', e)\n })\n return\n }\n const textarea = document.createElement('textarea')\n textarea.value = text\n textarea.style.position = 'fixed'\n textarea.style.opacity = '0'\n document.body.append(textarea)\n textarea.select()\n document.execCommand('copy')\n textarea.remove()\n}\n"],
5
5
  "mappings": "mCAAA,IAAAA,EAAAC,EAAA,CAAAC,EAAAC,IAAA,CAAAA,EAAO,QAAU,eAAe,8BAA8B,ICAhD,SAAPC,EAAsBC,EAAY,CACvC,IAAMC,EAAO,UAAU,UACvB,GAAIA,GAAM,UAAW,CACnBA,EAAK,UAAUD,CAAI,EAAE,MAAOE,GAAc,CACxC,QAAQ,MAAM,+BAAgCA,CAAC,CACjD,CAAC,EACD,MACF,CACA,IAAMC,EAAW,SAAS,cAAc,UAAU,EAClDA,EAAS,MAAQH,EACjBG,EAAS,MAAM,SAAW,QAC1BA,EAAS,MAAM,QAAU,IACzB,SAAS,KAAK,OAAOA,CAAQ,EAC7BA,EAAS,OAAM,EACf,SAAS,YAAY,MAAM,EAC3BA,EAAS,OAAM,CACjB",
6
6
  "names": ["require_tss_react", "__commonJSMin", "exports", "module", "copy", "text", "clip", "e", "textarea"]
@@ -1,6 +1,6 @@
1
- import{a as d}from"./chunk-NSKY4K4T.js";import{a as b}from"./chunk-OF4AZJER.js";import{f as y}from"./chunk-P7ZJCOIY.js";import{a as S}from"./chunk-VWM6IHF2.js";import{a as x}from"./chunk-IP2BEEIU.js";import{a as g}from"./chunk-BX4Z274Q.js";import{a as w}from"./chunk-J6KYLXRD.js";import{b as s}from"./chunk-FY3BTKY4.js";var l=s(w(),1),E=s(x(),1),a=s(g(),1),j=(0,E.makeStyles)()({key:{fontWeight:"bold",verticalAlign:"top"},value:{whiteSpace:"pre-wrap",wordBreak:"break-word"}});function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function B(e){return k(e)&&Object.keys(e).length===0}function A({record:e}){let{classes:o}=j();return l.default.createElement(a.Table,{size:"small"},l.default.createElement(a.TableBody,null,Object.entries(e).filter(([,t])=>t!=null&&!B(t)).map(([t,r])=>l.default.createElement(a.TableRow,{key:t},l.default.createElement(a.TableCell,{component:"th",className:o.key},t),l.default.createElement(a.TableCell,{className:o.value},k(r)?l.default.createElement(A,{record:r}):Array.isArray(r)?r.join(`
1
+ import{a as d}from"./chunk-YOTSFJMU.js";import{a as b}from"./chunk-F3EC6OCO.js";import{f as y}from"./chunk-QQ5LZUIO.js";import{a as S}from"./chunk-GDFVLZYX.js";import{a as x}from"./chunk-GIHMPOCO.js";import{a as g}from"./chunk-BX4Z274Q.js";import{a as w}from"./chunk-J6KYLXRD.js";import{b as s}from"./chunk-FY3BTKY4.js";var l=s(w(),1),E=s(x(),1),a=s(g(),1),j=(0,E.makeStyles)()({key:{fontWeight:"bold",verticalAlign:"top"},value:{whiteSpace:"pre-wrap",wordBreak:"break-word"}});function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function B(e){return k(e)&&Object.keys(e).length===0}function A({record:e}){let{classes:o}=j();return l.default.createElement(a.Table,{size:"small"},l.default.createElement(a.TableBody,null,Object.entries(e).filter(([,t])=>t!=null&&!B(t)).map(([t,r])=>l.default.createElement(a.TableRow,{key:t},l.default.createElement(a.TableCell,{component:"th",className:o.key},t),l.default.createElement(a.TableCell,{className:o.value},k(r)?l.default.createElement(A,{record:r}):Array.isArray(r)?r.join(`
2
2
  `):String(r))))))}var n=s(w(),1),C=s(x(),1),f=s(g(),1);var F=(0,C.makeStyles)()(e=>({textAreaFont:{fontFamily:"Courier New",wordWrap:"break-word"},dialogContent:{background:e.palette.action.selected,margin:4}})),N=100,$=2e5;function T([e,o],t){return`>${e}
3
3
  ${t?o:y(o)}`}function G(e){return!/[^.-]/.test(e)}function O(e,o){let t=[],r=0;for(let c of e){if(t.length>=N||r>=$)break;let i=T(c,o);t.push(i),r+=i.length+1}return{text:t.join(`
4
4
  `),hidden:e.length-t.length}}function W({str:e}){let{classes:o}=F(),[t,r]=(0,n.useState)(!1),[c,i]=(0,n.useState)(!1),m=c?e:e.filter(([,p])=>t?!!p:!G(p)),{text:R,hidden:u}=O(m,t),h=()=>m.map(p=>T(p,t)).join(`
5
5
  `);return n.default.createElement(n.default.Fragment,null,n.default.createElement(S,{text:h}),n.default.createElement(f.Button,{onClick:()=>{b(new Blob([h()],{type:"text/plain"}),"sequences.fasta")}},"Download"),n.default.createElement(d,{label:"Show gaps",checked:t,onChange:()=>{r(!t)}}),n.default.createElement(d,{label:"Show empty",checked:c,onChange:()=>{i(!c)}}),n.default.createElement(f.TextField,{variant:"outlined",multiline:!0,className:o.dialogContent,minRows:5,maxRows:10,fullWidth:!0,value:R,helperText:u>0?`Showing ${m.length-u} of ${m.length.toLocaleString()} sequences. ${u.toLocaleString()} more are in the copy and the download.`:void 0,slotProps:{input:{readOnly:!0,className:o.textAreaFont}}}))}export{B as a,A as b,W as c};
6
- //# sourceMappingURL=chunk-VJQWGQ4V.js.map
6
+ //# sourceMappingURL=chunk-H6IQBAW7.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/MetadataTable.tsx", "../../node_modules/.pnpm/react-msaview@8.4.1_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/SequenceTextArea.tsx"],
3
+ "sources": ["../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/MetadataTable.tsx", "../../node_modules/.pnpm/react-msaview@9.0.0_3e54acfe76b6ad0d26e91cd532b7f775/node_modules/react-msaview/src/components/SequenceTextArea.tsx"],
4
4
  "sourcesContent": ["import React from 'react'\n\nimport { makeStyles } from '@jbrowse/core/util/tss-react'\nimport { Table, TableBody, TableCell, TableRow } from '@mui/material'\n\nconst useStyles = makeStyles()({\n key: {\n fontWeight: 'bold',\n verticalAlign: 'top',\n },\n value: {\n whiteSpace: 'pre-wrap',\n wordBreak: 'break-word',\n },\n})\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === 'object' && value !== null && !Array.isArray(value)\n}\n\nexport function isEmpty(value: unknown) {\n return isRecord(value) && Object.keys(value).length === 0\n}\n\nexport default function MetadataTable({\n record,\n}: {\n record: Record<string, unknown>\n}) {\n const { classes } = useStyles()\n return (\n <Table size=\"small\">\n <TableBody>\n {Object.entries(record)\n .filter(([, value]) => value != null && !isEmpty(value))\n .map(([key, value]) => (\n <TableRow key={key}>\n <TableCell component=\"th\" className={classes.key}>\n {key}\n </TableCell>\n <TableCell className={classes.value}>\n {isRecord(value) ? (\n <MetadataTable record={value} />\n ) : Array.isArray(value) ? (\n value.join('\\n')\n ) : (\n String(value)\n )}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )\n}\n", "import React, { useState } from 'react'\n\nimport { makeStyles } from '@jbrowse/core/util/tss-react'\nimport { Button, TextField } from '@mui/material'\nimport { getUngappedSequence } from 'msa-parsers'\n\nimport { saveAs } from '../vendor/fileSaver.ts'\nimport Checkbox2 from './Checkbox2.tsx'\nimport CopyButton from './CopyButton.tsx'\n\nconst useStyles = makeStyles()(theme => ({\n textAreaFont: {\n fontFamily: 'Courier New',\n wordWrap: 'break-word',\n },\n dialogContent: {\n background: theme.palette.action.selected,\n margin: 4,\n },\n}))\n\nexport const maxShownRecords = 100\nexport const maxShownChars = 200_000\n\nfunction fastaRecord([name, seq]: [string, string], showGaps: boolean) {\n return `>${name}\\n${showGaps ? seq : getUngappedSequence(seq)}`\n}\n\nfunction isAllGaps(seq: string) {\n return !/[^.-]/.test(seq)\n}\n\n/**\n * The first records of `rows` as FASTA, up to `maxShownRecords` records or\n * `maxShownChars` characters, whichever comes first. A textarea holding every\n * row of a large alignment freezes the page.\n */\nexport function fastaPreview(rows: [string, string][], showGaps: boolean) {\n const shown: string[] = []\n let chars = 0\n for (const row of rows) {\n if (shown.length >= maxShownRecords || chars >= maxShownChars) {\n break\n }\n const record = fastaRecord(row, showGaps)\n shown.push(record)\n chars += record.length + 1\n }\n return { text: shown.join('\\n'), hidden: rows.length - shown.length }\n}\n\nexport default function SequenceTextArea({ str }: { str: [string, string][] }) {\n const { classes } = useStyles()\n const [showGaps, setShowGaps] = useState(false)\n const [showEmpty, setShowEmpty] = useState(false)\n\n const rows = showEmpty\n ? str\n : str.filter(([, seq]) => (showGaps ? !!seq : !isAllGaps(seq)))\n const { text, hidden } = fastaPreview(rows, showGaps)\n const fullText = () => rows.map(row => fastaRecord(row, showGaps)).join('\\n')\n return (\n <>\n <CopyButton text={fullText} />\n <Button\n onClick={() => {\n saveAs(\n new Blob([fullText()], { type: 'text/plain' }),\n 'sequences.fasta',\n )\n }}\n >\n Download\n </Button>\n <Checkbox2\n label=\"Show gaps\"\n checked={showGaps}\n onChange={() => {\n setShowGaps(!showGaps)\n }}\n />\n <Checkbox2\n label=\"Show empty\"\n checked={showEmpty}\n onChange={() => {\n setShowEmpty(!showEmpty)\n }}\n />\n <TextField\n variant=\"outlined\"\n multiline\n className={classes.dialogContent}\n minRows={5}\n maxRows={10}\n fullWidth\n value={text}\n helperText={\n hidden > 0\n ? `Showing ${rows.length - hidden} of ${rows.length.toLocaleString()} sequences. ${hidden.toLocaleString()} more are in the copy and the download.`\n : undefined\n }\n slotProps={{\n input: {\n readOnly: true,\n className: classes.textAreaFont,\n },\n }}\n />\n </>\n )\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": ["import_react", "import_tss_react", "import_material", "useStyles", "isRecord", "value", "isEmpty", "MetadataTable", "record", "classes", "React", "key", "import_react", "import_tss_react", "import_material", "useStyles", "theme", "maxShownRecords", "maxShownChars", "fastaRecord", "name", "seq", "showGaps", "getUngappedSequence", "isAllGaps", "fastaPreview", "rows", "shown", "chars", "row", "record", "SequenceTextArea", "str", "classes", "setShowGaps", "showEmpty", "setShowEmpty", "text", "hidden", "fullText", "React", "CopyButton", "saveAs", "Checkbox2"]