@weng-lab/genomebrowser-ui 0.3.6-beta.0 → 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.
- package/.env.local +1 -1
- package/dist/TrackSelect/Custom/TfPeaks.d.ts +1 -2
- package/dist/TrackSelect/Custom/green-motifs.json.d.ts +20430 -0
- package/dist/TrackSelect/Folders/biosamples/shared/BiosampleViewSelector.d.ts +7 -0
- package/dist/TrackSelect/Folders/biosamples/shared/createFolder.d.ts +1 -13
- package/dist/TrackSelect/Folders/biosamples/shared/toTrack.d.ts +20 -0
- package/dist/TrackSelect/Folders/biosamples/shared/types.d.ts +4 -13
- package/dist/TrackSelect/Folders/genes/shared/createFolder.d.ts +1 -3
- package/dist/TrackSelect/Folders/genes/shared/toTrack.d.ts +18 -0
- package/dist/TrackSelect/Folders/index.d.ts +6 -12
- package/dist/TrackSelect/Folders/mohd/data/human.json.d.ts +2948 -0
- package/dist/TrackSelect/Folders/mohd/human.d.ts +1 -0
- package/dist/TrackSelect/Folders/mohd/shared/MohdGroupingCell.d.ts +2 -0
- package/dist/TrackSelect/Folders/mohd/shared/MohdTreeItem.d.ts +3 -0
- package/dist/TrackSelect/Folders/mohd/shared/MohdViewSelector.d.ts +7 -0
- package/dist/TrackSelect/Folders/mohd/shared/columns.d.ts +5 -0
- package/dist/TrackSelect/Folders/mohd/shared/config.d.ts +42 -0
- package/dist/TrackSelect/Folders/mohd/shared/createFolder.d.ts +9 -0
- package/dist/TrackSelect/Folders/mohd/shared/toTrack.d.ts +9 -0
- package/dist/TrackSelect/Folders/mohd/shared/types.d.ts +40 -0
- package/dist/TrackSelect/Folders/other-tracks/shared/toTrack.d.ts +5 -0
- package/dist/TrackSelect/Folders/other-tracks/shared/types.d.ts +1 -0
- package/dist/TrackSelect/Folders/types.d.ts +23 -55
- package/dist/TrackSelect/TrackSelect.d.ts +10 -7
- package/dist/TrackSelect/TreeView/TreeViewWrapper.d.ts +1 -1
- package/dist/TrackSelect/buildSelectedTree.d.ts +15 -0
- package/dist/TrackSelect/managedTracks.d.ts +13 -0
- package/dist/TrackSelect/resolveFolderView.d.ts +2 -0
- package/dist/TrackSelect/trackContext.d.ts +5 -0
- package/dist/TrackSelect/types.d.ts +12 -33
- package/dist/genomebrowser-ui.es.js +2470 -2258
- package/dist/genomebrowser-ui.es.js.map +1 -1
- package/dist/lib.d.ts +4 -4
- package/dist/muiLicense.d.ts +1 -0
- package/package.json +6 -3
- package/src/TrackSelect/Custom/TfPeaks.tsx +81 -60
- package/src/TrackSelect/Dialogs/ResetDialog.tsx +3 -2
- package/src/TrackSelect/FolderList/FolderCard.tsx +1 -1
- package/src/TrackSelect/Folders/biosamples/shared/BiosampleViewSelector.tsx +33 -0
- package/src/TrackSelect/Folders/biosamples/shared/createFolder.ts +39 -58
- package/src/TrackSelect/Folders/biosamples/shared/toTrack.ts +138 -0
- package/src/TrackSelect/Folders/biosamples/shared/types.ts +4 -16
- package/src/TrackSelect/Folders/genes/shared/createFolder.ts +10 -31
- package/src/TrackSelect/Folders/genes/shared/toTrack.ts +59 -0
- package/src/TrackSelect/Folders/index.ts +15 -18
- package/src/TrackSelect/Folders/mohd/data/human.json +2945 -0
- package/src/TrackSelect/Folders/mohd/human.ts +10 -0
- package/src/TrackSelect/Folders/mohd/shared/MohdGroupingCell.tsx +68 -0
- package/src/TrackSelect/Folders/mohd/shared/MohdTreeItem.tsx +17 -0
- package/src/TrackSelect/Folders/mohd/shared/MohdViewSelector.tsx +33 -0
- package/src/TrackSelect/Folders/mohd/shared/columns.tsx +79 -0
- package/src/TrackSelect/Folders/mohd/shared/config.tsx +71 -0
- package/src/TrackSelect/Folders/mohd/shared/createFolder.ts +144 -0
- package/src/TrackSelect/Folders/mohd/shared/toTrack.ts +164 -0
- package/src/TrackSelect/Folders/mohd/shared/types.ts +46 -0
- package/src/TrackSelect/Folders/other-tracks/shared/createFolder.ts +13 -14
- package/src/TrackSelect/Folders/other-tracks/shared/toTrack.ts +17 -0
- package/src/TrackSelect/Folders/other-tracks/shared/types.ts +1 -0
- package/src/TrackSelect/Folders/types.ts +26 -69
- package/src/TrackSelect/TrackSelect.tsx +299 -255
- package/src/TrackSelect/TreeView/CustomTreeItem.tsx +6 -6
- package/src/TrackSelect/TreeView/TreeViewWrapper.tsx +84 -6
- package/src/TrackSelect/buildSelectedTree.ts +145 -0
- package/src/TrackSelect/managedTracks.ts +92 -0
- package/src/TrackSelect/resolveFolderView.ts +20 -0
- package/src/TrackSelect/trackContext.ts +9 -0
- package/src/TrackSelect/types.ts +14 -39
- package/src/lib.ts +13 -7
- package/src/muiLicense.ts +9 -0
- package/src/vite-env.d.ts +9 -0
- package/test/TrackSelect.test.tsx +435 -0
- package/test/main.tsx +37 -353
- package/test/mocks/logo-test.tsx +11 -0
- package/test/mohdDisplay.test.tsx +45 -0
- package/test/startup.test.ts +206 -0
- package/test/trackSelectState.test.ts +176 -0
- package/vite.config.ts +1 -0
- package/vitest.config.ts +20 -0
- package/dist/TrackSelect/Custom/TF-ChIP-Canonical-Motifs-w-Trimmed.json.d.ts +0 -42210
- package/dist/TrackSelect/Folders/biosamples/shared/AssayToggle.d.ts +0 -18
- package/dist/TrackSelect/Folders/biosamples/shared/treeBuilder.d.ts +0 -28
- package/dist/TrackSelect/Folders/genes/shared/treeBuilder.d.ts +0 -13
- package/dist/TrackSelect/Folders/other-tracks/shared/treeBuilder.d.ts +0 -4
- package/dist/TrackSelect/store.d.ts +0 -4
- package/src/TrackSelect/Folders/NEW.md +0 -929
- package/src/TrackSelect/Folders/biosamples/shared/AssayToggle.tsx +0 -78
- package/src/TrackSelect/Folders/biosamples/shared/treeBuilder.ts +0 -224
- package/src/TrackSelect/Folders/genes/shared/treeBuilder.ts +0 -45
- package/src/TrackSelect/Folders/other-tracks/shared/treeBuilder.ts +0 -34
- package/src/TrackSelect/store.ts +0 -117
|
@@ -5,32 +5,19 @@ import {
|
|
|
5
5
|
defaultGroupingModel,
|
|
6
6
|
defaultLeafField,
|
|
7
7
|
} from "./columns";
|
|
8
|
-
import {
|
|
8
|
+
import { createGeneTrack } from "./toTrack";
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
|
|
12
|
-
* For genes, this is a 1:1 mapping (no flattening needed)
|
|
13
|
-
*/
|
|
14
|
-
function trackToRow(track: GeneTrackInfo): GeneRowInfo {
|
|
10
|
+
/** Genes map 1:1 from JSON track entries to table rows. */
|
|
11
|
+
function trackToRow(folderId: string, track: GeneTrackInfo): GeneRowInfo {
|
|
15
12
|
return {
|
|
16
|
-
id: track.id
|
|
13
|
+
id: `${folderId}/${track.id}`,
|
|
17
14
|
displayName: track.displayName,
|
|
18
15
|
versions: track.versions,
|
|
19
16
|
};
|
|
20
17
|
}
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
*/
|
|
25
|
-
function transformData(data: GeneDataFile): {
|
|
26
|
-
rows: GeneRowInfo[];
|
|
27
|
-
rowById: Map<string, GeneRowInfo>;
|
|
28
|
-
} {
|
|
29
|
-
const rows = data.map(trackToRow);
|
|
30
|
-
const rowById = new Map<string, GeneRowInfo>(
|
|
31
|
-
rows.map((row) => [row.id, row]),
|
|
32
|
-
);
|
|
33
|
-
return { rows, rowById };
|
|
19
|
+
function transformData(folderId: string, data: GeneDataFile): GeneRowInfo[] {
|
|
20
|
+
return data.map((track) => trackToRow(folderId, track));
|
|
34
21
|
}
|
|
35
22
|
|
|
36
23
|
export interface CreateGeneFolderOptions {
|
|
@@ -40,29 +27,21 @@ export interface CreateGeneFolderOptions {
|
|
|
40
27
|
data: GeneDataFile;
|
|
41
28
|
}
|
|
42
29
|
|
|
43
|
-
/**
|
|
44
|
-
* Factory function that creates a FolderDefinition for genes
|
|
45
|
-
*/
|
|
30
|
+
/** Build a gene folder with its row lookup, tree, and track factory. */
|
|
46
31
|
export function createGeneFolder(
|
|
47
32
|
options: CreateGeneFolderOptions,
|
|
48
33
|
): FolderDefinition<GeneRowInfo> {
|
|
49
34
|
const { id, label, description, data } = options;
|
|
50
|
-
const
|
|
35
|
+
const rows = transformData(id, data);
|
|
51
36
|
|
|
52
37
|
return {
|
|
53
38
|
id,
|
|
54
39
|
label,
|
|
55
40
|
description,
|
|
56
|
-
|
|
57
|
-
getRowId: (row) => row.id,
|
|
58
|
-
|
|
59
|
-
// Default view configuration
|
|
41
|
+
rows,
|
|
60
42
|
columns: defaultColumns,
|
|
61
43
|
groupingModel: defaultGroupingModel,
|
|
62
44
|
leafField: defaultLeafField,
|
|
63
|
-
|
|
64
|
-
// Tree builder for selected items panel
|
|
65
|
-
buildTree: (selectedIds, rowById) =>
|
|
66
|
-
buildTreeView(selectedIds, rowById, label),
|
|
45
|
+
createTrack: createGeneTrack,
|
|
67
46
|
};
|
|
68
47
|
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import {
|
|
2
|
+
DisplayMode,
|
|
3
|
+
Track,
|
|
4
|
+
TrackType,
|
|
5
|
+
Transcript,
|
|
6
|
+
TranscriptConfig,
|
|
7
|
+
} from "@weng-lab/genomebrowser";
|
|
8
|
+
import type { FC } from "react";
|
|
9
|
+
import { CreateTrackOptions } from "../../types";
|
|
10
|
+
import { GeneRowInfo } from "./types";
|
|
11
|
+
|
|
12
|
+
export type GeneTrackContext = {
|
|
13
|
+
onGeneClick?: (args: {
|
|
14
|
+
trackId: string;
|
|
15
|
+
row: GeneRowInfo;
|
|
16
|
+
transcript: Transcript;
|
|
17
|
+
}) => void;
|
|
18
|
+
onGeneHover?: (args: {
|
|
19
|
+
trackId: string;
|
|
20
|
+
row: GeneRowInfo;
|
|
21
|
+
transcript: Transcript;
|
|
22
|
+
}) => void;
|
|
23
|
+
geneTooltip?: FC<Transcript>;
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
const defaultTranscript: Omit<TranscriptConfig, "id" | "assembly" | "version"> =
|
|
27
|
+
{
|
|
28
|
+
title: "GENCODE Genes",
|
|
29
|
+
trackType: TrackType.Transcript,
|
|
30
|
+
displayMode: DisplayMode.Squish,
|
|
31
|
+
height: 100,
|
|
32
|
+
color: "#0c184a",
|
|
33
|
+
canonicalColor: "#100e98",
|
|
34
|
+
highlightColor: "#3c69e8",
|
|
35
|
+
titleSize: 12,
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
export function createGeneTrack(
|
|
39
|
+
row: GeneRowInfo,
|
|
40
|
+
options: CreateTrackOptions,
|
|
41
|
+
): Track {
|
|
42
|
+
const trackContext = options.trackContext;
|
|
43
|
+
|
|
44
|
+
return {
|
|
45
|
+
...defaultTranscript,
|
|
46
|
+
id: row.id,
|
|
47
|
+
assembly: options.assembly,
|
|
48
|
+
version: row.versions[row.versions.length - 1],
|
|
49
|
+
onClick: trackContext?.onGeneClick
|
|
50
|
+
? (transcript: Transcript) =>
|
|
51
|
+
trackContext.onGeneClick?.({ trackId: row.id, row, transcript })
|
|
52
|
+
: undefined,
|
|
53
|
+
onHover: trackContext?.onGeneHover
|
|
54
|
+
? (transcript: Transcript) =>
|
|
55
|
+
trackContext.onGeneHover?.({ trackId: row.id, row, transcript })
|
|
56
|
+
: undefined,
|
|
57
|
+
tooltip: trackContext?.geneTooltip,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -4,29 +4,26 @@ import { mouseBiosamplesFolder } from "./biosamples/mouse";
|
|
|
4
4
|
import { humanGenesFolder } from "./genes/human";
|
|
5
5
|
import { mouseGenesFolder } from "./genes/mouse";
|
|
6
6
|
import { humanOtherTracksFolder } from "./other-tracks/human";
|
|
7
|
+
import { humanMohdFolder } from "./mohd/human";
|
|
7
8
|
|
|
8
|
-
export {
|
|
9
|
-
type Assembly,
|
|
10
|
-
type FolderDefinition,
|
|
11
|
-
type FolderRuntimeConfig,
|
|
12
|
-
} from "./types";
|
|
9
|
+
export { type Assembly, type FolderDefinition, type FolderView } from "./types";
|
|
13
10
|
|
|
14
11
|
export type { BiosampleRowInfo } from "./biosamples/shared/types";
|
|
12
|
+
export type { BiosampleTrackContext } from "./biosamples/shared/toTrack";
|
|
15
13
|
export type { GeneRowInfo } from "./genes/shared/types";
|
|
14
|
+
export type { GeneTrackContext } from "./genes/shared/toTrack";
|
|
15
|
+
export type { MohdRowInfo } from "./mohd/shared/types";
|
|
16
|
+
export type { MohdTrackContext } from "./mohd/shared/toTrack";
|
|
16
17
|
export type { OtherTrackInfo } from "./other-tracks/shared/types";
|
|
18
|
+
export type { OtherTracksTrackContext } from "./other-tracks/shared/toTrack";
|
|
17
19
|
|
|
18
|
-
|
|
19
|
-
* Registry of folders available for each assembly.
|
|
20
|
-
*
|
|
21
|
-
* Each assembly can have multiple folders (e.g., biosamples, genes, etc.).
|
|
22
|
-
* TrackSelect receives the folders for the current assembly and renders
|
|
23
|
-
* them as tabs or a folder selector.
|
|
24
|
-
*
|
|
25
|
-
* To add a new folder:
|
|
26
|
-
* 1. Create a folder config file (e.g., folders/genes/human.ts)
|
|
27
|
-
* 2. Import and add it to the appropriate assembly array below
|
|
28
|
-
*/
|
|
20
|
+
// Registry of folders by assembly
|
|
29
21
|
export const foldersByAssembly: Record<Assembly, FolderDefinition[]> = {
|
|
30
|
-
GRCh38: [
|
|
31
|
-
|
|
22
|
+
GRCh38: [
|
|
23
|
+
humanGenesFolder,
|
|
24
|
+
humanBiosamplesFolder,
|
|
25
|
+
humanMohdFolder,
|
|
26
|
+
humanOtherTracksFolder,
|
|
27
|
+
],
|
|
28
|
+
mm10: [mouseGenesFolder, mouseBiosamplesFolder],
|
|
32
29
|
};
|