@jbrowse/plugin-linear-comparative-view 2.15.3 → 2.16.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 (101) hide show
  1. package/dist/LaunchLinearSyntenyView.js +41 -11
  2. package/dist/LinearComparativeDisplay/stateModelFactory.d.ts +14 -9
  3. package/dist/LinearComparativeDisplay/stateModelFactory.js +8 -9
  4. package/dist/LinearComparativeView/components/Header.d.ts +2 -3
  5. package/dist/LinearComparativeView/components/Header.js +72 -62
  6. package/dist/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
  7. package/dist/LinearComparativeView/components/HeaderSearchBoxes.js +34 -0
  8. package/dist/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
  9. package/dist/LinearComparativeView/components/LinearComparativeRenderArea.js +61 -0
  10. package/dist/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
  11. package/dist/LinearComparativeView/components/LinearComparativeView.js +3 -67
  12. package/dist/LinearComparativeView/components/Rubberband.js +1 -1
  13. package/dist/LinearComparativeView/index.js +3 -0
  14. package/dist/LinearComparativeView/model.d.ts +265 -12
  15. package/dist/LinearComparativeView/model.js +45 -75
  16. package/dist/LinearSyntenyDisplay/afterAttach.js +5 -3
  17. package/dist/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +32 -24
  18. package/dist/LinearSyntenyDisplay/components/SyntenyContextMenu.js +12 -6
  19. package/dist/LinearSyntenyDisplay/components/util.d.ts +2 -1
  20. package/dist/LinearSyntenyDisplay/components/util.js +5 -5
  21. package/dist/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
  22. package/dist/LinearSyntenyDisplay/drawSynteny.js +28 -22
  23. package/dist/LinearSyntenyDisplay/index.js +1 -1
  24. package/dist/LinearSyntenyDisplay/model.d.ts +12 -11
  25. package/dist/LinearSyntenyDisplay/model.js +7 -0
  26. package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
  27. package/dist/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
  28. package/dist/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +195 -0
  29. package/dist/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
  30. package/dist/LinearSyntenyView/components/ImportForm/Spacer.js +10 -0
  31. package/dist/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
  32. package/dist/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
  33. package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
  34. package/dist/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +52 -0
  35. package/dist/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
  36. package/dist/LinearSyntenyView/index.js +1 -1
  37. package/dist/LinearSyntenyView/model.d.ts +267 -9
  38. package/dist/LinearSyntenyView/model.js +2 -2
  39. package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
  40. package/dist/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +19 -0
  41. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
  42. package/dist/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +36 -27
  43. package/dist/LinearSyntenyViewHelper/index.d.ts +2 -0
  44. package/dist/LinearSyntenyViewHelper/index.js +25 -0
  45. package/dist/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
  46. package/dist/LinearSyntenyViewHelper/stateModelFactory.js +105 -0
  47. package/dist/index.js +2 -0
  48. package/esm/LaunchLinearSyntenyView.js +41 -11
  49. package/esm/LinearComparativeDisplay/stateModelFactory.d.ts +14 -9
  50. package/esm/LinearComparativeDisplay/stateModelFactory.js +9 -10
  51. package/esm/LinearComparativeView/components/Header.d.ts +2 -3
  52. package/esm/LinearComparativeView/components/Header.js +73 -63
  53. package/esm/LinearComparativeView/components/HeaderSearchBoxes.d.ts +6 -0
  54. package/esm/LinearComparativeView/components/HeaderSearchBoxes.js +29 -0
  55. package/esm/LinearComparativeView/components/LinearComparativeRenderArea.d.ts +6 -0
  56. package/esm/LinearComparativeView/components/LinearComparativeRenderArea.js +56 -0
  57. package/esm/LinearComparativeView/components/LinearComparativeView.d.ts +2 -4
  58. package/esm/LinearComparativeView/components/LinearComparativeView.js +3 -67
  59. package/esm/LinearComparativeView/components/Rubberband.js +1 -1
  60. package/esm/LinearComparativeView/index.js +3 -0
  61. package/esm/LinearComparativeView/model.d.ts +265 -12
  62. package/esm/LinearComparativeView/model.js +47 -77
  63. package/esm/LinearSyntenyDisplay/afterAttach.js +6 -4
  64. package/esm/LinearSyntenyDisplay/components/LinearSyntenyRendering.js +33 -25
  65. package/esm/LinearSyntenyDisplay/components/SyntenyContextMenu.js +12 -6
  66. package/esm/LinearSyntenyDisplay/components/util.d.ts +2 -1
  67. package/esm/LinearSyntenyDisplay/components/util.js +5 -5
  68. package/esm/LinearSyntenyDisplay/drawSynteny.d.ts +1 -1
  69. package/esm/LinearSyntenyDisplay/drawSynteny.js +28 -22
  70. package/esm/LinearSyntenyDisplay/index.js +1 -1
  71. package/esm/LinearSyntenyDisplay/model.d.ts +12 -11
  72. package/esm/LinearSyntenyDisplay/model.js +8 -1
  73. package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.d.ts → AddCustomTrack.d.ts} +2 -3
  74. package/esm/LinearSyntenyView/components/ImportForm/{ImportCustomTrack.js → AddCustomTrack.js} +3 -3
  75. package/esm/LinearSyntenyView/components/ImportForm/LinearSyntenyImportForm.js +167 -0
  76. package/esm/LinearSyntenyView/components/ImportForm/Spacer.d.ts +2 -0
  77. package/esm/LinearSyntenyView/components/ImportForm/Spacer.js +4 -0
  78. package/esm/LinearSyntenyView/components/ImportForm/TrackSelector.d.ts +10 -0
  79. package/esm/LinearSyntenyView/components/ImportForm/{ImportSyntenyTrackSelector.js → TrackSelector.js} +15 -20
  80. package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.d.ts +14 -0
  81. package/esm/LinearSyntenyView/components/ImportForm/TrackSelectorUtil.js +23 -0
  82. package/esm/LinearSyntenyView/components/LinearSyntenyView.js +3 -3
  83. package/esm/LinearSyntenyView/index.js +1 -1
  84. package/esm/LinearSyntenyView/model.d.ts +267 -9
  85. package/esm/LinearSyntenyView/model.js +2 -2
  86. package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.d.ts +12 -0
  87. package/esm/LinearSyntenyView/svgcomponents/SVGLinearGenomeView.js +13 -0
  88. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.d.ts +1 -3
  89. package/esm/LinearSyntenyView/svgcomponents/SVGLinearSyntenyView.js +38 -29
  90. package/esm/LinearSyntenyViewHelper/index.d.ts +2 -0
  91. package/esm/LinearSyntenyViewHelper/index.js +19 -0
  92. package/esm/LinearSyntenyViewHelper/stateModelFactory.d.ts +30 -0
  93. package/esm/LinearSyntenyViewHelper/stateModelFactory.js +102 -0
  94. package/esm/index.js +2 -0
  95. package/package.json +2 -2
  96. package/dist/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
  97. package/dist/LinearSyntenyView/components/ImportForm/index.js +0 -138
  98. package/esm/LinearSyntenyView/components/ImportForm/ImportSyntenyTrackSelector.d.ts +0 -9
  99. package/esm/LinearSyntenyView/components/ImportForm/index.js +0 -110
  100. /package/dist/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
  101. /package/esm/LinearSyntenyView/components/ImportForm/{index.d.ts → LinearSyntenyImportForm.d.ts} +0 -0
