react-msaview 4.0.2 → 4.1.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 (170) hide show
  1. package/bundle/index.js +282 -111
  2. package/dist/colorSchemes.js +1 -1
  3. package/dist/colorSchemes.js.map +1 -1
  4. package/dist/components/Checkbox2.js.map +1 -1
  5. package/dist/components/Loading.js +5 -6
  6. package/dist/components/Loading.js.map +1 -1
  7. package/dist/components/MSAView.js +3 -4
  8. package/dist/components/MSAView.js.map +1 -1
  9. package/dist/components/ResizeHandles.js.map +1 -1
  10. package/dist/components/SequenceTextArea.js +1 -2
  11. package/dist/components/SequenceTextArea.js.map +1 -1
  12. package/dist/components/TextTrack.d.ts +1 -1
  13. package/dist/components/TextTrack.js +1 -1
  14. package/dist/components/TextTrack.js.map +1 -1
  15. package/dist/components/Track.js +4 -5
  16. package/dist/components/Track.js.map +1 -1
  17. package/dist/components/VerticalScrollbar.js +1 -1
  18. package/dist/components/VerticalScrollbar.js.map +1 -1
  19. package/dist/components/dialogs/AboutDialog.js +4 -4
  20. package/dist/components/dialogs/AboutDialog.js.map +1 -1
  21. package/dist/components/dialogs/AddTrackDialog.js +1 -1
  22. package/dist/components/dialogs/AddTrackDialog.js.map +1 -1
  23. package/dist/components/dialogs/DomainDialog.js +1 -2
  24. package/dist/components/dialogs/DomainDialog.js.map +1 -1
  25. package/dist/components/dialogs/ExportSVGDialog.js +1 -1
  26. package/dist/components/dialogs/ExportSVGDialog.js.map +1 -1
  27. package/dist/components/dialogs/FeatureDialog.js +1 -1
  28. package/dist/components/dialogs/FeatureDialog.js.map +1 -1
  29. package/dist/components/dialogs/InterProScanDialog.js +3 -3
  30. package/dist/components/dialogs/InterProScanDialog.js.map +1 -1
  31. package/dist/components/dialogs/MetadataDialog.js +3 -2
  32. package/dist/components/dialogs/MetadataDialog.js.map +1 -1
  33. package/dist/components/dialogs/SettingsDialog.js +29 -29
  34. package/dist/components/dialogs/SettingsDialog.js.map +1 -1
  35. package/dist/components/dialogs/TrackInfoDialog.js +2 -2
  36. package/dist/components/dialogs/TrackInfoDialog.js.map +1 -1
  37. package/dist/components/dialogs/TracklistDialog.js +1 -1
  38. package/dist/components/dialogs/TracklistDialog.js.map +1 -1
  39. package/dist/components/dialogs/UserProvidedDomainsDialog.js +3 -3
  40. package/dist/components/dialogs/UserProvidedDomainsDialog.js.map +1 -1
  41. package/dist/components/header/Header.js +5 -7
  42. package/dist/components/header/Header.js.map +1 -1
  43. package/dist/components/header/HeaderInfoArea.js.map +1 -1
  44. package/dist/components/header/HeaderMenu.js +3 -4
  45. package/dist/components/header/HeaderMenu.js.map +1 -1
  46. package/dist/components/header/HeaderMenuExtra.js +8 -9
  47. package/dist/components/header/HeaderMenuExtra.js.map +1 -1
  48. package/dist/components/header/HeaderStatusArea.js +1 -1
  49. package/dist/components/header/HeaderStatusArea.js.map +1 -1
  50. package/dist/components/header/MultiAlignmentSelector.js +1 -1
  51. package/dist/components/header/MultiAlignmentSelector.js.map +1 -1
  52. package/dist/components/header/ZoomControls.js +11 -5
  53. package/dist/components/header/ZoomControls.js.map +1 -1
  54. package/dist/components/import/ImportForm.js +19 -15
  55. package/dist/components/import/ImportForm.js.map +1 -1
  56. package/dist/components/import/ImportFormExamples.js +2 -2
  57. package/dist/components/import/ImportFormExamples.js.map +1 -1
  58. package/dist/components/import/util.d.ts +1 -1
  59. package/dist/components/minimap/Minimap.js.map +1 -1
  60. package/dist/components/minimap/MinimapSVG.js.map +1 -1
  61. package/dist/components/msa/Loading.js +1 -1
  62. package/dist/components/msa/Loading.js.map +1 -1
  63. package/dist/components/msa/MSACanvas.js +2 -2
  64. package/dist/components/msa/MSACanvas.js.map +1 -1
  65. package/dist/components/msa/MSACanvasBlock.js +2 -3
  66. package/dist/components/msa/MSACanvasBlock.js.map +1 -1
  67. package/dist/components/msa/MSAMouseoverCanvas.js +1 -1
  68. package/dist/components/msa/MSAMouseoverCanvas.js.map +1 -1
  69. package/dist/components/msa/MSAPanel.js +0 -1
  70. package/dist/components/msa/MSAPanel.js.map +1 -1
  71. package/dist/components/msa/renderBoxFeatureCanvasBlock.js.map +1 -1
  72. package/dist/components/msa/renderMSABlock.d.ts +1 -1
  73. package/dist/components/msa/renderMSABlock.js +9 -3
  74. package/dist/components/msa/renderMSABlock.js.map +1 -1
  75. package/dist/components/tree/TreeBranchMenu.js.map +1 -1
  76. package/dist/components/tree/TreeCanvas.js +1 -2
  77. package/dist/components/tree/TreeCanvas.js.map +1 -1
  78. package/dist/components/tree/TreeCanvasBlock.js +4 -5
  79. package/dist/components/tree/TreeCanvasBlock.js.map +1 -1
  80. package/dist/components/tree/TreeNodeMenu.js +5 -1
  81. package/dist/components/tree/TreeNodeMenu.js.map +1 -1
  82. package/dist/components/tree/TreePanel.js.map +1 -1
  83. package/dist/components/tree/TreeRuler.js.map +1 -1
  84. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js +2 -1
  85. package/dist/components/tree/dialogs/TreeNodeInfoDialog.js.map +1 -1
  86. package/dist/components/tree/renderTreeCanvas.d.ts +2 -2
  87. package/dist/components/tree/renderTreeCanvas.js +5 -5
  88. package/dist/components/tree/renderTreeCanvas.js.map +1 -1
  89. package/dist/index.d.ts +1 -1
  90. package/dist/index.js.map +1 -1
  91. package/dist/launchInterProScan.js.map +1 -1
  92. package/dist/model/DialogQueue.js.map +1 -1
  93. package/dist/model/treeModel.d.ts +1 -1
  94. package/dist/model/treeModel.js +1 -1
  95. package/dist/model/treeModel.js.map +1 -1
  96. package/dist/model.d.ts +30 -34
  97. package/dist/model.js +71 -40
  98. package/dist/model.js.map +1 -1
  99. package/dist/parsers/ClustalMSA.js.map +1 -1
  100. package/dist/parsers/EmfMSA.js.map +1 -1
  101. package/dist/parsers/StockholmMSA.js.map +1 -1
  102. package/dist/renderToSvg.d.ts +1 -1
  103. package/dist/renderToSvg.js +5 -6
  104. package/dist/renderToSvg.js.map +1 -1
  105. package/dist/rowCoordinateCalculations.test.js.map +1 -1
  106. package/dist/util.d.ts +1 -1
  107. package/dist/util.js +1 -1
  108. package/dist/util.js.map +1 -1
  109. package/dist/version.d.ts +1 -1
  110. package/dist/version.js +1 -1
  111. package/package.json +4 -5
  112. package/src/colorSchemes.ts +2 -1
  113. package/src/components/Checkbox2.tsx +1 -0
  114. package/src/components/Loading.tsx +7 -6
  115. package/src/components/MSAView.tsx +6 -5
  116. package/src/components/ResizeHandles.tsx +1 -1
  117. package/src/components/SequenceTextArea.tsx +2 -2
  118. package/src/components/TextTrack.tsx +5 -3
  119. package/src/components/Track.tsx +5 -5
  120. package/src/components/VerticalScrollbar.tsx +5 -2
  121. package/src/components/dialogs/AboutDialog.tsx +6 -7
  122. package/src/components/dialogs/AddTrackDialog.tsx +7 -5
  123. package/src/components/dialogs/DomainDialog.tsx +3 -2
  124. package/src/components/dialogs/ExportSVGDialog.tsx +7 -5
  125. package/src/components/dialogs/FeatureDialog.tsx +4 -3
  126. package/src/components/dialogs/InterProScanDialog.tsx +6 -5
  127. package/src/components/dialogs/MetadataDialog.tsx +6 -7
  128. package/src/components/dialogs/SettingsDialog.tsx +24 -22
  129. package/src/components/dialogs/TrackInfoDialog.tsx +3 -2
  130. package/src/components/dialogs/TracklistDialog.tsx +4 -4
  131. package/src/components/dialogs/UserProvidedDomainsDialog.tsx +7 -6
  132. package/src/components/header/Header.tsx +8 -11
  133. package/src/components/header/HeaderInfoArea.tsx +1 -1
  134. package/src/components/header/HeaderMenu.tsx +4 -6
  135. package/src/components/header/HeaderMenuExtra.tsx +9 -11
  136. package/src/components/header/HeaderStatusArea.tsx +2 -2
  137. package/src/components/header/MultiAlignmentSelector.tsx +2 -2
  138. package/src/components/header/ZoomControls.tsx +13 -6
  139. package/src/components/import/ImportForm.tsx +31 -24
  140. package/src/components/import/ImportFormExamples.tsx +5 -4
  141. package/src/components/import/util.ts +1 -1
  142. package/src/components/minimap/Minimap.tsx +2 -0
  143. package/src/components/minimap/MinimapSVG.tsx +2 -0
  144. package/src/components/msa/Loading.tsx +2 -1
  145. package/src/components/msa/MSACanvas.tsx +5 -4
  146. package/src/components/msa/MSACanvasBlock.tsx +5 -4
  147. package/src/components/msa/MSAMouseoverCanvas.tsx +4 -3
  148. package/src/components/msa/MSAPanel.tsx +2 -1
  149. package/src/components/msa/renderBoxFeatureCanvasBlock.ts +1 -3
  150. package/src/components/msa/renderMSABlock.ts +11 -10
  151. package/src/components/tree/TreeBranchMenu.tsx +1 -1
  152. package/src/components/tree/TreeCanvas.tsx +4 -4
  153. package/src/components/tree/TreeCanvasBlock.tsx +7 -7
  154. package/src/components/tree/TreeNodeMenu.tsx +10 -1
  155. package/src/components/tree/TreePanel.tsx +3 -1
  156. package/src/components/tree/TreeRuler.tsx +1 -1
  157. package/src/components/tree/dialogs/TreeNodeInfoDialog.tsx +5 -6
  158. package/src/components/tree/renderTreeCanvas.ts +7 -9
  159. package/src/index.ts +1 -1
  160. package/src/launchInterProScan.ts +2 -0
  161. package/src/model/DialogQueue.ts +2 -1
  162. package/src/model/treeModel.ts +1 -1
  163. package/src/model.ts +89 -58
  164. package/src/parsers/ClustalMSA.ts +1 -0
  165. package/src/parsers/EmfMSA.ts +1 -0
  166. package/src/parsers/StockholmMSA.ts +1 -1
  167. package/src/renderToSvg.tsx +7 -9
  168. package/src/rowCoordinateCalculations.test.ts +1 -0
  169. package/src/util.ts +4 -3
  170. package/src/version.ts +1 -1
