freebrowse 2.5.0-next.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 (73) hide show
  1. package/README.md +134 -0
  2. package/dist-lib/index.js +21492 -0
  3. package/dist-lib/index.js.map +1 -0
  4. package/dist-lib/react.js +10790 -0
  5. package/dist-lib/react.js.map +1 -0
  6. package/dist-lib/style.css +1 -0
  7. package/dist-lib/types/components/canvas-area.d.ts +10 -0
  8. package/dist-lib/types/components/dialogs/imaging-upload-confirmation-dialog.d.ts +6 -0
  9. package/dist-lib/types/components/dialogs/remove-dialog.d.ts +6 -0
  10. package/dist-lib/types/components/dialogs/save-dialog.d.ts +14 -0
  11. package/dist-lib/types/components/dialogs/session-delete-confirmation-dialog.d.ts +6 -0
  12. package/dist-lib/types/components/dialogs/settings-dialog.d.ts +6 -0
  13. package/dist-lib/types/components/drag-mode-selector.d.ts +9 -0
  14. package/dist-lib/types/components/file-list.d.ts +12 -0
  15. package/dist-lib/types/components/footer.d.ts +1 -0
  16. package/dist-lib/types/components/freebrowse.d.ts +32 -0
  17. package/dist-lib/types/components/header.d.ts +6 -0
  18. package/dist-lib/types/components/image-canvas.d.ts +7 -0
  19. package/dist-lib/types/components/image-uploader.d.ts +6 -0
  20. package/dist-lib/types/components/sidebar.d.ts +56 -0
  21. package/dist-lib/types/components/tabs/ai-annotation-tab.d.ts +20 -0
  22. package/dist-lib/types/components/tabs/data-tab.d.ts +6 -0
  23. package/dist-lib/types/components/tabs/drawing-tab.d.ts +17 -0
  24. package/dist-lib/types/components/tabs/nvd-tab.d.ts +6 -0
  25. package/dist-lib/types/components/tabs/scene-details-tab.d.ts +22 -0
  26. package/dist-lib/types/components/tabs/surface-details-tab.d.ts +20 -0
  27. package/dist-lib/types/components/ui/button.d.ts +10 -0
  28. package/dist-lib/types/components/ui/checkbox.d.ts +4 -0
  29. package/dist-lib/types/components/ui/dialog.d.ts +15 -0
  30. package/dist-lib/types/components/ui/input.d.ts +5 -0
  31. package/dist-lib/types/components/ui/label.d.ts +4 -0
  32. package/dist-lib/types/components/ui/labeled-slider-with-input.d.ts +14 -0
  33. package/dist-lib/types/components/ui/radio-group.d.ts +5 -0
  34. package/dist-lib/types/components/ui/scroll-area.d.ts +5 -0
  35. package/dist-lib/types/components/ui/select.d.ts +5 -0
  36. package/dist-lib/types/components/ui/slider.d.ts +4 -0
  37. package/dist-lib/types/components/ui/tabs.d.ts +7 -0
  38. package/dist-lib/types/components/ui/toggle-group.d.ts +7 -0
  39. package/dist-lib/types/components/ui/toggle.d.ts +9 -0
  40. package/dist-lib/types/components/view-selector.d.ts +7 -0
  41. package/dist-lib/types/components/viewer-shell.d.ts +13 -0
  42. package/dist-lib/types/hooks/use-ai-capabilities.d.ts +1 -0
  43. package/dist-lib/types/hooks/use-ai-session.d.ts +9 -0
  44. package/dist-lib/types/hooks/use-drawing.d.ts +27 -0
  45. package/dist-lib/types/hooks/use-file-loading.d.ts +15 -0
  46. package/dist-lib/types/hooks/use-magic-wand.d.ts +15 -0
  47. package/dist-lib/types/hooks/use-mesh-layers.d.ts +21 -0
  48. package/dist-lib/types/hooks/use-save.d.ts +12 -0
  49. package/dist-lib/types/hooks/use-surfaces.d.ts +16 -0
  50. package/dist-lib/types/hooks/use-viewer-options.d.ts +42 -0
  51. package/dist-lib/types/hooks/use-volumes.d.ts +39 -0
  52. package/dist-lib/types/lib/confirmations.d.ts +4 -0
  53. package/dist-lib/types/lib/default-niivue-options.d.ts +16 -0
  54. package/dist-lib/types/lib/deployment-config.d.ts +66 -0
  55. package/dist-lib/types/lib/niivue-helpers.d.ts +27 -0
  56. package/dist-lib/types/lib/nvd-volume-urls.d.ts +26 -0
  57. package/dist-lib/types/lib/random-session-name.d.ts +1 -0
  58. package/dist-lib/types/lib/utils.d.ts +2 -0
  59. package/dist-lib/types/lib.d.ts +16 -0
  60. package/dist-lib/types/mount.d.ts +49 -0
  61. package/dist-lib/types/react.d.ts +10 -0
  62. package/dist-lib/types/store/ai-slice.d.ts +25 -0
  63. package/dist-lib/types/store/drawing-slice.d.ts +7 -0
  64. package/dist-lib/types/store/index.d.ts +21 -0
  65. package/dist-lib/types/store/location-slice.d.ts +7 -0
  66. package/dist-lib/types/store/niivue-store-sync.d.ts +41 -0
  67. package/dist-lib/types/store/niivue-sync.d.ts +57 -0
  68. package/dist-lib/types/store/save-slice.d.ts +9 -0
  69. package/dist-lib/types/store/surface-slice.d.ts +15 -0
  70. package/dist-lib/types/store/types.d.ts +69 -0
  71. package/dist-lib/types/store/viewer-slice.d.ts +31 -0
  72. package/dist-lib/types/store/volume-slice.d.ts +13 -0
  73. package/package.json +130 -0