@@ -33,8 +33,20 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
33
33
  trackSelectorType: import("mobx-state-tree").IType<string | undefined, string, string>;
34
34
  showIntraviewLinks: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
35
35
  interactToggled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
36
- middleComparativeHeight: import("mobx-state-tree").IType<number | undefined, number, number>;
37
- tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
36
+ levels: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
37
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
38
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
39
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
40
+ height: import("mobx-state-tree").IType<number | undefined, number, number>;
41
+ level: import("mobx-state-tree").ISimpleType<number>;
42
+ }, {
43
+ setHeight(n: number): number;
44
+ showTrack(trackId: string, initialSnapshot?: {}): void;
45
+ hideTrack(trackId: string): number;
46
+ toggleTrack(trackId: string): boolean;
47
+ } & {
48
+ readonly assemblyNames: (string | undefined)[];
49
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
38
50
  views: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
39
51
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
40
52
  displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -271,7 +283,6 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
271
283
  } & {
272
284
  width: number | undefined;
273
285
  } & {
274
- readonly highResolutionScaling: number;
275
286
  readonly initialized: boolean;
276
287
  readonly refNames: string[][];
277
288
  readonly assemblyNames: string[];
@@ -281,11 +292,11 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
281
292
  setWidth(newWidth: number): void;
282
293
  setViews(views: import("mobx-state-tree").SnapshotIn<import("@jbrowse/plugin-linear-genome-view").LinearGenomeViewModel>[]): void;
283
294
  removeView(view: import("@jbrowse/plugin-linear-genome-view").LinearGenomeViewModel): void;
284
- setMiddleComparativeHeight(n: number): number;
285
- activateTrackSelector(): import("@jbrowse/core/util").Widget | undefined;
286
- toggleTrack(trackId: string): boolean;
287
- showTrack(trackId: string, initialSnapshot?: {}): void;
288
- hideTrack(trackId: string): number;
295
+ setLevelHeight(newHeight: number, level?: number): number;
296
+ activateTrackSelector(level: number): import("@jbrowse/core/util").Widget;
297
+ toggleTrack(trackId: string, level?: number): void;
298
+ showTrack(trackId: string, level?: number, initialSnapshot?: {}): void;
299
+ hideTrack(trackId: string, level?: number): void;
289
300
  squareView(): void;
290
301
  clearView(): void;
291
302
  } & {
@@ -365,6 +376,253 @@ export default function stateModelFactory(pluginManager: PluginManager): import(
365
376
  };
366
377
  onClick: () => void;
367
378
  })[];
