@jbrowse/plugin-linear-comparative-view 2.15.4 → 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
@@ -17,8 +17,20 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
17
17
  trackSelectorType: import("mobx-state-tree").IType<string | undefined, string, string>;
18
18
  showIntraviewLinks: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
19
19
  interactToggled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
20
- middleComparativeHeight: import("mobx-state-tree").IType<number | undefined, number, number>;
21
- tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
20
+ levels: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
21
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
22
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
23
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
24
+ height: import("mobx-state-tree").IType<number | undefined, number, number>;
25
+ level: import("mobx-state-tree").ISimpleType<number>;
26
+ }, {
27
+ setHeight(n: number): number;
28
+ showTrack(trackId: string, initialSnapshot?: {}): void;
29
+ hideTrack(trackId: string): number;
30
+ toggleTrack(trackId: string): boolean;
31
+ } & {
32
+ readonly assemblyNames: (string | undefined)[];
33
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
22
34
  views: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
23
35
  id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
24
36
  displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
@@ -254,10 +266,6 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
254
266
  */
255
267
  width: number | undefined;
256
268
  } & {
257
- /**
258
- * #getter
259
- */
260
- readonly highResolutionScaling: number;
261
269
  /**
262
270
  * #getter
263
271
  */
@@ -288,23 +296,23 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
288
296
  /**
289
297
  * #action
290
298
  */
291
- setMiddleComparativeHeight(n: number): number;
299
+ setLevelHeight(newHeight: number, level?: number): number;
292
300
  /**
293
301
  * #action
294
302
  */
295
- activateTrackSelector(): import("@jbrowse/core/util").Widget | undefined;
303
+ activateTrackSelector(level: number): import("@jbrowse/core/util").Widget;
296
304
  /**
297
305
  * #action
298
306
  */
299
- toggleTrack(trackId: string): boolean;
307
+ toggleTrack(trackId: string, level?: number): void;
300
308
  /**
301
309
  * #action
302
310
  */
303
- showTrack(trackId: string, initialSnapshot?: {}): void;
311
+ showTrack(trackId: string, level?: number, initialSnapshot?: {}): void;
304
312
  /**
305
313
  * #action
306
314
  */
307
- hideTrack(trackId: string): number;
315
+ hideTrack(trackId: string, level?: number): void;
308
316
  /**
309
317
  * #action
310
318
  */
@@ -334,7 +342,252 @@ declare function stateModelFactory(pluginManager: PluginManager): import("mobx-s
334
342
  }[];
335
343
  } & {
336
344
  afterAttach(): void;
337
- }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
345
+ }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
346
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
347
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
348
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
349
+ } & {
350
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
351
+ type: import("mobx-state-tree").ISimpleType<"LinearComparativeView">;
352
+ trackSelectorType: import("mobx-state-tree").IType<string | undefined, string, string>;
353
+ showIntraviewLinks: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
354
+ interactToggled: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
355
+ levels: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
356
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
357
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
358
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
359
+ height: import("mobx-state-tree").IType<number | undefined, number, number>;
360
+ level: import("mobx-state-tree").ISimpleType<number>;
361
+ }, {
362
+ setHeight(n: number): number;
363
+ showTrack(trackId: string, initialSnapshot?: {}): void;
364
+ hideTrack(trackId: string): number;
365
+ toggleTrack(trackId: string): boolean;
366
+ } & {
367
+ readonly assemblyNames: (string | undefined)[];
368
+ }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>>;
369
+ views: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IModelType<{
370
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
371
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
372
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
373
+ } & {
374
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
375
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
376
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
377
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
378
+ 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]>;
379
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
380
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
381
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
382
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
383
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
384
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
385
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
386
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
387
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
388
+ 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]>;
389
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
390
+ showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
391
+ }, {
392
+ width: number;
393
+ } & {
394
+ menuItems(): MenuItem[];
395
+ } & {
396
+ setDisplayName(name: string): void;
397
+ setWidth(newWidth: number): void;
398
+ setMinimized(flag: boolean): void;
399
+ } & {
400
+ volatileWidth: number | undefined;
401
+ minimumBlockWidth: number;
402
+ draggingTrackId: undefined | string;
403
+ volatileError: unknown;
404
+ afterDisplayedRegionsSetCallbacks: (() => void)[];
405
+ scaleFactor: number;
406
+ trackRefs: Record<string, HTMLDivElement>;
407
+ coarseDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
408
+ coarseTotalBp: number;
409
+ leftOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
410
+ rightOffset: undefined | import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset;
411
+ } & {
412
+ readonly trackLabelsSetting: any;
413
+ readonly width: number;
414
+ readonly interRegionPaddingWidth: number;
415
+ readonly assemblyNames: string[];
416
+ } & {
417
+ scaleBarDisplayPrefix(): string | undefined;
418
+ MiniControlsComponent(): React.FC<any>;
419
+ HeaderComponent(): React.FC<any>;
420
+ readonly assemblyErrors: string;
421
+ readonly assembliesInitialized: boolean;
422
+ readonly initialized: boolean;
423
+ readonly hasDisplayedRegions: boolean;
424
+ readonly scaleBarHeight: number;
425
+ readonly headerHeight: number;
426
+ readonly trackHeights: number;
427
+ readonly trackHeightsWithResizeHandles: number;
428
+ readonly height: number;
429
+ readonly totalBp: number;
430
+ readonly maxBpPerPx: number;
431
+ readonly minBpPerPx: number;
432
+ readonly error: unknown;
433
+ readonly maxOffset: number;
434
+ readonly minOffset: number;
435
+ readonly displayedRegionsTotalPx: number;
436
+ renderProps(): any;
437
+ searchScope(assemblyName: string): {
438
+ assemblyName: string;
439
+ includeAggregateIndexes: boolean;
440
+ 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>>;
441
+ };
442
+ getTrack(id: string): any;
443
+ rankSearchResults(results: import("@jbrowse/core/TextSearch/BaseResults").default[]): import("@jbrowse/core/TextSearch/BaseResults").default[];
444
+ rewriteOnClicks(trackType: string, viewMenuActions: MenuItem[]): void;
445
+ readonly trackTypeActions: Map<string, MenuItem[]>;
446
+ } & {
447
+ setShowTrackOutlines(arg: boolean): void;
448
+ setColorByCDS(flag: boolean): void;
449
+ setShowCytobands(flag: boolean): void;
450
+ setWidth(newWidth: number): void;
451
+ setError(error: unknown): void;
452
+ setHideHeader(b: boolean): void;
453
+ setHideHeaderOverview(b: boolean): void;
454
+ setHideNoTracksActive(b: boolean): void;
455
+ setShowGridlines(b: boolean): void;
456
+ addToHighlights(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
457
+ setHighlight(highlight?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType[]): void;
458
+ removeHighlight(highlight: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").HighlightType): void;
459
+ scrollTo(offsetPx: number): number;
460
+ zoomTo(bpPerPx: number, offset?: number, centerAtOffset?: boolean): number;
461
+ setOffsets(left?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, right?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): void;
462
+ setSearchResults(searchResults: import("@jbrowse/core/TextSearch/BaseResults").default[], searchQuery: string, assemblyName?: string): void;
463
+ setNewView(bpPerPx: number, offsetPx: number): void;
464
+ horizontallyFlip(): void;
465
+ showTrack(trackId: string, initialSnapshot?: {}, displayInitialSnapshot?: {}): any;
466
+ hideTrack(trackId: string): number;
467
+ } & {
468
+ moveTrackDown(id: string): void;
469
+ moveTrackUp(id: string): void;
470
+ moveTrackToTop(id: string): void;
471
+ moveTrackToBottom(id: string): void;
472
+ moveTrack(movingId: string, targetId: string): void;
473
+ toggleTrack(trackId: string): boolean;
474
+ setTrackLabels(setting: "overlapping" | "offset" | "hidden"): void;
475
+ setShowCenterLine(b: boolean): void;
476
+ setDisplayedRegions(regions: import("@jbrowse/core/util").Region[]): void;
477
+ activateTrackSelector(): import("@jbrowse/core/util").Widget;
478
+ getSelectedRegions(leftOffset?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, rightOffset?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): {
479
+ start: number;
480
+ end: number;
481
+ type: string;
482
+ regionNumber?: number;
483
+ reversed?: boolean;
484
+ refName: string;
485
+ assemblyName: string;
486
+ key: string;
487
+ offsetPx: number;
488
+ widthPx: number;
489
+ variant?: string;
490
+ isLeftEndOfDisplayedRegion?: boolean;
491
+ }[];
492
+ afterDisplayedRegionsSet(cb: () => void): void;
493
+ horizontalScroll(distance: number): number;
494
+ center(): void;
495
+ showAllRegions(): void;
496
+ showAllRegionsInAssembly(assemblyName?: string): void;
497
+ setDraggingTrackId(idx?: string): void;
498
+ setScaleFactor(factor: number): void;
499
+ clearView(): void;
500
+ exportSvg(opts?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").ExportSvgOptions): Promise<void>;
501
+ } & {
502
+ slide: (viewWidths: number) => void;
503
+ } & {
504
+ zoom: (targetBpPerPx: number) => void;
505
+ } & {
506
+ readonly canShowCytobands: boolean;
507
+ readonly showCytobands: boolean;
508
+ readonly anyCytobandsExist: boolean;
509
+ readonly cytobandOffset: number;
510
+ } & {
511
+ menuItems(): MenuItem[];
512
+ } & {
513
+ readonly staticBlocks: import("@jbrowse/core/util/blockTypes").BlockSet;
514
+ readonly dynamicBlocks: import("@jbrowse/core/util/blockTypes").BlockSet;
515
+ readonly roundedDynamicBlocks: import("@jbrowse/core/util/blockTypes").BaseBlock[];
516
+ readonly visibleLocStrings: string;
517
+ readonly coarseVisibleLocStrings: string;
518
+ } & {
519
+ setCoarseDynamicBlocks(blocks: import("@jbrowse/core/util/blockTypes").BlockSet): void;
520
+ afterAttach(): void;
521
+ } & {
522
+ moveTo(start?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset, end?: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").BpOffset): void;
523
+ navToLocString(input: string, optAssemblyName?: string): Promise<void>;
524
+ navToSearchString({ input, assembly, }: {
525
+ input: string;
526
+ assembly: import("@jbrowse/core/assemblyManager/assembly").Assembly;
527
+ }): Promise<void>;
528
+ navToLocations(parsedLocStrings: import("@jbrowse/core/util").ParsedLocString[], assemblyName?: string): Promise<void>;
529
+ navTo(query: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").NavLocation): void;
530
+ navToMultiple(locations: import("@jbrowse/plugin-linear-genome-view/src/LinearGenomeView").NavLocation[]): void;
531
+ } & {
532
+ rubberBandMenuItems(): MenuItem[];
533
+ bpToPx({ refName, coord, regionNumber, }: {
534
+ refName: string;
535
+ coord: number;
536
+ regionNumber?: number;
537
+ }): {
538
+ index: number;
539
+ offsetPx: number;
540
+ } | undefined;
541
+ centerAt(coord: number, refName: string, regionNumber?: number): void;
542
+ pxToBp(px: number): {
543
+ coord: number;
544
+ index: number;
545
+ refName: string;
546
+ oob: boolean;
547
+ assemblyName: string;
548
+ offset: number;
549
+ start: number;
550
+ end: number;
551
+ reversed?: boolean;
552
+ };
553
+ readonly centerLineInfo: {
554
+ coord: number;
555
+ index: number;
556
+ refName: string;
557
+ oob: boolean;
558
+ assemblyName: string;
559
+ offset: number;
560
+ start: number;
561
+ end: number;
562
+ reversed?: boolean;
563
+ } | undefined;
564
+ } & {
565
+ afterCreate(): void;
566
+ }, import("mobx-state-tree").ModelCreationType<import("mobx-state-tree/dist/internal").ExtractCFromProps<{
567
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
568
+ displayName: import("mobx-state-tree").IMaybe<import("mobx-state-tree").ISimpleType<string>>;
569
+ minimized: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
570
+ } & {
571
+ id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
572
+ type: import("mobx-state-tree").IType<string | undefined, string, string>;
573
+ offsetPx: import("mobx-state-tree").IType<number | undefined, number, number>;
574
+ bpPerPx: import("mobx-state-tree").IType<number | undefined, number, number>;
575
+ 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]>;
576
+ tracks: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyType>;
577
+ hideHeader: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
578
+ hideHeaderOverview: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
579
+ hideNoTracksActive: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
580
+ trackSelectorType: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
581
+ showCenterLine: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
582
+ showCytobandsSetting: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
583
+ trackLabels: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
584
+ showGridlines: import("mobx-state-tree").IType<boolean | undefined, boolean, boolean>;
585
+ 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]>;
586
+ colorByCDS: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
587
+ showTrackOutlines: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
588
+ }>>, import("mobx-state-tree")._NotCustomized>>;
589
+ viewTrackConfigs: import("mobx-state-tree").IArrayType<import("mobx-state-tree").IAnyModelType>;
590
+ }>>, import("mobx-state-tree")._NotCustomized>;
338
591
  export type LinearComparativeViewStateModel = ReturnType<typeof stateModelFactory>;
339
592
  export type LinearComparativeViewModel = Instance<LinearComparativeViewStateModel>;
340
593
  export default stateModelFactory;
@@ -34,7 +34,6 @@ const BaseViewModel_1 = __importDefault(require("@jbrowse/core/pluggableElementT
34
34
  const util_1 = require("@jbrowse/core/util");
35
35
  const mst_1 = require("@jbrowse/core/util/types/mst");
36
36
  // icons
37
- const Icons_1 = require("@jbrowse/core/ui/Icons");
38
37
  const FolderOpen_1 = __importDefault(require("@mui/icons-material/FolderOpen"));
39
38
  // lazies
40
39
  const ReturnToImportFormDialog = (0, react_1.lazy)(() => Promise.resolve().then(() => __importStar(require('@jbrowse/core/ui/ReturnToImportFormDialog'))));
@@ -44,6 +43,8 @@ const ReturnToImportFormDialog = (0, react_1.lazy)(() => Promise.resolve().then(
44
43
  * - [BaseViewModel](../baseviewmodel)
45
44
  */
46
45
  function stateModelFactory(pluginManager) {
46
+ var _a;
47
+ const LinearSyntenyViewHelper = (_a = pluginManager.getViewType('LinearSyntenyViewHelper')) === null || _a === void 0 ? void 0 : _a.stateModel;
47
48
  return mobx_state_tree_1.types
48
49
  .compose('LinearComparativeView', BaseViewModel_1.default, mobx_state_tree_1.types.model({
49
50
  /**
@@ -69,11 +70,7 @@ function stateModelFactory(pluginManager) {
69
70
  /**
70
71
  * #property
71
72
  */
72
- middleComparativeHeight: 100,
73
- /**
74
- * #property
75
- */
76
- tracks: mobx_state_tree_1.types.array(pluginManager.pluggableMstType('track', 'stateModel')),
73
+ levels: mobx_state_tree_1.types.array(LinearSyntenyViewHelper),
77
74
  /**
78
75
  * #property
79
76
  * currently this is limited to an array of two
@@ -95,12 +92,6 @@ function stateModelFactory(pluginManager) {
95
92
  width: undefined,
96
93
  }))
97
94
  .views(self => ({
98
- /**
99
- * #getter
100
- */
101
- get highResolutionScaling() {
102
- return 2;
103
- },
104
95
  /**
105
96
  * #getter
106
97
  */
@@ -166,94 +157,69 @@ function stateModelFactory(pluginManager) {
166
157
  /**
167
158
  * #action
168
159
  */
169
- setMiddleComparativeHeight(n) {
170
- self.middleComparativeHeight = n;
171
- return self.middleComparativeHeight;
160
+ setLevelHeight(newHeight, level = 0) {
161
+ const l = self.levels[level];
162
+ l.setHeight(newHeight);
163
+ return l.height;
172
164
  },
173
165
  /**
174
166
  * #action
175
167
  */
176
- activateTrackSelector() {
168
+ activateTrackSelector(level) {
177
169
  if (self.trackSelectorType === 'hierarchical') {
178
170
  const session = (0, util_1.getSession)(self);
179
171
  if ((0, util_1.isSessionModelWithWidgets)(session)) {
180
- const selector = session.addWidget('HierarchicalTrackSelectorWidget', 'hierarchicalTrackSelector', { view: self });
172
+ const selector = session.addWidget('HierarchicalTrackSelectorWidget', 'hierarchicalTrackSelector', {
173
+ view: self.levels[level],
174
+ });
181
175
  session.showWidget(selector);
182
176
  return selector;
183
177
  }
184
- return undefined;
185
178
  }
186
179
  throw new Error(`invalid track selector type ${self.trackSelectorType}`);
187
180
  },
188
181
  /**
189
182
  * #action
190
183
  */
191
- toggleTrack(trackId) {
192
- const hiddenCount = this.hideTrack(trackId);
193
- if (!hiddenCount) {
194
- this.showTrack(trackId);
195
- return true;
196
- }
197
- return false;
184
+ toggleTrack(trackId, level = 0) {
185
+ var _a;
186
+ (_a = self.levels[level]) === null || _a === void 0 ? void 0 : _a.toggleTrack(trackId);
198
187
  },
199
188
  /**
200
189
  * #action
201
190
  */
202
- showTrack(trackId, initialSnapshot = {}) {
203
- const schema = pluginManager.pluggableConfigSchemaType('track');
204
- const configuration = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(self), trackId);
205
- if (!configuration) {
206
- throw new Error(`track not found ${trackId}`);
207
- }
208
- const trackType = pluginManager.getTrackType(configuration.type);
209
- if (!trackType) {
210
- throw new Error(`unknown track type ${configuration.type}`);
191
+ showTrack(trackId, level = 0, initialSnapshot = {}) {
192
+ if (!self.levels[level]) {
193
+ self.levels[level] = (0, mobx_state_tree_1.cast)({ level });
211
194
  }
212
- const viewType = pluginManager.getViewType(self.type);
213
- const supportedDisplays = new Set(viewType.displayTypes.map(d => d.name));
214
- const displayConf = configuration.displays.find((d) => supportedDisplays.has(d.type));
215
- if (!displayConf) {
216
- throw new Error(`could not find a compatible display for view type ${self.type}`);
217
- }
218
- self.tracks.push(trackType.stateModel.create({
219
- ...initialSnapshot,
220
- type: configuration.type,
221
- configuration,
222
- displays: [{ type: displayConf.type, configuration: displayConf }],
223
- }));
195
+ self.levels[level].showTrack(trackId, initialSnapshot);
224
196
  },
225
197
  /**
226
198
  * #action
227
199
  */
228
- hideTrack(trackId) {
229
- const schema = pluginManager.pluggableConfigSchemaType('track');
230
- const config = (0, mobx_state_tree_1.resolveIdentifier)(schema, (0, mobx_state_tree_1.getRoot)(self), trackId);
231
- const shownTracks = self.tracks.filter(t => t.configuration === config);
232
- (0, mobx_1.transaction)(() => {
233
- shownTracks.forEach(t => self.tracks.remove(t));
234
- });
235
- return shownTracks.length;
200
+ hideTrack(trackId, level = 0) {
201
+ var _a;
202
+ (_a = self.levels[level]) === null || _a === void 0 ? void 0 : _a.hideTrack(trackId);
236
203
  },
237
204
  /**
238
205
  * #action
239
206
  */
240
207
  squareView() {
241
208
  const average = (0, util_1.avg)(self.views.map(v => v.bpPerPx));
242
- self.views.forEach(view => {
209
+ for (const view of self.views) {
243
210
  const center = view.pxToBp(view.width / 2);
244
211
  view.setNewView(average, view.offsetPx);
245
- if (!center.refName) {
246
- return;
212
+ if (center.refName) {
213
+ view.centerAt(center.coord, center.refName, center.index);
247
214
  }
248
- view.centerAt(center.coord, center.refName, center.index);
249
- });
215
+ }
250
216
  },
251
217
  /**
252
218
  * #action
253
219
  */
254
220
  clearView() {
255
221
  self.views = (0, mobx_state_tree_1.cast)([]);
256
- self.tracks = (0, mobx_state_tree_1.cast)([]);
222
+ self.levels = (0, mobx_state_tree_1.cast)([]);
257
223
  },
258
224
  }))
259
225
  .views(() => ({
@@ -272,24 +238,19 @@ function stateModelFactory(pluginManager) {
272
238
  */
273
239
  menuItems() {
274
240
  return [
275
- ...self.views
276
- .map((view, idx) => [idx, view.menuItems()])
277
- .map(f => ({ label: `View ${f[0] + 1} Menu`, subMenu: f[1] })),
278
241
  {
279
242
  label: 'Return to import form',
280
243
  onClick: () => {
281
244
  (0, util_1.getSession)(self).queueDialog(handleClose => [
282
245
  ReturnToImportFormDialog,
283
- { model: self, handleClose },
246
+ {
247
+ model: self,
248
+ handleClose,
249
+ },
284
250
  ]);
285
251
  },
286
252
  icon: FolderOpen_1.default,
287
253
  },
288
- {
289
- label: 'Open track selector',
290
- onClick: self.activateTrackSelector,
291
- icon: Icons_1.TrackSelector,
292
- },
293
254
  ];
294
255
  },
295
256
  /**
@@ -300,12 +261,12 @@ function stateModelFactory(pluginManager) {
300
261
  {
301
262
  label: 'Zoom to region(s)',
302
263
  onClick: () => {
303
- self.views.forEach(view => {
264
+ for (const view of self.views) {
304
265
  const { leftOffset, rightOffset } = view;
305
266
  if (leftOffset && rightOffset) {
306
267
  view.moveTo(leftOffset, rightOffset);
307
268
  }
308
- });
269
+ }
309
270
  },
310
271
  },
311
272
  ];
@@ -315,12 +276,21 @@ function stateModelFactory(pluginManager) {
315
276
  afterAttach() {
316
277
  (0, mobx_state_tree_1.addDisposer)(self, (0, mobx_1.autorun)(() => {
317
278
  if (self.width) {
318
- self.views.forEach(v => {
319
- v.setWidth(self.width);
320
- });
279
+ for (const view of self.views) {
280
+ view.setWidth(self.width);
281
+ }
321
282
  }
322
283
  }));
323
284
  },
324
- }));
285
+ }))
286
+ .preProcessSnapshot(snap => {
287
+ // @ts-expect-error
288
+ // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
289
+ const { tracks, levels = [{ tracks, level: 0 }], ...rest } = snap || {};
290
+ return {
291
+ ...rest,
292
+ levels,
293
+ };
294
+ });
325
295
  }
326
296
  exports.default = stateModelFactory;
@@ -19,7 +19,7 @@ function doAfterAttach(self) {
19
19
  if (!ctx1 || !ctx3) {
20
20
  return;
21
21
  }
22
- const height = view.middleComparativeHeight;
22
+ const height = self.height;
23
23
  const width = view.width;
24
24
  ctx1.clearRect(0, 0, width, height);
25
25
  ctx3.clearRect(0, 0, width, height);
@@ -53,6 +53,8 @@ function doAfterAttach(self) {
53
53
  }
54
54
  const { assemblyManager } = (0, util_1.getSession)(self);
55
55
  const view = (0, util_1.getContainingView)(self);
56
+ // @ts-expect-error
57
+ const level = (0, mobx_state_tree_1.getParent)(self, 4).level;
56
58
  const viewSnaps = view.views.map(view => ({
57
59
  ...(0, mobx_state_tree_1.getSnapshot)(view),
58
60
  width: view.width,
@@ -78,8 +80,8 @@ function doAfterAttach(self) {
78
80
  const r2 = mate.refName;
79
81
  const ref1 = (a1 === null || a1 === void 0 ? void 0 : a1.getCanonicalRefName(r1)) || r1;
80
82
  const ref2 = (a2 === null || a2 === void 0 ? void 0 : a2.getCanonicalRefName(r2)) || r2;
81
- const v1 = viewSnaps[0];
82
- const v2 = viewSnaps[1];
83
+ const v1 = viewSnaps[level];
84
+ const v2 = viewSnaps[level + 1];
83
85
  const p11 = (0, Base1DUtils_1.bpToPx)({ self: v1, refName: ref1, coord: f1s });
84
86
  const p12 = (0, Base1DUtils_1.bpToPx)({ self: v1, refName: ref1, coord: f1e });
85
87
  const p21 = (0, Base1DUtils_1.bpToPx)({ self: v2, refName: ref2, coord: f2s });