package/src/model.ts CHANGED
@@ -1,64 +1,53 @@
1
1
  import React from 'react'
2
- import type { Buffer } from 'buffer'
3
- import { autorun, transaction } from 'mobx'
4
- import { type Instance, cast, types, addDisposer } from 'mobx-state-tree'
5
- import { hierarchy, cluster, type HierarchyNode } from 'd3-hierarchy'
2
+
3
+ import { groupBy, notEmpty, sum } from '@jbrowse/core/util'
4
+ import { openLocation } from '@jbrowse/core/util/io'
5
+ import { ElementId, FileLocation } from '@jbrowse/core/util/types/mst'
6
+ import { colord } from 'colord'
6
7
  import { ascending } from 'd3-array'
7
- import Stockholm from 'stockholm-js'
8
+ import { cluster, hierarchy } from 'd3-hierarchy'
8
9
  import { saveAs } from 'file-saver'
9
- import type { Theme } from '@mui/material'
10
+ import { autorun, transaction } from 'mobx'
11
+ import { addDisposer, cast, types } from 'mobx-state-tree'
10
12
  import { ungzip } from 'pako'
13
+ import Stockholm from 'stockholm-js'
11
14
 
12
- // jbrowse
13
- import { FileLocation, ElementId } from '@jbrowse/core/util/types/mst'
14
- import type { FileLocation as FileLocationType } from '@jbrowse/core/util/types'
15
- import { openLocation } from '@jbrowse/core/util/io'
16
- import { groupBy, notEmpty, sum } from '@jbrowse/core/util'
17
-
18
- export function isGzip(buf: Buffer) {
19
- return buf[0] === 31 && buf[1] === 139 && buf[2] === 8
20
- }
21
-
22
- // locals
15
+ import { blocksX, blocksY } from './calculateBlocks'
16
+ import colorSchemes from './colorSchemes'
17
+ import TextTrack from './components/TextTrack'
18
+ import palettes from './ggplotPalettes'
19
+ import { measureTextCanvas } from './measureTextCanvas'
20
+ import { DataModelF } from './model/DataModel'
21
+ import { DialogQueueSessionMixin } from './model/DialogQueue'
22
+ import { MSAModelF } from './model/msaModel'
23
+ import { TreeModelF } from './model/treeModel'
24
+ import parseNewick from './parseNewick'
25
+ import ClustalMSA from './parsers/ClustalMSA'
26
+ import EmfMSA from './parsers/EmfMSA'
27
+ import EmfTree from './parsers/EmfTree'
28
+ import FastaMSA from './parsers/FastaMSA'
29
+ import StockholmMSA from './parsers/StockholmMSA'
30
+ import { reparseTree } from './reparseTree'
31
+ import {
32
+ globalCoordToRowSpecificCoord,
33
+ mouseOverCoordToGlobalCoord,
34
+ } from './rowCoordinateCalculations'
23
35
  import {
24
36
  clamp,
25
37
  collapse,
26
38
  generateNodeIds,
39
+ len,
27
40
  maxLength,
28
41
  setBrLength,
29
42
  skipBlanks,
30
- type NodeWithIds,
31
- type NodeWithIdsAndLength,
32
- len,
33
43
  } from './util'