368
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
379
+ }, {
380
+ type: "LinearComparativeView";
381
+ } & Partial<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
382
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
383
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
384
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
385
+ } & {
386
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
387
+ type: import("mobx-state-tree").ISimpleType<"LinearComparativeView">;
388
+ trackSelectorType: import("mobx-state-tree").IType<string | undefined, string, string>;
389
+ showIntraviewLinks: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
390
+ interactToggled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
391
+ levels: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
392
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
393
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
394
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
395
+ height: import("mobx-state-tree").IType<number | undefined, number, number>;
396
+ level: import("mobx-state-tree").ISimpleType<number>;
397
+ }, {
398
+ setHeight(n: number): number;
399
+ showTrack(trackId: string, initialSnapshot?: {}): void;
400
+ hideTrack(trackId: string): number;
401
+ toggleTrack(trackId: string): boolean;
402
+ } & {
403
+ readonly assemblyNames: (string | undefined)[];
404
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
405
+ views: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
406
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
407
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
408
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
409
+ } & {
410
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
411
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
412
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
413
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
414
+ displayedRegions: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<import("@jbrowse/core/util").Region[], import("@jbrowse/core/util").Region[], import("@jbrowse/core/util").Region[]>, [undefined]>;
415
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
416
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
417
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
418
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
419
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
420
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
421
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
422
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
423
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
424
+ highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType>>, [undefined]>;
425
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
426
+ showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
427
+ }, {
428
+ width: number;
429
+ } & {
430
+ menuItems(): import("@jbrowse/core/ui").MenuItem[];
431
+ } & {
432
+ setDisplayName(name: string): void;
433
+ setWidth(newWidth: number): void;
434
+ setMinimized(flag: boolean): void;
435
+ } & {
436
+ volatileWidth: number | undefined;
437
+ minimumBlockWidth: number;
438
+ draggingTrackId: undefined | string;
439
+ volatileError: unknown;
440
+ afterDisplayedRegionsSetCallbacks: (() => void)[];
441
+ scaleFactor: number;
442
+ trackRefs: Record<string, HTMLDivElement>;
443
+ coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
444
+ coarseTotalBp: number;
445
+ leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
446
+ rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
447
+ } & {
448
+ readonly trackLabelsSetting: any;
449
+ readonly width: number;
450
+ readonly interRegionPaddingWidth: number;
451
+ readonly assemblyNames: string[];
452
+ } & {
453
+ scaleBarDisplayPrefix(): string | undefined;
454
+ MiniControlsComponent(): React.FC<any>;
455
+ HeaderComponent(): React.FC<any>;
456
+ readonly assemblyErrors: string;
457
+ readonly assembliesInitialized: boolean;
458
+ readonly initialized: boolean;
459
+ readonly hasDisplayedRegions: boolean;
460
+ readonly scaleBarHeight: number;
461
+ readonly headerHeight: number;
462
+ readonly trackHeights: number;
463
+ readonly trackHeightsWithResizeHandles: number;
464
+ readonly height: number;
465
+ readonly totalBp: number;
466
+ readonly maxBpPerPx: number;
467
+ readonly minBpPerPx: number;
468
+ readonly error: unknown;
469
+ readonly maxOffset: number;
470
+ readonly minOffset: number;
471
+ readonly displayedRegionsTotalPx: number;
472
+ renderProps(): any;
473
+ searchScope(assemblyName: string): {
474
+ assemblyName: string;
475
+ includeAggregateIndexes: boolean;
476
+ tracks: import("mobx-state-tree").IMSTArray<import("mobx-state-tree").IAnyType> & import("mobx-state-tree").IStateTreeNode<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>>;
477
+ };
478
+ getTrack(id: string): any;
479
+ rankSearchResults(results: import("@jbrowse/core/TextSearch/BaseResults").default[]): import("@jbrowse/core/TextSearch/BaseResults").default[];
480
+ rewriteOnClicks(trackType: string, viewMenuActions: import("@jbrowse/core/ui").MenuItem[]): void;
481
+ readonly trackTypeActions: Map<string, import("@jbrowse/core/ui").MenuItem[]>;
482
+ } & {
483
+ setShowTrackOutlines(arg: boolean): void;
484
+ setColorByCDS(flag: boolean): void;
485
+ setShowCytobands(flag: boolean): void;
486
+ setWidth(newWidth: number): void;
487
+ setError(error: unknown): void;
488
+ setHideHeader(b: boolean): void;
489
+ setHideHeaderOverview(b: boolean): void;
490
+ setHideNoTracksActive(b: boolean): void;
491
+ setShowGridlines(b: boolean): void;
492
+ addToHighlights(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
493
+ setHighlight(highlight?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType[]): void;
494
+ removeHighlight(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
495
+ scrollTo(offsetPx: number): number;
496
+ zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
497
+ setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): void;
498
+ setSearchResults(searchResults: import("@jbrowse/core/TextSearch/BaseResults").default[], searchQuery: string, assemblyName?: string): void;
499
+ setNewView(bpPerPx: number, offsetPx: number): void;
500
+ horizontallyFlip(): void;
501
+ showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
502
+ hideTrack(trackId: string): number;
503
+ } & {
504
+ moveTrackDown(id: string): void;
505
+ moveTrackUp(id: string): void;
506
+ moveTrackToTop(id: string): void;
507
+ moveTrackToBottom(id: string): void;
508
+ moveTrack(movingId: string, targetId: string): void;
509
+ toggleTrack(trackId: string): boolean;
510
+ setTrackLabels(setting: "overlapping" | "offset" | "hidden"): void;
511
+ setShowCenterLine(b: boolean): void;
512
+ setDisplayedRegions(regions: import("@jbrowse/core/util").Region[]): void;
513
+ activateTrackSelector(): import("@jbrowse/core/util").Widget;
514
+ getSelectedRegions(leftOffset?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, rightOffset?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): {
515
+ start: number;
516
+ end: number;
517
+ type: string;
518
+ regionNumber?: number;
519
+ reversed?: boolean;
520
+ refName: string;
521
+ assemblyName: string;
522
+ key: string;
523
+ offsetPx: number;
524
+ widthPx: number;
525
+ variant?: string;
526
+ isLeftEndOfDisplayedRegion?: boolean;
527
+ }[];
528
+ afterDisplayedRegionsSet(cb: () => void): void;
529
+ horizontalScroll(distance: number): number;
530
+ center(): void;
531
+ showAllRegions(): void;
532
+ showAllRegionsInAssembly(assemblyName?: string): void;
533
+ setDraggingTrackId(idx?: string): void;
534
+ setScaleFactor(factor: number): void;
535
+ clearView(): void;
536
+ exportSvg(opts?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").ExportSvgOptions): Promise<void>;
537
+ } & {
538
+ slide: (viewWidths: number) => void;
539
+ } & {
540
+ zoom: (targetBpPerPx: number) => void;
541
+ } & {
542
+ readonly canShowCytobands: boolean;
543
+ readonly showCytobands: boolean;
544
+ readonly anyCytobandsExist: boolean;
545
+ readonly cytobandOffset: number;
546
+ } & {
547
+ menuItems(): import("@jbrowse/core/ui").MenuItem[];
548
+ } & {
549
+ readonly staticBlocks: import("@jbrowse/core/util/blockTypes").BlockSet;
550
+ readonly dynamicBlocks: import("@jbrowse/core/util/blockTypes").BlockSet;
551
+ readonly roundedDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
552
+ readonly visibleLocStrings: string;
553
+ readonly coarseVisibleLocStrings: string;
554
+ } & {
555
+ setCoarseDynamicBlocks(blocks: import("@jbrowse/core/util/blockTypes").BlockSet): void;
556
+ afterAttach(): void;
557
+ } & {
558
+ moveTo(start?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, end?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): void;
559
+ navToLocString(input: string, optAssemblyName?: string): Promise<void>;
560
+ navToSearchString({ input, assembly, }: {
561
+ input: string;
562
+ assembly: import("@jbrowse/core/assemblyManager/assembly").Assembly;
563
+ }): Promise<void>;
564
+ navToLocations(parsedLocStrings: import("@jbrowse/core/util").ParsedLocString[], assemblyName?: string): Promise<void>;
565
+ navTo(query: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").NavLocation): void;
566
+ navToMultiple(locations: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").NavLocation[]): void;
567
+ } & {
568
+ rubberBandMenuItems(): import("@jbrowse/core/ui").MenuItem[];
569
+ bpToPx({ refName, coord, regionNumber, }: {
570
+ refName: string;
571
+ coord: number;
572
+ regionNumber?: number;
573
+ }): {
574
+ index: number;
575
+ offsetPx: number;
576
+ } | undefined;
577
+ centerAt(coord: number, refName: string, regionNumber?: number): void;
578
+ pxToBp(px: number): {
579
+ coord: number;
580
+ index: number;
581
+ refName: string;
582
+ oob: boolean;
583
+ assemblyName: string;
584
+ offset: number;
585
+ start: number;
586
+ end: number;
587
+ reversed?: boolean;
588
+ };
589
+ readonly centerLineInfo: {
590
+ coord: number;
591
+ index: number;
592
+ refName: string;
593
+ oob: boolean;
594
+ assemblyName: string;
595
+ offset: number;
596
+ start: number;
597
+ end: number;
598
+ reversed?: boolean;
599
+ } | undefined;
600
+ } & {
601
+ afterCreate(): void;
602
+ }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
603
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
604
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
605
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
606
+ } & {
607
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
608
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
609
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
610
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
611
+ displayedRegions: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IType<import("@jbrowse/core/util").Region[], import("@jbrowse/core/util").Region[], import("@jbrowse/core/util").Region[]>, [undefined]>;
612
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
613
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
614
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
615
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
616
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
617
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
618
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
619
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
620
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
621
+ highlight: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IArrayType<import("mobx-state-tree").IType<import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType, import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType>>, [undefined]>;
622
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
623
+ showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
624
+ }>>, import("mobx-state-tree")._NotCustomized>>;
625
+ viewTrackConfigs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
626
+ }>> & import("mobx-state-tree/dist/internal").NonEmptyObject & import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
369
627
  export type LinearSyntenyViewStateModel = ReturnType<typeof stateModelFactory>;
370
628
  export type LinearSyntenyViewModel = Instance<LinearSyntenyViewStateModel>;
@@ -80,9 +80,9 @@ function stateModelFactory(pluginManager) {
80
80
  */
81
81
  showAllRegions() {
82
82
  (0, mobx_1.transaction)(() => {
83
- self.views.forEach(view => {
83
+ for (const view of self.views) {
84
84
  view.showAllRegionsInAssembly();
85
- });
85
+ }
86
86
  });
87
87
  },
88
88
  }))
