@weng-lab/genomebrowser-ui 0.3.6 → 0.4.0-beta.1

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 (91) 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/columns.d.ts +2 -2
  7. package/dist/TrackSelect/Folders/genes/shared/createFolder.d.ts +1 -3
  8. package/dist/TrackSelect/Folders/genes/shared/toTrack.d.ts +18 -0
  9. package/dist/TrackSelect/Folders/genes/shared/types.d.ts +2 -0
  10. package/dist/TrackSelect/Folders/index.d.ts +6 -12
  11. package/dist/TrackSelect/Folders/mohd/data/human.json.d.ts +2948 -0
  12. package/dist/TrackSelect/Folders/mohd/human.d.ts +1 -0
  13. package/dist/TrackSelect/Folders/mohd/shared/MohdGroupingCell.d.ts +2 -0
  14. package/dist/TrackSelect/Folders/mohd/shared/MohdTreeItem.d.ts +3 -0
  15. package/dist/TrackSelect/Folders/mohd/shared/MohdViewSelector.d.ts +7 -0
  16. package/dist/TrackSelect/Folders/mohd/shared/columns.d.ts +5 -0
  17. package/dist/TrackSelect/Folders/mohd/shared/config.d.ts +42 -0
  18. package/dist/TrackSelect/Folders/mohd/shared/createFolder.d.ts +9 -0
  19. package/dist/TrackSelect/Folders/mohd/shared/toTrack.d.ts +9 -0
  20. package/dist/TrackSelect/Folders/mohd/shared/types.d.ts +40 -0
  21. package/dist/TrackSelect/Folders/other-tracks/shared/toTrack.d.ts +5 -0
  22. package/dist/TrackSelect/Folders/other-tracks/shared/types.d.ts +1 -0
  23. package/dist/TrackSelect/Folders/types.d.ts +23 -55
  24. package/dist/TrackSelect/TrackSelect.d.ts +10 -7
  25. package/dist/TrackSelect/TreeView/TreeViewWrapper.d.ts +1 -1
  26. package/dist/TrackSelect/buildSelectedTree.d.ts +15 -0
  27. package/dist/TrackSelect/managedTracks.d.ts +13 -0
  28. package/dist/TrackSelect/resolveFolderView.d.ts +2 -0
  29. package/dist/TrackSelect/trackContext.d.ts +5 -0
  30. package/dist/TrackSelect/types.d.ts +12 -33
  31. package/dist/genomebrowser-ui.es.js +2231 -1732
  32. package/dist/genomebrowser-ui.es.js.map +1 -1
  33. package/dist/lib.d.ts +4 -4
  34. package/dist/muiLicense.d.ts +1 -0
  35. package/package.json +6 -3
  36. package/src/TrackSelect/Dialogs/ClearDialog.tsx +3 -8
  37. package/src/TrackSelect/Dialogs/ResetDialog.tsx +5 -4
  38. package/src/TrackSelect/FolderList/FolderCard.tsx +1 -1
  39. package/src/TrackSelect/Folders/biosamples/shared/BiosampleViewSelector.tsx +33 -0
  40. package/src/TrackSelect/Folders/biosamples/shared/createFolder.ts +39 -58
  41. package/src/TrackSelect/Folders/biosamples/shared/toTrack.ts +138 -0
  42. package/src/TrackSelect/Folders/biosamples/shared/types.ts +4 -16
  43. package/src/TrackSelect/Folders/genes/shared/columns.tsx +2 -2
  44. package/src/TrackSelect/Folders/genes/shared/createFolder.ts +11 -31
  45. package/src/TrackSelect/Folders/genes/shared/toTrack.ts +59 -0
  46. package/src/TrackSelect/Folders/genes/shared/types.ts +2 -0
  47. package/src/TrackSelect/Folders/index.ts +14 -17
  48. package/src/TrackSelect/Folders/mohd/data/human.json +2945 -0
  49. package/src/TrackSelect/Folders/mohd/human.ts +10 -0
  50. package/src/TrackSelect/Folders/mohd/shared/MohdGroupingCell.tsx +68 -0
  51. package/src/TrackSelect/Folders/mohd/shared/MohdTreeItem.tsx +17 -0
  52. package/src/TrackSelect/Folders/mohd/shared/MohdViewSelector.tsx +33 -0
  53. package/src/TrackSelect/Folders/mohd/shared/columns.tsx +79 -0
  54. package/src/TrackSelect/Folders/mohd/shared/config.tsx +71 -0
  55. package/src/TrackSelect/Folders/mohd/shared/createFolder.ts +144 -0
  56. package/src/TrackSelect/Folders/mohd/shared/toTrack.ts +164 -0
  57. package/src/TrackSelect/Folders/mohd/shared/types.ts +46 -0
  58. package/src/TrackSelect/Folders/other-tracks/shared/createFolder.ts +13 -14
  59. package/src/TrackSelect/Folders/other-tracks/shared/toTrack.ts +17 -0
  60. package/src/TrackSelect/Folders/other-tracks/shared/types.ts +1 -0
  61. package/src/TrackSelect/Folders/types.ts +26 -69
  62. package/src/TrackSelect/TrackSelect.tsx +301 -257
  63. package/src/TrackSelect/TreeView/CustomTreeItem.tsx +9 -9
  64. package/src/TrackSelect/TreeView/TreeViewWrapper.tsx +84 -6
  65. package/src/TrackSelect/buildSelectedTree.ts +145 -0
  66. package/src/TrackSelect/managedTracks.ts +92 -0
  67. package/src/TrackSelect/resolveFolderView.ts +20 -0
  68. package/src/TrackSelect/trackContext.ts +9 -0
  69. package/src/TrackSelect/types.ts +14 -39
  70. package/src/lib.ts +13 -7
  71. package/src/muiLicense.ts +9 -0
  72. package/src/vite-env.d.ts +9 -0
  73. package/test/TrackSelect.test.tsx +435 -0
  74. package/test/main.tsx +36 -352
  75. package/test/mocks/logo-test.tsx +11 -0
  76. package/test/mohdDisplay.test.tsx +45 -0
  77. package/test/startup.test.ts +206 -0
  78. package/test/trackSelectState.test.ts +176 -0
  79. package/vite.config.ts +1 -0
  80. package/vitest.config.ts +20 -0
  81. package/dist/TrackSelect/Folders/biosamples/shared/AssayToggle.d.ts +0 -18
  82. package/dist/TrackSelect/Folders/biosamples/shared/treeBuilder.d.ts +0 -28
  83. package/dist/TrackSelect/Folders/genes/shared/treeBuilder.d.ts +0 -13
  84. package/dist/TrackSelect/Folders/other-tracks/shared/treeBuilder.d.ts +0 -4
  85. package/dist/TrackSelect/store.d.ts +0 -4
  86. package/src/TrackSelect/Folders/NEW.md +0 -929
  87. package/src/TrackSelect/Folders/biosamples/shared/AssayToggle.tsx +0 -78
  88. package/src/TrackSelect/Folders/biosamples/shared/treeBuilder.ts +0 -224
  89. package/src/TrackSelect/Folders/genes/shared/treeBuilder.ts +0 -45
  90. package/src/TrackSelect/Folders/other-tracks/shared/treeBuilder.ts +0 -34
  91. 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
  };
@@ -9,6 +9,6 @@ export declare const defaultColumns: GridColDef<GeneRowInfo>[];
9
9
  */
10
10
  export declare const defaultGroupingModel: string[];
11
11
  /**
12
- * Leaf field - the unique identifier
12
+ * Leaf field - the raw track ID (without folder prefix) used as the tree view leaf label
13
13
  */
14
- export declare const defaultLeafField = "id";
14
+ export declare const defaultLeafField = "trackId";
@@ -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;
@@ -17,6 +17,8 @@ export type GeneTrackInfo = {
17
17
  */
18
18
  export type GeneRowInfo = {
19
19
  id: string;
20
+ /** The raw track ID without the folder prefix, used as the tree view leaf label */
21
+ trackId: string;
20
22
  displayName: string;
21
23
  versions: number[];
22
24
  };
@@ -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[]>;