34
- import { colord } from 'colord'
35
- import { reparseTree } from './reparseTree'
36
- import { blocksX, blocksY } from './calculateBlocks'
37
- import { measureTextCanvas } from './measureTextCanvas'
38
- import palettes from './ggplotPalettes'
39
44
 
40
- // components
41
- import TextTrack from './components/TextTrack'
42
-
43
- // parsers
44
- import ClustalMSA from './parsers/ClustalMSA'
45
- import EmfMSA from './parsers/EmfMSA'
46
- import StockholmMSA from './parsers/StockholmMSA'
47
- import FastaMSA from './parsers/FastaMSA'
48
- import parseNewick from './parseNewick'
49
- import colorSchemes from './colorSchemes'
50
-
51
- // models
52
- import { DataModelF } from './model/DataModel'
53
- import { DialogQueueSessionMixin } from './model/DialogQueue'
54
- import { TreeF } from './model/treeModel'
55
- import { MSAModelF } from './model/msaModel'
56
45
  import type { InterProScanResults } from './launchInterProScan'
57
- import {
58
- mouseOverCoordToGlobalCoord,
59
- globalCoordToRowSpecificCoord,
60
- } from './rowCoordinateCalculations'
61
- import EmfTree from './parsers/EmfTree'
46
+ import type { NodeWithIds, NodeWithIdsAndLength } from './util'
47
+ import type { FileLocation as FileLocationType } from '@jbrowse/core/util/types'
48
+ import type { Theme } from '@mui/material'
49
+ import type { HierarchyNode } from 'd3-hierarchy'
50
+ import type { Instance } from 'mobx-state-tree'
62
51
 