@@ -0,0 +1,12 @@
1
+ import React from 'react';
2
+ import { LinearGenomeViewModel } from '@jbrowse/plugin-linear-genome-view';
3
+ export default function SVGLinearGenomeView({ trackLabelOffset, fontSize, textHeight, trackLabels, view, displayResults, rulerHeight, shift, }: {
4
+ textHeight: number;
5
+ trackLabels: string;
6
+ trackLabelOffset: number;
7
+ fontSize: number;
8
+ view: LinearGenomeViewModel;
9
+ displayResults: any;
10
+ rulerHeight: number;
11
+ shift: number;
12
+ }): React.JSX.Element;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = SVGLinearGenomeView;
7
+ const react_1 = __importDefault(require("react"));
8
+ const material_1 = require("@mui/material");
9
+ const util_1 = require("@jbrowse/core/util");
10
+ const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
11
+ function SVGLinearGenomeView({ trackLabelOffset, fontSize, textHeight, trackLabels, view, displayResults, rulerHeight, shift, }) {
12
+ const theme = (0, material_1.useTheme)();
13
+ return (react_1.default.createElement("g", { transform: `translate(${shift} ${fontSize})` },
14
+ react_1.default.createElement("g", { transform: `translate(${trackLabelOffset})` },
15
+ react_1.default.createElement("text", { x: 0, fontSize: fontSize, ...(0, util_1.getFillProps)(theme.palette.text.primary) }, view.assemblyNames.join(', ')),
16
+ react_1.default.createElement(plugin_linear_genome_view_1.SVGRuler, { model: displayResults.view, fontSize: fontSize })),
17
+ react_1.default.createElement("g", { transform: `translate(0 ${rulerHeight + fontSize})` },
18
+ react_1.default.createElement(plugin_linear_genome_view_1.SVGTracks, { textHeight: textHeight, trackLabels: trackLabels, fontSize: fontSize, model: displayResults.view, displayResults: displayResults.data, trackLabelOffset: trackLabelOffset }))));
19
+ }
@@ -1,4 +1,2 @@
1
1
  import { ExportSvgOptions, LinearSyntenyViewModel } from '../model';
