Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NickAkhmetov/Visx Conversion #26

Merged
merged 77 commits into from
Oct 23, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
77 commits
Select commit Hold shift + click to select a range
1b1ab93
start pulling out visualization elements into visx components
NickAkhmetov Aug 28, 2024
358add3
follow rules of hooks (no returning before all hooks are declared)
NickAkhmetov Aug 28, 2024
ff5629c
component stubs, start organizing
NickAkhmetov Aug 29, 2024
0dde578
wip
NickAkhmetov Aug 29, 2024
f6eacbd
add prettier, start splitting up config contexts
NickAkhmetov Aug 29, 2024
be1248a
improve tsconfig setup, move configs and scales into contexts, lint:fix
NickAkhmetov Aug 30, 2024
1fa321c
wip - organized contexts, added side graphs
NickAkhmetov Aug 30, 2024
322a8e4
unify bars
NickAkhmetov Aug 30, 2024
9a7374c
wip violins, added react lint rules
NickAkhmetov Aug 30, 2024
961af24
considering violins "good enough" for now - still need to make sure t…
NickAkhmetov Sep 5, 2024
53d61cb
use fractions - still doesn't really change anything...
NickAkhmetov Sep 5, 2024
d25baa9
add tooltip
NickAkhmetov Sep 6, 2024
ac64d65
use correct upper bound
NickAkhmetov Sep 6, 2024
4344f08
begin setting up drag and drop/reordering
NickAkhmetov Sep 6, 2024
1aa349b
wip, x/y overlays for dragging, figuring out dnd-kit
NickAkhmetov Sep 10, 2024
592ce1e
improve row/column dragging
NickAkhmetov Sep 11, 2024
d1ae74c
add axes to bar charts, clean up
NickAkhmetov Sep 11, 2024
446e483
use more readable numeric tick format
NickAkhmetov Sep 11, 2024
0b56334
add legend to corner
NickAkhmetov Sep 11, 2024
e9af4b7
Resizing!
NickAkhmetov Sep 12, 2024
080a15f
use pointer-within collision strategy
NickAkhmetov Sep 13, 2024
95c248e
improve drag overlay consistency
NickAkhmetov Sep 13, 2024
036c669
Fix tooltips
NickAkhmetov Sep 13, 2024
d23b7db
try moving dragging to svg to make it more accurate - worked for a bi…
NickAkhmetov Sep 13, 2024
a59a415
add basic axis sorting
NickAkhmetov Sep 16, 2024
ba601e6
adding documentation
NickAkhmetov Sep 17, 2024
29d227f
add descriptions to contexts
NickAkhmetov Sep 17, 2024
69a827f
use homebrewed panel resizer
NickAkhmetov Sep 17, 2024
fc27ace
- Update CSS styles for resize handles
NickAkhmetov Sep 18, 2024
245a0e4
typefix
NickAkhmetov Sep 18, 2024
6bfbbf0
add theme colors in places that weren't using them
NickAkhmetov Sep 18, 2024
a1c1dfb
legend cleanup
NickAkhmetov Sep 18, 2024
1916bd9
add 16px margin to the top/left graphs to avoid cutting off labels
NickAkhmetov Sep 18, 2024
e3d62bd
wip - add label links
NickAkhmetov Sep 19, 2024
8fda0de
allow providing link formatting functions for tick labels (Hyperlinks…
NickAkhmetov Sep 19, 2024
96c887b
enable custom axis labels, improve interface for tick hrefs
NickAkhmetov Sep 20, 2024
2229271
whitespace
NickAkhmetov Sep 20, 2024
af84156
split up viz container into subcomponents to make label-flipping easi…
NickAkhmetov Sep 20, 2024
dd8b422
pull axis buttons out
NickAkhmetov Sep 20, 2024
9e13309
add stroke to bars to make them look more consistent
NickAkhmetov Sep 20, 2024
aee1cc4
organization
NickAkhmetov Sep 20, 2024
aa89167
import fixes
NickAkhmetov Sep 20, 2024
4eb49bf
add axis label flipping
NickAkhmetov Sep 24, 2024
b2c3774
add removed value logic to scale contexts
NickAkhmetov Sep 24, 2024
b7e8273
hide/restore rows, use labels in tooltips
NickAkhmetov Sep 25, 2024
3a19dc0
remove spammy console log
NickAkhmetov Sep 25, 2024
91bdcb2
fix color scale behavior
NickAkhmetov Sep 26, 2024
98a566e
improve filtering approach so it applies to bars as well, improve con…
NickAkhmetov Sep 27, 2024
4b692d2
use right angle single quote for chevron
NickAkhmetov Sep 27, 2024
456f3fc
fix incorrect counts being used
NickAkhmetov Sep 27, 2024
0f19806
pin vitessce to 3.4.9
NickAkhmetov Sep 27, 2024
f09be48
improve dragging performance via div overlay
NickAkhmetov Sep 30, 2024
60be723
get bars to rescale properly on restore
NickAkhmetov Sep 30, 2024
eaddd19
fix obs sets loading/unpin vitessce
NickAkhmetov Sep 30, 2024
e26c826
fix issues reordering previously-removed rows, improve tooltip position
NickAkhmetov Oct 2, 2024
50dc204
WIP expanding rows, improvements to context menu state
NickAkhmetov Oct 2, 2024
4bed6ef
tooltips for expanded view
NickAkhmetov Oct 3, 2024
e906164
basic expandable rows implementation
NickAkhmetov Oct 3, 2024
9d2ad68
fix react hook crash on removal of sample after expansion of differen…
NickAkhmetov Oct 3, 2024
2644f86
avoid duplicate recalculation of row maxes
NickAkhmetov Oct 3, 2024
d94dc99
simplify sortOrder logic by taking out effect and handling sorting in…
NickAkhmetov Oct 3, 2024
341dbe7
improve appearance of expanded heatmap row by adding a bit of padding
NickAkhmetov Oct 4, 2024
9d3dae4
add other color schemes for heatmap
NickAkhmetov Oct 4, 2024
d1241d2
clean up
NickAkhmetov Oct 4, 2024
ba758a9
remove snap modifier from drag overlay
NickAkhmetov Oct 4, 2024
4127dfd
reenable dragging with expanded value
NickAkhmetov Oct 4, 2024
661e1cc
more cleanup
NickAkhmetov Oct 4, 2024
2a8973c
improve ticks for top/side bar axes, decrease incidence of random bar…
NickAkhmetov Oct 11, 2024
d852ac8
fix tooltips with expanded row
NickAkhmetov Oct 11, 2024
6f136c0
console log cleanup...
NickAkhmetov Oct 11, 2024
a558ee4
tooltip fix
NickAkhmetov Oct 11, 2024
275eacc
metadata value bars, sort by metadata
NickAkhmetov Oct 15, 2024
05ca055
Add buttons for all the metadata sort options
NickAkhmetov Oct 15, 2024
4547b94
remove useless "custom" button
NickAkhmetov Oct 15, 2024
7d4d666
improve metadata bar display
NickAkhmetov Oct 22, 2024
ca2d316
use sans serif font
NickAkhmetov Oct 22, 2024
544e6e5
Merge branch 'main' into nickakhmetov/visx
thomcsmits Oct 23, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions .vscode/settings.json
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I set up the ESLint config for v9 and added appropriate linting rules. I can also add a workspace recommendation to install the appropriate VS Code extensions to support this (i.e. dbaeumer.vscode-eslint and cSpell

Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"eslint.format.enable": true,
"eslint.useFlatConfig": true,
"eslint.workingDirectories": ["./src"],
"[javascript|typescript|javascriptreact|typescriptreact]": {
"editor.defaultFormatter": "dbaeumer.vscode-eslint"
},
"editor.codeActionsOnSave": {
"source.sortImports": "always",
"source.fixAll": "always"
},
"cSpell.words": [
"cellpop",
"epanechnikov",
"zustand"
]
}
75 changes: 39 additions & 36 deletions demo/animation.ts
Original file line number Diff line number Diff line change
@@ -1,40 +1,43 @@
import { showAnimation } from "../src/visualization/animation";
import { loadHuBMAPData } from "../src/dataLoading/dataHuBMAP";
import { showAnimation } from "../src/visualization/animation";
// data
const uuids = ["ad693f99fb9006e68a53e97598da1509",
"173de2e80adf6a73ac8cff5ccce20dfc",
"b95f34761c252ebbd1e482cd9afae73f",
"5a5ca03fa623602d9a859224aa40ace4",
"3c1b10bc912c60c9afc36b7423695236",
"1dc16eb0270ff73291dd45b6a96aa3c0",
"b05c21f9c94ce1a22a9694cd0fe0291e",
"8cdb42ed1194255c74c8462b99bbd7ef",
"fe0ded5fc0355c95239f9c040dd31e99",
"367fee3b40cba682063289505b922be1",
"b99fc30c4195958fbef217fa9ed9ec8f",
"898138b7f45a67c574e9955fb400e9be",
"f220c9e7bcaea3a87162cbe61287ea4d",
"e5f7a14d93659bd0b8dc2819ffa9bc4b",
"56cbda4789f04d79c0c3dffe21816d48",
"0b6f63f2bd61a8c091fc7afc0f318ad1",
"62efbe0a6abd0bcf53ab9ab29e7cd73f",
"4b62d9d2c248323ce029859f953fdc57",
"c81b0dc9d16eb825a7d6bce6e1b3678f",
"5ee240959c96b49d960702755478b9fc",
"7c9e07c96d144536525b1f889acee14d",
"dd7ccbc306692fc5ff5e61c22845da21",
"9a7e6be288b27ddbd3366c4ae41bbcd2",
"018a905cdbdff684760859f594d3fd77",
"af5741dad7aecf7960a129c3d2ae642a",
"6e1db473492095ccc2f1393d7259b9c0",
"fae9a1f2e7abefca2203765a3c7a5ba1",
"8d631eee88855ac59155edca2a3bc1ca",
"1ea6c0ac5ba60fe35bf63af8699b6fbe"];

const uuids = [
"ad693f99fb9006e68a53e97598da1509",
"173de2e80adf6a73ac8cff5ccce20dfc",
"b95f34761c252ebbd1e482cd9afae73f",
"5a5ca03fa623602d9a859224aa40ace4",
"3c1b10bc912c60c9afc36b7423695236",
"1dc16eb0270ff73291dd45b6a96aa3c0",
"b05c21f9c94ce1a22a9694cd0fe0291e",
"8cdb42ed1194255c74c8462b99bbd7ef",
"fe0ded5fc0355c95239f9c040dd31e99",
"367fee3b40cba682063289505b922be1",
"b99fc30c4195958fbef217fa9ed9ec8f",
"898138b7f45a67c574e9955fb400e9be",
"f220c9e7bcaea3a87162cbe61287ea4d",
"e5f7a14d93659bd0b8dc2819ffa9bc4b",
"56cbda4789f04d79c0c3dffe21816d48",
"0b6f63f2bd61a8c091fc7afc0f318ad1",
"62efbe0a6abd0bcf53ab9ab29e7cd73f",
"4b62d9d2c248323ce029859f953fdc57",
"c81b0dc9d16eb825a7d6bce6e1b3678f",
"5ee240959c96b49d960702755478b9fc",
"7c9e07c96d144536525b1f889acee14d",
"dd7ccbc306692fc5ff5e61c22845da21",
"9a7e6be288b27ddbd3366c4ae41bbcd2",
"018a905cdbdff684760859f594d3fd77",
"af5741dad7aecf7960a129c3d2ae642a",
"6e1db473492095ccc2f1393d7259b9c0",
"fae9a1f2e7abefca2203765a3c7a5ba1",
"8d631eee88855ac59155edca2a3bc1ca",
"1ea6c0ac5ba60fe35bf63af8699b6fbe",
];

// Load data directly as demo
loadHuBMAPData(uuids).then((data) => {
showAnimation(data!);
}).catch(error => {
console.error(error);
});
loadHuBMAPData(uuids)
.then((data) => {
showAnimation(data!);
})
.catch((error) => {
console.error(error);
});
153 changes: 74 additions & 79 deletions demo/demo.tsx
Original file line number Diff line number Diff line change
@@ -1,91 +1,86 @@
import React, { useEffect, useState } from "react";
import { loadHuBMAPData } from "../src/dataLoading/dataHuBMAP";
import { CellPop } from "../src/CellPopComponent";
import { CellPopData, CellPopDimensions } from "../src/cellpop-schema";
import { getDimensions, getDimensionsGlobal } from "../src/visualization/size";

import { CellPopData } from "../src/cellpop-schema";
import { loadHuBMAPData } from "../src/dataLoading/dataHuBMAP";

function Demo() {
const [data, setData] = useState<CellPopData>();

const [data, setData] = useState<CellPopData>();

// data
const uuids = ["ad693f99fb9006e68a53e97598da1509",
"173de2e80adf6a73ac8cff5ccce20dfc",
"b95f34761c252ebbd1e482cd9afae73f",
"5a5ca03fa623602d9a859224aa40ace4",
"3c1b10bc912c60c9afc36b7423695236",
"1dc16eb0270ff73291dd45b6a96aa3c0",
"b05c21f9c94ce1a22a9694cd0fe0291e",
"8cdb42ed1194255c74c8462b99bbd7ef",
"fe0ded5fc0355c95239f9c040dd31e99",
"367fee3b40cba682063289505b922be1",
"b99fc30c4195958fbef217fa9ed9ec8f",
"898138b7f45a67c574e9955fb400e9be",
"f220c9e7bcaea3a87162cbe61287ea4d",
"e5f7a14d93659bd0b8dc2819ffa9bc4b",
"56cbda4789f04d79c0c3dffe21816d48",
"0b6f63f2bd61a8c091fc7afc0f318ad1",
"62efbe0a6abd0bcf53ab9ab29e7cd73f",
"4b62d9d2c248323ce029859f953fdc57",
"c81b0dc9d16eb825a7d6bce6e1b3678f",
"5ee240959c96b49d960702755478b9fc",
"7c9e07c96d144536525b1f889acee14d",
"dd7ccbc306692fc5ff5e61c22845da21",
"9a7e6be288b27ddbd3366c4ae41bbcd2",
"018a905cdbdff684760859f594d3fd77",
"af5741dad7aecf7960a129c3d2ae642a",
"6e1db473492095ccc2f1393d7259b9c0",
"fae9a1f2e7abefca2203765a3c7a5ba1",
"8d631eee88855ac59155edca2a3bc1ca",
"1ea6c0ac5ba60fe35bf63af8699b6fbe"];

// useEffect to make sure the data only loads once
useEffect(() => {
loadHuBMAPData(uuids).then((data) => {
setData(data!);
// getMainVis(data);
}).catch(error => {
console.error(error);
});
}, []);

// const props = {
// data: null,
// theme: "light",
// }

const widthRatio = 0.8;
const heightRatio = 0.8;

const widthRight = 45 * 25;
const heightBottom = 20 * 40;
// data
const uuids = [
"ad693f99fb9006e68a53e97598da1509",
"173de2e80adf6a73ac8cff5ccce20dfc",
"b95f34761c252ebbd1e482cd9afae73f",
"5a5ca03fa623602d9a859224aa40ace4",
"3c1b10bc912c60c9afc36b7423695236",
"1dc16eb0270ff73291dd45b6a96aa3c0",
"b05c21f9c94ce1a22a9694cd0fe0291e",
"8cdb42ed1194255c74c8462b99bbd7ef",
"fe0ded5fc0355c95239f9c040dd31e99",
"367fee3b40cba682063289505b922be1",
"b99fc30c4195958fbef217fa9ed9ec8f",
"898138b7f45a67c574e9955fb400e9be",
"f220c9e7bcaea3a87162cbe61287ea4d",
"e5f7a14d93659bd0b8dc2819ffa9bc4b",
"56cbda4789f04d79c0c3dffe21816d48",
"0b6f63f2bd61a8c091fc7afc0f318ad1",
"62efbe0a6abd0bcf53ab9ab29e7cd73f",
"4b62d9d2c248323ce029859f953fdc57",
"c81b0dc9d16eb825a7d6bce6e1b3678f",
"5ee240959c96b49d960702755478b9fc",
"7c9e07c96d144536525b1f889acee14d",
"dd7ccbc306692fc5ff5e61c22845da21",
"9a7e6be288b27ddbd3366c4ae41bbcd2",
"018a905cdbdff684760859f594d3fd77",
"af5741dad7aecf7960a129c3d2ae642a",
"6e1db473492095ccc2f1393d7259b9c0",
"fae9a1f2e7abefca2203765a3c7a5ba1",
"8d631eee88855ac59155edca2a3bc1ca",
"1ea6c0ac5ba60fe35bf63af8699b6fbe",
];

const width = widthRight / widthRatio;
const height = heightBottom / heightRatio;
// useEffect to make sure the data only loads once
useEffect(() => {
loadHuBMAPData(uuids)
.then((data) => {
setData(data!);
// getMainVis(data);
})
.catch((error) => {
console.error(error);
});
}, []);

const widthLeft = width - widthRight;
const heightTop = height - heightBottom;
// const props = {
// data: null,
// theme: "light",
// }

// const dimensions = {
// global: {width: width, widthSplit: [widthLeft, widthRight], height: height, heightSplit: [heightTop, heightBottom]},
// heatmap: {offsetWidth: widthLeft, offsetHeight: heightTop, width: widthRight, height: heightBottom, margin: {top: 0, right: 400, bottom: 100, left: 0}},
// barTop: {offsetWidth: widthLeft, offsetHeight: 0, width: widthRight, height: heightTop, margin: {top: 50, right: 50, bottom: 0, left: 0}},
// violinTop: {offsetWidth: widthLeft, offsetHeight: 0, width: widthRight, height: heightTop, margin: {top: 50, right: 50, bottom: 0, left: 0}},
// barLeft: {offsetWidth: 0, offsetHeight: heightTop, width: widthLeft, height: heightBottom, margin: {top: 0, right: 0, bottom: 100, left: 50}},
// violinLeft: {offsetWidth: 0, offsetHeight: heightTop, width: widthLeft, height: heightBottom, margin: {top: 0, right: 0, bottom: 100, left: 50}},
// graph: {offsetWidth: widthLeft, offsetHeight: height, width: widthRight, height: heightTop, margin: {top: 0, right: 200, bottom: 0, left: 0}},
// detailBar: {offsetWidth: widthLeft, offsetHeight: 0, width: widthRight, height: height, margin: {top: 50, right: 200, bottom: 50, left: 0}},
// textSize: {title: "20px", label: "30px", labelSmall: "20px", tick: "10px"}
// } as CellPopDimensions;
console.log(data);

const dimensions = getDimensions(1500, 200, 400, 200, 5, 5, 100, 5, 1000, 200, 400, 0, 5, 5, 100, 5, 1000, 900, 50, 50);
if (!data) {
return <div>Loading...</div>;
}

return (
<>
{data ? <CellPop data={data} theme={"light"} dimensions={dimensions}/> : <div>Loading...</div>}
</>
);
return (
<CellPop
data={data}
theme={"light"}
dimensions={{ width: 1500, height: 1000 }}
yAxisConfig={{
label: "Sample",
createHref: (row) =>
`https://portal.hubmapconsortium.org/browse/${row}`,
flipAxisPosition: true,
}}
xAxisConfig={{
label: "Cell Type",
createHref: (col) =>
`https://www.ebi.ac.uk/ols4/search?q=${col}&ontology=cl`,
flipAxisPosition: true,
}}
/>
);
}

export default Demo;
export default Demo;
6 changes: 2 additions & 4 deletions demo/index.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import React from "react";
import ReactDOM from "react-dom/client";
import Demo from "./demo.jsx";
import Demo from "./demo.tsx";

ReactDOM.createRoot(document.getElementById("root")!).render(
<Demo />
);
ReactDOM.createRoot(document.getElementById("root")!).render(<Demo />);
73 changes: 37 additions & 36 deletions demo/main.ts
Original file line number Diff line number Diff line change
@@ -1,41 +1,42 @@
import { getMainVis } from "../src/cellpop";
// import { getMainVis } from "../src/cellpop";
import { loadHuBMAPData } from "../src/dataLoading/dataHuBMAP";

// data
const uuids = ["ad693f99fb9006e68a53e97598da1509",
"173de2e80adf6a73ac8cff5ccce20dfc",
"b95f34761c252ebbd1e482cd9afae73f",
"5a5ca03fa623602d9a859224aa40ace4",
"3c1b10bc912c60c9afc36b7423695236",
"1dc16eb0270ff73291dd45b6a96aa3c0",
"b05c21f9c94ce1a22a9694cd0fe0291e",
"8cdb42ed1194255c74c8462b99bbd7ef",
"fe0ded5fc0355c95239f9c040dd31e99",
"367fee3b40cba682063289505b922be1",
"b99fc30c4195958fbef217fa9ed9ec8f",
"898138b7f45a67c574e9955fb400e9be",
"f220c9e7bcaea3a87162cbe61287ea4d",
"e5f7a14d93659bd0b8dc2819ffa9bc4b",
"56cbda4789f04d79c0c3dffe21816d48",
"0b6f63f2bd61a8c091fc7afc0f318ad1",
"62efbe0a6abd0bcf53ab9ab29e7cd73f",
"4b62d9d2c248323ce029859f953fdc57",
"c81b0dc9d16eb825a7d6bce6e1b3678f",
"5ee240959c96b49d960702755478b9fc",
"7c9e07c96d144536525b1f889acee14d",
"dd7ccbc306692fc5ff5e61c22845da21",
"9a7e6be288b27ddbd3366c4ae41bbcd2",
"018a905cdbdff684760859f594d3fd77",
"af5741dad7aecf7960a129c3d2ae642a",
"6e1db473492095ccc2f1393d7259b9c0",
"fae9a1f2e7abefca2203765a3c7a5ba1",
"8d631eee88855ac59155edca2a3bc1ca",
"1ea6c0ac5ba60fe35bf63af8699b6fbe"];

const uuids = [
"ad693f99fb9006e68a53e97598da1509",
"173de2e80adf6a73ac8cff5ccce20dfc",
"b95f34761c252ebbd1e482cd9afae73f",
"5a5ca03fa623602d9a859224aa40ace4",
"3c1b10bc912c60c9afc36b7423695236",
"1dc16eb0270ff73291dd45b6a96aa3c0",
"b05c21f9c94ce1a22a9694cd0fe0291e",
"8cdb42ed1194255c74c8462b99bbd7ef",
"fe0ded5fc0355c95239f9c040dd31e99",
"367fee3b40cba682063289505b922be1",
"b99fc30c4195958fbef217fa9ed9ec8f",
"898138b7f45a67c574e9955fb400e9be",
"f220c9e7bcaea3a87162cbe61287ea4d",
"e5f7a14d93659bd0b8dc2819ffa9bc4b",
"56cbda4789f04d79c0c3dffe21816d48",
"0b6f63f2bd61a8c091fc7afc0f318ad1",
"62efbe0a6abd0bcf53ab9ab29e7cd73f",
"4b62d9d2c248323ce029859f953fdc57",
"c81b0dc9d16eb825a7d6bce6e1b3678f",
"5ee240959c96b49d960702755478b9fc",
"7c9e07c96d144536525b1f889acee14d",
"dd7ccbc306692fc5ff5e61c22845da21",
"9a7e6be288b27ddbd3366c4ae41bbcd2",
"018a905cdbdff684760859f594d3fd77",
"af5741dad7aecf7960a129c3d2ae642a",
"6e1db473492095ccc2f1393d7259b9c0",
"fae9a1f2e7abefca2203765a3c7a5ba1",
"8d631eee88855ac59155edca2a3bc1ca",
"1ea6c0ac5ba60fe35bf63af8699b6fbe",
];

// Load data directly as demo
loadHuBMAPData(uuids).then((data) => {
getMainVis(data!);
}).catch(error => {
console.error(error);
});
// loadHuBMAPData(uuids).then((data) => {
// getMainVis(data!);
// }).catch(error => {
// console.error(error);
// });
27 changes: 22 additions & 5 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -1,17 +1,34 @@
// @ts-check

import eslint from "@eslint/js";
import eslintConfigPrettier from "eslint-plugin-prettier/recommended";
import reactPlugin from "eslint-plugin-react";
import globals from 'globals';
import tseslint from "typescript-eslint";

export default tseslint.config(
eslint.configs.recommended,
...tseslint.configs.recommended,
eslintConfigPrettier,
{
"rules": {
files: ['**/*.{jsx,tsx}'],
...reactPlugin.configs.flat.recommended,
},
{
files: ['**/*.{jsx,tsx}'],
languageOptions: {
globals: {
...globals.serviceworker,
...globals.browser,
},
},
},
{
rules: {
"linebreak-style": ["error", "unix"],
"quotes": ["error", "double"],
"semi": ["error", "always"],
quotes: ["error", "double"],
semi: ["error", "always"],
"no-trailing-spaces": "error",
}
},
}
);
);
2 changes: 1 addition & 1 deletion missing-types.d.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
declare module "@vitessce/zarr" {
export * from "@vitessce/zarr";
export * from "@vitessce/zarr";
}
Loading