@weng-lab/genomebrowser-ui 0.3.6 → 0.4.0-beta.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 (86) hide show
  1. package/.env.local +1 -1
  2. package/dist/TrackSelect/Folders/biosamples/shared/BiosampleViewSelector.d.ts +7 -0
  3. package/dist/TrackSelect/Folders/biosamples/shared/createFolder.d.ts +1 -13
  4. package/dist/TrackSelect/Folders/biosamples/shared/toTrack.d.ts +20 -0
  5. package/dist/TrackSelect/Folders/biosamples/shared/types.d.ts +4 -13
  6. package/dist/TrackSelect/Folders/genes/shared/createFolder.d.ts +1 -3
  7. package/dist/TrackSelect/Folders/genes/shared/toTrack.d.ts +18 -0
  8. package/dist/TrackSelect/Folders/index.d.ts +6 -12
  9. package/dist/TrackSelect/Folders/mohd/data/human.json.d.ts +2948 -0
  10. package/dist/TrackSelect/Folders/mohd/human.d.ts +1 -0
  11. package/dist/TrackSelect/Folders/mohd/shared/MohdGroupingCell.d.ts +2 -0
  12. package/dist/TrackSelect/Folders/mohd/shared/MohdTreeItem.d.ts +3 -0
  13. package/dist/TrackSelect/Folders/mohd/shared/MohdViewSelector.d.ts +7 -0
  14. package/dist/TrackSelect/Folders/mohd/shared/columns.d.ts +5 -0
  15. package/dist/TrackSelect/Folders/mohd/shared/config.d.ts +42 -0
  16. package/dist/TrackSelect/Folders/mohd/shared/createFolder.d.ts +9 -0
  17. package/dist/TrackSelect/Folders/mohd/shared/toTrack.d.ts +9 -0
  18. package/dist/TrackSelect/Folders/mohd/shared/types.d.ts +40 -0
  19. package/dist/TrackSelect/Folders/other-tracks/shared/toTrack.d.ts +5 -0
  20. package/dist/TrackSelect/Folders/other-tracks/shared/types.d.ts +1 -0
  21. package/dist/TrackSelect/Folders/types.d.ts +23 -55
  22. package/dist/TrackSelect/TrackSelect.d.ts +10 -7
  23. package/dist/TrackSelect/TreeView/TreeViewWrapper.d.ts +1 -1
  24. package/dist/TrackSelect/buildSelectedTree.d.ts +15 -0
  25. package/dist/TrackSelect/managedTracks.d.ts +13 -0
  26. package/dist/TrackSelect/resolveFolderView.d.ts +2 -0
  27. package/dist/TrackSelect/trackContext.d.ts +5 -0
  28. package/dist/TrackSelect/types.d.ts +12 -33
  29. package/dist/genomebrowser-ui.es.js +2224 -1717
  30. package/dist/genomebrowser-ui.es.js.map +1 -1
  31. package/dist/lib.d.ts +4 -4
  32. package/dist/muiLicense.d.ts +1 -0
  33. package/package.json +6 -3
  34. package/src/TrackSelect/Dialogs/ResetDialog.tsx +3 -2
  35. package/src/TrackSelect/FolderList/FolderCard.tsx +1 -1
  36. package/src/TrackSelect/Folders/biosamples/shared/BiosampleViewSelector.tsx +33 -0
  37. package/src/TrackSelect/Folders/biosamples/shared/createFolder.ts +39 -58
  38. package/src/TrackSelect/Folders/biosamples/shared/toTrack.ts +138 -0
  39. package/src/TrackSelect/Folders/biosamples/shared/types.ts +4 -16
  40. package/src/TrackSelect/Folders/genes/shared/createFolder.ts +10 -31
  41. package/src/TrackSelect/Folders/genes/shared/toTrack.ts +59 -0
  42. package/src/TrackSelect/Folders/index.ts +14 -17
  43. package/src/TrackSelect/Folders/mohd/data/human.json +2945 -0
  44. package/src/TrackSelect/Folders/mohd/human.ts +10 -0
  45. package/src/TrackSelect/Folders/mohd/shared/MohdGroupingCell.tsx +68 -0
  46. package/src/TrackSelect/Folders/mohd/shared/MohdTreeItem.tsx +17 -0
  47. package/src/TrackSelect/Folders/mohd/shared/MohdViewSelector.tsx +33 -0
  48. package/src/TrackSelect/Folders/mohd/shared/columns.tsx +79 -0
  49. package/src/TrackSelect/Folders/mohd/shared/config.tsx +71 -0
  50. package/src/TrackSelect/Folders/mohd/shared/createFolder.ts +144 -0
  51. package/src/TrackSelect/Folders/mohd/shared/toTrack.ts +164 -0
  52. package/src/TrackSelect/Folders/mohd/shared/types.ts +46 -0
  53. package/src/TrackSelect/Folders/other-tracks/shared/createFolder.ts +13 -14
  54. package/src/TrackSelect/Folders/other-tracks/shared/toTrack.ts +17 -0
  55. package/src/TrackSelect/Folders/other-tracks/shared/types.ts +1 -0
  56. package/src/TrackSelect/Folders/types.ts +26 -69
  57. package/src/TrackSelect/TrackSelect.tsx +299 -255
  58. package/src/TrackSelect/TreeView/CustomTreeItem.tsx +6 -6
  59. package/src/TrackSelect/TreeView/TreeViewWrapper.tsx +84 -6
  60. package/src/TrackSelect/buildSelectedTree.ts +145 -0
  61. package/src/TrackSelect/managedTracks.ts +92 -0
  62. package/src/TrackSelect/resolveFolderView.ts +20 -0
  63. package/src/TrackSelect/trackContext.ts +9 -0
  64. package/src/TrackSelect/types.ts +14 -39
  65. package/src/lib.ts +13 -7
  66. package/src/muiLicense.ts +9 -0
  67. package/src/vite-env.d.ts +9 -0
  68. package/test/TrackSelect.test.tsx +435 -0
  69. package/test/main.tsx +36 -352
  70. package/test/mocks/logo-test.tsx +11 -0
  71. package/test/mohdDisplay.test.tsx +45 -0
  72. package/test/startup.test.ts +206 -0
  73. package/test/trackSelectState.test.ts +176 -0
  74. package/vite.config.ts +1 -0
  75. package/vitest.config.ts +20 -0
  76. package/dist/TrackSelect/Folders/biosamples/shared/AssayToggle.d.ts +0 -18
  77. package/dist/TrackSelect/Folders/biosamples/shared/treeBuilder.d.ts +0 -28
  78. package/dist/TrackSelect/Folders/genes/shared/treeBuilder.d.ts +0 -13
  79. package/dist/TrackSelect/Folders/other-tracks/shared/treeBuilder.d.ts +0 -4
  80. package/dist/TrackSelect/store.d.ts +0 -4
  81. package/src/TrackSelect/Folders/NEW.md +0 -929
  82. package/src/TrackSelect/Folders/biosamples/shared/AssayToggle.tsx +0 -78
  83. package/src/TrackSelect/Folders/biosamples/shared/treeBuilder.ts +0 -224
  84. package/src/TrackSelect/Folders/genes/shared/treeBuilder.ts +0 -45
  85. package/src/TrackSelect/Folders/other-tracks/shared/treeBuilder.ts +0 -34
  86. package/src/TrackSelect/store.ts +0 -117
