loom-browser 0.0.2 → 0.0.4

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 (40) hide show
  1. package/README.md +28 -3
  2. package/dist/loom-react.esm.js +13290 -0
  3. package/dist/loom-react.esm.min.js +2 -0
  4. package/dist/loom-react.esm.min.js.map +1 -0
  5. package/dist/loom.esm.js +193 -168
  6. package/dist/loom.esm.min.js +1 -1
  7. package/dist/loom.esm.min.js.map +1 -1
  8. package/dist/loom.js +192 -169
  9. package/dist/loom.min.js +1 -1
  10. package/dist/loom.min.js.map +1 -1
  11. package/dist/tsconfig.src.tsbuildinfo +1 -0
  12. package/dist/types/gtx/zstdWasm.d.ts +4 -1
  13. package/dist/types/gtx/zstdWasmInlined.d.ts +6 -0
  14. package/dist/types/headlessGenomeBrowser.d.ts +8 -1
  15. package/dist/types/index.d.ts +0 -1
  16. package/dist/types/react/GenomeBrowserContext.d.ts +6 -0
  17. package/dist/types/react/LoomBrowser.d.ts +86 -0
  18. package/dist/types/react/hooks/index.d.ts +3 -0
  19. package/dist/types/react/hooks/useBrowserEvent.d.ts +7 -0
  20. package/dist/types/react/hooks/useGenomeBrowser.d.ts +7 -0
  21. package/dist/types/react/hooks/useLocus.d.ts +11 -0
  22. package/dist/types/react/hooks/useTrackManager.d.ts +11 -0
  23. package/dist/types/react/index.d.ts +7 -0
  24. package/dist/types/react/tracks/BedTrack.d.ts +14 -0
  25. package/dist/types/react/tracks/GeneTrack.d.ts +14 -0
  26. package/dist/types/react/tracks/GtxTrack.d.ts +13 -0
  27. package/dist/types/react/tracks/InteractionTrack.d.ts +12 -0
  28. package/dist/types/react/tracks/RulerTrack.d.ts +6 -0
  29. package/dist/types/react/tracks/SequenceTrack.d.ts +6 -0
  30. package/dist/types/react/tracks/WigTrack.d.ts +12 -0
  31. package/dist/types/react/tracks/index.d.ts +14 -0
  32. package/dist/types/tracks/annotation/annotationTrackCanvas.d.ts +1 -0
  33. package/dist/types/tracks/baseTrackCanvas.d.ts +2 -0
  34. package/dist/types/tracks/interaction/interactionTrackCanvas.d.ts +1 -0
  35. package/dist/types/tracks/ruler/rulerTrackCanvas.d.ts +1 -0
  36. package/dist/types/tracks/sequence/sequenceTrackCanvas.d.ts +1 -0
  37. package/dist/types/tracks/wig/wigTrackCanvas.d.ts +1 -0
  38. package/dist/types/types.d.ts +2 -0
  39. package/dist/types/ui/components/LoomBrowserShell.d.ts +9 -1
  40. package/package.json +20 -1
@@ -0,0 +1,14 @@
1
+ export { RulerTrack } from './RulerTrack';
2
+ export type { RulerTrackProps } from './RulerTrack';
3
+ export { WigTrack } from './WigTrack';
4
+ export type { WigTrackProps } from './WigTrack';
5
+ export { GeneTrack } from './GeneTrack';
6
+ export type { GeneTrackProps } from './GeneTrack';
7
+ export { BedTrack } from './BedTrack';
8
+ export type { BedTrackProps } from './BedTrack';
9
+ export { SequenceTrack } from './SequenceTrack';
10
+ export type { SequenceTrackProps } from './SequenceTrack';
11
+ export { InteractionTrack } from './InteractionTrack';
12
+ export type { InteractionTrackProps } from './InteractionTrack';
13
+ export { GtxTrack } from './GtxTrack';
14
+ export type { GtxTrackProps } from './GtxTrack';
@@ -54,5 +54,6 @@ export declare class AnnotationTrackCanvas extends BaseTrackCanvas<AnnotationRen
54
54
  getAxisInfo(): AxisInfo | undefined;
55
55
  getContextMenuItems(_x: number, _y: number): ContextMenuItem[];
56
56
  hitTest(x: number, y: number): HitTestResult<AnnotationFeature>[];
57
+ setTheme(theme: RenderTheme): void;
57
58
  serializeConfig(theme: RenderTheme): AnnotationTrackSessionConfig;
58
59
  }
@@ -46,6 +46,8 @@ export declare abstract class BaseTrackCanvas<TConfig> implements Track {
46
46
  setLocus(locus: Locus): void;
47
47
  /** Merge partial config and re-render. */
48
48
  setConfig(config: Partial<TConfig>): void;
49
+ /** Apply a new render theme and re-render. Subclasses must override. */
50
+ abstract setTheme(theme: RenderTheme): void;
49
51
  /** Suspend rendering — calls to render() will be deferred until resumeRendering(). */
50
52
  suspendRendering(): void;
51
53
  /** Resume rendering. If render() was called while suspended, flushes now. */
@@ -41,6 +41,7 @@ export declare class InteractionTrackCanvas extends BaseTrackCanvas<InteractionR
41
41
  /** Hit-test: find features at canvas-relative pixel coordinates. */
42
42
  hitTest(x: number, y: number): HitTestResult<InteractionFeature>[];
43
43
  private buildPopupData;
44
+ setTheme(theme: RenderTheme): void;
44
45
  /** Serialize config for session save/restore, diffed against theme defaults. */
45
46
  serializeConfig(theme: RenderTheme): InteractionTrackSessionConfig;
46
47
  /** Return axis info for proportional display mode. */
@@ -39,5 +39,6 @@ export declare class RulerTrackCanvas extends BaseTrackCanvas<RulerRenderConfig>
39
39
  protected computeHeight(_width: number): number;
40
40
  protected getBackground(): string;
41
41
  protected doRender(ctx: CanvasRenderingContext2D, _width: number, _height: number, rc: RenderContext): void;
42
+ setTheme(theme: RenderTheme): void;
42
43
  serializeConfig(theme: RenderTheme): RulerTrackSessionConfig;
43
44
  }