63
52
  export interface Accession {
64
53
  accession: string
@@ -84,6 +73,10 @@ export interface ITextTrack {
84
73
 
85
74
  export type BasicTrack = ITextTrack
86
75
 
76
+ export function isGzip(buf: Uint8Array) {
77
+ return buf[0] === 31 && buf[1] === 139 && buf[2] === 8
78
+ }
79
+
87
80
  /**
88
81
  * #stateModel MsaView
89
82
  * extends
@@ -95,7 +88,7 @@ function stateModelFactory() {
95
88
  return types
96
89
  .compose(
97
90
  DialogQueueSessionMixin(),
98
- TreeF(),
91
+ TreeModelF(),
99
92
  MSAModelF(),
100
93
  types.model('MsaView', {
101
94
  /**
@@ -135,7 +128,7 @@ function stateModelFactory() {
135
128
  /**
136
129
  * #property
137
130
  */
138
- hideGaps: true,
131
+ hideGaps: false,
139
132
 
140
133
  /**
141
134
  * #property
@@ -236,6 +229,10 @@ function stateModelFactory() {
236
229
  * #property
237
230
  */
238
231
  featureFilters: types.map(types.boolean),
232
+ /**
233
+ * #property
234
+ */
235
+ relativeTo: types.maybe(types.string),
239
236
  }),