package/.env.local CHANGED
@@ -1 +1 @@
1
- VITE_MUI_X_LICENSE_KEY=a8a7caa0861db35745fbff677471cad5Tz0xMjMzMTQsRT0xNzk3NTUxOTk5MDAwLFM9cHJlbWl1bSxMTT1zdWJzY3JpcHRpb24sUFY9aW5pdGlhbCxLVj0y
1
+ NEXT_PUBLIC_MUI_X_LICENSE_KEY=a8a7caa0861db35745fbff677471cad5Tz0xMjMzMTQsRT0xNzk3NTUxOTk5MDAwLFM9cHJlbWl1bSxMTT1zdWJzY3JpcHRpb24sUFY9aW5pdGlhbCxLVj0y
@@ -0,0 +1,7 @@
1
+ import { FolderView } from '../../types';
2
+ export interface BiosampleViewSelectorProps {
3
+ views: FolderView[];
4
+ activeViewId: string;
5
+ onChange: (viewId: string) => void;
6
+ }
7
+ export declare function BiosampleViewSelector({ views, activeViewId, onChange, }: BiosampleViewSelectorProps): import("react/jsx-runtime").JSX.Element;
@@ -1,24 +1,12 @@
1
1
  import { FolderDefinition } from '../../types';
2
2
  import { BiosampleDataFile, BiosampleRowInfo } from './types';