2
- type LSV = LinearSyntenyViewModel;
3
- export declare function renderToSvg(model: LSV, opts: ExportSvgOptions): Promise<string>;
4
- export {};
2
+ export declare function renderToSvg(model: LinearSyntenyViewModel, opts: ExportSvgOptions): Promise<string>;
@@ -14,20 +14,21 @@ const ui_1 = require("@jbrowse/core/ui");
14
14
  const plugin_linear_genome_view_1 = require("@jbrowse/plugin-linear-genome-view");
15
15
  // locals
16
16
  const SVGBackground_1 = __importDefault(require("./SVGBackground"));
17
+ const SVGLinearGenomeView_1 = __importDefault(require("./SVGLinearGenomeView"));
17
18
  const drawSynteny_1 = require("../../LinearSyntenyDisplay/drawSynteny");
18
19
  // render LGV to SVG
19
20
  async function renderToSvg(model, opts) {
20
21
  var _a;
21
22
  await (0, mobx_1.when)(() => model.initialized);
22
- const { textHeight = 18, headerHeight = 30, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
23
+ const { textHeight = 18, rulerHeight = 30, fontSize = 13, trackLabels = 'offset', Wrapper = ({ children }) => children, themeName = 'default', } = opts;
23
24
  const session = (0, util_1.getSession)(model);
24
25
  const themeVar = (_a = session.allThemes) === null || _a === void 0 ? void 0 : _a.call(session)[themeName];
25
- const { width, views, middleComparativeHeight: synH, tracks } = model;
26
+ const { width, views, levels } = model;
26
27
  const shift = 50;
27
- const offset = headerHeight + rulerHeight;
28
+ const offset = rulerHeight;
28
29
  const { createRootFn } = (0, mobx_state_tree_1.getRoot)(model);
29
30
  const heights = views.map(v => (0, plugin_linear_genome_view_1.totalHeight)(v.tracks, textHeight, trackLabels) + offset);
30
- const totalHeightSvg = (0, util_1.sum)(heights) + synH + 100;
31
+ const totalHeightSvg = (0, util_1.sum)(heights) + (0, util_1.sum)(levels.map(l => l.height)) + 100;
31
32
  const displayResults = await Promise.all(views.map(async (view) => ({
32
33
  view,
33
34
  data: await Promise.all(view.tracks.map(async (track) => {
@@ -39,50 +40,58 @@ async function renderToSvg(model, opts) {
39
40
  };
40
41
  })),
41
42
  })));
42
- const renderings = await Promise.all(tracks.map(async (track) => {
43
+ const renderings = await Promise.all(levels.map(async (level) => await Promise.all(level.tracks.map(async (track) => {
43
44
  const d = track.displays[0];
44
45
  await (0, mobx_1.when)(() => (d.ready !== undefined ? d.ready : true));
45
- const r = await (0, util_1.renderToAbstractCanvas)(width, synH, { exportSVG: opts }, ctx => {
46
+ const r = await (0, util_1.renderToAbstractCanvas)(width, level.height, { exportSVG: opts }, ctx => {
46
47
  (0, drawSynteny_1.drawRef)(d, ctx);
47
48
  return undefined;
48
49
  });
49
50
  if ('imageData' in r) {
50
51
  throw new Error('found a canvas in svg export, probably a bug');
51
52
  }
52
- if ('canvasRecordedData' in r) {
53
+ else if ('canvasRecordedData' in r) {
53
54
  return {
54
55
  html: await (0, util_1.getSerializedSvg)({
55
56
  ...r,
56
57
  width,
57
- height: synH,
58
+ height: level.height,
58
59
  }),
59
60
  };
60
61
  }
61
- return r;
62
- }));
63
- const trackLabelMaxLen = (0, util_1.max)(views.flatMap(view => view.tracks.map(t => (0, util_1.measureText)((0, tracks_1.getTrackName)(t.configuration, session), fontSize))), 0) + 40;
62
+ else {
63
+ return r;
64
+ }
65
+ }))));
66
+ const trackLabelMaxLen = (0, util_1.max)(views.flatMap(view => view.tracks.map(track => (0, util_1.measureText)((0, tracks_1.getTrackName)(track.configuration, session), fontSize))), 0) + 40;
64
67
  const trackLabelOffset = trackLabels === 'left' ? trackLabelMaxLen : 0;
65
68
  const w = width + trackLabelOffset;
66
69
  const theme = (0, ui_1.createJBrowseTheme)(themeVar);
70
+ const RenderList = [
71
+ react_1.default.createElement(SVGLinearGenomeView_1.default, { rulerHeight: rulerHeight, trackLabelOffset: trackLabelOffset, shift: shift, textHeight: textHeight, trackLabels: trackLabels, displayResults: displayResults[0], key: views[0].id, view: views[0], fontSize: fontSize }),
72
+ ];
73
+ let currOffset = heights[0] + fontSize + rulerHeight;
74
+ for (let i = 1; i < views.length; i++) {
75
+ const view = views[i];
76
+ const level = levels[i - 1];
77
+ const rendering = renderings[i - 1];
78
+ const height = heights[i];
79
+ const levelHeight = level.height || 0;
80
+ RenderList.push(react_1.default.createElement("g", { key: view.id, transform: `translate(0 ${currOffset})` },
81
+ levelHeight ? (react_1.default.createElement("defs", null,
82
+ react_1.default.createElement("clipPath", { id: `synclip-${i}` },
83
+ react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: levelHeight })))) : null,
84
+ react_1.default.createElement("g", { transform: `translate(${shift + trackLabelOffset} ${fontSize})`, clipPath: `url(#synclip-${i})` }, rendering === null || rendering === void 0 ? void 0 : rendering.map((r, i) => (
85
+ /* biome-ignore lint/suspicious/noArrayIndexKey: */
86
+ react_1.default.createElement(util_1.ReactRendering, { key: i, rendering: r })))),
87
+ react_1.default.createElement("g", { transform: `translate(0 ${levelHeight})` },
88
+ react_1.default.createElement(SVGLinearGenomeView_1.default, { rulerHeight: rulerHeight, shift: shift, trackLabelOffset: trackLabelOffset, textHeight: textHeight, trackLabels: trackLabels, displayResults: displayResults[i], key: view.id, view: view, fontSize: fontSize }))));
89
+ currOffset += height + fontSize + rulerHeight + levelHeight;
90
+ }
67
91
  // the xlink namespace is used for rendering <image> tag
68
92
  return (0, util_1.renderToStaticMarkup)(react_1.default.createElement(material_1.ThemeProvider, { theme: theme },
69
93
  react_1.default.createElement(Wrapper, null,
70
94
  react_1.default.createElement("svg", { width: width, height: totalHeightSvg, xmlns: "http://www.w3.org/2000/svg", xmlnsXlink: "http://www.w3.org/1999/xlink", viewBox: [0, 0, w + shift * 2, totalHeightSvg].toString() },
71
95
  react_1.default.createElement(SVGBackground_1.default, { width: w, height: totalHeightSvg, shift: shift }),
72
- react_1.default.createElement("g", { transform: `translate(${shift} ${fontSize})` },
73
- react_1.default.createElement("g", { transform: `translate(${trackLabelOffset})` },
74
- react_1.default.createElement("text", { x: 0, fontSize: fontSize, ...(0, util_1.getFillProps)(theme.palette.text.primary) }, views[0].assemblyNames.join(', ')),
75
- react_1.default.createElement(plugin_linear_genome_view_1.SVGRuler, { model: displayResults[0].view, fontSize: fontSize })),
76
- react_1.default.createElement(plugin_linear_genome_view_1.SVGTracks, { textHeight: textHeight, trackLabels: trackLabels, fontSize: fontSize, model: displayResults[0].view, displayResults: displayResults[0].data, offset: offset, trackLabelOffset: trackLabelOffset })),
77
- react_1.default.createElement("defs", null,
78
- react_1.default.createElement("clipPath", { id: 'synclip' },
79
- react_1.default.createElement("rect", { x: 0, y: 0, width: width, height: synH }))),
80
- react_1.default.createElement("g", { transform: `translate(${shift + trackLabelOffset} ${fontSize + heights[0]})`, clipPath: 'url(#synclip)' }, renderings.map((r, i) => (
81
- /* biome-ignore lint/suspicious/noArrayIndexKey: */
82
- react_1.default.createElement(util_1.ReactRendering, { key: i, rendering: r })))),
83
- react_1.default.createElement("g", { transform: `translate(${shift} ${fontSize + heights[0] + synH})` },
84
- react_1.default.createElement("g", { transform: `translate(${trackLabelOffset})` },
85
- react_1.default.createElement("text", { x: 0, fontSize: fontSize, ...(0, util_1.getFillProps)(theme.palette.text.primary) }, views[1].assemblyNames.join(', ')),
86
- react_1.default.createElement(plugin_linear_genome_view_1.SVGRuler, { model: displayResults[1].view, fontSize: fontSize })),
87
- react_1.default.createElement(plugin_linear_genome_view_1.SVGTracks, { textHeight: textHeight, trackLabels: trackLabels, fontSize: fontSize, model: displayResults[1].view, displayResults: displayResults[1].data, offset: offset, trackLabelOffset: trackLabelOffset }))))), createRootFn);
96
+ RenderList))), createRootFn);
88
97
  }