@@ -0,0 +1,31 @@
1
+ import type { StateCreator } from "zustand";
2
+ import type { ViewerOptions } from "./types";
3
+ export interface ViewerSlice {
4
+ viewerOptions: ViewerOptions;
5
+ darkMode: boolean;
6
+ sidebarOpen: boolean;
7
+ footerOpen: boolean;
8
+ activeTab: string;
9
+ settingsDialogOpen: boolean;
10
+ removeDialogOpen: boolean;
11
+ volumeToRemove: number | null;
12
+ skipRemoveConfirmation: boolean;
13
+ imagingUploadConfirmDialogOpen: boolean;
14
+ skipImagingUploadConfirmation: boolean;
15
+ sessionDeleteConfirmDialogOpen: boolean;
16
+ skipSessionDeleteConfirmation: boolean;
17
+ setViewerOptions: (options: ViewerOptions | ((prev: ViewerOptions) => ViewerOptions)) => void;
18
+ setDarkMode: (dark: boolean) => void;
19
+ setSidebarOpen: (open: boolean) => void;
20
+ setFooterOpen: (open: boolean) => void;
21
+ setActiveTab: (tab: string) => void;
22
+ setSettingsDialogOpen: (open: boolean) => void;
23
+ setRemoveDialogOpen: (open: boolean) => void;
24
+ setVolumeToRemove: (index: number | null) => void;
25
+ setSkipRemoveConfirmation: (skip: boolean) => void;
26
+ setImagingUploadConfirmDialogOpen: (open: boolean) => void;
27
+ setSkipImagingUploadConfirmation: (skip: boolean) => void;
28
+ setSessionDeleteConfirmDialogOpen: (open: boolean) => void;
29
+ setSkipSessionDeleteConfirmation: (skip: boolean) => void;
30
+ }
31
+ export declare const createViewerSlice: StateCreator<ViewerSlice>;
@@ -0,0 +1,13 @@
1
+ import type { StateCreator } from "zustand";
2
+ export interface VolumeSlice {
3
+ currentImageIndex: number | null;
4
+ showUploader: boolean;
5
+ /** Master switch for drag-and-drop loading (niivue canvas drop + the drop zone). */
6
+ dragDropEnabled: boolean;
7
+ volumeVersion: number;
8
+ setCurrentImageIndex: (index: number | null) => void;
9
+ setShowUploader: (show: boolean) => void;
10
+ setDragDropEnabled: (enabled: boolean) => void;
11
+ incrementVolumeVersion: () => void;
12
+ }
13
+ export declare const createVolumeSlice: StateCreator<VolumeSlice>;
package/package.json ADDED
@@ -0,0 +1,130 @@
1
+ {
2
+ "name": "freebrowse",
3
+ "version": "2.5.0-next.1",
4
+ "description": "FreeBrowse: an embeddable neuroimaging viewer UI on top of NiiVue",
5
+ "private": false,
6
+ "type": "module",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/freesurfer/freebrowse.git",
11
+ "directory": "frontend"
12
+ },
13
+ "homepage": "https://github.com/freesurfer/freebrowse#readme",
14
+ "bugs": {
15
+ "url": "https://github.com/freesurfer/freebrowse/issues"
16
+ },
17
+ "keywords": [
18
+ "niivue",
19
+ "neuroimaging",
20
+ "viewer",
21
+ "freesurfer",
22
+ "nifti"
23
+ ],
24
+ "files": [
25
+ "dist-lib",
26
+ "README.md"
27
+ ],
28
+ "sideEffects": [
29
+ "**/*.css"
30
+ ],
31
+ "main": "./dist-lib/index.js",
32
+ "module": "./dist-lib/index.js",
33
+ "types": "./dist-lib/types/lib.d.ts",
34
+ "typesVersions": {
35
+ "*": {
36
+ "react": [
37
+ "./dist-lib/types/react.d.ts"
38
+ ]
39
+ }
40
+ },
41
+ "exports": {
42
+ ".": {
43
+ "types": "./dist-lib/types/lib.d.ts",
44
+ "import": "./dist-lib/index.js"
45
+ },
46
+ "./react": {
47
+ "types": "./dist-lib/types/react.d.ts",
48
+ "import": "./dist-lib/react.js"
49
+ },
50
+ "./style.css": "./dist-lib/style.css",
51
+ "./package.json": "./package.json"
52
+ },
53
+ "scripts": {
54
+ "dev": "vite",
55
+ "build": "tsc -b && vite build",
56
+ "build:singlefile": "tsc -b && vite build --config vite.config.singlefile.ts && node scripts/rename-singlefile.mjs",
57
+ "build:serverless": "tsc -b && VITE_SERVERLESS=true vite build",
58
+ "build:github": "VITE_BASE_PATH=/freebrowse/ npm run build:serverless && mv dist dist-github",
59
+ "build:jupyter": "VITE_BASE_PATH=./ npm run build:serverless && rm -rf dist-jupyter && mv dist dist-jupyter && rm -rf ../jupyter/jupyterlab_freebrowse/static/freebrowse/assets && cp -r dist-jupyter/* ../jupyter/jupyterlab_freebrowse/static/freebrowse/",
60
+ "lint": "eslint .",
61
+ "preview": "vite preview",
62
+ "test": "vitest",
63
+ "test:run": "vitest run",
64
+ "build:lib": "FREEBROWSE_LIB_ENTRY=index vite build --config vite.config.lib.ts && FREEBROWSE_LIB_ENTRY=react vite build --config vite.config.lib.ts",
65
+ "build:types": "tsc -p tsconfig.lib.json && tsc-alias -p tsconfig.lib.json && node scripts/fix-declarations.mjs",
66
+ "build:package": "npm run build:lib && npm run build:types && npm run build:readme",
67
+ "pack:check": "npx publint && npx --yes @arethetypeswrong/cli --pack .",
68
+ "prepack": "npm run build:package",
69
+ "build:readme": "node scripts/make-package-readme.mjs",
70
+ "examples:pack": "npm run build:package && npm pack --pack-destination examples > /dev/null && cd examples && rm -f freebrowse.tgz && mv freebrowse-*.tgz freebrowse.tgz && echo 'examples/freebrowse.tgz ready'"
71
+ },
72
+ "peerDependencies": {
73
+ "@niivue/niivue": "1.0.0-rc.13",
74
+ "react": "^19.0.0",
75
+ "react-dom": "^19.0.0"
76
+ },
77
+ "peerDependenciesMeta": {
78
+ "react": {
79
+ "optional": true
80
+ },
81
+ "react-dom": {
82
+ "optional": true
83
+ }
84
+ },
85
+ "dependencies": {
86
+ "@niivue/niivue": "1.0.0-rc.13",
87
+ "@niivue/nv-ext-drawing": "1.0.0-rc.13",
88
+ "@radix-ui/react-checkbox": "^1.3.2",
89
+ "@radix-ui/react-label": "^2.1.7",
90
+ "@radix-ui/react-radio-group": "^1.3.7",
91
+ "@radix-ui/react-scroll-area": "^1.2.9",
92
+ "@radix-ui/react-slider": "^1.3.5",
93
+ "@radix-ui/react-slot": "^1.2.3",
94
+ "@radix-ui/react-tabs": "^1.1.12",
95
+ "@radix-ui/react-toggle": "^1.1.9",
96
+ "@radix-ui/react-toggle-group": "^1.1.10",
97
+ "@tailwindcss/vite": "^4.1.8",
98
+ "class-variance-authority": "^0.7.1",
99
+ "clsx": "^2.1.1",
100
+ "lucide-react": "^0.511.0",
101
+ "react": "^19.2.4",
102
+ "react-dom": "^19.2.4",
103
+ "react-router-dom": "^7.6.3",
104
+ "tailwind-merge": "^3.3.0",
105
+ "tailwindcss": "^4.1.8",
106
+ "zustand": "^5.0.11"
107
+ },
108
+ "devDependencies": {
109
+ "@eslint/js": "^9.13.0",
110
+ "@testing-library/jest-dom": "^6.9.1",
111
+ "@testing-library/react": "^16.3.2",
112
+ "@types/node": "^22.15.29",
113
+ "@types/react": "^19.2.14",
114
+ "@types/react-dom": "^19.2.3",
115
+ "@vitejs/plugin-react": "^4.3.3",
116
+ "baseline-browser-mapping": "^2.10.0",
117
+ "eslint": "^9.13.0",
118
+ "eslint-plugin-react-hooks": "^5.0.0",
119
+ "eslint-plugin-react-refresh": "^0.4.14",
120
+ "globals": "^15.11.0",
121
+ "happy-dom": "^20.6.1",
122
+ "tsc-alias": "^1.9.5",
123
+ "tw-animate-css": "^1.3.3",
124
+ "typescript": "~5.6.2",
125
+ "typescript-eslint": "^8.11.0",
126
+ "vite": "^5.4.10",
127
+ "vite-plugin-singlefile": "^2.3.0",
128
+ "vitest": "^4.0.18"
129
+ }
130
+ }