3
3
  export interface CreateBiosampleFolderOptions {
4
- /** Unique identifier for this folder */
5
4
  id: string;
6
- /** Display label shown in the UI */
7
5
  label: string;
8
- /** Optional description shown in folder cards */
9
6
  description?: string;
10
- /** Raw biosample data from JSON file */
11
7
  data: BiosampleDataFile;
12
8
  }
13
9
  /**
14
- * Factory function that creates a FolderDefinition for biosample data.
15
- *
16
- * This handles all the common setup for biosample folders:
17
- * - Transforms JSON data into flattened rows
18
- * - Creates the rowById lookup map
19
- * - Configures columns, grouping, and tree building
20
- *
21
- * @param options - Configuration options for the folder
22
- * @returns A complete FolderDefinition for the biosample data
10
+ * Build a biosample folder with its data, tree builder, and track factory.
23
11
  */
24
12
  export declare function createBiosampleFolder(options: CreateBiosampleFolderOptions): FolderDefinition<BiosampleRowInfo>;
@@ -0,0 +1,20 @@
1
+ import { Rect, Track, ValuedPoint } from '@weng-lab/genomebrowser';
2
+ import { FC } from 'react';
3
+ import { CreateTrackOptions } from '../../types';
4
+ import { BiosampleRowInfo } from './types';
5
+ export type BiosampleTrackContext = {
6
+ onBiosampleFeatureClick?: (args: {
7
+ trackId: string;
8
+ row: BiosampleRowInfo;
9
+ rect: Rect;
10
+ }) => void;
11
+ onBiosampleFeatureHover?: (args: {
12
+ trackId: string;
13
+ row: BiosampleRowInfo;
14
+ rect: Rect;
15
+ }) => void;
16
+ biosampleFeatureTooltip?: FC<Rect>;
17
+ biosampleSignalTooltip?: FC<ValuedPoint[]>;
18
+ biosampleMethylTooltip?: FC<ValuedPoint[]>;
19
+ };
20
+ export declare function createBiosampleTrack(row: BiosampleRowInfo, options: CreateTrackOptions): Track;
@@ -1,10 +1,6 @@
1
- /**
2
- * Types for biosample folder data
3
- */
4
1
  export type CollectionType = "Core" | "Ancillary" | "Partial";
5
2
  /**
6
- * Assay information from the JSON data.
7
- * Standard assays have a single `url`, while WGBS assays have `cpgPlus`, `cpgMinus`, `coverage`.
3
+ * One assay entry from the source data. WGBS rows carry strand-specific URLs.
8
4
  */