@@ -0,0 +1,2 @@
1
+ import PluginManager from '@jbrowse/core/PluginManager';
2
+ export default function LinearSyntenyViewF(pluginManager: PluginManager): void;
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.default = LinearSyntenyViewF;
7
+ const react_1 = __importDefault(require("react"));
8
+ const ViewType_1 = __importDefault(require("@jbrowse/core/pluggableElementTypes/ViewType"));
9
+ const stateModelFactory_1 = require("./stateModelFactory");
10
+ function UnusedComponent() {
11
+ return react_1.default.createElement("div", null);
12
+ }
13
+ function LinearSyntenyViewF(pluginManager) {
14
+ pluginManager.addViewType(() => {
15
+ return new ViewType_1.default({
16
+ name: 'LinearSyntenyViewHelper',
17
+ displayName: 'Linear synteny view (helper)',
18
+ viewMetadata: {
19
+ hiddenFromGUI: true,
20
+ },
21
+ stateModel: (0, stateModelFactory_1.linearSyntenyViewHelperModelFactory)(pluginManager),
22
+ ReactComponent: UnusedComponent,
23
+ });
24
+ });
25
+ }
@@ -0,0 +1,30 @@
1
+ import { Instance } from 'mobx-state-tree';
2
+ import PluginManager from '@jbrowse/core/PluginManager';
3
+ export declare function linearSyntenyViewHelperModelFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
4
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
5
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
6
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
7
+ height: import("mobx-state-tree").IType<number | undefined, number, number>;
8
+ level: import("mobx-state-tree").ISimpleType<number>;
9
+ }, {
10
+ /**
11
+ * #action
12
+ */
13
+ setHeight(n: number): number;
14
+ /**
15
+ * #action
16
+ */
17
+ showTrack(trackId: string, initialSnapshot?: {}): void;
18
+ /**
19
+ * #action
20
+ */
21
+ hideTrack(trackId: string): number;
22
+ /**
23
+ * #action
24
+ */
25
+ toggleTrack(trackId: string): boolean;
26
+ } & {
27
+ readonly assemblyNames: (string | undefined)[];
28
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
29
+ export type LinearSyntenyViewHelperStateModel = ReturnType<typeof linearSyntenyViewHelperModelFactory>;
30
+ export type LinearSyntenyViewHelperModel = Instance<LinearSyntenyViewHelperStateModel>;
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.linearSyntenyViewHelperModelFactory = linearSyntenyViewHelperModelFactory;
4
+ const mobx_state_tree_1 = require("mobx-state-tree");
5
+ const mobx_1 = require("mobx");
6
+ const mst_1 = require("@jbrowse/core/util/types/mst");
7
+ function linearSyntenyViewHelperModelFactory(pluginManager) {
8
+ return mobx_state_tree_1.types
9
+ .model('LinearSyntenyViewHelper', {
10
+ /**
11
+ * #property
12
+ */
13
+ id: mst_1.ElementId,
14
+ /**
15
+ * #property
16
+ */
17
+ type: 'LinearSyntenyViewHelper',
18
+ /**
19
+ * #property
20
+ */
21
+ tracks: mobx_state_tree_1.types.array(pluginManager.pluggableMstType('track', 'stateModel')),
22
+ /**
23
+ * #property
24
+ */
25
+ height: 100,
26
+ /**
27
+ * #property
28
+ */
29
+ level: mobx_state_tree_1.types.number,
30
+ })
31
+ .actions(self => ({
32
+ /**
33
+ * #action
34
+ */
35
+ setHeight(n) {
36
+ self.height = n;
37
+ return self.height;
38
+ },
39
+ /**
40
+ * #action
41
+ */
42
+ showTrack(trackId, initialSnapshot = {}) {
43
+ const schema = pluginManager.pluggableConfigSchemaType('track');
44
+ const configuration = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(self), trackId);
45
+ if (!configuration) {
46
+ throw new Error(`track not found ${trackId}`);
47
+ }
48
+ const trackType = pluginManager.getTrackType(configuration.type);
49
+ if (!trackType) {
50
+ throw new Error(`unknown track type ${configuration.type}`);
51
+ }
52
+ const viewType = pluginManager.getViewType(self.type);
53
+ const supportedDisplays = new Set(viewType.displayTypes.map(d => d.name));
54
+ const displayConf = configuration.displays.find((d) => supportedDisplays.has(d.type));
55
+ if (!displayConf) {
56
+ throw new Error(`could not find a compatible display for view type ${self.type}`);
57
+ }
58
+ self.tracks.push(trackType.stateModel.create({
59
+ ...initialSnapshot,
60
+ type: configuration.type,
61
+ configuration,
62
+ displays: [
63
+ {
64
+ type: displayConf.type,
65
+ configuration: displayConf,
66
+ },
67
+ ],
68
+ }));
69
+ },
70
+ /**
71
+ * #action
72
+ */
73
+ hideTrack(trackId) {
74
+ const schema = pluginManager.pluggableConfigSchemaType('track');
75
+ const config = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(self), trackId);
76
+ const shownTracks = self.tracks.filter(t => t.configuration === config);
77
+ (0, mobx_1.transaction)(() => {
78
+ shownTracks.forEach(t => {
79
+ self.tracks.remove(t);
80
+ });
81
+ });
82
+ return shownTracks.length;
83
+ },
84
+ /**
85
+ * #action
86
+ */
87
+ toggleTrack(trackId) {
88
+ const hiddenCount = this.hideTrack(trackId);
89
+ if (!hiddenCount) {
90
+ this.showTrack(trackId);
91
+ return true;
92
+ }
93
+ return false;
94
+ },
95
+ }))
96
+ .views(self => ({
97
+ get assemblyNames() {
98
+ const p = (0, mobx_state_tree_1.getParent)(self, 2);
99
+ return [
100
+ p.views[self.level].assemblyNames[0],
101
+ p.views[self.level + 1].assemblyNames[0],
102
+ ];
103
+ },
104
+ }));
105
+ }