240
237
  )
241
238
  .volatile(() => ({
@@ -330,13 +327,18 @@ function stateModelFactory() {
330
327
 
331
328
  /**
332
329
  * #volatile
333
- *
334
330
  */
335
331
  interProAnnotations: undefined as
336
332
  | undefined
337
333
  | Record<string, InterProScanResults>,
338
334
  }))
339
335
  .actions(self => ({
336
+ /**
337
+ * #action
338
+ */
339
+ drawRelativeTo(id: string) {
340
+ self.relativeTo = id
341
+ },
340
342
  /**
341
343
  * #action
342
344
  */
@@ -749,6 +751,12 @@ function stateModelFactory() {
749
751
  .map(leaf => [leaf.data.name, MSA?.getRow(leaf.data.name)] as const)
750
752
  .filter((f): f is [string, string] => !!f[1])
751
753
  },
754
+ /**
755
+ * #getter
756
+ */
757
+ get numRows() {
758
+ return this.rows.length
759
+ },
752
760
 
753
761
  /**
754
762
  * #getter
@@ -770,7 +778,10 @@ function stateModelFactory() {
770
778
  * #getter
771
779
  */
772
780
  get columns2d() {
773
- return this.rows.map(r => r[1]).map(str => skipBlanks(this.blanks, str))
781
+ const { hideGaps } = self
782
+ return this.rows
783
+ .map(r => r[1])
784
+ .map(str => (hideGaps ? skipBlanks(this.blanks, str) : str))
774
785
  },
775
786
  /**
776
787
  * #getter
@@ -905,7 +916,11 @@ function stateModelFactory() {
905
916
  * #getter
906
917
  */
907
918
  get showMsaLetters() {
908
- return self.drawMsaLetters && self.rowHeight >= 5
919
+ return (
920
+ self.drawMsaLetters &&
921
+ self.rowHeight >= 5 &&
922
+ self.colWidth > self.rowHeight / 2
923
+ )
909
924
  },
910
925
  /**
911
926
  * #getter
@@ -1067,12 +1082,17 @@ function stateModelFactory() {
1067
1082
  * #getter
1068
1083
  */
1069
1084
  get adapterTrackModels(): BasicTrack[] {
1085
+ const { rowHeight, MSA, hideGaps, blanks } = self
1070
1086
  return (
1071
- self.MSA?.tracks.map(t => ({
1087
+ MSA?.tracks.map(t => ({
1072
1088
  model: {
1073
1089
  ...t,
1074
- data: t.data ? skipBlanks(self.blanks, t.data) : undefined,
1075
- height: self.rowHeight,
1090
+ data: t.data
1091
+ ? hideGaps
1092
+ ? skipBlanks(blanks, t.data)
1093
+ : t.data
1094
+ : undefined,
1095
+ height: rowHeight,
1076
1096
  } as TextTrackModel,
1077
1097
  ReactComponent: TextTrack,
1078
1098
  })) || []
@@ -1339,6 +1359,15 @@ function stateModelFactory() {
1339
1359
  setFilter(arg: string, flag: boolean) {
1340
1360
  self.featureFilters.set(arg, flag)
1341
1361
  },
1362
+ /**
1363
+ * #action
1364
+ */
1365
+ showEntire() {
1366
+ self.rowHeight = self.msaAreaHeight / self.numRows
1367
+ self.colWidth = self.msaAreaWidth / self.numColumns
1368
+ self.scrollX = 0
1369
+ self.scrollY = 0
1370
+ },
1342
1371
 
1343
1372
  afterCreate() {
1344
1373
  addDisposer(
@@ -1426,10 +1455,12 @@ function stateModelFactory() {
1426
1455
  addDisposer(
1427
1456
  self,
1428
1457
  autorun(() => {
1429
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1430
- self.colStats
1431
- // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1432
- self.colStatsSums
1458
+ if (self.colorSchemeName.includes('dynamic')) {
1459
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1460
+ self.colStats
1461
+ // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1462
+ self.colStatsSums
1463
+ }
1433
1464
  // eslint-disable-next-line @typescript-eslint/no-unused-expressions
1434
1465
  self.columns
1435
1466
  }),
@@ -1,4 +1,5 @@
1
1
  import { parse } from 'clustal-js'
2
+
2
3
  import type { NodeWithIds } from '../util'
3
4
  export default class ClustalMSA {
4
5
  private MSA: ReturnType<typeof parse>
@@ -1,4 +1,5 @@
1
1
  import { parseEmfAln } from 'emf-js'
2
+
2
3
  import type { NodeWithIds } from '../util'
3
4
 
4
5
  export default class EmfMSA {
@@ -1,6 +1,6 @@
1
1
  import Stockholm from 'stockholm-js'
2
- import parseNewick from '../parseNewick'
3
2
 
3
+ import parseNewick from '../parseNewick'
4
4
  import { type NodeWithIds, generateNodeIds } from '../util'
5
5
  interface StockholmEntry {
6
6
  gf: {
@@ -1,18 +1,17 @@
1
1
  /* eslint-disable react-refresh/only-export-components */
2
2
  import React from 'react'
3
- import { createRoot } from 'react-dom/client'
4
- import { when } from 'mobx'
3
+
5
4
  import { renderToStaticMarkup } from '@jbrowse/core/util'
6
- import type { Theme } from '@mui/material'
5
+ import { when } from 'mobx'
7
6
 
8
- // locals
9
- import type { MsaViewModel } from './model'
10
- import { renderTreeCanvas } from './components/tree/renderTreeCanvas'
7
+ import MinimapSVG from './components/minimap/MinimapSVG'
8
+ import { renderBoxFeatureCanvasBlock } from './components/msa/renderBoxFeatureCanvasBlock'
11
9
  import { renderMSABlock } from './components/msa/renderMSABlock'
10
+ import { renderTreeCanvas } from './components/tree/renderTreeCanvas'
12
11
  import { colorContrast } from './util'
13
12
 
14
- import MinimapSVG from './components/minimap/MinimapSVG'
15
- import { renderBoxFeatureCanvasBlock } from './components/msa/renderBoxFeatureCanvasBlock'
13
+ import type { MsaViewModel } from './model'
14
+ import type { Theme } from '@mui/material'
16
15
 
17
16
  export async function renderToSvg(
18
17
  model: MsaViewModel,
@@ -81,7 +80,6 @@ async function render({
81
80
  />
82
81
  </Wrapper>
83
82
  </SvgWrapper>,
84
- createRoot,
85
83
  )
86
84
  }
87
85
 
@@ -1,4 +1,5 @@
1
1
  import { expect, test } from 'vitest'
2
+
2
3
  import { mouseOverCoordToGlobalCoord } from './rowCoordinateCalculations'
3
4
  test('blanks3', () => {
4
5
  const blanks = [2, 5, 8]
package/src/util.ts CHANGED
@@ -1,8 +1,9 @@
1
- import type { HierarchyNode } from 'd3-hierarchy'
2
- import { max } from 'd3-array'
3
- import type { Theme } from '@mui/material'
4
1
  import { colord, extend } from 'colord'
5
2
  import namesPlugin from 'colord/plugins/names'
3
+ import { max } from 'd3-array'
4
+
5
+ import type { Theme } from '@mui/material'
6
+ import type { HierarchyNode } from 'd3-hierarchy'
6
7
 
7
8
  extend([namesPlugin])
8
9
 
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const version = '4.0.2'
1
+ export const version = '4.1.0'