9
5
  export type BiosampleAssayInfo = {
10
6
  id: string;
@@ -16,9 +12,7 @@ export type BiosampleAssayInfo = {
16
12
  cpgMinus?: string;
17
13
  coverage?: string;
18
14
  };
19
- /**
20
- * Track information from the JSON data
21
- */
15
+ /** One biosample entry from the source data. */
22
16
  export type BiosampleTrackInfo = {
23
17
  name: string;
24
18
  ontology: string;
@@ -29,8 +23,7 @@ export type BiosampleTrackInfo = {
29
23
  collection: CollectionType;
30
24
  };
31
25
  /**
32
- * Row format for DataGrid (flattened from TrackInfo).
33
- * Standard assays have a single `url`, while WGBS assays have `cpgPlus`, `cpgMinus`, `coverage`.
26
+ * Flattened table row used by TrackSelect and track creation.
34
27
  */
35
28
  export type BiosampleRowInfo = {
36
29
  id: string;
@@ -47,9 +40,7 @@ export type BiosampleRowInfo = {
47
40
  cpgMinus?: string;
48
41
  coverage?: string;
49
42
  };
50
- /**
51
- * Structure of the biosample JSON data files
52
- */
43
+ /** Root shape for biosample JSON files. */
53
44
  export type BiosampleDataFile = {
54
45
  tracks: BiosampleTrackInfo[];
55
46
  };
@@ -6,7 +6,5 @@ export interface CreateGeneFolderOptions {
6
6
  description?: string;
7
7
  data: GeneDataFile;
8
8
  }
9
- /**
10
- * Factory function that creates a FolderDefinition for genes
11
- */
9
+ /** Build a gene folder with its row lookup, tree, and track factory. */
12
10
  export declare function createGeneFolder(options: CreateGeneFolderOptions): FolderDefinition<GeneRowInfo>;
@@ -0,0 +1,18 @@
1
+ import { Track, Transcript } from '@weng-lab/genomebrowser';
2
+ import { FC } from 'react';
3
+ import { CreateTrackOptions } from '../../types';
4
+ import { GeneRowInfo } from './types';
5
+ export type GeneTrackContext = {
6
+ onGeneClick?: (args: {
7
+ trackId: string;
8
+ row: GeneRowInfo;
9
+ transcript: Transcript;
10
+ }) => void;
11
+ onGeneHover?: (args: {
12
+ trackId: string;
13
+ row: GeneRowInfo;
14
+ transcript: Transcript;
15
+ }) => void;
16
+ geneTooltip?: FC<Transcript>;
17
+ };
18
+ export declare function createGeneTrack(row: GeneRowInfo, options: CreateTrackOptions): Track;
@@ -1,17 +1,11 @@
1
1
  import { Assembly, FolderDefinition } from './types';
2
- export { type Assembly, type FolderDefinition, type FolderRuntimeConfig, } from './types';
2
+ export { type Assembly, type FolderDefinition, type FolderView } from './types';
3
3
  export type { BiosampleRowInfo } from './biosamples/shared/types';
4
+ export type { BiosampleTrackContext } from './biosamples/shared/toTrack';
4
5
  export type { GeneRowInfo } from './genes/shared/types';
6
+ export type { GeneTrackContext } from './genes/shared/toTrack';
7
+ export type { MohdRowInfo } from './mohd/shared/types';
8
+ export type { MohdTrackContext } from './mohd/shared/toTrack';
5
9
  export type { OtherTrackInfo } from './other-tracks/shared/types';
6
- /**
7
- * Registry of folders available for each assembly.
8
- *
9
- * Each assembly can have multiple folders (e.g., biosamples, genes, etc.).
10
- * TrackSelect receives the folders for the current assembly and renders
11
- * them as tabs or a folder selector.
12
- *
13
- * To add a new folder:
14
- * 1. Create a folder config file (e.g., folders/genes/human.ts)
15
- * 2. Import and add it to the appropriate assembly array below
16
- */
10
+ export type { OtherTracksTrackContext } from './other-tracks/shared/toTrack';
17
11
  export declare const foldersByAssembly: Record<Assembly, FolderDefinition[]>;