@@ -63,5 +63,6 @@ export declare class SequenceTrackCanvas extends BaseTrackCanvas<SequenceRenderC
63
63
  protected computeHeight(_width: number): number;
64
64
  protected getBackground(): string;
65
65
  protected doRender(ctx: CanvasRenderingContext2D, _width: number, _height: number, rc: RenderContext): void;
66
+ setTheme(theme: RenderTheme): void;
66
67
  serializeConfig(theme: RenderTheme): TrackSessionConfig;
67
68
  }
@@ -78,5 +78,6 @@ export declare class WigTrackCanvas extends BaseTrackCanvas<WigRenderConfig> {
78
78
  */
79
79
  getNumericState(): NumericState;
80
80
  hitTest(x: number, _y: number): HitTestResult<WigFeature>[];
81
+ setTheme(theme: RenderTheme): void;
81
82
  serializeConfig(theme: RenderTheme): WigTrackSessionConfig;
82
83
  }
@@ -76,6 +76,8 @@ export interface Track {
76
76
  detach(): void;
77
77
  /** Set an error state to render on the track canvas. Pass null to clear. */
78
78
  setError(error: Error | null): void;
79
+ /** Apply a new render theme and re-render. Replaces all theme-derived config values. */
80
+ setTheme(theme: import('./themes/renderTheme').RenderTheme): void;
79
81
  /**
80
82
  * Hit-test at canvas-relative pixel coordinates.
81
83
  * Returns features at that point with pre-formatted popup data.
@@ -38,12 +38,20 @@ export declare class LoomBrowserShell extends HTMLElement {
38
38
  setLocus(locus: Locus): void;
39
39
  /** Proxy: subscribe to browser events. */
40
40
  on<K extends keyof BrowserEvents>(event: K, handler: (data: BrowserEvents[K]) => void): (() => void) | undefined;
41
+ /** Switch both the UI shell theme and the render theme in one call. */
42
+ setTheme(shellTheme: ShellTheme): void;
41
43
  disconnectedCallback(): void;
42
44
  }
43
45
  /** Options for createShell(). */
44
46
  export interface CreateShellOptions extends GenomeBrowserOptions {
45
- /** UI shell theme (CSS chrome). Separate from GenomeBrowserOptions.theme (render palette). */
47
+ /** UI shell theme (CSS chrome). When set, also defaults the render theme to match unless `theme` is explicitly provided. */
46
48
  shellTheme?: ShellTheme;
49
+ /** Show ruler track. Default: true */
50
+ ruler?: boolean;
51
+ /** Show gene annotation track (UCSC RefSeq). Default: true */
52
+ genes?: boolean;
53
+ /** Show sequence track. Default: false */
54
+ sequence?: boolean;
47
55
  }
48
56
  /**
49
57
  * Convenience function to create an <loom-browser> shell and initialize it.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "loom-browser",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "main": "dist/loom.esm.js",
5
5
  "module": "dist/loom.esm.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -9,6 +9,10 @@
9
9
  "types": "./dist/types/index.d.ts",
10
10
  "import": "./dist/loom.esm.js",
11
11
  "require": "./dist/loom.js"
12
+ },
13
+ "./react": {
14
+ "types": "./dist/types/react/index.d.ts",
15
+ "import": "./dist/loom-react.esm.js"
12
16
  }
13
17
  },
14
18
  "type": "module",
@@ -64,6 +68,18 @@
64
68
  "url": "git+https://github.com/riyavsinha/loom.git"
65
69
  },
66
70
  "browserslist": "> 1%, not dead",
71
+ "peerDependencies": {
72
+ "react": ">=18",
73
+ "react-dom": ">=18"
74
+ },
75
+ "peerDependenciesMeta": {
76
+ "react": {
77
+ "optional": true
78
+ },
79
+ "react-dom": {
80
+ "optional": true
81
+ }
82
+ },
67
83
  "devDependencies": {
68
84
  "@eslint/js": "^10.0.1",
69
85
  "@gmod/cram": "^5.0.5",
@@ -72,6 +88,7 @@
72
88
  "@rollup/plugin-typescript": "^12.3.0",
73
89
  "@types/jsdom": "^28.0.1",
74
90
  "@types/mocha": "^10.0.10",
91
+ "@types/react": "^19.2.14",
75
92
  "@typescript-eslint/eslint-plugin": "^8.57.0",
76
93
  "@typescript-eslint/parser": "^8.57.0",
77
94
  "@vitest/coverage-v8": "^3.2.4",
@@ -89,6 +106,8 @@
89
106
  "igv-utils": "github:igvteam/igv-utils#v1.7.1",
90
107
  "jsdom": "^29.0.0",
91
108
  "mocha": "^11.1.0",
109
+ "react": "^19.2.4",
110
+ "react-dom": "^19.2.4",
92
111
  "rollup": "^2.66.0",
93
112
  "rollup-plugin-copy": "^3.3.0",
94
113
  "sass": "^1.45.1",